开源框架

整理各种面试中常见的八股问题,涵盖 Python 基础、PyTorch 基础、算法与数据结构等内容

ROLL

  • 阿里巴巴开源的面向大规模学习的强化学习优化框架

    • 为规模化而生:基于 Ray 的分布式架构构建,支持千卡 GPU 级别的大规模集群训练;实现的创新的 Rollout 调度器与 AutoDeviceMapping 模块显著提升了 GPU 资源利用率
    • 训练推理分离:集成 Megatron-LM、DeepSpeed、FSDP2 等训练后端;SGLang、vLLM 等推理后端,显著加速模型训练与推理采样过程
    • 算法支持:内置 PPO、GRPO 等主流强化学习算法
    • 训练范式支持:RLVR、Agentic RL、Knowledge Distillation、DPO、SFT 等流水线,管理集群生命周期(创建、初始化、销毁),训练循环编排(卸载 / 加载循环、数据收集、训练步骤),检查点管理和指标追踪,数据采样和批次构建
  • Agentic RL Pipeline

    • 环境定义

      • 通过 EnvManager 管理环境并支持生成轨迹,支持 gym-like 接口扩展自定义环境

      • 实现 run_rollout_loop 方法

        def run_rollout_loop(self, data: DataProto):
            """
            1. 每次调用 run_rollout_loop 时,会持续执行 episode 直到收到数据收集完成的命令
            2. 需要重置 seed 以确保所有 group 的一致性
            3. episode_id 从 scheduler 端获取
        
            Seed 更新逻辑:
               group_seed = base_seed + group_id
               episode_seed = group_seed + episode_id
        
            trajectory_id: f"{group_id}_{episode_id}_{episode_seed}"
            """
        
            # 极简调用示例
            while self.running:
                # 从 scheduler 获取 episode_id
                self.episode_id = ray.get(self.output_queue.get_episode_id.remote(self.env_config["group_id"]))
                if self.episode_id is None:
                    break
        
                # 重置环境
                rollout_cache = self.reset()
        
                while rollout_cache is not None and not rollout_cache.terminated and not rollout_cache.truncated:
                    # 做出决策
                    lm_output = self.make_decision(rollout_cache)
                    # 执行环境步骤
                    rollout_cache = self.step(lm_output)
        
                # 提交轨迹
                rollout = self.formulate_rollouts(rollout_cache)
                ray.get(self.output_queue.put.remote(self.env_config['group_id'], self.episode_id, start_step, rollout))
      • while loop 无限循环:EnvManager 通过 while 循环持续执行 episode

      • 数据集遍历完成才返回 None 退出:当数据集遍历完成时,reset() 方法返回 None,触发循环退出

      • 每个 episode 必须有对应的轨迹 put:每个完成的 episode 必须通过 output_queue.put 提交轨迹数据

      • 数据管理:为了避免每个 env 各自读取数据造成的访存 / 内存瓶颈,框架层面提供了 GlobalDataset 组件,实现数据集的统一管理和分发

      • 轨迹过滤:通过自定义过滤函数,可以基于轨迹的各种属性(如分数、长度、停止原因等)实现灵活的过滤策略

    • Environment-Level 异步并行:各环境独立采样轨迹,提高采样效率

    • 异步训练:rollout-training 解耦,支持异步训练

    • 学习粒度:支持 TrajectoryWise 形式 (StarPO) 和 StepWise (GiGPO) 训练形式

    • 高效训练优化:支持 Sequence Packing(将多条短样本拼接成连续序列,减少 padding)与 Dynamic Batching(根据样本长度动态组 batch,按 batch 内最大长度统一 padding,最小化无效计算)

  • Distillation Pipeline

    • 多种蒸馏损失:支持用不同蒸馏损失训练模型,并可通过相应参数进行更精细的配置
    • 全面的性能监控:细粒度度量跟踪系统,监控性能指标,为模型训练过程提供全面的可视化和分析能力
    • 高效训练优化:支持 Sequence Packing(将多条短样本拼接成连续序列,减少 padding)
  • On-Policy Distillation Pipeline

    • 从学生模型采样轨迹,然后使用高性能的教师模型对轨迹中的每个 token 进行评分

      ┌─────────────────────────────────────────────────────────────────┐
      │                    On-Policy Distillation 流程                   │
      ├─────────────────────────────────────────────────────────────────┤
      │                                                                  │
      │   1. Sample Trajectories                                         │
      │   ┌──────────┐     ┌──────────────────────────────────┐         │
      │   │  Prompt  │ ──▶ │  Student Model (rollout)         │         │
      │   └──────────┘     │  生成轨迹 + student_log_probs    │         │
      │                    └──────────────────────────────────┘         │
      │                              │                                   │
      │                              ▼                                   │
      │   2. Compute Teacher Log Probs                                   │
      │                    ┌──────────────────────────────────┐         │
      │                    │  Teacher Model (forward)         │         │
      │                    │  计算 teacher_log_probs          │         │
      │                    └──────────────────────────────────┘         │
      │                              │                                   │
      │                              ▼                                   │
      │   3. Compute Advantage                                           │
      │                    advantage = teacher_log_prob - student_log_prob│
      │                              │                                   │
      │                              ▼                                   │
      │   4. Train with Importance Sampling                              │
      │                    ┌──────────────────────────────────┐         │
      │                    │  Student Model (train)           │         │
      │                    │  使用 advantage 进行策略更新      │         │
      │                    └──────────────────────────────────┘         │
      │                                                                  │
      └─────────────────────────────────────────────────────────────────┘
    • 与 Off-Policy Distillation 的区别

      特性Off-Policy DistillationOn-Policy Distillation
      数据来源预先生成的数据学生模型实时生成的数据
      状态分布教师模型的状态分布学生模型的状态分布
      奖励信号密集(每步都有)密集(每步都有)
      分布偏移存在(学生可能进入教师未见过的状态)不存在(在自己的分布上学习)
      适用场景大规模离线蒸馏需要在线适应的场景
    • 使用 Reverse KL 作为损失函数

  • DPO Pipeline

    • 多种 DPO 损失:支持用不同 DPO 损失训练模型,并可通过相应参数进行更精细的配置
  • RLVR Pipeline

    • 多样化任务支持:内置支持各种任务类型,包括数学推理、代码生成、LLM 作为评判器评估和指令遵循,每种类型都配备了专门的奖励评估机制和灵活的扩展接口,以适应新任务类型
    • 多任务联合训练:能够同时优化模型在数学、编程和通用推理等多个领域的能力,灵活控制每个领域的数据采样比例和奖励权重配置
    • 算法友好的强化学习框架:提供丰富的强化学习策略选项(超过 20 种),包括但不限于奖励归一化、奖励裁剪、各种优势估计方法等。不限于单一算法实现,支持多种强化学习算法,如 PPO、GRPO、Reinforce++、TOPR 和 RAFT++
  • SFT Pipeline

    • 统一的数据编码与对话模板:支持 system/user/assistant 对话格式拼接,并自动构造 labels(仅对回答部分计 loss)
    • 高效训练优化:支持 Sequence Packing(将多条短样本拼接成连续序列,减少 padding)
  • VLM RLVR Pipeline

    • 内置支持视觉推理和视觉感知任务,目前包括数学(推理)和检测(感知),每个任务都配备专门的奖励评估机制,使得能够同时优化模型在多个领域(如数学和检测)的能力
  • ROLL 的设计思路

    • Task Layer(任务层)
      • 任务级数据编排层,是用户最直观的交互层
      • 定义不同任务的完整数据流程,仅调用 Worker 层的顶层接口,不感知底层实现
      • 支持的任务包括 RLVR、Agentic RL、Distill、SFT、DPO 等
    • Worker Layer(计算逻辑层)
      • 算法逻辑的纯实现层,剥离了框架 / 硬件依赖
      • 封装具体的算法计算逻辑,保证算法逻辑的纯粹性
      • 包括 Actor Worker、Critic Worker、Infer Worker、Reward Worker、Teacher Worker / Student Worker
      • 每个 Parallel Worker 持有⼀组 Ray PlacementGroup 资源
    • Strategy Layer(训练 / 推理框架接入层)
      • 底层训练 / 推理框架的适配层,实现多框架自由切换
      • 通过统一接口抽象,让用户仅修改少量配置,即可在不同底层框架间切换
      • 支持 Megatron、vLLM、SGLang、FSDP、DeepSpeed 等
    • Platform Layer(硬件平台适配层)
      • 硬件平台的轻量封装层,实现跨硬件兼容
      • 对不同计算硬件做轻量级封装,屏蔽硬件差异
      • CUDA(NVIDIA GPU)、CPU、NPU(昇腾等国产 AI 芯片)、ROCm(AMD GPU)
    • Cluster 和 Device Mapping
      • Cluster 是 ROLL 中连接 Task Layer 与 Worker Layer 的核心枢纽,其核心设计目标是彻底屏蔽分布式训练的底层复杂度
      • 封装内容:资源管理、Worker 实例创建、多节点 / 多卡通信调度等分布式细节
      • ROLL Cluster 本质就是分布式计算的统一代理层,用 分发(Map)→ 执行 → 收集(Reduce) 完成所有并行计算,同时完美兼容 SPMD(Megatron)+ 非 SPMD(vLLM/SGLang)两大框架体系
  • ROLL 的 rollout 流程是怎么样的

    • 第一代:Offline Engine(离线批量推理)
      • 直接用 vLLM LLM 类,SPMD Rollout
      • 同步阻塞:一个请求慢 → 整个 Batch 卡住
      • Agent 任务不友好:工具调用、多轮交互极易拖慢全局
    • 第二代:AsyncEngine + HTTP 服务
      • 启动 HTTP 服务,用 chat/completion 接口,解决异步问题
      • 缺陷是 HTTP 通信开销大,同时经过 HTTP 序列化 / 反序列化、分词二次处理,导致 token 对齐失效
    • 第三代:AsyncEngine + Ray 远程调用
      • 直接调用 AsyncEngine 原生接口,Token In → Token Out(零序列化损耗),并且使用 Ray 远程调用替代 HTTP
    • ROLL Server-Based Rollout 架构
      • 采用生产者 (EnvManager) → 缓冲区 (SampleBuffer) → 调度器 (RolloutScheduler) → 消费者 (Trainer) 设计模式
      • 生产者 EnvManager:执行 Rollout,生成轨迹(trajectory),多个实例完全独立异步运行,与环境 / 工具多轮交互后生成完整轨迹后放入缓冲区
      • 消费者 Trainer:从缓冲区拿轨迹做训练(PPO / 奖励计算 / Critic 更新),与 Rollout 完全解耦,实现异步训练
      • 调度器 RolloutScheduler
        • 通过管理轨迹生命周期来控制 rollout 阶段
        • 根据当前训练阶段动态生成任务令牌:每个 EnvManager 在生产前需先获取令牌,完成后将令牌和结果返回给调度器
        • 当收集满一个 batch 后,调度器将结果返回给 Pipeline 进行后续训练流程
  • ROLL 是怎么做环境异步交互和冗余采样的

  • ROLL 的异步训练机制

    • 同步训练模式:Rollout 生成一批数据 → 等待训练完成更新模型 → 再进行下一轮 Rollout
    • 在异步模式下,rollout 阶段无需等待训练完成,训练可以使用在旧版本策略下生成的响应进行优化
    • 调度器每次会根据异步因子(async ratio)生成额外的令牌,EnvManager 可以持续进行生产;当满足 batch 要求后,调度器会先返回一部分数据给 Pipeline 进行训练
    • 由于异步状态下训练和 rollout 使用不同的机器资源,中间是非阻塞的,只有在需要同步参数时才需要暂停
  • ROLL 的推理任务调度

    • ROLL 通过 Proxy 模式 实现 EnvManager 与底层推理引擎的完全解耦
    • EnvManager 不直接与 vLLM Worker 交互,而是通过 PolicyProxy 调用 LLM 生成 action
    • 核心价值:将环境交互逻辑与推理引擎彻底解耦,底层可灵活切换 vLLM、SGLang 等不同推理引擎,上层代码无需修改
    • RequestScheduler 是整个推理任务调度的核心,以 Ray Actor 形式运行,负责将多个 EnvManager 的请求分发到不同的 vLLM Worker
    • Sticky Routing
      • 每个 EnvManager 首次请求时,按负载均衡策略分配到一个 Worker
      • 后续该 EnvManager 的所有请求,始终路由到同一个 Worker
      • 这是由于同一 EnvManager 的请求通常有共同的 prompt 前缀,由同一 Worker 处理可避免重复计算,大幅提升推理效率
  • ROLL 的训练适配

    • Megatron-LM 对分布式训练做了深度优化,但是存在两个核心问题
      • 权重格式不兼容:与 Hugging Face Transformers 生态的权重格式不互通
      • API 使用门槛高:初始化流程复杂,远不如 Hugging Face 易用,这导致模型在「HuggingFace 生态(推理 / 评测)」和「Megatron 生态(训练)」之间切换时,需要大量手工转换工作,效率极低
    • mcore adapter 是 ROLL 开源版本中用于解决上述痛点的核心组件
      • 双向格式转换:提供 HuggingFace ↔ Megatron 权重格式的全自动转换,完美兼容 TP/PP/EP/CP 等所有并行策略
      • 统一加载接口:提供类 Hugging Face 的 AutoModel.from_pretrained() API,彻底屏蔽 Megatron 复杂的分布式初始化逻辑
      • 流式转换:支持迭代式权重转换,大幅节省内存,可无缝集成 vLLM 等推理引擎,满足强化学习场景的关键需求
  • ROLL 框架如何进行异步奖励计算和动态过滤的

    • 传统的 batch rollout
      • 生成、奖励计算、过滤 串行进行
      • 大量时间等待,导致 GPU 资源闲置
    • ROLL:样本级 async rollout,压榨 GPU 效率
      • DynamicSamplingScheduler 管理 Prompt 生成,一旦生成完毕,立即调用对应 reward Worker 异步计算 reward,从而实现 generate 和 compute_rewards 的重叠与连续
  • ROLL 框架如何通过 Dynamic Batching 和 Sequence Packing 处理长尾 rollout 的?

    • 在 RL 训练(尤其是 Agentic RL、多轮交互场景)中,rollout 阶段天然存在序列长度长尾分布,长序列样本会阻塞整个 batch,造成 GPU idle 气泡,利用率暴跌,训练效率大幅下降
    • Dynamic Batching:按实际 token 负载均衡,消除 padding 浪费
      • 传统静态批处理按样本数划分 DP 分片,强制 pad 到最大长度
      • ROLL 动态批处理的核心是按实际 token 数量在 DP 分片中划分 rollout batch,保证各 GPU 负载均衡,最大化有效计算占比
      • 将 rollout batch 中的样本按序列长度分组,相似长度样本聚合,减少跨分片长度差异
      • 支持 Virtual Pipelie Model Parallel,优先拆分 tokens 数量多且 micro_batch_size > 1 的 micro_batch,使得 micro_batch 数量为 pp_size 整除倍
    • Sequence Packing
      • 将同一个 micro batch 内长短不同的句子打包在一起,消除 pad token,同时严格满足 Context Parallel + Tensor Parallel 的分布式约束
      • 使用优化打包算法减少 micro batch 数量,提升训练效率
      • 基本步骤
        • 去掉每条样本原有 padding,只保留有效 token
        • 重新 padding 到 2×CP×TP 对齐长度
        • 按 CP 交错规则切分并分配到不同 CP rank
        • 拼接成一段连续 token 送入模型
        • 输出后解包,逐序列计算 loss 再累加
      • 使用 Karmarkar-Karp 算法 在两层做均衡:
        • Global Batch → DP Rank
        • Mini Batch → Micro Batch
    • 先做 Dynamic Batching:全局分片、负载均衡、控制单卡 token 数;再做 Sequence Packing:micro batch 内序列拼接,彻底去 padding
  • 有了解 ROCK 框架吗?

