概述
Twinkle 提供了完整的 HTTP Server/Client 架构,支持将模型部署为服务,并通过客户端远程调用完成训练、推理等任务。这种架构将**模型承载(Server 端)和训练逻辑(Client 端)**解耦,使得多个用户可以共享同一个基座模型进行训练。
核心概念
Server 端:基于 Ray Serve 部署,承载模型权重和推理/训练计算。Server 负责管理模型加载、前向/反向传播、权重保存、采样推理等。同一个 Server 同时支持 Twinkle Client 和 Tinker Client 连接。
Client 端:在本地运行,负责数据准备、训练循环编排、超参配置等。Client 通过 HTTP 与 Server 通信,发送数据和指令。
两种模型后端
模型加载支持两种后端:
| 后端 | use_megatron | 说明 |
|---|---|---|
| Transformers | false |
基于 HuggingFace Transformers,适用于大多数场景 |
| Megatron | true |
基于 Megatron-LM,适用于超大规模模型训练,支持更高效的并行策略 |
两种 Client 模式
| Client | 初始化方式 | 说明 |
|---|---|---|
| Twinkle Client | init_twinkle_client |
原生客户端,将 from twinkle import 改为 from twinkle_client import 即可将本地训练代码迁移为远端调用 |
| Tinker Client | init_tinker_client |
对 Tinker SDK 进行 patch,使已有 Tinker 训练代码可直接复用 |
如何选择
Client 模式选择
| 场景 | 推荐 |
|---|---|
| 已有 Twinkle 本地训练代码,希望改为远端 | Twinkle Client — 仅需改 import 路径 |
| 已有 Tinker 训练代码,希望复用 | Tinker Client — 仅需初始化 patch |
| 全新项目 | Twinkle Client — API 更简洁 |
模型后端选择
| 场景 | 推荐 |
|---|---|
| 7B/14B 等中小规模模型 | Transformers 后端 (use_megatron: false) |
| 超大规模模型,需要高级并行策略 | Megatron 后端 (use_megatron: true) |
| 快速实验和原型验证 | Transformers 后端 (use_megatron: false) |
Cookbook 参考
完整的可运行示例位于 cookbook/client/ 目录:
cookbook/client/
├── server/ # Server 启动配置
│ ├── transformer/ # Transformers 后端
│ │ ├── run.sh # 启动脚本
│ │ ├── server.py # Server 入口
│ │ └── server_config.yaml # 配置文件
│ └── megatron/ # Megatron 后端
│ ├── run.sh
│ ├── server.py
│ ├── server_config.yaml
│ └── server_config_4b.yaml
├── twinkle/ # Twinkle Client 示例
│ ├── self_host/ # 自托管 Server
│ │ ├── dpo.py # DPO 训练客户端
│ │ ├── multi_modal.py # 多模态训练客户端
│ │ ├── sample.py # 推理采样客户端
│ │ ├── self_congnition.py # 自我认知训练客户端
│ │ └── short_math_grpo.py # GRPO 数学训练客户端
│ └── modelscope/ # ModelScope 托管服务
│ ├── dpo.py
│ ├── multi_modal.py
│ └── self_congnition.py
└── tinker/ # Tinker Client 示例
├── self_host/ # 自托管 Server
│ ├── dpo.py # DPO 训练客户端
│ ├── lora.py # LoRA 训练客户端
│ ├── multi_modal.py # 多模态训练客户端
│ ├── sample.py # 推理采样客户端
│ ├── self_cognition.py # 自我认知训练客户端
│ └── short_math_grpo.py # GRPO 数学训练客户端
└── modelscope/ # ModelScope 托管服务
├── dpo.py
├── sample.py
├── self_cognition.py
└── short_math_grpo.py
运行步骤:
# 1. 先启动 Server
python cookbook/client/server/megatron/server.py
# 2. 在另一个终端运行 Client(以 Tinker Client 为例)
python cookbook/client/tinker/self_host/self_cognition.py
# 或使用 Twinkle Client
python cookbook/client/twinkle/self_host/self_cognition.py