Grounding_LLMs_with_online_RL

Grounding_LLMs_with_online_RL

GLAM 强化学习优化大型语言模型的新方法

这个开源项目开发了GLAM方法,通过在线强化学习优化大型语言模型在BabyAI-Text环境中的性能。项目提供了BabyAI-Text环境和实验代码,支持智能体训练和评估。研究者使用Lamorel库实现了PPO、DRRN等多种智能体。代码库包含详细的安装说明、配置文件和运行指南,便于其他研究人员复现和拓展相关研究。

大语言模型强化学习BabyAI-TextGLAMLamorelGithub开源项目

使用在线强化学习对大型语言模型进行基础训练

本仓库包含了我们论文《使用在线强化学习对大型语言模型进行基础训练》的代码。

您可以在我们的网站上找到更多信息。

我们使用GLAM方法在BabyAI-Text中对大型语言模型的知识进行功能性基础训练: 主要架构

我们发布了我们的BabyAI-Text环境,以及用于进行实验的代码(包括训练智能体和评估其性能)。 我们依赖Lamorel库来使用大型语言模型。

我们的仓库结构如下:

📦 Grounding_LLMs_with_online_RL
┣ 📂 babyai-text -- 我们的BabyAI-Text环境
┣ 📂 experiments -- 我们实验的代码
┃ ┣ 📂 agents -- 所有智能体的实现
┃ ┃ ┣ 📂 bot -- 利用BabyAI的机器人的智能体
┃ ┃ ┣ 📂 random_agent -- 随机均匀行动的智能体
┃ ┃ ┣ 📂 drrn -- 来自此处的DRRN智能体
┃ ┃ ┣ 📂 ppo -- 使用PPO的智能体
┃ ┃ ┃ ┣ 📜 symbolic_ppo_agent.py -- 改编自BabyAI的PPO的SymbolicPPO
┃ ┃ ┃ ┗ 📜 llm_ppo_agent.py -- 我们使用PPO进行基础训练的LLM智能体
┃ ┣ 📂 configs -- 我们实验的Lamorel配置
┃ ┣ 📂 slurm -- 在SLURM集群上启动我们实验的工具脚本
┃ ┣ 📂 campaign -- 用于启动我们实验的SLURM脚本
┃ ┣ 📜 train_language_agent.py -- 使用BabyAI-Text训练智能体(LLMs和DRRN)-> 包含我们对LLMs的PPO损失实现以及LLMs顶部的额外头
┃ ┣ 📜 train_symbolic_ppo.py -- 在BabyAI上训练SymbolicPPO(使用BabyAI-Text的任务)
┃ ┣ 📜 post-training_tests.py -- 训练后智能体的泛化测试
┃ ┣ 📜 test_results.py -- 格式化结果的工具
┃ ┗ 📜 clm_behavioral-cloning.py -- 使用轨迹对LLM进行行为克隆的代码

安装步骤

  1. 创建conda环境
conda create -n dlp python=3.10.8; conda activate dlp
  1. 安装PyTorch
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
  1. 安装我们包所需的包
pip install -r requirements.txt
  1. 安装BabyAI-Text:请参阅babyai-text包中的安装详情

  2. 安装Lamorel

git clone https://github.com/flowersteam/lamorel.git; cd lamorel/lamorel; pip install -e .; cd ../..

启动

请使用Lamorel和我们的配置。 您可以在campaign中找到我们训练脚本的示例。

训练语言模型

要在BabyAI-Text环境上训练语言模型,必须使用train_language_agent.py文件。

这个脚本(通过Lamorel启动)使用以下配置项:

rl_script_args: seed: 1 number_envs: 2 # 要启动的并行环境数量(步骤将同步,即一次步骤调用将返回number_envs个观察结果) num_steps: 1000 # 总训练步数 max_episode_steps: 3 # 单个回合的最大步数 frames_per_proc: 40 # 执行一次PPO更新所收集的转换数量将是frames_per_proc*number_envs discount: 0.99 # PPO中使用的折扣因子 lr: 1e-6 # 用于微调LLM的学习率 beta1: 0.9 # PPO的超参数 beta2: 0.999 # PPO的超参数 gae_lambda: 0.99 # PPO的超参数 entropy_coef: 0.01 # PPO的超参数 value_loss_coef: 0.5 # PPO的超参数 max_grad_norm: 0.5 # 更新LLM参数时的最大梯度范数 adam_eps: 1e-5 # Adam的超参数 clip_eps: 0.2 # PPO损失裁剪中使用的epsilon值 epochs: 4 # 对每组收集的轨迹执行的PPO轮数 batch_size: 16 # 小批量大小 action_space: ["turn_left","turn_right","go_forward","pick_up","drop","toggle"] # 智能体可执行的动作 saving_path_logs: ??? # 存储日志的位置 name_experiment: 'llm_mtrl' # 用于日志记录 name_model: 'T5small' # 用于日志记录 saving_path_model: ??? # 存储微调模型的位置 name_environment: 'BabyAI-MixedTestLocal-v0' # BabiAI-Text的环境 load_embedding: true # 是否应加载训练好的嵌入层(当lm_args.pretrained=False时有用)。将此项和use_action_heads都设为True(lm_args.pretrained=False)会创建我们的NPAE智能体。 use_action_heads: false # 是否应使用动作头而不是评分。将此项和use_action_heads都设为True(lm_args.pretrained=False)会创建我们的NPAE智能体。 template_test: 1 # 使用哪个提示模板来记录动作概率的演变(我们论文的C部分)。选项为[1, 2]。 nbr_obs: 3 # 提示中使用的过去观察数量

关于语言模型本身的配置项,请参见Lamorel

评估测试回合的表现

要评估智能体(如训练过的LLM、BabyAI的机器人等)在测试任务上的表现,使用post-training_tests.py并设置以下配置项:

rl_script_args: seed: 1 number_envs: 2 # 要启动的并行环境数量(步骤将同步,即一次步骤调用将返回number_envs个观察结果) max_episode_steps: 3 # 单个回合的最大步数 action_space: ["turn_left","turn_right","go_forward","pick_up","drop","toggle"] # 智能体可执行的动作 saving_path_logs: ??? # 存储日志的位置 name_experiment: 'llm_mtrl' # 用于日志记录 name_model: 'T5small' # 用于日志记录 saving_path_model: ??? # 存储微调模型的位置 name_environment: 'BabyAI-MixedTestLocal-v0' # BabiAI-Text的环境 load_embedding: true # 是否应加载训练好的嵌入层(当lm_args.pretrained=False时有用)。将此项和use_action_heads都设为True(lm_args.pretrained=False)会创建我们的NPAE智能体。 use_action_heads: false # 是否应使用动作头而不是评分。将此项和use_action_heads都设为True(lm_args.pretrained=False)会创建我们的NPAE智能体。 nbr_obs: 3 # 提示中使用的过去观察数量 number_episodes: 10 # 测试回合数 language: 'english' # 用于执行法语实验(H4部分) zero_shot: true # 是否应使用零样本LLM(即未经微调的) modified_action_space: false # 是否应使用修改过的动作空间(例如,与训练时看到的不同) new_action_space: #["rotate_left","rotate_right","move_ahead","take","release","switch"] # 修改后的动作空间 im_learning: false # 是否应使用通过行为克隆产生的LLM im_path: "" # 通过行为克隆学习的LLM的路径 bot: false # 是否应使用BabyAI的机器人智能体

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多