使用训好的模型¶
训练完成后,MindForge 产出 sampler_path——形如
tinker://<session>/sampler_weights/<name> 的引用。可在训练页的版本记录或
最近训练产物列表中找到。按简单程度排列的三种使用方式:
方式一:OpenAI 兼容接口(推荐)¶
最简单。训好的模型在 MinT 服务器上暴露为 OpenAI 兼容 API,只需 openai SDK。
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:
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
如需把 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_BASE_URL 是 mint SDK 的基础地址(不含 /oai/api/v1 后缀)。MINT_READ_TIMEOUT 同时
约束 sampler 预热与后续推理请求。运行时切换 MindForge Web 控制台的后端见
运行设置。