Aller au contenu
CoMLRL
Multi-LLM RL

Apprentissage multi-agent Actor-Critic

Traduit automatiquement avec translategemma:4b Original en anglais

Les méthodes Actor-Critic (AC) sont des méthodes de gradient de politique largement utilisées qui utilisent critics pour soutenir l’entraînement. Les méthodes AC peuvent obtenir une variance plus faible et une meilleure efficacité d’échantillonnage que REINFORCE, mais cela nécessite une conception et un réglage minutieux de critic pour assurer un entraînement stable. Dans l’apprentissage par renforcement multi-agents (MARL), Actor-Critic les méthodes comprennent Multi-Agent Actor-Critic (MAAC) et Indépendant Actor-Critic (IAC).

Les deux agents mettent en œuvre conjointement et évaluent leur réponse conjointe avec la fonction de récompense, mais utilisent critics différemment. MAAC entraîne un critic sur l’historique conjoint, de sorte que chaque agent partage son TD erreur. IAC entraîne un critic par agent sur l’historique de cet agent, de sorte que chaque agent obtient sa propre TD erreur.

Flux d'entraînement de Actor-critic MAAC'centralisé critic donne à tous les agents le même TD erreur; IAC'indépendant critics donne à chaque agent son propre.

MAAC#

Multi-Agent Actor-Critic (MAAC) utilise un Centralisé Critic (CC) pour évaluer les valeurs des historiques conjoints \( V_{\boldsymbol{\phi}}(\mathbf{h}_t) \) avec critic_type="v", ou des paires historique-action \( Q_{\boldsymbol{\psi}}(\mathbf{h}_t, \mathbf{a}_t) \) avec critic_type="q". Le critic reçoit les invites des agents combinées en une seule séquence de texte; le mode Q inclut également leurs complétions générées. Le gradient de politique de chaque agent est:

\[ \nabla_{\theta_i} J(\theta_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \nabla_{\theta_i} \log \pi_{\theta_i}(a_{i,t}|h_{i,t})\,\boldsymbol{\delta}_t\right] \]

où \( \boldsymbol{\delta}_t = r_t + \gamma V_{\boldsymbol{\phi}}(\mathbf{h}_{t+1}) - V_{\boldsymbol{\phi}}(\mathbf{h}_{t}) \), et le modèle critic est mis à jour par:

\[ \mathcal{L}(\boldsymbol{\phi}) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \big(r_t + \gamma V_{\phi}(\mathbf{h}_{t+1}) - V_{\phi}(\mathbf{h}_{t})\big)^2\right]. \]

Ici, \( r_t \) est la récompense traitée, avec la pénalité de référence KL optionnelle soustraite lorsque cela est activé ; les récompenses peuvent être partagées entre les agents ou fournies par agent. La dernière étape collectée, incluant une étape terminée prématurément ou une étape d’une seule étape rollout, utilise la récompense seule comme cible, sans bootstrapping. La probabilité de complétion est la somme des probabilités logarithmiques générées token ; les invites et le remplissage de fin tokens sont exclus. La perte est ensuite moyennée sur les échantillons. Les tampons sont regroupés par agent et par étape avant de mettre à jour, et advantage_normalization normalise les erreurs TD au sein de chaque tel groupe. Les cibles et les avantages restent fixes pendant la mise à jour. Le partage critic est mis à jour séquentiellement avec chaque lot d’agents, et value_loss_coef ajuste sa perte.

En mode Q, l’implémentation utilise le même poids TD-résiduel actor, avec une action suivante échantillonnée dans le bootstrapping. Elle ne met pas en œuvre un objectif séparé actor pondéré directement par Q ou une base uniquement d’état pour Q.

