Skip to content

保存与加载

Weaver 提供两类保存能力:

  • Sampler 权重导出:面向短期采样、评估和 RL rollout。
  • Checkpoint:面向实验恢复、持久保存和 optimizer 状态恢复。

Sampler 权重导出

save_weights_for_sampler()

导出当前训练权重,返回可用于采样会话的模型路径:

python
model_path = training_client.save_weights_for_sampler(
    name="step-100",
)

print(model_path)

save_weights_and_get_sampling_client()

导出权重并直接返回 SamplingClient

python
sampling_client = training_client.save_weights_and_get_sampling_client(
    name="step-100",
)

result = sampling_client.sample(...)

常用参数:

参数说明
name导出权重的可读名称。
ttl_seconds权重生命周期;默认 3600 秒。传 None 表示永久保留。
waitTrue 时等待完成;False 时返回 OperationHandle

WARNING

sampler 权重默认 TTL 是 1 小时,因为它主要服务于频繁 rollout 和评估。如果你需要可长期恢复的训练状态,请使用 save_state()

创建 SamplingClient

如果已经有导出的 model_path,可以手动创建采样客户端:

python
sampling_client = service_client.create_sampling_client(
    model_path=model_path,
    base_model="Qwen/Qwen3-8B",
    model_id=training_client.model_id,
)

也可以使用更语义化的别名:

python
sampling_client = service_client.get_sampling_client(
    model_path,
    base_model="Qwen/Qwen3-8B",
)

Checkpoint 保存

save_state()

保存当前模型状态:

python
checkpoint = training_client.save_state(
    name="step-100",
)

print(checkpoint.path)

可选参数:

参数说明
name人类可读的 checkpoint 名称。
checkpoint_typeweightweight_and_optimizersampling
ttl_seconds生命周期;不传时 weight checkpoint 默认永久保留,sampling checkpoint 默认 1 小时。
waitTrue 时返回 types.CheckpointFalse 时返回 OperationHandle

保存 optimizer 状态

如果希望完整恢复训练,包括 Adam momentum 和其他 optimizer 统计信息,保存时使用:

python
checkpoint = training_client.save_state(
    name="step-100-full",
    checkpoint_type="weight_and_optimizer",
)

加载 Checkpoint

只加载权重

python
training_client.load_state(checkpoint, wait=True)

或使用路径:

python
training_client.load_state(
    "weaver://model-id/checkpoints/step-100",
    wait=True,
)

加载权重和 optimizer

python
training_client.load_state_with_optimizer(
    checkpoint,
    wait=True,
)

这适合真正的 resume-from-checkpoint 训练。

列出和管理 Checkpoint

列出当前模型的 checkpoint:

python
checkpoints = training_client.list_checkpoints()

for ckpt in checkpoints:
    print(ckpt.name, ckpt.path, ckpt.status, ckpt.expires_at)

更新 TTL:

python
# 24 小时后过期
training_client.set_checkpoint_ttl(checkpoint, ttl_seconds=24 * 3600)

# 取消过期,永久保留
training_client.set_checkpoint_ttl(checkpoint, ttl_seconds=None)

types.Checkpoint 常见字段:

字段说明
id服务端生成的 checkpoint ID。
pathweaver://... 存储路径,可用于加载。
name保存时传入的名称。
checkpoint_typecheckpoint 类型。
status当前状态,例如 completed
ttl_seconds生命周期;None 表示永久。
created_at / expires_at创建和过期时间。

推荐策略

  • 频繁 rollout:使用 save_weights_and_get_sampling_client(),保留默认 1 小时 TTL。
  • 阶段性评估:给 sampler 权重设置明确名称,并按需延长 TTL。
  • 实验恢复:使用 save_state(checkpoint_type="weight_and_optimizer")
  • 最终模型:使用永久 checkpoint 或永久 sampler 权重,再接入后续部署流程。

下一步

Weaver API 中文文档