跳转至

存储系统

大模型任务需要持续读取数据集、保存检查点并分发权重。存储设计不当会让 GPU 等待数据,也会延长故障恢复时间。

快速开始

按访问模式选择存储:训练进程的临时缓存放在本地 NVMe,共享检查点和预处理数据放在分布式文件系统,原始数据与归档权重放在对象存储。不要让所有训练进程直接并发读取大量小对象。

三类存储

类型 优点 局限 适合内容
NVMe 延迟低、单机吞吐高 容量和共享能力有限 缓存、临时分片、编译产物
分布式文件系统 提供共享目录和并行读写 元数据和小文件可能成为瓶颈 训练数据、检查点
对象存储 容量大、耐久性高、接口统一 随机读和大量小对象效率较低 原始数据、模型归档、备份

数据布局

将大量样本打包成尺寸适中的顺序读取分片,通常比逐个读取小文件更高效。分片还应支持确定性打乱、断点恢复和数据版本追踪。训练前可把热数据预取到节点本地 NVMe,减少远程存储抖动。

检查点案例

分布式训练保存检查点时,可让各 rank 写入自己的状态分片,再由清单文件记录完整版本。写入完成前先使用临时名称,全部分片成功后再原子发布清单,避免故障产生看似完整但实际缺失的检查点。

检查点应包含模型参数、优化器状态、学习率调度器、随机数状态、数据位置和训练配置。仅保存权重通常无法精确恢复训练。

模型与数据基础设施负责保存、版本化、下载和分发权重、配置、Tokenizer 与数据集。

快速开始

下载模型前确认仓库、许可证、revision 和文件格式。使用 Hugging Face 或 ModelScope 时固定提交版本,并记录模型配置、Tokenizer、生成配置和数据集版本,避免同一个名称在不同时间得到不同结果。

具体命令见 Hugging Face。

模型文件格式

格式 特点 常见用途
Safetensors 只保存张量,支持安全、快速加载 Transformers 权重分发
PyTorch checkpoint 可保存任意 Python 对象 可信环境中的训练状态
GGUF 面向 llama.cpp 生态,包含量化与元数据 本地 CPU / GPU 推理
ONNX 跨框架计算图 通用部署与图优化

从不可信来源获取文件时,优先使用不执行任意对象反序列化的格式。训练检查点若必须包含 Python 对象,只能在可信环境加载。

数据集存储

数据集版本应记录原始来源、许可证、清洗规则、去重参数、分片清单与内容哈希。原始层保持不可变,加工结果写入新版本。训练配置只引用固定版本,不能引用会变化的“最新版”。

发布案例

发布微调模型时至少包含权重、模型配置、Tokenizer、提示模板、许可证、基座模型、训练数据说明和评测结果。若只上传权重而遗漏聊天模板,相同模型在不同客户端可能产生明显不同的行为。