帮你快速理解、总结文档立即下载

快速开始

最近更新时间:2026-10-19 21:38:00
我的收藏
Cookbook 在 TCRL SDK 之上提供了更高层的抽象——SDK 提供原始操作(forward_backward、optim_step、sample),Cookbook 提供可配置的训练管线,自动处理流水线、checkpoint、评测和日志。
SFT:通过 train.Config 一行配置即可运行完整的监督微调循环
RL:通过 Env + EnvGroupBuilder + RLDataset 组合出完整的 RL 训练流程
DPO:通过 Comparison / LabeledComparison 进行偏好学习

Cookbook 安装

uv pip install tinker==0.12.0
注意:
目前 TCRL 开白体验中,可联系 tcrl@tencent.com 申请开白后,登录腾讯云弹性 MapReduce(EMR)控制台获取 API Key,进行模型训练、实验管理和用量监控。
export TINKER_API_KEY="your-api-key-here"
export TINKER_BASE_URL="http://api.tencenttcrl.com/"
可选扩展:[math-rl]、[modal]、[wandb]、[cloud]、[inspect]、[all]。


Cookbook 认证

tinker auth login
或者在 Tinker Console 中创建一个 API key,并将其设置为 TINKER_API_KEY 环境变量。
如需使用 nightly 构建版本:
uv pip install 'tinker-cookbook @ git+https://github.com/thinking-machines-lab/tinker-cookbook.git@nightly'
如需在本地开发,或按自己的需求定制方案:
git clone https://github.com/thinking-machines-lab/tinker-cookbook.git
cd tinker-cookbook
uv pip install -e .

Cookbook 在 Tinker SDK 之上提供了更高层的抽象。SDK 提供的是底层操作(forward_backward、optim_step、sample),而 Cookbook 提供的是可配置的训练流水线,会自动处理流水线并行、检查点保存、评测和日志记录。

使用 Cookbook 做 SFT

使用 SDK 时,SFT 循环需要在循环中手动依次调用 forward_backward → optim_step → save_state。Cookbook 把这些封装进一个 train.Config:
DatasetBuilder定义数据 → train.Config模型、学习率、rank → train.main()流水线化循环 → 检查点 + 指标

1. 定义数据:实现一个返回按批组织 Datum 对象的 SupervisedDatasetBuilder
2. 配置训练:设置模型、学习率、LoRA rank、检查点保存计划
3. 运行:train.main(config) 负责整个循环
from tinker_cookbook.supervised import train
from tinker_cookbook.supervised.types import ChatDatasetBuilder

config = train.Config(
log_path="~/logs/my-sft-run",
model_name="Qwen/Qwen3-8B",
dataset_builder=my_dataset_builder,
learning_rate=1e-4,
lora_rank=32,
save_every=20,
eval_every=10,
)
asyncio.run(train.main(config))
在底层,train.main 会创建 TrainingClient,将 forward_backward + optim_step 流水线化以提升吞吐,运行评测器并保存检查点。完整的组件图参见 SL 架构概览。

使用 Cookbook 做 RL

RL 比 SFT 更复杂,因为它涉及一个 rollout 循环:从模型中采样,用奖励函数打分,然后在打分后的轨迹上训练。Cookbook 把这些抽象成可组合的类型:
RLDatasetget_batch() → EnvGroupBuildermake_envs() → Envrollout → 奖励 + 优势 → forward_backward 训练 → 重复

1. 定义环境:实现 Env(问答任务可用 ProblemEnv)来产生奖励
2. 对环境分组:EnvGroupBuilder 按批创建环境(GRPO 会在组内对奖励做中心化)
3. 定义数据集 :RLDataset 产生按批组织的 EnvGroupBuilder
4. 运行:训练循环负责 rollout、优势计算和权重更新
最简单的起点是 ProblemEnv,一个单轮问答环境:
from tinker_cookbook.rl.problem_env import ProblemEnv

class MathEnv(ProblemEnv):
def get_question(self) -> str:
return "What is 2 + 3?"

def check_answer(self, response: str) -> float:
return 1.0 if "5" in response else 0.0
完整的组件图参见 RL 架构概览。

偏好学习(DPO / RLHF)

偏好学习用成对比较而非标量奖励来训练模型:
1. 构造比较样本:Comparison 对象包含同一提示词下的两个补全(A 和 B)
2. 标注偏好:LabeledComparison 增加人类偏好标注(A、B 或平局)
3. 用 DPO 训练 :直接基于偏好数据优化策略
from tinker_cookbook.preference.types import Comparison, LabeledComparison

comparison = Comparison(messages=messages, completion_a=resp_a, completion_b=resp_b)
labeled = LabeledComparison(**comparison.__dict__, label=1) # B preferred
完整讲解参见 DPO 指南 和 RLHF 示例。

后续步骤

SL 架构:监督学习的完整组件图
RL 架构:强化学习的完整组件图
教程:交互式 Notebook