warp-drive

warp-drive

GPU驱动的高效多智能体强化学习框架

WarpDrive是一款开源的强化学习框架,专为GPU环境优化。它支持单GPU或多GPU上的端到端多智能体强化学习,通过充分利用GPU并行计算能力,显著提升训练速度。WarpDrive通过减少CPU和GPU间的数据传输,并在多智能体和多环境副本间并行运行模拟,大幅提高了计算效率。这使得同时运行海量并发模拟成为可能,实现了比传统CPU方案高出百倍的训练吞吐量。

WarpDrive深度强化学习GPU加速多智能体并行计算Github开源项目

WarpDrive:在GPU上实现极快的端到端单代理或多代理深度强化学习

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+

环境

  1. "捉迷藏"游戏:在"捉迷藏"游戏中,追捕者试图追赶并标记逃跑者。这些游戏相当复杂,适合用于基准测试和测试,涉及线程同步、共享内存、数千个交互代理的高维索引等。下面我们展示了使用WarpDrive为不同追捕者:逃跑者速度比训练的多代理RL策略。这些环境可以在单个GPU上以每秒数百万步的速度运行,并在仅仅几个小时内完成训练

<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"/>

  1. 基于WarpDrive开发了复杂的两级多代理环境,如新冠疫情环境和气候变化环境,您可以在真实世界问题和合作中查看示例。
<img width="800" src="https://github.com/salesforce/warp-drive/assets/31748898/7544ea10-3243-4415-8d50-b4827e4519d2">

  1. 经典控制:我们包含了[gym.classic_control](https://github.com/salesforce/warp-drive/blob/master/ https://github.com/openai/gym/tree/master/gym/envs/classic_control)中的环境。在WarpDrive中,单代理是多代理环境的特殊情况。由于每个环境只有一个代理,可扩展性更高。
<img width="600" alt="Screenshot 2023-12-19 at 10 02 51 PM" src="https://github.com/salesforce/warp-drive/assets/31748898/19b5c3b0-fa02-4555-8d95-e34187ea5df9">

  1. 催化反应路径:我们包含了将量子密度泛函理论转换为强化学习表示的环境,使得能够从嘈杂的化学系统中自动搜索最优化学反应路径。您可以在真实世界问题和合作中查看示例。
<img width="649" alt="Screenshot 2023-09-19 at 10 23 56 AM" src="https://github.com/user-attachments/assets/3c46d054-d5c8-4500-a04f-c6f34abcc5bf">

吞吐量、可扩展性和收敛性

多代理

下面,我们比较了在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"/>

Python接口

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()

论文和引用 WarpDrive

我们的论文发表在《机器学习研究杂志》(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

Docker 镜像

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。

使用Pip安装

您可以使用Python包管理器安装WarpDrive:

pip install rl_warp_drive

从源代码安装

  1. 将此仓库克隆到您的机器上:

    git clone https://www.github.com/salesforce/warp-drive
    
  2. 可选,但建议首次尝试时使用: 创建一个新的conda环境(下面命名为"warp_drive")并激活它:

    conda create --name warp_drive python=3.7 --yes
    conda activate warp_drive
    
  3. 作为可编辑的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 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

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

下拉加载更多