WarpDrive是一个灵活、轻量级且易于使用的开源强化学习(RL)框架,可在单个或多个GPU(图形处理单元)上实现端到端多代理RL。
利用GPU的极致并行能力,WarpDrive 能够实现比CPU模拟+GPU模型实现快几个数量级的RL。它非常高效,因为它避免了CPU和GPU之间的来回数据复制,并能跨多个代理和多个环境副本并行运行模拟。这些共同使用户能够运行数千甚至数百万个并发模拟,并在极大规模的经验批次上进行训练,实现比基于CPU的对应方案至少100倍的吞吐量。
下表直观展示了Warpdrive的主要特性和在各个维度上的可扩展性。
支持 | 并发性 | 版本 | |
---|---|---|---|
环境 | 单个 ✅ 多个 ✅ | 每GPU 1至1000个 | 1.0+ |
代理 | 单个 ✅ 多个 ✅ | 每环境1至1024个 | 1.0+ |
代理 | 跨块多个 ✅ | 每块1024个 | 1.6+ |
离散动作 | 单个 ✅ 多个 ✅ | - | 1.0+ |
连续动作 | 单个 ✅ 多个 ✅ | - | 2.7+ |
在线策略梯度 | A2C ✅ PPO ✅ | - | 1.0+ |
离线策略梯度 | DDPG ✅ | - | 2.7+ |
自动缩放 | ✅ | - | 1.3+ |
分布式模拟 | 1 GPU ✅ 2-16 GPU节点 ✅ | - | 1.4+ |
环境后端 | CUDA C ✅ | - | 1.0+ |
环境后端 | CUDA C ✅ Numba ✅ | - | 2.0+ |
训练后端 | Pytorch ✅ | - | 1.0+ |
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c2890762-d664-4745-b245-d82ba69fd82b.gif" width="250" height="250"/> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b9a85831-6275-44de-8e9b-5157c46832ad.gif" width="250" height="250"/> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/969b42b8-ccc1-491b-899b-4af41d056d26.gif" width="250" height="250"/>
下面,我们比较了在N1 16-CPU节点和单个A100 GPU(使用WarpDrive)上的训练速度,环境为100名逃跑者和5名追捕者的捉迷藏游戏。在相同的环境配置和训练参数下,使用GPU上的WarpDrive比CPU快约10倍。两种情况都并行运行60个环境副本。在CPU节点上使用更多环境是不可行的,因为数据复制会变得过于昂贵。使用WarpDrive,可以将环境副本数量至少增加10倍,实现更快的训练。
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/079adabd-c8d4-4c66-97a9-4ef02c8fa5cc.png" width="400" height="400"/>下面,我们比较了在单个A100 GPU(使用WarpDrive)上的训练速度,分别针对(上)Cartpole-v1和(下)Acrobot-v1,并行运行10、100、1K和10K个环境副本,训练3000个周期(超参数相同)。您可以看到通过WarpDrive扩展的大量环境实现了惊人的收敛性和速度。
<img width="450" src="https://github.com/salesforce/warp-drive/assets/31748898/a63c0e00-0c35-49c5-a7ae-802d1c879607">WarpDrive提供了CUDA(或Numba)+ Python框架和便利工具,使您能够快速构建快速、灵活且大规模分布式的多代理RL系统。下图从底层到顶层说明了WarpDrive的设计和组件概览。用户只需在CUDA环境层编写CUDA或Numba步进函数,而其余部分是纯Python接口。我们提供了循序渐进的教程,帮助您掌握工作流程。
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/52b81780-c0b8-4716-88a5-5bbb3924ec53.png" width="780" height="580"/>WarpDrive提供了工具,只需几行代码就能快速构建和训练多代理RL系统。 以下是一个简短示例,用于训练追捕者和逃跑者代理:
# 通过EnvWrapper创建一个包装的环境对象 # 确保env_backend设置为'pycuda'或'numba'(以便在GPU上运行) env_wrapper = EnvWrapper( TagContinuous(**run_config["env"]), num_envs=run_config["trainer"]["num_envs"], env_backend="pycuda" ) # 代理可以共享策略模型:此字典将策略模型名称映射到代理ID。 policy_tag_to_agent_id_map = { "tagger": list(env_wrapper.env.taggers), "runner": list(env_wrapper.env.runners), } # 创建训练器对象 trainer = Trainer( env_wrapper=env_wrapper, config=run_config, policy_tag_to_agent_id_map=policy_tag_to_agent_id_map, ) # 开始训练! trainer.train()
我们的论文发表在《机器学习研究杂志》(JMLR) https://jmlr.org/papers/v23/22-0185.html。您也可以在我们的白皮书中找到更多详细信息:https://arxiv.org/abs/2108.13976。
如果您在研究或应用中使用 WarpDrive,请使用以下 BibTeX 进行引用:
@article{JMLR:v23:22-0185,
author = {Tian Lan and Sunil Srinivasa and Huan Wang and Stephan Zheng},
title = {WarpDrive: Fast End-to-End Deep Multi-Agent Reinforcement Learning on a GPU},
journal = {Journal of Machine Learning Research},
year = {2022},
volume = {23},
number = {316},
pages = {1--6},
url = {http://jmlr.org/papers/v23/22-0185.html}
}
@misc{lan2021warpdrive,
title={WarpDrive: Extremely Fast End-to-End Deep Multi-Agent Reinforcement Learning on a GPU},
author={Tian Lan and Sunil Srinivasa and Huan Wang and Caiming Xiong and Silvio Savarese and Stephan Zheng},
year={2021},
eprint={2108.13976},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
通过在 Colab 或 NGC 容器上运行这些教程来熟悉 WarpDrive!
您也可以在本地运行这些教程,但您需要安装了 nvcc 编译器的 GPU 机器 和兼容的 Nvidia GPU 驱动程序。您还需要安装 Jupyter。 有关安装说明,请参阅 https://jupyter.readthedocs.io/en/latest/install.html
我们提供了一些示例脚本,供您快速开始端到端训练。 例如,如果您想使用 2 个 GPU 和 CUDA C 后端训练 tag_continuous 环境(10 个标记器和 100 个跑步者)
python example_training_script_pycuda.py -e tag_continuous -n 2
或者切换到 JIT 编译的 Numba 后端,使用 1 个 GPU
python example_training_script_numba.py -e tag_continuous
您可以在这里找到完整的参考文档。
要开始使用,您需要安装 Python 3.7+ 和 nvcc 编译器, 并有兼容的 Nvidia GPU CUDA 驱动程序。
可以按照 Nvidia 的说明在此处安装 CUDA(包括 nvcc):https://developer.nvidia.com/cuda-downloads。
V100 GPU:您可以参考 示例 Dockerfile 来配置您的系统。 A100 GPU:我们的最新镜像由NVIDIA NGC发布和维护。我们建议您从NGC目录下载最新镜像。
如果您想构建自定义环境,我们建议您访问Nvidia Docker Hub下载与您系 统兼容的CUDA和cuDNN镜像。 您应该能够使用命令行工具来监控系统中的NVIDIA GPU设备:
nvidia-smi
并看到类似这样的输出
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... Off | 00000000:00:04.0 Off | 0 |
| N/A 37C P0 32W / 300W | 0MiB / 16160MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
在这个快照中,您可以看到我们正在使用Tesla V100 GPU和CUDA版本11.0。
您可以使用Python包管理器安装WarpDrive:
pip install rl_warp_drive
将此仓库克隆到您的机器上:
git clone https://www.github.com/salesforce/warp-drive
可选,但建议首次尝试时使用: 创建一个新的conda环境(下面命名为"warp_drive")并激活它:
conda create --name warp_drive python=3.7 --yes
conda activate warp_drive
作为可编辑的Python包安装:
cd warp_drive
pip install -e .
您可以直接从Python命令调用来测试所有模块和端到端训练工作流。
python warp_drive/utils/unittests/run_unittests_pycuda.py
python warp_drive/utils/unittests/run_unittests_numba.py
python warp_drive/utils/unittests/run_trainer_tests.py
如果您对扩展此框架感兴趣,或有任何问题,请使用此邀请链接加入AI Economist Slack频道。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到 语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格 式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号