跳转至

使用训好的模型

训练完成后,MindForge 产出 sampler_path——形如 tinker://<session>/sampler_weights/<name> 的引用。可在训练页的版本记录或 最近训练产物列表中找到。按简单程度排列的三种使用方式:

方式一:OpenAI 兼容接口(推荐)

最简单。训好的模型在 MinT 服务器上暴露为 OpenAI 兼容 API,只需 openai SDK。

pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://mintcn.macaron.xin/oai/api/v1",  # 国内
    api_key="sk-your-api-key"
)

# 查看可用模型列表(找到你的 sampler)
models = client.models.list()
for m in models.data:
    print(m.id)

# 用训好的模型推理(文本补全)
sampler_path = "tinker://xxx/sampler_weights/final-sampler"
response = client.completions.create(
    model=sampler_path,
    prompt="用 Python 实现快速傅里叶变换:\n",
    temperature=0.7,
    max_tokens=2048
)
print(response.choices[0].text)

model 是 sampler_path,不是 HF 名

model 字段填训练产出的完整 sampler_path,不是 HuggingFace 模型名。首次请求会等待 MinT 加载 LoRA;运行 models.list() 可确认该路径已在服务端索引中。服务器同时支持 /completions(文本补全)与 /chat/completions(对话格式)。

base_url 后缀

OpenAI 兼容 base_url 必须包含 /oai/api/v1 后缀。mint SDK 使用的 MINT_BASE_URL 包含该后缀。

方式二:mint SDK Sampling Client

需要更底层控制(批量采样、获取 logprobs)时用 mint SDK:

pip install git+https://github.com/MindLab-Research/mindlab-toolkit.git
import mint

sc = mint.ServiceClient()

sampler_path = "tinker://xxx/sampler_weights/final-sampler"
sampler = sc.create_sampling_client(model_path=sampler_path).result()

tokenizer = sampler.get_tokenizer()
prompt_tokens = tokenizer.encode("用 Python 实现 FFT:\n")

result = sampler.sample(
    prompt=mint.ModelInput.from_ints(prompt_tokens),
    sampling_params=mint.SamplingParams(
        max_tokens=1024,
        temperature=0.7,
        stop=["\n\n"],
    ),
    num_samples=1,
).result()

for seq in result.sequences:
    print(tokenizer.decode(seq.tokens))

方式三:下载 Checkpoint 到本地

需要离线使用或迁移到其他框架(vLLM、SGLang)时,通过 MinT REST 客户端获取 checkpoint 归档的签名下载 URL:

from mint import ServiceClient

client = ServiceClient()
rest = client.create_rest_client()

url = rest.get_checkpoint_archive_url(
    training_run_id="run-id",
    checkpoint_id="final-sampler",
).result().url  # 签名 URL,有时效
# 下载 checkpoint 归档并解压 LoRA adapter
curl -L "$URL" -o checkpoint.tar.gz
mkdir -p ./my_adapter && tar -xzf checkpoint.tar.gz -C ./my_adapter
# 用 LoRA adapter 在 vLLM 上服务
vllm serve Qwen/Qwen3-4B --lora-modules my_adapter=./my_adapter

如需把 adapter 合并为完整的 HuggingFace 模型(例如离线导出),用 peft + transformers

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B")
model = PeftModel.from_pretrained(base, "./my_adapter").merge_and_unload()
model.save_pretrained("./merged_model")
AutoTokenizer.from_pretrained("Qwen/Qwen3-4B").save_pretrained("./merged_model")

本地合并需要基座模型

合并需下载基座模型到本地(需要足够内存/显存),且签名下载 URL 会过期。如只需在线推理,推荐方式一 或方式二。

Endpoint 与环境

网络环境 Endpoint
中国大陆 https://mintcn.macaron.xin/
海外 https://mint.macaron.im/
MINT_API_KEY=sk-your-api-key-here
MINT_BASE_URL=https://mintcn.macaron.xin/
MINT_READ_TIMEOUT=180

MINT_BASE_URL 是 mint SDK 的基础地址(不含 /oai/api/v1 后缀)。MINT_READ_TIMEOUT 同时 约束 sampler 预热与后续推理请求。运行时切换 MindForge Web 控制台的后端见 运行设置