当前位置: 首页 > news >正文

强化学习部署相关概念区分: parameters.pkl、Checkpoint 与 TorchScript

在将强化学习(RL)算法从仿真环境(如 Isaac Gym)部署到真实机器人(如 Unitree Go2)的过程中,我们经常会在项目的checkpointslogs文件夹里看到一堆不同后缀的文件。

最典型的就是这三剑客:parameters.pkl.pt(Checkpoint) 和.jit(TorchScript)。

它们到底是什么?各有什么用?实机部署到底该加载哪一个?本文将结合经典的四足机器人 RL 代码库(如walk-these-ways变体)进行梳理。

太长不看版

如果你只需要一个最短结论,请看下表:

文件类型本质主要作用核心应用场景
parameters.pklPythonpickle序列化的配置与元数据还原训练时的环境配置、超参数、归一化信息等评估、复现实验、部署前重建运行环境
Checkpoint (.pt)训练状态快照(通常是state_dict断点续训、继续训练、微调、回滚到某个迭代训练环境 (Training)
TorchScript (.jit)可序列化的 PyTorch 推理图/模块脱离原训练类定义,进行高效推理和部署推理/实机部署 (Inference/Deploy)

1.parameters.pkl:模型的“运行说明书”

它通常不是“模型本体”,而是“模型运行所需上下文”

在复杂的 RL 项目中,常见内容包括:

  • 环境配置Cfg
  • 算法超参数
  • 观测维度、动作维度
  • 域随机化参数
  • 归一化统计量、奖励配置、课程学习状态等

代码库实例解析:
在这个仓库中,parameters.pkl是通过ml_logger记录实验参数生成的。在训练脚本scripts/train.py中,你可以看到这样的调用:

logger.log_params(AC_Args=vars(AC_Args),PPO_Args=vars(PPO_Args),RunnerArgs=vars(RunnerArgs),Cfg=vars(Cfg))

本质上,它是“这次训练用了什么配置”的归档

它的加载作用非常明确:

  • 仿真评估(scripts/play.py):先读取parameters.pkl,再把里面的Cfg写回环境配置,确保测试环境与训练环境一致。
  • 实机部署(go2_gym_deploy/scripts/deploy_policy.py):同样会先读取它,用于构建硬件 Agent 实例。

结论:parameters.pkl解决的是“模型该在什么世界里运行”这个问题,而不是“模型参数是多少”。


2. Checkpoint (.pt):训练过程的“原材料”

Checkpoint 是训练过程中的“存档点”

最标准的 Checkpoint 往往会保存模型权重、Optimizer 状态、Scheduler 状态、AMP scaler、当前 epoch 以及随机数状态。但在很多实际的 RL 项目中(包括当前仓库),它往往只存储了模型权重。

代码库实例解析:
在 PPO 算法核心代码中 (go2_gym_learn/ppo/__init__.py),保存逻辑如下:

logger.torch_save(self.alg.actor_critic.state_dict(),"checkpoints/ac_weights_xxxxxx.pt")

这意味着这里的ac_weights_last.ptactor_critic的权重快照。它适合用来恢复模型参数,但不一定是包含优化器状态的“完整训练断点”。

典型用途:

  • 训练中断后继续训
  • 从某个已训好的策略继续微调 (Fine-tuning)
  • 对比不同迭代 (Iteration) 的性能

恢复逻辑通常是先实例化原有的ActorCritic类,再执行load_state_dict(...)

结论:Checkpoint 解决的是“把训练好的权重重新灌回网络代码里”的问题。


3. TorchScript (.jit):面向部署的“成品件”

TorchScript 是 PyTorch 模型的一种可序列化推理形式。它的出现是为了让模型能够脱离 Python 运行。常见的生成方式有torch.jit.script(model)torch.jit.trace(model, example_input)

代码库实例解析:
在这个项目中,主要使用script方式,将策略拆分为两个独立的模块进行导出:

  • adaptation_module_latest.jit
  • body_latest.jit

在加载时,直接使用torch.jit.load(...)即可:

  • 仿真推理:scripts/play.py
  • 实机部署:go2_gym_deploy/scripts/deploy_policy.py

TorchScript 的核心价值:

  1. 不需要原始 Python 模型类定义也能直接加载。
  2. 更适合部署和推理,轻量且高效。
  3. 可以在 Python 之外的环境(例如 C++ 端)里用libtorch直接跑。
  4. 比原始 Checkpoint 更“便携”。

结论:TorchScript 解决的是“把模型带到训练代码之外去跑”的问题。


4. 总结:三者的协同工作流

我们可以把它们理解成生产线上的三个层级:

  1. parameters.pkl(说明书):告诉你训练时的环境和超参数是什么。
  2. Checkpoint (原材料):保存训练出来的原生权重,主要给训练代码自己恢复用。
  3. TorchScript (成品件):把模型打包成最适合机器推理与部署的形式。

一个典型的四足机器人 RL 工作流如下:

训练脚本启动
➔ 保存配置到parameters.pkl
➔ 定期保存权重到 Checkpoint.pt
➔ 训练结束/验证时,从当前权重导出 TorchScript.jit
实机部署时,读取parameters.pkl重建控制环境,直接加载.jit执行动作推理。

“我想复现实验设置”➔ 找parameters.pkl
“我想接着训练/微调”➔ 加载 Checkpoint (.pt)
“我只想把策略丢到机器狗上跑起来”➔ 认准 TorchScript (.jit)

http://www.jsqmd.com/news/625928/

相关文章:

  • Lychee多模态重排序模型效果展示:T→T纯文本检索中长尾query高分匹配案例
  • PlugY颠覆式体验完全指南:暗黑破坏神2单机限制的终极解决方案
  • 用R包sommer做基因组选择:从单性状到多性状GBLUP,一份给育种新手的保姆级代码指南
  • 别再为加工发愁!手把手教你将HFSS的3D模型变成Altium可用的PCB封装(以定向耦合器为例)
  • **发散创新:基于Rust的内存安全加固技术实战与深度剖析**在现代软件开发中,**内存
  • ESP32-S3玩转RGB屏幕:解决画面漂移的5个实战技巧(附配置代码)
  • 学Simulink——基于Simulink的重复控制抑制周期性负载转矩扰动
  • 2024年企业服务器CPU怎么选?从Intel至强Silver 4410Y到Gold 6248R的实战性能分析与避坑指南
  • 【实战指南】利用再生龙(Clonezilla)实现Linux服务器整盘灾备
  • 在飞腾D2000的麒麟V10上离线装Docker,我踩过的坑和填坑方法都在这了
  • eDNA原始数据分析 各文件含义
  • HarmonyOS6 ArkTS Tabs自定义页签切换联动
  • 从频谱分析到PCB布线:开关电源EMI优化的5个关键步骤(附实测数据)
  • 告别零样本提示:为什么在复杂业务里,Text2SQL微调才是王道?以DB-GPT-Hub为例
  • GitHub中文化插件实战指南:开发版与稳定版选型深度解析
  • 电商客服+导购智能体的设计与开发颇
  • AI未来3-5年十大核心方向
  • 基于Simulink的李雅普诺夫稳定性保障的非线性控制
  • 从81.7万细胞中解码“语法”:人类发育多组学图谱首次揭示调控序列的硬规则与软约束
  • 告别接线烦恼!用JDY-23蓝牙模块DIY一个手机遥控的智能小夜灯(附Arduino代码)
  • 把轮询时代收起来,ABAP Daemon 才是事件驱动应用的长驻底座
  • 告别手动复制:用Apifox Helper插件+访问令牌,实现IDEA与API文档的自动同步
  • 从AAAI2025看技术风向:Gaussian Splatting、Mamba、MoE这些词为啥这么火?
  • 让微信网页版重新可用:wechat-need-web浏览器插件完全攻略
  • 使用Microsoft Agent Framework构建C# AI代理雍
  • 学Simulink——基于Simulink的重复控制抑制周期性负载转矩扰动​
  • Verdi Transaction Debug避坑指南:从环境变量配置到FSDB文件生成,解决monitor采集不到Transaction的常见问题
  • MiniMax Music 2.6深度解析:当AI开始听懂音乐的气口
  • 你应该从 VSCode 切换到 Cursor 吗?
  • 第16讲:C语⾔内存函数