一、背景说明

  • 重映射(Remapping):指将原始采集的数据(可能来自传感器、仿真器或日志)转换为适合AMP策略训练的输入格式,包括时间对齐、坐标系变换、归一化、特征工程等。从另一个角度说,在机器人策略训练中,将采集的原始数据(如关节角度、力控数据、位姿信息)从一种格式 / 值域映射到训练所需的格式 / 值域(如归一化、维度对齐、格式转换)。
  • 数据格式:
    CSV:纯文本表格格式,人类可读。
    PKL:Python Pickle 序列化格式,支持任意 Python 对象。
    NPZ:NumPy 压缩存档格式,专为数值数组设计。

二、各格式在策略训练中的优缺点对比

表格

维度 CSV PKL NPZ
1. 可读性与调试 ✅极高,可用 Excel/文本编辑器查看,❌不适合嵌套结构 ❌二进制,不可读,✅可反序列化为原对象 ❌二进制,不可读,✅可用 np.load 查看内容
2. 存储效率 ❌文件大(无压缩,ASCII编码)❌数值精度受限(浮点截断) ✅ 支持压缩(protocol>=2)✅ 保留完整对象结构 ✅ 高效压缩(zlib)✅ 专为数值优化,体积小
3. 加载速度(训练时I/O) ❌ 慢(需解析文本、类型推断)尤其大数据集瓶颈明显 ✅ 快(直接反序列化)但依赖Python环境 ✅ 极快(C-level NumPy I/O)
4. 跨平台/语言支持 ✅ 广泛支持(C++/ROS/Python/Matlab) ❌ Python专属版本兼容性问题(pickle protocol) ✅ NumPy生态通用 但非Python语言需额外库(如C++需cnpy)
5. 数据结构灵活性 ❌ 仅支持表格(二维)复杂结构需拆表或JSON嵌入 ✅ 支持任意嵌套对象(dict/list/class) ⚠️ 仅支持命名数组(类似字典 of ndarray)不支持非数值类型(如字符串需编码)
6. 版本控制与差异比较 ✅ Git友好(文本diff) ❌ 二进制无法diff ❌ 二进制无法diff
7. 安全性 ✅ 安全(纯数据) ❌ 危险(可执行任意代码反序列化) ✅ 安全(仅数值数据)

三、在策略训练中机器人部署策略训练中的具体影响机器优缺点

CSV

适用场景:小规模原型验证、人工标注数据、需要人工检查的中间结果。
缺点:在大规模模仿学习或在线强化学习中,I/O 成为瓶颈;浮点精度损失可能导致策略性能下降(尤其在高维连续控制中)。
AMP适配成本高:需编写大量解析逻辑对齐时间戳、处理缺失值、转为张量。

维度 优点 缺点 与 AMP 适配性
存储与兼容性 1. 纯文本,跨平台 / 跨语言(Python/C++/MATLAB)兼容;
2. 可直接用文本编辑器查看 / 修改,调试成本低;
3. 无格式解析依赖,部署环境无需额外库。 1. 存储效率极低:文本存储比二进制大 5-10 倍,机器人海量轨迹数据会占用大量磁盘;
2. 仅支持基础数据类型(数值 / 字符串),无法直接存储多维数组(如机器人关节矩阵);
3. 解析耗时:文本转数值需逐行解析,训练前预处理慢。 弱适配:

  1. 无精度标识,AMP 需手动指定 FP16/FP32;
  2. 解析后需额外类型转换,增加 AMP 精度切换的冗余步骤;
  3. 文本无精度损失,但读写慢抵消 AMP 的加速收益。
    机器人训练场景适配 适合小批量、低维度数据(如策略参数配置、单条轨迹标签);
    适合多团队协作(易共享、易修改)。 不适合大规模机器人轨迹数据(如百万条关节采样点);
    不适合高维数据(如 6 轴机械臂位姿矩阵、点云数据)。 -
    部署友好性 部署端无需依赖第三方库,嵌入式系统(如 ROS 机器人)易集成。 大规模数据读取时 IO 瓶颈明显,拖慢策略训练迭代速度。

PKL

适用场景:快速实验迭代、保存完整训练上下文(如包含环境配置、策略网络状态)。
风险:若部署环境Python版本不同,可能无法加载;安全性差(不可用于生产环境接收外部数据)。
AMP集成方便:可直接保存 Trajectory(list[obs, act, rew]) 对象,但不利于长期维护。

