tmrl

tmrl

实时机器人控制与自动驾驶AI的分布式强化学习框架

TMRL是一个面向机器人学习的分布式强化学习框架,专注于实时应用中的深度强化学习AI训练。该框架以TrackMania 2020游戏为例,展示了基于原始截图的自动驾驶控制。TMRL具备安全远程训练、灵活定制和实时环境兼容性等特点,采用单服务器多客户端架构,可在多个节点收集样本并在高性能集群上进行训练。

TMRL强化学习自动驾驶TrackMania 2020Gymnasium环境Github开源项目

TMRL

PyPI版本 PyPI - 许可证 DOI

API参考
文档状态

tmrl是一个全面的分布式强化学习框架,专为机器人学设计,旨在帮助您在实时应用中训练深度强化学习AI。

tmrl附带了TrackMania 2020视频游戏的自动驾驶示例流程。

示例

简介:

  • :red_car: AI和TM爱好者:
    tmrl使您能够轻松地在TrackMania中训练AI。这里有专门为你们准备的教程预训练AI的视频,以及SAC算法的初学者介绍

  • :rocket: 机器学习开发者/机器人专家:
    tmrl是一个Python库,旨在简化工业应用中特定强化学习流程的实施,特别是实时控制。这里有最小示例,这里有完整教程,这里有文档。

  • :ok_hand: 对学习这个庞大系统不感兴趣但热爱TM的机器学习开发者:
    tmrl为TrackMania提供了一个易于使用的Gymnasium环境。这里有为你们准备的快速通道。

  • :earth_americas: 所有人:
    tmrl主办TrackMania机器人赛车联赛,这是一个基于视觉的AI竞赛,参与者在TrackMania 2020视频游戏中设计实时自动赛车AI。

快速链接

TMRL项目

介绍

tmrl是一个Python框架,旨在帮助您通过深度强化学习在实时应用(机器人、视频游戏、高频控制等)中训练人工智能(AI)。

作为基于视觉的自动驾驶的有趣且安全的机器人代理,tmrl为TrackMania 2020赛车视频游戏提供了一个现成实现的示例流程。 注:在强化学习的背景下,AI被称为策略。

用户功能(以TrackMania为例的流水线):

  • 训练算法: tmrl自带一个现成实现的示例流水线,让您可以轻松地使用最先进的深度强化学习算法(如Soft Actor-Critic (SAC)和Randomized Ensembled Double Q-Learning (REDQ))在TrackMania 2020中训练策略。 这些算法将收集到的样本存储在一个大型数据集中,称为回放内存。 同时,这些样本被用来训练一个人工神经网络(策略),将观察(图像、速度等)映射到相关动作(加速、刹车、转向角度等)。

  • 从截图进行模拟控制: tmrl示例流水线训练的策略能够从实时捕获的原始截图进行驾驶。 对于初学者,我们还提供了更简单的测距仪("LIDAR")观察,这种观察不太强大但更容易学习。 示例流水线通过虚拟游戏手柄控制游戏,实现模拟动作。

  • 模型: 为处理LIDAR测量,tmrl示例流水线使用多层感知器(MLP)。 为处理原始摄像机图像(快照),它使用卷积神经网络(CNN)。 这些模型从等时间间隔的观察历史中学习游戏的物理规律。

开发者功能(Python中的实际应用):

  • Python库: tmrl是一个完整的框架,旨在帮助您成功实现实际应用的特定强化学习流水线。它具有安全远程训练、细粒度可定制性,并且完全兼容实时环境(如机器人等)。 它基于单服务器/多客户端架构,使得可以从一个到任意多个worker本地收集样本,并在高性能计算集群上远程训练。 这里提供了一个完整教程,指导您为特定应用实现这一点。

  • TrackMania Gymnasium环境: tmrl附带了一个基于rtgym的TrackMania 2020 Gymnasium环境。安装库后,在您自己的训练框架中使用此环境很容易。这里有更多信息。

  • 外部库: tmrl衍生出一些更具普遍意义的子项目,这些子项目被剥离并打包成独立的Python库。 特别是,rtgym可以在实时应用中实现Gymnasium环境, vgamepad可以模拟虚拟游戏控制器, tlspyo可以通过互联网安全地传输Python对象。

TMRL在媒体中:

  • 在法国节目Underscore_ (2022-06-08)中,我们使用基于视觉(LIDAR)的策略与TrackMania世界冠军对抗。剧透:我们的策略远远落后(意料之中:smile:);在tmrl-test赛道上,超人目标设定为约32秒,而训练的策略平均表现约为45.5秒。我们在节目中使用的Gymnasium环境可在此处获得。

  • 2023年,我们受邀到育碧蒙特利尔进行演讲,描述视频游戏如何在不久的将来成为基于视觉的自动驾驶的视觉模拟器。

