人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载本篇技术指南以 Megatron-LM 文档 api-guide/models.rst 为主线深入剖析megatron.core.models包中主流 LLMGPT、BERT、T5、Retro的实现结构并结合仓库源码说明模型并行Tensor/Pipeline/Data Parallel、Mixture of Experts、FP8、分布式优化器等特性如何在模型中落地。读完本文你将掌握 Megatron-LM 模型包的模块划分、各模型类的关键构造参数与 forward 调用链并能基于示例脚本直接启动对应模型的分布式训练。一、models 包总览一个容纳主流 LLM 的模型仓库megatron.core.models是 Megatron-LM 的模型实现包。按官方文档 models.rst 的说明该包包含当前最流行的一批大语言模型目前已支持 GPT、BERT、T5 与 Retro且列表仍在持续扩充This is an ever growing list so keep an eye out。从实际目录结构看包内子模块远不止这四类子包说明关键源码gpt/GPT 类 decoder-only 模型含 MoE、MLA、异构层等扩展gpt_model.pybert/BERT 类 encoder-only 模型可选分类二值头bert_model.pyT5/T5 类 encoder-decoder 模型t5_model.pyretro/检索增强的 Retro 模型继承 GPTModelmodel.pymamba/Mamba 状态空间语言模型支持混合注意力/MLP 层mamba_model.pymultimodal/LLaVA 等多模态模型llava_model.pyhuggingface/与 HuggingFace 模型互操作的模块module.py注意models.rst 中的 toctree 只收录了models.gpt、models.t5、models.bert三个子页对应 models.gpt.rst、models.t5.rst、models.bert.rst而源码中已新增 Mamba、多模态等实现——文档页面更新滞后于源码这一点在阅读时需要注意。1.1 公共组件common 目录所有语言模型共享一批基础构件集中在 models/common 下embeddings/LanguageModelEmbedding词嵌入、RotaryEmbeddingRoPE、YarnRotaryEmbeddingYaRN 扩展旋转位置编码、MultimodalRotaryEmbeddingmRoPE与RelativePositionEmbeddingT5 相对位置编码。language_module/LanguageModule是所有语言模型GPT/BERT/T5/Mamba/Retro的公共基类提供了setup_embeddings_and_output_layer等共享逻辑各模型通过它复用嵌入与输出层的初始化、权重共享等机制。vision_module/与model_chunk_schedule_plan.py为多模态模型与 pipeline 调度提供支撑。1.2 模块化规格ModuleSpec 机制Megatron-LM 的模型采用规格Spec驱动架构TransformerLayer等结构通过ModuleSpec声明其内部子模块如 attention、MLP 使用哪个具体实现由transformer_block.TransformerBlock统一装配。例如 GPT 的层规格定义在 gpt_layer_specs.pyMoE 层规格在 moe_module_specs.py。这种设计使得同一模型骨架可以插拔不同的 attention 后端flash/fused/unfused/local、不同的 MLP 实现标准 MLP、MoE 专家网络、共享专家是支撑 FP8、MLA、MoE 等众多特性的基石。二、GPTdecoder-only 架构与并行、MoE、FP8 特性官方文档 models.gpt.rst 明确指出GPT 模型支持模型并行化Tensor Parallel、Pipeline Parallel、Data Parallel、Mixture of Experts、FP8、分布式优化器等特性并处于持续演进中。核心实现位于 gpt_model.py 的GPTModel类。2.1 GPTModel 核心构造参数GPTModel继承自LanguageModule构造参数均带默认值包括参数默认值说明config: TransformerConfig必填Transformer 全局配置层数、隐藏维度、注意力头数等transformer_layer_spec: ModuleSpec必填Transformer 层使用的模块规格vocab_size必填词表大小max_sequence_length必填最大序列长度用于位置嵌入pre_processTrue是否包含 embedding 层配合 pipeline 并行post_processTrue是否包含输出层配合 pipeline 并行fp16_lm_cross_entropyFalse是否在 fp16 下计算 LM 交叉熵parallel_outputTrue是否不聚合输出、让 logits 按 TP 秩切分省通信share_embeddings_and_output_weightsFalse输入嵌入与输出 logit 权重是否共享position_embedding_typelearned_absolute位置嵌入类型可取值learned_absolute/rope/mrope/yarn/nonerotary_percent1.0RoPE 使用的旋转维度百分比rotary_base10000RoPE 的基周期rope_scaling/rope_scaling_factorFalse/8.0是否启用 RoPE 缩放及缩放因子mtp_block_specNone多 Token 预测MTP块规格非 None 时启用 MTPpg_collectionNone模型通信进程组集合从 gpt_model.py 的初始化逻辑可以看到模型内部结构Embeddingpre_processTrue时构建LanguageModelEmbedding并可通过scatter_embedding_sequence_parallel决定是否把嵌入按序列并行区域切分位置编码按position_embedding_type分支选择RotaryEmbeddingRoPE、YarnRotaryEmbeddingYaRN、MultimodalRotaryEmbeddingmRoPE或学习式绝对位置嵌入RoPE 相关张量会存入缓存rotary_pos_emb_cache以跨迭代复用Decoder核心是TransformerBlock接收transformer_layer_spec与pre_process/post_process标志配合 pipeline 并行在部分 rank 上只构建中间层MTP 块若传入mtp_block_spec会额外构建MultiTokenPredictionBlockOutputpost_processTrue时构建ColumnParallelLinear输出层parallel_outputTrue时 logits 保持 TP 切分、不做 all-gather开启defer_embedding_wgrad_compute时会使用 embedding 激活/梯度缓冲以延后计算嵌入权重梯度配合 pipeline flush 阶段。2.2 forward 调用链与推理优化GPTModel.forwardgpt_model.py的流程为_preprocess嵌入 位置编码预处理→decoderTransformerBlock→_postprocess可选MTP 输出、输出层与损失计算。其中值得注意的细节推理模式下inference_context非空且非训练支持flash decode与flashinfer fused RoPE预计算 cos/sin 并缓存避免逐 token 重复计算支持packed_seq_params打包序列、sequence_len_offset处理增量解码支持 CUDA Graphcuda_graph_impl/cuda_graph_scope与静态批处理is_static_batching条件判断支持细粒度激活卸载fine_grained_activation_offloading在preprocess_for_fine_grained_offloading中初始化 chunk handler 并控制参数级offloading_activation标志。2.3 GPT 的并行与 FP8 特性来源并行GPTModel 通过pg_collectionProcessGroupCollection持有 tp/cp/pp 进程组parallel_state与tensor_parallel模块提供了张量并行的 column/row 切分TransformerConfig中tensor_model_parallel_size、pipeline_model_parallel_size、virtual_pipeline_model_parallel_size等字段驱动数据/张量/流水线并行与虚拟流水线VP调度。MoE层规格支持将 MLP 替换为MoELayer专家网络使用 grouped GEMMmoe_grouped_gemm或 legacy 版本并可叠加SharedExpertMLP共享专家见 moe_module_specs.py。FP8TransformerConfig提供fp8可取值如delayed延迟缩放、mxfp8等、fp8_recipe、fp8_paramfp8 权重存储以省显存、fp8_margin、fp8_interval、fp8_amax_history_len、fp8_wgrad、fp8_dot_product_attention等配置见 transformer_config.pyget_quant_config_or_none会按量化配方为各模块完成 fp8 初始化module.finish_init(quant_config)。分布式优化器TransformerConfig中use_distributed_optimizer开启分布式优化器将优化器状态按数据并行秩切分配合dist_checkpointing完成分片 checkpoint 的保存/加载。2.4 实战用示例脚本训练 GPT仓库提供了可直接运行的分布式训练脚本 train_gpt3_175b_distributed.sh。其核心参数组包括GPT_MODEL_ARGS( --num-layers 96 --hidden-size 12288 --num-attention-heads 96 --seq-length 2048 --max-position-embeddings 2048 --attention-backend auto # Can use (flash/fused/unfused/local) ) TRAINING_ARGS( --micro-batch-size 1 --global-batch-size 1536 --rampup-batch-size 16 16 5859375 --train-iters 500000 --weight-decay 0.1 --adam-beta1 0.9 --adam-beta2 0.95 --init-method-std 0.006 --clip-grad 1.0 --fp16 --lr 6.0e-5 --lr-decay-style cosine --min-lr 6.0e-6 --lr-warmup-fraction .001 --lr-decay-iters 430000 ) MODEL_PARALLEL_ARGS( --tensor-model-parallel-size 8 --pipeline-model-parallel-size 16 )该示例以 8 路张量并行 16 段流水线并行训练 96 层、hidden 12288 的 175B 级模型--attention-backend auto会自动选择合适的 attention 后端。启动方式为torchrun --nproc_per_node 8 --nnodes 1 --master_addr localhost \ --master_port 6000 pretrain_gpt.py \ ${GPT_MODEL_ARGS[]} ${TRAINING_ARGS[]} \ ${MODEL_PARALLEL_ARGS[]} ${DATA_ARGS[]} ${EVAL_AND_LOGGING_ARGS[]}三、BERTencoder-only 架构与可选的分类二值头官方文档 models.bert.rst 说明BERT 子包用于训练 BERT 及 BERT 类 encoder-only 模型可选配一个二值头binary head以用于分类任务。核心实现在 bert_model.py 的BertModel。3.1 BertModel 关键参数与结构BertModel构造参数与 GPT 高度类似额外包含num_tokentypes默认 0当--bert-binary-head开启add_binary_headTrue时应设为 2用于区分输入的两个 segment即 token type 嵌入add_binary_head默认True是否添加分类二值头return_embeddings若为True要求post_process且add_binary_head同时成立。初始化结构bert_model.pypre_process时构建LanguageModelEmbedding可传入num_tokentypes以支持 token type 嵌入位置嵌入支持learned_absolute与rope两种编码器为TransformerBlock无 decoderpost_process时构建BertLMHeadbert_lm_head.py与ColumnParallelLinear输出层add_binary_headTrue时额外构建Poolerpooler.py与一个hidden_size → 2的线性二值头用于下一句预测NSP等二分类任务。3.2 注意力 mask 维度的版本兼容BertModel中有一段专门的_sanity_check_attention_and_get_attn_mask_dimensionbert_model.py用于根据 TransformerEngineTE版本与 attention 后端判断 mask 形状使用本地MCoreDotProductAttention时 mask 为[b,1,s,s]记为b1ssTE 1.10 时三种后端均支持 padding mask 的[b,1,s,s]TE 1.7~1.10Flash/Fused attention 用[b,1,1,s]Unfused 用[b,1,s,s]TE 1.7仅 Unfused 支持 padding mask。这一逻辑保证了 BERT 在多种 TE 版本、不同 attention 后端flash/fused/unfused/local下 mask 形状正确是实践中最易踩坑的兼容性问题之一。3.3 实战训练 BERT 340M示例脚本 train_bert_340m_distributed.sh 展示了 24 层、hidden 1024、16 头的 BERT-Large 规模训练配置BERT_MODEL_ARGS( --num-layers 24 --hidden-size 1024 --num-attention-heads 16 --seq-length 512 --max-position-embeddings 512 --attention-backend auto # Can use (flash/fused/unfused/local) ) TRAINING_ARGS( --micro-batch-size 4 --global-batch-size 32 --train-iters 1000000 --weight-decay 1e-2 --clip-grad 1.0 --fp16 --lr 0.0001 --lr-decay-style linear --min-lr 1.0e-5 --lr-warmup-fraction .01 )同样采用--tensor-model-parallel-size 8 --pipeline-model-parallel-size 16入口脚本为pretrain_bert.py。四、T5encoder-decoder 架构与多种位置编码官方文档 models.t5.rst 描述了core.models.T5包。核心实现位于 t5_model.py包含T5LMHead与T5Model两个类。4.1 T5Model 的双 TransformerBlock 结构T5Model的构造参数t5_model.py相比 GPT 增加了encoder_config/transformer_encoder_layer_spec/transformer_decoder_layer_spec编码器与解码器分别使用独立的 config 与层规格position_embedding_type支持learned_absolute、rope、relative三种relative_attention_num_buckets默认 32与relative_attention_max_distance默认 128T5 相对位置编码的桶数与最大距离add_encoder/add_decoder配合 pipeline 并行决定编码器/解码器只在部分 pipeline rank 上构建内部标志xattn_needed True告知调度器编码器输出与解码器之间存在 skip 连接反向传播需要同时持有两端张量。初始化结构t5_model.pypre_process时构建共享LanguageModelEmbedding按位置编码类型构建RotaryEmbeddingrope或编码器/解码器各自的RelativePositionEmbeddingrelative编码器双向、解码器单向构建两个独立的TransformerBlockself.encoder使用encoder_config与self.decoder使用configpost_process时构建T5LMHead内部是ColumnParallelLinear输出层。4.2 forward 的跨注意力细节T5Model.forwardt5_model.py同时接收encoder_input_ids、decoder_input_ids、encoder_attn_mask、decoder_attn_mask、encoder_decoder_attn_mask编码器-解码器跨注意力 mask。相对位置编码场景下attention bias 需要先按 TP 秩 scatterscatter_to_tensor_model_parallel_region再参与注意力计算。同时 T5 支持传入encoder_hidden_states复用编码器输出、以及output_encoder_hidden_only只取编码器隐藏状态。4.3 实战训练 T5 220M示例脚本 train_t5_220m_distributed.sh 展示了 T5 特有的参数组T5_ARGS --encoder-num-layers 12 \ --decoder-num-layers 12 \ --hidden-size 768 \ --num-attention-heads 12 \ --kv-channels 64 \ --ffn-hidden-size 3072 \ --encoder-seq-length 512 \ --decoder-seq-length 128 \ --max-position-embeddings 512 \ --micro-batch-size 64 \ --global-batch-size 512 \ --lr 0.0001 \ --train-iters 1000000 \ --lr-decay-style linear \ --min-lr 0.00001 \ --weight-decay 1e-2 \ --lr-warmup-fraction .01 \ --clip-grad 1.0 \ --bf16 \ --vocab-extra-ids 100 \ --init-method-std 0.015 \ --transformer-impl transformer_engine \ --tensor-model-parallel-size 1 \ --pipeline-model-parallel-size 1 \ --attention-backend auto \ 注意 T5 使用--encoder-num-layers/--decoder-num-layers分别指定编码器与解码器层数、--encoder-seq-length/--decoder-seq-length分别指定编解码序列长度并以--vocab-extra-ids 100为额外特殊 token 预留词表空间入口脚本为pretrain_t5.py。五、Retro基于 GPTModel 的检索增强实现RetroRetrieval-Enhanced Transformer同样是 models 包原生支持的模型之一。从源码看RetroModel直接继承自GPTModelmodel.py其 forward 与 GPT 的唯一差别在于对上下文context的处理Retro 会把检索得到的邻居 tokenneighbor tokens通过 embedding 层嵌入为 context 张量再转发给 TransformerBlock 使用。RetroModel.forward的输入张量形状model.pyinput_ids: [bs, ns]批大小 × 序列长度context_ids: [k*bs*l, r]邻居数量 k × 批 × 分块数 l每个检索块 r 个 tokencontext: [r, k*bs*l, d]嵌入后的邻居上下文输出[ns, bs, d]。配套的RetroConfig与get_retro_decoder_block_spec分别定义 Retro 配置与解码器块规格见 retro/init.py。数据预处理与训练入口可参考 examples/retro/preprocess_data.sh 与 examples/retro/train_retro_2b_distributed.sh。六、扩展视野Mamba 与多模态模型虽然 API 文档的 toctree 仅收录 GPT/T5/BERT 三个子页但源码包已扩展出更多模型6.1 Mamba 状态空间模型MambaModelmamba_model.py支持mamba_stack_spec混合层栈规格hybrid_attention_ratio/hybrid_mlp_ratio/hybrid_override_pattern控制注意力层与 MLP 层在总层数中的目标比例以及可选的覆盖层模式用于构建 Mamba-Transformer 混合架构position_embedding_type默认none纯 Mamba 无注意力则无需位置嵌入也可选learned_absolute/rope。训练示例见 examples/mamba/train.sh。6.2 多模态与 LLaVAmultimodal/llava_model.py提供 LLaVA 风格的多模态语言模型vision/子包包含 CLIP ViT、多模态投影器与 RADIO 等视觉编码模块huggingface/提供与 HF 生态互操作的封装如 Qwen、CLIP。七、模型包使用小结与进一步阅读选型decoder-only 生成任务选 GPTencoder-only 与分类任务选 BERTadd_binary_headTrueseq2seq 任务选 T5检索增强生成选 Retro状态空间/混合架构选 Mamba。并行配置三者的共同点是pre_process/post_process标志驱动流水线并行下各 rank 是否构建嵌入层/输出层parallel_output控制 logits 是否保持 TP 切分。进阶阅读位置编码实现见 rotary_pos_embedding.pyTransformer 块装配见 transformer_block.pyFP8/量化配置见 transformer_config.py 与 quantization 目录模型并行调度见 parallel_state.py。总之Megatron-LM 的 models 包以LanguageModule基类 ModuleSpec规格机制为核心在统一骨架下同时承载 GPT、BERT、T5、Retro、Mamba 等多种架构并将张量/流水线/数据并行、MoE、FP8、分布式优化器、MTP 等特性以模块化方式注入各模型既保持了代码复用又为持续扩展新模型与新特性留出了清晰路径。赞分享人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载相关推荐在 Megatron-LM GPT-2 上接入 DeepSpeed模型并行训练的逐文件改造与 ZeRO-2 实践在 Megatron LM GPT 2 上接入 DeepSpeed模型并行训练的逐文件改造与 ZeRO 2 实践 本文是一份面向工程实战的技术指南完整讲解如人工智能大模型深度学习分布式训练预训练强化学习模型优化Megatron-LM 的 models.bert 包BERT 与编码器模型训练、分类头与 Layer Spec 全解析Megatron LM 的 models.bert 包BERT 与编码器模型训练、分类头与 Layer Spec 全解析 导读 本文以 Megatron LM人工智能大模型强化学习AI Agent微调reading-time性能优化提升文本分析效率的5个技巧reading time性能优化提升文本分析效率的5个技巧 在处理大量文本内容时 reading time 作为一款Medium风格的阅读时间估算工具其性上一篇从零跑通SVG拓扑图编辑器3条命令克隆到出第一屏下一篇AdGuard Home 规则配置一条命令拉取百万级规则三步让全网广告被拦创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考