AReaL

Ray

DeepSpeed

Megatron

Recompute 相关参数

  1. recompute_granularity
  • 详情:重新计算激活的粒度
  • 可选值:'full'、'selective'、'none'
    • 'full':重新计算整个 transformer layer
    • 'selective':只计算 transformer layer 中的核心注意力部分
    • 'none':不进行激活重计算
  • 默认值:'selective'
  • 说明:通常'selective' 是推荐的
  1. recompute_method
  • 详情:重计算方法,需将 recompute_granularity 设置为 'full' 才生效
  • 可选值:'uniform'、'block'
  • 默认值:None
  1. recompute_num_layers
  • 详情:每个均匀划分的重计算单元的 transformer layers 数量,需 recompute_granularity='full' 且 recompute_method='uniform' 时生效
  • 可选值:整数
  • 默认值:None
  • 说明:recompute_num_layers 越大,显存占用越小,计算成本越大
  1. recompute_modules
  • 详情:选择性重计算的模块,在 recompute_granularity='selective' 时生效
  • 可选值:["core_attn", "moe_act", "layernorm", "mla_up_proj", "mlp", "moe"]
    • "core_attn":重新计算 Transformer 层中的核心注意力部分
    • "mlp":重新计算密集的 MLP 层
    • "moe":重新计算 MoE 层
    • "moe_act":重新计算 MoE 中的 MLP 激活函数部分
    • "layernorm":重新计算 input_layernorm 和 pre_mlp_layernorm
    • "mla_up_proj":重新计算 MLA 上投影和 RoPE 应用部分
  • 默认值:["core_attn"]

