弹性 MapReduce Supervised Learning(监督学习)

Cookbook 提供了一个流水线式的 Supervised Learning(SFT,监督学习)训练循环,数据集、评测和检查点保存都可配置。

相关产品
弹性 MapReduce 产品页,含版本规格、价格与购买入口。

一、架构

train.Config├── model_name which model to fine-tune├── dataset_builder SupervisedDatasetBuilder → SupervisedDataset├── learning_rate optimizer config (+ lr_schedule, adam_*)├── evaluator_builders what to measure during training├── save_every / eval_every checkpoint and eval cadence└── lora_rank LoRA adapter sizeSupervisedDatasetBuilder└── __call__() → (train_dataset, eval_dataset) │ ▼SupervisedDataset├── get_batch(index) → list[tinker.Datum]├── __len__() → number of batches└── set_epoch(seed) → shuffle for next epoch

二、tinker_cookbook.supervised.train.Config

核心配置。定义模型、数据、超参数和评测。

from tinker_cookbook.supervised import trainconfig = 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, num_epochs=1, save_every=20, eval_every=10,)asyncio.run(train.main(config))

三、SupervisedDataset / SupervisedDatasetBuilder

SupervisedDatasetBuilder 是一个用于构造 SupervisedDataset 的配置。数据集返回成批的 tinker.Datum 对象。

from tinker_cookbook.supervised.types import SupervisedDatasetBuilder, SupervisedDatasetclass MyDatasetBuilder(SupervisedDatasetBuilder): def __call__(self) -> tuple[SupervisedDataset, SupervisedDataset | None]: return train_data, eval_data # eval_data is optional

内置构建器:

构建器 用途
SupervisedDatasetFromHFDataset 用 map_fn 或 flatmap_fn 包装一个 HuggingFace 数据集
StreamingSupervisedDatasetFromHFDataset 从 HuggingFace 流式加载(内存占用更低)
FromConversationFileBuilder 从聊天对话的 JSONL 文件加载
ChatDatasetBuilder 聊天数据的基类——额外提供 tokenizer + renderer

四、ChatDatasetBuilder

用于聊天格式的数据。通过 ChatDatasetBuilderCommonConfig 提供 tokenizer 和 renderer 属性:

from tinker_cookbook.supervised.types import ChatDatasetBuilder, ChatDatasetBuilderCommonConfigclass MyChats(ChatDatasetBuilder): common_config = ChatDatasetBuilderCommonConfig( model_name_for_tokenizer="Qwen/Qwen3-8B", renderer_name="qwen3", batch_size=8, max_length=4096, )

五、训练循环

train.main(config) 负责整个流水线:

1. 创建 ServiceClient → TrainingClient

2. 从 config.dataset_builder 构建数据集

3. 对每个 epoch 和每个批次:

·用该批次执行 forward_backward

·执行 optim_step

·每隔 eval_every 运行一次评测器

·每隔 save_every 保存一次检查点

4. 保存最终检查点

这个循环会对请求做流水线处理以提升吞吐,详情请参见 时钟周期与流水线。

六、下一步

·sl_loop.py:不带抽象层的最小训练循环

·SL 超参数: 如何选择学习率、rank 和批大小

·教程:你的第一个 SFT:交互式演练

赞 (0)
上一篇 4天前
下一篇 4天前