motif

motif

利用大语言模型偏好生成奖励函数的强化学习框架

Motif是一个新型强化学习框架,通过大型语言模型的偏好生成奖励函数。它分为数据集注释、奖励函数训练和强化学习三个阶段。在NetHack游戏中,Motif展现出优秀性能,生成符合人类直觉的行为,并可通过提示词灵活调整。这种方法为开发智能AI代理提供了新的研究方向,具有良好的扩展潜力。

MotifAI强化学习NetHack大语言模型Github开源项目

概述

本仓库包含了Motif的PyTorch代码,用于在NetHack游戏中训练AI代理,其奖励函数源自大语言模型的偏好。

Motif: 来自人工智能反馈的内在动机

作者:Martin Klissarov* & Pierluca D'Oro*, Shagun Sodhani, Roberta Raileanu, Pierre-Luc Bacon, Pascal Vincent, Amy ZhangMikael Henaff

<p align="center"> <img src="https://github.com/facebookresearch/motif/assets/15056362/2d92344e-7ea8-4c2d-ac70-456077ac0aab" alt="motif"> </p>

Motif从NetHack游戏交互数据集中获取带有说明的观察对,引出大语言模型(LLM)对这些对的偏好。它自动地将LLM的常识提炼为奖励函数,用于通过强化学习训练代理。

为便于比较,我们在pickle文件motif_results.pkl中提供了训练曲线,该文件包含以任务为键的字典。对于每个任务,我们提供了Motif和基线方法在多个种子下的时间步和平均回报列表。

如下图所示,Motif包含三个阶段:

  1. 数据集标注:利用LLM对带说明的观察对的偏好创建标注后的数据集;
  2. 奖励训练:使用标注后的数据集对和LLM的偏好作为监督信号训练奖励函数;
  3. 强化学习训练:使用Motif的奖励函数训练代理。

我们通过提供必要的数据集、命令和原始结果,详细说明了每个阶段,以便重现论文中的实验。

<p align="center"> <img src="https://github.com/facebookresearch/motif/assets/15056362/297e16c5-fcd3-42ef-b686-b383b0ec56b3" alt="motif"> </p>

我们通过NetHack学习环境评估Motif在具有挑战性、开放式和程序生成的NetHack游戏中的表现。我们研究了Motif如何主要生成符合人类直觉的行为,这些行为可以通过提示修改轻松调整,以及其扩展性。

<p align="center"> <img src="https://github.com/facebookresearch/motif/assets/15056362/1b93c85d-5c99-446a-b8a0-6e6e2b60328e" alt="motif"> </p> <p align="center"> <img src="https://github.com/facebookresearch/motif/assets/15056362/91e683d4-819f-404b-8983-a567e2dc833a" alt="motif"> </p>

要安装整个流程所需的依赖项,只需运行pip install -r requirements.txt

使用Llama 2进行数据集标注

在第一阶段,我们使用一个带有说明(即游戏中的消息)的观察对数据集,这些观察对是由经过强化学习训练以最大化游戏分数的代理收集的。 我们在本仓库中提供了该数据集。 我们将不同部分存储在motif_dataset_zipped目录中,可以使用以下命令解压缩。

cat motif_dataset_zipped/motif_dataset_part_* > motif_dataset.zip; unzip motif_dataset.zip; rm motif_dataset.zip

我们提供的数据集包含了Llama 2模型给出的一组偏好,存储在preference/目录中,使用了论文中描述的不同提示。 包含标注的.npy文件名遵循模板llama{size}b_msg_{instruction}_{version},其中size是来自集合{7,13,70}的LLM大小,instruction是引入给LLM的提示中的指令,来自集合{defaultgoal, zeroknowledge, combat, gold, stairs}version是要使用的提示模板版本,来自集合{default, reworded}。 以下是可用标注的摘要:

标注论文中的用例
llama70b_msg_defaultgoal_default主要实验
llama70b_msg_combat_default引导向_怪物杀手_行为
llama70b_msg_gold_default引导向_黄金收集者_行为
llama70b_msg_stairs_default引导向_下降者_行为
llama7b_msg_defaultgoal_default扩展实验
llama13b_msg_defaultgoal_default扩展实验
llama70b_msg_zeroknowledge_default零知识提示实验
llama70b_msg_defaultgoal_reworded提示重写实验

为创建标注,我们使用vLLMLlama 2的聊天版本。如果你想生成自己的标注或重现我们的标注过程,请确保按照官方说明下载模型(获取模型权重可能需要几天时间)。

标注脚本假设数据集将使用n-annotation-chunks参数分成不同的块进行标注。这允许根据可用资源进行并行处理,并且对重启/抢占具有鲁棒性。要使用单个块运行(即处理整个数据集),并使用默认提示模板和任务规范进行标注,请运行以下命令。

