概述

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