安装

详细的安装说明可在此链接找到。

入门

关于在TrackMania 2020中设置环境、测试预训练权重以及初学者友好的训练、测试和微调自己模型的教程,可在此链接找到。

TMRL Python库

一个高级教程,指导您为自己的实时任务实现自己的特定优化训练流水线,可在这里找到。

安全性

:warning: 重要提示:在公共网络上使用tmrl之前,请阅读并理解本节内容。

从安全角度来看,tmrl基于tlspyo

默认情况下,tmrl通过非加密TCP传输对象,以实现开箱即用。 只要您在自己的私有网络上使用tmrl,这就没问题。

然而,如果您开始在公共网络上使用tmrl,这将是一个安全漏洞。

要在公共网络(例如互联网)上安全地使用tmrl,请启用传输层安全(TLS)。 为此,请在所有机器上按照以下说明操作:

  • 打开 config.json
  • "TLS" 条目设置为 true
  • "PASSWORD" 条目替换为您自己的强密码(在所有机器上使用相同的密码);
  • 在托管 Server 的机器上,生成 TLS 密钥和证书(按照 tlspyo 说明进行操作);
  • 将生成的证书复制到所有其他机器上(可以放在默认的 tlspyo 凭证目录中,或者放在您选择的目录中);
  • 如果您在上一步中使用了自己的目录,请将 "TLS_CREDENTIALS_DIRECTORY" 条目替换为该目录的路径。

如果由于某种原因您不想使用 TLS(不推荐),在通过公共网络进行训练时,您至少应该在 config.json 中使用自定义密码。 但是,切勿使用您在其他应用程序中使用的密码。 这是因为,如果没有 TLS 加密,这个密码将可以在您的机器通过网络发送的数据包中被读取,并可能被拦截。

TrackMania 中的自动驾驶

TrackMania 机器人竞赛联盟

我们主办 TrackMania 机器人竞赛联盟,这是一种在 TrackMania 2020 视频游戏中对自动赛车方法进行基准测试的有趣方式。 点击链接了解有关竞赛的信息,包括当前排行榜和参与说明。

无论是否想要参赛,机器学习开发者都会发现竞赛教程脚本对于在 TrackMania 中创建高级训练流程很有帮助。

TrackMania Gymnasium 环境

如果您只想在自己的训练框架中使用 tmrl 为 TrackMania 提供的实时 Gym 环境,可以通过 get_environment() 方法实现:

(注意:需要按照入门指南中的说明设置游戏)

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

可以通过更改 TmrlData\config\config.jsonENV 条目的内容来选择和自定义环境类型:

(注意:不要直接复制粘贴示例,原始 .json 文件不支持注释)

完整环境:

环境的这个版本提供完整的屏幕截图,可以用于例如 CNN 处理。 此外,这个版本还提供速度、档位和 RPM 信息。 这适用于任何赛道,使用任何(合理的)摄像机配置。

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

请注意,人类玩家可以看到或听到此环境提供的特征:我们不提供任何会使方法无法迁移到真实世界的"作弊"手段。 不过,如果你确实想作弊,你可以很容易地从我们的rtgym接口获得灵感,为TrackMania构建自己的自定义环境。

Full环境用于官方TMRL比赛,而自定义环境则出现在"非官方"比赛中 :wink:

LIDAR环境:

在此版本的环境中,截图被简化为19束激光雷达,以便使用例如MLP进行处理。 此外,该版本还包含速度(人类玩家可以看到)。 这只适用于带有黑色边界的普通道路,使用前置摄像头且隐藏车辆。

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

带赛道进度的LIDAR

如果你看过Underscore_脱口秀的2022年6月8日一集(法语),请注意你看到的策略是在LIDAR环境的一个稍微增强版本中训练的:除了LIDAR和速度值外,我们还添加了一个代表赛道完成百分比的值,这样模型就可以提前知道转弯情况,类似于人类在特定赛道上练习。 这个环境不会在比赛中被接受,因为它事实上降低了泛化性。 然而,如果你希望使用这个环境,例如,为了打破我们的记录,你可以使用以下config.json:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

TrackMania训练细节

在示例的tmrl流程中,一个对驾驶甚至对道路一无所知的AI(策略)被放置在赛道的起点。它的目标是通过探索自身能力和环境来学习如何尽可能快地完成赛道。