Fusion Kernel 相关参数

  1. masked_softmax_fusion
  • 详情:开启 query_key_value 的 scaling, masking, and softmax 融合
  • 可选值:True、False
  • 默认值:True
  1. bias_dropout_fusion
  • 详情:开启 bias 和 dropout 的融合
  • 可选值:True、False
  • 默认值:True
  1. bias_activation_fusion
  • 详情:在可能的情况下融合偏置加法和激活函数
  • 可选值:True、False
  • 默认值:True
  1. apply_rope_fusion
  • 详情:开启 rope 融合
  • 可选值:True、False
  • 默认值:False
  • 说明:并非所有情况都支持,例如 MLA、mrope 等不支持
  1. gradient_accumulation_fusion
  • 详情:开启梯度累加融合
  • 可选值:True、False
  • 默认值:True
  1. cross_entropy_loss_fusion
  • 详情:启动交叉熵损失计算融合
  • 可选值:True、False
  • 默认值:True
  1. cross_entropy_fusion_impl
  • 详情:交叉熵融合实现
  • 可选值:'native'、'te'
  • 默认值:None,CUDA 设置为 'te',NPU 设置为 'native'

批次与训练参数

  1. dataloader_pin_memory
  • 详情:是否将数据加载到固定内存中以加速数据传输到 GPU
  • 可选值:True、False
  • 默认值:True
  1. dataloader_persist_workers
  • 详情:是否在每个 epoch 结束后保持数据加载器的工作线程
  • 可选值:True、False
  • 默认值:True
  1. dataloader_prefetch_factor
  • 详情:每个工作线程预取的批次数量
  • 可选值:正整数
  • 默认值:2
  1. group_by_length
  • 详情:是否在训练数据集中将长度大致相同的样本分组在一起(有随机因素),以最小化填充并确保各节点与进程的负载均衡以提高效率
  • 可选值:True、False
  • 默认值:False
  1. padding_free
  • 将一个 batch 中的数据进行展平而避免数据 padding,从而降低显存占用并加快训练速度
  • 可选值:True、False
  • 默认值:True