MAACConfig Paramètres
  • num_agents: Nombre d’agents
  • num_turns: Nombre d’étapes
  • critic_type: Type de cible Critic (v pour V(h), q pour Q(h,a))
  • num_train_epochs: Nombre d’échantillons d’entraînement epochs
  • agent_learning_rate: Taux d’apprentissage pour les agents
  • critic_learning_rate: Taux d’apprentissage pour le partage critic
  • value_loss_coef: Poids de la perte critic
  • advantage_normalization: Si normaliser les avantages avant les mises à jour
  • rollout_buffer_size: Nombre d’échantillons à collecter par agent avant une mise à jour
  • train_batch_size: Taille du mini-batch dans chaque mise à jour
  • max_new_tokens: Nombre maximal de tokens à générer par complétion
  • temperature: Température pour l’échantillonnage
  • top_p: Top-p pour l’échantillonnage nucléaire
  • top_k: Top-k pour l’échantillonnage
  • num_generations: Nombre de générations par requête par agent
  • external_prompt_passthrough: Utiliser directement des requêtes externes dans l’entraînement multi-tours
  • discount: Facteur de réduction pour la prédiction de la prochaine étape critic dans les cibles TD; expected_return utilise des sommes de récompenses non réduites
  • early_termination_threshold: Une requête rollout se termine après une étape dont la récompense moyenne traitée dépasse ce seuil; None désactive l’arrêt précoce
  • eval_interval: Intervalle d’évaluation (en lots d’entraînement)
  • eval_num_samples: Nombre d’échantillons d’évaluation par intervalle
  • eval_batch_size: Taille de lot pour l’évaluation DataLoader
  • logging_steps: Nombre minimum d’évaluations de récompense d’action conjointe entre les logs de métriques d’entraînement
  • parallel_training: none pour un appareil ou mp pour le positionnement explicite de l’agent/critic
  • agent_devices, critic_devices: Attributions d’appareils, requises en mode mp
  • reference_kl_enabled, reference_kl_coef: Si la pénalité de récompense de référence KL est activée et son poids (désactivée par défaut)
  • reference_devices: Placement d’appareil optionnel pour les modèles de référence
MAACTrainer Paramètres
  • agent_model ou agents: Chaîne d’identifiant de modèle Actor pour les agents homogènes, ou liste de modèles d’agents (le placement multi-agent agent_model doit être une chaîne)
  • critic_model ou critics: Unique et partagé critic, fourni sous forme d’identifiant, d’instance de modèle ou de liste d’un élément
  • tokenizer: Partagé tokenizer, ou liste par agent lors de l’utilisation de agents; requis avec agents ou une instance de modèle, sinon chargé à partir de agent_model
  • reward_func: Fonction appelable retournant les récompenses (requis)
  • reward_processor: Post-traitement de récompense optionnel
  • formatters: Fonction appelable unique ou liste pour le formatage des invites par agent
  • args: Instance de MAACConfig (facultatif)
  • train_dataset: Jeu de données d’entraînement (obligatoire)
  • eval_dataset: Jeu de données d’évaluation (facultatif)
  • model_config: Options de chargement de modèle; critic_value_head_hidden_dim configure le critic centralisé de value head (facultatif)
  • wandb_config: Configuration de journalisation de Weights & Biases (facultatif)
  • metrics_callback: Appel de rappel facultatif prenant des échantillons de rollout et renvoyant un dictionnaire de métriques scalaires
  • external_transition: Fonction de transition requise lors de l’utilisation de num_turns > 1

Mises à jour de MAAC sur les échantillons collectés sans échantillonnage d’importance ou de découpage de ratio de politique. MAACConfig n’a pas d’option value_clip_range. Le modèle partagé critic utilise le premier agent tokenizer, qui doit être compatible avec le modèle critic.

Le trainer utilise une formation fixe DataLoader taille du lot de 1. Pour num_turns > 1, un external_transition et num_generations=1 sont requis. train_batch_size par défaut rollout_buffer_size; les mises à jour utilisent les échantillons disponibles dans chaque groupe d’agents/de tours, y compris les petits groupes lorsque les tampons sont vidés.