汽车将图像等观察结果输入人工神经网络,该网络必须从这些观察结果中输出最佳可能的控制。这意味着AI必须以某种方式理解其环境。为了实现这种理解,它会探索世界几个小时(最多几天),逐渐获得如何有效行动的认知。这是通过深度强化学习(RL)实现的。

强化学习基础

大多数RL算法都基于一种称为马尔可夫决策过程(MDP)的环境数学描述。通过RL训练的策略与MDP的交互如下:

reward

在这个图示中,策略被表示为火柴人,时间被表示为固定持续时间的时间步。在每个时间步,策略根据观察结果计算一个动作(油门、刹车和转向的浮点值)。该动作被应用于环境,在转换结束时产生新的观察结果。

为了训练这个策略,环境还提供另一个信号,称为"奖励"。RL受行为主义启发,行为主义依赖于一个基本思想,即智能是正面和负面刺激历史的结果。AI在每个时间步收到的奖励是衡量其表现好坏的指标。

为了学习如何驾驶,AI尝试对传入的观察结果做出随机动作,获得正面或负面奖励,并优化其策略以最大化长期奖励。

软演员-评论家算法

介绍视频

完整论文

软演员-评论家(SAC)算法能够学习连续的随机控制器。

具体来说,SAC使用两个独立的人工神经网络(NNs)来实现这一点:

  • 第一个称为"策略网络"(或在文献中称为"演员"),是用户最终感兴趣的NN:汽车的控制器。它以观察结果为输入,输出动作。
  • 第二个称为"价值网络"(或在文献中称为"评论家"),用于训练策略网络。它以观察结果x和动作a为输入,输出一个价值。这个价值是AI观察到x,选择a,然后永远使用策略网络的预期未来奖励总和的估计(还有一个折扣因子,使这个总和不是无限的)。

两个网络使用彼此并行训练。奖励信号用于训练价值网络,价值网络用于训练策略网络。

SAC相对于其他现有方法的优势如下:

  • 它能够将转换存储在一个巨大的循环缓冲区中,称为"重放记忆",并在训练期间多次重用这些转换。这对于TrackMania等应用来说是一个重要特性,因为由于实时环境的性质,只能收集相对少量的转换。
  • 它能够输出模拟控制。我们在虚拟游戏手柄上使用这一特性。
  • 它最大化学习策略的熵。这意味着策略在最大化奖励的同时会尽可能随机。这一特性有助于探索环境,并且已知能产生对外部扰动具有鲁棒性的策略,这在现实世界的自动驾驶场景中至关重要。

随机化集成双Q学习

完整论文

REDQ是一种更新的方法,可以提高像SAC这样的基于价值的算法的性能。 REDQ的改进主要包括训练一组并行的价值网络集合,在训练过程中从中随机抽样一个子集来评估目标值。作者表明,这能够实现低偏差的更新,样本效率可与基于模型的算法相媲美,同时计算成本更低。

默认情况下,tmrl使用普通的SAC来训练策略。要使用REDQ-SAC,请在用于训练的机器上编辑TmrlData\config\config.json,将"ALGORITHM"条目中的"SAC"值替换为"REDQSAC"。你还需要为"REDQ_N","REDQ_M""REDQ_Q_UPDATES_PER_POLICY_UPDATE"条目设置值,其中"REDQ_N"是并行评论者的数量,"REDQ_M"是子集的大小,"REDQ_Q_UPDATES_PER_POLICY_UPDATE"是每次演员更新之间发生的评论者更新次数。

例如,使用REDQ-SAC的有效"ALG"条目如下:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

巧妙的奖励

如前所述,需要一个奖励函数来评估策略的表现。

可以使用多种奖励函数。例如,可以直接使用汽车的原始速度作为奖励。这是有道理的,因为汽车在撞车时会减速,而在表现良好时会快速行驶。

然而,这种方法过于简单。赛车的实际目标并不是尽可能快地移动。相反,我们希望在最短的时间内完成最长的赛道部分。这并不等同于考虑最佳轨迹,可能需要在急转弯时减速以便通过每个弯道的顶点。

在TrackMania 2020中,我们使用了一个更先进且概念上更有趣的奖励函数:

reward

对于给定的赛道,我们记录一条单一的示范轨迹。这不必是一个好的示范,只需要沿着赛道行驶即可。一旦记录了示范轨迹,它会自动被分割成等距的点。

在训练过程中,每个时间步的奖励就是自上一个时间步以来汽车通过的这些点的数量。简而言之,之前的奖励函数是测量汽车的速度有多快,而这个新的奖励函数则是测量汽车在给定时间内覆盖赛道大部分的能力。

可用的动作空间