python -m scripts.annotate_pairs_dataset --directory motif_dataset \
                                 --prompt-version default --goal-key defaultgoal \
                                 --n-annotation-chunks 1 --chunk-number 0 \
                                 --llm-size 70 --num-gpus 8

请注意,默认行为是通过将标注附加到指定配置的文件来恢复标注过程,除非通过--ignore-existing标志另有说明。也可以使用--custom-annotator-string标志手动选择为标注创建的'.npy'文件的名称。可以使用单个32GB内存的GPU进行--llm-size 7--llm-size 13的标注。 你可以使用8个GPU的节点进行--llm-size 70的标注。这里我们提供使用NVIDIA V100s 32G GPU对100k对数据集进行标注的粗略时间估计,这应该能大致重现我们的大多数结果(我们的结果是使用500k对获得的)。

模型所需标注资源
Llama 2 7b约32 GPU小时
Llama 2 13b约40 GPU小时
Llama 2 70b约72 GPU小时

奖励训练

在第二阶段,我们通过交叉熵将大语言模型的偏好提炼为奖励函数。要使用默认超参数启动奖励训练,请使用以下命令。

python -m scripts.train_reward  --batch_size 1024 --num_workers 40  \
        --reward_lr 1e-5 --num_epochs 10 --seed 777 \
        --dataset_dir motif_dataset --annotator llama70b_msg_defaultgoal_default \
        --experiment standard_reward --train_dir train_dir/reward_saving_dir

奖励函数将通过位于--dataset_dir中的annotator的标注进行训练。然后,结果函数将保存在train_dir下的--experiment子文件夹中。

强化学习训练

最后,我们通过强化学习使用得到的奖励函数训练一个智能体。要在NetHackScore-v1任务上使用默认超参数训练智能体,结合内在和外在奖励进行实验,可以使用以下命令。

python -m scripts.main --algo APPO --env nle_fixed_eat_action --num_workers 24 \
        --num_envs_per_worker 20 --batch_size 4096 --reward_scale 0.1 --obs_scale 255.0 \
        --train_for_env_steps 2_000_000_000 --save_every_steps 10_000_000 \       
        --keep_checkpoints 5 --stats_avg 1000 --seed 777  --reward_dir train_dir/reward_saving_dir/standard_reward/ \
        --experiment standard_motif --train_dir train_dir/rl_saving_dir \
        --extrinsic_reward 0.1 --llm_reward 0.1 --reward_encoder nle_torchbeast_encoder \
        --root_env NetHackScore-v1 --beta_count_exponent 3 --eps_threshold_quantile 0.5

要更改任务,只需修改--root_env参数。下表明确列出了与论文中呈现的实验相匹配所需的值。NetHackScore-v1任务的extrinsic_reward值为0.1,而其他所有任务的值为10.0,以激励智能体达到目标。

环境root_env
得分NetHackScore-v1
楼梯NetHackStaircase-v1
楼梯(第3层)NetHackStaircaseLvl3-v1
楼梯(第4层)NetHackStaircaseLvl4-v1
神谕NetHackOracle-v1
神谕-清醒NetHackOracleSober-v1

此外,如果你只想使用来自大语言模型的内在奖励而不使用环境奖励来训练智能体,只需设置--extrinsic_reward 0.0。在仅使用内在奖励的实验中,我们只在智能体死亡时终止回合,而不是在智能体达到目标时终止。这些修改后的环境列在下表中。

环境root_env
楼梯(第3层)- 仅内在奖励NetHackStaircaseLvl3Continual-v1
楼梯(第4层)- 仅内在奖励NetHackStaircaseLvl4Continual-v1

可视化你的强化学习智能体

我们还提供了一个脚本来可视化你训练的强化学习智能体。这可以提供对其行为的重要洞察,同时还会生成每个回合的顶级消息,有助于理解它试图优化的目标。你只需运行以下命令即可。

python -m scripts.visualize --train_dir train_dir/rl_saving_dir --experiment standard_motif

引用

如果你在我们的工作基础上进行研究或发现它有用,请使用以下bibtex引用。

@article{klissarovdoro2023motif,
    title={Motif: Intrinsic Motivation From Artificial Intelligence Feedback},
    author={Klissarov, Martin and D'Oro, Pierluca and Sodhani, Shagun and Raileanu, Roberta and Bacon, Pierre-Luc and Vincent, Pascal and Zhang, Amy and Henaff, Mikael},
    year={2023},
    month={9},
    journal={arXiv preprint arXiv:2310.00166}
}

许可证

Motif的大部分内容采用CC-BY-NC许可,但项目的某些部分采用单独的许可条款:sample-factory采用MIT许可。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多