注意力相关参数

  1. attention_backend
  • 详情:使用的注意力后端
  • 可选值:'flash'、'fused'、'unfused'、'local'、'auto'
  • 默认值:'flash'
  • 说明:安装 'flash_attention_3' 则优先使用 fa3
  1. attention_softmax_in_fp32
  • 详情:在 attention_mask 和 softmax 中使用 fp32 进行计算
  • 可选值:True、False
  • 默认值:True
  1. calculate_per_token_loss
  • 根据全局批次中的非填充 token 数量来对交叉熵损失进行缩放
  • 默认:None,task_type 为 'causal_lm' 且为预训练 / 微调时,默认为 True,否则默认为 False

优化器相关参数

  1. optimizer
  • 详情:优化器类型
  • 可选值:'adam'、'sgd'、'muon'、'dist_muon'
  • 默认值:'adam'(实际为 'adamw')
  1. optimizer_cpu_offload
  • 详情:将优化器状态卸载到 CPU
  • 可选值:True、False
  • 默认值:False
  • 说明:可显著降低显存占用,但增加内存占用;若 global_batch_size 较大,则对训练速度的影响不大
  1. optimizer_offload_fraction
  • 详情:优化器状态卸载到 CPU 的比例
  • 可选值:0~1 之间的浮点数
  • 默认值:None(默认为 1,即完全卸载)
  • main_grads_dtype: 启用 use_precision_aware_optimizer 时主梯度的 dtype。可选为 'fp32', 'bf16'。默认为 'fp32'
  • main_params_dtype: 启用 use_precision_aware_optimizer 时主参数的 dtype。可选为 'fp32', 'fp16'。默认为 'fp32'
  • exp_avg_dtype: 启用 use_precision_aware_optimizer 时,adam 优化器中 exp_avg(即一阶矩)的 dtype。该 dtype 用于在训练过程中将优化器状态存储在内存中,但不会影响内核计算时的精度。可选为 'fp32', 'fp16', 'bf16', 'fp8'。默认为 'fp32'
  • exp_avg_sq_dtype: 启用 use_precision_aware_optimizer 时,adam 优化器中 exp_avg_sq(即二阶矩)的 dtype。该 dtype 用于在训练过程中将优化器状态存储在内存中,但不会影响内核计算的精度。可选为 'fp32', 'fp16', 'bf16', 'fp8'。默认为 'fp32'