tmrl中,可以通过两种不同的方式控制汽车:

  • 策略可以通过模拟XBox360控制器来使用模拟输入控制汽车,这要归功于vgamepad库。
  • 策略可以输出简单的(二进制)箭头按键。

可用的观察空间

TrackMania管道中提供了不同的观察空间:

  • 原始截图的历史记录(通常是4张)。
  • 在带有黑色边界的赛道中,从原始截图计算得出的LIDAR测量历史记录。

此外,管道还提供速度范数作为观察空间的一部分。

TrackMania Nations Forever中tmrl环境的示例,使用单个LIDAR测量:

reward

在TrackMania Nations Forever中,我们曾经使用1-NN算法从截图中计算原始速度。

在TrackMania 2020中,我们现在使用OpenPlanet API直接获取原始速度。

结果

在以下实验中,除了原始速度外,蓝色汽车使用单个LIDAR测量,而红色汽车使用4个LIDAR测量的历史记录。 这个动画中两辆车的位置是以恒定的时间间隔捕捉的:

Turn

蓝色汽车学会了以恒定速度行驶,这是它从简单的观察空间中能做到的最好结果。相比之下,红色汽车能够从4个LIDAR的历史记录中推断出高阶动态,成功学会了刹车、通过弯道顶点,然后在这个急转弯后再次加速,在这种情况下稍微表现得更好。

框架细节

实时Gym框架:

本项目使用Real-Time Gym (rtgym),这是一个简单的Python框架,可以在实际应用中高效实现延迟马尔可夫决策过程。

rtgym对发送动作和检索观察的时间进行了如下约束:

Real-Time Gym Framework

时间步被弹性地限制在其标称持续时间内。当无法满足这种弹性约束时,上一个时间步会超时,新的时间步从当前时间戳开始。

tmrl使用的Trackmania自定义rtgym接口在custom_gym_interfaces.py中实现。

远程训练架构:

tmrl基于tlspyo构建。 其客户端-服务器架构类似于Ray RLlibtmrl并非旨在与Ray竞争,但它更容易适应以实现特定的流程,并且可以同时在Windows和Linux上运行。

tmrl从多个rollout工作节点(通常是多台计算机和/或机器人)收集训练样本。 每个rollout工作节点将收集的样本存储在本地缓冲区中,并定期将此重放缓冲区发送到中央服务器。 每个rollout工作节点还会定期从中央服务器接收新的策略权重并更新其策略网络。

中央服务器可以位于其中一台rollout工作节点计算机的本地主机上,也可以位于本地网络的另一台计算机上,或者位于互联网上的另一台计算机上。 它从所有连接的rollout工作节点收集样本,并将这些样本存储在本地缓冲区中。 然后,这个缓冲区会被发送到训练器接口。 中央服务器从训练器接口接收更新后的策略权重,并将其广播到所有连接的rollout工作节点。

训练器接口通常位于本地网络中的非rollout工作节点计算机上,或者位于互联网上的另一台机器上(例如,GPU集群)。 当然,在需要时也可以将所有内容都放在本地主机上。 训练器接口定期接收中央服务器收集的样本,并将这些样本附加到重放内存中。 它会定期将新的策略权重发送到中央服务器。

这些机制总结如下:

网络架构

开发路线图:

欢迎对tmrl做出贡献。 请考虑以下方面:

  • 进一步的性能分析和代码优化,
  • 找到最清晰的方法来支持Memory中的序列以进行RNN训练。

您可以在讨论区讨论贡献项目。

作者:

在贡献时,请提交一个PR,在贡献者列表中添加您的名字和简短说明。

维护者:

  • Yann Bouteiller
  • Edouard Geze

贡献者:

  • Simon Ramstedt - 初始代码库
  • AndrejGobeX - 屏幕捕捉优化(TrackMania)
  • Pius - Linux支持(TrackMania)

许可证

MIT,Bouteiller和Geze。

赞助商:

非常感谢我们的赞助商的支持!

mist MISTlab - 蒙特利尔理工学院

编辑推荐精选

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

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

ai-agents-for-beginners

ai-agents-for-beginners

10 节课教你开启构建 AI 代理所需的一切知识

AI Agents for Beginners 是一个专为初学者打造的课程项目,提供 10 节课程,涵盖构建 AI 代理的必备知识,支持多种语言,包含规划设计、工具使用、多代理等丰富内容,助您快速入门 AI 代理领域。

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

UI-TARS-desktop

UI-TARS-desktop

基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。

UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。

Wan2.1

Wan2.1

开源且先进的大规模视频生成模型项目

Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。

爱图表

爱图表

全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表

爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

下拉加载更多