资讯动态

FSDP/Megatron ↔ HF 检查点转换:NLA tools/ 工具链完整指南(FP8 / INT4 / MXFP8)

发布时间:2026/10/23 1:50:32 来源:尧图企业网站定制
【免费下载链接】natural_language_autoencoders项目地址https://gitcode.com/gh_mirrors/na/natural_language_autoencoders点击查看免费下载natural_language_autoencodersNLANatural Language Autoencoders是 Anthropic 可解释性研究「用自然语言解释 LLM 激活向量」的完整训练仓库。它把大模型残差流向量变成自然语言描述AV再从描述还原向量AR。训练完成后你面对的通常是一堆FSDP / Megatron 分布式检查点而推理如 SGLang 服务需要Hugging Face 格式部署大模型还常要FP8 / INT4 / MXFP8 量化。NLA 在 tools/ 目录下提供了 8 个开箱即用的检查点转换脚本覆盖「训练格式 ↔ HF 格式」互转与 3 种量化的完整闭环。本文带你逐一掌握这套工具链。一、为什么需要检查点转换NLA 的训练栈构建在 MilesFSDP2 / Megatron 后端之上7B / 12B / 27B 模型用 FSDP 后端训练产出的检查点是 DCPtorch.distributed.checkpoint格式的iter_xxx目录HF 推理框架无法直接加载Llama-70B 用 Megatron 后端TP PP产出的检查点是torch_dist格式按层/专家/并行维度切分推理与发布需要标准 HFsafetensors目录config.jsonmodel-xxxx.safetensors tokenizer每个检查点还附带nla_meta.yamlsidecar 记录 prompt 模板、注入 token ID 与缩放因子。因此「检查点转换」是 NLA 工作流中训练和推理之间的必经环节。二、tools/ 工具链总览8 个脚本一张表脚本方向用途tools/convert_fsdp_to_hf.pyFSDP (DCP) → HFMiles FSDP 训练后的iter_xxx一键转 HFtools/convert_hf_to_torch_dist.pyHF → Megatron用 HF 基座模型初始化 Megatron 训练检查点tools/convert_torch_dist_to_hf.pyMegatron → HF单机离线解析torch_dist检查点转 HFtools/convert_to_hf.pyMegatron → HF多卡在线分布式 gather 转换支持逐参数校验tools/convert_hf_to_fp8.pyHF → FP8BF16 权重转 FP8block / channel / tensor 三种策略tools/convert_hf_to_mxfp8.pyHF → MXFP8转 MXFP8UE8M0 缩放与 SGLang 内核布局对齐tools/convert_hf_to_hf_int4.pyHF → INT4GPTQ W4A16 校准量化tools/fp8_cast_bf16.pyFP8 → BF16反向去量化用于不支持 FP8 的环境三、FSDP → HFconvert_fsdp_to_hf.py最常用路径Miles FSDP 训练AV 的 SFT / GRPO RL保存的iter_xxx目录就是 DCP 检查点。转换命令只需三个参数python tools/convert_fsdp_to_hf.py \ --input-dir /path/to/actor/iter_0004000 \ --output-dir /path/to/actor_hf/iter_0004000 \ --origin-hf-dir Qwen/Qwen2.5-7B-Instruct \ --force参数说明见 tools/convert_fsdp_to_hf.py--input-dirDCP 检查点目录可传iter_xxx或iter_xxx/model会自动探测--output-dir输出 HF 目录已存在时需加--force覆盖--origin-hf-dir原始 HF 模型目录用于提供 config / tokenizer 等资产脚本还会把 tokenizer 等非权重文件自动拷贝到输出目录copy_assets。三个值得了解的细节键名前缀自动剥离DCP 键名常带model_state./module.等包装前缀工具会枚举候选前缀并选取与 HF 骨架匹配数最多者_strip_best_prefix。Gemma 多模态包装器自动识别Gemma-3 的 config 带text_config而 NLA 实际保存的是纯文本 CausalLM工具会自动改用文本子配置构建骨架避免「静默加载成随机初始化」的坑_resolve_skeleton_config。dtype 修复DCP 本身是 fp32骨架模型的torch_dtype可能为空SGLang 加载会报 dtype 不匹配。工具会从 DCP 张量取真实 dtype 并写回 configtools/convert_fsdp_to_hf.py。⚠️ 注意转换产物可能是 fp32 体积约 2 倍下游加载时可按需torch_dtypetorch.bfloat16NLA 的 ref model 加载就是如此处理的nla/train_actor.py。四、Megatron ↔ HFLlama-70B 级别的三条转换路径Megatron 路线用于 Llama-70B 级别的训练涉及「HF 初始化 → torch_dist 保存 → 转回 HF」三个方向。1. HF → Megatron torch_distconvert_hf_to_torch_dist.py训练前的准备脚本从 HF 基座模型构建 Megatron 分布式检查点。通过mbridge把 HF 权重加载进 Megatron 模型并保存为torch_dist格式自动按层数推算 pipeline 并行度world_size必须 ≤ 层数打了一个FP32 保精度补丁_weight_to_mcore_format在转换_keep_fp32参数时保持原精度tools/convert_hf_to_torch_dist.py支持 ROCm自动替换FileSystemWriterAsync。NLA 专属参数--nla-model-is-critic源码ARcritic模型把 Megatron 的output_layer替换为[d, d] Identity使torch_dist检查点与训练时的 model_provider 结构一致。配套的截断检查点由 nla/scripts/prepare_critic_checkpoint.py 生成——它把基座模型截断到第 K 层去掉lm_head与最终 LNvalue_head用单位阵初始化并可加--megatron-compat写入 mbridge 兼容键--megatron-compat 说明。2. Megatron → HF单机离线convert_torch_dist_to_hf.py训练结束后把torch_dist目录离线转成 HFsafetensors无需多卡python tools/convert_torch_dist_to_hf.py \ --input-dir /path/to/llama70b/iter_0024000 \ --output-dir /path/to/llama70b_hf/iter_0024000 \ --origin-hf-dir Llama/Llama-3.3-70B-Instruct \ --vocab-size 128256 \ --force要点tools/convert_torch_dist_to_hf.py从检查点的common.pt读取 Megatron 训练参数层数、专家数等把合并存储的层参数 / MoE 专家参数逐个拆开还原--vocab-size用于去掉 Megatron 的词表 padding 行输出按--chunk-size默认 5GB切分为多个model-xxxxx-of-yyyyy.safetensors并生成model.safetensors.index.json。3. Megatron → HF多卡在线convert_to_hf.py权重留在 GPU 上按TP / PP / EP 并行组在线 gather后转换适合超大模型单机放不下磁盘中间态的场景。基于 Miles 的 Megatron 后端运行新增参数--output-dir保存转换后的 HF 模型--check-same与原始 HF 模型逐参数比形状和数值校验转换正确性--check-same 逻辑——建议转换后先跑一次校验再上线。此外NLA 训练中的 criticAR模型有专门的在线 HF 导出路径 nla/megatron/checkpoint.py复用 SGLang 权重同步的 gather 管线把lm_head.weight重定向为value_head.safetensors产出与NLACriticModel.from_pretrained完全兼容的 HF 目录。五、模型瘦身FP8 / MXFP8 / INT4 量化转换转成 HF 格式后若要部署 70B 级模型可继续在 tools/ 里做量化。1. BF16 → FP8convert_hf_to_fp8.pypython tools/convert_hf_to_fp8.py \ --model-dir /path/to/hf_bf16 \ --save-dir /path/to/hf_fp8 \ --strategy block \ --block-size 128 128 \ --max-workers 4--strategy三种量化粒度tools/convert_hf_to_fp8.pyblock默认分块量化--block-size指定块大小精度与压缩率最均衡channel/tensor逐通道 / 整张量一个 scale输出走 compressed-tensors 格式自动跳过不宜量化的模块layernorm、embedding、router、mlp.gate、lm_head 等并写入modules_to_not_convert转换结果写回config.json的quantization_config并重建model.safetensors.index.jsonSGLang / vLLM 可直接加载多线程处理分片--max-workers。2. BF16 → MXFP8convert_hf_to_mxfp8.pypython tools/convert_hf_to_mxfp8.py \ --model-dir /path/to/hf_bf16 \ --save-dir /path/to/hf_mxfp8MXFP8 采用1×32 分组 UE8M0 缩放因子quantization_configscale 布局与 SGLang 的 Triton 量化内核镜像对齐可直接被推理引擎消费依赖 SGLang 的mxfp8_group_quantize且必须在 CUDA 设备上运行自动跳过 1D 权重、末维不被 32 整除的张量与 norm / embed 等敏感模块。3. BF16 → INT4convert_hf_to_hf_int4.py基于 LLM Compressor 的GPTQ离线量化支持--quant-type W4A16 / W8A16需要提供--data-dir校准数据集读取其中train-00000-of-00001.parquet的text列随机抽--num-calibration-samples条、每条--max-sequence-length个 token--quant-group-size默认 32、--dampening-frac默认 0.01GPTQModifier 配置自动忽略lm_head、norm、embedding、注意力投影等模块。 校准数据建议用与目标任务同分布的文本NLA 训练本身就产出 parquet 语料可复用其 Stage 0 提取前的原始文本。4. FP8 → BF16fp8_cast_bf16.py反向去量化目标环境不支持 FP8 内核时把 FP8 检查点还原为 BF16python tools/fp8_cast_bf16.py \ --input-fp8-hf-path /path/to/hf_fp8 \ --output-bf16-hf-path /path/to/hf_bf16用 Triton 内核按_scale_inv反量化 FP8 权重weight_dequant_kernel同步更新 index 文件并复制 config / tokenizer。六、实操技巧与常见坑位 先校验再发布Megatron 路径转换后用--check-same比对原始 HF 模型FSDP 路径转换后重点看日志里的Missing keys非空即说明骨架不匹配权重是随机初始化。fp32 体积翻倍DCP 原生 fp32转出的 HF 检查点可能比 BF16 大一倍下游推理侧显式指定torch_dtypetorch.bfloat16加载即可。Gemma-3 用户FSDP 转换脚本已自动处理多模态包装器问题无需手工改 config但推理时记得 Gemma 的 embed 缩放与--attention-backend fa3等特殊处理详见 docs/inference.md。criticAR模型不是标准 CausalLM它没有lm_head/ 最终 LNvalue_head独立存放。初始化 Megatron 检查点时务必加--nla-model-is-critic配合--megatron-compat生成的兼容键。保留 sidecar发布检查点必须带nla_meta.yamlprompt 模板、注入 token ID、缩放因子公开前用 release/hf_stage_and_scrub.py 清洗内部路径。输出目录冲突所有转换工具都要求--output-dir / --save-dir不存在FSDP / torch_dist 路径用--force覆盖脚本失败重试时先清理残留目录。七、延伸阅读docs/design.mdNLA 训练系统设计FSDP / Megatron 双后端、AV/AR 双模型调度docs/setup.mdMiles SGLang NLA 环境安装docs/inference.md转换后检查点的 SGLang 推理与 AR 打分configs/TRAINING_NOTES.md各规模模型训练配置与超参笔记examples/四个已发布检查点的真实解码示例release/hf_stage_and_scrub.py检查点发布前的暂存与元数据清洗掌握以上 8 个脚本后你就能在「Miles 训练产出 → HF 推理部署 → 低精度量化上线」之间自由切换完整跑通 NLA 从训练到发布的全链路。赞分享【免费下载链接】natural_language_autoencoders项目地址https://gitcode.com/gh_mirrors/na/natural_language_autoencoders点击查看免费下载相关推荐Megatron-LM Megatron-FSDP 实战指南从 Llama 3 8B 单机 FP8 训练到 DeepSeek-V3 671B 多节点训练与检查点转换Megatron LM Megatron FSDP 实战指南从 Llama 3 8B 单机 FP8 训练到 DeepSeek V3 671B 多节点训练与检查人工智能大模型预训练分布式训练强化学习从HF检查点到GGUF的完整转换流程Confucius4-T3PO-GGUF转换过程逐字复现从HF检查点到GGUF的完整转换流程Confucius4 T3PO GGUF转换过程逐字复现 Confucius4 T3PO GGUF 是对中英双向流式同传翻GPT-NeoX 检查点工具链实战指南检查、格式转换与多卡权重合并GPT NeoX 检查点工具链实战指南检查、格式转换与多卡权重合并 GPT NeoX 的检查点工具位于仓库 tools/ckpts/ https://link深度学习NLP大模型分布式训练预训练上一篇用 Agno Environments 搭建你的第一个评测环境以 K 次滚动网格衡量 Agent 可靠性下一篇MateChat Angular Prompt 组件完全指南用 matechat/ng 打造猜你想问快捷提示词创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