分布式并行参数

  1. tensor_model_parallel_size (tp)
  • 详情:张量并行数
  • 可选值:正整数
  • 默认值:1
  1. pipeline_model_parallel_size (pp)
  • 详情:流水线并行数
  • 可选值:正整数
  • 默认值:1
  1. context_parallel_size (cp)
  • 详情:上下文并行数
  • 可选值:正整数
  • 默认值:1
  1. expert_model_parallel_size
  • 详情:专家并行数
  • 可选值:正整数
  • 默认值:1
  1. sequence_parallel
  • 详情:启动序列并行优化
  • 可选值:True、False
  • 默认值:False
  • 说明:需设置 tensor_model_parallel_size 才生效

MoE 模型参数

  1. moe_router_load_balancing_type
  • 详情:确定路由器的负载均衡策略,其中 "global_aux_loss" 需要 "megatron-core>=0.15"
  • 可选值:"aux_loss"、"seq_aux_loss"、"global_aux_loss"、"sinkhorn"、"none"
  • 默认值:None
  1. moe_router_dtype
  • 详情:用于路由计算和专家输出加权平均的数据类型,增强数值稳定性,尤其在专家数量较多时;与 moe_permute_fusion 一起使用时性能影响可忽略不计;'none' 代表不改变数据类型
  • 可选值:'none'、'fp32'、'fp64'
  • 默认值:'fp32'
  1. moe_token_dispatcher_type
  • 详情:要使用的 token 分发器类型
  • 可选值:'allgather'、'alltoall'、'flex'、'alltoall_seq'
  • 默认值:'alltoall'
  1. moe_enable_deepep
  • 详情:启用 DeepEP 以实现 MoE 模型中的高效 token 调度和合并,仅在通过设置 --moe_token_dispatcher_type flex 使用弹性 token 调度器时有效
  • 可选值:无(布尔型开关)
  • 默认值:无
  1. moe_grouped_gemm
  • 详情:当每个 rank 包含多个专家时,通过在多个流中启动多个本地 GEMM 内核,利用 TransformerEngine 中的 GroupedLinear 提高利用率和性能
  • 可选值:True、False
  • 默认值:True
  1. moe_permute_fusion
  • 详情:在令牌分发过程中融合令牌重排操作
  • 可选值:True、False
  • 默认值:False
  1. moe_aux_loss_coeff
  • 详情:默认为 0 不使用 aux_loss;值越大训练效果越差但 MoE 负载越均衡,需根据实验选择合适值
  • 可选值:数值型
  • 默认值:0
  1. moe_z_loss_coeff
  • 详情:z-loss 的缩放系数
  • 可选值:数值型 / None
  • 默认值:None
  1. moe_shared_expert_overlap
  • 详情:启用共享专家计算与调度器通信之间的重叠,不启用则共享专家在路由专家之后执行,仅在设置了 moe_shared_expert_intermediate_size 时有效
  • 可选值:True、False
  • 默认值:False
  1. moe_expert_capacity_factor
  • 详情:每个专家的容量因子,None 表示不丢弃任何 token;设置后超出专家容量的 token 会基于选中概率被丢弃,可均衡训练负载、提升训练速度(如设为 1 或 2)
  • 可选值:数值型 / None
  • 默认值:None
  1. moe_pad_expert_input_to_capacity
  • 详情:对每个专家的输入进行填充,使其长度与专家容量对齐,仅在设置了 --moe_expert_capacity_factor 参数后生效
  • 可选值:True、False
  • 默认值:False
  1. moe_token_drop_policy
  • 详情:token 丢弃策略
  • 可选值:'probs'、'position'
  • 默认值:'probs'

