MindSpeed-LLM 0day 模型首发支持指南:GLM-4 / GLM-Z1 系列昇腾同步首发全流程实战

发布时间:2026/10/15 17:37:12
MindSpeed-LLM 0day 模型首发支持指南:GLM-4 / GLM-Z1 系列昇腾同步首发全流程实战
人工智能大模型分布式训练预训练微调模型推理服务强化学习Ascend【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址https://gitcode.com/Ascend/MindSpeed-LLM点击查看免费下载在模型发布的 Day-0首发当天即可在昇腾 NPU 上同步完成预训练、评估与推理是 MindSpeed-LLM 面向最新开源模型提供的“同步首发”能力。本文以仓库 tests/0day/README_en.md 为核心系统梳理 0day 系列GLM-4 与 GLM-Z1 共 6 个模型规格的支持清单、配套依赖、脚本目录与端到端跑通流程并结合仓库源码权重转换、模型 Spec、预训练脚本给出参数级解读帮助你理解“拿到新模型当天如何在昇腾集群上跑起来”的完整技术路径。一、0day 首发机制与认证含义“0day”指新模型官方权重公开发布的当天Day-0MindSpeed-LLM 即同步提供昇腾侧的适配脚本与配置缩短社区模型到昇腾平台的迁移周期。仓库通过“认证”标记表达支持成熟度Pass已经通过昇腾官方版本测试的模型Test当前处于待测试/内部测试阶段的模型。需要特别说明的是见模型脚本声明0day 首发的模型脚本仅支持基本功能跑通尚未完成充分的性能测试与验收测试实际使用中可能存在未被发现的问题。官方正式版本会在充分验证后另行发布——这是使用 0day 脚本前必须了解的前提。二、模型支持清单0day 首发以下模型均基于Megatron-CoreMCore实现序列长度为8K由Ascend贡献认证状态均为Test模型规格脚本位置序列实现集群贡献方认证GLM-49B8KMCore1x8AscendTestGLM-432B8KMCore4x8AscendTestGLM-432B-Base8KMCore4x8AscendTestGLM-Z19B8KMCore1x8AscendTestGLM-Z132B8KMCore4x8AscendTestGLM-Z1Rumination-32B8KMCore4x8AscendTest注以上 ModelScope 下载链接源自原文档权重请以模型官方发布渠道为准仓库内仅提供昇腾侧的适配脚本与配置。2.1 六个模型规格的脚本目录结构每个模型目录下均包含 6 个脚本覆盖从数据到权重的完整生命周期以 GLM-4-9B-0414 为例脚本作用ckpt_convert_glm4_0414_hf2mcore.shHuggingFace 权重 → Megatron-Core 权重HF→MGckpt_convert_glm4_0414_mcore2hf.shMegatron-Core 权重 → HuggingFace 权重MG→HFdata_convert_glm4_0414_pretrain.sh原始语料 → Megatron 索引格式数据集pretrain_glm4_9b_0414_8k_ptd.sh8K 序列预训练torchrun PTD 并行evaluate_glm4_9b_0414_ptd.sh下游任务评估默认 mmlugenerate_glm4_9b_0414_ptd.sh文本生成推理其余规格目录glm4-32b-0414、glm4-base-32b-0414、glm-z1-9b-0414、glm-z1-32b-0414、glm-z1-rumination-32b-0414结构与上述完全一致仅模型超参与并行配置不同。三、端到端跑通流程数据 → 权重 → 预训练 → 评估/推理0day 脚本的使用顺序建议如下每个环节都以仓库内脚本为可直接复制修改的模板。3.1 第一步数据预处理data_convert_glm4_0414_pretrain.sh 调用仓库根目录的preprocess_data.py把原始文本/parquet 语料转换为 Megatron 的索引数据集_text_document.idx# 请按照您的真实环境修改 set_env.sh 路径 source /usr/local/Ascend/ascend-toolkit/set_env.sh mkdir -p ./dataset/glm4_9b_0414_hf/ python ./preprocess_data.py \ --input ./dataset/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path ./model_from_hf/glm4_0414_hf/ \ --output-prefix ./dataset/glm4_9b_0414_hf/alpaca \ --workers 4 \ --log-interval 1000 \ --tokenizer-type PretrainedFromHF关键参数说明--tokenizer-type PretrainedFromHF直接从 HuggingFace 权重目录加载分词器无需单独构造 tokenizer 文件--tokenizer-name-or-path指向 HF 权重目录含tokenizer_config.json、tokenizer.model等--output-prefix生成的索引数据集前缀预训练脚本的--data-path即指向该前缀如./dataset/GLM-4-32B-0414/alpaca_text_document--workers 4并行预处理线程数可按节点算力调整。各规格的数据脚本结构一致仅输入文件与 tokenizer 路径不同例如 GLM-4-32B-0414 数据脚本、GLM-Z1-9B 数据脚本。3.2 第二步权重格式转换HF ↔ MG预训练需要 Megatron-Core 格式权重官方发布的原始权重为 HuggingFace 格式因此必须先转换。0day 脚本使用仓库根目录的统一转换入口 convert_ckpt_v2.pyHF → MGckpt_convert_glm4_0414_hf2mcore.shsource /usr/local/Ascend/ascend-toolkit/set_env.sh python convert_ckpt_v2.py \ --model-type-hf glm4_9b \ --load-model-type hf \ --save-model-type mg \ --target-tensor-parallel-size 2 \ --target-pipeline-parallel-size 4 \ --load-dir ./model_from_hf/GLM-4-9B-0414 \ --save-dir ./model_weights/MG → HFckpt_convert_glm4_0414_mcore2hf.shsource /usr/local/Ascend/ascend-toolkit/set_env.sh python convert_ckpt_v2.py \ --model-type-hf glm4_9b \ --load-model-type mg \ --save-model-type hf \ --load-dir ./model_weights/glm4_9b_0414_mcore/ \ --save-dir ./model_from_hf/glm4_9b_0414_hf/从源码看convert_ckpt_v2.py--load-model-type与--save-model-type的合法取值均为hf/mg据此在Hf2MgConvert与Mg2HfConvert之间分发见 convert_ckpt_v2.py。其余核心参数--model-type-hfHF 侧模型类型标识0day 模型对应的取值为glm4_9b9B 系与glm432B 系--target-tensor-parallel-size/--target-pipeline-parallel-size转换后权重切分的 TP/PP 维度必须与预训练脚本中的 TP/PP 配置一致9B 与 32B 均为 TP2、PP4--num-layer-listPP 各 stage 的层数分布仅 32B 系转换时显式指定如15,15,15,16对应 61 层拆到 4 个 PP stage见 GLM-4-32B-Base HF→MG 脚本--load-dir/--save-dir输入输出权重目录。转换完成后预训练脚本通过--load ${CKPT_LOAD_DIR}加载切分后的 MG 权重继续训练或用于后续评估/推理。3.3 第三步8K 序列预训练以 GLM-4-9B-0414 预训练脚本 为例其完整命令如下#!/bin/bash export CUDA_DEVICE_MAX_CONNECTIONS1 NPUS_PER_NODE8 MASTER_ADDRlocalhost MASTER_PORT6000 NNODES1 NODE_RANK0 WORLD_SIZE$(($NPUS_PER_NODE*$NNODES)) CKPT_SAVE_DIRyour model save ckpt path DATA_PATHyour data path TOKENIZER_PATHyour tokenizer path CKPT_LOAD_DIRyour model ckpt path TP2 PP4 DISTRIBUTED_ARGS --nproc_per_node $NPUS_PER_NODE \ --nnodes $NNODES \ --node_rank $NODE_RANK \ --master_addr $MASTER_ADDR \ --master_port $MASTER_PORT GPT_ARGS --spec mindspeed_llm.tasks.models.spec.gemma2_spec layer_spec \ --tensor-model-parallel-size ${TP} \ --pipeline-model-parallel-size ${PP} \ --sequence-parallel \ --use-mcore-models \ --use-flash-attn \ --post-norm \ --use-fused-rmsnorm \ --use-fused-swiglu \ --overlap-grad-reduce \ --overlap-param-gather \ --use-distributed-optimizer \ --num-layers 40 \ --hidden-size 4096 \ --ffn-hidden-size 13696 \ --num-attention-heads 32 \ --seq-length 8192 \ --micro-batch-size 1 \ --global-batch-size 64 \ --max-position-embeddings 8192 \ --padded-vocab-size 151552 \ --make-vocab-size-divisible-by 1 \ --group-query-attention \ --num-query-groups 2 \ --disable-bias-linear \ --add-qkv-bias \ --position-embedding-type rope \ --use-glm-rope \ --rotary-percent 0.5 \ --no-rope-fusion \ --normalization RMSNorm \ --swiglu \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path ${TOKENIZER_PATH} \ --lr 1.25e-6 \ --norm-epsilon 1e-05 \ --train-iters 2000 \ --lr-decay-style cosine \ --untie-embeddings-and-output-weights \ --attention-dropout 0.0 \ --init-method-std 0.01 \ --hidden-dropout 0.0 \ --no-masked-softmax-fusion \ --attention-softmax-in-fp32 \ --min-lr 1.25e-7 \ --weight-decay 1e-1 \ --lr-warmup-fraction 0.01 \ --clip-grad 1.0 \ --adam-beta1 0.9 \ --initial-loss-scale 4096 \ --adam-beta2 0.95 \ --no-load-optim \ --no-load-rng \ --no-gradient-accumulation-fusion \ --no-bias-swiglu-fusion \ --bf16 \ --ckpt-format torch DATA_ARGS --data-path ${DATA_PATH} \ --split 100,0,0 OUTPUT_ARGS --log-interval 1 \ --save-interval 2000 \ --eval-interval 2000 \ --eval-iters 0 \ torchrun ${DISTRIBUTED_ARGS} pretrain_gpt.py \ ${GPT_ARGS} \ ${DATA_ARGS} \ ${OUTPUT_ARGS} \ --load ${CKPT_LOAD_DIR} \ --save ${CKPT_SAVE_DIR} \ --distributed-backend nccl \ --transformer-impl local \ | tee logs/pretrain_glm4_9b_0414_8k_mcore.log3.3.1 并行策略与分布式参数TP2 / PP49B 在单机 8 卡1x8上2 路张量并行 × 4 路流水并行恰好铺满 8 卡32B 系则在 4 节点 32 卡4x8上运行NNODES4见 GLM-4-32B 预训练脚本--sequence-parallel开启序列并行把 LayerNorm/Dropout 区域的激活切分到 TP 组内降低激活显存--use-distributed-optimizer分布式优化器优化器状态按 TP 维度切分到各卡--overlap-grad-reduce/--overlap-param-gather梯度规约与参数聚合与计算重叠提升通信效率--transformer-impl local使用本地 Transformer 实现非 TransformerEngine与--use-flash-attn配合在昇腾上启用 FlashAttention 融合算子--distributed-backend nccl注意该参数名沿用 NVIDIA 生态命名在昇腾环境对应 NPU 集合通信后端驱动层由 torch_npu 屏蔽差异--num-layer-list 15,15,15,16仅 32B 系脚本使用把 61 层显式分配到 4 个 PP stage实现各 stage 负载均衡。3.3.2 模型结构与关键架构参数这些参数刻画了 GLM-4/GLM-Z1 的模型结构必须与官方权重一一对应不能随意修改参数GLM-4-9BGLM-4/GLM-Z1-32B 系说明--num-layers4061Transformer 层数--hidden-size40966144隐藏层维度--ffn-hidden-size1369623040FFN 中间层维度--num-attention-heads3248注意力头数--num-query-groups22Rumination 为 8GQA 查询组数--max-position-embeddings81928192 / 131072Base 与 Rumination位置编码上限--padded-vocab-size151552151552补齐后的词表大小--rotary-percent0.50.5GLM 系列 RoPE 旋转比例--norm-epsilon1e-051e-05RMSNorm epsilon其余结构与训练配置要点--use-glm-rope--rotary-percent 0.5--no-rope-fusionGLM 系列使用 50% 旋转比例的 RoPE 且不做算子融合这是 GLM 与 Llama 系100% RoPE的关键差异--post-normPost-Norm 结构配合下面的gemma2_spec--normalization RMSNorm--use-fused-rmsnormRMSNorm 归一化与融合实现--swiglu--use-fused-swigluSwiGLU 激活与融合算子--untie-embeddings-and-output-weightsembedding 与输出层权重解耦不共享--group-query-attention--num-query-groups 2GQA 注意力KV 头数少于 Q 头数--bf16--initial-loss-scale 4096BF16 混合精度训练--lr 1.25e-6/--min-lr 1.25e-7/--lr-decay-style cosine/--lr-warmup-fraction 0.011.25e-6 初始学习率 cosine 衰减 1% warmup--split 100,0,0数据全部用于训练0day 场景下不划分验证/测试集配合--eval-iters 0。3.3.3 各规格脚本差异速查规格集群TP/PP附加参数GLM-4-9B-04141x82/4--add-qkv-biasGLM-4-32B-04144x82/4--num-layer-list 15,15,15,16无--add-qkv-biasGLM-4-32B-Base-04144x82/4--max-position-embeddings 131072--num-layer-list 15,15,15,16GLM-Z1-9B-04141x82/4同 GLM-4-9B--save-interval 500GLM-Z1-32B-04144x82/4同 GLM-4-32BGLM-Z1-Rumination-32B-04144x82/4--num-query-groups 8--max-position-embeddings 131072--num-layer-list 15,15,15,163.4 第四步下游任务评估评估脚本 调用仓库根目录的evaluation.py对已训练/转换好的 MG 权重执行任务评估torchrun ${DISTRIBUTED_ARGS} evaluation.py \ --spec mindspeed_llm.tasks.models.spec.gemma2_spec layer_spec \ --post-norm \ --task-data-path ${DATA_PATH} \ --task ${TASK} \ --use-mcore-models \ --tensor-model-parallel-size 2 \ --pipeline-model-parallel-size 1 \ --num-layers 40 \ --hidden-size 4096 \ --ffn-hidden-size 13696 \ --num-attention-heads 32 \ --group-query-attention \ --num-query-groups 2 \ --seq-length 8192 \ --max-new-tokens 1 \ --max-position-embeddings 8192 \ ... --no-chat-template \ --load ${CHECKPOINT} \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path ${TOKENIZER_PATH} \ ... --bf16 \ --ckpt-format torch要点解读TASK默认配置为mmluDATA_PATH指向任务评测数据目录不同任务需要不同的--max-new-tokens取值脚本注释明确提示“请遵循 README 中的说明”进行调整评估阶段通常使用--pipeline-model-parallel-size 1仅 TP 切分以减少流水并行对评测吞吐的影响--no-chat-template0day 预训练模型为基座模型评测时不套用对话模板架构参数--num-layers、--hidden-size、--num-query-groups等必须与训练/转换时完全一致否则权重加载会失败--exit-on-missing-checkpoint权重文件缺失时立即报错退出避免静默错误。3.5 第五步文本生成推理生成脚本 调用inference.py执行单卡/双卡文本生成torchrun ${DISTRIBUTED_ARGS} inference.py \ --spec mindspeed_llm.tasks.models.spec.gemma2_spec layer_spec \ --tensor-model-parallel-size 2 \ --pipeline-model-parallel-size 1 \ --use-mcore-models \ --num-layers 40 \ --hidden-size 4096 \ --ffn-hidden-size 13696 \ --seq-length 8192 \ --group-query-attention \ --num-query-groups 2 \ ... --max-new-tokens 256 \ --load ${CHECKPOINT} \ --tokenizer-type PretrainedFromHF \ ... --bf16 \ --transformer-impl local \ --ckpt-format torch \ | tee logs/generate_glm4_9b_0414_mcore.log与评估脚本的差异主要在于--max-new-tokens 256生成长度、NPUS_PER_NODE2生成时仅用 2 卡、TP2其余架构参数保持一致。四、底层模型 Spec 源码解读为什么 GLM-4/GLM-Z1 使用 gemma2_spec0day 脚本统一通过--spec mindspeed_llm.tasks.models.spec.gemma2_spec layer_spec指定模型结构。该参数指向仓库内的 mindspeed_llm/tasks/models/spec/gemma2_spec.py它定义了一个基于Post-Norm结构的 Transformer Layer Spec层模块使用TransformerLayerWithPostNorm带 post-MLP LayerNorm 与 post-Attention LayerNorm 的变体对应脚本中的--post-norm归一化统一采用PTNormPrecision-Transformer Norm 包装底层为 RMSNorm 类归一化覆盖input_layernorm、pre_mlp_layernorm、post_mlp_layernorm、post_attn_norm对应脚本中的--normalization RMSNorm自注意力采用因果掩码AttnMaskType.causalQKV 为ColumnParallelLinear输出投影为RowParallelLinear与脚本中 TP2 的张量并行切分方式一致MLP 子模块由_get_mlp_module_spec生成use_teFalse表示不使用 TransformerEngine 实现对应脚本的--transformer-impl local提供sharded_state_dict_keys_map完成注意力/MLP 内部 LayerNorm 权重的 key 映射input_layernorm.↔self_attention.linear_qkv.layer_norm_等这是 MG 权重可以正确加载/保存的关键机制。从源码结构可以推断GLM-4 / GLM-Z1 系列采用与 Gemma2 相同的 Post-Norm 层内双 LayerNorm 布局因此直接复用gemma2_spec而无需为每个模型单独编写 Spec 文件——这也是 0day 适配能快速交付的原因之一。五、配套版本与依赖说明原文档明确给出 0day 模型的依赖配套注意昇腾底层组件当前均为“在研版本”依赖软件版本昇腾 NPU 驱动在研版本昇腾 NPU 固件在研版本Toolkit开发套件在研版本Kernel算子包在研版本NNALAscend Transformer Boost 加速库在研版本Python3.10PyTorch2.5torch_npu 插件2.5apex2.5transformers4.51.3使用前提需安装昇腾 NPU 驱动、固件与 CANN 工具链Toolkit/Kernel并source /usr/local/Ascend/ascend-toolkit/set_env.sh完成环境初始化0day 脚本均内置该步骤Python 3.10 PyTorch 2.5 torch_npu 2.5 apex 2.5 为脚本验证过的软件栈transformers4.51.3与官方参考实现对齐见下节tokenizer 加载依赖该版本行为由于驱动/固件/工具链处于在研状态建议以昇腾官方渠道发布的配套版本为准不要混用不同版本组合。六、版本声明与参考实现6.1 参考实现0day 模型的适配以上述 transformers 版本为参考基线# 参考实现HuggingFace transformers v4.51.3 分支 commit_id5f4ecf2该参考实现用于对齐模型结构、分词器行为与权重组织方式MindSpeed-LLM 侧则通过 convert_ckpt_v2.py 与 gemma2_spec.py 完成格式与结构映射。6.2 变更记录2025-04-22首次发布。首批 0day 模型GLM-4 三规格 GLM-Z1 三规格上线提供预训练/评估/推理/权重转换全套脚本。七、使用限制与注意事项结合模型脚本声明与脚本实际情况使用 0day 系列脚本时请注意功能保底性能未验证当前脚本仅保证基本功能跑通未完成充分的性能测试与验收测试实际使用中可能遇到未被发现的问题认证状态为 Test表中所有模型均为Test待测试状态正式版本待充分验证后另行发布生产环境使用前请关注后续更新路径必须按环境修改脚本中的CKPT_SAVE_DIR、DATA_PATH、TOKENIZER_PATH、CKPT_LOAD_DIR为占位符或示例路径运行前必须替换为真实路径并行配置一致性权重转换时的--target-tensor-parallel-size/--target-pipeline-parallel-size/--num-layer-list必须与预训练、评估、推理脚本中的 TP/PP 完全一致架构参数不可改动--num-layers、--hidden-size、--num-query-groups等结构参数由模型权重决定仅可调整学习率、batch size、训练轮次等训练策略参数评测 max-new-tokens不同评测任务需按任务说明调整--max-new-tokens错误取值会导致评测指标失真。八、小结0day 系列是 MindSpeed-LLM 在昇腾平台上“模型发布即同步支持”的落地范式以tests/0day/下每个模型的 6 个脚本为骨架覆盖数据预处理、HF↔MG 权重转换、8K 序列预训练、任务评估与文本生成五个环节以gemma2_spec.py与convert_ckpt_v2.py为源码级支撑复用 Post-Norm Transformer Spec 与统一转换框架快速适配新模型。对希望在新模型发布的当天就在昇腾集群上跑通预训练的开发者而言直接以任一 0day 模型目录为模板、按本文流程替换路径与数据即可复现完整的 Day-0 首发流程。赞分享人工智能大模型分布式训练预训练微调模型推理服务强化学习Ascend【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址https://gitcode.com/Ascend/MindSpeed-LLM点击查看免费下载相关推荐MindSpeed-LLM 模型支持列表全解析稠密、稀疏与状态空间模型的昇腾训练指南MindSpeed LLM 模型支持列表全解析稠密、稀疏与状态空间模型的昇腾训练指南 本文以 MindSpeed LLM 官方模型支持列表 docs/zh/人工智能大模型分布式训练预训练微调模型推理服务强化学习Ascend5 分钟做出一条完整短视频AI 短视频生成工具 Pixelle-Video 上手指南5 分钟做出一条完整短视频AI 短视频生成工具 Pixelle Video 上手指南 你想发一条视频但写文案、做画面、配解说、剪成片前后要花一个下午。Pi人工智能AI 应用音视频媒体生成did_you_mean性能优化从基准测试到生产环境的最佳实践did_you_mean性能优化从基准测试到生产环境的最佳实践 did_you_mean 作为一款自2014年起就帮助开发者避免拼写错误的Ruby gem其开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考