执行摘要
此PR修复了创建critic训练组时未正确传递role参数的问题,通过修改allocate_train_group函数增加role参数并显式传递"critic"值,确保角色分配符合代码注释预期。变更范围小、风险低,属于常规维护性修复。
功能与动机
根据PR body引用的代码注释(slime/ray/actor_group.py第75-77行),创建critic的RayTrainGroup时使用actor角色不符合预期。作者znculee发现此不一致问题并提交修复,确保critic训练组正确使用"critic"角色。
实现拆解
修改slime/ray/placement_group.py文件:
-
allocate_train_group函数:增加role参数,默认值为"actor",并将参数传递给RayTrainGroup构造函数。
python
def allocate_train_group(args, num_nodes, num_gpus_per_node, pg, role="actor"):
return RayTrainGroup(
args=args,
num_nodes=num_nodes,
num_gpus_per_node=num_gpus_per_node,
pg=pg,
num_gpus_per_actor=0.4,
role=role, # 新增参数传递
)
-
create_training_models函数:在创建critic训练组时显式传递role="critic"。
python
critic_model = allocate_train_group(
args=args,
num_nodes=args.critic_num_nodes,
num_gpus_per_node=args.critic_num_gpus_per_node,
pg=pgs["critic"],
role="critic", # 显式指定角色
)
评论区精华
无review评论,PR直接由zhuzilin合并。提交历史显示作者先提交修复commit,然后合并main分支更新,表明这是基于最新代码的简单修复。
风险与影响
风险分析:
- 变更范围小,仅修改一个函数签名和两处调用。
- 向后兼容,新增参数有默认值,不影响现有调用。
- 逻辑简单,只是参数传递,不涉及复杂业务逻辑。
影响分析:
- 对用户无直接影响,这是内部训练逻辑修复。
- 对系统影响小,确保critic训练组正确使用"critic"角色,修复了原有错误。
- 对团队影响小,代码变更简单易懂。
关联脉络
与近期历史PR对比:
- PR #1775:修复Megatron LR scheduler重复恢复问题,同为训练相关逻辑修复。
- PR #1741:修复encoder_only属性缺失导致的运行时错误,同为bugfix类型。
此PR延续了仓库近期对训练逻辑和配置的持续优化趋势,体现了对代码细节的关注。
参与讨论