Megatron-Bridge

  • Megatron(含 Megatron-LM、Megatron-Core)采用分布式 PyTorch 检查点格式
    • 主要格式:torch.save () 保存的 state_dict,包含模型权重、优化器状态、训练状态等,格式为 pt 或 bin
    • 分布式格式:针对 TP/PP/EP/CP 等并行策略,权重被切分成多个文件,每个文件对应一个并行分片(含模型权重、优化器状态、训练状态等)
  • 对 HuggingFace SafeTensors 格式的支持
    • SafeTensors 是 HuggingFace 推出的安全、快速的张量存储格式,使用 Rust 实现,避免了 pickle 的安全风险,同时提供更快的加载速度
    • Megatron-Bridge 提供了从 Megatron 分布式检查点到 HuggingFace SafeTensors 格式的转换工具,支持权重、优化器状态、训练状态等信息的完整转换
    • save_hf_weights () 直接保存为 HF 兼容 Safetensors(分片、流式存储,支持大模型)
    • save_hf_pretrained () 保存 config.json+tokenizer+model.safetensors,直接兼容 HuggingFace Transformers 加载
  • 支持 PEFT/LoRA 权重的转换
    • Megatron-Bridge 支持将 PEFT/LoRA 权重转换为 HuggingFace SafeTensors 格式,方便在 HuggingFace Transformers 中加载和使用
    • 通过指定 base_model_checkpoint 和 peft_weights_checkpoint,工具会自动加载基础模型权重和 PEFT/LoRA 权重,并将它们合并后保存为 HF 兼容的 SafeTensors 格式
这篇文档有帮助吗?

On this page

页面信息