快速入门
本章带你在不到 30 分钟内完成首次 MinT 训练。流程包括:注册、安装 SDK、配置 API Key、组织数据、提交训练、拿到 LoRA 并进行采样。所有步骤都在远端 GPU 上执行,无需本地显卡。
五步概览
| 序号 | 模块 | 内容简介 |
|---|---|---|
| 1 | 注册与登录 | 通过白名单邮箱注册,获取企业版账号 |
| 2 | 安装 SDK | Python 3.11+,pip 安装 mindlab-toolkit |
| 3 | 配置 API Key | 拿到 sk-* Key,写入环境变量 |
| 4 | 第一个训练任务 | 组织数据集、构建 Rubric、跑一次 SFT |
| 5 | 部署与采样 | 保存 LoRA 权重,调用 sampling_client 验证效果 |
1. 注册与登录
使用白名单邮箱注册并登录 MinT 企业版平台:https://mint-try.macaron.xin/。管理员会在企业账号中分配工作空间与算力配额。如尚未获得邀请,可联系销售:sales@mindlab.ltd。

图 1a — MinT 企业版登录页

图 1b — 登录后工作台
2. 安装客户端 SDK
MinT 客户端要求 Python 3.11 或以上。建议使用 venv 或 conda 创建独立环境:
pip install git+https://github.com/MindLab-Research/mindlab-toolkit.git安装完成后会同时引入 mint 包以及与之兼容的 tinker(>= 0.15.0)运行时辅助库。导入 mint 时,会自动补丁 tinker 的密钥校验逻辑,使 sk-* 形式的 API Key 可以直接使用。
如果你已经有现成的 Tinker 训练脚本,只需替换一行 import 即可迁移到 MinT:
import mint as tinker注意
在 MinT 训练循环中请不要调用 zero_grad_async,梯度归零由服务端统一处理。
3. 配置 API Key
在 macaron.im/mindlab/mint 申请到 sk- 开头的 API Key 后,将其写入环境变量。中国大陆区域请使用 mint-cn 端点:
export MINT_API_KEY=sk-your-api-key-here
export MINT_BASE_URL=https://mint.macaron.xin/ # 大陆区: https://mint-cn.macaron.xin/
export TINKER_BASE_URL=$MINT_BASE_URL
export TINKER_API_KEY=$MINT_API_KEY项目根目录下的 .env 文件也会被自动加载,方便在团队内部分发配置。
4. 跑通第一个训练任务
MinT 的训练数据以 mint.types.Datum 序列表示:每条样本包含一个 token 序列与每个 token 的损失权重。对 SFT 而言,prompt 部分的损失权重为 0,response 部分为 1,整体经过 teacher-forcing 偏移。
import mint
from mint import types
def process_sft_example(example: dict, tokenizer) -> types.Datum:
prompt_ids = tokenizer.encode(example['prompt'])
response_ids = tokenizer.encode(example['response'])
all_tokens = prompt_ids + response_ids
weights = [0.0] * len(prompt_ids) + [1.0] * len(response_ids)
return types.Datum(
model_input=types.ModelInput.from_ints(tokens=all_tokens[:-1]),
loss_fn_inputs={
'target_tokens': all_tokens[1:],
'weights': weights[1:],
},
)准备好数据后,用以下最小训练循环完成第一次 SFT:
service_client = mint.ServiceClient
training_client = service_client.create_lora_training_client(
base_model='Qwen/Qwen3-0.6B',
rank=16, train_mlp=True, train_attn=True, train_unembed=True,
)
adam_params = types.AdamParams(learning_rate=5e-5)
for step, batch in enumerate(batches_of(data, batch_size=8)):
fb = training_client.forward_backward(batch, loss_fn='cross_entropy')
opt = training_client.optim_step(adam_params)
print(f'step={step} metrics={fb.result.metrics}')
opt.result脚本运行时,真正的计算发生在远端 GPU。客户端只在 .result 处阻塞,可以同时编排多个 forward_backward / optim_step 调用。
5. 部署与采样
训练完成后,保存当前 LoRA 权重并拿到一个可立即采样的客户端:
sampling_client = training_client.save_weights_and_get_sampling_client(name='my-run-v1')
prompt_ids = tokenizer.encode('3 * 7 =')
samples = sampling_client.sample(
prompt=types.ModelInput.from_ints(prompt_ids),
sampling_params=types.SamplingParams(max_tokens=16, temperature=0.7),
num_samples=4,
)
for s in samples.sequences:
print(tokenizer.decode(s.tokens))故障排查
如果 _require_api_key 报错或预检超时,请检查 MINT_API_KEY 与 MINT_BASE_URL 是否正确导出,以及 mint.macaron.xin / mint-cn.macaron.xin 是否可达。
下一步
跑通后建议看:SFT 监督微调了解超参与 Recipe;LoRA 与检查点了解在线挂载与合并部署两种形态;OpenAI 兼容 Endpoint了解业务侧对接。