mcpField
T
tinker

tinker

github.com/sundial-org开发15369 次安装15 周前更新
代码仓库

关于 tinker

Tinker 是 Thinking Machines Lab 提供的大模型训练 API,面向需要微调或自定义训练流程的开发者与研究者。它提供高层 Cookbook 模式和底层 API,涵盖监督微调、强化学习及 LoRA 训练。

主要功能

  1. 01监督微调与强化学习训练
  2. 02LoRA 参数高效微调
  3. 03高层 Cookbook 自动训练流程
  4. 04底层 API 自定义训练逻辑
  5. 05支持多模态模型训练

适用场景

  1. 01用指令与补全数据进行监督微调
  2. 02构建强化学习训练流程
  3. 03自定义模型训练循环
  4. 04训练视觉或音频相关模型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sundial-org/skills --skill tinker

安装后在 Claude Code 中输入/tinker确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-reference.md
getting-started.md
inkling.md
loss-functions.md
models-and-lora.md
recipes.md
reinforcement-learning.md
rendering.md
supervised-learning.md

详细介绍

Tinker API - 大模型微调

概述

Tinker 是 Thinking Machines Lab 提供的大语言模型训练 API。它提供:

  • 有监督微调(SFT):使用指令/补全内容对训练模型
  • 强化学习(RL):支持 PPO 和策略梯度损失;Cookbook 模式包括类似 GRPO 的分组采样/优势居中
  • 多模态模型:通过 Qwen3.5/3.6 和 Kimi K2.x 支持视觉;通过 Inkling 支持视觉 + 音频
  • Inkling:Thinking Machines 自研的开放权重 MoE 模型(975B/41B 激活参数,于 2026 年 7 月发布),支持文本/图像/音频输入,并可调节思考强度
  • LoRA 训练:高效的参数高效微调

两个抽象层级:

  • Tinker Cookbook:提供自动训练循环的高级模式
  • 低级 API:手动控制自定义训练逻辑

快速参考

主题参考
设置与核心概念入门指南
API 类与类型API 参考
有监督学习有监督学习
RL 训练强化学习
损失函数损失函数
聊天模板渲染
模型与 LoRA模型与 LoRA
Inkling(多模态、思考强度)Inkling
示例脚本配方

安装

pip install tinker tinker-cookbook
export TINKER_API_KEY=your_api_key_here

最简示例

import numpy as np
import tinker
from tinker import types

# Create clients
service_client = tinker.ServiceClient()
training_client = service_client.create_lora_training_client(
    base_model="Qwen/Qwen3.6-35B-A3B", rank=32
)
tokenizer = training_client.get_tokenizer()

# Prepare data
prompt = "English: hello\nPig Latin:"
completion = " ello-hay\n"
prompt_tokens = tokenizer.encode(prompt, add_special_tokens=True)
completion_tokens = tokenizer.encode(completion, add_special_tokens=False)
tokens = prompt_tokens + completion_tokens
weights = np.array(([0] * len(prompt_tokens)) + ([1] * len(completion_tokens)), dtype=np.float32)
target_tokens = np.array(tokens[1:], dtype=np.int64)

datum = types.Datum(
    model_input=types.ModelInput.from_ints(tokens=tokens[:-1]),
    loss_fn_inputs={
        "target_tokens": target_tokens,
        "weights": weights[1:]
    }
)

# Train
fwdbwd = training_client.forward_backward([datum], "cross_entropy")
optim = training_client.optim_step(types.AdamParams(learning_rate=1e-4))
fwdbwd.result(); optim.result()

# Sample
sampling_client = training_client.save_weights_and_get_sampling_client(name="v1")
result = sampling_client.sample(
    prompt=types.ModelInput.from_ints(tokens=tokenizer.encode("English: world\nPig Latin:", add_special_tokens=True)),
    sampling_params=types.SamplingParams(max_tokens=20),
    num_samples=1
).result()
print(tokenizer.decode(result.sequences[0].tokens))

常见导入

# Low-level API
import tinker
from tinker import types
from tinker.types import Datum, ModelInput, TensorData, AdamParams, SamplingParams

# Cookbook (high-level)
import chz
import asyncio
from tinker_cookbook.supervised import train
from tinker_cookbook.supervised.types import ChatDatasetBuilder, ChatDatasetBuilderCommonConfig
from tinker_cookbook.supervised.data import (
    SupervisedDatasetFromHFDataset,
    StreamingSupervisedDatasetFromHFDataset,
    FromConversationFileBuilder,
    conversation_to_datum,
)
from tinker_cookbook.renderers import get_renderer, TrainOnWhat
from tinker_cookbook.model_info import get_recommended_renderer_name
from tinker_cookbook.tokenizer_utils import get_tokenizer

如何选择

场景方案
使用 HF/JSONL 数据进行标准 SFTCookbook ChatDatasetBuilder + tinker_cookbook.supervised.train.main()
自定义预处理自定义 SupervisedDataset 类
大型数据集(>1M)StreamingSupervisedDatasetFromHFDataset
RL / GRPOCookbook RL 模式
研究 / 自定义循环低级 forward_backward() + optim_step()
视觉语言Inkling 或 Qwen3.5/3.6 视觉模型
音频 / 思考强度控制Inkling + tml-renderers(Inkling)

外部资源

评论

支持 Markdown