IAC#

Optimisation indépendante de Actor-Critic (IAC) de la politique de chaque agent tout en utilisant les réponses conjointes de plusieurs agents. Chaque agent conserve sa propre actor et critic, et les autres agents servent de partie de l’environnement. Les récompenses peuvent être partagées ou spécifiques à l’agent. Le critic est conditionné par la requête/l’historique de cet agent en mode V, ou par sa requête et sa complétion en mode Q. Le gradient de politique pour chaque agent est:

\[ \nabla_{\theta_i} J(\theta_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \nabla_{\theta_i} \log \pi_{\theta_i}(a_{i,t}|h_{i,t})\,\delta_{i,t}\right] \]

où \( \delta_{i,t} = r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t}) \). Le actor utilise la même perte moyenne d’échantillon et la somme de complétions de token que MAAC, avec une normalisation facultative au sein de chaque groupe d’agent/tour. Le actor en mode Q utilise également cette erreur TD.

CoMLRL prend en charge deux variantes de IAC:

  • Modèle séparé Critic: Utilise un modèle indépendant pour l’estimation de la valeur. Les paramètres de Actor et critic sont optimisés séparément, au prix de la nécessité de stocker un modèle supplémentaire par agent.

  • Modèle partagé: Attache un petit modèle de value head au transformateur backbone, partageant les représentations d’historique (ou historique-action) du modèle actor pour réduire les besoins en espace.

Les paramètres de critics sont mis à jour en minimisant l’erreur de TD:

\[ \mathcal{L}(\phi_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \big(r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t})\big)^2\right]. \]

Lors de l’utilisation d’un modèle partagé (use_separate_critic=False), les modèles actor et value head optimisent la perte de actor plus la perte de critic pondérée par value_loss_coef. À moins que value_clip_range=None, une limite de valeur est appliquée pour améliorer la stabilité de l’entraînement:

\[ L(\phi_i) = \max\Big( (V_{\phi_i}(h_t) - \hat{V}_t)^2,\ (V_{\phi_i}^{\text{clip}}(h_t) - \hat{V}_t)^2 \Big) \\ V_{\phi_i}^{\text{clip}}(h_t) = V_{\phi_i}^{\text{old}}(h_t) + \mathrm{clip}(V_{\phi_i}(h_t) - V_{\phi_i}^{\text{old}}(h_t), -\epsilon, \epsilon), \]

où \( \hat{V}_t \) est le TD cible, \( \epsilon \) est value_clip_range, et les erreurs sont moyennées sur le mini-batch. Séparez critics utilisez l’erreur au carré non tronquée.

