NCCLCheckpointEngine

使用 NCCL 进行 GPU 间高速权重传输的检查点引擎。

使用示例

from twinkle.checkpoint_engine import NCCLCheckpointEngine

# 在训练进程 (rank 0)
engine = NCCLCheckpointEngine(bucket_size=512<<20)  # 512MB bucket
engine.is_master = True
engine.prepare()
engine.init_process_group(rank=0, world_size=5)

# 发送权重
await engine.send_weights(model.named_parameters())
engine.finalize()

# 在推理进程 (rank 1-4)
engine = NCCLCheckpointEngine(bucket_size=512<<20)
engine.prepare()
engine.init_process_group(rank=1, world_size=5, master_metadata=metadata)

# 接收权重
async for name, tensor in engine.receive_weights():
    model.load_state_dict({name: tensor}, strict=False)
engine.finalize()

特性

  • 高速传输: 使用 NCCL 实现 GPU 间点对点高速传输

  • 零拷贝: 直接在 GPU 内存间传输,无需经过 CPU

  • 分桶传输: 支持大模型的分桶传输

配置参数

  • bucket_size: 权重桶大小,控制每次传输的数据量。较大的桶可以提高传输效率,但会占用更多内存

  • timeout: 传输超时时间

NCCLCheckpointEngine 是 GPU 训练的推荐选择,提供最高的传输性能。