今天來聊一個我覺得挺有意思的新項目——魔搭(ModelScope)團隊剛開源的Twinkle?,一個讓大模型訓練真正"亮起來"的訓練框架。
順帶說一句,這篇文章介紹的項目也是來自魔搭
簡介
做過模型訓練的同學應該都深有體會:訓練一個大模型,最痛苦的不是算法本身,而是搞基礎設施。你寫好了訓練代碼,結果要在分布式環境下跑起來,先是配 Ray 集群,再是搞數據并行、模型并行,checkpoint 又要同步……光是把這套流水線跑通就夠花上好幾天時間了。
Twinkle? 想解決的就是這個問題。一句話總結:它是一個輕量級的客戶端-服務端訓練框架,把訓練邏輯封裝成標準化 API,不管你用 torchrun 本地跑還是用 Ray 集群跑,代碼基本不用改。
更牛的是,它還能作為Training-as-a-Service(TaaS)的后端網關——也就是說,你甚至可以像調 API 一樣訓練模型。這在企業級場景下簡直太香了。
下面這張架構圖一目了然:
![]()
Twinkle 架構設計:解耦的客戶端-服務端架構
核心亮點拉出來說:
解耦架構:客戶端和服務端分離,標準化接口設計,向后兼容 Tinker API。搞過 Tinker 的同學遷移成本極低,改個 base URL 就行
三種運行模式:torchrun / Ray / HTTP,本地調試、集群訓練、遠程 API 服務隨便切換
多后端支持:同時支持 Transformers 和 Megatron 后端,Dense 模型和 MoE 模型都能搞
多租戶訓練:在同一個基礎模型上同時跑多個 LoRA 訓練任務,互不干擾——這個功能是真的硬核
另外值得一提的是,Twinkle? 是ms-swift(魔搭之前非常知名的訓練框架)團隊打造的。官方也明確說了,預計 Twinkle 中的一些基礎組件會被 ms-swift 復用,可以說這兩個項目是共同演進的關系。
多租戶:一個底座跑 N 個訓練任務
這應該是 Twinkle 最讓人眼前一亮的功能了。
想象一下這個場景:公司有一臺 A100 集群,同時有 4 個團隊要微調模型。傳統做法是排隊,一個一個來。但用了 Twinkle 的多租戶架構,4 個團隊可以同時在一個底座模型上訓練各自的 LoRA,完全隔離。
![]()
多租戶訓練架構:LoRA 池 + 租戶隔離
舉個真實例子:
租戶 A:加載本地私有數據集,LoRA rank=8,用基礎模型做 SFT
租戶 B:從 Hub 拉開源數據集,LoRA rank=32,跑預訓練
租戶 C:用基礎模型做 GRPO 損失計算,搞強化學習
租戶 D:純推理,算 logps
這 4 個任務并發跑在同一個底座模型上,因為 Twinkle 把模型和采樣器設計成了「任務無關組件」。訓練完成后,checkpoint 還能自動推送到 ModelScope 或 HuggingFace 的倉庫(默認私有)。
說白了,這就是給企業場景準備的「GPU 多人共享訓練平臺」。在 GPU 資源緊張的今天,這種設計真的太實用了。
注意:目前多租戶的并發訓練主要針對 LoRA 優化。當然作為模塊化框架,Twinkle 也支持遠程臨時獨占訓練,也就是全參數訓練模式。支持的模型
Twinkle 目前支持的模型覆蓋面已經相當廣了,主流的大模型基本都有:
模型系列
代表模型
參數規模
Megatron 支持
Qwen3 全系列
Qwen3-14B-Base
0.6B ~ 32B
Qwen3 MoE
Qwen3-30B-A3B
30B-A3B, 235B-A22B
Qwen3.5 MoE
Qwen3.5-35B-A3B
35B-A3B, 122B-A10B
Qwen3.5 Dense
Qwen3.5-9B
2B ~ 27B
Qwen2 / 2.5 全系列
Qwen2.5-1.5B-Instruct
0.5B ~ 72B
ChatGLM3/4
glm-4-9b-chat
6B ~ 9B
InternLM2
internlm2-1_8b
1.8B ~ 7B
DeepSeek V2
DeepSeek-V2-Lite
V2 全系列
DeepSeek R1
DeepSeek-R1
DeepSeek R1 蒸餾版
R1-Distill-Qwen-7B
1.5B ~ 32B
可以看到,Qwen 系列和 DeepSeek 系列的 Megatron 支持做得最好。GLM 和 InternLM 暫時只支持 Transformers 后端。
而且官方也說了,隨著新模型的發布會持續添加支持。目前在 ModelScope 上提供的 Serverless 訓練服務,底座模型用的是Qwen3-30B-A3B-Instruct-2507。
安裝
安裝非常簡單,一行 pip 搞定:
pip install 'twinkle-kit'
如果需要從源碼安裝:
git clone https://github.com/modelscope/twinkle.git
cd twinkle
pip install -e .
環境要求:Python >= 3.11,PyTorch >= 2.0。
如果要用 Megatron 后端,還需要額外安裝 Megatron-LM(倉庫里有INSTALL_MEGATRON.sh腳本可以直接用)。
使用
來看一個用 Ray 訓練 LoRA 的完整示例。代碼整體寫起來非常清晰:
from peft import LoraConfig
import twinkle
from twinkle import DeviceMesh, DeviceGroup
from twinkle.dataloader import DataLoader
from twinkle.dataset import Dataset, DatasetMeta
from twinkle.model import TransformersModel
from twinkle.preprocessor import SelfCognitionProcessor
# 定義設備組和 mesh
device_group = [DeviceGroup(name='default', ranks=8, device_type='cuda')]
device_mesh = DeviceMesh.from_sizes(fsdp_size=4, dp_size=2)
twinkle.initialize(mode='ray', groups=device_group, global_device_mesh=device_mesh)
def train():
# 從 ModelScope 加載模型(HuggingFace 用 'hf://...')
base_model = 'ms://Qwen/Qwen3.5-4B'
# 加載 1000 條樣本
dataset = Dataset(dataset_meta=DatasetMeta(
'ms://swift/self-cognition', data_slice=range(1000)
))
dataset.set_template('Template', model_id=base_model)
dataset.map(SelfCognitionProcessor('twinkle LLM', 'ModelScope Community'))
dataset.encode()
# 全局 batch size = 8
dataloader = DataLoader(dataset=dataset, batch_size=8, min_batch_size=8)
# 使用 Transformers 后端
model = TransformersModel(model_id=base_model, remote_group='default')
# 配置 LoRA
lora_config = LoraConfig(r=8, lora_alpha=32, target_modules='all-linear')
model.add_adapter_to_model('default', lora_config, gradient_accumulation_steps=2)
model.set_optimizer(optimizer_cls='AdamW', lr=1e-4)
model.set_lr_scheduler(
scheduler_cls='CosineWarmupScheduler',
num_warmup_steps=5,
num_training_steps=len(dataloader)
)
# 訓練循環
for step, batch in enumerate(dataloader):
model.forward_backward(inputs=batch)
model.clip_grad_and_step()
if step % 20 == 0:
metric = model.calculate_metric(is_training=True)
print(f'Step {step}/{len(dataloader)}, metric: {metric}')
model.save('last-checkpoint')if __name__ == '__main__':
train()
說實話,看完這段代碼我是挺驚喜的。整個 API 設計得非常 Pythonic:加載數據、設置模板、定義模型、配置 LoRA、訓練循環,每一步都很直觀。特別是ms://和hf://的前綴設計,可以無縫切換 ModelScope 和 HuggingFace 的模型源,很優雅。
訓練即服務(TaaS)
Twinkle 還有一個殺手級的功能:在 ModelScope 上提供了 Serverless 訓練服務,目前處于 Beta 階段。
怎么用呢?加入 Twinkle-Explorers 組織就能免費體驗。用 Tinker 兼容 API 調用就行:
from tinker import ServiceClient, types
from twinkle import init_tinker_client
base_url = 'https://www.modelscope.cn/twinkle'
api_key = 'your-api-key'
init_tinker_client()
service_client = ServiceClient(base_url=base_url, api_key=api_key)
training_client = service_client.create_lora_training_client(
base_model='Qwen/Qwen3-30B-A3B-Instruct-2507', rank=16
)# 像調 API 一樣訓練模型
for epoch in range(3):
for step, batch in enumerate(dataloader):
input_datum = [input_feature_to_datum(feat) for feat in batch]
fwdbwd_future = training_client.forward_backward(input_datum, "cross_entropy")
optim_future = training_client.optim_step(types.AdamParams(learning_rate=1e-4))
fwdbwd_future.result()
optim_future.result()
training_client.save_state(f"twinkle-lora-{epoch}").result()
沒有 GPU?沒關系,用 ModelScope 的 Serverless 訓練服務,遠程調 API 就能訓練一個 30B 的 MoE 模型的 LoRA。對于個人開發者和小團隊來說,這簡直是福音。
模塊化生態
Twinkle 的模塊化設計做得相當細致,一共有 20 個標準模塊:
類別
模塊
功能
數據層
Dataset / Template / DataLoader / Preprocessor / InputProcessor
數據加載、編解碼、分發、ETL、任務處理
模型層
Model / Sampler / Loss / Metric / Reward / Advantage
大模型、采樣、損失、指標、獎勵、優勢函數
工程層
CheckpointEngine / Patch / Module / Kernel
權重同步、模型修復、組件、算子
服務層
Server / Client / Infra / Plugin / Hub
集群啟動、客戶端、基礎設施抽象、插件、Hub 對接
每個模塊都是高內聚的,可以單獨替換或擴展。比如你想換個自定義的損失函數?實現 Loss 接口就行。想用自己的采樣策略?實現 Sampler 接口即可。這種設計讓框架的可擴展性非常強。
社區也已經開始貢獻組件了,比如 ModelScope 官方提供了一個qwen3_moe_transformers4_patch,專門修復 Qwen3 MoE 模型在 FSDP2 訓練時掛起的問題。
豐富的 Cookbook
Twinkle 提供了覆蓋多個場景的訓練腳本:
訓練類型
后端
FSDP 微調
Transformers
全參數微調
FSDP MoE 微調
Transformers
MoE 架構專用
Expert Parallelism + FSDP
Transformers
專家并行 + 數據并行
Sequence Parallelism + FSDP
Transformers
序列并行,超長上下文訓練
TP 訓練
Megatron
張量并行
TP MoE 訓練
Megatron
MoE + 張量并行
Tinker/Twinkle 客戶端訓練
兩者均支持
遠程 API 方式訓練
這個覆蓋面已經很全了。無論你是用 Transformers 還是 Megatron 后端,Dense 還是 MoE 模型,本地還是遠程訓練,基本都有現成的 cookbook 可以參考。
總結
Twinkle? 是我最近看到的最有想象力的大模型訓練框架之一。
它不只是又一個訓練工具,而是把"訓練即服務"這個概念真正落地了。客戶端-服務端解耦、多租戶 LoRA 并行訓練、Serverless TaaS、多后端支持……每一個特性單拿出來都有競爭力,組合在一起就是一套完整的企業級訓練解決方案。
優點:
架構設計優雅,模塊化程度高,擴展性強
多租戶 LoRA 并行訓練是真正的差異化賣點
支持 Transformers / Megatron 雙后端
ModelScope TaaS 服務讓沒有 GPU 的開發者也能訓練大模型
和 ms-swift 生態互通,組件可復用
代碼風格清晰,API 設計很 Pythonic
需要注意的地方:
項目剛開源不久(2026 年 2 月首版),生態還在建設中
多租戶并發目前僅針對 LoRA 優化
支持的模型雖然覆蓋主流,但不如 ms-swift 那么全
對華為昇騰 NPU 的支持還在完善中(文檔已經有 NPU 開箱指南了)
如果你是做大模型訓練的企業用戶,特別是需要多人共享 GPU 集群訓練各自模型的場景,Twinkle 值得重點關注。如果你是個人開發者,可以先體驗一下 ModelScope 上的免費 Serverless 訓練服務,感受一下"API 訓練大模型"的快感。
官方鏈接:
GitHub:https://github.com/modelscope/twinkle
中文文檔:https://twinkle-kit.readthedocs.io/zh-cn/latest/
PyPI:https://pypi.org/project/twinkle-kit/
Serverless 訓練服務:加入 Twinkle-Explorers 組織即可體驗
制作不易,如果這篇文章覺得對你有用,可否點個關注。給我個三連擊:點贊、轉發和在看。若可以再給我加個,謝謝你看我的文章,我們下篇再見!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.