IACConfig Paramètres
  • num_agents: Nombre d’agents
  • num_turns: Nombre de tours
  • num_train_epochs: Nombre d’exemples d’entraînement epochs
  • agent_learning_rate: Taux d’apprentissage pour les agents
  • critic_learning_rate : Taux d’apprentissage pour les modèles séparés critics ; les modèles partagés utilisent agent_learning_rate pour actor et value head
  • value_loss_coef: Coefficient pour la perte de valeur
  • value_clip_range: Plage de seuil pour la valeur en mode modèle partagé; None désactive le seuil
  • advantage_normalization: Si normaliser les avantages
  • rollout_buffer_size: Nombre d’échantillons à collecter avant une mise à jour
  • train_batch_size: Taille du mini-batch pour les mises à jour de la politique
  • max_new_tokens: Nombre maximal de nouveaux tokens à générer
  • temperature: Température pour l’échantillonnage
  • top_p: Top-p pour l’échantillonnage nucléaire
  • top_k: Top-k pour l’échantillonnage
  • num_generations: Nombre de générations par invite pour chaque agent
  • use_separate_critic: Si utiliser un modèle critic séparé
  • critic_type: Type de cible Critic (v pour V(h), q pour Q(h,a))
  • critic_value_head_hidden_dim: Dimension cachée pour critic value head
  • value_head_hidden_dim: Dimension cachée pour value head en mode modèle partagé
  • external_prompt_passthrough: Utiliser directement des invites externes lors de l’entraînement multi-tours
  • discount: Facteur de réduction dans les cibles de TD; expected_return utilise des sommes de récompenses non déduites
  • early_termination_threshold: Un rollout se termine lorsque la récompense moyenne traitée d’un tour dépasse ce seuil; None désactive l’arrêt précoce
  • eval_interval: Intervalle d’évaluation (en lots d’entraînement)
  • eval_num_samples: Nombre d’échantillons d’évaluation par intervalle
  • eval_batch_size: Taille du lot d’évaluation DataLoader
  • logging_steps: Nombre minimum d’évaluations de récompense d’action conjointe entre les logs de métriques d’entraînement
  • parallel_training : none pour un appareil ou mp pour le positionnement explicite de l’agent/critic
  • agent_devices, critic_devices: Affectations de dispositifs; mp nécessite agent_devices et, pour des dispositifs séparés critics, critic_devices
  • reference_kl_enabled, reference_kl_coef: Activer ou non la pénalité de récompense de référence gelée KL et son poids (désactivé par défaut)
  • reference_devices: Placement facultatif du modèle de référence
IACTrainer Paramètres
  • agent_model ou agents: Chaîne d’identifiant de modèle pour les agents homogènes, ou liste des modèles d’agents (le modèle multi-agent agent_model doit être une chaîne)
  • critic_model ou critics: Identifiant Critic, instance de modèle, ou liste de modèles critic lorsque use_separate_critic=True
  • tokenizer: Partagé tokenizer, ou liste par agent lors de l’utilisation de agents; requis avec agents ou une instance de modèle, sinon chargé à partir de agent_model
  • reward_func: Fonction appelable qui renvoie une liste de nombres à virgule flottante (requis)
  • reward_processor: Processeur facultatif pour appliquer aux récompenses
  • formatters: Fonction appelable unique ou liste de fonctions appelables par agent pour formater les éléments de l’ensemble de données en invites
  • args: Instance de IACConfig (facultatif)
  • train_dataset: Ensemble de données d’entraînement (requis)
  • eval_dataset: Ensemble de données d’évaluation (facultatif)
  • model_config: Dictionnaire de configuration du modèle (facultatif)
  • wandb_config : Configuration pour la journalisation de Weights & Biases (facultatif)
  • metrics_callback : Appel de rappel facultatif prenant des échantillons de rollout et renvoyant un dictionnaire de métriques scalaires
  • external_transition : Fonction de transition facultative requise pour l’entraînement multi-tours

IAC met à jour les échantillons collectés sans importance de l’échantillonnage ou de la suppression de la différence entre la politique et le ratio. En mode modèle partagé (use_separate_critic=False), les value heads sont liés aux modèles actor ; passer critic_model ou critics provoque une erreur, et value_clip_range ne s’applique que dans ce mode. Les agents peuvent être homogènes ou hétérogènes. En mode séparé (critic) (use_separate_critic=True), les utilisateurs peuvent fournir une liste critics de longueur num_agents ou une source unique critic_model pour la diffusion. Des instances de modèles distinctes ou un identifiant chargé séparément pour chaque critic conservent leurs paramètres indépendants ; la diffusion d’un objet de modèle préchargé réutilise ses paramètres. Chaque critic consomme le actor de son token IDs, de sorte qu’un modèle différent critic doit être compatible avec le actor de son tokenizer.

Le trainer utilise une formation fixe DataLoader taille du lot de 1. Pour num_turns > 1, un external_transition et num_generations=1 sont requis. train_batch_size par défaut rollout_buffer_size; les mises à jour utilisent les échantillons disponibles dans chaque groupe d’agents/de tours, y compris les petits groupes lorsque les tampons sont vidés.