维度 优点 缺点 与 AMP 适配性
存储与兼容性 1. 二进制格式,存储效率比 CSV 高,可直接存储高维数组(如机器人状态张量);
2. 支持任意 Python 对象,无需手动解析结构;
3. 读取速度比 CSV 快,预处理成本低。 1. 强依赖 Python,C++/ROS 部署端解析困难(需第三方库如pickle-cpp);
2. 版本兼容性差(Python 3.8 和 3.10 的 pkl 可能不兼容);
3. 安全性低,恶意 pkl 文件可能注入代码。 中等适配:

  1. 可序列化指定精度的数组(FP16/FP32),AMP 训练时可直接加载无需转换;
  2. 存储的对象类型与 AMP 兼容,但跨语言解析时易丢失精度信息;
  3. 批量加载时显存占用可控(AMP 的显存优化可发挥作用)。
    机器人训练场景适配 适合 Python 主导的训练流程(如 PyTorch/TensorFlow+AMP);
    适合存储带结构的训练数据(如轨迹 + 标签 + 策略参数)。 不适合跨语言部署的机器人系统(如 C++ 编写的机器人控制器);
    不适合长期存储(版本迭代易导致解析失败)。 -
    部署友好性 纯 Python 部署环境(如云端训练 + Python 推理)友好;
    重映射时可直接操作序列化的数组,无需格式转换。 嵌入式机器人部署(如 ARM 架构 + ROS)需额外适配,易出现解析错误。

NPZ

最佳实践推荐:最适合AMP策略训练的数据格式。
    支持多数组命名存储(如 arr_0=states, arr_1=actions 或 np.savez('data.npz', states=..., actions=...))
    加载后直接转为 torch.Tensor 或 tf.Tensor
    体积小、加载快、无安全风险
    与 PyTorch DataLoader / TensorFlow tf.data 兼容性好
局限:无法存储非数值元数据(如文本标签),需配合 JSON/YAML 使用。

维度 优点 缺点 与 AMP 适配性
存储与兼容性 1. 二进制压缩格式,存储效率最高(比 PKL 小 10-20%),适合海量高维数据;
2. 跨语言兼容性优于 PKL(C++ 可通过numpy-cpp/OpenCV 解析);
3. 支持指定数据类型(float16/float32),精度可控;
4. 读取速度极快,可直接映射到内存,IO 开销低。 1. 仅支持 NumPy 数组,无法存储复杂结构(如字典、自定义类);
2. 压缩 / 解压需额外计算资源,小数据场景反而耗时;
3. 纯文本不可读,调试时需先加载解析。 最优适配:

  1. 原生支持 float16/float32 类型,与 AMP 的混合精度完全匹配,加载后可直接用于训练;
  2. 内存映射(mmap)读取模式,结合 AMP 的显存优化,可大幅降低训练时的显存占用;
  3. 批量加载时精度无损失,AMP 的精度切换无冗余步骤。
    机器人训练场景适配 适合大规模、高维机器人训练数据(如关节轨迹、力控数据、视觉特征);
    适合 AMP 加速的高性能训练(如多 GPU 分布式训练)。 不适合存储带复杂结构的训练数据(需额外存储结构描述文件);
    小批量数据场景下,压缩解压的开销大于收益。 -

四、三种格式的核心对比表

对比维度 CSV PKL NPZ
存储效率 极低(文本) 中等(二进制) 极高(压缩二进制)
读取速度 慢(逐行解析) 较快(直接反序列化) 极快(内存映射)
AMP 适配性 弱(需手动转换精度) 中等(可序列化指定精度) 最优(原生支持 FP16/FP32)
跨语言兼容性 最优(纯文本) 差(仅 Python 友好) 较好(C++/Python/ROS 兼容)
机器人部署适配 小数据 / 简单场景友好 Python 部署场景友好 大规模 / 高维数据场景友好
调试成本 低(直接编辑) 中(需 Python 解析) 高(需加载后查看)

五、建议策略

表格

阶段 推荐格式 理由
数据采集/原始日志 ROS bag / HDF5 / 自定义二进制 保留原始精度与结构
重映射预处理后 NPZ + 辅助 JSON NPZ 存数值轨迹,JSON 存元信息(如坐标系、采样率)
快速原型调试 CSV(小样本) 便于人工验证对齐是否正确
模型检查点/完整上下文 PKL(仅限开发)或 Torch .pt 避免在生产中使用 PKL

六、总结

  • CSV:可读性强但性能差,适合调试,不推荐用于大规模AMP训练。适合机器人策略训练的小批量、低维度、跨团队协作场景,AMP 适配性差,不建议用于大规模训练,仅作为辅助配置存储。
  • PKL:灵活但危险且封闭,仅限开发阶段内部使用。适合纯 Python 技术栈的机器人训练(如 PyTorch+AMP),存储带复杂结构的数据,但部署端跨语言适配成本高,仅建议训练阶段使用。
  • NPZ:高效、安全、与深度学习框架无缝集成,是AMP机器人策略训练的最佳选择。是基于 AMP 的机器人部署策略训练最优选择,尤其适合大规模、高维数据场景,存储效率和 AMP 适配性最佳,跨语言部署也更友好,唯一缺点是调试成本稍高。

最佳实践:将重映射后的数据以 data.npz(含 states/actions/rewards) + metadata.json(含 frame_rate, coordinate_frame, normalization_params)形式存储,兼顾效率、安全与可解释性。训练阶段优先用 NPZ 存储重映射后的高维数据(发挥 AMP 加速优势),CSV 存储配置 / 标签类数据,PKL 仅作为临时数据格式;部署阶段将 NPZ 数据转换为部署端兼容的二进制格式(如 bin),兼顾效率和兼容性。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