# MinT 企业版 (/zh/enterprise) import { Callout } from 'fumadocs-ui/components/callout'; import { Cards, Card } from 'fumadocs-ui/components/card'; # MinT 企业版 **面向需要专属算力、隔离和定制 SLA 的生产团队的生产级 MinT。** 社区版(开源 SDK + 托管在 `mint.macaron.xin` 的训练端点,端点访问需向 Mind Lab 团队申请 API key)是评测、个人研究和小团队的最佳起点。**MinT 企业版**在同一份客户端 SDK 基础上,叠加生产部署所需的运营能力。 ## 你能拿到什么 - **专属算力。** 预留固定的 GPU 池用于你的训练和采样 —— 无共享队列,吞吐可预测。 - **隔离。** 多租户或单租户部署,支持私有网络;无跨客户调度。 - **定制 SLA。** 响应时间、可用性和事件响应承诺,根据你的工作负载定制。 - **审计日志。** 逐请求审计线索,便于合规和访问审查(可配置保留期限)。 - **本地部署选项。** 对于受监管的环境,MinT 可部署在你自己的集群内、防火墙后。 - **Tinker API 兼容。** 同社区版的客户端 SDK —— 你现有的 `import mint` 代码无需修改即可运行。 ## Enterprise 与 Community 的区别 | 方面 | 社区版 | 企业版 | |---|---|---| | 端点 | `mint.macaron.xin`(共享) | 专属集群(云或本地) | | 算力 | 共享队列尽力而为 | 专属预留池 | | SLA | 无 | 定制(协商) | | 审计日志 | 否 | 是(可配置保留期限) | | 网络 | 公网 TLS 端点 | 私网 + 防火墙选项 | | 入职 | 自助 API 密钥 | 入职会议 + 定制设置 | 技术文档(算法、参数、代码示例)详见[社区版自定义部分](/zh/community/customize)。两个版本使用同一套 SDK 和代码模式;企业版在此基础上叠加运营层面的保障。 # chat-dpo (/zh/community/cookbook/chat-dpo) # chat-dpo Eval-first 的 DPO 实验,处理 chat 质量的偏好对。Benchmark 是 held-out 的成对偏好集合,不是带外部评分员的生成式 benchmark。 ## At a glance | | | |---|---| | 算法 | DPO(成对偏好) | | Base model | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | 本地 `data/train/full.jsonl` | | Benchmark | held-out 成对偏好 eval `data/eval/full.jsonl` | | Primary metric | `METRIC eval_pair_accuracy` | | Upstream README | [Open in mint-cookbook →](https://github.com/MindLab-Research/mint-cookbook/tree/main/experiments/chat-dpo) | 环境配置、可执行命令、完整 eval 流程见上游 README。实验遵循共享的 cookbook lifecycle:`uv sync` → `--dry-run` → `--eval-only` → 训练。 # dapo-aime (/zh/community/cookbook/dapo-aime) # dapo-aime 自包含 MinT 实验:在 `BytedTsinghua-SIA/DAPO-Math-17k` 的本地物化版本上跑 direct GRPO,把 AIME 2024 固定为可上报 benchmark。AIME 2025 和 AIME 2026 的 manifest 用同一行合约提供,作为辅助 eval。不做 SFT warm-start。 ## At a glance | | | |---|---| | 算法 | direct GRPO(无 SFT warm-start) | | Base model | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | `BytedTsinghua-SIA/DAPO-Math-17k` 的本地物化(`data/train/full.jsonl`) | | Benchmark | AIME 2024(`data/eval/aime2024.jsonl`);辅助:AIME 2025 / 2026 | | Primary metrics | `METRIC eval_accuracy`、`METRIC eval_greedy_accuracy`、`METRIC eval_pass_at_k` | | Upstream README | [Open in mint-cookbook →](https://github.com/MindLab-Research/mint-cookbook/tree/main/experiments/dapo-aime) | 环境配置、可执行命令、完整 eval 流程见上游 README。实验遵循共享的 cookbook lifecycle:`uv sync` → `--dry-run` → `--eval-only` → 训练。 # fingpt (/zh/community/cookbook/fingpt) # fingpt 自包含 MinT 实验:FinGPT 风格的金融领域 instruction tuning。一个 runtime 下两条可跑路线:官方 Fineval slice 作为 benchmark anchor,加上一条带 held-out 二次确认的 sentiment SFT wrapper。不声称对整个 FinGPT 家族做 paper-faithful 复现 —— Fineval 和 sentiment 是不同目的的两条本地线。 ## At a glance | | | |---|---| | 算法 | LoRA SFT(两条路线:Fineval slice、sentiment) | | Base model | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | Fineval slice 与 sentiment(通过 `autoresearch.sh`) | | Benchmark | Fineval anchor `data/fingpt-fineval/test.jsonl`;held-out sentiment 在 `fpb`、`fiqa-sa`、`tfns`、`nwgi` | | Primary metrics | `METRIC eval_accuracy`;sentiment 还有 `eval_micro_f1`、`eval_weighted_f1`、`eval_macro_f1` | | Upstream README | [Open in mint-cookbook →](https://github.com/MindLab-Research/mint-cookbook/tree/main/experiments/fingpt) | 环境配置、可执行命令、完整 eval 流程见上游 README。实验遵循共享的 cookbook lifecycle:`uv sync` → `--dry-run` → `--eval-only` → 训练。 # Cookbook (/zh/community/cookbook) import { Callout } from 'fumadocs-ui/components/callout'; # Cookbook MinT Cookbook 是一个独立仓库,存放较长的 recipe 风格的端到端实验 —— 每一个都是一个可跑的目录,包含 `pyproject.toml`、`train.py`、`autoresearch.sh`,以及一份说明实验意图的 `README`。 [在 GitHub 上浏览公共 cookbook →](https://github.com/MindLab-Research/mint-cookbook) ## Available experiments 当前 maintained 的实验,全部运行在 `Qwen/Qwen3-4B-Instruct-2507` 上: | 实验 | 实验是干什么的 | 算法 | Primary metric | |---|---|---|---| | [chat-dpo](/zh/community/cookbook/chat-dpo) | 成对 chat 偏好 DPO,配 held-out 偏好 eval | DPO | `eval_pair_accuracy` | | [dapo-aime](/zh/community/cookbook/dapo-aime) | 在 DAPO-Math-17k 上跑 direct GRPO,AIME 2024 可上报 benchmark | direct GRPO | `eval_accuracy` | | [fingpt](/zh/community/cookbook/fingpt) | FinGPT 风格金融 instruction tuning,Fineval anchor + sentiment SFT | LoRA SFT | `eval_accuracy` | | [lawbench](/zh/community/cookbook/lawbench) | 全 20 任务 LawBench benchmark,配 LoRA SFT baseline | LoRA SFT | `eval_lawbench_avg` | ## 何时用 Cookbook - 你需要完整可跑的实验,而不是片段代码。 - 你在找 baseline 或者一个已发布的配置来 fork。 - 你需要超出 [Customize](/zh/community/customize) 四段算法页范围的模式(长时训练、评估 harness、多阶段流水线)。 ## 与其它文档的关系 | 资源 | 受众 | 长度 | |---|---|---| | [Get Started → Human Quickstart](/zh/community/get-started/human-quickstart) | 首次跑通的用户 | 7 步线性流程 | | [Customize](/zh/community/customize) | 选算法的开发者 | 每个算法/概念一页 | | [mint-quickstart](https://github.com/MindLab-Research/mint-quickstart) | 首次跑通的可复现脚本 | 每个话题一个脚本 | | **mint-cookbook** | 跑完整实验的研究者 | 每个 recipe 一个目录 | **贡献。** Cookbook 接受社区贡献。在 [mint-cookbook](https://github.com/MindLab-Research/mint-cookbook) 上提 PR,加一个新的 recipe 目录和一份说明实验、数据集、预期指标的 README。 # lawbench (/zh/community/cookbook/lawbench) # lawbench 自包含 MinT 实验:LawBench。在一份固定的本地 benchmark 合约下评估官方 20 任务 LawBench,并维护一条围绕 `Qwen/Qwen3-4B-Instruct-2507` + LoRA SFT 的本地执行 baseline。不声称对 Qzhou-Law 或 DISC-LawLLM 做 paper-faithful 复现 —— 官方 scorer 和 benchmark 合约保持固定,但维护的可跑线是较小的本地执行 baseline。 ## At a glance | | | |---|---| | 算法 | LoRA SFT | | Base model | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | 公开的 `DISC-Law-SFT` train artifact | | Benchmark | 全 20 任务 LawBench(`data/eval/full.jsonl`,约 10000 行) | | Primary metric | `METRIC eval_lawbench_avg` | | Upstream README | [Open in mint-cookbook →](https://github.com/MindLab-Research/mint-cookbook/tree/main/experiments/lawbench) | 环境配置、可执行命令、完整 eval 流程见上游 README。实验遵循共享的 cookbook lifecycle:`uv sync` → `--dry-run` → `--eval-only` → 训练。 # MinT CLI (/zh/community/get-started/cli) import { Callout } from 'fumadocs-ui/components/callout'; # MinT CLI Mind Lab Toolkit([`mindlab-toolkit`](https://github.com/MindLab-Research/mindlab-toolkit))是 MinT 的可安装客户端。今天还**没有**独立的 `mint` shell 二进制 —— toolkit 提供的是 `mint` Python 包,你在脚本里 import 它。独立 CLI 二进制在路线图上;本页讲的是 toolkit-as-CLI 的当前用法。 ## 概念 `mindlab-toolkit` 打包了三样东西: 1. **`mint`** —— Tinker-API 兼容的 Python 客户端。顶层 `import mint` 可以替换 Tinker。 2. **`mint.mint` / `mintx`** —— Tinker 里没有的 MinT 专属扩展 API(例如 OpenPI VLA helpers)。 3. **一个被验证过的 Tinker SDK 依赖** —— 当前是 `tinker==0.15.0`。`import mint` 在运行时会检查版本,不对就 fail fast。 安装一次,所有 Python 脚本里都能用 `mint`。 ## 模式 ### 安装 ```bash git clone https://github.com/MindLab-Research/mindlab-toolkit.git cd mindlab-toolkit pip install -e . ``` 如果你的环境已经锁了别的 Tinker 版本: ```bash python -m pip install --force-reinstall 'tinker==0.15.0' ``` ### 第一次调用 ```python import mint # 从环境变量 / .env 读 MINT_API_KEY (或 TINKER_API_KEY) 和 MINT_BASE_URL service_client = mint.ServiceClient() caps = service_client.get_server_capabilities() print(f"Connected. {len(caps.supported_models)} supported models.") ``` ### 从 Tinker 迁移 如果你已经有 `import tinker` 的代码: ```python import mint as tinker ``` 然后把 endpoint 和凭据换成 MinT。完整步骤见 [Human Quickstart → 第 1 步 / 从 Tinker 迁移](/zh/community/get-started/human-quickstart)。 ### MinT 专属 API OpenPI VLA 和其它 MinT 扩展用 `mintx` namespace: ```python import mint import mint.mint as mintx base_model = mintx.OPENPI_FAST_MODEL ``` ## API 接口 toolkit 把上游 Tinker 全部重新导出,再加上 MinT 自己的扩展: | 命名空间 | 来源 | 用途 | |---|---|---| | `mint`(顶层) | Tinker 兼容 | `ServiceClient`、`forward_backward`、`optim_step`、`sample`、`save_state` | | `mint.tinker` | 顶层 `mint` 的镜像 | 代码风格需要明确写 `tinker` 模块名时 | | `mint.types` | Tinker 兼容 | `Datum`、`AdamParams`、`SamplingParams`、`ModelInput` | | `mint.mint` / `mintx` | MinT 专属 | OpenPI VLA helpers(`OPENPI_FAST_MODEL`、具身训练入口) | ## 注意事项 - **不要锁 `tinker==0.6.3`。** 老版 Tinker 和 MinT 兼容补丁不兼容。如果 `import mint` 报版本不对,运行 `python -m pip install --force-reinstall 'tinker==0.15.0'`。 - **不要调 `zero_grad_async()`。** 梯度归零由 MinT 服务端自动处理;手动调会导致 stale-gradient 错误。 - **独立 CLI 二进制还没上线。** 有用户期望 `mint train --config ...` 这种命令,目前没有。进度跟踪在 toolkit 仓库的 issues。 - **两个 endpoint 共用一个凭据。** 同一个 `MINT_API_KEY` 在 `mint.macaron.xin`(海外)和 `mint-cn.macaron.xin`(中国大陆)都能用。按网络可达性选,不是按账户分。 **真相之源。** toolkit 的安装、环境设置、版本策略以 [公共 mindlab-toolkit README](https://github.com/MindLab-Research/mindlab-toolkit#readme) 为准。本页和 README 不一致时以 README 为准。 # Human Quickstart (/zh/community/get-started/human-quickstart) import { Callout } from 'fumadocs-ui/components/callout'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Human Quickstart 按 7 步把模型从零跑到训练完成 —— 全部跑在远端 MinT 服务器(`mint.macaron.xin`,中国大陆用 `mint-cn.macaron.xin`)。**本地不需要 GPU**。 ## 1. 安装 MinT 从公开的 toolkit 仓库安装 MinT 客户端 SDK。需要 Python 3.11+。 ```bash pip install git+https://github.com/MindLab-Research/mindlab-toolkit.git ``` 这一步会安装 `mint`、对应的 `tinker>=0.15.0` 以及运行时辅助函数。安装后,`import mint` 会给 Tinker 的 key 校验打补丁,让 MinT 的 `sk-*` key 直接可用。 如果你已经有按 Tinker 客户端写的代码,最低成本的迁移方式是改一行 import: ```python import mint as tinker ``` 剩下的 Tinker 代码不用动,只要设置以下环境变量: ```bash export TINKER_BASE_URL=https://mint.macaron.xin/ # 中国大陆改用 mint-cn export TINKER_API_KEY=$MINT_API_KEY ``` 为什么这样能跑:原版 `import tinker` 仍然只接受 `tml-` 前缀的 key,但 MinT 的 key 是 `sk-` 前缀。`import mint as tinker` 会应用 MinT 的兼容补丁,同时保留你熟悉的 Tinker 调用形态。**注意:** 在 MinT 训练循环里**不要**调 `zero_grad_async()` —— 梯度归零由服务端自动处理。 ## 2. 配置 API key 访问 [macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) 自助注册即可获得 key。拿到后设置为环境变量: ```bash export MINT_API_KEY=sk-your-api-key-here export MINT_BASE_URL=https://mint.macaron.xin/ # 中国大陆: mint-cn.macaron.xin ``` 如果你的脚本读 `.env`,也可以放到项目根目录的 `.env` 文件里。 ## 3. 传入数据 MinT 在一串 `mint.types.Datum` 上训练。每个 `Datum` 是一段 token 序列加上对应的 loss 权重。chat 数据的标准转换: ```python import mint from mint import types def process_sft_example(example: dict, tokenizer) -> types.Datum: # example = {"prompt": "...", "response": "..."} prompt_ids = tokenizer.encode(example["prompt"]) response_ids = tokenizer.encode(example["response"]) all_tokens = prompt_ids + response_ids all_weights = [0.0] * len(prompt_ids) + [1.0] * len(response_ids) # Teacher-forcing shift: input = all_tokens[:-1], target = all_tokens[1:] return types.Datum( model_input=types.ModelInput.from_ints(tokens=all_tokens[:-1]), loss_fn_inputs={ "target_tokens": all_tokens[1:], "weights": all_weights[1:], }, ) ``` RL 场景下,先采样再用 reward 计算的 advantage 构造 `Datum` —— 详见 [RL 概览](/zh/community/customize/rl)。 ## 4. 选模型 `Qwen/Qwen3-0.6B` 是轻量默认,适合快速 iterate 和首次跑通的 smoke test。真实训练任务从下表挑: | 模型 | 适用场景 | |---|---| | `Qwen/Qwen3-0.6B` | 快速 iterate,smoke test | | `Qwen/Qwen3-4B-Instruct-2507` | Cookbook recipe,中等资源 chat | | `Qwen/Qwen3-4B-Thinking-2507` | 4B 规模的推理 / chain-of-thought | | `Qwen/Qwen3-30B-A3B-Instruct-2507` | 中等规模 chat / instruction following | | `Qwen/Qwen3-235B-A22B-Instruct-2507` | 大规模 instruction tuning | 完整列表见 [Supported Models](/zh/community/get-started/supported-models)。 ## 5. 选算法 | 你有这些数据... | 用 | MinT 调用 | |---|---|---| | 带标签的 prompt → response | **SFT** | `loss_fn="cross_entropy"` | | chosen / rejected 偏好对 | **DPO** | `forward_backward_custom` 自定义 preference loss | | reward / verifier / 环境反馈 | **RL (GRPO)** | `loss_fn="importance_sampling"` | 如果同时有监督数据和 reward,可以先 SFT 再 RL —— 标准脚本 [`quickstart.py`](https://github.com/MindLab-Research/mint-quickstart/blob/main/quickstart/quickstart.py) 就是这么做的。 ## 6. 开始训练 最小 SFT 例子: ```python import mint from mint import types 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, ) # data: 第 3 步生成的 list[types.Datum] adam_params = types.AdamParams(learning_rate=5e-5) for step, batch in enumerate(batches_of(data, batch_size=8)): fb_future = training_client.forward_backward(batch, loss_fn="cross_entropy") optim_future = training_client.optim_step(adam_params) fb_result = fb_future.result() optim_future.result() print(f"step={step} metrics={fb_result.metrics}") ``` 训练实际跑在远端 MinT 服务器上。脚本只在 `.result()` 处阻塞;重的活都不在你这台机器上。 ## 7. 开始 sampling 训练完之后,从你的 LoRA 上采样: ```python 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)) ``` 更多采样 log 和评估用法,详见 [Concepts → Evaluations](/zh/community/customize/concepts/evaluations)。 ## 接下来读什么? - [SFT 概览](/zh/community/customize/sft) —— 数据集、renderers、completers、蒸馏 - [DPO 概览](/zh/community/customize/dpo) —— 偏好对、β 调参 - [RL 概览](/zh/community/customize/rl) —— GRPO、自定义 reward、环境 - [Customize 总览](/zh/community/customize) —— 全部参数交叉索引 **排错。** 如果 `_require_api_key()` 抛异常或 preflight 超时,检查 `MINT_API_KEY` 和 `MINT_BASE_URL` 是否设置好,以及能否访问 `mint.macaron.xin`(中国大陆:`mint-cn`)。其它问题见 [FAQ](/zh/community/support/faq)。 # 介绍 (/zh/community/get-started) import { Callout } from 'fumadocs-ui/components/callout'; import { Cards, Card } from 'fumadocs-ui/components/card'; # MinT **面向 LLM 的 RL 训练基础设施。你写训练循环,我们搞定 GPU。** MinT 让你只关注 LLM 后训练里真正重要的事情 —— 你的数据、你的损失函数、你的 RL 环境 —— 而把分布式训练的繁重负担交给我们。你只需要在自己的 CPU 机器上写一个简单的 Python 脚本,里面包含数据或环境以及损失函数。我们会找到一种方式,把训练任务高效地跑在一个 GPU 集群上,做你指定的那一份计算。要换模型,你只需要改代码里的一个字符串。 MinT 把训练循环和算法细节的全部控制权留给你。它不是那种把"微调变简单"的黑盒;它是一层干净的抽象,把分布式训练的复杂性挡在外面,同时保留你对一切的控制。 ![MinT 架构](/images/mint-architecture.png) 你的代码通过 MinT SDK 在客户端运行。请求经 API Gateway 到达 MinT 的核心服务 —— Model Router、Task Manager、LoRA Manager —— 由它们协调跨 GPU 集群、对象存储和数据库的分布式训练。你只看见客户端 SDK;服务端的复杂性由我们处理。 **想要生产级的 MinT?** 查看 [MinT 企业版 →](/zh/enterprise) 了解托管部署、专属算力、政务/金融/科研定制案例。 # OpenAI 兼容 API (/zh/community/get-started/openai-compatible) import { Callout } from 'fumadocs-ui/components/callout'; # OpenAI 兼容 API MinT 在 `/oai/api/v1` 上提供了一个 OpenAI 兼容的 HTTP 接口。把任意 OpenAI SDK 或 HTTP 客户端指向这个前缀,就能对已部署的 MinT 模型做推理,不需要 import `mint` 或 `tinker`。 ## 概念 和 MinT 通信有两种方式,分别用于不同场景: - **原生 `mint` SDK** —— 训练、RL 循环、边训练边采样。你自己写训练循环时用它。 参见 [MinT CLI](/zh/community/get-started/cli)。 - **OpenAI 兼容 API** —— 对已经部署好的模型做纯推理。当你只想用现有的 OpenAI SDK 代码做 completions、chat 或工具调用时用它。 本页讲第二种。 这个接口用于对已部署模型做推理。它不会启动、训练或微调任何东西。训练请用原生 SDK。 ## 配置 兼容前缀为: ```text http://:/oai/api/v1 ``` 本地示例: ```text http://127.0.0.1:8000/oai/api/v1 ``` 按区域选择托管地址: - 中国大陆以外:`https://mint.macaron.xin/oai/api/v1` - 中国大陆:`https://mint-cn.macaron.xin/oai/api/v1` API key 传你真实的 MinT key。如果服务端没开鉴权,任意非空字符串都可以 —— 示例 里用的是 `dummy`。 安装 SDK: ```bash pip install openai ``` ## 快速开始 ```python from openai import OpenAI client = OpenAI( base_url="http://127.0.0.1:8000/oai/api/v1", api_key="dummy", ) resp = client.chat.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", messages=[{"role": "user", "content": "Reply with exactly: pong"}], max_tokens=16, temperature=0.0, ) print(resp.choices[0].message.content) ``` ## 已支持的能力 已在真实 MinT 服务上验证: - `client.models.list()` - `client.models.retrieve(model_id)` - `client.completions.create(...)`(legacy completions) - `client.chat.completions.create(...)` - `tools` 以及完整的工具调用 roundtrip - `OpenAI` 和 `AsyncOpenAI` 两种客户端 - 小规模并发 async chat ## 暂不支持 下面这些会明确报错,而不是鉴权失败: | 调用 | 结果 | |------|------| | `stream=True` | `stream=True is not supported` | | `n > 1` | `Only n=1 is supported` | | `client.responses.create(...)` | HTTP 404 | | `client.embeddings.create(...)` | HTTP 404 | ## 示例 ### 列出与获取模型 ```python from openai import OpenAI client = OpenAI(base_url="http://127.0.0.1:8000/oai/api/v1", api_key="dummy") for model in client.models.list().data: print(model.id) print(client.models.retrieve("Qwen/Qwen3-30B-A3B-Instruct-2507")) ``` ### Legacy completions ```python resp = client.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", prompt="The capital of France is", max_tokens=16, temperature=0.1, ) print(resp.choices[0].text) ``` ### Chat completions ```python resp = client.chat.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", messages=[ {"role": "system", "content": "You are a concise assistant."}, {"role": "user", "content": "Reply with exactly: pong"}, ], max_tokens=16, temperature=0.0, ) print(resp.choices[0].message.content) ``` ### 工具调用 roundtrip 传入 `tools`,读回 `tool_calls`,自己执行工具,再把结果用 `tool` 消息发回去拿到 最终回答。 ```python import json from openai import OpenAI client = OpenAI(base_url="http://127.0.0.1:8000/oai/api/v1", api_key="dummy") tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Get current weather for a city", "parameters": { "type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"], }, }, } ] question = "北京天气如何?请调用工具后再回答。" first = client.chat.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", messages=[{"role": "user", "content": question}], tools=tools, tool_choice="required", # 强制模型先调工具再回答 max_tokens=128, temperature=0.1, ) call = first.choices[0].message.tool_calls[0] second = client.chat.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", messages=[ {"role": "user", "content": question}, { "role": "assistant", "content": None, "tool_calls": [ { "id": call.id, "type": "function", "function": { "name": call.function.name, "arguments": call.function.arguments, }, } ], }, { "role": "tool", "tool_call_id": call.id, "content": json.dumps( {"location": "北京", "weather": "晴,18摄氏度"}, ensure_ascii=False, ), }, ], tools=tools, max_tokens=128, temperature=0.1, ) print(second.choices[0].message.content) ``` ### 异步客户端 ```python import asyncio from openai import AsyncOpenAI client = AsyncOpenAI(base_url="http://127.0.0.1:8000/oai/api/v1", api_key="dummy") async def main(): resp = await client.chat.completions.create( model="Qwen/Qwen3-30B-A3B-Instruct-2507", messages=[{"role": "user", "content": "Reply with exactly: async-pong"}], max_tokens=16, temperature=0.0, ) print(resp.choices[0].message.content) asyncio.run(main()) ``` ## 在 quickstart 里试一下 [mint-quickstart](https://github.com/MindLab-Research/mint-quickstart) 仓库提供 了这些调用的可运行版本: ```bash MINT_BASE_URL=http://127.0.0.1:8000 \ MINT_API_KEY=dummy \ python quickstart/openai_compat.py chat \ --model Qwen/Qwen3-30B-A3B-Instruct-2507 \ --user-message "Reply with exactly: pong" ``` 脚本有 `completions`、`chat`、`tool`、`smoke` 四个子命令。跑 `smoke` 可以一次性 检查整个已支持的能力面。 ## 限制 这个 API 面向开发和内部使用,不面向大规模用户流量。延迟和吞吐取决于所部署的模型, 可能会变。训练期间的推理(例如 RL 循环内部)请用原生采样客户端,而不是这个接口。 # Supported Models (/zh/community/get-started/supported-models) import { Callout } from 'fumadocs-ui/components/callout'; # Supported Models MinT 服务端的基础模型按访问计划分两个 lineup 池,外加可申请加入 lineup 的**技术兼容**集合: - **社区版可用模型** —— 通过 `mint.macaron.xin` 共享托管端点访问,需申请 API key。 - **企业版专属模型** —— 通过企业版套餐在专属集群上预留算力获得。 ## 社区版可用模型 下表里这些 Qwen3 基础模型在 `mint.macaron.xin` 上有预留算力,并在 `mint-quickstart` 里有测试覆盖。列表与一次 live preflight(`service_client.get_server_capabilities().supported_models`)返回的 Qwen 条目一致。如果没有特别偏好,用 lineup 里任意一个跑 smoke run 即可。 ### Qwen3 基础模型 | 具体型号 | Training Type | Architecture | Size | Context | 脚本默认 | 已测试算法 | |---|---|---|---|---|:-:|---| | `Qwen/Qwen3-0.6B` | Hybrid | Dense | Tiny | 32k | 是 | SFT、GRPO | | `Qwen/Qwen3-4B-Instruct-2507` | Instruction | Dense | Compact | 32k | cookbook | SFT、DPO、GRPO | | `Qwen/Qwen3-4B-Thinking-2507` | Reasoning | Dense | Compact | 32k | 否 | SFT、GRPO | | `Qwen/Qwen3-30B-A3B-Instruct-2507` | Instruction | MoE | Medium | 32k | 可选 | SFT、GRPO | | `Qwen/Qwen3-235B-A22B-Instruct-2507` | Instruction | MoE | Large | 32k | 否 | SFT、GRPO | **逐模型说明** - `Qwen3-0.6B` —— 轻量默认。quickstart、custom_reward、custom_loss、sampling_log 全跑这个。 - `Qwen3-4B-Instruct-2507` —— 四个维护中的 cookbook recipe(dapo-aime、chat-dpo、fingpt、lawbench)的基础模型。 - `Qwen3-4B-Thinking-2507` —— 4B 模型的推理 / chain-of-thought 变体。 - `Qwen3-30B-A3B-Instruct-2507` —— 中等规模 instruction following。 - `Qwen3-235B-A22B-Instruct-2507` —— 大规模 instruction tuning。Volcano A800 集群参数:`inference_tp=16, train_tp=4, train_pp=1, train_ep=8`。 **字段说明** - **Training Type** —— `Hybrid` 同时支持 thinking 和 non-thinking 两种模式;`Instruction` 是不带 chain-of-thought 的 chat 微调;`Reasoning` 总是在可见输出前先生成 chain-of-thought。 - **Architecture** —— `Dense` 每个 token 激活全部参数;`MoE` 是稀疏 mixture-of-experts。 - **Size** —— 指总参数量,不是激活参数量。`Tiny` < 1B;`Compact` 1B–4B;`Medium` 30B–32B;`Large` 70B+。 - **Context** —— 不使用 YaRN 扩展时的原生上下文窗口。 - **脚本默认** —— `是` 表示 quickstart 的默认;`cookbook` 表示维护中的 cookbook recipe 的默认;`可选` 表示脚本通过 `MINT_BASE_MODEL` 接受这个模型;`否` 表示仅按需使用。 要覆盖默认模型,跑 quickstart 脚本前设置 `MINT_BASE_MODEL`: ```bash export MINT_BASE_MODEL=Qwen/Qwen3-30B-A3B-Instruct-2507 python quickstart/quickstart.py ``` ### 具身 / VLA | 具体型号 | 已测试算法 | 备注 | |---|---|---| | `mintx.OPENPI_FAST_MODEL`(常量) | VLA 经 SDK / HTTP | 具身智能体轨道。详见 [VLA](/zh/community/customize/vla)。 | ## 企业版专属模型 下列模型需要 **企业版套餐**。算力按客户专属集群预留,**不在社区版的共享端点上提供**。HuggingFace 规范化 ID 在开通时确认。 | 模型族 | 具体型号 | 已测试算法 | 备注 | |---|---|---|---| | GLM | GLM-5 | SFT、RL | 智谱 GLM-5 家族。客户专属集群按需开通。 | | GLM | GLM-5.1 | SFT、RL | GLM-5 后继版本;按客户预留算力。 | | Kimi | Kimi-K2 | SFT、RL | Moonshot Kimi-K2。长上下文工作负载。 | | Kimi | Kimi-K2.5 | SFT、RL | Kimi-K2 后继版本。 | | DeepSeek | DeepSeek-V3 | SFT、RL | DeepSeek V3 基础模型。 | 需要为以上任意一个预留算力,请发邮件到 `sales@mindlab.ltd` 或 [Schedule a Demo](https://macaron.im/mindlab),注明模型与工作负载类型。 ## Technically Compatible MinT 服务端接受任何符合 HuggingFace Hub 风格、且架构属于下面列出的 transformer 家族的 model 字符串。Lineup 是已显式测试的子集。理论上可工作的其它 model 家族包括: - Qwen 系列(Qwen2.5、Qwen3 —— Instruct、Thinking、Coder 变体) - Llama 3.x 家族 - Gemma 2.x 和 3.x - DeepSeek 家族 仓库里目前没有这些模型在 MinT 上端到端跑通的证据。如果你需要其中一个进入 lineup 并预留算力,按下面的方式申请。 ## Request a Model 如果你需要的模型不在列表里: - 发邮件到 `sales@mindlab.ltd`,写明模型标识和预计用法(SFT / DPO / RL、batch size、预计使用周数)。 - 或者在公共 `mint-quickstart` 仓库开 issue:[github.com/MindLab-Research/mint-quickstart/issues](https://github.com/MindLab-Research/mint-quickstart/issues)。 VLM(Vision-Language Model)基础模型按"服务端能力"单独追踪 —— 详见 [VLM](/zh/community/customize/vlm) 页的当前状态。 **如何知道你的 endpoint 实际服务哪些模型?** preflight 成功后会返回一个 `capabilities.supported_models` 列表。`quickstart.py` 默认会打印 `Auth preflight: OK (N supported models)` —— 在你自己的脚本里调 `service_client.get_server_capabilities()` 即可枚举。 # Prompts for Vibecoders (/zh/community/get-started/vibecoders) import { Callout } from 'fumadocs-ui/components/callout'; # Prompts for Vibecoders 如果你用 Cursor、Claude Code、Codex 或其它 AI 编码助手开发,MinT 在固定 URL 暴露了一份 LLM 可读的整站文档摘要 —— 一次请求就能拿到全部上下文。 ## 概念 `llms.txt` 是社区约定的格式,用于在文档站固定路径上提供 LLM 友好的内容摘要。MinT 直接从你读的同一份 MDX 自动生成这份文件,所以助手看到的内容和你完全一致 —— 不靠抓取,不会过期。 本站提供 3 个 URL: | URL | 内容 | |---|---| | `/zh/llms.txt` | 全部中文页的索引,每页一行简介 | | `/zh/llms-full.txt` | 全部中文页的完整 markdown 拼接 | | `/zh/llms.mdx` | 内容同 `llms-full.txt`,但以 MDX 形式提供(有的助手更喜欢 MDX 风格的 include) | (英文版在 `/en/llms.txt` 等。) ## 模式 ### Cursor 在 Cursor 里把 URL 加到项目的 docs 上下文: ``` @docs https://mint-doc.macaron.im/zh/llms-full.txt ``` Cursor 会拉取文件并建索引,作为项目内每次提示的语义基础。MinT 发布更新后,重新拉一次即可同步。 ### Claude Code 在 Claude Code 会话开头让它拉一次: ``` 读 https://mint-doc.macaron.im/zh/llms-full.txt 获取 MinT 完整文档,然后帮我在 Qwen3-30B 上写一个带自定义 reward 的 GRPO 训练循环。 ``` 整个会话只需要拉一次;Claude Code 会把内容留在上下文里。 ### curl(冒烟测试) 在终端验证路由通: ```bash curl -sL https://mint-doc.macaron.im/zh/llms.txt | head -40 ``` 应该看到一串带文档 URL 的页标题列表。 ## API 接口 路由处理器在仓库的 `app/[lang]/llms.txt/route.js`。它走的是和侧边栏一样的 fumadocs page tree,剥掉只在 MDX 里有意义的组件(``、``),输出纯 markdown。没有 query 参数;每次请求都从最新构建产物再生成。 ## 注意事项 - **Token 预算。** 整站的 `llms-full.txt` 有几千 token。绝大多数编码助手都装得下;如果只想喂某一页,把页面 URL 后面接上 `/content.md`(例如 `/zh/community/customize/sft/content.md`)—— fumadocs 会在这个路径下提供该页的 markdown 版本。 - **生效时间窗口。** 路由读的是 build 产物,所以更新在站点重新部署时才落地(通常是公共 `mint-doc` 仓库 `main` 分支合并后几分钟内)。如果你昨天写的页面还没出现,构建还在传播中。 - **路线图页面也会原样输出。** 少数页面描述还在落地的能力(例如 VLM)。这些页面用清楚的语言说明状态;助手原样看到这些文本,不会凭空臆测一个已上线的功能。 - **不要把 `MINT_API_KEY` 粘进 prompt。** 文档里本来就没有真 key;但如果你从自己机器里复制脚本到 LLM prompt,先把 `sk-*` token 擦掉再贴。 **后续规划。** 我们正在准备一个面向 Cursor / Claude Code 的 skill 包,封装 MinT 专用模式(RL 循环、自定义 reward、sampling)。进度跟踪在 `mint-quickstart-alpha/mint-skill/SKILL.md`。 # Async Patterns (/zh/community/customize/async-patterns) import { Callout } from 'fumadocs-ui/components/callout'; # Async Patterns MinT 所有耗时操作都有异步 API。核心原则:**先把多个调用一口气提交出去,再去 await 结果**。这样服务端可以并行处理多个 batch,客户端同时准备下一个 batch,训练时间能大幅缩短。 ## Concept 同步调用(阻塞)会形成瓶颈: ``` Call 1: forward_backward() --[wait]-- result Call 2: forward_backward() --[wait]-- result ``` 异步调用允许 pipelining: ``` Call 1: forward_backward_async() --> [submitted, not waiting] Call 2: forward_backward_async() --> [submitted, not waiting] Call 3: forward_backward_async() --> [submitted, not waiting] 通过 asyncio.gather() 并行 await 所有结果 ``` 这是 MinT 训练里最关键的性能优化。在 await 之前先排队 3–5 个 batch,能让 GPU 一直跑满,CPU 同步准备下一批数据。 ## Pattern ```python import asyncio import mint from mint import types async def train_with_pipelining(): service_client = mint.ServiceClient() training_client = await service_client.create_lora_training_client_async( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=5e-5) # 准备 batch batches = [ "Example batch 1 for training.", "Example batch 2 for training.", "Example batch 3 for training.", "Example batch 4 for training.", ] # 反例(慢):顺序调用 # for batch_text in batches: # tokens = tokenizer.encode(batch_text) # datum = types.Datum(...) # result = await training_client.forward_backward_async(...).result_async() # await training_client.optim_step_async(adam_params).result_async() # 推荐写法(快):把多个 forward_backward 调用 pipeline 起来 fb_futures = [] for batch_text in batches: tokens = tokenizer.encode(batch_text) model_input = types.ModelInput.from_ints(tokens[:-1]) target_tokens = tokens[1:] weights = [1.0] * len(target_tokens) datum = types.Datum( model_input=model_input, loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) # 提交但不等 fb_future = training_client.forward_backward_async([datum], loss_fn="cross_entropy") fb_futures.append(fb_future) # 一次性 gather + await 所有结果 fb_results = await asyncio.gather(*[f.result_async() for f in fb_futures]) # 然后再做 optimizer step for result in fb_results: print(f"Loss: {result.loss:.4f}") optim_future = training_client.optim_step_async(adam_params) await optim_future.result_async() # 跑异步训练 asyncio.run(train_with_pipelining()) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/concepts/async_patterns.py ## API Surface TrainingClient 和 SamplingClient 的所有方法都有 `_async` 变体: | 同步 | 异步 | 用途 | |------|------|------| | `forward_backward(...)` | `forward_backward_async(...)` | 在一个 batch 上算梯度 | | `optim_step(...)` | `optim_step_async(...)` | 更新 model weights | | `sample(...)` | `sample_async(...)` | 生成 token | | `save_weights_for_sampler(...)` | `save_weights_for_sampler_async(...)` | 保存 checkpoint | **异步执行:** - 所有 `_async()` 方法返回一个 `Future` 对象。 - 调 `.result_async()` 来 await 结果。 - 用 `asyncio.gather(*futures)` 并行等多个 future。 ## Caveats & Pitfalls - **退化成顺序**:千万别在循环里 `await` 异步调用 —— 那等于把异步又串行化了,完全失去意义。正确做法是先把 future 收集到一个 list,再一起 gather。 - **Pipeline 深度**:在 await 前排 3–5 个 batch。排太多(> 10)可能撑爆服务端内存,太少(1–2)藏不住延迟。 - **必须 await result**:每个 future 用之前都要先调 `.result_async()`。直接访问没 await 的 future 会引起 race condition。 - **Optimizer step 时机**:`optim_step_async()` 应该在**所有** forward_backward 结果都收完之后再调,不要交错。每个 optimizer step 都对一整个 batch 累积的梯度生效。 - **错误处理**:把 `asyncio.gather()` 包在 try-except 里捕获并行调用里的错误。任意一个 future 失败都会抛异常。 # Customize (/zh/community/customize) import { Callout } from 'fumadocs-ui/components/callout'; import { Cards, Card } from 'fumadocs-ui/components/card'; # Customize 本区段是一份"MinT 训练任务里能配置的全部内容"的参考。它按 **算法**(SFT / DPO / RL / VLA)组织,加上贯穿多个算法的 **概念** 和 **recipe**。每个叶子页声明 3 种固定模板之一,所以右侧 TOC 在整个区段里读起来一致。 ## 从哪开始 ## 全部参数(按算法) 每个算法的完整参数表在它自己页面的 `## All Parameters` 段。直达链接: | 算法 | 参数页 | |---|---| | SFT | [`sft/index#all-parameters`](/zh/community/customize/sft#all-parameters) | | SFT 超参数 recipe | [`sft/hyperparameters`](/zh/community/customize/sft/hyperparameters) | | DPO | [`dpo/index#all-parameters`](/zh/community/customize/dpo#all-parameters) | | RL — Math | [`rl/math-rl#all-parameters`](/zh/community/customize/rl/math-rl#all-parameters) | | RL — Chat | [`rl/chat-rl#all-parameters`](/zh/community/customize/rl/chat-rl#all-parameters) | | RL — Code | [`rl/code-rl#all-parameters`](/zh/community/customize/rl/code-rl#all-parameters) | | RL 超参数 recipe | [`rl/hyperparameters`](/zh/community/customize/rl/hyperparameters) | | VLA | [`vla#all-parameters`](/zh/community/customize/vla#all-parameters) | ## 概念索引 跨多个算法都会出现的基础话题: | 话题 | 页面 | |---|---| | 渲染 / 分词 | [Rendering](/zh/community/customize/concepts/rendering) | | 损失函数目录 | [Loss Functions](/zh/community/customize/concepts/loss-functions) | | Completers(TokenCompleter、MessageCompleter、LLM-as-judge) | [Completers](/zh/community/customize/concepts/completers) | | 权重 / checkpoints / TTL | [Weights](/zh/community/customize/concepts/weights) | | Evaluations(自定义、NLL、Inspect AI) | [Evaluations](/zh/community/customize/concepts/evaluations) | | 异步模式 / `num_samples` | [Async Patterns](/zh/community/customize/async-patterns) | ## Recipe 索引 把多个原语组合起来的端到端 recipe,以及部署路径: | Recipe | 页面 | |---|---| | RLHF 三阶段流水线 | [RLHF Pipeline](/zh/community/customize/dpo/rlhf-pipeline) | | 多轮 RL | [Multi-turn](/zh/community/customize/rl/multi-turn) | | 多智能体 RL | [Multi-agent](/zh/community/customize/rl/multi-agent) | | Prompt 蒸馏 | [Distillation](/zh/community/customize/rl/distillation) | | 自定义环境 | [Custom Environment](/zh/community/customize/rl/custom-environment) | | 导出到 HF | [Export to HF](/zh/community/customize/deployment/export-hf) | | LoRA Adapter | [LoRA Adapter](/zh/community/customize/deployment/lora-adapter) | | 发布到 Hub | [Publish to Hub](/zh/community/customize/deployment/publish-hub) | **Tinker 兼容。** MinT 客户端 SDK 与 Tinker API 兼容(`pip install` 来自 `mindlab-toolkit`)。Tinker 上能跑的代码模式 MinT 也能跑 —— 把 endpoint 换成 `mint.macaron.xin` 或 `mint-cn.macaron.xin`,把 key 换成 `MINT_API_KEY` 即可。完整迁移见 [Human Quickstart → 从 Tinker 迁移](/zh/community/get-started/human-quickstart)。 # VLA (/zh/community/customize/vla) import { Callout } from 'fumadocs-ui/components/callout'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # VLA Vision-Language-Action(VLA)model 接受图像和语言指令作为输入,输出机器人动作。MinT 通过两条路径支持 OpenPI 兼容的 VLA 训练:用 Python SDK 比较省事,或者直接走 HTTP 与非 Python 系统集成。 参考实现是 `demos/embodied/openpi_vla_sdk.py`(SDK)和 `demos/embodied/openpi_vla_http.py`(HTTP)。 ## Configuration Python 流程里推荐用 SDK: ```python import mint import mint.mint as mintx service_client = mint.ServiceClient() training_client = mintx.create_openpi_training_client( service_client, base_model=mintx.OPENPI_FAST_MODEL, rank=mintx.OPENPI_FAST_LORA_RANK, # 默认 16 create_timeout_seconds=1200.0, user_metadata={"example": "vla-training"}, ) info = training_client.get_info() print(f"Model: {info.model_name}, LoRA rank: {info.lora_rank}") ``` 环境变量: ```bash export MINT_API_KEY=sk-your-key export MINT_BASE_URL=https://mint.macaron.xin/ export MINT_OPENPI_SDK_BASE_MODEL="openpi/pi0-fast-libero-low-mem-finetune" export MINT_OPENPI_SDK_LORA_RANK=16 export MINT_OPENPI_SDK_LR=0.003 ``` HTTP 路径绕开 SDK,通过 HTTPS 直接发原始 JSON。给非 Python 客户端或集成测试用: ```bash curl -X POST https://mint.macaron.xin/api/v1/sessions/create \ -H "Authorization: Bearer $MINT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"tags": ["vla-training"], "type": "create_session"}' ``` 返回里包含 `session_id`。然后创建 model: ```bash curl -X POST https://mint.macaron.xin/api/v1/models/create \ -H "Authorization: Bearer $MINT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "session_id": "...", "base_model": "openpi/pi0-fast-libero-low-mem-finetune", "lora_config": {"rank": 16, "train_attn": true, "train_mlp": true, "train_unembed": true} }' ``` 完整的 wire protocol 和请求构造器见 `demos/embodied/openpi_vla_http.py`。 ## Prompting Guide VLA 的 prompt 包含三种模态:图像、状态和语言。规范结构: ```python from mint.mint import build_openpi_fast_datum, CAMERA_LAYOUT # 来自三个固定摄像头的图像 images: dict[str, bytes] = { "base_0_rgb": load_png("base_cam.png"), "left_wrist_0_rgb": load_png("left_cam.png"), "right_wrist_0_rgb": load_png("right_cam.png"), } # 状态向量(本体感觉) state = [0.1, -0.2, 0.05, ...] # 关节角度、夹爪位置等 # 动作 token(model 要生成的) target_tokens = [42, 43, 44, ...] # 动作量化 # 构造 datum datum = build_openpi_fast_datum( prefix_tokens=[], # 可选的 instruction token image_bytes_by_camera=images, state=state, target_tokens=target_tokens, weights=[1.0] * len(target_tokens), # 所有动作都参与训练 token_ar_mask=[1] * len(target_tokens), # 自回归 mask ) ``` **关键字段:** - **Images:** 三路固定摄像头视角(base、左腕、右腕),RGB PNG 格式。 - **State:** 机器人本体感觉(关节角度、夹爪状态、末端执行器姿态)。 - **Actions:** 量化成 token ID。Model 预测动作序列里的下一个 token。 - **token_ar_mask:** 自回归解码 mask(1 = 生成这个 token,0 = 跳过)。 ## Output Format VLA model 输出的是动作 token,需要反量化回连续控制信号。对 OpenPI FAST: - **Token 形状:** `[seq_len]` — 每个时间步一个 token。 - **Token 取值范围:** 0–511(每个维度 8 bit 量化,2 个维度 = 每步 2 个 token)。 - **反量化:** token i → 连续值 = (i / 256) - 1.0,再 rescale 到机器人动作范围。 训练循环对动作预测算 loss: ```python result = training_client.train_step( [datum], loss_fn="cross_entropy", adam_params=types.AdamParams(learning_rate=0.003), ).result() print(f"Loss: {result.metrics.get('loss')}") ``` 训练完保存权重再采样: ```python sampler = training_client.save_weights_for_sampler( name="vla-checkpoint-1", ttl_seconds=3600, ).result() # 用 sampler 做推理(MinT 这边目前还没文档化) ``` ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `base_model` | str | `"openpi/pi0-fast-libero-low-mem-finetune"` | OpenPI model 变体。FAST = 轻量,~0.6B 参数。 | | `rank` | int | `16` | LoRA rank。VLA 一般取 8–32。 | | `train_mlp` | bool | `True` | 训练 MLP 层。 | | `train_attn` | bool | `True` | 训练 attention 层。 | | `train_unembed` | bool | `True` | 训练输出层(action head)。 | | `learning_rate` | float | `0.003` | Adam 学习率。VLA:1e-4 到 1e-2,比 language model 高。 | | `max_frames` | int | `10` | 每个 batch 的最大帧数(图像数)。VLA:1–32。 | | `action_dim` | int | `2` | 动作维度。默认 = (dx, dy),给夹爪用。 | | `quantization_levels` | int | `256` | 每个动作维度的量化级数(例如 256 = 8 bit)。 | | `create_timeout_seconds` | float | `1200.0` | session / model 创建超时。 | | `step_timeout_seconds` | float | `1200.0` | 单个 training step 超时。 | **SDK 专属(环境变量):** ```bash export MINT_OPENPI_SDK_BASE_MODEL="..." export MINT_OPENPI_SDK_LORA_RANK=16 export MINT_OPENPI_SDK_LR=0.003 export MINT_OPENPI_SDK_CREATE_TIMEOUT_SECONDS=1200 export MINT_OPENPI_SDK_STEP_TIMEOUT_SECONDS=1200 ``` **HTTP 专属(wire protocol):** - `create_session`:初始化训练 session。 - `create_model`:在 session 内分配 LoRA。 - `train_step`:提交数据,拿回 loss / metrics。 - `save_weights_for_sampler`:导出权重供推理。 - `delete_model`:清理。 完整 JSON schema 见 `openpi_vla_http.py`。 **状态:** MinT 的 VLA 支持还在演进。OpenPI FAST 是为低延迟机器人控制优化的 model。更高维度的任务(完整 manipulation)可能会在后续版本里发布更大的 model 变体。 # VLM (/zh/community/customize/vlm) import { Callout } from 'fumadocs-ui/components/callout'; # VLM Vision-Language Model 微调在 MinT 上 **Coming Soon**。MinT 服务端的 VLM 基础模型正在上线;本页描述的客户端 SDK 路径会在 `mint.macaron.xin` 和 `mint-cn.macaron.xin` 提供 VLM 模型后启用。 如需登记需求,发邮件到 `sales@mindlab.ltd` 或在 [Schedule a Demo](https://macaron.im/mindlab) 中注明 VLM。 ## 本页未来覆盖的内容 VLM 上线后,本页和其它算法页同样按四段结构展开: - **配置** —— `mint.ServiceClient`、面向 VLM 基础模型的 `create_lora_training_client`、image processor 的选择、image token 预算。 - **Prompting Guide** —— 在 chat-template 消息中放置 `` 占位符;多图与分辨率的注意点。 - **输出格式** —— assistant 回复在以图像为根据时如何被解析;视觉问答里的 bounding-box / region-of-interest 抽取。 - **全部参数** —— VLM 特有的旋钮(vision encoder 冻结、image patch size、最大 image token 数)叠加在标准 SFT / RL 参数之上。 ## 相关阅读 VLM 上线前,最接近的已发布部分: - [Concepts → Rendering](/zh/community/customize/concepts/rendering) —— 介绍 VLM 训练复用的 renderer 抽象。 - [VLA](/zh/community/customize/vla) —— vision-language-action 具身训练通过 OpenPI 集成已经上线。 # MinT 可接受使用政策 (/zh/community/support/acceptable-use) # **MinT 可接受使用政策** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 可接受使用政策》(以下简称“本AUP”)规定了在 MinT 上禁止从事的活动。本AUP构成《MinT 服务条款》不可分割的组成部分。您(包括您的客户、代您行事的任何个人)使用 MinT 即视为同意遵守本AUP。违反本AUP可能导致您的账户被暂停或终止、已付费用不予退还,且 Mindai 可向执法或监管机关移交相关线索。** **【MinT 由训练平台与中转站两个组成部分构成】MinT 训练平台仅生成模型参数、模型权重及相关训练成果,本身不直接生成文本、图像、音频、视频或其他生成式内容;您使用训练平台训练所得模型的下游部署、分发与使用由您自行决定并承担全部责任。MinT 中转站通过 API 接口方式向您提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM)的调用能力,模型输出可能包含文本、图像、音频、代码等生成式内容。因此,本 AUP 的禁止性条款既覆盖您在训练平台上的训练用途、上传用于训练的数据,也覆盖您通过中转站进行的模型调用行为、提交的输入以及对模型输出的下游使用;并同时覆盖您消耗我方算力资源与 API 服务的方式。** ## **第一条 适用范围与定义** 本 AUP 适用于:(a)对 MinT(含训练平台与中转站)、MinT API、MinT 控制台及 Mindai 任何相关服务的使用;(b)上传至或经由 MinT 处理的所有数据(含您通过中转站 API 提交的输入);(c)经由 MinT 产生的全部输出,包括通过训练平台产生的模型成果(含模型权重、checkpoint、LoRA 适配器、评估报告及其他训练产出)以及通过中转站 API 产生的模型输出。 本AUP中未另行定义的大写或加引号术语,以《MinT 服务条款》中的定义为准。此外: - “训练用途”:指您使用 MinT 训练平台训练、微调或评估模型时该模型的目的、设计或预期部署场景。 - “训练数据”:指您上传至 MinT 训练平台,或指示 MinT 训练平台出于训练模型之目的访问的任何数据集、Prompt、样本或其他材料。 - “算力滥用”:指任何消耗 Mindai 算力资源但并非用于善意进行机器学习模型训练、微调、评估或采样之活动。 ## **第二条 一般原则** 您应当合法、负责、善意地使用 MinT。具体而言,您不得: - 以违反适用法律、第三方权利或本AUP的方式使用 MinT; - 利用 MinT 损害、欺骗、欺诈、骚扰、监视或歧视他人; - 利用 MinT 破坏任何系统、网络或服务的安全性、完整性或可用性; - 利用 MinT 规避任何第三方服务、模型或数据集的条款、安全机制或内容控制;以及 - 允许任何第三方通过您的账户从事上述任何行为。 ## **第三条 客户责任** 您对下列事项独自承担责任:(a)您上传的训练数据;(b)您在 MinT 训练平台上训练、微调或评估的模型的训练用途;(c)您产生的训练产出;以及(d)您或您授予访问权限的任何第三方对该等训练产出的下游部署、分发或使用。Mindai 不对您的训练数据或训练用途进行事先审核、审查或批准。 如您将 MinT 的访问权授予员工、承包商、代理人或终端用户,您应对其行为与不作为承担与您本人同等的责任。您应在组织内部建立合理的内控措施(含访问控制、培训、监测),以确保您的组织遵守本AUP。 ## **第四条 守法义务** 您应遵守对您及您使用 MinT 适用的全部法律法规,包括但不限于: - 数据保护与隐私法(如 PDPA、GDPR、UK GDPR、PIPL、CCPA); - 知识产权与商业秘密法律; - 适用的美国、欧盟、英国、新加坡共和国、中华人民共和国及其他司法辖区的制裁、出口管制及反洗钱法律; - 适用于您下游使用训练产出的行业专门监管(如医疗器械、金融服务、汽车、关键基础设施监管); - 适用于您或您终端用户的人工智能与算法专门监管(在适用的情形下,包括关于生成式人工智能、深度合成、推荐算法、自动化决策及人工智能风险管理的规定);以及 - 内容相关法律(如禁止儿童性虐待材料、恐怖主义内容、煽动、诽谤、仇恨言论的法律)。 ## **第五条 禁止的训练用途** 您不得使用 MinT(无论通过训练平台训练、微调、评估模型,还是通过中转站调用模型)用于具有下列预期目的、可合理预见用途或实际部署的场景: ### **5.1 儿童性虐待与剥削** - 旨在或可合理预见用于生成、描绘、协助儿童性虐待材料(CSAM)、性剥削未成年人或诱骗未成年人的模型。 ### **5.2 大规模暴力与武器** - 旨在或可合理预见用于协助开发、获取或部署化学、生物、放射性或核(CBRN)武器,或其他可造成大规模伤亡之武器的模型; - 旨在策划、煽动或实质性协助恐怖主义或大规模暴力行为的模型。 ### **5.3 恶意软件与攻击性网络行动** - 旨在或可合理预见用于生成恶意软件、勒索软件、针对特定系统的漏洞利用代码、钓鱼工具包,或实质性协助未授权访问信息系统的模型。 ### **5.4 针对性骚扰、诽谤与非自愿亲密影像** - 旨在或可合理预见用于生成真实人物的非自愿亲密影像(含非自愿性深度伪造)的模型; - 旨在骚扰、诽谤、起底(dox)或冒充特定个人的模型。 ### **5.5 操纵与剥削脆弱群体** - 旨在或可合理预见以潜意识、操纵性或欺骗性手段实质性扭曲自然人行为,从而造成或可合理预见造成重大损害的模型;或 - 旨在或可合理预见利用特定群体(包括儿童、残障人士、处于经济或社会弱势处境的人)的脆弱性,从而造成或可合理预见造成重大损害的模型。 ### **5.6 基于敏感个人信息的推断与归类** - 旨在或可合理预见基于生物特征数据或行为数据,对自然人按敏感个人信息(包括种族或民族出身、政治观点、工会成员身份、宗教或哲学信仰、性生活、性取向)进行推断或归类的模型,但适用法律明确允许的情形除外(例如,对生物特征数据集的合法标注或筛选,或经主管机关授权的有限执法用途);以及 - 旨在部署于工作场所或教育机构的情绪识别系统,但出于医疗或安全原因而严格必要并具备合法性基础的除外。 ### **5.7 大规模监控、社会评分与非法生物识别** - 旨在或可合理预见用于实施大规模或无差别监控;用于对自然人进行社会评分并在不相关情境中对其作出不利或不公正待遇;仅基于画像或人格特征对个人进行预测性执法;或在公共可访问空间对自然人进行违反适用法律的实时或事后远程生物识别的模型。 ### **5.8 绕过安全、版权或内容审核机制** - 旨在绕过、禁用或规避任何第三方人工智能模型、平台或服务的安全机制、内容审核政策、版权保护或服务条款的模型(举例而言,包括对基础模型的越狱攻击或水印移除)。 ### **5.9 选举操纵与协调性虚假行为** - 旨在或可合理预见用于协助选举舞弊、压制选民、传播关于选举或候选人的实质性虚假内容,或针对公共关切事项实施协调性虚假行为以误导公众的模型。 ### **5.10 缺乏保障措施的高风险自主决策** - 旨在用于在高风险领域(含医疗诊断或治疗、金融授信或资格、就业或员工管理、教育或学生评估、刑事司法、执法、移民或边境管控、基本公共或私人服务的获取)进行完全或实质性自主决策的模型,但未具备:(i)相应监管授权;(ii)有意义的人工监督;(iii)针对预期用途的准确性与可靠性证明;以及(iv)符合适用人工智能风险管理要求。 ### **5.11 关键基础设施** - 旨在用作关键基础设施(含水、气、热、电的供应;交通网络;银行核心系统;数字基础设施)安全组件,或用于其运营管理的模型,但未具备:(i)行业监管授权;(ii)与该安全关键应用相称的安全保证证明;以及(iii)适当的人工监督与故障安全机制。 ### **5.12 其他违法或严重有害用途** - 任何其他违反适用法律的训练用途,或经 Mindai 合理判断对个人、社群或关键系统构成重大严重损害风险的训练用途。 ### **5.13 竞品模型开发(中转站输出)** - 使用中转站输出或以其他方式获取的模型响应,训练、开发、蒸馏或改进与 Macaron 系列模型或 Mindai 其他产品构成竞争关系的人工智能模型; - 以自动化或编程方式批量抓取、提取中转站输出内容用于建模用途(本协议明示允许的合理 API 调用除外); - 就中转站输出对外声称其为人工创作而非人工智能生成,或作出 Mindai 或其许可方未曾作出的性能、准确性或合规性承诺。 ## **第六条 未成年人与儿童安全** MinT 为面向企业与开发者的 AI 平台(含训练平台与中转站两个组成部分),不面向未成年人、亦不供未成年人使用。Mindai 将儿童安全视为不可谈判的底线,对任何利用本服务剥削、危害或将未成年人色情化的行为实行“零容忍”政策。本第六条系对第 5.1 条、下文第七条训练数据要求以及《服务条款》第 2.5 条的补充(而非限制)。 ### **6.1 不面向未成年人使用** - 若您未满十八(18)周岁(或您所在司法管辖区规定的完全民事行为能力年龄,以较高者为准),您不得注册、访问或使用 MinT; - 您不得使、指示或允许您监护或监督之下的任何未成年人访问、操作或以其他方式使用 MinT; - 当 MinT 由企业客户使用时,企业客户应当实施合理的身份验证与访问控制措施,足以确保仅经授权的成年员工访问本服务。 ### **6.2 涉及未成年人的禁止性训练用途** 在不限制第五条的前提下,您不得使用 MinT 训练平台训练、微调、评估任何将以下事项作为主要预期用途、可合理预见用途或实际部署用途之模型: - 生成、修改、传播或便利传播儿童性虐待内容(CSAM),包括任何将未成年人色情化或呈现为色情化形态的描绘(无论真实、计算机生成还是以其他合成方式呈现); - 诱骗、色情勒索、恐吓、欺骗或以其他方式针对未成年人,无论用于性剥削、财产剥削、极端化或诱导自伤; - 生成任何可识别未成年人的写实非合意亲密影像(包括深度伪造); - 基于生物识别、情绪或心理推断,对未成年人按敏感个人特征进行推断或分类,用于行为定向、广告投放或评分; - 出于商业广告目的或对未成年人产生法律效力或类似重大影响之决策目的,对未成年人进行画像。 ### **6.3 涉及未成年人的禁止性训练数据** 您不得向 MinT 上传,或以其他方式通过 MinT 处理下列训练数据: - CSAM 或根据适用的未成年人保护法律(包括但不限于美国《美国法典》第 18 编第 2251-2260 条、欧盟 2011/93/EU 指令、《中华人民共和国未成年人保护法》、《未成年人网络保护条例》)禁止持有或传播的其他内容; - 将未成年人色情化、虐待性或剥削性之图像,无论来源或合法取得途径; - 未取得监护人可核实同意或适用儿童数据保护制度(例如美国 COPPA、欧盟 GDPR 第 8 条、《中华人民共和国个人信息保护法》第 28 条和第 31 条、《儿童个人信息网络保护规定》)项下其他合法性基础而收集的未成年人个人信息; - 经生物识别或行为标识符扩充的未成年人数据集,但以下情形除外:该等收集有文件记录的合法性基础(例如经过适当伦理审查委员会批准并取得父母同意的医学研究)。 ### **6.4 检测、报告与配合执法** Mindai 可对本服务实施自动化与人工检测机制(包括与 NCMEC、IWF 等已知 CSAM 哈希库进行哈希匹配以及基于分类器的筛查)。若 Mindai 通过该等检测、用户举报或第三方通知获悉涉嫌 CSAM 或第 6.3 条所述其他内容,Mindai 将: - 按适用法律要求留存相关内容与元数据; - 在美国法律(《美国法典》第 18 编第 2258A 条)要求的情况下向美国国家失踪与受剥削儿童中心(NCMEC)报告,并在适用法律要求的情况下向其他主管国家机关(包括新加坡警察部队,以及必要时的中华人民共和国公安机关)报告; - 立即暂停或终止违规账户,无需事先通知;并 - 配合执法机关与儿童保护机关开展后续调查。 ### **6.5 举报渠道** 若您知悉任何实际或疑似违反本第六条的情形——包括本服务上存在 CSAM、或利用 MinT 针对未成年人的行为——您应当不无故迟延地通过以下渠道举报:contact@mindlab.ltd(邮件标题标注“CHILD SAFETY — URGENT”)。Mindai 将以最高优先级处理该等举报,且不会对善意举报疑似儿童安全违规行为的任何人员进行打击报复。 ## **第七条 训练数据要求** 您声明并保证,您的训练数据: - 来源合法,且符合适用法律、合同义务及其取得来源平台的服务条款; - 不含儿童性虐待材料、恐怖主义内容,或适用法律禁止持有或传播的其他内容; - 如包含个人信息,已基于合法性基础(如同意、履行合同、正当利益、法定义务)收集并处理,且您已履行向个人信息主体的全部告知义务; - 如包含敏感个人信息(依适用法律定义),已取得适用法律所要求的强化同意或其他合法性基础; - 不侵犯任何第三方的知识产权、商业秘密、肖像权或其他专有权利,但您依书面授权可使用的除外; - 非通过未授权访问信息系统、违反平台条款的爬取、违反保密义务或其他非法手段取得;以及 - 如适用法律有要求(含 PIPL、GDPR 跨境规则、国家安全/数据出境制度),已遵守相应跨境传输要求传输至 MinT。 Mindai 不对训练数据进行事先审查,亦不对训练数据的合法性或内容承担责任。但 Mindai 在收到可信举报或开展调查时,可访问、隔离或删除其合理认为违反本AUP的训练数据。 ## **第八条 算力资源与 API 服务滥用** 您不得将 MinT 算力资源或中转站 API 服务用于下列任何目的: - 加密货币挖矿、区块链验证,或任何工作量证明(PoW)或权益证明(PoS)相关运算; - 分布式拒绝服务(DDoS)攻击、僵尸网络运行,或针对第三方系统的任何协调性流量生成; - 发送未经请求的批量电子邮件、短信或其他垃圾消息,含运营垃圾邮件基础设施; - 托管、分发或路由非法内容、恶意软件、命令与控制服务器、钓鱼页面或盗版内容; - 运营开放代理、匿名化中继或其他实质性掩盖行为人身份的中介网络服务; - 多开账户、使用盗用身份、共用凭证、自动化注册流程,或以其他方式规避速率限制、免费层限制、合理使用阈值或计费控制; - 在超出您训练、微调、评估或采样活动善意需求的范围内预留或囤积算力资源; - 未经 Mindai 事先书面授权,对 MinT 本身进行性能基准测试、容量测试或负载测试; - 转售、共享、买卖或以其他方式向第三方分发您的 API Key、账户凭证或对 MinT 服务的访问权限。 ## **第九条 安全与平台完整性** 您不得,亦不得尝试: - 除依据漏洞披露计划或经 Mindai 书面授权外,对 Mindai 任何系统、网络或服务进行探测、扫描、渗透测试或漏洞测试; - 对 MinT 中非面向客户的组件进行反向工程、反编译或反汇编,但适用法律明确允许的除外; - 绕过、规避或禁用 MinT 的访问控制、认证机制、隔离边界或使用限制; - 干扰、降级或试图未授权访问其他 Mindai 客户的数据、会话、训练任务或算力资源; - 向 MinT 或与 MinT 交互的系统中引入恶意代码、蠕虫、木马或其他有害负载; - 使用 MinT 开发、训练或评估在功能上与 MinT(含训练基础设施与 API 网关服务)构成竞争关系的产品(本限制不适用于您为自有用途开发模型的内部研发活动)。 您应在发现 MinT 任何疑似安全漏洞后,及时向 contact@mindlab.ltd 报告,并在协调披露完成前不再进一步利用该漏洞。 ## **第十条 制裁、出口管制及受限司法辖区** 您声明并保证: - 您、您的关联公司、您的受益所有人及您的终端用户均不在美国(含 OFAC SDN、BIS 实体清单、被拒绝人员清单)、欧盟、英国、联合国、新加坡共和国或其他适用司法辖区维护的任何受限名单上; - 您不位于、注册成立于或惯常居住于任何受全面制裁的司法辖区(目前包括但不限于古巴、伊朗、朝鲜、叙利亚以及乌克兰的克里米亚、顿涅茨克与卢甘斯克地区); - 您不会以违反适用制裁或出口管制法律的方式,将 MinT 用于、或将 MinT 上产生的训练产出转移给任何受限方或受限目的地; - 您不会未经预先取得所需许可证而使用 MinT 训练平台开发、训练或分发其出口受任何适用出口管制制度限制的模型。 Mindai 可就账户、交易及训练产出对照适用的受限名单与禁运目的地清单进行筛查,并可暂停或终止未通过筛查的账户。 ## **第十一条 第三方隐私与知识产权** 您不得使用 MinT: - 在缺乏适用数据保护法律所要求合法性基础的情况下,使用第三方个人信息训练模型; - 在未经授权的情况下聚合、关联或重新识别去标识化或假名化的个人信息; - 在未经授权的情况下重建、镜像或实质性复制第三方的专有数据集、模型权重或其他知识产权; - 训练以规避第三方数据集、模型或 API 许可条款为主要目的的模型(含通过蒸馏、模型窃取或系统性 Prompt 抽取等方式);以及 - 任何其他侵犯或可能侵犯第三方个人信息、隐私权、著作权、专利权、商标权、商业秘密或其他知识产权与合法权益的行为,或以技术手段规避、削弱第三方为保护上述权益所采取的技术措施或合同措施的行为。 ## **第十二条 子处理方AUP传递** MinT 借助第三方子处理方提供的基础设施(含云、GPU、存储与网络服务商)交付。该等子处理方维护其自身的可接受使用政策,亦可能适用于您对 MinT 的使用。您使用 MinT 即视为同意遵守 Mindai 子处理方的可接受使用政策,该等政策不时发布于《MinT 隐私政策》所指明的子处理方页面。若某项子处理方的可接受使用政策就特定活动较本AUP更为严格,则就该项活动适用更严格的标准。 ## **第十三条 违规举报** 如您发现任何实际或疑似违反本AUP的情形——无论是您本人、其他 Mindai 客户,还是使用 MinT 上产生的训练产出的第三方——请及时向 contact@mindlab.ltd 举报;一般咨询请联系 contact@mindlab.ltd。举报内容应尽可能包括:(a)疑似违规的性质;(b)违规方的身份;(c)违规的时间与方式;(d)任何佐证材料(如 URL、截图、账户标识)。在合理可行且符合调查与法律义务的范围内,Mindai 将对举报内容予以保密。 ## **第十四条 调查、暂停与终止** ### **14.1 调查** Mindai 可对疑似违反本AUP的行为开展调查。调查中,Mindai 可:(a)审查账户信息、使用遥测数据与安全日志;(b)在合理与合法范围内访问训练数据或训练产出(受《MinT 隐私政策》及 DPA 的保密与最小化原则约束);以及(c)要求您提供信息与合作。 ### **14.2 暂停** Mindai 在合理认为以下情形之一存在时,可全部或部分暂停您对 MinT 的访问:(a)正在发生或已发生违反本AUP的行为;(b)为保护 MinT 或其他客户的安全性、完整性或可用性而有必要暂停;(c)法律或有权机关命令要求暂停;或(d)情形构成《MinT 服务条款》所定义的“严重违约”。在合理可行且法律未禁止的范围内,Mindai 将事先通知并给予补救机会;但在严重或持续损害情形下,Mindai 可不经事先通知立即暂停。 ### **14.3 终止** Mindai 可依照《MinT 服务条款》中的终止条款终止本服务条款及您的账户,包括对本AUP的重大违反或反复违反。因违反本AUP而终止的,您无权要求退还已就所提供服务支付的费用。 ### **14.4 配合机关** Mindai 将依照适用法律及《MinT 隐私政策》,配合就违反本AUP事项发出的合法监管、司法或执法要求,包括保存与提交相关记录。 ### **14.5 证据保全** 如 Mindai 合理认为与疑似违规相关的记录可能为调查或诉讼所需,Mindai 可在《MinT 隐私政策》所规定的常规保留期限之外保存该等记录(含训练数据与训练产出),直至相关调查或诉讼结案。 ## **第十五条 赔偿** 您同意就因您本人、您的人员或任何使用 MinT 上产生的训练产出之第三方违反本AUP而产生或与之相关的全部主张、损失、损害、责任、罚款、罚金及费用(含合理律师费),按照《MinT 服务条款》中的赔偿条款,向 Mindai 及其关联公司,及其各自的董事、高级管理人员、员工与代理人作出赔偿、抗辩并使其免受损害。 ## **第十六条 本AUP的更新** Mindai 可不时更新本AUP,以反映法律、技术、威胁形势或 Mindai 业务实践的变化。重大更新将依《MinT 服务条款》予以通知。在更新生效日之后您继续使用 MinT,即视为接受更新后的AUP。 ## **第十七条 联系方式** 如对本AUP有疑问、需要澄清或需就本AUP所限制的活动取得书面授权,请通过下列方式联系: - 服务提供方:MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司),注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 电子邮箱(滥用举报、安全漏洞报告及通用咨询):contact@mindlab.ltd ## **生效日期与版本** 本AUP自封面所载生效日期起生效。Mindai 可发布本AUP的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本AUP正文结束 ——* # MinT 数据处理协议 (/zh/community/support/data-processing-addendum) # **数据处理协议** *MinT — Mind Lab Toolkit* 本“数据处理协议”(下称“本 DPA”)构成 MINDAI PTE. LTD.(一家在新加坡注册成立的公司,下称“Mindai”)与下文所识别客户(下称“客户”)签订的 MinT 服务条款或其他书面主协议(下称“主协议”)的组成部分,并受其约束。本 DPA 规范 Mindai 为提供 MinT 服务而代客户处理个人信息的行为。 背景。MinT 由两个独立的组成部分构成:(a)MinT 训练平台——为强化学习模型训练基础设施平台(“参数平台”),其主要产出为由客户提供的训练数据与配置产生的模型参数(包括模型权重、检查点及相关训练产物);就训练平台,Mindai 本身并不代客户直接向最终用户或个人信息主体生成或交付内容。(b)MinT 中转站——Mindai 通过 API 接口方式向客户提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM)的调用能力,模型输出可能包含文本、图像、代码等生成式内容。双方确认,客户始终单独负责:(i)其向本服务提交的训练数据、及通过中转站 API 提交的输入的合法性;(ii)使用本服务训练的任何模型或通过中转站调用的模型输出的特性、用途及处置;以及(iii)客户对上述模型的部署或使用行为,或对模型输出的下游使用而与个人信息主体产生的任何交互。Mindai 在本 DPA 项下的角色相应受限。 生效日期:[日期] 客户法定名称:[客户法定名称] 客户地址:[客户注册地址] 客户授权代表:[姓名 / 职务] Mindai:MINDAI PTE. LTD.,在新加坡注册成立的公司,公司注册号 202322737E,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721。 就个人信息处理事项,如本 DPA 与主协议存在冲突,以本 DPA 为准。本 DPA 未加定义的首写词语具有主协议赋予其的含义。 ## **第一条 定义** 1.1 “适用数据保护法”指对本 DPA 项下个人信息处理适用的一切法律法规,包括但不限于:(a)欧盟《通用数据保护条例》(2016/679)及英国 GDPR(合称“GDPR”);(b)《中华人民共和国个人信息保护法》(“PIPL”)及相关配套规定;(c)新加坡《个人数据保护法》(“PDPA”);以及(d)其他对本协议项下活动适用的数据保护或隐私保护法律。 1.2 “客户数据”具有主协议赋予其的含义,包括但不限于您通过训练平台上传的训练数据、模型权重、检查点等训练产物,以及您通过中转站 API 提交的输入(Inputs)与由此产生的输出(Outputs),并包括其中包含的任何个人信息。 1.3 “个人信息主体”指个人信息所指向的已识别或可识别的自然人。 1.4 “个人信息”指 Mindai 代客户处理的与个人信息主体相关的任何信息,具体类别详见附件 A。 1.5 “处理”指对个人信息进行的任何操作或操作集合,不论是否通过自动化手段进行,包括收集、存储、访问、使用、传输及删除等。 1.6 “控制者”“处理者”“个人数据泄露”与“监管机构”按 GDPR 的含义解释;“个人信息处理者”与“受托人”按 PIPL 的含义解释;其他适用数据保护法项下的对应用语相应解释。 1.7 “子处理方”指 Mindai 为提供本服务而委托处理个人信息的任何第三方。 1.8 “安全白皮书”指 Mindai 不时更新的《MinT 安全与合规白皮书》。 1.9 “子处理方清单”指附件 C 所提及的已批准子处理方清单,并可不时更新。 ## **第二条 双方角色** 2.1 双方确认,就本 DPA 项下个人信息处理而言:(a)客户为控制者(在 PIPL 项下为个人信息处理者);(b)Mindai 为代客户处理的处理者(在 PIPL 项下为受托人)。 2.2 本 DPA 不免除客户作为控制者/个人信息处理者依适用数据保护法应自行承担的义务,包括取得合法性基础及向个人信息主体履行告知义务。 ## **第三条 处理的范围与细节** 3.1 主题与期限。Mindai 仅为向客户提供主协议项下的服务而处理个人信息,处理期限为主协议有效期限,并可根据适用法律或第十二条的约定继续保留必要时间。 3.2 性质与目的、类别、指示。处理性质与目的、个人信息类别与个人信息主体类别详见附件 A。 3.3 客户指示。Mindai 仅依客户的书面指示处理个人信息,包括有关跨境传输的指示,除非适用法律另有要求。主协议、本 DPA 及客户根据服务文档对服务的使用行为即构成客户的书面指示。如 Mindai 认为某项指示违反适用数据保护法,应及时告知客户。 3.4 使用限制(不用于训练承诺)。Mindai 不得出售或共享个人信息(依适用法律定义)。Mindai 不得将客户数据、客户提交的训练数据或客户模型产出(定义见下文)用于训练、微调、评测、基准测试或其他改进 Mindai 自有或任何第三方的人工智能模型,但以下情形除外:(a)不识别客户或任何个人信息主体的聚合去标识化运营统计信息;或(b)客户事先给予单独、明示且可撤回的书面同意,客户可随时向后撤回该同意。为免疑义,代客户使用本服务产生的模型参数、模型权重、检查点及其他训练产物(下称“客户模型产出”)构成主协议项下的客户数据。除为提供、保障和计费本服务所严格必要的范围外,Mindai 不得留存、访问、重新利用客户模型产出或自其中获取独立商业价值,并应按第十二条将客户模型产出返还或删除。 3.5 部署模式与处理范围。Mindai 的处理范围因客户选择的部署模式而不同:(a)云端部署——Mindai 在云基础设施(详见子处理方清单)上托管本服务,就存储于本服务或经由本服务传输的客户数据,作为处理者/受托人处理;(b)私有化或本地化部署——本服务安装于客户环境或客户控制的云租户内,Mindai 不对客户数据或训练数据享有常规访问权,客户作为该等数据的唯一控制者与处理者。在(b)项情形下,Mindai 为了许可、计费与支持本服务而收集的最少身份、许可证、配置、使用遥测与支持数据,属于 Mindai 为自身经营目的进行的处理;就该等数据而言,Mindai 作为独立控制者(在 PIPL 项下为独立的个人信息处理者),仅按隐私政策与适用数据保护法处理。Mindai 对该等数据的保留期限不超出上述目的所必要的范围,并在任何情形下不超过相应支持、许可或计费关系终止后二十四(24)个月,但法律另有更长期限要求的除外。 3.6 API 内容的返还或删除。您通过中转站 API 提交的输入与由此产生的输出(以下称“API 内容”)视为客户数据的一部分。主协议终止后,Mindai 将在三十(30)日内自 Mindai 系统删除全部 API 内容,除非:(i)适用法律要求 Mindai 保留;或(ii)您书面同意保留更长期限。 ## **第四条 保密** 4.1 Mindai 应确保其授权处理个人信息的人员承担书面保密义务,或受适当的法定保密义务约束。 4.2 对个人信息的访问权限仅限于履行主协议及本 DPA 项下义务而需要访问的人员。 ## **第五条 安全措施** 5.1 Mindai 应实施并维护适当的技术与组织措施,以防止个人信息遭受意外或非法的毁损、丢失、篡改、未经授权的披露或访问(“个人数据泄露”),并考虑技术水平、实施成本、处理的性质、范围、情境与目的,以及对个人信息主体的风险。 5.2 Mindai 现行技术与组织措施的概要见附件 B,详细说明见安全白皮书。Mindai 可不时更新上述措施,但不得降低整体安全水平。 ## **第六条 子处理方** 6.1 概括授权。客户向 Mindai 提供概括授权,允许其委托子处理方协助提供服务,但应符合本第六条的要求。 6.2 现行清单。已批准子处理方以子处理方清单的形式维护,客户可查阅,见附件 C。 6.3 变更通知。Mindai 新增或替换子处理方的,应通过服务控制台、客户门户或电子邮件等方式,于变更生效前至少三十(30)日向客户发出通知并更新子处理方清单;如出于安全、法律或运营紧急需要缩短通知期限的,应尽快告知。 6.4 异议。客户可在 Mindai 通知后十五(15)日内基于合理的数据保护理由书面提出异议。双方应本着诚信原则协商解决。如协商不成,客户的唯一救济为终止需要该新子处理方提供的相应服务部分,并按比例退还该部分已预付费用。 6.5 义务传导。Mindai 应与每一子处理方签订书面协议,向其施加与本 DPA 实质等同的数据保护义务。Mindai 对子处理方的行为与不作为向客户承担与自身相同的责任。 ## **第七条 数据跨境传输** 7.1 部署区域选择。Mindai 提供多区域服务部署。客户在开通服务时选择部署区域。未作具体选择的,Mindai 适用其默认区域部署,并应客户书面请求予以书面確认。 7.2 传输机制。如处理涉及个人信息跨司法辖区传输,双方应诚实协作,适用相关适用数据保护法要求的传输机制,包括但不限于:(a)中国个人信息出境标准合同、数据出境安全评估或个人信息保护认证;(b)欧盟标准合同条款(SCCs)及/或英国国际数据传输协议;(c)PDPA 或其他适用法律项下的等效机制。 7.3 SCC 纳入。在本 DPA 项下传输的个人信息适用 GDPR 的范围内,双方视为已签订欧盟委员会 2021/914 号实施决定批准的标准合同条款(模块二:控制者至处理者),客户为数据出口方,Mindai 为数据进口方。可选条款的选择见附件 A。就 GDPR 项下传输而言,如本 DPA 与 SCC 冲突,以 SCC 为准。 7.4 中国出境。个人信息适用 PIPL 且跨境传向中国大陆境外的,客户作为个人信息处理者应确保适用有效传输机制(包括标准合同、安全评估或认证等)。Mindai 应提供合理协助及必要信息,支持客户的备案或评估工作。 ## **第八条 个人信息主体权利** 8.1 考虑处理性质,Mindai 应通过适当的技术与组织措施在可行范围内向客户提供合理协助,使其有能力回应个人信息主体行使适用数据保护法项下权利的请求,包括查阅、更正、删除、限制处理、反对、可携带权及撤回同意。 8.2 Mindai 如直接收到个人信息主体就代客户处理个人信息的请求,应及时告知该个人信息主体向客户提出。除非经客户授权或适用法律要求,否则不作实质性回复。 ## **第九条 数据保护影响评估与加强监管咨询** 9.1 Mindai 应根据处理性质以及其所掌握的信息,在适用数据保护法所要求的范围内,为客户开展数据保护影响评估(DPIA)、PIPL 项下个人信息保护影响评估(PIPIA),或向监管机构进行事前咨询提供合理协助。 ## **第十条 个人数据泄露通知** 10.1 Mindai 在确认发生影响客户个人信息的个人数据泄露后,应不得延迟地通知客户,且不迟于确认后七十二(72)小时。 10.2 通知应在当时已知及合理可获取的范围内包含:(a)事件性质描述,包括涉及的个人信息主体类别与记录级别的大致数量;(b)可能后果;(c)已采取或拟采取的处置与减缓措施;及(d)进一步信息的联系点。 10.3 Mindai 应配合客户的合理信息请求,采取合理措施保存证据、控制事件影响。是否需通知个人信息主体、监管机构或其他第三方,由客户自行评估决定。 ## **第十一条 审计与信息权** 11.1 信息提供。Mindai 应应客户合理的书面请求,每十二个月不超过一次(发生个人数据泄露或监管要求的情形除外),向客户提供为证明本 DPA 合规所合理必要的信息,包括现行认证、审计报告摘要(如 ISO 27001、SOC 2 报告,在取得后适用)、渗透测试摘要以及相关政策。 11.2 现场审计。在第 11.1 款所提信息不足以证明本 DPA 及适用数据保护法(包括 GDPR 第 28 条第 3 款第 h 项)下合规的情形下,客户可提前三十(30)日书面通知,在合理保密与安全协议项下,由双方接受的、受保密义务约束的独立审计人员进行或经其对 Mindai 相关设施与记录进行现场审计,但限于验证合规所合理必要的范围。 11.3 成本与范围。审计应在正常营业时间进行,不得不合理地干扰 Mindai 运营,不得涉及其他客户的数据或超出必要范围的敏感安全信息。客户承担自身成本;审计频次超过每年一次,或因客户方原因触发的,客户应补偿 Mindai 的合理费用。 ## **第十二条 个人信息的返还或删除** 12.1 主协议终止或到期后,经客户选择,Mindai 应在合理期限内(在任何情形下不晚于主协议与隐私政策规定的数据可携带与删除窗口):(a)向客户返还代其处理的全部个人信息;或(b)删除该等个人信息。法律要求保留或为处理实际或可预见的法律争议所必要的情形除外。 12.2 属法定保留情形的,Mindai 应继续确保该等个人信息的保密与安全,仅用于需要保留的目的。经客户请求,Mindai 应提供书面确认,确认已履行本第十二条下的义务。 ## **第十三条 责任** 13.1 双方基于或与本 DPA 相关的责任,受主协议责任限制与免除条款约束。为免疑义,本 DPA 不会超过主协议责任上限提高任何一方的责任上限,适用数据保护法强制性规定另有要求的除外。 ## **第十四条 客户监管合规与协助** 14.1 客户合规责任。客户就其训练产出对外部署应用所应履行的备案、登记、安全评估、内容审核、用户保护等监管义务(包括但不限于适用司法辖区项下生成式人工智能、深度合成、算法推荐相关监管制度),由客户单独承担。 14.2 Mindai 协助范围。Mindai 应客户书面合理请求,按《MinT 安全与合规白皮书》所载范围提供合规材料,协助客户完成监管备案或登记,具体包括:(a)训练平台侧材料(如训练数据处理、算力资源与安全措施说明);及(b)中转站侧材料(如 Macaron 系列模型的基本信息、第三方开源模型的部署与合规状况、API 层面的安全与内容审核措施说明),具体范围与客户拟履行的监管义务相匹配。 14.3 责任边界。Mindai 在本条下提供的协助以训练平台基础设施层面及 Mindai 运营的中转站服务层面信息为限,不就客户备案审批结果或客户应用层合规结果作出担保。客户因自身应用合规问题、或因其对训练平台上训练所得模型或通过中转站调用模型的配置、部署、使用引发的监管处罚,不影响 Mindai 在主协议及本 DPA 项下的责任范围。 ## **第十五条 一般条款** 15.1 效力顺序。本 DPA 与主协议就个人信息处理事项存在冲突的,以本 DPA 为准。为 GDPR 项下传输之目的,本 DPA 与欧盟标准合同条款(SCC)冲突的,以 SCC 为准。 15.2 更新。Mindai 可不时更新本 DPA,以反映适用数据保护法变化、新的传输机制或运营改进;任何更新均不得在未经客户同意的情况下实质性降低本 DPA 对个人信息所提供的保护水平。 15.3 适用法律与争议解决。本 DPA 的适用法律及争议解决方式与主协议一致,适用数据保护法强制性规定优先适用的情形除外。 15.4 可分性。本 DPA 某一条款被认定无效或不可执行的,不影响其他条款的效力。 15.5 副本与电子签名。本 DPA 可以副本形式签署(包括电子签名),每份副本视为原件,合并构成同一份文件。 ## **签字页** 双方确认已阅读并理解本 DPA 的全部条款,于首页所载生效日期由授权代表签署为凭。 MINDAI PTE. LTD. 签字:__________________________________ 姓名:[姓名] 职务:[职务] 日期:__________________________________ [客户法定名称] 签字:__________________________________ 姓名:[姓名] 职务:[职务] 日期:__________________________________ ## **附件 A 处理细节** ### **A.1 主题与期限** 主题:为支持客户使用 MinT(包括训练平台与中转站两个组成部分)而处理个人信息,包括服务开通、运营、支持、安全与计费。 期限:主协议有效期限,加上适用法律要求或第十二条允许的保留期限。 ### **A.2 性质与目的** 性质:托管、存储、传输、计算、记录客户向服务提交的客户数据中包含的个人信息,以提供服务。 目的:按主协议约定提供 MinT 服务;安全与滥用防范;计费与对账;客户支持。 ### **A.3 个人信息主体类别** - 客户授权的服务用户(员工、外部承包商、开发者)。 - 客户向服务提交的训练数据集、评估数据、提示词或输出内容中涉及的个人信息主体。 ### **A.4 个人信息类别** - 账号/身份信息:姓名、商务邮箱、职位、所属组织、身份验证凭证。 - 使用遥测数据:API 请求元数据(时间戳、端点、响应状态码、请求大小)、GPU 时长消耗、训练任务标识、控制台交互。 - 计费数据:计费主体、税务识别号、发票地址、支付方式令牌(Mindai 不存储完整卡号)。 - 支持沟通:工单内容、截屏、客户主动提交的日志。 - 客户模型产出:代客户产生的模型权重文件、训练检查点及中间训练产物,在其可能推导出个人信息的范围内(按第 3.4 款视为客户数据)。 - 客户选择向服务提交的客户数据中所包含的任何个人信息(其类别因客户具体使用场景而有所不同)。 ### **A.5 特殊类别(敏感个人信息)** 本服务不旨在处理特殊类别个人数据或敏感个人信息,除非客户已取得有效法律基础并确认已采取适当保护措施。除经与 Mindai 特别书面约定,客户不得提交该等数据。 ### **A.6 传输频率** 在主协议有效期内按需持续进行。 ### **A.7 跨境传输机制** 以下跨境传输机制的适用以基础处理所属的管辖范围为条件: - 默认机制(PIPL / PDPA 框架):个人信息适用 PIPL 且跨境传向中国大陆境外的,客户作为个人信息处理者应确保适用有效的 PIPL 出境机制(考虑个案适用性,可为个人信息出境标准合同、数据出境安全评估或个人信息保护认证)。PDPA 适用的,双方应遵守其传输限制要求,并借助约定形式施加等效保护。 - 条件机制(GDPR / 英国 GDPR):仅在个人信息处理落入 GDPR 或英国 GDPR 属地范围时,触发欧盟委员会 2021/914 号实施决定批准的标准合同条款(模块二:控制者至处理者),以及如适用的英国国际数据传输协议/附件。仅就该等传输而言,适用以下 SCC 可选条款: - 第 7 条——接入条款:选用。 - 第 9 条——子处理方授权:选择方式 2(概括书面授权),提前三十(30)日通知。 - 第 11 条——独立救济/争议解决:未选用(个人信息主体仍保留全部法定权利)。 - 第 17 条——适用法律:[由双方其后选定;无约定的,以 SCC 触发时 Mindai 书面指定的、符合第 17 条选项 1 的某欧盟成员国法律为准]。 - 第 18 条——管辖法院:[由双方其后选定;无约定的,以第 17 条所选适用法律所属欧盟成员国的法院为准]。 ## **附件 B 技术与组织措施** 以下为 Mindai 所实施的技术与组织措施概要。完整描述见安全白皮书,该白皮书通过引用纳入本附件 B。 ### **B.1 身份与访问控制** - 基于角色的访问控制(RBAC)与最小权限原则。 - 对所有管理性与特权访问强制要求多因素认证(MFA)。 - 生产系统的即时(JIT)授权与审批流程。 - 季度权限复核;岗位变动与离职时自动收回权限。 ### **B.2 加密** - 全链路传输采用 TLS 1.2 或以上。 - 静态数据采用 AES-256 或等效算法;基于 KMS 的密钥管理;云端部署场景下支持客户自主管理密钥(CMK)。 - 密钥与托管凭证保存在专用密钥管理系统中,并配备审计日志。 ### **B.3 网络与基础设施安全** - 虚拟私有云隔离、安全组与网络 ACL。 - 边缘层网络应用防火墙与 DDoS 防护。 - 加固后的操作系统基准与自动化补丁管理。 - 按定期节奏开展漏洞扫描与渗透测试。 ### **B.4 隔离与租户隔离** - 租户级逻辑隔离,租户范围内的身份、存储与计算边界。 - 开发、测试与生产环境的职责分离。 ### **B.5 监控、日志与事件响应** - 对访问、配置与安全相关事件的集中式日志记录;不可篡改的日志保留机制。 - 7×24 安全监控,配备告警与值班响应。 - 书面的事件响应预案,包含角色分工、沟通要求、取证保留与事后复盘。 ### **B.6 业务连续性与抗毁能力** - 生产组件多可用区部署。 - 定期加密备份,经测试的恢复流程与明确的 RTO/RPO 目标。 - 至少每年开展一次业务连续性与灾备演练。 ### **B.7 人员** - 在法律允许范围内,对有权访问生产系统的人员进行背景审查。 - 入职时与每年开展安全与隐私培训。 - 所有可接触客户数据的人员均订立书面保密义务。 ### **B.8 供应商管理** - 对子处理方的安全与隐私尽调。 - 与子处理方签订书面数据保护协议,施加与本 DPA 实质等同的义务。 - 对子处理方的履约表现与安全态势持续监控。 ### **B.9 认证与框架** Mindai 按 MLPS 2.0 等保三级(中国)、ISO/IEC 27001、SOC 2、ISO/IEC 27701 的要求对标推进。当前进展见安全白皮书。 ## **附件 C 已批准子处理方** 已批准子处理方以子处理方清单形式维护,通过引用纳入本 DPA。现行子处理方清单可通过 MinT 客户门户查阅,或交由 contact@mindlab.ltd 索取。 当前在用子处理方类别包括: - 云与基础设施:华为云、阿里云、火山引擎(用于中国区域部署)。 - 支付处理:具备 PCI-DSS 资质的支付服务商。 - 电子邮件与事务性沟通服务商。 - 客户支持与工单管理工具。 - 监控、日志与可观测性工具。 每一子处理方的名称、角色、区域以及所处理个人信息类别,见子处理方清单。 # FAQ (/zh/community/support/faq) # FAQ 这里集中回答首次使用 MinT 时最常见的问题:SFT vs RL、域名选择和 API key 获取方式。 ## 我应该做 SFT 还是 RL? 如果你已经知道目标输出,并且有标注样本,使用 **SFT**。 如果你没有唯一标准答案,但能用 reward、verifier、测试或环境反馈给模型行为打分,使用 **RL**。 如果两者都有,可以组合使用。常见做法是用 SFT 建立基础行为,再用 RL 做目标优化,但这不是所有任务都必须遵守的固定顺序。 ## MinT 支持 SFT 吗? 支持。MinT 直接支持 SFT。 标准 SFT 路径就是: - `forward_backward(..., loss_fn="cross_entropy")` - `optim_step(...)` ## 应该用境外还是境内域名? 按你的网络路径来选: - 境内 -> `https://mint-cn.macaron.xin/` - 境外 -> `https://mint.macaron.xin/` 如果不确定,先用与你所在区域一致的域名。最实际的判断标准是延迟更低、连接更稳定。 ## `MINT_API_KEY` 从哪里获取? 访问 [https://macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) 自助注册即可获得。 # Support (/zh/community/support) import { Callout } from 'fumadocs-ui/components/callout'; # Support ## 获取帮助 | 渠道 | 用途 | |---|---| | [FAQ](/zh/community/support/faq) | 首次跑通的常见问题、常见报错、区域/endpoint 选择 | | [GitHub Issues](https://github.com/MindLab-Research/mint-quickstart/issues) | bug 报告、特性请求、可复现的失败 | | [mint-feedback](https://github.com/MindLab-Research/mint-feedback) | MinT 各方向的外部反馈、bug 报告、功能请求 | | [macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) | 自助注册获取 `MINT_API_KEY` | | `sales@mindlab.ltd` | 模型访问、企业咨询 | | [Schedule a Demo](https://macaron.im/mindlab) | 入门 onboarding、定制训练讨论 | 区域选择:海外用 `mint.macaron.xin`,中国大陆用 `mint-cn.macaron.xin`。同一个 `MINT_API_KEY` 在两个 endpoint 都能用。 ## 社区 加入 MinT 社区,获取帮助、分享成果、了解最新动态。 ### 微信 添加微信小助手 **mindlab-bot**,获取技术支持和最新资讯。 ### Discord 加入我们的 [Discord 服务器](https://discord.gg/HNrxHaJX),实时交流、问答和社区互助。 ## Repositories | 仓库 | 用途 | |---|---| | [mindlab-toolkit](https://github.com/MindLab-Research/mindlab-toolkit) | 可安装的 MinT 客户端 SDK 和 Tinker 兼容层。`pip install` 的目标。 | | [mint-quickstart](https://github.com/MindLab-Research/mint-quickstart) | 标准的首次跑通例子 —— `quickstart.py`、`custom_reward.py`、`custom_loss.py`、`sampling_log.py`。新用户的起点。 | | [mint-cookbook](https://github.com/MindLab-Research/mint-cookbook) | 端到端 recipe 风格的例子和实验集合。 | | [mint-doc](https://github.com/MindLab-Research/mint-doc) | 你正在看的这个文档站。 | ## 法律与政策 下列文件定义了 MinT 的使用条款: - [服务条款](/zh/community/support/terms) - [隐私政策](/zh/community/support/privacy) - [可接受使用政策](/zh/community/support/acceptable-use) - [服务水平协议](/zh/community/support/sla) - [安全与合规白皮书](/zh/community/support/security-compliance) - [数据处理协议](/zh/community/support/data-processing-addendum) - [子处理方清单](/zh/community/support/subprocessors) - [责任披露](/zh/community/support/responsible-disclosure) - [完整 v2.0 法律文件集](/zh/community/support/other-files) **企业版。** 想要生产级部署、专属算力或定制 SLA,请查看 [企业版](/zh/enterprise) 或发邮件到 `sales@mindlab.ltd`。 # MinT v2.0 法律文件集 (/zh/community/support/other-files) # MinT v2.0 法律文件集 当前版本的 MinT v2.0 法律、隐私、服务与安全文件如下: - [服务条款](/zh/community/support/terms) - [隐私政策](/zh/community/support/privacy) - [可接受使用政策](/zh/community/support/acceptable-use) - [服务水平协议](/zh/community/support/sla) - [安全与合规白皮书](/zh/community/support/security-compliance) - [数据处理协议](/zh/community/support/data-processing-addendum) - [子处理方清单](/zh/community/support/subprocessors) 如对这些文件有任何疑问,请联系 [sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 # MinT 隐私政策 (/zh/community/support/privacy) # **MinT 隐私政策** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 隐私政策》(以下简称“本政策”)描述 MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721,以下简称“Mindai”、“我们”)在您注册并使用 MinT(Mind Lab Toolkit)时,如何收集、使用、披露、传输、存储和保护您的个人数据/个人信息。本政策构成《MinT 服务条款》不可分割的组成部分。您注册账户或使用 MinT 即视为知悉并同意本政策。** **【核心承诺】(一)MinT 系面向开发者与企业客户的人工智能平台,由两个独立的组成部分构成(训练平台与中转站);未经您事先单独的、明示的、可撤回的书面同意,我们不会将您的客户数据、训练数据、训练产出,或您通过中转站 API 提交的输入与由此产生的输出,用于训练 Mindai 自有或任何第三方的人工智能模型。(二)我们仅收集为提供、保障和计费本服务所必需的个人信息。(三)涉及跨境传输的,我们将根据适用法(新加坡 PDPA、欧盟 GDPR、中国 PIPL 等)采取相应的法律机制。** ## **第一条 定义** 本政策中使用的大写或加引号的术语,未另行定义的,以《MinT 服务条款》中的定义为准。此外: - “个人信息”或“个人数据”:指与已识别或可识别的自然人有关的任何信息,含义同适用数据保护法律(包括新加坡 PDPA、欧盟 GDPR、英国 GDPR、中国 PIPL)项下的相应定义。 - “敏感个人信息”:指适用数据保护法律给予加强保护的特定类别数据(如 GDPR 项下的“特殊类别数据”、PIPL 项下的“敏感个人信息”、PDPA 项下的“敏感个人数据”)。 - “处理”:指对个人信息进行的任何操作,包括收集、使用、存储、披露、传输、删除和匿名化。 - “个人信息主体”:指个人信息所指向的自然人。 - “子处理方”或“受托处理方”:指 Mindai 委托的、代表 Mindai 处理个人信息以提供本服务的任何第三方。 - “客户数据”:指您通过 MinT 上传、提交、生成或处理的数据,定义同《MinT 服务条款》。客户数据可能附带包含您的终端用户的个人信息;在此情形下,您系该等个人信息的处理者/控制者,Mindai 系受托处理方。 ## **第二条 适用范围与角色定位** ### **2.1 适用范围** 本政策适用于 Mindai 处理的下列个人信息:(a)作为 MinT 注册用户的您本人的个人信息(如账户信息、计费信息、使用日志);(b)您上传至 MinT 的客户数据中所包含的您的终端用户的个人信息(Mindai 仅按您的指示代为处理)。 ### **2.2 角色定位** (a)就 2.1(a) 所述个人信息(您本人的账户、计费、使用数据),Mindai 系个人信息处理者(PDPA 项下“organisation”、GDPR 项下“controller”、PIPL 项下“个人信息处理者”)。(b)就您上传至 MinT 的客户数据中所含个人信息(包括您通过中转站 API 提交的输入与由此产生的输出),Mindai 系受托处理方(PDPA 项下“data intermediary”、GDPR 项下“processor”、PIPL 项下“受托人”),您系处理者/控制者。受托处理方一侧的具体义务,由《MinT 数据处理协议(DPA)》进一步规定。 ### **2.3 不适用范围** 本政策不适用于:(a)您作为处理者在自有产品/服务中处理的个人信息;(b)您选择接入的第三方基础模型或第三方服务商所处理的数据;(c)非由 Mindai 拥有或控制的网站或服务;(d)您通过中转站 API 提交的输入与由此产生的输出——Mindai 就该等内容依《MinT 数据处理协议》作为受托人处理,具体规则以 DPA 为准。 ## **第三条 我们收集的个人信息类别** ### **3.1 账户信息** 姓名、电子邮箱、所属机构/公司名称、计费地址、电话(可选)、认证凭证、职务/角色,以及您主动填写的个人资料信息。 ### **3.2 身份验证信息(企业版或法律要求时)** 企业注册文件、授权代表身份信息、受益所有人信息——仅在 KYC/KYB 或制裁/出口管制筛查所必需的范围内收集。 ### **3.3 计费与支付信息** 计费主体、税务识别号(如统一社会信用代码、GST/VAT)、发票地址、支付方式 Token、交易记录。Mindai 不存储完整支付卡号;支付处理由具备 PCI-DSS 资质的第三方支付服务商完成。 ### **3.4 使用与遥测数据** MinT 服务运行的元数据,包括:(A)就训练平台,训练任务标识、GPU 时长消耗、训练日志元数据、模型成果存储元数据、控制台交互;(B)就中转站,API 请求元数据(时间戳、端点、响应状态码、请求大小、Token 消耗)、API 密钥标识、请求限流状态;及(C)两块共用的功能使用统计。用于运行、保障、调试与改进本服务。 ### **3.5 设备与连接信息** IP 地址、浏览器类型、操作系统、设备标识、语言偏好、时区设置。通过标准服务器日志和 Cookie/类似技术收集。 ### **3.6 通讯记录** 您与我们客服团队的沟通记录、产品内反馈、问卷回复、缺陷报告。 ### **3.7 客户数据中所含个人信息(受托处理方身份)** 如您上传的训练数据、Prompt 或评估样本中包含您的终端用户的个人信息,该等数据属于客户数据,Mindai 仅依您的书面指示并按 DPA 约定代为处理。 ### **3.8 敏感个人信息** 为本服务运行之目的,Mindai 不主动向您收集敏感个人信息。如您的客户数据包含敏感个人信息,您应当:(a)确保已就该等敏感信息的处理取得适用法律所要求的强化同意;(b)在上传前告知 Mindai;(c)遵守 DPA 项下针对敏感信息的额外处理要求。 ## **第四条 个人信息的使用目的** 我们基于下列目的处理个人信息: - 提供与运行本服务:账户注册与管理、算力资源配置与训练任务编排(训练平台)、模型成果存储(训练平台)、API 调用路由与限流(中转站)、控制台/API/SDK 接入。 - 计费与支付:发票生成、支付处理、退款、催款、税务合规。 - 安全、反欺诈与防滥用:监控未授权访问、异常流量、账户盗用、违规使用,及安全事件响应。 - 服务改进:基于聚合与去标识化数据进行功能使用、性能与可靠性分析;该等分析不再可识别到个人。 - 客户支持:响应咨询、排查故障、提供技术协助。 - 法律合规:税务记录、出口管制与制裁筛查、响应合法的监管或司法机关要求。 - 通讯:服务通知、安全告警、计费提醒、产品更新(您可随时退订非必要营销通讯)。 - 基于您单独同意:用于已向您说明并经您书面同意的特定研发目的。 无完全自动化决策。Mindai 不会基于个人信息进行产生法律效力或对您具有类似重大影响的完全自动化决策(含画像),范围依 GDPR 第 22 条理解。如您配置 MinT 用于对您的终端用户开展自动化决策,您作为处理者/控制者,应自行就适用法关于自动化决策与画像的合规要求(含告知、人工复核、争议权)承担全部责任。 ## **第五条 客户数据与“不训练”承诺** **未经您事先单独的、明示的、可撤回的书面同意,Mindai 不会将您的客户数据、训练数据或客户模型产出(模型权重、checkpoint、LoRA 适配器及其他训练产物)用于训练、微调、评估、基准测试或以其他方式改进 Mindai 自有或任何第三方的人工智能模型。** 上述为便于理解的通俗表述。本项承诺的法律约束力版本(包括客户模型产出的定义、有限例外情形,以及 Mindai 的返还/删除义务)载于《数据处理附录》(“DPA”)第 3.4 条,如与本条不一致,以 DPA 第 3.4 条为准。具体而言:(a)您上传至 MinT 的客户数据,仅在您的书面指示范围内处理,用于运行本服务;(b)客户模型产出的所有权归您,Mindai 不会出于执行您训练任务及提供本服务以外的任何目的访问、复制或使用上述产出;(c)用于运行与改进本服务的使用遥测数据,均经聚合与去标识化处理,绝不包含您的客户数据、客户模型产出,或您通过中转站 API 提交的输入与由此产生的输出的实质内容;(d)Mindai 员工对客户数据的访问,仅限于支持、安全或法律合规所必需的最小范围,且受保密义务约束并经审计日志记录。 ## **第六条 处理的合法性基础** 适用数据保护法律要求识别合法性基础的,Mindai 依据下列基础进行处理: - 履行合同所必需:依据《MinT 服务条款》向您提供本服务(GDPR 第 6(1)(b) 条;PDPA 合同必要性)。 - 正当利益:用于保障服务安全、防范欺诈与滥用、内部审计、改进服务等不超出您基本权益的合理范围(GDPR 第 6(1)(f) 条)。 - 履行法定义务:满足税务、会计、制裁、反洗钱及其他对 Mindai 适用的监管要求(GDPR 第 6(1)(c) 条)。 - 同意:法律有要求时或就特定目的取得您的单独同意(GDPR 第 6(1)(a) 条;PIPL 同意基础;PDPA 视为同意/明示同意)。 依赖同意进行处理的,您可随时撤回同意,但不影响撤回前基于同意的处理活动的合法性。 ## **第七条 个人信息的共享与披露** Mindai 不出售个人信息。我们仅在下列必要范围内向下列类别的接收方共享个人信息: - 子处理方:云基础设施提供方、支付处理方、通讯服务商、安全与防滥用厂商、客服工具厂商。当前子处理方清单详见第十七条所列网址,并将不时更新。 - Mindai 关联公司:在符合本政策的集团内部数据传输安排下进行。 - 专业顾问:律师、审计师、会计师、保险人,受保密义务约束。 - 继受方:在合并、收购、融资、重组或资产出售情形下,可能在保密承诺下转移个人信息。 - 有权机关:基于合法的监管、司法或执法要求,或为保护 Mindai、用户或公众的权利、财产或安全所合理必需的情形。法律允许范围内,Mindai 将事先通知受影响的客户。 ## **第八条 子处理方** Mindai 为提供本服务委托有限数量的子处理方(如云算力、对象存储、内容分发、分析、支付、邮件等)。Mindai 通过书面合同要求子处理方:(a)仅按 Mindai 的书面指示处理个人信息;(b)承担保密义务;(c)实施适当的技术与组织安全措施;(d)提供充分的跨境传输保障。 当前子处理方清单维护于 https://macaron.im/zh/mindlab(“子处理方页面”),或经请求向企业客户提供。如就子处理方发生重大变化,Mindai 将依 DPA 约定提前通知。 ## **第九条 数据驻留与跨境数据传输** MinT 由 MINDAI PTE. LTD.(新加坡注册主体)提供。处理个人信息的子处理方基础设施所在位置取决于客户所选择的部署模式: - (a)云部署:个人信息存储和处理于 Mindai 委托的、在中国大陆境内持牌的云服务提供方所提供的中国大陆节点(当前清单详见第八条所述子处理方页面)。云部署客户的个人信息在正常业务中不会传输至中华人民共和国境外。 - (b)本地化/私有化部署:个人信息存储和处理于客户控制的基础设施。该等个人信息的所在位置以及其任何跨境流转,均由客户自行确定并负责。 - (c)剩余的跨境传输情形可能涉及与技术支持、计费、合同管理或客户关系管理等行政职能相关的数据流转。 在个人信息被传输至原收集地以外司法辖区时,Mindai 将依据适用法采取相应的法律机制: - 新加坡(PDPA):Mindai 确保接收方受具备法律强制力的义务约束,提供与 PDPA 相当的保护标准(依据 PDPA 第 26 条及《Personal Data Protection Regulations 2021》项下的传输限制义务)。 - 欧盟/英国(GDPR / UK GDPR):Mindai 依据欧盟委员会标准合同条款(2021/914)进行传输;自英国传输的,叠加适用英国国际数据传输附录,并视情形进行传输影响评估并采取附加保障措施。 - 中华人民共和国(PIPL):将中国境内个人信息向境外传输的,Mindai 依据(并协助客户建立)PIPL 第 38 条项下的合法基础之一,包括国家网信部门组织的安全评估、个人信息保护认证或国家网信部门制定的标准合同。 如您需要附加文件或就您自身的跨境合规义务请求协助,请联系 contact@mindlab.ltd。 ### **数据驻留矩阵(示意)** 下表按部署模式概述个人信息与运营数据的主要存储地域以及适用的跨境传输机制。具体部署的细节以适用的订单表和子处理方清单为准。 | **部署模式** | **主要区域** | **所存数据类别** | **跨境机制** | **变更通知** | | --- | --- | --- | --- | --- | | 云部署—中国 | 中国大陆 | 客户数据、训练数据、客户模型产出、日志 | 正常业务中不出境;任何剩余出境流转适用 PIPL 机制 | 子处理方变更提前 30 日通知 | | 云部署—国际(如开通) | 新加坡 / 欧盟(按选择) | 客户数据、训练数据、客户模型产出、日志 | PDPA 传输限制义务;涉及 GDPR 的适用欧盟 SCC(2021/914)模块二 | 子处理方变更提前 30 日通知 | | 私有化 / 本地化部署 | 客户控制的环境 | 客户数据与训练数据留存客户侧;仅许可/遥测/支持数据流转至 Mindai | 由客户自行确定;就最小许可/遥测/支持数据,Mindai 作为独立的个人信息处理者 | 客户数据不适用;Mindai 侧子处理方变更提前 30 日通知 | | 行政与支持 | 新加坡(Mindai 总部)及区域支持中心 | 计费数据、账户标识、工单内容 | 按具体流转分别适用 PDPA / GDPR / PIPL 机制 | 子处理方变更提前 30 日通知 | ## **第十条 存储期限** 我们仅在为收集目的所必需的期限内存储个人信息,包括法律、会计、报告等要求的期限。下列为指示性期限,具体期限以数据类别和适用法为准: - 账户信息:账户存续期间及账户终止后三十(30)日,之后删除或匿名化处理,但法律有要求另行保留的(如税务记录)除外。 - 计费与税务记录:依据适用税务与会计法律(通常为五(5)至十(10)年)。 - 客户数据:账户终止后三十(30)日内删除,《MinT 服务条款》第十六条另有规定的除外。您可在该 30 日窗口内导出客户数据与训练产出。 - 使用日志与安全日志:通常保留九十(90)至一百八十(180)日,之后聚合或删除,但用于持续中安全调查的除外。 - 通讯与客服记录:自相关工单关闭后保留至多二十四(24)个月。 ## **第十一条 数据安全** Mindai 在合理与适当范围内采取技术与组织措施,保护个人信息免受未授权访问、意外丢失、变更、披露或销毁,并兼顾技术发展水平、实施成本与数据性质。措施包括但不限于: - 传输加密(TLS 1.2 及以上)与静态加密(AES-256 或同等强度)。 - 网络分段、防火墙与入侵检测系统。 - 基于多因素认证与最小权限原则的身份与访问管理。 - 对个人信息访问活动的审计日志与持续监控。 - 员工背景审查、安全培训与保密承诺。 - 供应商风险评估与子处理方合同约束。 - 事件响应预案与数据泄露通知流程。 若发生影响您个人信息的安全事件,Mindai 将在不当延迟前通知您,并按适用法律要求的时限(如 GDPR 项下 72 小时通知监管机构的要求)履行通知义务。 ## **第十二条 您的权利** 在适用数据保护法律允许的范围内,您就您的个人信息享有下列权利: - 访问权:确认 Mindai 是否处理您的个人信息,并获取相关副本。 - 更正权:要求更正不准确或不完整的个人信息。 - 删除权:要求删除您的个人信息,受适用法定保留义务限制。 - 可携权:以结构化、通用、机器可读的格式接收您的个人信息。 - 限制处理权:在特定情形下要求限制处理您的个人信息。 - 反对权:基于正当利益的处理(含画像)享有反对权。 - 撤回同意权:依据同意进行处理的,您可随时撤回,但不影响撤回前的处理合法性。 - 投诉权:向您所在司法辖区的有权数据保护机关投诉(如新加坡个人数据保护委员会、GDPR 项下监管机构、中国国家网信办或地方网信主管部门等)。 行权方式。请通过您账户绑定的电子邮箱发送邮件至 contact@mindlab.ltd,或使用产品内提供的隐私控制功能行使上述权利。Mindai 将在三十(30)日内回应;适用法律要求更短或更长期限的从其规定(延长的将向您说明理由)。 身份核实。为保护您的信息安全,Mindai 在响应权利请求前将合理核实您的身份。核实方式可能包括:将您提供的信息与我们已有记录进行比对、要求您通过现有账户凭证完成认证、或在高风险情形下要求提供额外佐证文件。 授权代理人。在适用法律允许的范围内(包括加州 CCPA/CPRA),您可委托授权代理人代为提交权利请求。代理人应提供经您签署的书面授权证明;Mindai 在采取行动前仍可要求您本人直接核实身份。 Mindai 在适用法律允许的范围内,有权拒绝明显无依据的、过度的、重复的,或将对他人权利与自由产生不利影响的请求。 ## **第十三条 Cookie 与类似技术** Mindai 在其网站和控制台中使用 Cookie 与类似技术(如 LocalStorage、网络信标),用于下列目的: - 严格必需:身份认证、会话管理、安全保障、负载均衡。该等 Cookie 不可禁用,否则将影响本服务的正常使用。 - 功能性:语言偏好、UI 设置、无障碍功能。用于提升使用体验。 - 分析性:聚合的、去标识化的使用统计,用于了解和改进本服务。您可通过 Cookie 横幅或浏览器设置选择禁用。 Mindai 不使用广告 Cookie,亦不将个人信息出售给广告网络。 ## **第十四条 未成年人保护** MinT 面向年满 18 周岁(或所在司法辖区法定成年年龄,以较高者为准)的开发者、研究人员与企业用户。我们不有意收集未成年人的个人信息。如发现意外收集,Mindai 将不当延迟前删除。 ## **第十五条 区域性条款** ### **15.1 新加坡(PDPA)** 本政策构成 Mindai 依 PDPA 项下的告知文件。Mindai 数据保护官的联系方式为 contact@mindlab.ltd。您亦可联系新加坡个人数据保护委员会(PDPC),网址 https://www.pdpc.gov.sg。 ### **15.2 欧洲经济区、英国与瑞士(GDPR / UK GDPR)** Mindai 处理欧洲经济区、英国或瑞士境内个人信息主体的个人信息时,Mindai 系 GDPR 项下的控制者(在客户数据情形下系处理者)。Mindai 牵头监管机构待定;个人信息主体亦可向其所在地监管机构投诉。 欧盟/英国代表(GDPR 第 27 条 / UK GDPR 第 27 条)。如 Mindai 依法应当在欧盟或英国指定代表,Mindai 将进行该等指定,并在本政策中更新代表的名称与联系方式。在该等指定完成前,欧洲经济区、英国及瑞士的个人信息主体可就所有数据保护事宜联系 contact@mindlab.ltd,Mindai 将按照如同代表已正式指定的标准予以处理。 ### **15.3 中华人民共和国(PIPL)** 为向中华人民共和国境内自然人提供产品或服务的目的处理其个人信息时,Mindai 遵守 PIPL。Mindai 依 PIPL 设立的联系人与个人信息保护负责人邮箱为 contact@mindlab.ltd。中国境内个人信息主体可向国家网信办或地方网络与信息化主管部门投诉举报。 PIPL 境内专门机构/代表(PIPL 第 53 条)。如 Mindai 依 PIPL 第 53 条应当在中华人民共和国境内设立专门机构或指定代表,Mindai 将完成该等设立或指定,并在本政策中更新该等机构或代表的名称与联系方式。在该等设立/指定完成前,中国境内个人信息主体可就个人信息保护事项联系 contact@mindlab.ltd。 ### **15.4 加利福尼亚(CCPA / CPRA)** 如您系加州居民,您依加州《消费者隐私法》(经《加州隐私权法案》修订,统称 “CCPA”)享有以下权利: - 知情权:要求知悉我们收集您的个人信息的类别与具体内容、来源、商业目的及接收方类别。 - 删除权:要求删除我们自您处收集的个人信息,受法律例外限制。 - 更正权:要求更正不准确的个人信息。 - 退出销售或共享权:Mindai 不“出售”或“共享”个人信息(含为跨场景行为广告之目的的共享,定义同 CCPA),故无须设置“Do Not Sell or Share My Personal Information”链接。 - 限制使用敏感个人信息权:Mindai 不会出于将触发该等权利的目的使用或披露敏感个人信息;如有使用,仅限于为提供您所请求服务所合理必需。 - 不歧视权:Mindai 不会因您行使 CCPA 项下任何权利而对您作出歧视性对待(如拒绝提供服务、收取不同价格)。 - 授权代理人:加州居民可委托授权代理人按本政策第十二条所述程序提交权利请求。 行使上述权利,请联系 contact@mindlab.ltd。Mindai 不就个人信息的收集、出售或保留提供财务激励。 ## **第十六条 本政策的变更** Mindai 可不时更新本政策。如属重大变更,Mindai 将通过电子邮件、MinT 控制台或官方网站公告,提前至少三十(30)日通知;适用法律要求取得同意的,Mindai 将按要求取得您的同意。当前生效版本以封面所载版本号与生效日期为准。 ## **第十七条 联系方式** 如您对本政策或对 Mindai 处理您个人信息的方式有任何疑问、意见或投诉,请通过下列方式与我们联系: - 服务提供方:MINDAI PTE. LTD.,注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 数据保护官 / PIPL 联系人邮箱:contact@mindlab.ltd - 通用联系邮箱:contact@mindlab.ltd - 子处理方清单:https://macaron.im/zh/mindlab(或经请求向企业客户提供) ## **生效日期与版本** 本政策自封面所载生效日期起生效。Mindai 可发布本政策的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本政策正文结束 ——* # Responsible Disclosure (/zh/community/support/responsible-disclosure) # Responsible Disclosure 如果你在 MinT、MinT 客户端 SDK(`mindlab-toolkit`)或任何公开的 MinT 仓库中发现安全漏洞,请通过私密渠道告知我们,让我们在公开披露前先修复。 ## 如何上报 发邮件到 `security@mindlab.ltd`(如果该邮箱尚未为你的场景启用,发到 `contact@mindlab.ltd`),并包含: - 漏洞描述及潜在影响。 - 复现步骤,包括受影响的版本、endpoint 和任何特定配置。 - 任何 PoC 代码或日志(发送前请抹掉凭据)。 请不要把安全报告发到公开的 GitHub Issues。 ## 我们的响应 - 5 个工作日内确认收到。 - 根据严重程度协调修复与披露时间表,通常为 30–90 天。 - 修复发布后,在你同意的前提下给予公开致谢。 # MinT 安全与合规白皮书 (/zh/community/support/security-compliance) # **MinT 安全与合规白皮书** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年[ ]月[ ]日* **【请仔细阅读】本《安全与合规白皮书》(下称“白皮书”)描述 MINDAI PTE. LTD.(下称“Mindai”“我方”“我们”)截至上述发布日期就 MinT(Mind Lab Toolkit,下称“MinT”或“服务”)所采取的技术与组织性安全措施。本白皮书旨在协助企业版客户、其安全团队及法律顾问开展供应商安全评估,属信息性文件,本身不构成合同性承诺。合同性安全承诺以 MinT 服务条款、《数据处理协议》(DPA)及相关订单文件所载为准。** **【前瞻性陈述】本白皮书中标识为“路线图”“计划”或“规划中”或类似表述的事项,反映 Mindai 截至发布日期的当前计划,可能发生变化。客户在作出采购决策时不应依赖此类事项,应于实际合作之时向 Mindai 确认相关事项的届时实际状态。** ## **第一条 引言与适用范围** MinT 是一款由 Mindai 提供的人工智能平台,由两个独立组成部分构成:(a)“训练平台”——为机器学习模型权重(下称“训练产出”)的训练、微调与评估提供强化学习(Reinforcement Learning)基础设施,其输出为模型参数而非面向终端用户的内容;(b)“中转站”——通过 API 接口方式向客户提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM 等)的调用能力,客户可用于自身 AI 业务用途。本白皮书描述 Mindai 就 MinT 上述两个组成部分及其上所处理的客户数据所采取的安全架构、安全控制与治理实践。 除另有定义外,本白皮书中使用的大写术语具有 MinT 服务条款与 MinT 隐私政策所赋予的含义。 ## **第二条 Mindai 的安全承诺** Mindai 安全体系建立在以下四项原则之上: - 客户数据归属——客户数据归客户所有。Mindai 仅为提供服务之目的,并按照客户书面指示处理客户数据。 - 纵深防御——我们在物理、网络、主机、应用、数据及身份各层面部署安全控制,以确保任一单层被攻破不会导致客户数据被泄露。 - 最小权限——Mindai 员工对客户数据的访问仅限于经过严格范围限定的角色,按即时授权方式授予,并经记录与审查。 - 透明度——Mindai 对外公布其安全态势(即本白皮书)、子处理方清单以及安全事件通知实践,并在适当保密安排下,根据企业版客户请求提供第三方审计摘要报告。 ## **第三条 安全治理** Mindai 的安全工作由安全负责人(Head of Security)统筹,其向公司管理层汇报,负责信息安全管理体系(ISMS)的设计、实施、运行与持续改进。安全负责人下设专职安全团队,覆盖安全工程、安全运营、合规与风险治理(GRC)及事件响应等职能。 Mindai 建立并维护书面信息安全政策框架,由管理层审批并定期复核,涵盖 ISO/IEC 27001:2022 附录 A 所列各安全管理域。相关政策至少每年复核一次,并在服务、威胁态势或适用法律发生重大变化时进行复核。所有可访问客户数据的人员,须在获得访问权限前书面确认遵守上述政策框架。 Mindai 运行符合 ISO/IEC 27005 的风险管理流程。风险以“影响×可能性”进行识别、评估,并以接受、缓解、转移或规避的方式予以处置,并在统一风险登记簿中跟踪。重大风险按季度上报管理层。 ## **第四条 资质认证与合规标准** ### **4.1 现有认证** 截至本白皮书发布之日,Mindai 已取得如下认证: - 网络安全等级保护第三级(PRC MLPS 2.0,“等保三级”)——由具备资质的测评机构依据 GB/T 22239-2019 完成测评,并已在公安机关备案。等保三级是中华人民共和国针对处理重要信息、服务重要用户群体的信息系统适用的国家基础要求。 ### **4.2 对标的标准** 在上述认证之外,Mindai 的安全体系在设计上还对标下列国际标准与框架: - ISO/IEC 27001:2022(信息安全管理体系)——附录 A 控制集; - ISO/IEC 27701:2019(隐私信息管理)——数据控制者与处理者相关控制; - ISO/IEC 27017:2015(云服务信息安全); - ISO/IEC 27018:2019(作为个人可识别信息处理者的公有云中个人可识别信息保护); - NIST 网络安全框架(CSF)2.0——识别、保护、检测、响应、恢复、治理; - NIST SP 800-53(安全与隐私控制)及 NIST SP 800-63B(数字身份); - 云安全联盟(CSA)云控制矩阵(CCM)v4。 ### **4.3 路线图** 下列认证目前列入 Mindai 合规路线图。下文所列目标时间窗为参考性质,客户在实际合作之时应向 Mindai 确认届时状态: - ISO/IEC 27001:2022 认证——目标时间窗:[待定]; - SOC 2 Type II 报告(安全、可用性、保密性)——目标时间窗:[待定]; - ISO/IEC 27701:2019 认证(隐私扩展)——目标时间窗:[待定]。 ### **4.4 独立审计** Mindai 委托具备资质的独立第三方开展安全评估,包括就 MinT 平台层至少每年一次的应用层渗透测试。重大发现通过 Mindai 漏洞管理流程跟踪闭环。相关摘要报告可在适当保密安排下,根据企业版客户请求提供。 ## **第五条 共担责任模型** MinT 服务的安全由 Mindai、客户以及(在相关情形下)Mindai 的 IaaS 层子处理方共同承担。下表汇总了责任分配,仅供参考说明之用,不替代服务条款、DPA 或相关订单文件所作的实际约定。 | **控制领域** | **Mindai** | **客户** | **IaaS 子处理方** | | --- | --- | --- | --- | | 数据中心物理安全 | | | ● | | 宿主操作系统、虚拟化层、底层基础设施 | | | ● | | MinT 平台层(控制平面、编排、身份、元数据服务) | ● | | | | 客户数据多租户隔离 | ● | | | | 客户数据静态加密(平台托管密钥) | ● | | | | 账号凭证安全、MFA 启用、API 密钥管理 | | ● | | | 客户数据的分类与标识 | | ● | | | 上传个人信息的合法处理依据 | | ● | | | 客户使用行为合规性(AUP 及适用法律) | | ● | | | 本地化部署环境的安全(仅适用于私有化部署) | | ● | | ## **第六条 数据保护** ### **6.1 数据归属** 客户数据归客户所有。在 Mindai 与客户之间,客户保留对客户数据、训练数据与训练产出的全部权利、所有权与权益。Mindai 作为数据处理者(PDPA 项下的“数据中介”;GDPR 项下的“处理者”;PIPL 项下的“受托人”),仅按照客户书面指示并为提供服务之唯一目的处理客户数据,相关细节以 DPA 所载为准。 Mindai 不将客户数据、训练数据或训练产出用于训练、微调或评估 Mindai 自有模型,亦不向第三方披露上述数据,但经授权的子处理方依子处理方清单所列并承担等同书面义务者除外。 ### **6.2 多租户隔离** MinT 在训练平台的控制平面、编排、存储与元数据层面,以及中转站的 API 网关层,实施租户间逻辑隔离,确保任一租户无法访问或枚举另一租户的资源、数据、训练工件或中转站请求。隔离通过租户级标识、租户级加密材料,以及每个 API 边界上的鉴权校验予以强制实现。 对隔离有更高要求的企业版客户,可采用私有化部署(见第十六条):客户工作负载在专属并由客户管理控制的基础设施上运行。 ### **6.3 数据驻留** 客户数据的存储与处理位置由客户所选部署模式决定: - 云端部署:客户数据在 Mindai 所使用的、具备相应资质的云服务提供方的中国大陆境内节点上存储与处理。在通常运行中,云端部署客户的客户数据不发生出境传输。 - 私有化/本地部署:客户数据在客户管理控制的基础设施上存储与处理;相关数据驻留位置及是否发生跨境移动,由客户自行决定并承担相应责任。 当前子处理方清单(包括为云端部署客户提供服务的云服务提供方的身份与位置)载于子处理方页面,并可应企业版客户请求提供。参见 MinT 隐私政策第九条。 ### **6.4 加密** Mindai 对客户数据在存储、计算与网络各层面实施端到端加密,遵循如下标准: - 传输加密:所有经公网的客户端至服务、以及服务间通信均采用 TLS 1.2 或更高版本。控制面 API 支持 TLS 1.3 及现代加密套件;不接受 SSLv2/v3、TLS 1.0/1.1 等旧协议。 - 静态加密:MinT 平台层运营的对象存储、块存储与托管数据库中的客户数据,采用 AES-256(或同等强度)加密。 - 平台内部敏感凭证加密:服务间认证令牌、密钥与凭证存储在专用密钥管理系统中,具备访问控制与审计日志。 ### **6.5 密钥管理** 用于保护客户数据静态加密的密钥由 Mindai 的 IaaS 层子处理方运营的密钥管理服务(KMS)管理,并在“密钥管理”与“密钥使用”权限之间实施职责分离。就云端部署场景下的客户自主管理密钥(BYOK / CMEK)能力,列入 Mindai 产品路线图。在私有化部署场景下,密钥管理基础设施由客户在其自有环境中控制。 ### **6.6 备份与删除** 客户数据按照 Mindai 业务连续性目标(见第十三条)以固定节奏进行备份。备份数据继承与生产数据相同的加密、访问控制与隔离属性。 在服务终止或收到客户书面删除指示后,Mindai 将在 DPA 所列期限内从生产系统中删除客户数据,并在备份轮换周期内从备份系统中删除。Mindai 应客户请求提供书面删除确认。 ## **第七条 身份与访问管理** ### **7.1 原生账号体系** MinT 提供原生账号体系,支持强密码策略(长度、复杂度、历史、有效期)、多次登录失败锁定、会话超时,以及异常登录检测(如异常地理位置、异常位移)。 ### **7.2 多因素认证(MFA)** MinT 支持用户登录多因素认证,用以防范钓鱼、密码复用与暴力破解所致的凭证泄露风险。强烈建议客户对具有管理员权限或可访问敏感资源的全部用户强制启用 MFA。 ### **7.3 单点登录(SSO)** v2.0 版本下,MinT 云端部署产品不提供标准化、开箱即用的 SSO 集成。对 SSO 有需求的客户——包括与 SAML 2.0、OIDC、钉钉、飞书、企业微信、Microsoft Entra ID(原 Azure AD)、Okta 等企业身份提供方的对接——可在私有化部署的合作框架下,针对客户自有身份提供方进行定制化 SSO 集成。面向云端部署的标准化 SSO 能力列入 Mindai 产品路线图。 ### **7.4 基于角色的访问控制(RBAC)** 在企业版客户租户内,管理员可定义角色并就项目、训练任务、数据集、模型工件与计费资源分配细粒度权限。角色遵循最小权限原则,支持职责分离。 ### **7.5 特权访问(Mindai 员工)** Mindai 员工对存有客户数据的生产系统的访问,仅限于严格范围限定的角色,通过内部特权访问管理(PAM)系统按即时授权方式授予,并须经 MFA 验证、会话录屏及有时限的审批。所有特权访问会话均予记录并定期复核。 ### **7.6 API 密钥管理** 对 MinT 的程序化访问通过客户控制下签发的 API 密钥进行授权。API 密钥可就特定项目、权限与 IP 地址范围作范围限定,客户可随时轮换或吊销。 ## **第八条 网络安全** ### **8.1 网络架构** MinT 平台层部署于分段网络区域——对外 API 入口、应用层、数据层、管理层——区域间设置严格防火墙规则,默认拒绝跨区流量。对外服务端点由 CDN 与 Web 应用防火墙前置保护,具备限流、IP 声誉过滤与流量异常检测能力。 ### **8.2 DDoS 防护** MinT 从 IaaS 层子处理方继承容量型与协议型 DDoS 防护,网络层缓解能力可覆盖常见 DoS 攻击规模。应用层限流在 API 网关处强制实施。 ### **8.3 管理访问** 对生产系统的管理访问仅通过堡垒机进行,堡垒机须经 MFA、双向 TLS 与源 IP 白名单保护。不允许从公网直接通过 SSH 或 RDP 访问生产主机。 ### **8.4 网络分段与出站控制** 承载客户训练任务的计算工作负载运行于具备分段与受限出站能力的网络环境中。出站访问的目标由白名单控制,防止经由非预期网络通道发生数据外泄。 ## **第九条 应用安全** ### **9.1 安全软件开发生命周期** Mindai 遵循安全软件开发生命周期(SSDLC),将安全审查嵌入设计、实现、测试与部署各阶段。具体要求包括对新功能进行威胁建模、对全部合并请求进行同行代码评审、自动化静态应用安全测试(SAST)、依赖漏洞扫描(SCA)以及容器镜像扫描。 ### **9.2 漏洞管理** Mindai 维护漏洞管理程序,对内部工具、独立渗透测试及责任披露渠道提交的发现进行定性定级,并采用 CVSS v3.1 评估严重性。修复按严重性设定期限:严重级在数日内修复,高危级在数周内修复,中低危级在常规发布周期内修复,并跟踪至闭环。 ### **9.3 第三方渗透测试** Mindai 委托具备资质的独立第三方,就 MinT 平台层至少每年开展一次应用层与基础设施层渗透测试,并在重大架构变更后另行开展。相关摘要报告可在适当保密安排下,根据企业版客户请求提供。 ### **9.4 责任披露** 欢迎安全研究人员就 MinT 的漏洞向 contact@mindlab.ltd 提交报告。Mindai 将对有效报告予以确认,协调修复,并且对善意行事、尊重客户隐私并遵守 Mindai 责任披露指引的研究人员,不采取法律行动。 ## **第十条 AI 特定安全** ### **10.1 训练数据隔离** 客户上传的训练数据在租户级存储中存储与处理,访问权限仅限于上传该数据的客户所在租户。训练任务在租户级计算环境中执行;任一客户的训练数据在数据、内存或工件层面,均不会被另一客户的训练任务所访问。 ### **10.2 训练数据脱敏与最小化** MinT 支持客户在上传前对训练数据进行脱敏与最小化处理;在合理可行的情况下,鼓励客户按照适用数据保护法律的要求实施上述处理。客户通过中转站 API 提交的输入同样应遵守上述脱敏与最小化原则。Mindai 的技术指南与平台控制在设计上对标下列框架: - ISO/IEC 27018:2019——作为 PII 处理者的公有云中 PII 保护控制; - GDPR 第 25 条——设计与默认数据保护; - GDPR 第 32 条——处理安全,包括假名化与加密; - 《中华人民共和国个人信息保护法》第 51 条——个人信息处理者采取去标识化、加密等技术措施的义务。 ### **10.3 模型权重保护** 训练产出(即客户训练任务所产生的模型权重)作为客户保密信息对待。模型权重存储于租户级加密存储中,访问权限限定于客户租户,不向其他客户、除严格限定支持场景外的 Mindai 员工或第三方提供,但经客户书面指示者(如客户书面指示的导出或下载)除外。 ### **10.4 不将客户数据用于 Mindai 自有模型训练** Mindai 不将客户数据、训练数据、提示词或训练产出用于训练、微调、基准测试或评估任何为 Mindai 自身目的运行的模型,或任何对第三方开放的模型。该承诺同样体现在 MinT 服务条款与 DPA 中。 ### **10.5 输出完整性控制** 就 MinT 训练平台,其输出为模型参数,而非面向终端用户的内容;因此,适用于生成式内容服务的内容审核控制(例如终端用户内容层面的输出分类器或提示注入防护)不属于训练平台所提供的功能。客户如后续将训练产出部署用于生成面向终端用户的内容,应自行在其下游系统中部署适当的安全、内容审核与合规控制。就 MinT 中转站,Mindai 在 API 网关层对模型输入实施安全校验、对模型输出实施与所调用模型能力相匹配的护栏(详见第 10.7 条);但中转站输出的最终内容合规责任仍由客户承担,客户应自行评估中转站输出是否满足其部署地适用的内容审核与生成式 AI 服务合规要求。 ### **10.6 下游生成式 AI 合规的部署支持协助** Mindai 理解,客户将训练产出部署为下游生成式 AI 服务后,可能需在其部署地遵守备案、安全评估、算法备案、内容审核等监管义务——举例包括《生成式人工智能服务管理暂行办法》(AIGC 暂行办法)、《互联网信息服务深度合成管理规定》、《互联网信息服务算法推荐管理规定》,以及新加坡、欧盟等其他司法辖区的同类制度。就训练平台,Mindai 提供模型训练基础设施与算力资源,其产出为模型参数,Mindai 本身不直接面向公众提供生成式 AI 内容或算法推荐服务,因而就训练平台层面不构成《生成式人工智能服务管理暂行办法》项下的生成式人工智能服务提供者或《互联网信息服务算法推荐管理规定》项下的算法推荐服务提供者;就中转站,Mindai 通过 API 向客户开放 Macaron 系列模型及第三方开源模型的调用能力,模型能力供客户在其自身业务场景中使用,Mindai 通常构成上述法规项下的技术支持者(技术提供方),而非直接面向公众的服务提供者,具体角色定性视客户的实际应用场景、模型使用方式与监管口径而定(参见《服务条款》第 2.1 条);但 Mindai 将向客户提供商业上合理的部署支持协助,协助客户履行该等下游合规义务,包括: - 提供标准化的训练环境信息(例如训练基础设施说明、隔离架构说明、以及第四条所载安全认证证据),供客户纳入其安全自评估材料; - 提供审计日志摘录、训练任务元数据和数据血缘报告,以支持客户监管备案所需的证据链; - 在不损害适用保密义务与其他客户利益的前提下,就客户已部署服务所依托的训练基础设施,回复主管监管机关提出的合理书面询问; - 在 Mindai 已发布的范围内,提供安全评估支持包模板(包括常见算法备案问卷的答复模板、与训练环境相关的模型卡节选,以及本白皮书所载的安全措施说明)。 第 10.6 条下的协助以 MinT 训练平台基础设施相关信息及 Mindai 运营的中转站服务层面信息为限,包括:(a)训练平台侧的训练数据处理、算力资源与安全措施说明;及(b)中转站侧的 Macaron 系列模型基本信息、第三方开源模型部署与合规状况、API 层面的安全与内容审核措施说明。客户所部署服务本身下游合规义务的实质遵守——包括内容审核、用户保护、强制性备案与安全自评估——仍由客户承担。对于特殊部署支持协助(例如客户请求 Mindai 出具定制审计函或出席现场监管会议)的费用分担,除相关订单文件另有约定外,双方应本着诚信原则协商确定。 ### **10.7 中转站的架构与安全控制** 中转站作为 MinT 的 API 服务组成部分,在架构与安全控制上采用下列措施: - API 网关与身份认证——中转站所有 API 调用均需通过 API Key 认证,API Key 与客户账户绑定,Mindai 强制执行 API Key 的最小权限、有效期管理与轮换机制;对疑似泄露的 API Key,Mindai 有权立即吊销并通知客户; - 速率限制与滥用防护——中转站部署基于账户、API Key 和 IP 的多维度速率限制,防止单一账户对基础设施造成过度负载;Mindai 部署自动化滥用检测机制识别 CSAM、恶意软件生成、大规模欺诈生成等违反 AUP 的调用模式; - 输入内容安全——中转站在调用底层模型前对输入进行必要的合规检查(包括但不限于关键词过滤、敏感话题识别),对明显违反 AUP 或适用法律的输入予以拒绝; - 输出安全护栏——中转站在返回输出前部署内容安全护栏,识别并拦截明显违法或有害内容;Mindai 保留在下游监管要求触发时对特定输出加装水印、标识或过滤规则的技术能力; - 第三方开源模型隔离部署——Mindai 部署的第三方开源模型(如 DeepSeek、GLM 等)在容器化或专用推理集群中运行,与 Macaron 系列模型、客户训练数据在部署层面相互隔离,避免模型间数据交叉污染; - 调用日志与审计——中转站对每次 API 调用保留必要的元数据(时间戳、API Key 标识、模型标识、Token 消耗),供计费、滥用检测与合规审计使用,具体保留期限见《MinT 数据处理协议》第 3.6 条。 ## **第十一条 运营安全** ### **11.1 人员安全** 所有可访问客户数据的 Mindai 员工(含外包人员),均须:(a)在适用法律允许范围内通过背景调查;(b)签署书面保密与不披露承诺;(c)接受入职与定期安全意识培训,内容涵盖钓鱼、社会工程与安全编码;(d)按角色授予访问权限,并在岗位变更或离职时及时回收。 ### **11.2 子处理方管理** Mindai 仅使用有限数量的子处理方(包括云计算、存储、网络、支付、通信与支持工具等供应商)。子处理方在启用前及启用后定期接受风险评估,并通过书面合同承担如下义务:(a)仅按 Mindai 书面指示处理客户数据;(b)维持保密;(c)实施适当的技术与组织性安全措施;(d)在客户权利请求、安全事件与审计中给予协助;(e)遵守相关的跨境数据传输要求。 当前子处理方清单维护于子处理方页面,并按 DPA 约定更新。重大变更将提前通知企业版客户。 ### **11.3 变更管理** 对生产系统的变更遵循书面的变更管理流程,包括同行评审、预发测试、灰度发布、自动化部署控制及回滚能力。紧急变更按快速通道审批,并事后补齐书面记录。 ### **11.4 端点与工作站安全** Mindai 员工仅可从受管工作站访问生产系统,该等工作站须启用全盘加密、端点检测与响应(EDR)工具、补丁管理及移动设备管理。不允许个人设备访问生产系统。 ## **第十二条 审计日志** MinT 在身份、API、数据访问与管理操作等各层面记录审计事件。审计日志包括用户标识、租户标识、时间戳、来源信息、操作与资源。 企业版客户可通过 MinT 控制台或导出 API 下载其所在租户的审计日志。审计日志的延长保留周期及与客户自有 SIEM 系统的对接作为付费功能提供。审计日志默认保留期及付费层参数,以相关订单文件所载为准。 审计日志具备抗篡改属性:Mindai 对审计日志实施适当的存储、访问控制与完整性控制,防止未经授权的修改。 ## **第十三条 业务连续性与容灾** Mindai 建立并维护业务连续性与容灾(BC/DR)体系,用以在影响基础设施、人员或场所的事件中保障 MinT 平台层及客户数据的可用性与完整性。 生产数据在部署区域内的多个可用区之间进行复制,并按照符合服务恢复设计目标的节奏进行备份。MinT 平台层适用的恢复时间目标(RTO)与恢复点目标(RPO)由 Mindai 根据服务关键性确定并随服务规模扩大持续复核;若有具体数值承诺,以适用的订单文件或企业协议所载为准。 业务连续性与容灾计划定期进行演练。演练中的重大发现纳入 Mindai 持续改进流程,跟踪闭环。 ## **第十四条 事件响应** Mindai 运行书面的事件响应流程,涵盖检测、定级、遏制、根除、恢复与事后复盘。安全职能通过端点检测、网络流量分析、云安全态势监控、应用日志及威胁情报等多源信号进行安全事件监测。 一旦确认发生影响或合理可能影响客户数据的安全事件,Mindai 将在合理可行情况下尽快通知受影响的企业版客户,并在任何情况下不迟于确认后七十二(72)小时;该时限与 GDPR 第 33 条、《中华人民共和国个人信息保护法》第 57 条,以及 PDPA 及其他适用法律下的同等要求保持一致。 在调查进展及已知信息范围内,通知将包括:(a)事件性质;(b)受影响数据的种类及大致数量;(c)可能的后果;(d)已采取或拟采取的应对与缓解措施;(e)进一步信息的联络点。Mindai 将随调查进展持续更新信息。 事件结束后,Mindai 进行根因分析并跟踪整改闭环。经验教训纳入安全体系更新,包括控制措施、应急预案与培训内容。 ## **第十五条 隐私合规** Mindai 对个人数据的处理主要适用 MinT 隐私政策(就 Mindai 作为控制者所处理的数据,如账号与计费数据)及 DPA(就客户数据中包含的个人数据,Mindai 作为处理者)。 Mindai 的隐私体系在设计上旨在满足适用数据保护法律的要求,包括《新加坡个人数据保护法》(PDPA)、《中华人民共和国个人信息保护法》(PIPL)、欧盟《通用数据保护条例》(GDPR)及(在适用时)英国 GDPR,以及(在适用时)《加州消费者隐私法》(CCPA/CPRA),涵盖合法依据、数据主体权利、处理记录、数据保护影响评估、跨境传输保障等方面。 MinT 隐私政策第九条规定的数据驻留立场在本白皮书第 6.3 节予以概述。 ## **第十六条 部署选项** ### **16.1 云端部署** 在云端部署模式下,客户工作负载运行于 Mindai 运营的多租户 MinT 平台层之上,托管于 Mindai 所使用的、具备相应资质的云服务提供方的中国大陆境内节点。第 6.2 节的多租户隔离控制、第六条的数据保护控制,以及本白皮书所载其他控制,均予适用。 ### **16.2 私有化/本地部署** MinT 训练平台支持私有化部署,包括在客户自有云账户及客户本地基础设施上部署。私有化部署系 MinT 训练平台的一款产品形态,并作为面向具有较高数据驻留、监管或运营控制要求的企业版客户的主要产品形态定位。MinT 中转站按 API 服务方式提供,本 v2.0 阶段不支持私有化部署。 在私有化部署模式下: - MinT 训练平台部署在客户自有基础设施之内,配置、补丁与运维节奏由 Mindai 与客户依据相关私有化部署合作条款协同进行; - 客户数据在客户管理控制的基础设施上存储与处理,数据驻留由客户决定; - 可在合作框架下进行定制化集成,包括企业 SSO(SAML 2.0、OIDC、钉钉、飞书、企业微信、Microsoft Entra ID、Okta 及同类身份提供方)、客户自主管理的密钥管理系统、客户运营的日志管道,以及与客户既有监控和工单系统的对接; - 客户负责部署环境的物理安全、网络安全与人员安全,包括宿主操作系统、虚拟化层及周边基础设施控制。 ## **第十七条 客户侧安全责任** 为使 MinT 在客户所在组织内安全运行,客户负责(包括但不限于)以下事项: - 管理用户账号,强制使用强密码并启用 MFA,在人员变动时及时注销账号; - 保护 API 密钥及其他程序化凭证,以最小权限进行范围限定,并定期轮换; - 对客户数据进行分类,并依据适用法律及客户自身数据保护政策确定相应处理方式(包括是否上传敏感个人信息); - 在合理可行的情况下,于上传前对训练数据进行脱敏与最小化处理; - 在使用 MinT 生成的训练产出的下游系统中部署适当的安全、内容审核与合规控制; - 遵守 AUP、服务条款与适用法律; - 在私有化部署情形下,保障部署环境安全并按 Mindai 提供的加固与运维指引运行平台。 ## **第十八条 路线图** 下列事项反映 Mindai 当前的安全与合规路线图。下文所列目标时间窗为估计,可能发生变化。客户在实际合作之时应向 Mindai 确认届时实际状态。 - ISO/IEC 27001:2022 认证——目标时间窗:[待定]; - SOC 2 Type II 报告(安全、可用性、保密性)——目标时间窗:[待定]; - ISO/IEC 27701:2019 认证(隐私)——目标时间窗:[待定]; - 面向云端部署的标准化 SSO(SAML 2.0、OIDC 及主要企业身份提供方)——目标时间窗:[待定]; - 面向云端部署的客户自主管理密钥(BYOK / CMEK)——目标时间窗:[待定]。 ## **第十九条 联系方式** 如就安全咨询、漏洞报告及本白皮书相关事项与我方联系: - 服务提供方:MINDAI PTE. LTD.(一家依据新加坡共和国法律注册成立的私人有限公司),注册办事处:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 邮箱(安全咨询、漏洞报告及一般咨询):contact@mindlab.ltd ## **生效日期与版本** 本白皮书自封面所载生效日期起生效。Mindai 可不时发布更新版本的白皮书,以反映其安全体系、产品架构或适用法律的变化。本白皮书可能发布本地化版本;在英文版与本地化版本之间发生不一致时,以英文版为准,但适用当地法律明确另有要求者除外。 *—— 白皮书正文至此结束 ——* # MinT 服务水平协议 (/zh/community/support/sla) # **MinT 服务水平协议** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 服务水平协议》(以下简称“本SLA”)规定 Mindai 就 MinT(Mind Lab Toolkit)所作的服务可用性与支持承诺。本SLA构成《MinT 服务条款》不可分割的组成部分。本SLA中未另行定义的术语,以《MinT 服务条款》中的定义为准。** **【适用范围】本SLA仅适用于 MinT 企业版(“企业版客户”)的客户,且仅就其已支付服务费之“覆盖服务”有效。本SLA不适用于 MinT 社区版(免费用户)、Beta 或预览功能、任何免费试用或评估安排——上述均按“尽合理努力”提供,不附带任何服务水平承诺。** ## **第一条 适用范围与资格** Mindai 以两种版本提供 MinT: - 社区版——免费提供,仅供评估、学习及非生产用途使用。社区版按“现状”提供,不附带任何服务水平承诺、服务积分或保证支持响应时间。 - 企业版——依据已签订的订单或订阅协议向付费客户提供。本SLA仅适用于企业版。 本SLA仅覆盖第二条所定义之“覆盖服务”中的“Mindai 平台层”,不延伸至 IaaS 层、客户侧系统,或任何明确排除在 SLA 覆盖范围之外的功能。 ## **第二条 定义** - “覆盖服务”:指企业版客户已就其支付服务费的生产级 MinT 服务,包括:(a)由 Mindai 运营的训练平台控制面 API、控制台、任务编排服务、身份与访问管理服务及元数据服务;及(b)由 Mindai 运营的中转站 API 网关(含 Macaron 系列模型及第三方开源模型的 API 调用层、限流与鉴权层)(统称“Mindai 平台层”)。 - “IaaS 层”:指 MinT(含训练平台与中转站)所依赖、由第三方云、GPU 或基础设施服务商(“子处理方”)提供的底层算力、GPU、存储、网络及其他基础设施服务。 - “服务费”:指客户就发生 SLA 失败之自然月内的覆盖服务实际支付的经常性服务费用,不含一次性收费、专业服务费、转嫁的 IaaS 费用、税款及任何已抵扣的积分。 - “月度可用性百分比”:按自然月计算,公式为:((当月总分钟数 − 停机时间 − 排除时间)÷(当月总分钟数 − 排除时间))× 100%。 - “停机时间”:指因 Mindai 合理可控之原因导致覆盖服务的 Mindai 平台层对客户不可用的任何时段,以 Mindai 监控系统为准。短暂、瞬时且不影响整体可用性的错误不计入停机时间。 - “排除时间”:含义见第七条。 - “服务积分”:指以原发票币种计价、可按本SLA规定抵扣覆盖服务后续发票的积分。 - “严重程度”或“P级”:含义见第五条。 - “标准支持时段”:指新加坡时间(SGT,UTC+8)周一至周五 09:00 至 18:00,新加坡共和国法定公共假日除外。 ## **第三条 服务可用性承诺** Mindai 将尽商业上合理努力使覆盖服务中的 Mindai 平台层达到不低于 99.5% 的月度可用性百分比(“可用性目标”),以自然月为度量周期。 可用性以 Mindai 监控系统在控制面 API 与编排端点处的测量数据为准。当 Mindai 监控数据与客户监控数据存在冲突时,以 Mindai 监控数据为准;明显错误情形除外。 就中转站服务,Mindai 沿用本条项下与训练平台相同的可用性目标与承诺:即企业版客户所访问的中转站 API 网关层同样以 99.5% 的月度可用性百分比为目标运行。中转站的可用性度量、服务积分赔偿与排除事项参照本 SLA 相应条款执行;如中转站服务未来采用不同的可用性目标或独立度量口径,将在补充协议或后续版本中另行约定。 如 Mindai 在任一自然月未达成可用性目标,客户在符合第七条排除事项及第八条索赔流程的前提下,可依第四条获得服务积分。 ## **第四条 服务积分** 经有效申报并核准后,服务积分按下表所列百分比,以未达成可用性目标当月受影响覆盖服务的服务费为基数计算: | **月度可用性百分比** | **服务积分(占服务费比例)** | | --- | --- | | 低于 99.5%,但不低于 99.0% | 5% | | 低于 99.0%,但不低于 95.0% | 10% | | 低于 95.0% | 20%(封顶) | 无论事件次数或累计停机时间多少,任一自然月内向客户支付的服务积分总额在任何情况下均不超过当月服务费的百分之二十(20%)。 服务积分不可退现、不可转让,仅可抵扣覆盖服务的后续发票。如出现下列情形,服务积分作废:(i)在积分抵扣前,客户账户因可归责于客户的事由被终止;或(ii)客户未按时支付无争议的应付款项。 ## **第五条 支持响应时间** Mindai 将按下表所列响应目标,于标准支持时段内对企业版客户提交的支持请求作出响应。 | **严重程度** | **定义** | **初次响应目标** | | --- | --- | --- | | P1(严重) | 覆盖服务的生产环境完全无法访问或完全失效,且不存在商业上合理的替代方案。 | 4 个标准支持小时内 | | P2(高) | 覆盖服务的主要功能受到实质性损害或显著降级;可能存在替代方案,但不适合长期使用。 | 1 个标准支持工作日内 | | P3(中) | 次要功能受损;存在合理的替代方案;不对生产使用造成实质性影响。 | 3 个标准支持工作日内 | | P4(低) | 一般性问题、配置咨询、文档请求或功能建议。 | 5 个标准支持工作日内 | “初次响应”指 Mindai 支持工程师对支持请求作出确认、给出初步评估、并在可能时提供初步解决路径。初次响应不等同于问题最终解决。 在标准支持时段之外提交的支持请求,就响应时间计算而言,视为在下一个标准支持工作日开始时收到。 严重程度由客户在提交支持请求时初步确定,并由 Mindai 本着善意予以确认。如 Mindai 合理认为初步分级不当,将与客户协商并可附理由重新分级。 延伸支持安排(含 7×24 覆盖、加速 P1 响应、专属技术客户经理、指定升级路径或现场支持)作为独立加购的附加服务,依据另行签署的延伸支持订单提供。无该订单的,按本条规定的标准方式提供支持。 ## **第六条 维护窗口** Mindai 将不时对覆盖服务进行计划维护,以升级、修补或改进服务。Mindai 将尽合理努力安排维护,以最小化对客户的影响。 对于计划维护,Mindai 将通过控制台或向客户指定的管理员联系人发送电子邮件,至少提前七(7)天通知企业版客户,并说明维护的预计起始时间、持续时长及范围。 Mindai 亦可在合理必要时进行紧急维护,以应对安全漏洞、完整性威胁或对服务造成紧迫影响的事件。对于紧急维护,Mindai 将在情况允许范围内尽可能提前通知。 计划维护与紧急维护期间不计入停机时间,构成排除时间的一部分。 ## **第七条 排除事项** “排除时间”指因下列任一原因导致覆盖服务不可用、降级或中断的任何时段,该等时段不计入月度可用性百分比的停机时间: - (a)IaaS 层事件——任何由子处理方运营的底层算力、GPU、存储、网络或其他基础设施服务发生的中断、降级、容量限制、延迟或其他不可用情形。Mindai 不对 IaaS 层的可用性作出保证,亦不对任何由 IaaS 层引起的不可用情形承担本SLA下的责任; - (b)不可抗力——任何超出 Mindai 合理控制的事件,包括但不限于天灾、自然灾害、火灾、洪水、地震、流行病或大流行病、战争、内乱、恐怖主义、破坏行为、罢工、劳资纠纷、政府命令、禁运、制裁、跨境数据传输限制,或异常规模的拒绝服务攻击; - (c)第六条所述之计划维护与紧急维护; - (d)客户原因事项——含客户或客户人员的任何作为、不作为、配置错误或滥用;客户提供的训练数据、自定义代码或容器镜像存在缺陷;超出任何配额、速率限制、合理使用阈值或容量预留;或未遵守 Mindai 公布的技术要求。为免疑义,Mindai 仅提供训练执行基础设施,不对客户自行设计的训练配方、超参数、奖励函数、损失函数或模型架构的实质质量、正确性、收敛性或适用性进行审查、验证或担保; - (e)客户侧系统——因客户自有设备、软件、网络或非由 Mindai 运营的第三方服务引起的问题; - (f)Mindai 依据《服务条款》或《可接受使用政策》、或依据有权机关合法命令对覆盖服务(全部或部分)的暂停或终止; - (g)明确标注为 Beta、Alpha、预览、实验性或试用之功能(统称“预发布功能”); - (h)由客户主动发起的对覆盖服务之配置、集成或环境变更所引起的中断; - (i)社区版及任何其他免费层服务;以及 - (j)相关订单、工作说明书或产品文档中明确排除在 SLA 覆盖范围之外的任何其他事件。 ## **第八条 服务积分申报流程** 如欲获得服务积分,客户应于 Mindai 未达成可用性目标之自然月结束后三十(30)个自然日内,向 contact@mindlab.ltd 提交书面索赔。逾期提交的索赔不予受理。 每份索赔应至少包含: - (a)客户账户标识及受影响的覆盖服务; - (b)索赔所涉自然月; - (c)客户对月度可用性百分比的计算及所申请的服务积分金额; - (d)所依据的每次停机事件的日期、时间与持续时长,及可提供的佐证材料(如错误信息、监控截图、支持工单编号);以及 - (e)确认据客户所知,相关事件不属于排除时间之任何类别。 Mindai 将对照其自身的监控记录核验每份索赔,并在收到完整索赔后三十(30)个自然日内作出处理决定。经核准的服务积分将抵扣 Mindai 后续向客户开具的下一张覆盖服务正式发票。不予退现。 ## **第九条 唯一与排他救济** 除《服务条款》另有明确规定外,第四条规定的服务积分系客户就 Mindai 未达成本SLA项下可用性目标或支持响应目标之唯一与排他救济,亦构成 Mindai 就此类未达成情形之唯一与排他责任。本第九条不限制双方在《服务条款》项下因重大违约可主张的权利或救济,亦不限制依适用法律不可排除之权利或救济。 ## **第十条 本SLA的更新** Mindai 可不时更新本SLA。任何对现有企业版客户实质性减损 Mindai 承诺水平的更新,自向该等企业版客户发出通知之日起至少满三十(30)日后方可生效,且仅对生效日之后期间适用。在更新生效日之后客户继续使用覆盖服务,即视为接受更新后的SLA。 ## **第十一条 联系方式** 本SLA项下的全部通知、支持请求与服务积分索赔,请通过下列方式联系: - 服务提供方:MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司),注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 电子邮箱(支持请求、SLA索赔及通用咨询):contact@mindlab.ltd ## **生效日期与版本** 本SLA自封面所载生效日期起生效。Mindai 可发布本SLA的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本SLA正文结束 ——* # MinT 子处理方清单 (/zh/community/support/subprocessors) # **MinT 子处理方清单** *生效日期:2026 年 7 月 【】 日 · v2.0* ## **第一条 目的** 本子处理方清单(下称“本清单”)列明 MINDAI PTE. LTD.(下称“Mindai”)为提供 MinT 服务而委托、代客户处理个人信息的第三方。本清单依《MinT 数据处理协议》(下称“DPA”)、《MinT 隐私政策》及《MinT 安全与合规白皮书》引用,并构成上述文件的组成部分。 ## **第二条 维护方式** Mindai 持续维护本清单。Mindai 新增或替换子处理方的,应依 DPA 第六条更新本清单,并通过 MinT 控制台、客户门户或电子邮件,于变更生效前至少三十(30)日向客户发出通知;如出于安全、法律或运营紧急需要缩短通知期限的,应尽快告知。 ## **第三条 客户权利** 客户可按 DPA 第 6.4 款的约定基于合理数据保护理由对新子处理方提出异议。现行本清单可通过 MinT 客户门户查阅,或交由 contact@mindlab.ltd 索取。 ## **第五条 变更记录** • v2.0(2026 年 7 月 【】 日):随 MinT 对外发布同步首次发布。 ## **第六条 联系方式** 有关本清单的问题,请联系:contact@mindlab.ltd。 # MinT 服务条款 (/zh/community/support/terms) # **MinT 服务条款** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 服务条款》(以下简称“本条款”或“本协议”)构成您(个人用户或企业法人主体,以下简称“您”或“客户”)与 MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721,以下简称“Mindai”、“我们”或“服务提供方”)之间具有法律约束力的协议。通过点击“我同意”、注册账户、访问或使用 MinT 任何功能,即视为您已完整阅读、理解并同意接受本条款的全部内容。如您不同意本条款任何条款,请勿使用 MinT。** **【特别提示】本条款中以加粗形式标注的条款涉及您的重大权利义务、责任限制、争议解决与管辖等关键事项,请您格外关注。如您系企业用户,您的代表应当具备相应授权代表企业接受本条款。** ## **第一条 定义** 除本条款另有明确约定外,以下术语在本条款中具有以下含义: - “MinT” 或 “本服务”:指 Mind Lab Toolkit,一款由 Mindai 提供的人工智能平台,包括两个独立的组成部分:(a)训练平台——面向开发者与企业客户的强化学习(RL)模型训练基础设施工具与参数平台,产出物为模型参数(包括模型权重、检查点、LoRA 适配器、评估报告等);(b)中转站——通过 API 接口方式向您提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM 等)的调用能力。本服务包括其相关网站、API、SDK、控制台与文档。 - “用户” 或 “您” 或 “客户”:指注册、访问或使用 MinT 的个人开发者、研究人员或企业法人主体;如系企业用户,包括其授权使用 MinT 的全体员工与代表。 - “账户”:指您注册 MinT 后获得的,用于访问和使用本服务的唯一凭证。 - “API 密钥”:指 Mindai 签发给您用于以编程方式调用 MinT 接口的认证凭证。 - “客户数据”:指您通过 MinT 上传、提交、生成或处理的所有数据,包括但不限于(a)通过训练平台上传或产生的训练数据集、模型权重、训练任务配置、运行日志与推理输入与输出,及(b)通过中转站 API 提交的输入与由此产生的输出等,但不包括您的账户注册信息。 - “训练数据”:指您为训练或微调模型而上传至 MinT 训练平台的数据集,是“客户数据”的组成部分。 - “训练产出”:指您使用 MinT 训练平台完成训练任务后产出的模型权重、检查点(checkpoint)、适配器(adapter,如 LoRA 权重)、评估报告等成果物。 - “基础模型”:指 MinT 训练平台集成或支持的、由 Mindai 或第三方(如开源社区、其他模型厂商)提供的预训练人工智能模型。 - “订阅计划”:指您所选择的服务订阅形式,因您使用的 MinT 组成部分而不同:(A)训练平台订阅——按算力资源用量或订购规模计费,包括但不限于免费试用版、按用量计费的开发者版、固定费用企业版、私有化部署版及科研合作或研究预览版;(B)中转站订阅——按您所调用的模型类别及调用量计费,包括但不限于 Macaron 系列模型 API 调用(按输入/输出 Token 用量计费)与第三方开源模型 API 调用(按输入/输出 Token 用量计费),以及 Mindai 可能提供的其他形式。各订阅计划的具体功能、支持模型清单、用量上限与价格以 MinT 官方计费页面或您与 Mindai 单独签署的订单为准。 - “服务等级协议” 或 “SLA”:指《MinT 服务等级协议》,规定本服务的可用性承诺和未达标时的服务积分赔偿机制,构成本协议不可分割的一部分。 - “可接受使用政策” 或 “AUP”:指《MinT 可接受使用政策》,规定您使用 MinT 的禁止行为与合规要求,构成本协议不可分割的一部分。 - “隐私政策”:指《MinT 隐私政策》,规定 Mindai 处理您个人信息的方式,构成本协议不可分割的一部分。 - “关联公司”:指直接或间接控制、被控制或与 Mindai 处于共同控制之下的任何实体。 - “测试版功能”:指标注为“Beta”、“实验性”、“预览版”或类似名称的功能、产品或服务。 ## **第二条 服务说明与用户资格** ### **2.1 服务概述** MinT 是一款面向开发者、研究团队和企业客户的人工智能平台,由两个独立的组成部分构成:(A)训练平台——强化学习模型训练基础设施与参数平台,提供包括但不限于:(i)分布式训练任务的算力调度与编排;(ii)LoRA、全量微调等多种训练方法的统一接口;(iii)训练任务的监控、日志与评估;(iv)模型推理与部署辅助工具;(v)相关 API、SDK 与开发者文档。(B)中转站——通过 API 接口方式向您提供:(i)由 Mindai 自主研发的 Macaron 系列模型;(ii)由 Mindai 部署的第三方开源模型(如 DeepSeek、GLM 等)。各组成部分的具体功能、支持模型清单以 MinT 官方网站及产品文档载明者为准。 **【服务性质声明】MinT 由两个独立的服务组成,融合在同一平台品牌下:(a)训练平台——面向开发者与企业客户的强化学习模型训练基础设施工具与参数平台。您可通过训练平台训练、微调、评估您自己的模型;训练完成后由您自行决定模型的部署与使用方式。训练平台的产出物仅为模型参数,不包括任何向公众传播的文本、图片、音频、视频或其他内容。就训练平台,Mindai 提供模型训练基础设施与算力资源,其产出为模型参数,Mindai 本身不直接面向公众提供生成式 AI 内容或算法推荐服务,因而就训练平台层面不构成《生成式人工智能服务管理暂行办法》项下的生成式人工智能服务提供者或《互联网信息服务算法推荐管理规定》项下的算法推荐服务提供者。您使用训练平台训练得到的模型如何对外部署、向何种对象提供何种服务、生成何种内容,由您自行决定,并由您自行承担相应法律责任,包括但不限于在适用司法辖区履行模型备案、算法备案、安全评估、内容审核等监管义务。(b)中转站——Mindai 通过 API 接口方式向您提供以下两类模型的调用能力:(i)Mindai 自有的 Macaron 系列模型;(ii)Mindai 基于开源许可证部署的第三方开源模型。您通过中转站以 API 密钥方式调用上述模型,用于您自身 AI 业务用途。就中转站,Mindai 作为 API 服务提供方,可能构成适用司法辖区项下的服务提供者或服务技术支持者(视具体模型、您的应用场景与监管口径)。您使用中转站输出对外提供服务的,您独立承担作为服务提供者的全部监管义务。** ### **2.2 用户资格** 注册、访问或使用 MinT,您应当符合下列全部条件: - 您系年满 18 周岁或所在司法辖区法定成年年龄(以较高者为准)的自然人,具备完全民事行为能力;或您系依法设立并有效存续的法人或其他组织,其授权代表具有相应权限代表该主体接受本条款; - 您未被列入任何适用经济制裁、出口管制名单(包括但不限于联合国、美国 OFAC、欧盟、新加坡、中华人民共和国的相关名单); - 您所在地未被适用法律或本条款列为禁止访问司法辖区; - 您将遵守注册地、使用地及服务提供地适用的全部法律法规。 ### **2.3 账户注册** 您应当真实、准确、完整地提供注册信息,并在信息发生变更时及时更新。您应当对账户下发生的全部活动承担责任。Mindai 有权要求您完成必要的实名认证或企业资质验证;未完成验证的,Mindai 有权限制您使用部分或全部功能。 ### **2.4 账户安全** 您应当妥善保管您的账户名、密码和 API 密钥。您同意: - 一经发现账户存在未经授权访问或安全事件,立即通知 Mindai; - 对您的账户下发生的所有活动承担责任,无论该活动是否经您授权; - 采取行业通行的安全措施(包括但不限于多因素认证、定期更换密码、API 密钥的最小权限分配)保护您的访问凭证。 ### **2.5 不面向未成年人;儿童安全** **MinT 不面向未成年人、亦不供未成年人使用。MinT 为面向企业与开发者的人工智能平台(含训练平台与中转站两个组成部分),并非消费者产品。若您未满十八(18)周岁(或您所在司法管辖区规定的完全民事行为能力年龄,以较高者为准),您不得注册、访问或使用 MinT。Mindai 不会通过本服务主动收集未成年人的个人信息;如 Mindai 发现在未取得监护人有效同意的情况下收到未成年人个人信息,将不无故迟延地予以删除。** 您进一步陈述与保证,您不会使用 MinT 从事以下行为:(a)训练、微调或评估以生成、传播或以其他方式便利儿童性虐待内容(CSAM)或任何将未成年人色情化、危害未成年人身心健康、剥削未成年人之内容为主要预期用途之模型;(b)训练任何用于诱骗、敲诈、胁迫或以其他方式针对未成年人之模型;或(c)以涉及未成年人的色情化、虐待性或剥削性图像或内容作为训练数据上传。Mindai 有权在不事先通知的情况下暂停或终止相关账户,并有权将疑似 CSAM 相关行为依据适用法律向主管执法机关报告。涉及未成年人之具体禁止性使用,详见 AUP 第 6 条,该等规定以援引方式纳入本协议并构成本协议的一部分。 ## **第三条 订阅、计费与付款** ### **3.1 订阅计划** Mindai 按 MinT 的两个组成部分分别提供订阅计划:(A)训练平台订阅——按算力资源用量或订购规模计费,包括但不限于:(i)免费试用版(带有用量与功能限制);(ii)按用量计费的开发者版;(iii)固定费用的企业版(含定制化服务等级);(iv)私有化部署版(含独立算力资源、独立支持团队);(v)科研合作或研究预览版(按个案授权)。(B)中转站订阅——按您所调用的模型类别及调用量计费,包括但不限于:(i)Macaron 系列模型 API 调用(按输入/输出 Token 用量计费);(ii)第三方开源模型 API 调用(按输入/输出 Token 用量计费);及(iii)Mindai 可能提供的其他形式。各订阅计划的具体功能、支持模型清单、用量上限与价格以 MinT 官方计费页面或您与 Mindai 单独签署的订单为准。 ### **3.2 用量、配额与限速** MinT 服务受到用量配额限制,具体配额随订阅计划不同而异:(A)就训练平台,配额可能包括 GPU 时长、训练任务并发数、存储容量等;(B)就中转站,配额可能包括 API 调用频次、并发请求数、输入/输出 Token 消耗速率等。超出配额的,Mindai 有权采取限速、排队、暂停或按超额单价计费等措施。Mindai 可基于服务质量与防滥用需要合理调整配额,并以适当方式提前通知。 ### **3.3 付款条款** 付费订阅按您所选择的计费周期(按月或按年)扣费。您授权 Mindai 在订阅周期续订日通过您指定的支付方式自动扣款。所有费用均不含适用增值税、消费税、营业税等税费,相关税费由您自行承担。如因汇率、税率变动产生差额,Mindai 可在合理范围内调整。 ### **3.4 退款政策** 付费订阅原则上不予退款。如您在首次购买后十四(14)日内对服务不满意并申请退款,Mindai 可酌情给予全额或部分退款,或服务积分。按用量结算的费用、私有化部署费用、定制化专业服务费用,一经发生不予退款。 ### **3.5 价格调整** Mindai 可对新订阅或续订周期调整价格,调整将提前三十(30)日通过电子邮件、MinT 控制台或官方网站公告等方式通知您。已生效订阅周期内的价格不受影响。如您不接受调整后的价格,可在通知后十四(14)日内终止该订阅,已预付未消耗的部分按比例退还。 ### **3.6 逾期欠款** 如您未在到期日后七(7)日内完成付款,Mindai 有权暂停您的服务访问。恢复服务可能需要您支付全部欠款及合理的滞纳金或催收成本。欠款超过六十(60)日的,Mindai 有权终止您的账户。 ## **第四条 可接受使用** ### **4.1 一般义务** 您同意仅将 MinT 用于合法目的,且不得违反本条款及《MinT 可接受使用政策》(AUP)。AUP 通过引用并入本协议,与本条款具有同等法律效力。 ### **4.2 禁止行为概述** 您不得使用 MinT 从事下列行为(详细清单以 AUP 为准): - (a)训练或微调任何用于违法目的的模型,包括但不限于生成儿童性虐待材料(CSAM)、武器化生物/化学/核/放射性技术、攻击性网络武器、用于大规模监控或政治压迫的人脸识别系统; - (b)训练用于实施欺诈、钓鱼、社会工程或冒充他人身份的模型; - (c)训练用于大规模生成违法、虚假、误导信息或操纵选举的模型; - (d)以未经授权的方式抓取、爬取受版权保护的数据用作训练数据; - (e)规避或篡改 MinT 的安全机制、配额限制、计费机制、内容过滤机制; - (f)对 MinT 进行反向工程、反编译、源代码提取,或试图获取 MinT 内部模型权重、训练算法、调度逻辑等专有信息; - (g)进行未经授权的安全研究、渗透测试、漏洞利用或服务扰动活动; - (h)利用 MinT 进行高频自动化抓取、滥用 API 配额、攻击 MinT 基础设施或其他用户。 - (i)使用中转站输出或以其他方式获取的模型响应,训练、开发或蒸馏与 Macaron 系列模型或 Mindai 其他产品构成竞争关系的人工智能模型; - (j)访问或使用 MinT 服务以构建、开发或提供任何与 Mindai 产品构成竞争关系的产品或服务,或以任何形式转售 MinT 服务; - (k)以自动化或编程方式批量抓取、提取中转站输出内容(本协议明示允许的合理 API 调用除外)。 ### **4.3 执行机制** Mindai 有权基于自动化检测、用户举报或监管要求,对违反本条或 AUP 的行为采取下列措施:(a)首次违规给予警告;(b)多次违规或较严重违规给予服务限速、暂停具体功能;(c)严重违规或拒不整改的,立即暂停或终止账户;(d)涉嫌违法犯罪的,向有权机关报告。 ## **第五条 客户数据与训练数据归属** **【核心承诺】您上传至 MinT 的全部客户数据(包括训练数据、训练产出、推理输入与输出)的所有权、知识产权与控制权完整归您所有。Mindai 不会未经您事先明确授权将客户数据用于 Mindai 自身模型的训练或任何其他商业用途。** ### **5.1 数据所有权** 您对您上传或通过 MinT 处理的全部客户数据享有完整的所有权、知识产权与控制权。本条款不构成您对客户数据任何所有权或知识产权的转让。您对客户数据的合法性、准确性及不侵犯第三方权利承担全部责任。 ### **5.2 处理授权** 您授予 Mindai 一项有限的、非独占的、除非经您同意否则不可转让的、可撤销的全球范围的许可,仅限于:(a)按照您的指示存储、传输、处理客户数据以提供 MinT 服务;(b)出于服务可用性、安全性、合规性需要进行必要的技术处理;(c)按照您的明确指示进行其他处理。未经您事先单独的、明确的同意,Mindai 不会将客户数据用于上述目的之外的任何用途,特别是不会将您的客户数据用于训练 Mindai 自有的或对其他客户提供的模型。 ### **5.3 数据合法性保证** 您声明并保证您上传至 MinT 的训练数据及其他客户数据: - 拥有合法权利来源(自有、获得授权或属于公开可商用数据); - 不侵犯任何第三方的知识产权、隐私权、肖像权或其他合法权益; - 不包含适用法律禁止的违法、违规、有害内容; - 如包含个人信息,已依法获得个人信息主体的有效同意,或具备其他合法处理依据; - 如涉及跨境数据传输,已履行适用的合规义务(包括但不限于新加坡 PDPA、欧盟 GDPR、中国 PIPL 项下的数据出境合规要求)。 ### **5.4 数据保留与删除** 您可随时通过 MinT 控制台删除您的客户数据。账户终止后,Mindai 将在三十(30)日内删除您的客户数据,但下列情形除外:(a)法律法规要求保留的;(b)正在进行的安全事件调查、争议处理需要保留的;(c)经匿名化处理后用于服务统计、安全分析的运行日志。保留期限届满或保留事由消除后,Mindai 将及时删除或匿名化处理。 ### **5.5 数据安全** Mindai 采取符合行业实践的技术措施和组织措施保护客户数据,包括传输加密(TLS 1.2 及以上)、存储加密、访问控制、操作审计、定期安全测试等。具体安全措施详见《MinT 安全与合规白皮书》。 ## **第六条 训练产出与模型权重归属** **【核心承诺】您使用 MinT 训练平台训练得到的全部训练产出(包括模型权重、LoRA 适配器、检查点等)的所有权与知识产权完整归您所有。Mindai 不主张任何权利,不限制您对训练产出的商业化使用。** ### **6.1 训练产出归属** 您使用 MinT 训练平台完成训练任务所产出的全部训练产出,包括但不限于模型权重文件、LoRA 等参数高效微调适配器、检查点、训练日志、评估报告,其所有权与知识产权完整归您所有。您可自由地使用、复制、修改、分发、商业化使用您的训练产出,无需向 Mindai 支付任何额外费用或履行额外许可义务。 ### **6.2 基础模型许可的传递** **请特别注意:如您使用 MinT 训练平台集成的第三方基础模型(包括但不限于开源模型 Llama、Qwen、ChatGLM 等,或商业 API 模型)进行训练,您对训练产出的使用仍受该基础模型原始许可证(License)的约束。MinT 训练平台仅作为训练工具,本协议不能也不会扩大或改变基础模型原始许可证项下您的权利义务。** 您应当在使用任何基础模型前,自行审阅并遵守其原始许可证条款,包括但不限于: - Llama 系列:Meta Llama Community License; - Qwen 系列:Tongyi Qianwen License; - Apache 2.0 / MIT / BSD 等开源许可证项下的署名、复制许可证文本等义务; - 商业 API 模型供应商的服务条款。 ### **6.3 Mindai 对训练产出的最低限度访问** 为提供 MinT 训练平台服务(如训练监控、故障排查、计费核算),Mindai 工作人员可能在严格的访问控制下访问您训练产出的元数据(如文件大小、训练时长、损失曲线等),但不会访问训练产出的实际权重内容,除非:(a)您明确请求技术支持需要 Mindai 协助分析;(b)法律法规或有权机关要求;(c)调查严重的安全事件。 ## **第七条 Mindai 的知识产权** ### **7.1 MinT 平台 IP** MinT 平台、源代码、训练框架、调度算法、用户界面、文档、商标、品牌标识及一切相关知识产权均归 Mindai 或其许可方所有。本条款仅向您授予一项有限的、非独占的、不可转让的、可撤销的许可,使您可在本条款约束下访问和使用 MinT。 ### **7.2 限制** 除本条款明确许可外,您不得: - 反向工程、反编译、反汇编 MinT 平台或试图提取其源代码; - 复制、修改、分发、销售、转售或商业利用 MinT 平台本身; - 移除、修改或遮蔽 MinT 上的任何版权、商标或其他权利声明; - 未经书面许可使用 “MinT”、“Mind Lab”、“Mindai” 等商标或近似标识。 ### **7.3 反馈** 您向 Mindai 提供的关于 MinT 的任何反馈、建议、改进意见,Mindai 可自由使用,无需向您支付任何对价或承担任何义务。但 Mindai 不会以可识别您身份的方式使用上述反馈。 ## **第八条 隐私与个人信息保护** Mindai 处理您个人信息的方式由独立的《MinT 隐私政策》规定,该政策通过引用并入本协议。在符合适用法律前提下,Mindai 收集和处理的个人信息类型主要包括:(a)账户注册信息(姓名、邮箱、手机号、企业信息);(b)服务使用信息(登录日志、API 调用记录、训练任务元数据);(c)支付信息(由第三方支付服务商处理);(d)设备与网络信息(IP 地址、浏览器/设备类型);(e)您主动提交的客户支持信息。 Mindai 遵守新加坡《个人数据保护法》(PDPA)、欧盟《通用数据保护条例》(GDPR)、《中华人民共和国个人信息保护法》(PIPL)等适用法律。您对您的个人信息享有访问、更正、删除、可携带、撤回同意等权利,可通过 contact@mindlab.ltd 行使。 ## **第九条 第三方服务与开源组件** ### **9.1 第三方服务** MinT 可能与第三方服务(如云算力服务商、监控工具、支付服务商、开源模型库)集成。Mindai 已尽合理注意义务选择第三方服务商,但不对第三方服务的可用性、质量、安全性承担责任。您使用 MinT 中集成的第三方服务时,可能同时受该第三方服务条款约束。Mindai 维护的第三方子处理方清单(Subprocessors List)将在 MinT 官方网站公示。 ### **9.2 开源组件** MinT 包含或集成多项开源软件组件,相关组件遵循其各自的开源许可证。完整的开源组件清单及对应许可证文本可在 MinT 文档中查询。 ## **第九条-A 中转站服务** ### **9-A.1 服务定义** Mindai 通过中转站以 API 接口方式向您提供 Macaron 系列模型及第三方开源模型的调用能力。中转站的具体功能范围、支持模型清单、限流规则、计费方式以 MinT 官方文档载明为准。 ### **9-A.2 Macaron 系列模型的知识产权** Macaron 系列模型的模型权重、算法架构及一切相关知识产权由 Mindai 或其许可方全部所有。您通过 API 调用 Macaron 模型的行为仅构成有限的、非排他的、不可再许可的、不可转让的使用许可,仅限于按本协议约定的方式在您的合法业务中使用;您不因调用行为而取得任何模型所有权、蒸馏权、复制权或衍生开发权。 ### **9-A.3 第三方开源模型** 第三方开源模型由 Mindai 基于其开源许可证条款自行部署。您通过中转站调用该等模型的行为受本协议约束;您有义务遵守相关开源许可证项下对下游使用者的合规要求。Mindai 不对第三方开源模型的输出质量、准确性、合规性、非侵权性作出任何明示或默示保证;开源模型上游权利人对模型的授权、可用性、法律地位发生变更的,Mindai 有权相应调整、暂停或终止相关模型在中转站上的可用性。 ### **9-A.4 输入与输出** 您通过中转站提交的输入的所有权归您所有。您保证:(i)您对输入内容享有全部必要权利;(ii)输入内容不违反适用法律、不侵犯任何第三方权益。Mindai 在适用法律允许范围内,将 Mindai 对输出所享有的全部权利、所有权及权益(如有)分配给您,供您在合法业务中使用。您理解并同意:由于生成式人工智能的概率性本质,其他用户可能从同一或相似输入获得相似的输出,Mindai 不就输出的独创性、唯一性作出任何担保;您不得就任何输出对外声称其为人工创作而非人工智能生成。 ### **9-A.5 中转站数据处理** 您通过中转站提交的输入与由此产生的输出由 Mindai 作为受托人依《MinT 数据处理协议》处理。Mindai 承诺不将您的输入或输出用于训练、微调、评估、基准测试或以其他方式开发或改进 Mindai 或任何第三方的人工智能模型,除非您以书面形式事先另行明示、可撤回地表示同意。适用的具体处理规则以 DPA 与《MinT 隐私政策》为准。 ## **第十条 保密** 本协议项下,“保密信息”指一方向另一方披露的、标注为保密或按其性质应当合理理解为保密的非公开信息,包括但不限于商业策略、技术资料、客户数据、定价信息、未公开的产品功能等。接收方应当:(a)以不低于其保护自身保密信息的合理注意程度保护对方保密信息;(b)仅向有合理需要知悉的员工、关联公司、代理或承包商披露,并令其承担同等保密义务;(c)仅出于履行本协议目的使用对方保密信息。 下列信息不构成保密信息:(a)公知信息;(b)独立开发取得;(c)合法第三方来源;(d)依法律法规或有权机关要求披露的(披露方应仅在被要求的最低必要范围内披露,并在法律允许的前提下事先向对方作出合理通知,以便对方寻求保护令或其他适当救济)。 保密义务在本协议终止后继续有效三(3)年;构成商业秘密的信息,保密义务持续至该信息丧失商业秘密属性为止。 ## **第十一条 服务可用性与 SLA** Mindai 将以商业上合理的努力提供持续、稳定的 MinT 服务。对付费订阅用户,Mindai 提供月度可用性承诺,具体承诺等级、可用性计算方法、未达标时的服务积分赔偿等由独立的《MinT 服务等级协议》(SLA)规定。SLA 通过引用并入本协议。 免费试用版用户、研究预览版用户不享受 SLA。下列情形不计入服务不可用:(a)计划内维护(Mindai 将至少提前七十二(72)小时通知);(b)不可抗力;(c)因您违反本条款或 AUP 引起的服务限制或暂停;(d)因您的网络环境、第三方服务故障引起的中断;(e)您选用的私有化部署版本由您自行运维的部分。 ## **第十二条 测试版功能** Mindai 可能向您提供标注为“Beta”、“实验性”、“预览版”或类似名称的测试版功能。测试版功能按“现状”提供,不附带任何明示或默示的保证。Mindai 不承诺:(a)测试版功能将正式发布;(b)维护或支持测试版功能;(c)保留测试版功能产生的数据。Mindai 可随时修改、撤回或终止测试版功能而无需事先通知。 ## **第十三条 免责声明** **在适用法律允许的最大范围内,MinT 服务及其全部输出(包括训练产出)按“现状”和“当前可用”提供,Mindai 不作任何明示或默示的保证,包括但不限于适销性保证、特定用途适用性保证、不侵权保证。** Mindai 特别不保证: - MinT 训练平台训练得到的模型在准确性、性能、收敛性方面达到您的预期; - MinT 服务不会发生中断、错误、漏洞; - 基础模型供应商提供的预训练权重不存在缺陷或安全漏洞; - MinT 适用于您的特定业务场景或商业用途。 您理解并同意:人工智能模型训练具有内在的不确定性、随机性和实验性。您应当自行对训练产出进行充分的测试、验证和安全评估,方可在您的产品或服务中使用。 ## **第十四条 责任限制** **14.1 排除损害。在适用法律允许的最大范围内,无论基于合同、侵权(含过失)、严格责任或其他法律理论,Mindai 对您因使用或无法使用 MinT 而产生的任何间接、偶然、特殊、惩罚性或衍生性损害均不承担责任。前述损害包括但不限于:利润损失、业务损失、合同损失、收入损失、商誉损失、生产损失、预期节约损失、数据损失,以及采购替代品或服务的成本——无论 Mindai 是否事先被告知该等损害可能发生。** **14.2 责任累计上限。在任何情形下,Mindai 对本协议项下全部责任的累计上限不超过您在索赔事件发生前十二(12)个月内为引发索赔的服务向 Mindai 实际支付的服务费金额。** **14.3 累计限额。您就同一或多个事项、以任何形式、由您本人或您的用户提出的所有索赔(无论索赔次数、类型或索赔方)在任何情形下合并计算,共同受第 14.2 条上限约束。** 14.4 例外。上述责任限制不适用于下列情形:(a)Mindai 的故意或重大过失行为;(b)Mindai 违反第七条对您 IP 的明示承诺;(c)Mindai 在第十五条项下的特定赔偿义务;(d)适用法律不允许限制或排除的责任。 ## **第十五条 赔偿** ### **15.1 您对 Mindai 的赔偿** 您同意就下列事项产生的全部第三方索赔、损失、责任、合理诉讼费用,对 Mindai 及其关联公司、员工进行赔偿、抗辩并使其免受损害:(a)您违反本条款或 AUP;(b)您的客户数据违反第五条第3款的合法性保证;(c)您使用 MinT 训练平台训练的模型(包括其后续部署、生成内容)违反法律或侵犯第三方权利;(d)您违反基础模型原始许可证项下的义务。 ### **15.2 Mindai 对企业客户的有限知识产权赔偿** 对于企业版及以上付费订阅客户,如未修改的 MinT 训练平台服务本身(即第 2.1 条所述训练平台部分,不含中转站、Macaron 输出、第三方开源模型及其输出)侵犯第三方知识产权,Mindai 同意:(a)抗辩相关索赔;(b)支付最终判决或和解金额;(c)选择性地:调整服务、为您取得继续使用许可、或终止本协议并按比例退还预付费用。Mindai 此项赔偿义务不适用于:(i)您对 MinT 的修改;(ii)您将 MinT 与未经 Mindai 批准的第三方组件结合使用;(iii)您未按 Mindai 通知及时升级版本;(iv)由中转站输出、或第三方开源模型的调用引起的任何索赔;(v)您的输入内容本身构成侵权来源的;(vi)您应知或明知构成侵权的使用;(vii)您在输出中使用他人商标或以专利实现方式的;(viii)上述任一情形之组合,或本质上并非因未经修改的 MinT 训练平台服务本身固有属性引起的其他索赔。 ## **第十六条 期限与终止** ### **16.1 期限** 本协议自您首次接受之时起生效,持续有效至按本条规定终止之时。 ### **16.2 您终止** 您可随时通过 MinT 控制台关闭账户,账户关闭即终止本协议。 ### **16.3 Mindai 终止** Mindai 可在下列情形终止或暂停本协议或您的账户访问: - 您违反本条款或 AUP,且未在 Mindai 通知后三十(30)日内有效整改; - 您从事违法活动; - 您的账户存在安全风险或被滥用; - 法律法规或监管要求; - 对免费试用版用户,Mindai 可提前三十(30)日通知后无理由终止; - 其他 Mindai 合理认为对本服务的安全性、可用性、Mindai 或其他用户或第三方的合法权益构成重大风险或紧急情形的。 ### **16.4 终止后果** 本协议终止后:(a)您应当立即停止使用 MinT;(b)您可在终止后三十(30)日内导出您的客户数据和训练产出;(c)逾期未导出的,Mindai 将按第五条第4款规则处理;(d)下列条款在本协议终止后继续有效:第一条(定义)、第五条(数据归属)、第六条(训练产出归属)、第七条(IP)、第十条(保密)、第十三至十五条(免责、责任限制、赔偿)、第十七条至第二十一条(一般条款)。 ## **第十七条 出口管制、制裁与人工智能技术管制** ### **17.1 一般合规** 您应当遵守适用的出口管制和经济制裁法律,包括但不限于《新加坡战略物品(管制)法》、美国《出口管理条例》(EAR)及 OFAC 制裁项目、欧盟《两用物项条例》以及《中华人民共和国出口管制法》。MinT 不向下列对象提供:(a)位于受全面制裁的国家或地区(包括但不限于伊朗、朝鲜、叙利亚、古巴、克里米亚地区)的用户;(b)被列入新加坡、美国 OFAC、欧盟、联合国、中华人民共和国商务部等出口管制或制裁名单的个人或实体;(c)将 MinT 用于受管制的核武器、化学武器、生物武器、导弹技术等用途的用户。 ### **17.2 人工智能技术出口管制** **人工智能特别出口管制。您知悉,模型权重、训练算法及相关技术在某些司法管辖区内可能构成受人工智能或两用技术出口管制制度管制的物项。在不限制 17.1 条一般性的前提下,您不得使用 MinT 训练平台训练、微调、出口、再出口、转让或以其他方式提供任何训练产出或基础模型衍生物,违反:(a)美国关于先进计算与 AI 相关技术的管制(包括适用的 EAR 实体清单、外国直接产品规则及最终用途限制);(b)《中华人民共和国出口管制法》及其实施措施对两用物项、技术或服务的管制(包括中国商务部就人工智能技术采取的任何限制措施);或(c)新加坡、欧盟或任何其他适用司法管辖区的 AI 或两用特别出口管制制度。** ### **17.3 下游合规责任** 您对后续转让、部署或将训练产出商业化所需的任何出口许可、登记或政府授权独立承担全部责任,包括因将训练产出整合进面向其他司法管辖区用户提供的产品或服务而可能触发的授权要求。Mindai 仅提供训练基础设施,不由此承担且明确免除代表您获取该等下游出口授权的任何义务。 ## **第十八条 投诉、举报与版权侵权通知** ### **18.1 一般投诉举报** 如您发现其他用户违反本条款或 AUP、侵犯您的合法权益、或 MinT 服务存在违法违规情形,可通过下列方式向 Mindai 投诉举报: - 电子邮箱:contact@mindlab.ltd - 响应时限:Mindai 将在收到投诉后十五(15)个工作日内反馈实质性处理结果;情况复杂的可适当延长,但不超过六十(60)日。 如您对 Mindai 处理结果不满意,可申请由 Mindai 法律负责人复核。您也可向有权监管机关投诉、举报或寻求救济。 ### **18.2 版权及知识产权侵权通知** 如您认为通过 MinT 传播、存储或生成的内容侵犯了您的著作权、商标权或其他知识产权,请通过下列方式向 Mindai 提交书面通知: - 电子邮箱:contact@mindlab.ltd - 邮寄地址:MINDAI PTE. LTD.,152 Beach Road, #11-05, Gateway East, Singapore 189721 - 收件人:General Counsel / Copyright Agent(法务负责人 / 版权代理人) 您的书面通知应当包含下列全部信息,否则 Mindai 可能无法有效处理:(a)有权代表权利人行事之人员的实体签名或电子签名;(b)您声称遭到侵权的具体作品的说明(如为多个作品,可提供代表性作品清单);(c)您声称的侵权材料在 MinT 服务中的具体位置描述,以便 Mindai 定位;(d)您的姓名(或机构名称)、通信地址、电话号码及电子邮件地址;(e)您善意相信争议使用未经权利人、其代理人或法律授权的声明;(f)您声明上述信息准确无误,且在伪证罪或作虚假陈述的法律责任约束下,声明您即为权利人或已获权利人授权代表其行事。 Mindai 收到符合前款要求的通知后,可以(但无义务)删除、禁用或限制访问被指控侵权的内容。Mindai 有权在适当情形下终止重复侵权者的账户。您对通知中信息的真实性承担责任;恶意或不实通知给 Mindai 或他方造成损失的,您应承担相应赔偿责任。 ## **第十九条 争议解决与适用法律** ### **19.1 适用法律** 本协议的订立、效力、履行、解释、争议解决均适用新加坡共和国法律,但不包括其法律冲突规范。 ### **19.2 协商前置** 因本协议产生或与本协议有关的任何争议,双方应当首先通过友好协商解决。协商应当在一方书面通知另一方后三十(30)日内进行。 ### **19.3 仲裁** **协商不成的,争议应当提交新加坡国际仲裁中心(SIAC),按其届时有效的仲裁规则进行仲裁。仲裁地为新加坡,仲裁语言为英语,仲裁员人数为一(1)名(争议金额超过 USD 250,000 的为三(3)名)。仲裁裁决为终局裁决,对双方均有约束力。** ### **19.4 临时救济** 尽管有上述仲裁约定,任何一方可在任何有管辖权的法院申请保全令、禁令或其他临时性救济措施,尤其是在涉及知识产权侵权、保密信息泄露的紧急情形。 ### **19.5 集体诉讼放弃** 在适用法律允许的范围内,您同意以个人身份而非代表任何拟议或实际的集体或代表行动提起索赔。 ### **19.6 强制性消费者保护** 如您所在司法辖区适用的强制性消费者保护法授予您本条所约定之外的额外权利或救济,本条款不排除该等强制性权利。 ## **第二十条 协议修改** Mindai 可不时修改本协议。实质性修改将提前三十(30)日通过电子邮件、MinT 控制台或官方网站公告等方式通知您;非实质性修改(如错别字订正、表述优化)可即时生效。通知期满后您继续使用 MinT 即视为接受修改后的条款;如您不接受修改,您可在通知期内终止本协议,已预付未消耗的服务费按比例退还。 ## **第二十一条 一般条款** ### **21.1 完整协议** 本条款连同《MinT 隐私政策》、《MinT 可接受使用政策》、《MinT 服务等级协议》及您与 Mindai 单独签署的订单或补充协议,构成双方就 MinT 服务事项的完整协议,取代此前的任何口头或书面协议。 ### **21.2 可分割性** 本协议任何条款被认定为无效、违法或不可执行的,不影响其他条款的效力,且应当以最接近原意的有效条款替代。 ### **21.3 不弃权** Mindai 未行使或迟延行使本协议项下任何权利,不构成对该权利的放弃。 ### **21.4 转让** 未经 Mindai 事先书面同意,您不得转让本协议项下任何权利或义务。Mindai 可基于公司重组、并购、资产出售等情形将本协议转让予其关联公司或继受方,无需事先征得您的同意,但应及时通知您。 ### **21.5 通知** Mindai 向您发出的通知可通过下列方式之一:(a)发送至您注册时提供的电子邮箱;(b)在 MinT 控制台或官方网站公示。您向 Mindai 发出的通知应当发送至 contact@mindlab.ltd。 ### **21.6 语言** 本协议同时提供中文版和英文版。如两版存在歧义,对个人用户以您注册时所选语言版本为准;对企业客户以双方在订单中约定的语言为准;如订单未约定,以英文版本为准。 ### **21.7 不可抗力** 因不可抗力(包括但不限于自然灾害、战争、传染病大流行、政府行为、监管命令、关键基础设施故障、网络攻击、第三方开源模型、上游 API 或 Mindai 依赖的第三方服务的中断、终止、授权变更或不可用)导致 Mindai 不能履行或迟延履行本协议的,Mindai 不承担违约责任。受影响方应当及时通知对方并采取合理措施减损。不可抗力事件持续超过六十(60)日且实质影响本协议目的实现的,任何一方均可书面通知另一方终止本协议且不承担违约责任。 ### **21.8 独立缔约方** 双方为独立缔约方,本协议不构成代理、合伙、合资或雇佣关系。 ### **21.9 第三方受益人** 除本协议明示规定外,本协议不创设任何第三方受益人权利。 ## **第二十二条 联系方式** 如您对本协议有任何疑问、意见、投诉或建议,可通过下列方式联系 Mindai: - 服务提供方:MINDAI PTE. LTD. - 通用联系邮箱:contact@mindlab.ltd - 法律事务联系邮箱:contact@mindlab.ltd - 数据保护负责人邮箱:contact@mindlab.ltd - 注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 ## **接受声明** □ 我已完整阅读、理解并同意接受本《MinT 服务条款》全部条款。我特别注意到:第十三条免责声明、第十四条责任限制、第十九条争议解决条款。 □ 我已年满 18 周岁,具备完全民事行为能力,可独立签署本协议;或我具有充分授权代表企业签署本协议。 □ 我同意《MinT 隐私政策》、《MinT 可接受使用政策》、《MinT 服务等级协议》一并构成本协议组成部分。 *—— 本协议正文结束 ——* # 配置与管理 API Key (/zh/enterprise/configure/configure-credentials) import { Callout } from 'fumadocs-ui/components/callout'; # 配置与管理 API Key MinT 用 `sk-` 开头的 API Key 作为客户端身份凭证。企业版走对接会议获取,配置方式与社区版一致。 ## 申请 API Key 企业版账号通过对接会议开通,管理员会在企业账号中分配工作空间与算力配额;Key 从 [macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) 领取。如尚未获得邀请,可联系销售:[sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 ## 配置环境变量 拿到 `sk-` 开头的 Key 后,将其写入环境变量。中国大陆区域请使用 `mint-cn` 端点: ```bash 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 自动加载 项目根目录下的 `.env` 文件也会被自动加载,方便在团队内部分发配置。示例: ```bash # .env MINT_API_KEY=sk-your-api-key-here MINT_BASE_URL=https://mint.macaron.xin/ TINKER_BASE_URL=https://mint.macaron.xin/ TINKER_API_KEY=sk-your-api-key-here ``` 请把 `.env` 加入 `.gitignore`,避免 Key 进入版本控制。 ## 验证配置 ```bash python -c "import mint; print(mint.ServiceClient._require_api_key)" ``` 如果 `_require_api_key` 报错或预检超时,请检查 `MINT_API_KEY` 与 `MINT_BASE_URL` 是否正确导出,以及 `mint.macaron.xin` / `mint-cn.macaron.xin` 是否可达。 ## 权限管理与审计 企业版提供基于工作空间的 RBAC 模型,可对训练任务、数据集、模型权重单独授权。每次 API 调用与控制台操作均落审计库,保留周期可配置(最长可至 1 年)。 ## 私有化部署下的凭证 明确私有化交付"可选国密、SSO、AD 集成与日志外发"。具体协议与集成路径在 onboarding 阶段由 Mind Lab 方案团队与客户 IT 协商,随集群一并部署。 Key 配好后,跑[快速入门](/zh/enterprise/get-started/quick-start)的第 4 步(跑通第一个训练任务)。所有可用环境变量的完整清单见[可用环境变量](/zh/enterprise/configure/environment-variables)。 # 可用环境变量 (/zh/enterprise/configure/environment-variables) import { Callout } from 'fumadocs-ui/components/callout'; # 可用环境变量 MinT 客户端 SDK 支持一组环境变量,用于配置端点与鉴权。以下清单严格对应 SDK 明确支持的变量。 ## 连接与鉴权 | 变量 | 说明 | 示例 | | --- | --- | --- | | `MINT_API_KEY` | 企业版 API Key,`sk-` 开头。 | `sk-your-api-key-here` | | `MINT_BASE_URL` | MinT 端点,末尾保留 `/`。 | `https://mint.macaron.xin/` 或 `https://mint-cn.macaron.xin/` | | `TINKER_API_KEY` | tinker 兼容入口(`import mint as tinker`)。通常设为 `$MINT_API_KEY`。 | `$MINT_API_KEY` | | `TINKER_BASE_URL` | 同上,tinker 兼容。通常设为 `$MINT_BASE_URL`。 | `$MINT_BASE_URL` | ## 默认底座 | 变量 | 说明 | 示例 | | --- | --- | --- | | `MINT_BASE_MODEL` | Cookbook 等支持该变量的脚本会读取它作为底座。 | `Qwen/Qwen3-4B-Instruct-2507` | ## .env 自动加载 项目根目录下的 `.env` 文件会被自动加载,方便在团队内部分发配置。`.env` 里同样使用上述变量名。请务必把 `.env` 加入 `.gitignore`。 ## 大陆区端点 明确写明:"中国大陆区域请使用 `mint-cn` 端点": ```bash export MINT_BASE_URL=https://mint-cn.macaron.xin/ ``` ## 配置错误的常见症状 如果 `_require_api_key` 报错或预检超时,检查: - `MINT_API_KEY` 与 `MINT_BASE_URL` 是否正确导出。 - 端点 `mint.macaron.xin` / `mint-cn.macaron.xin`(或企业租户端点)是否可达。 本页只列 SDK 明确定义的变量。SDK 内部还有其他可选变量,但只在特殊场景使用,请通过对接技术接口人确认后再启用,避免依赖未文档化的行为。 # 网络与代理 (/zh/enterprise/configure/network-and-proxy) import { Callout } from 'fumadocs-ui/components/callout'; # 网络与代理 MinT 客户端到集群的所有调用走 HTTPS。企业版在网络接入层比社区版提供更多选项:VPC、专线、防火墙策略均可。私有化交付下集群还可以完全安装到客户内网。 ## 社区版:公网 TLS 社区版通过公网 TLS 访问 `mint.macaron.xin`(大陆区 `mint-cn.macaron.xin`),证书由公共 CA 签发。适合评估与小规模生产。 ## 企业版:VPC / 专线 / 防火墙策略 企业版的网络接入可以概括为"VPC、专线、防火墙策略"。具体形态在 onboarding 阶段由方案架构师协商,覆盖三类需求: - **VPC 对等 / VPC 私有端点**:客户 VPC 与 Mind Lab 集群 VPC 建立对等或私有端点,流量不出云厂商骨干。 - **专线接入**:客户 IDC 与集群之间走云厂商专线。 - **防火墙策略与出站白名单**:客户对出站流量做精确白名单,仅放通企业租户端点。 ## 私有化部署:内网独立集群 对受监管行业(政务、金融、医疗等),MinT 企业版支持完整的私有化部署:集群安装在客户内网,全部数据与模型权重不出客户防火墙。私有化交付包含: - 依赖镜像与离线安装包,支持纯内网环境一键拉起。 - 一致的控制台与 SDK,与公有云版本完全同源,无版本分叉。 - 可选的国密、SSO、AD 集成与日志外发。 - 私有化模型托管:训练得到的 LoRA 与合并权重可直接落地为离线部署包。 ## 客户端如何指向企业租户端点 无论选择哪种网络形态,客户端配置方式一致——通过 `MINT_BASE_URL` 指向企业租户的接入地址: ```bash export MINT_BASE_URL=https:/// ``` 具体地址由 Mind Lab 团队随集群交付时提供。 ## 常见连通性问题 如果 `_require_api_key` 报错或预检超时,检查: - `MINT_BASE_URL` 是否正确指向企业租户端点。 - 企业租户端点在客户网络下是否可达(VPC / 专线 / 防火墙白名单是否配置到位)。 - 私有化部署下,DNS 是否能解析集群域名。 企业版的网络接入形态不是通过 SDK 自助切换,而是在 onboarding 阶段与方案架构师协商确定,随集群一并部署。开通后客户端只需按[配置 API Key](/zh/enterprise/configure/configure-credentials)那页填对 `MINT_BASE_URL`。 # 实践案例:chat-dpo (/zh/enterprise/cookbook/case-chat-dpo) import { Callout } from 'fumadocs-ui/components/callout'; # 实践案例:chat-dpo 本 cookbook 的定位是"**Eval-first 的 DPO 实验,处理 chat 质量的偏好对**"。本页把该 cookbook 的关键事实与在 MinT 企业版上的对应做法整理到一处。 ## 目标 给定 `chosen / rejected` 偏好对,训练一个让模型倾向于 chosen 风格的 LoRA。Benchmark 是**held-out 的成对偏好集合,不是带外部评分员的生成式 benchmark**——评测在训练机内自洽完成。 ## 配方参数 | | | | --- | --- | | 算法 | DPO(成对偏好) | | 底座 | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | `data/train/full.jsonl` | | Benchmark 数据 | `data/eval/full.jsonl`(held-out 成对偏好) | | Primary metric | `eval_pair_accuracy` | ## Lifecycle 顺序 Cookbook 页明确的三步 lifecycle: ```bash uv sync → --dry-run → --eval-only → 训练 ``` - `uv sync`:装依赖。 - `--dry-run`:干跑数据通路,确认 tokenizer / 展平 / loss 计算都通。 - `--eval-only`:在不训练的状态下跑一遍 eval,拿到基线 `eval_pair_accuracy`。 - 训练:正式跑训练循环,周期性评测。 更细粒度的可执行命令与脚本文件名,Cookbook 页面指向上游 README。 ## 在 MinT 上的对应 DPO 在 MinT 上通过 `forward_backward_custom` + 自定义偏好损失实现。控制台里选定 **DPO Recipe** 后会自动接入这条路径;面板推荐超参 `rank=32 / 5 轮 / lr=1e-4 / bs=8`。 ## 企业版差异 此 cookbook 在社区版与企业版上结构完全相同——切换 `MINT_BASE_URL` 与 `MINT_API_KEY` 即可迁移(详见[从社区版迁移](/zh/enterprise/get-started/migrate-from-community))。在企业版上额外可做: - 把底座升到 `Qwen/Qwen3-30B-A3B-Instruct-2507` 或企业版专属模型(`GLM-5` / `Kimi-K2` 等)——详见[支持的模型](/zh/enterprise/get-started/supported-models)。 - 训练完成保存检查点: 明确"每个检查点都会带上元数据(Recipe、数据版本、超参、评测分),方便回溯"。 - 训练与推理都在专属算力池,不与其他租户共享调度。 DPO 算法本身见 [DPO 偏好优化](/zh/enterprise/guides/dpo);想看 RL 端到端例子见 [dapo-aime](/zh/enterprise/cookbook/case-dapo-aime)。 # 实践案例:dapo-aime (/zh/enterprise/cookbook/case-dapo-aime) import { Callout } from 'fumadocs-ui/components/callout'; # 实践案例:dapo-aime Cookbook 页面 `dapo-aime` 演示在 DAPO-Math-17k 上用 **direct GRPO(无 SFT warm-start)**训练数学推理能力,AIME 2024 作为主评测,AIME 2025 / 2026 作辅助 eval。 ## 配方参数 | | | | --- | --- | | 算法 | direct GRPO,不做 SFT warm-start | | 底座 | `Qwen/Qwen3-4B-Instruct-2507` | | 训练数据 | `BytedTsinghua-SIA/DAPO-Math-17k`,本地物化到 `data/train/full.jsonl` | | 主评测 | AIME 2024(`data/eval/aime2024.jsonl`) | | 辅助评测 | AIME 2025 / AIME 2026(manifest 与主评测同一行合约提供) | | Primary metrics | `eval_accuracy`、`eval_greedy_accuracy`、`eval_pass_at_k` | ## 为什么用 direct GRPO 数学题的奖励可程序化——不需要训练奖励模型。GRPO 的核心思路是同 prompt 多次采样、组内归一化奖励;这正好对应 MinT 里"奖励 / 验证器 / 环境反馈"对应到 GRPO Recipe(`loss_fn='importance_sampling'`)的路径。 ## Lifecycle 顺序 ```bash uv sync → --dry-run → --eval-only → 训练 ``` 与 chat-dpo 同款:先装依赖、干跑数据通路、跑一遍基线 eval,再正式训练。细粒度可执行命令 Cookbook 指向上游 README。 ## 在 MinT 上的对应 选择 **GRPO Recipe** 后,MinT 会走 `loss_fn='importance_sampling'` 路径。面板推荐超参 `rank=32 / 5 轮 / lr=1e-4 / bs=8`。控制台调通的流程可以迁移到 Python 脚本。 ## 企业版差异 - 把底座升到 `Qwen/Qwen3-30B-A3B-Instruct-2507` 或 `Qwen/Qwen3-4B-Thinking-2507`(推理 / 思维链变体,见[支持的模型](/zh/enterprise/get-started/supported-models))。 - MoE 模型平均单次完整微调耗时约 1 至 1.5 小时(30B 模型,A3B 结构,)。 - 训练完成保存检查点:每个检查点带上元数据(Recipe、数据版本、超参、评测分),方便回溯。 RL 与 GRPO 算法本身见 [RLHF / GRPO](/zh/enterprise/guides/rlhf);想看 DPO 例子见 [chat-dpo](/zh/enterprise/cookbook/case-chat-dpo)。 # 数据处理 (/zh/enterprise/guides/data-processing) import { Callout } from 'fumadocs-ui/components/callout'; # 数据处理 数据质量决定训练上限。MinT 企业版数据处理模块面向「原始语料 → 训练样本 → 评测样本」的全链路,提供辅助模型配置、原始数据加工、Rubric 评分表构建等能力。 ## 2.1 配置辅助模型 基于现有模型训练最佳实践,提供的原始数据集往往很难符合训练的需求,都需要使用最为先进的模型对于数据集进行清洗和增写。Mind Lab 提供自部署的先进模型(GLM5.2、DeepSeek-v4、GPT-5.5 等)作为数据加工辅助模型;如需使用请联系销售:[sales@mindlab.ltd](mailto:sales@mindlab.ltd),或在「模型配置」页面接入自有 API。 ![配置辅助模型页面](/images/enterprise/image3.png) *图 2.1 — 配置辅助模型* ## 2.2 处理原始数据集 工作流分五步:上传数据 → 选择加工模型 → 设置生成规模 → 预览样本 → 构建数据集。 ### 上传数据集 上传本地准备好的、待清洗的原始数据集,支持三种上传格式。 ![上传原始数据集](/images/enterprise/image4.png) *图 2.2a — 上传原始数据集(支持三种格式)* ### 选择加工模型与系统提示词 选择数据加工的模型,输入数据加工倾向即系统提示词(System Prompt)。 ![选择数据加工模型和系统提示词](/images/enterprise/image5.png) *图 2.2b — 选择加工模型,输入系统提示词* ### 设置数据集名称和生成规模 选择数据集名称和数据集生成规模,控制每条原始数据扩展的样本量。 ![设置数据集名称和生成规模](/images/enterprise/image6.png) *图 2.2c — 设置数据集名称和生成规模* ### 预览样本 在构建数据集之前完成观察样本的生成情况,如果不满意,需要修改模型和系统提示词,重新生成;确认满意后再触发全量构建。 ![预览样本](/images/enterprise/image7.png) *图 2.2d — 预览样本* ### 构建数据集 点击「构建数据集」,按照所选规模构建适当的量级的数据集。 ![构建数据集](/images/enterprise/image8.png) *图 2.2e — 构建数据集* ## 2.3 构建 Rubric Rubric 评分表用于在评测阶段把「答得对不对」量化为可比较的分数。根据构建的数据集,生成评测的 Judge 评分表,后续训练的模型会依据这个评分表进行评分。 ![构建Rubric评分表](/images/enterprise/image9.png) *图 2.3 — 构建 Rubric 评分表* Rubric 一旦冻结,建议在整个项目里保持不变;若中途需要升级评分尺子,请同时记录升级前后的分数对照,避免因「换尺成本」造成数据失真。 数据处理完成后,前往[开始训练](/zh/enterprise/guides/sft)新建训练任务。 # DPO 偏好优化 (/zh/enterprise/guides/dpo) import { Callout } from 'fumadocs-ui/components/callout'; # DPO 偏好优化 DPO(直接偏好优化)适用于 `chosen / rejected` 偏好对数据,训练模型倾向于 chosen 回复。在 MinT 上通过 `forward_backward_custom` 结合客户端自定义 Bradley-Terry loss 实现。 ## 数据形状 训练数据由 `(prompt, chosen, rejected)` 三元组构成,用 `PreferencePair` 表示。每个 pair 展平成两个 Datum,排列为 `[chosen₀, rejected₀, chosen₁, rejected₁, …]`——偶数下标对应 chosen,奇数对应 rejected。Loss 函数依赖这一顺序假设。 ## 构造 Datum Prompt token 的 loss weight 为 0,completion token 为 1.0;completion 前加空格后编码,末尾追加 `eos_token_id`;input 取 `all_tokens[:-1]`,target 取 `all_tokens[1:]`。 ```python def build_datum(prompt_tokens, completion_text, tokenizer): completion_tokens = tokenizer.encode(f" {completion_text}", add_special_tokens=False) completion_tokens.append(tokenizer.eos_token_id) all_tokens = prompt_tokens + completion_tokens weights = [0.0] * (len(prompt_tokens) - 1) + [1.0] * len(completion_tokens) return types.Datum( model_input=types.ModelInput.from_ints(tokens=all_tokens[:-1]), loss_fn_inputs={"target_tokens": all_tokens[1:], "weights": weights}, ) ``` ## Bradley-Terry Loss `forward_backward_custom()` 先让 datums 过 model 拿到 logprobs,再用 `(data, logprobs_list)` 调用 Python loss。关键:**logprobs 要保持 Tensor,不能提前转成 Python list**,否则梯度断裂,反传失败。 ```python import torch, torch.nn.functional as F def sequence_logprob(logprobs, weights): return torch.dot(logprobs.flatten().float(), _to_float_tensor(weights)) def pairwise_preference_loss(data, logprobs_list): chosen_scores, rejected_scores = [], [] for c_d, r_d, c_lp, r_lp in zip( data[::2], data[1::2], logprobs_list[::2], logprobs_list[1::2] ): chosen_scores.append(sequence_logprob(c_lp, c_d.loss_fn_inputs["weights"])) rejected_scores.append(sequence_logprob(r_lp, r_d.loss_fn_inputs["weights"])) margins = torch.stack(chosen_scores) - torch.stack(rejected_scores) loss = -F.logsigmoid(margins).mean() metrics = { "loss": float(loss.detach()), "pair_accuracy": float((margins > 0).float().mean().detach()), "mean_margin": float(margins.mean().detach()), } return loss, metrics ``` ## 训练循环 ```python result = training_client.forward_backward_custom( data, pairwise_preference_loss ) fb = result.result() print(fb.metrics) training_client.optim_step(types.AdamParams(learning_rate=1e-5)).result() ``` ## 参数 | 参数 | 默认值 | 含义 | | --- | --- | --- | | `MINT_BASE_MODEL` | `Qwen/Qwen3-0.6B` | 底座模型 | | `MINT_LORA_RANK` | `16` | LoRA 秩 | | `MINT_DPO_STEPS` | `3` | 训练步数 | | `MINT_DPO_LR` | `1e-5` | Adam 学习率 | 端到端的 DPO 实验(含 eval-first 数据切分、留出集 pair_accuracy)见[chat-dpo 实践案例](/zh/enterprise/cookbook/case-chat-dpo)。 # LoRA 部署与检查点 (/zh/enterprise/guides/lora-and-hub) import { Callout } from 'fumadocs-ui/components/callout'; # LoRA 部署与检查点 MinT 上的训练产物是 LoRA 增量权重——训练完成即可通过 `save_weights_and_get_sampling_client` 拿到一个可采样的客户端。部署形态支持"在线挂载"和"合并部署"两种。 ## 为什么以 LoRA 为核心 LoRA 是 MinT 的核心价值之一:内置 LoRA Manager,训练完成后可直接得到一个轻量增量权重并立刻采样验证。所有训练任务都以 LoRA 微调为核心,平均单次完整微调耗时约 1 至 1.5 小时(30B 模型,A3B 结构)。 ## 保存 LoRA 与拿到采样客户端 训练循环结束后,一行调用保存权重并得到 sampling client: ```python 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)) ``` 得到的 `sampling_client` 支持 `.sample(prompt, sampling_params, num_samples)` 接口,可用于灰度对比、自动评测、A / B 上线等场景。 ## 两种部署形态 明确 LoRA 权重可以一键挂载到推理服务,得到一个 **OpenAI 兼容的 Endpoint**;部署支持两种模式: | 形态 | 说明 | 适用场景 | | --- | --- | --- | | **LoRA 在线挂载** | 与基础模型共享显存,启动时间最快。 | 多实验并行采样、灰度对比、A / B 上线 | | **LoRA 合并部署** | 把 LoRA 合并进底座生成完整权重,导出后可单独离线部署。 | 私有化交付、离线部署 | ## 保存检查点 训练结束后,在用量页查看本次训练消耗,并保存当前模型检查点用于部署或后续 RL 阶段。**每个检查点都会带上元数据(Recipe、数据版本、超参、评测分),方便回溯。** ## 私有化下的 LoRA 托管 明确私有化交付包含"私有化模型托管:训练得到的 LoRA 与合并权重可直接落地为离线部署包"。企业版控制台与 SDK 与公有云版本完全同源,无版本分叉。 拿到的推理服务是 OpenAI 兼容的——业务系统切换 base URL 即可接入,详见 [OpenAI 兼容 API](/zh/enterprise/guides/openai-compatible)。 # OpenAI 兼容 API (/zh/enterprise/guides/openai-compatible) import { Callout } from 'fumadocs-ui/components/callout'; # OpenAI 兼容 API MinT 上的训练产物可以一键挂载到推理服务,得到**一个 OpenAI 兼容的 Endpoint**。业务系统切换 base URL 即可接入。 ## 两种调用形态 同一个 LoRA 权重可以通过两种方式调用: - **SDK 直采样**:通过 `sampling_client.sample(prompt, sampling_params, num_samples)`,用于灰度对比、自动评测、A / B 上线等场景。 - **OpenAI 兼容 HTTP**: 描述"训练得到的 LoRA 权重可以一键挂载到推理服务,得到一个 OpenAI 兼容的 Endpoint"。业务侧只需切换 base URL 即可用 OpenAI SDK 调用。 ## SDK 直采样 训练完成后从 `training_client` 拿到 sampling client: ```python 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)) ``` ## OpenAI 兼容 HTTP 明确训练完的模型会得到一个 OpenAI 兼容 Endpoint。具体的 base URL、模型标识、认证方式在训练完成后由 `sampling_client` 提供,或通过控制台查看。业务系统按 OpenAI SDK 的标准用法即可接入: ```python from openai import OpenAI client = OpenAI( base_url="", api_key="sk-your-api-key-here", ) resp = client.chat.completions.create( model="my-run-v1", # 训练时使用的 name messages=[{"role": "user", "content": "3 * 7 ="}], max_tokens=16, temperature=0.7, ) print(resp.choices[0].message.content) ``` ## 部署模式与推理适配 列出两种部署模式,选择会影响推理形态: - **LoRA 在线挂载**:与基础模型共享显存,启动时间最快,适合多实验并行采样。 - **LoRA 合并部署**:把 LoRA 合并进底座生成完整权重,导出后可单独离线部署,适合私有化交付场景。 企业版租户的 OpenAI 兼容 Endpoint 地址与鉴权凭据由 Mind Lab 团队随集群交付时提供;`save_weights_and_get_sampling_client` 返回的对象内也可以查询到当前 Endpoint 元信息。 # RL (GRPO) (/zh/enterprise/guides/rlhf) # RL (GRPO) RL (GRPO) 适用于可用 reward / verifier / 环境反馈打分的场景,例如数学推理(答案可程序化校验)、代码(沙箱执行)、对话质量(judge model 评分)等。MinT 把 GRPO、PPO 等 RL 算法封装成与 SFT 同形态的 API,减少自研成本。 ## RL 训练循环 GRPO 循环分四个阶段: 1. **Sampling**:当前 policy 为每个 prompt 生成多条 response。 2. **Scoring**:reward 函数(verifier / judge / 环境)为每条 response 打分。 3. **Advantage 计算**:在同一 prompt 的一组样本内做 reward 中心化:`advantage[i] = reward[i] - mean_r`。 4. **Training**:用 `loss_fn="importance_sampling"` 训练;reward 高于 mean_r 的样本拿到正梯度,低于的拿到负梯度。 ## 构造 Datum Prompt 位置的 weight 为 0,response 位置填入 advantage 值;同时需要传入每个 token 的 `logprobs`(从 sampling 步骤取得)和 `advantages`(zero-padding 覆盖 prompt prefix)。 ```python mean_r = sum(rewards) / num_samples for i, (seq, reward) in enumerate(zip(sequences, rewards)): advantage = reward - mean_r response_len = len(seq.tokens) - prompt_len advantages = [0.0] * (prompt_len - 1) + [advantage] * response_len datums.append(types.Datum( model_input=types.ModelInput.from_ints(tokens=seq.tokens[:-1]), loss_fn_inputs={ "target_tokens": seq.tokens[1:], "weights": [0.0] * (prompt_len - 1) + [1.0] * response_len, "logprobs": seq.logprobs[1:], "advantages": advantages, }, )) ``` ## 参数 | 参数 | 类型 | 默认值 | 含义 | | --- | --- | --- | --- | | `loss_fn` | str | `"importance_sampling"` | GRPO 默认;服务端还支持 `"ppo"`、`"cispo"`、`"dro"` | | `group_size` | int | `4` | 每个 prompt 采样条数;越大方差越低但显存更多,典型 4–16 | | `groups_per_batch` | int | `8` | 每步训练的 prompt 数 | | `max_tokens` | int | `16` | 最大生成长度;数学 ≈ 16,对话 ≈ 128,代码 ≈ 256 | | `learning_rate` | float | `2e-5` | RL 通常低于 SFT,典型 1e-5 到 4e-5 | | `temperature` | float | `0.8` | 采样温度,RL 典型 0.7–1.0 | | `kl_penalty_coef` | float | `0.0` | > 0 时对 policy 偏离 reference 施加 KL 惩罚,防止 collapse | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | 底座模型 ID | | `rank` | int | `16` | LoRA 秩 | ## SFT + RL 两阶段 对于同时拥有监督数据和奖励信号的场景,推荐先用 SFT 做暖启动、再切到 GRPO。参考路径见社区版 [quickstart.py](https://mint-doc.macaron.im/zh/community/get-started/human-quickstart)。 ## 下一步 - [Math RL](https://mint-doc.macaron.im/zh/community/customize/rl/math-rl):可程序化 verifier 精确匹配打分 - [Chat RL](https://mint-doc.macaron.im/zh/community/customize/rl/chat-rl):judge model preference reward - [Code RL](https://mint-doc.macaron.im/zh/community/customize/rl/code-rl):沙箱执行结果打分 - [dapo-aime 实践案例](/zh/enterprise/cookbook/case-dapo-aime):数学推理端到端 GRPO 示例 # SFT 监督微调 (/zh/enterprise/guides/sft) import { Callout } from 'fumadocs-ui/components/callout'; # SFT 监督微调 SFT(监督微调)适用于有标注的 `prompt → response` 数据。在 MinT 上通过 `loss_fn='cross_entropy'` 走标准训练循环,训练对象是 LoRA 低秩适配器。 ## 构造 Datum Prompt token 的 loss weight 设为 0,不参与梯度计算;completion token 的 weight 设为 1.0。整体经过 teacher-forcing 偏移:input 为 `all_tokens[:-1]`,target 为 `all_tokens[1:]`,weights 为 `all_weights[1:]`。 ```python def process_sft_example(prompt_text, completion_text, tokenizer): prompt_ids = tokenizer.encode(prompt_text, add_special_tokens=True) completion_ids = tokenizer.encode(f" {completion_text}", add_special_tokens=False) completion_ids.append(tokenizer.eos_token_id) all_tokens = prompt_ids + completion_ids all_weights = [0.0] * len(prompt_ids) + [1.0] * len(completion_ids) return types.Datum( model_input=types.ModelInput.from_ints(tokens=all_tokens[:-1]), loss_fn_inputs={ "target_tokens": all_tokens[1:], "weights": all_weights[1:], }, ) ``` Chat 风格的数据推荐使用 `apply_chat_template(..., add_generation_prompt=True)` 处理 prompt 部分。 ## 使用 Renderer(推荐) `mint.recipe` 提供 Renderer,自动处理 chat template、loss masking 和 teacher-forcing 偏移: ```python from mint import recipe renderer = recipe.renderers.get_renderer( recipe.get_recommended_renderer_name("Qwen/Qwen3-0.6B"), tokenizer ) messages = [ {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}, ] model_input, weights = renderer.build_supervised_example(messages) datum = recipe.datum_from_model_input_weights(model_input, weights, max_length=2048) ``` 多轮对话默认只对最后一条 assistant 消息算 loss;如需在每条 assistant 消息上都算,传 `train_on_what=TrainOnWhat.ALL_ASSISTANT_MESSAGES`。 ## 参数 | 参数 | 类型 | 默认值 | 含义 | | --- | --- | --- | --- | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | 底座模型 ID | | `rank` | int | `16` | LoRA 秩;越大表达力越强但显存更多,典型 8–64 | | `train_mlp` | bool | `True` | 训练 MLP 层 | | `train_attn` | bool | `True` | 训练 attention 层 | | `train_unembed` | bool | `True` | 训练 unembedding(输出)层 | | `loss_fn` | str | `"cross_entropy"` | SFT 固定使用 cross_entropy,无其他选项 | | `learning_rate` | float | `5e-5` | Adam 学习率;instruction tuning 典型 1e-5 到 1e-4 | | `weight_decay` | float | `0.0` | L2 正则;LoRA 典型 0.0–0.01 | ## Tinker 兼容说明 - 不要调用 `zero_grad_async()`;MinT 服务端自动清零梯度。 - `loss_fn` 传给 `forward_backward(...)`,不传给 `AdamParams`。 - `save_weights_for_sampler(...)` 与 `save_weights_and_get_sampling_client(...)` 在序列化 LoRA 权重方面等价。 SFT 适合"有标注的 prompt → response"。偏好对数据请看 [DPO](/zh/enterprise/guides/dpo);带奖励 / 验证器 / 环境反馈的场景请看 [RL (GRPO)](/zh/enterprise/guides/rlhf);两阶段管线请看 [SFT + RL 组合 Recipe](/zh/enterprise/guides/rlhf)。 # 开始训练 (/zh/enterprise/guides/start-training) import { Callout } from 'fumadocs-ui/components/callout'; # 开始训练 数据处理完成后,进入训练模块。MinT 企业版提供面板化的训练任务配置,也允许通过 SDK 脚本提交相同的任务。所有训练任务都以 LoRA 微调为核心。 ## 新建训练任务 在训练页面点击「新建训练」,进入任务配置流程。 ![新建训练任务](/images/enterprise/image10.png) *新建训练任务* ## 选择 Recipe 根据你拥有的数据类型选择对应的 Recipe: | 你有这些数据… | 用 | MinT 调用 | | --- | --- | --- | | 有标注的 prompt → response | [SFT](/zh/enterprise/guides/sft) | `loss_fn="cross_entropy"` | | chosen / rejected 偏好对 | [DPO](/zh/enterprise/guides/dpo) | `forward_backward_custom` + 自定义 preference loss | | reward / verifier / 环境反馈 | [RL (GRPO)](/zh/enterprise/guides/rlhf) | `loss_fn="importance_sampling"` | 若同时拥有监督数据与 reward,推荐先做 SFT 再做 RL。 ![选择 Recipe](/images/enterprise/image11.png) *选择 Recipe* ## 选择训练数据集 从数据资源中挑选用于本次训练的数据集,可同时选择多个并配置混合比例。 ![选择训练数据集](/images/enterprise/image12.png) *选择训练数据集* ## 配置训练参数 进入训练参数页:rank(LoRA 秩)、训练轮数、学习率、批大小是最常用的四个杠杆。面板会在选定 Recipe 后给出推荐默认值(rank=32 / 5 轮 / lr=1e-4 / bs=8)。 ![配置训练参数](/images/enterprise/image13.png) *配置训练参数* ## 启动训练与监控 点击「开始训练」并等待任务完成。控制台实时展示损失曲线、评测指标和资源占用。 ![开始训练并等待任务完成](/images/enterprise/image14.png) *启动训练,实时监控* ## 查看用量和保存检查点 训练结束后,在用量页查看本次训练消耗,并保存当前模型检查点用于部署或后续 RL 阶段。每个检查点都会带上元数据(Recipe、数据版本、超参、评测分),方便回溯。 ![查看用量和保存检查点](/images/enterprise/image15.png) *查看用量,保存模型检查点* 检查点保存后,前往[LoRA 部署与检查点](/zh/enterprise/guides/lora-and-hub)了解在线挂载与合并部署两种形态。 # Vibecoders:与 AI 编码助手协作 (/zh/enterprise/guides/vibecoders) import { Callout } from 'fumadocs-ui/components/callout'; # Vibecoders:与 AI 编码助手协作 MinT 在 [https://mint-doc.macaron.im/zh/llms.txt](https://mint-doc.macaron.im/zh/llms.txt) 暴露一份 LLM 可读的整站文档摘要,便于 Cursor、Claude Code、Codex 等 AI 编码助手一次性加载上下文。 ## 三种入口 - **[/zh/llms.txt](https://mint-doc.macaron.im/zh/llms.txt)**:中文页索引,每页一行简介。 - **[/zh/llms-full.txt](https://mint-doc.macaron.im/zh/llms-full.txt)**:拼接全部中文页的完整 markdown。 - **/zh/llms.mdx**:内容与 `llms-full.txt` 一致,以 MDX 形式提供。 ## Cursor:@docs 加载 在 Cursor 中可以直接把 URL 作为项目 docs 上下文: ```bash @docs https://mint-doc.macaron.im/zh/llms-full.txt ``` ## Claude Code:会话开头拉一次 在 Claude Code 会话开头拉一次完整文档,整轮对话只需一次。冒烟测试: ```bash curl -sL https://mint-doc.macaron.im/zh/llms.txt | head -40 ``` ## 单页 markdown 整站文件约几千 token;单页内容可以在页面 URL 后追加 `/content.md` 获取。例: ```bash curl -sL https://mint-doc.macaron.im/zh/community/customize/sft/content.md ``` 在与 AI 编码助手协作时,务必**从粘贴内容里擦掉 `sk-` 开头的 API Key**。 ## 企业版差异 企业版本身并不需要单独的 llms.txt——SDK 与文档站与社区版完全同源。AI 助手按社区版文档生成的训练脚本在企业版上直接可跑;差别仅在[端点与 Key](/zh/enterprise/configure/configure-credentials),可以把 `MINT_BASE_URL` 的替换要求写进你项目的 `CLAUDE.md` / `.cursorrules`,让助手在生成脚本时不忘配置。 # 安装 MinT SDK (/zh/enterprise/get-started/install-sdk) import { Callout } from 'fumadocs-ui/components/callout'; # 安装 MinT SDK MinT 客户端 SDK 以 `mindlab-toolkit` 形式发行——一个纯 Python 包。企业版与社区版共享同一个包,代码可以零成本迁移;差别仅在端点与 API Key。 ## 环境要求 - Python **3.11 或以上**。 - 建议使用 `venv` 或 `conda` 创建独立环境。 - 无需本地 GPU——客户端只组装训练请求,所有 forward / backward / sampling 都在 MinT 集群上跑。 - 网络可访问企业租户的 MinT 端点(`mint.macaron.xin` 或 `mint-cn.macaron.xin`,或客户私有化集群地址)。 ## 安装命令 ```bash pip install git+https://github.com/MindLab-Research/mindlab-toolkit.git ``` 安装完成后会同时引入 `mint` 包以及与之兼容的 `tinker`(>= 0.15.0)运行时辅助库。 ## 验证 ```bash python -c "import mint; print(mint.__version__)" ``` ## tinker 兼容入口 如果你已经有现成的 Tinker 训练脚本,只需替换一行 `import` 即可迁移到 MinT: ```python import mint as tinker ``` 导入 `mint` 时会自动补丁 tinker 的密钥校验逻辑,使 `sk-*` 形式的 API Key 可以直接使用。 在 MinT 训练循环中请**不要调用 `zero_grad_async`**——梯度归零由服务端统一处理。这是 MinT 相对 tinker 的已知行为差异。 ## 命名空间 安装后可用的核心命名空间: - `mint`:核心 API(`ServiceClient`、`create_lora_training_client`、`forward_backward`、`optim_step`、`save_weights_and_get_sampling_client` 等)。 - `mint.types`:类型定义(`Datum`、`ModelInput`、`AdamParams`、`SamplingParams` 等)。 - `mintx`:MinT 专属扩展(含 `mintx.OPENPI_FAST_MODEL` 等常量)。 ## 私有化环境的离线安装 明确私有化交付包含"依赖镜像与离线安装包,支持纯内网环境一键拉起"。企业版私有化部署客户在 onboarding 阶段由 Mind Lab 团队随集群一并交付离线安装包与升级流程,无需客户自建 pip mirror。 SDK 装好之后,接着[配置与管理 API Key](/zh/enterprise/configure/configure-credentials),再按[快速入门](/zh/enterprise/get-started/quick-start)跑通第一个训练。 # 从社区版迁移到企业版 (/zh/enterprise/get-started/migrate-from-community) import { Callout } from 'fumadocs-ui/components/callout'; # 从社区版迁移到企业版 MinT 社区版与企业版**共享同一套 SDK 与 API,代码可以零成本迁移**。迁移本质上只是切换端点与 Key,训练脚本无需改动。 ## 迁移的三个差别 列出社区版与企业版的差别,从迁移视角看有三条与代码相关: 1. **接入端点**:社区版是公共 `mint.macaron.xin`;企业版是专属集群(公有云 / 私有化)。 2. **API Key**:企业版 Key 通过对接会议获取,与社区版自助申请的 Key 不通用。 3. **可用底座**:企业版额外可用 GLM / Kimi / DeepSeek 等商业模型(详见[支持的模型](/zh/enterprise/get-started/supported-models))。 其它一切(SDK 包名、模块路径、方法签名、数据结构、训练循环范式)保持一致。 ## 迁移步骤 ### 1. 确认 SDK 版本 企业版与社区版共用 `mindlab-toolkit`: ```bash pip install --upgrade git+https://github.com/MindLab-Research/mindlab-toolkit.git python -c "import mint; print(mint.__version__)" ``` ### 2. 切换端点与 Key 把客户端的环境变量指向企业版的地址(大陆区仍用 `mint-cn`;私有化部署使用 Mind Lab 交付时给的域名): ```bash # 社区版(旧) # export MINT_BASE_URL=https://mint.macaron.xin/ # export MINT_API_KEY=sk-community-... # 企业版(新) export MINT_BASE_URL=https:/// export MINT_API_KEY=sk-enterprise-... export TINKER_BASE_URL=$MINT_BASE_URL export TINKER_API_KEY=$MINT_API_KEY ``` 更详细的凭证管理见[配置与管理 API Key](/zh/enterprise/configure/configure-credentials)。 ### 3.(可选)切换到企业版专属底座 社区版脚本里如果硬编码了 `Qwen/Qwen3-...`,企业版上直接可用。想升级到企业版独有的商业模型,改一个字符串即可: ```python training_client = service.create_lora_training_client( base_model="GLM-5.1", # 企业版专属 rank=16, ) ``` ## 迁移完成自检清单 - `python -c "import mint; print(mint.__version__)"` 输出非空。 - `MINT_BASE_URL` 指向企业租户端点,可通过`curl -v`验证 TCP 通路。 - `MINT_API_KEY` 是企业版 Key(`sk-` 开头)。 - 原 SFT 脚本在企业版上首跑能拿到 `ServiceClient` 无异常、`forward_backward` 返回 future 正常。 对于已经在社区版跑通的训练任务,迁移后建议先做一次"同底座 + 同超参"的回归跑,确保指标轨迹一致,再考虑切换到企业版独有的商业底座或更大规模模型。 # 快速入门 (/zh/enterprise/get-started/quick-start) import { Callout } from 'fumadocs-ui/components/callout'; # 快速入门 本章带你在**不到 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/](https://mint-try.macaron.xin/)。管理员会在企业账号中分配工作空间与算力配额。如尚未获得邀请,可联系销售:[sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 ![MinT 企业版登录页](/images/enterprise/image1.png) *图 1a — MinT 企业版登录页* ![MinT 企业版注册与工作台](/images/enterprise/image2.png) *图 1b — 登录后工作台* ## 2. 安装客户端 SDK MinT 客户端要求 Python 3.11 或以上。建议使用 venv 或 conda 创建独立环境: ```bash pip install git+https://github.com/MindLab-Research/mindlab-toolkit.git ``` 安装完成后会同时引入 `mint` 包以及与之兼容的 `tinker`(>= 0.15.0)运行时辅助库。导入 `mint` 时,会自动补丁 tinker 的密钥校验逻辑,使 `sk-*` 形式的 API Key 可以直接使用。 如果你已经有现成的 Tinker 训练脚本,只需替换一行 `import` 即可迁移到 MinT: ```python import mint as tinker ``` 在 MinT 训练循环中请**不要调用 `zero_grad_async`**,梯度归零由服务端统一处理。 ## 3. 配置 API Key 在 [macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) 申请到 `sk-` 开头的 API Key 后,将其写入环境变量。中国大陆区域请使用 `mint-cn` 端点: ```bash 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 偏移。 ```python 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: ```python 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 权重并拿到一个可立即采样的客户端: ```python 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 监督微调](/zh/enterprise/guides/sft)了解超参与 Recipe;[LoRA 与检查点](/zh/enterprise/guides/lora-and-hub)了解在线挂载与合并部署两种形态;[OpenAI 兼容 Endpoint](/zh/enterprise/guides/openai-compatible)了解业务侧对接。 # 动态与公告 (/zh/enterprise/get-started/release-notes) import { Callout } from 'fumadocs-ui/components/callout'; # 动态与公告 本页记录 MinT 企业版的版本动态与变更公告。企业版客户的正式变更通知走客户对接群 + 本页归档;SDK 客户端变更同步落到 [mindlab-toolkit](https://github.com/MindLab-Research/mindlab-toolkit) 仓库。 ## 查看当前版本 客户端 SDK 版本: ```bash python -c "import mint; print(mint.__version__)" ``` 兼容层版本:安装 `mindlab-toolkit` 时会同时引入 `tinker`(>= 0.15.0)作为运行时辅助库。 ## 近期文档更新 文档站 [mint-doc.macaron.im](https://mint-doc.macaron.im/zh) 与 [产品官网](https://macaron.im/zh/mindlab/mint)随功能迭代持续更新,可通过 `llms-full.txt` 一次性获取整站 markdown 摘要(见[AI 编码助手协作](/zh/enterprise/guides/vibecoders))。 ## SLA 与变更窗口 给出企业版 SLA 的常见协商维度: - 服务可用性、响应时间、变更窗口、故障恢复时长与赔偿口径。 - 可用性 SLA 通常 **99.9%** 起步,按算力规格与冗余度协商。 - 响应时间 SLA:关键事件分级响应,**最低 30 分钟内首响**。 - 审计日志:每次 API 调用与控制台操作均落审计库,保留周期可配置(**最长可至 1 年**)。 具体变更窗口由合同约定;紧急安全修复不受窗口限制,但会在执行前通知客户对接群。 ## 反馈通道 - 业务与商务:[sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 - 专属技术接口人:企业版客户经对接会议进入后由 Mind Lab 分配,覆盖架构评审、数据合成、Recipe 选型、上线评估等全生命周期。 - SDK 开源仓库:[MindLab-Research/mindlab-toolkit](https://github.com/MindLab-Research/mindlab-toolkit)。 可在 **30 分钟内完成 Live Demo**,预约请联系 [sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 # 支持的模型 (/zh/enterprise/get-started/supported-models) import { Callout } from 'fumadocs-ui/components/callout'; # 支持的模型 MinT 支持的底座矩阵分三类:**Qwen3 基础模型**(社区版与企业版同样可用)、**企业版专属商业模型**(GLM / Kimi / DeepSeek)、**技术兼容的同代开源家族**。 ## Qwen3 基础模型(社区版 + 企业版) | 模型 ID | 推荐场景 | | --- | --- | | `Qwen/Qwen3-0.6B` | 冒烟测试、快速迭代(quickstart 默认) | | `Qwen/Qwen3-4B-Instruct-2507` | Cookbook 配方(dapo-aime、chat-dpo 等)、中等规模对话 | | `Qwen/Qwen3-4B-Thinking-2507` | 4B 量级推理 / 思维链任务 | | `Qwen/Qwen3-30B-A3B-Instruct-2507` | 中大规模对话与指令微调(MoE) | | `Qwen/Qwen3-235B-A22B-Instruct-2507` | 大规模指令微调 | ## 企业版专属商业模型 下列模型的合规授权随企业版一并交付,社区版不可用: - `GLM-5` - `GLM-5.1` - `Kimi-K2` - `Kimi-K2.5` - `DeepSeek-V3` ## 技术兼容的同代家族 下列开源家族在架构上与已支持模型同代,可按需接入: - Qwen2.5、Qwen3(Instruct / Thinking / Coder 变体) - Llama 3.x 家族 - Gemma 2.x 与 3.x - DeepSeek 家族 ## 官网的完整"敬请期待"矩阵 产品官网 [macaron.im/zh/mindlab/mint](https://macaron.im/zh/mindlab/mint) 声明支持 "6 个模型家族、27 个模型变体",其中包含大量"敬请期待"项。企业采购前如需确认具体交付时间,请联系销售。 ## 如何选型 - **没有特别偏好?** 用 lineup 里任意一个跑 smoke run 即可。 - **跑通流程 / 快速迭代**:`Qwen/Qwen3-0.6B`。 - **做 cookbook 或中等规模对话**:`Qwen/Qwen3-4B-Instruct-2507`。 - **需要推理 / 思维链**:`Qwen/Qwen3-4B-Thinking-2507`。 - **常规业务(客服 / 知识问答 / 文档摘要)**:`Qwen/Qwen3-30B-A3B-Instruct-2507`—— 指出 "平均单次完整微调耗时约 1 至 1.5 小时(30B 模型,A3B 结构)"。 - **企业已采购 GLM / Kimi / DeepSeek 授权**:直接选对应企业版专属模型。 ## 切换底座 MinT 的一贯口径是"换底座只需要改一个字符串": ```python training_client = service.create_lora_training_client( base_model="Qwen/Qwen3-30B-A3B-Instruct-2507", rank=16, ) ``` 脚本级切换也支持通过环境变量 `MINT_BASE_MODEL`(用于兼容 `MINT_BASE_MODEL`-aware 的 recipe,见文档站)。 可用模型清单最终以企业租户合同授权范围为准。如需在合同外接入新的底座或"敬请期待"型号,请联系销售 [sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 # 什么是 MinT (/zh/enterprise/get-started/what-is-mint) import { Callout } from 'fumadocs-ui/components/callout'; # 什么是 MinT MinT(Mind Lab Trainer)是 Mind Lab 推出的、面向大语言模型的强化学习训练基础设施——一套以客户端 SDK 为入口的训练平台。用户在自己的 CPU 机器上写一段简单的 Python 脚本,把数据、损失函数、RL 环境定义清楚;MinT 在远端管理 GPU 集群、对象存储与数据库,按需调度模型加载、前后向计算、优化器更新与采样推理。MinT 不试图把"微调"变成一个黑盒按钮,而是**在保留用户对训练循环和算法细节完整控制权的前提下,把分布式训练的复杂性隐藏掉**——换底座只需要改一个字符串。 ## 设计哲学 MinT 的设计哲学可以概括为三点: - **把用户从分布式工程里解放出来**:用户只关心数据、损失函数和 RL 环境,其余交给平台。 - **不做黑盒**:训练循环可见、可改、可调;算法的每一步都可被审查与替换。 - **一行代码切底座**:从 `Qwen3-0.6B` 到 `Qwen3-235B`,仅需修改一个字符串。 ## 核心价值 MinT 之所以适合企业级 LLM 后训练,源自以下几方面能力: - **低门槛的强化学习**:把 GRPO、PPO 等 RL 算法封装成与 SFT 同形态的 API,减少自研成本。 - **LoRA 训练为核心**:内置 LoRA Manager,训练完成后可直接得到一个轻量增量权重并立刻采样验证。 - **远端异步执行**:客户端只在调用 `.result` 时阻塞,训练与采样以 Future 形式异步推进。 - **内置可信评测**:与受控研究流程配套的多轮评测、自动裁判、断点恢复与结构化日志。 - **企业级合规**:支持专属算力、私有部署、审计日志与自定义 SLA。 ## 系统架构 MinT 的整体架构分四层: - **客户端层**:用户在本地通过 `mint` Python SDK 编写训练脚本,无需 GPU。 - **API Gateway**:统一鉴权、路由与流量控制入口。 - **核心服务层**:包括 *Model Router*(模型路由)、*Task Manager*(任务调度)与 *LoRA Manager*(LoRA 权重管理)。 - **后端资源层**:GPU 集群(训练与采样)、对象存储(数据集与权重快照)、数据库(任务元信息与审计日志)。 用户与平台之间的所有交互都通过 SDK 进行,复杂的集群调度、显存管理、batch 切分等工程细节对用户透明。 ## 社区版与企业版 MinT 同时提供社区版(`mint.macaron.xin`)和企业版两种形态。两者**共享同一套 SDK 与 API,代码可以零成本迁移**;区别主要在算力、隔离、SLA 与合规层面: | 维度 | 社区版 | 企业版 | | --- | --- | --- | | 接入端点 | 公共 `mint.macaron.xin` | 专属集群(公有云 / 私有化) | | 算力 | 共享队列、Best-effort | 专属算力池、保留容量 | | SLA | 无 | 可协商的可用性与响应时间 SLA | | 审计日志 | 不提供 | 支持,按需保留 | | 网络 | 公网 TLS | VPC、专线、防火墙策略 | | 接入方式 | 自助申请 API Key | 对接会议 + 定制初始化 | ## 最短可工作示例 下面是"从写脚本到拿到推理端点"的完整最短链路(来自): ```python import mint from mint import types 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 sampling_client = training_client.save_weights_and_get_sampling_client(name='my-run-v1') ``` ## 企业版增值能力 完整列出的四类增值能力: - **专属算力池**(§4.1):保留容量 + 弹性容量,按团队 / 项目 / Recipe 多维统计。 - **部署形态与隔离**(§4.2):多租户专属 / 单租户专属两种,均提供从网络到调度层的完整隔离。 - **SLA 与审计**(§4.3):可用性 SLA **通常 99.9% 起步**;关键事件**最低 30 分钟内首响**;审计日志**保留周期可配置,最长可至 1 年**;基于工作空间的 RBAC。 - **私有化与合规**(§4.4):依赖镜像与离线安装包、控制台与 SDK 同源、可选国密 / SSO / AD 集成与日志外发、私有化模型托管(LoRA 与合并权重可离线部署)。 直接动手:[快速入门](/zh/enterprise/get-started/quick-start)从注册到首次训练不到 30 分钟。评估可行性:[支持的模型](/zh/enterprise/get-started/supported-models)列出所有可用底座。准备采购:[联系销售](mailto:sales@mindlab.ltd)或[预约 Live Demo](https://macaron.im/mindlab)。 # MinT 可接受使用政策 (/zh/enterprise/support/acceptable-use) # **MinT 可接受使用政策** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 可接受使用政策》(以下简称“本AUP”)规定了在 MinT 上禁止从事的活动。本AUP构成《MinT 服务条款》不可分割的组成部分。您(包括您的客户、代您行事的任何个人)使用 MinT 即视为同意遵守本AUP。违反本AUP可能导致您的账户被暂停或终止、已付费用不予退还,且 Mindai 可向执法或监管机关移交相关线索。** **【MinT 由训练平台与中转站两个组成部分构成】MinT 训练平台仅生成模型参数、模型权重及相关训练成果,本身不直接生成文本、图像、音频、视频或其他生成式内容;您使用训练平台训练所得模型的下游部署、分发与使用由您自行决定并承担全部责任。MinT 中转站通过 API 接口方式向您提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM)的调用能力,模型输出可能包含文本、图像、音频、代码等生成式内容。因此,本 AUP 的禁止性条款既覆盖您在训练平台上的训练用途、上传用于训练的数据,也覆盖您通过中转站进行的模型调用行为、提交的输入以及对模型输出的下游使用;并同时覆盖您消耗我方算力资源与 API 服务的方式。** ## **第一条 适用范围与定义** 本 AUP 适用于:(a)对 MinT(含训练平台与中转站)、MinT API、MinT 控制台及 Mindai 任何相关服务的使用;(b)上传至或经由 MinT 处理的所有数据(含您通过中转站 API 提交的输入);(c)经由 MinT 产生的全部输出,包括通过训练平台产生的模型成果(含模型权重、checkpoint、LoRA 适配器、评估报告及其他训练产出)以及通过中转站 API 产生的模型输出。 本AUP中未另行定义的大写或加引号术语,以《MinT 服务条款》中的定义为准。此外: - “训练用途”:指您使用 MinT 训练平台训练、微调或评估模型时该模型的目的、设计或预期部署场景。 - “训练数据”:指您上传至 MinT 训练平台,或指示 MinT 训练平台出于训练模型之目的访问的任何数据集、Prompt、样本或其他材料。 - “算力滥用”:指任何消耗 Mindai 算力资源但并非用于善意进行机器学习模型训练、微调、评估或采样之活动。 ## **第二条 一般原则** 您应当合法、负责、善意地使用 MinT。具体而言,您不得: - 以违反适用法律、第三方权利或本AUP的方式使用 MinT; - 利用 MinT 损害、欺骗、欺诈、骚扰、监视或歧视他人; - 利用 MinT 破坏任何系统、网络或服务的安全性、完整性或可用性; - 利用 MinT 规避任何第三方服务、模型或数据集的条款、安全机制或内容控制;以及 - 允许任何第三方通过您的账户从事上述任何行为。 ## **第三条 客户责任** 您对下列事项独自承担责任:(a)您上传的训练数据;(b)您在 MinT 训练平台上训练、微调或评估的模型的训练用途;(c)您产生的训练产出;以及(d)您或您授予访问权限的任何第三方对该等训练产出的下游部署、分发或使用。Mindai 不对您的训练数据或训练用途进行事先审核、审查或批准。 如您将 MinT 的访问权授予员工、承包商、代理人或终端用户,您应对其行为与不作为承担与您本人同等的责任。您应在组织内部建立合理的内控措施(含访问控制、培训、监测),以确保您的组织遵守本AUP。 ## **第四条 守法义务** 您应遵守对您及您使用 MinT 适用的全部法律法规,包括但不限于: - 数据保护与隐私法(如 PDPA、GDPR、UK GDPR、PIPL、CCPA); - 知识产权与商业秘密法律; - 适用的美国、欧盟、英国、新加坡共和国、中华人民共和国及其他司法辖区的制裁、出口管制及反洗钱法律; - 适用于您下游使用训练产出的行业专门监管(如医疗器械、金融服务、汽车、关键基础设施监管); - 适用于您或您终端用户的人工智能与算法专门监管(在适用的情形下,包括关于生成式人工智能、深度合成、推荐算法、自动化决策及人工智能风险管理的规定);以及 - 内容相关法律(如禁止儿童性虐待材料、恐怖主义内容、煽动、诽谤、仇恨言论的法律)。 ## **第五条 禁止的训练用途** 您不得使用 MinT(无论通过训练平台训练、微调、评估模型,还是通过中转站调用模型)用于具有下列预期目的、可合理预见用途或实际部署的场景: ### **5.1 儿童性虐待与剥削** - 旨在或可合理预见用于生成、描绘、协助儿童性虐待材料(CSAM)、性剥削未成年人或诱骗未成年人的模型。 ### **5.2 大规模暴力与武器** - 旨在或可合理预见用于协助开发、获取或部署化学、生物、放射性或核(CBRN)武器,或其他可造成大规模伤亡之武器的模型; - 旨在策划、煽动或实质性协助恐怖主义或大规模暴力行为的模型。 ### **5.3 恶意软件与攻击性网络行动** - 旨在或可合理预见用于生成恶意软件、勒索软件、针对特定系统的漏洞利用代码、钓鱼工具包,或实质性协助未授权访问信息系统的模型。 ### **5.4 针对性骚扰、诽谤与非自愿亲密影像** - 旨在或可合理预见用于生成真实人物的非自愿亲密影像(含非自愿性深度伪造)的模型; - 旨在骚扰、诽谤、起底(dox)或冒充特定个人的模型。 ### **5.5 操纵与剥削脆弱群体** - 旨在或可合理预见以潜意识、操纵性或欺骗性手段实质性扭曲自然人行为,从而造成或可合理预见造成重大损害的模型;或 - 旨在或可合理预见利用特定群体(包括儿童、残障人士、处于经济或社会弱势处境的人)的脆弱性,从而造成或可合理预见造成重大损害的模型。 ### **5.6 基于敏感个人信息的推断与归类** - 旨在或可合理预见基于生物特征数据或行为数据,对自然人按敏感个人信息(包括种族或民族出身、政治观点、工会成员身份、宗教或哲学信仰、性生活、性取向)进行推断或归类的模型,但适用法律明确允许的情形除外(例如,对生物特征数据集的合法标注或筛选,或经主管机关授权的有限执法用途);以及 - 旨在部署于工作场所或教育机构的情绪识别系统,但出于医疗或安全原因而严格必要并具备合法性基础的除外。 ### **5.7 大规模监控、社会评分与非法生物识别** - 旨在或可合理预见用于实施大规模或无差别监控;用于对自然人进行社会评分并在不相关情境中对其作出不利或不公正待遇;仅基于画像或人格特征对个人进行预测性执法;或在公共可访问空间对自然人进行违反适用法律的实时或事后远程生物识别的模型。 ### **5.8 绕过安全、版权或内容审核机制** - 旨在绕过、禁用或规避任何第三方人工智能模型、平台或服务的安全机制、内容审核政策、版权保护或服务条款的模型(举例而言,包括对基础模型的越狱攻击或水印移除)。 ### **5.9 选举操纵与协调性虚假行为** - 旨在或可合理预见用于协助选举舞弊、压制选民、传播关于选举或候选人的实质性虚假内容,或针对公共关切事项实施协调性虚假行为以误导公众的模型。 ### **5.10 缺乏保障措施的高风险自主决策** - 旨在用于在高风险领域(含医疗诊断或治疗、金融授信或资格、就业或员工管理、教育或学生评估、刑事司法、执法、移民或边境管控、基本公共或私人服务的获取)进行完全或实质性自主决策的模型,但未具备:(i)相应监管授权;(ii)有意义的人工监督;(iii)针对预期用途的准确性与可靠性证明;以及(iv)符合适用人工智能风险管理要求。 ### **5.11 关键基础设施** - 旨在用作关键基础设施(含水、气、热、电的供应;交通网络;银行核心系统;数字基础设施)安全组件,或用于其运营管理的模型,但未具备:(i)行业监管授权;(ii)与该安全关键应用相称的安全保证证明;以及(iii)适当的人工监督与故障安全机制。 ### **5.12 其他违法或严重有害用途** - 任何其他违反适用法律的训练用途,或经 Mindai 合理判断对个人、社群或关键系统构成重大严重损害风险的训练用途。 ### **5.13 竞品模型开发(中转站输出)** - 使用中转站输出或以其他方式获取的模型响应,训练、开发、蒸馏或改进与 Macaron 系列模型或 Mindai 其他产品构成竞争关系的人工智能模型; - 以自动化或编程方式批量抓取、提取中转站输出内容用于建模用途(本协议明示允许的合理 API 调用除外); - 就中转站输出对外声称其为人工创作而非人工智能生成,或作出 Mindai 或其许可方未曾作出的性能、准确性或合规性承诺。 ## **第六条 未成年人与儿童安全** MinT 为面向企业与开发者的 AI 平台(含训练平台与中转站两个组成部分),不面向未成年人、亦不供未成年人使用。Mindai 将儿童安全视为不可谈判的底线,对任何利用本服务剥削、危害或将未成年人色情化的行为实行“零容忍”政策。本第六条系对第 5.1 条、下文第七条训练数据要求以及《服务条款》第 2.5 条的补充(而非限制)。 ### **6.1 不面向未成年人使用** - 若您未满十八(18)周岁(或您所在司法管辖区规定的完全民事行为能力年龄,以较高者为准),您不得注册、访问或使用 MinT; - 您不得使、指示或允许您监护或监督之下的任何未成年人访问、操作或以其他方式使用 MinT; - 当 MinT 由企业客户使用时,企业客户应当实施合理的身份验证与访问控制措施,足以确保仅经授权的成年员工访问本服务。 ### **6.2 涉及未成年人的禁止性训练用途** 在不限制第五条的前提下,您不得使用 MinT 训练平台训练、微调、评估任何将以下事项作为主要预期用途、可合理预见用途或实际部署用途之模型: - 生成、修改、传播或便利传播儿童性虐待内容(CSAM),包括任何将未成年人色情化或呈现为色情化形态的描绘(无论真实、计算机生成还是以其他合成方式呈现); - 诱骗、色情勒索、恐吓、欺骗或以其他方式针对未成年人,无论用于性剥削、财产剥削、极端化或诱导自伤; - 生成任何可识别未成年人的写实非合意亲密影像(包括深度伪造); - 基于生物识别、情绪或心理推断,对未成年人按敏感个人特征进行推断或分类,用于行为定向、广告投放或评分; - 出于商业广告目的或对未成年人产生法律效力或类似重大影响之决策目的,对未成年人进行画像。 ### **6.3 涉及未成年人的禁止性训练数据** 您不得向 MinT 上传,或以其他方式通过 MinT 处理下列训练数据: - CSAM 或根据适用的未成年人保护法律(包括但不限于美国《美国法典》第 18 编第 2251-2260 条、欧盟 2011/93/EU 指令、《中华人民共和国未成年人保护法》、《未成年人网络保护条例》)禁止持有或传播的其他内容; - 将未成年人色情化、虐待性或剥削性之图像,无论来源或合法取得途径; - 未取得监护人可核实同意或适用儿童数据保护制度(例如美国 COPPA、欧盟 GDPR 第 8 条、《中华人民共和国个人信息保护法》第 28 条和第 31 条、《儿童个人信息网络保护规定》)项下其他合法性基础而收集的未成年人个人信息; - 经生物识别或行为标识符扩充的未成年人数据集,但以下情形除外:该等收集有文件记录的合法性基础(例如经过适当伦理审查委员会批准并取得父母同意的医学研究)。 ### **6.4 检测、报告与配合执法** Mindai 可对本服务实施自动化与人工检测机制(包括与 NCMEC、IWF 等已知 CSAM 哈希库进行哈希匹配以及基于分类器的筛查)。若 Mindai 通过该等检测、用户举报或第三方通知获悉涉嫌 CSAM 或第 6.3 条所述其他内容,Mindai 将: - 按适用法律要求留存相关内容与元数据; - 在美国法律(《美国法典》第 18 编第 2258A 条)要求的情况下向美国国家失踪与受剥削儿童中心(NCMEC)报告,并在适用法律要求的情况下向其他主管国家机关(包括新加坡警察部队,以及必要时的中华人民共和国公安机关)报告; - 立即暂停或终止违规账户,无需事先通知;并 - 配合执法机关与儿童保护机关开展后续调查。 ### **6.5 举报渠道** 若您知悉任何实际或疑似违反本第六条的情形——包括本服务上存在 CSAM、或利用 MinT 针对未成年人的行为——您应当不无故迟延地通过以下渠道举报:contact@mindlab.ltd(邮件标题标注“CHILD SAFETY — URGENT”)。Mindai 将以最高优先级处理该等举报,且不会对善意举报疑似儿童安全违规行为的任何人员进行打击报复。 ## **第七条 训练数据要求** 您声明并保证,您的训练数据: - 来源合法,且符合适用法律、合同义务及其取得来源平台的服务条款; - 不含儿童性虐待材料、恐怖主义内容,或适用法律禁止持有或传播的其他内容; - 如包含个人信息,已基于合法性基础(如同意、履行合同、正当利益、法定义务)收集并处理,且您已履行向个人信息主体的全部告知义务; - 如包含敏感个人信息(依适用法律定义),已取得适用法律所要求的强化同意或其他合法性基础; - 不侵犯任何第三方的知识产权、商业秘密、肖像权或其他专有权利,但您依书面授权可使用的除外; - 非通过未授权访问信息系统、违反平台条款的爬取、违反保密义务或其他非法手段取得;以及 - 如适用法律有要求(含 PIPL、GDPR 跨境规则、国家安全/数据出境制度),已遵守相应跨境传输要求传输至 MinT。 Mindai 不对训练数据进行事先审查,亦不对训练数据的合法性或内容承担责任。但 Mindai 在收到可信举报或开展调查时,可访问、隔离或删除其合理认为违反本AUP的训练数据。 ## **第八条 算力资源与 API 服务滥用** 您不得将 MinT 算力资源或中转站 API 服务用于下列任何目的: - 加密货币挖矿、区块链验证,或任何工作量证明(PoW)或权益证明(PoS)相关运算; - 分布式拒绝服务(DDoS)攻击、僵尸网络运行,或针对第三方系统的任何协调性流量生成; - 发送未经请求的批量电子邮件、短信或其他垃圾消息,含运营垃圾邮件基础设施; - 托管、分发或路由非法内容、恶意软件、命令与控制服务器、钓鱼页面或盗版内容; - 运营开放代理、匿名化中继或其他实质性掩盖行为人身份的中介网络服务; - 多开账户、使用盗用身份、共用凭证、自动化注册流程,或以其他方式规避速率限制、免费层限制、合理使用阈值或计费控制; - 在超出您训练、微调、评估或采样活动善意需求的范围内预留或囤积算力资源; - 未经 Mindai 事先书面授权,对 MinT 本身进行性能基准测试、容量测试或负载测试; - 转售、共享、买卖或以其他方式向第三方分发您的 API Key、账户凭证或对 MinT 服务的访问权限。 ## **第九条 安全与平台完整性** 您不得,亦不得尝试: - 除依据漏洞披露计划或经 Mindai 书面授权外,对 Mindai 任何系统、网络或服务进行探测、扫描、渗透测试或漏洞测试; - 对 MinT 中非面向客户的组件进行反向工程、反编译或反汇编,但适用法律明确允许的除外; - 绕过、规避或禁用 MinT 的访问控制、认证机制、隔离边界或使用限制; - 干扰、降级或试图未授权访问其他 Mindai 客户的数据、会话、训练任务或算力资源; - 向 MinT 或与 MinT 交互的系统中引入恶意代码、蠕虫、木马或其他有害负载; - 使用 MinT 开发、训练或评估在功能上与 MinT(含训练基础设施与 API 网关服务)构成竞争关系的产品(本限制不适用于您为自有用途开发模型的内部研发活动)。 您应在发现 MinT 任何疑似安全漏洞后,及时向 contact@mindlab.ltd 报告,并在协调披露完成前不再进一步利用该漏洞。 ## **第十条 制裁、出口管制及受限司法辖区** 您声明并保证: - 您、您的关联公司、您的受益所有人及您的终端用户均不在美国(含 OFAC SDN、BIS 实体清单、被拒绝人员清单)、欧盟、英国、联合国、新加坡共和国或其他适用司法辖区维护的任何受限名单上; - 您不位于、注册成立于或惯常居住于任何受全面制裁的司法辖区(目前包括但不限于古巴、伊朗、朝鲜、叙利亚以及乌克兰的克里米亚、顿涅茨克与卢甘斯克地区); - 您不会以违反适用制裁或出口管制法律的方式,将 MinT 用于、或将 MinT 上产生的训练产出转移给任何受限方或受限目的地; - 您不会未经预先取得所需许可证而使用 MinT 训练平台开发、训练或分发其出口受任何适用出口管制制度限制的模型。 Mindai 可就账户、交易及训练产出对照适用的受限名单与禁运目的地清单进行筛查,并可暂停或终止未通过筛查的账户。 ## **第十一条 第三方隐私与知识产权** 您不得使用 MinT: - 在缺乏适用数据保护法律所要求合法性基础的情况下,使用第三方个人信息训练模型; - 在未经授权的情况下聚合、关联或重新识别去标识化或假名化的个人信息; - 在未经授权的情况下重建、镜像或实质性复制第三方的专有数据集、模型权重或其他知识产权; - 训练以规避第三方数据集、模型或 API 许可条款为主要目的的模型(含通过蒸馏、模型窃取或系统性 Prompt 抽取等方式);以及 - 任何其他侵犯或可能侵犯第三方个人信息、隐私权、著作权、专利权、商标权、商业秘密或其他知识产权与合法权益的行为,或以技术手段规避、削弱第三方为保护上述权益所采取的技术措施或合同措施的行为。 ## **第十二条 子处理方AUP传递** MinT 借助第三方子处理方提供的基础设施(含云、GPU、存储与网络服务商)交付。该等子处理方维护其自身的可接受使用政策,亦可能适用于您对 MinT 的使用。您使用 MinT 即视为同意遵守 Mindai 子处理方的可接受使用政策,该等政策不时发布于《MinT 隐私政策》所指明的子处理方页面。若某项子处理方的可接受使用政策就特定活动较本AUP更为严格,则就该项活动适用更严格的标准。 ## **第十三条 违规举报** 如您发现任何实际或疑似违反本AUP的情形——无论是您本人、其他 Mindai 客户,还是使用 MinT 上产生的训练产出的第三方——请及时向 contact@mindlab.ltd 举报;一般咨询请联系 contact@mindlab.ltd。举报内容应尽可能包括:(a)疑似违规的性质;(b)违规方的身份;(c)违规的时间与方式;(d)任何佐证材料(如 URL、截图、账户标识)。在合理可行且符合调查与法律义务的范围内,Mindai 将对举报内容予以保密。 ## **第十四条 调查、暂停与终止** ### **14.1 调查** Mindai 可对疑似违反本AUP的行为开展调查。调查中,Mindai 可:(a)审查账户信息、使用遥测数据与安全日志;(b)在合理与合法范围内访问训练数据或训练产出(受《MinT 隐私政策》及 DPA 的保密与最小化原则约束);以及(c)要求您提供信息与合作。 ### **14.2 暂停** Mindai 在合理认为以下情形之一存在时,可全部或部分暂停您对 MinT 的访问:(a)正在发生或已发生违反本AUP的行为;(b)为保护 MinT 或其他客户的安全性、完整性或可用性而有必要暂停;(c)法律或有权机关命令要求暂停;或(d)情形构成《MinT 服务条款》所定义的“严重违约”。在合理可行且法律未禁止的范围内,Mindai 将事先通知并给予补救机会;但在严重或持续损害情形下,Mindai 可不经事先通知立即暂停。 ### **14.3 终止** Mindai 可依照《MinT 服务条款》中的终止条款终止本服务条款及您的账户,包括对本AUP的重大违反或反复违反。因违反本AUP而终止的,您无权要求退还已就所提供服务支付的费用。 ### **14.4 配合机关** Mindai 将依照适用法律及《MinT 隐私政策》,配合就违反本AUP事项发出的合法监管、司法或执法要求,包括保存与提交相关记录。 ### **14.5 证据保全** 如 Mindai 合理认为与疑似违规相关的记录可能为调查或诉讼所需,Mindai 可在《MinT 隐私政策》所规定的常规保留期限之外保存该等记录(含训练数据与训练产出),直至相关调查或诉讼结案。 ## **第十五条 赔偿** 您同意就因您本人、您的人员或任何使用 MinT 上产生的训练产出之第三方违反本AUP而产生或与之相关的全部主张、损失、损害、责任、罚款、罚金及费用(含合理律师费),按照《MinT 服务条款》中的赔偿条款,向 Mindai 及其关联公司,及其各自的董事、高级管理人员、员工与代理人作出赔偿、抗辩并使其免受损害。 ## **第十六条 本AUP的更新** Mindai 可不时更新本AUP,以反映法律、技术、威胁形势或 Mindai 业务实践的变化。重大更新将依《MinT 服务条款》予以通知。在更新生效日之后您继续使用 MinT,即视为接受更新后的AUP。 ## **第十七条 联系方式** 如对本AUP有疑问、需要澄清或需就本AUP所限制的活动取得书面授权,请通过下列方式联系: - 服务提供方:MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司),注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 电子邮箱(滥用举报、安全漏洞报告及通用咨询):contact@mindlab.ltd ## **生效日期与版本** 本AUP自封面所载生效日期起生效。Mindai 可发布本AUP的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本AUP正文结束 ——* # MinT 数据处理协议 (/zh/enterprise/support/data-processing-addendum) # **数据处理协议** *MinT — Mind Lab Toolkit* 本“数据处理协议”(下称“本 DPA”)构成 MINDAI PTE. LTD.(一家在新加坡注册成立的公司,下称“Mindai”)与下文所识别客户(下称“客户”)签订的 MinT 服务条款或其他书面主协议(下称“主协议”)的组成部分,并受其约束。本 DPA 规范 Mindai 为提供 MinT 服务而代客户处理个人信息的行为。 背景。MinT 由两个独立的组成部分构成:(a)MinT 训练平台——为强化学习模型训练基础设施平台(“参数平台”),其主要产出为由客户提供的训练数据与配置产生的模型参数(包括模型权重、检查点及相关训练产物);就训练平台,Mindai 本身并不代客户直接向最终用户或个人信息主体生成或交付内容。(b)MinT 中转站——Mindai 通过 API 接口方式向客户提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM)的调用能力,模型输出可能包含文本、图像、代码等生成式内容。双方确认,客户始终单独负责:(i)其向本服务提交的训练数据、及通过中转站 API 提交的输入的合法性;(ii)使用本服务训练的任何模型或通过中转站调用的模型输出的特性、用途及处置;以及(iii)客户对上述模型的部署或使用行为,或对模型输出的下游使用而与个人信息主体产生的任何交互。Mindai 在本 DPA 项下的角色相应受限。 生效日期:[日期] 客户法定名称:[客户法定名称] 客户地址:[客户注册地址] 客户授权代表:[姓名 / 职务] Mindai:MINDAI PTE. LTD.,在新加坡注册成立的公司,公司注册号 202322737E,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721。 就个人信息处理事项,如本 DPA 与主协议存在冲突,以本 DPA 为准。本 DPA 未加定义的首写词语具有主协议赋予其的含义。 ## **第一条 定义** 1.1 “适用数据保护法”指对本 DPA 项下个人信息处理适用的一切法律法规,包括但不限于:(a)欧盟《通用数据保护条例》(2016/679)及英国 GDPR(合称“GDPR”);(b)《中华人民共和国个人信息保护法》(“PIPL”)及相关配套规定;(c)新加坡《个人数据保护法》(“PDPA”);以及(d)其他对本协议项下活动适用的数据保护或隐私保护法律。 1.2 “客户数据”具有主协议赋予其的含义,包括但不限于您通过训练平台上传的训练数据、模型权重、检查点等训练产物,以及您通过中转站 API 提交的输入(Inputs)与由此产生的输出(Outputs),并包括其中包含的任何个人信息。 1.3 “个人信息主体”指个人信息所指向的已识别或可识别的自然人。 1.4 “个人信息”指 Mindai 代客户处理的与个人信息主体相关的任何信息,具体类别详见附件 A。 1.5 “处理”指对个人信息进行的任何操作或操作集合,不论是否通过自动化手段进行,包括收集、存储、访问、使用、传输及删除等。 1.6 “控制者”“处理者”“个人数据泄露”与“监管机构”按 GDPR 的含义解释;“个人信息处理者”与“受托人”按 PIPL 的含义解释;其他适用数据保护法项下的对应用语相应解释。 1.7 “子处理方”指 Mindai 为提供本服务而委托处理个人信息的任何第三方。 1.8 “安全白皮书”指 Mindai 不时更新的《MinT 安全与合规白皮书》。 1.9 “子处理方清单”指附件 C 所提及的已批准子处理方清单,并可不时更新。 ## **第二条 双方角色** 2.1 双方确认,就本 DPA 项下个人信息处理而言:(a)客户为控制者(在 PIPL 项下为个人信息处理者);(b)Mindai 为代客户处理的处理者(在 PIPL 项下为受托人)。 2.2 本 DPA 不免除客户作为控制者/个人信息处理者依适用数据保护法应自行承担的义务,包括取得合法性基础及向个人信息主体履行告知义务。 ## **第三条 处理的范围与细节** 3.1 主题与期限。Mindai 仅为向客户提供主协议项下的服务而处理个人信息,处理期限为主协议有效期限,并可根据适用法律或第十二条的约定继续保留必要时间。 3.2 性质与目的、类别、指示。处理性质与目的、个人信息类别与个人信息主体类别详见附件 A。 3.3 客户指示。Mindai 仅依客户的书面指示处理个人信息,包括有关跨境传输的指示,除非适用法律另有要求。主协议、本 DPA 及客户根据服务文档对服务的使用行为即构成客户的书面指示。如 Mindai 认为某项指示违反适用数据保护法,应及时告知客户。 3.4 使用限制(不用于训练承诺)。Mindai 不得出售或共享个人信息(依适用法律定义)。Mindai 不得将客户数据、客户提交的训练数据或客户模型产出(定义见下文)用于训练、微调、评测、基准测试或其他改进 Mindai 自有或任何第三方的人工智能模型,但以下情形除外:(a)不识别客户或任何个人信息主体的聚合去标识化运营统计信息;或(b)客户事先给予单独、明示且可撤回的书面同意,客户可随时向后撤回该同意。为免疑义,代客户使用本服务产生的模型参数、模型权重、检查点及其他训练产物(下称“客户模型产出”)构成主协议项下的客户数据。除为提供、保障和计费本服务所严格必要的范围外,Mindai 不得留存、访问、重新利用客户模型产出或自其中获取独立商业价值,并应按第十二条将客户模型产出返还或删除。 3.5 部署模式与处理范围。Mindai 的处理范围因客户选择的部署模式而不同:(a)云端部署——Mindai 在云基础设施(详见子处理方清单)上托管本服务,就存储于本服务或经由本服务传输的客户数据,作为处理者/受托人处理;(b)私有化或本地化部署——本服务安装于客户环境或客户控制的云租户内,Mindai 不对客户数据或训练数据享有常规访问权,客户作为该等数据的唯一控制者与处理者。在(b)项情形下,Mindai 为了许可、计费与支持本服务而收集的最少身份、许可证、配置、使用遥测与支持数据,属于 Mindai 为自身经营目的进行的处理;就该等数据而言,Mindai 作为独立控制者(在 PIPL 项下为独立的个人信息处理者),仅按隐私政策与适用数据保护法处理。Mindai 对该等数据的保留期限不超出上述目的所必要的范围,并在任何情形下不超过相应支持、许可或计费关系终止后二十四(24)个月,但法律另有更长期限要求的除外。 3.6 API 内容的返还或删除。您通过中转站 API 提交的输入与由此产生的输出(以下称“API 内容”)视为客户数据的一部分。主协议终止后,Mindai 将在三十(30)日内自 Mindai 系统删除全部 API 内容,除非:(i)适用法律要求 Mindai 保留;或(ii)您书面同意保留更长期限。 ## **第四条 保密** 4.1 Mindai 应确保其授权处理个人信息的人员承担书面保密义务,或受适当的法定保密义务约束。 4.2 对个人信息的访问权限仅限于履行主协议及本 DPA 项下义务而需要访问的人员。 ## **第五条 安全措施** 5.1 Mindai 应实施并维护适当的技术与组织措施,以防止个人信息遭受意外或非法的毁损、丢失、篡改、未经授权的披露或访问(“个人数据泄露”),并考虑技术水平、实施成本、处理的性质、范围、情境与目的,以及对个人信息主体的风险。 5.2 Mindai 现行技术与组织措施的概要见附件 B,详细说明见安全白皮书。Mindai 可不时更新上述措施,但不得降低整体安全水平。 ## **第六条 子处理方** 6.1 概括授权。客户向 Mindai 提供概括授权,允许其委托子处理方协助提供服务,但应符合本第六条的要求。 6.2 现行清单。已批准子处理方以子处理方清单的形式维护,客户可查阅,见附件 C。 6.3 变更通知。Mindai 新增或替换子处理方的,应通过服务控制台、客户门户或电子邮件等方式,于变更生效前至少三十(30)日向客户发出通知并更新子处理方清单;如出于安全、法律或运营紧急需要缩短通知期限的,应尽快告知。 6.4 异议。客户可在 Mindai 通知后十五(15)日内基于合理的数据保护理由书面提出异议。双方应本着诚信原则协商解决。如协商不成,客户的唯一救济为终止需要该新子处理方提供的相应服务部分,并按比例退还该部分已预付费用。 6.5 义务传导。Mindai 应与每一子处理方签订书面协议,向其施加与本 DPA 实质等同的数据保护义务。Mindai 对子处理方的行为与不作为向客户承担与自身相同的责任。 ## **第七条 数据跨境传输** 7.1 部署区域选择。Mindai 提供多区域服务部署。客户在开通服务时选择部署区域。未作具体选择的,Mindai 适用其默认区域部署,并应客户书面请求予以书面確认。 7.2 传输机制。如处理涉及个人信息跨司法辖区传输,双方应诚实协作,适用相关适用数据保护法要求的传输机制,包括但不限于:(a)中国个人信息出境标准合同、数据出境安全评估或个人信息保护认证;(b)欧盟标准合同条款(SCCs)及/或英国国际数据传输协议;(c)PDPA 或其他适用法律项下的等效机制。 7.3 SCC 纳入。在本 DPA 项下传输的个人信息适用 GDPR 的范围内,双方视为已签订欧盟委员会 2021/914 号实施决定批准的标准合同条款(模块二:控制者至处理者),客户为数据出口方,Mindai 为数据进口方。可选条款的选择见附件 A。就 GDPR 项下传输而言,如本 DPA 与 SCC 冲突,以 SCC 为准。 7.4 中国出境。个人信息适用 PIPL 且跨境传向中国大陆境外的,客户作为个人信息处理者应确保适用有效传输机制(包括标准合同、安全评估或认证等)。Mindai 应提供合理协助及必要信息,支持客户的备案或评估工作。 ## **第八条 个人信息主体权利** 8.1 考虑处理性质,Mindai 应通过适当的技术与组织措施在可行范围内向客户提供合理协助,使其有能力回应个人信息主体行使适用数据保护法项下权利的请求,包括查阅、更正、删除、限制处理、反对、可携带权及撤回同意。 8.2 Mindai 如直接收到个人信息主体就代客户处理个人信息的请求,应及时告知该个人信息主体向客户提出。除非经客户授权或适用法律要求,否则不作实质性回复。 ## **第九条 数据保护影响评估与加强监管咨询** 9.1 Mindai 应根据处理性质以及其所掌握的信息,在适用数据保护法所要求的范围内,为客户开展数据保护影响评估(DPIA)、PIPL 项下个人信息保护影响评估(PIPIA),或向监管机构进行事前咨询提供合理协助。 ## **第十条 个人数据泄露通知** 10.1 Mindai 在确认发生影响客户个人信息的个人数据泄露后,应不得延迟地通知客户,且不迟于确认后七十二(72)小时。 10.2 通知应在当时已知及合理可获取的范围内包含:(a)事件性质描述,包括涉及的个人信息主体类别与记录级别的大致数量;(b)可能后果;(c)已采取或拟采取的处置与减缓措施;及(d)进一步信息的联系点。 10.3 Mindai 应配合客户的合理信息请求,采取合理措施保存证据、控制事件影响。是否需通知个人信息主体、监管机构或其他第三方,由客户自行评估决定。 ## **第十一条 审计与信息权** 11.1 信息提供。Mindai 应应客户合理的书面请求,每十二个月不超过一次(发生个人数据泄露或监管要求的情形除外),向客户提供为证明本 DPA 合规所合理必要的信息,包括现行认证、审计报告摘要(如 ISO 27001、SOC 2 报告,在取得后适用)、渗透测试摘要以及相关政策。 11.2 现场审计。在第 11.1 款所提信息不足以证明本 DPA 及适用数据保护法(包括 GDPR 第 28 条第 3 款第 h 项)下合规的情形下,客户可提前三十(30)日书面通知,在合理保密与安全协议项下,由双方接受的、受保密义务约束的独立审计人员进行或经其对 Mindai 相关设施与记录进行现场审计,但限于验证合规所合理必要的范围。 11.3 成本与范围。审计应在正常营业时间进行,不得不合理地干扰 Mindai 运营,不得涉及其他客户的数据或超出必要范围的敏感安全信息。客户承担自身成本;审计频次超过每年一次,或因客户方原因触发的,客户应补偿 Mindai 的合理费用。 ## **第十二条 个人信息的返还或删除** 12.1 主协议终止或到期后,经客户选择,Mindai 应在合理期限内(在任何情形下不晚于主协议与隐私政策规定的数据可携带与删除窗口):(a)向客户返还代其处理的全部个人信息;或(b)删除该等个人信息。法律要求保留或为处理实际或可预见的法律争议所必要的情形除外。 12.2 属法定保留情形的,Mindai 应继续确保该等个人信息的保密与安全,仅用于需要保留的目的。经客户请求,Mindai 应提供书面确认,确认已履行本第十二条下的义务。 ## **第十三条 责任** 13.1 双方基于或与本 DPA 相关的责任,受主协议责任限制与免除条款约束。为免疑义,本 DPA 不会超过主协议责任上限提高任何一方的责任上限,适用数据保护法强制性规定另有要求的除外。 ## **第十四条 客户监管合规与协助** 14.1 客户合规责任。客户就其训练产出对外部署应用所应履行的备案、登记、安全评估、内容审核、用户保护等监管义务(包括但不限于适用司法辖区项下生成式人工智能、深度合成、算法推荐相关监管制度),由客户单独承担。 14.2 Mindai 协助范围。Mindai 应客户书面合理请求,按《MinT 安全与合规白皮书》所载范围提供合规材料,协助客户完成监管备案或登记,具体包括:(a)训练平台侧材料(如训练数据处理、算力资源与安全措施说明);及(b)中转站侧材料(如 Macaron 系列模型的基本信息、第三方开源模型的部署与合规状况、API 层面的安全与内容审核措施说明),具体范围与客户拟履行的监管义务相匹配。 14.3 责任边界。Mindai 在本条下提供的协助以训练平台基础设施层面及 Mindai 运营的中转站服务层面信息为限,不就客户备案审批结果或客户应用层合规结果作出担保。客户因自身应用合规问题、或因其对训练平台上训练所得模型或通过中转站调用模型的配置、部署、使用引发的监管处罚,不影响 Mindai 在主协议及本 DPA 项下的责任范围。 ## **第十五条 一般条款** 15.1 效力顺序。本 DPA 与主协议就个人信息处理事项存在冲突的,以本 DPA 为准。为 GDPR 项下传输之目的,本 DPA 与欧盟标准合同条款(SCC)冲突的,以 SCC 为准。 15.2 更新。Mindai 可不时更新本 DPA,以反映适用数据保护法变化、新的传输机制或运营改进;任何更新均不得在未经客户同意的情况下实质性降低本 DPA 对个人信息所提供的保护水平。 15.3 适用法律与争议解决。本 DPA 的适用法律及争议解决方式与主协议一致,适用数据保护法强制性规定优先适用的情形除外。 15.4 可分性。本 DPA 某一条款被认定无效或不可执行的,不影响其他条款的效力。 15.5 副本与电子签名。本 DPA 可以副本形式签署(包括电子签名),每份副本视为原件,合并构成同一份文件。 ## **签字页** 双方确认已阅读并理解本 DPA 的全部条款,于首页所载生效日期由授权代表签署为凭。 MINDAI PTE. LTD. 签字:__________________________________ 姓名:[姓名] 职务:[职务] 日期:__________________________________ [客户法定名称] 签字:__________________________________ 姓名:[姓名] 职务:[职务] 日期:__________________________________ ## **附件 A 处理细节** ### **A.1 主题与期限** 主题:为支持客户使用 MinT(包括训练平台与中转站两个组成部分)而处理个人信息,包括服务开通、运营、支持、安全与计费。 期限:主协议有效期限,加上适用法律要求或第十二条允许的保留期限。 ### **A.2 性质与目的** 性质:托管、存储、传输、计算、记录客户向服务提交的客户数据中包含的个人信息,以提供服务。 目的:按主协议约定提供 MinT 服务;安全与滥用防范;计费与对账;客户支持。 ### **A.3 个人信息主体类别** - 客户授权的服务用户(员工、外部承包商、开发者)。 - 客户向服务提交的训练数据集、评估数据、提示词或输出内容中涉及的个人信息主体。 ### **A.4 个人信息类别** - 账号/身份信息:姓名、商务邮箱、职位、所属组织、身份验证凭证。 - 使用遥测数据:API 请求元数据(时间戳、端点、响应状态码、请求大小)、GPU 时长消耗、训练任务标识、控制台交互。 - 计费数据:计费主体、税务识别号、发票地址、支付方式令牌(Mindai 不存储完整卡号)。 - 支持沟通:工单内容、截屏、客户主动提交的日志。 - 客户模型产出:代客户产生的模型权重文件、训练检查点及中间训练产物,在其可能推导出个人信息的范围内(按第 3.4 款视为客户数据)。 - 客户选择向服务提交的客户数据中所包含的任何个人信息(其类别因客户具体使用场景而有所不同)。 ### **A.5 特殊类别(敏感个人信息)** 本服务不旨在处理特殊类别个人数据或敏感个人信息,除非客户已取得有效法律基础并确认已采取适当保护措施。除经与 Mindai 特别书面约定,客户不得提交该等数据。 ### **A.6 传输频率** 在主协议有效期内按需持续进行。 ### **A.7 跨境传输机制** 以下跨境传输机制的适用以基础处理所属的管辖范围为条件: - 默认机制(PIPL / PDPA 框架):个人信息适用 PIPL 且跨境传向中国大陆境外的,客户作为个人信息处理者应确保适用有效的 PIPL 出境机制(考虑个案适用性,可为个人信息出境标准合同、数据出境安全评估或个人信息保护认证)。PDPA 适用的,双方应遵守其传输限制要求,并借助约定形式施加等效保护。 - 条件机制(GDPR / 英国 GDPR):仅在个人信息处理落入 GDPR 或英国 GDPR 属地范围时,触发欧盟委员会 2021/914 号实施决定批准的标准合同条款(模块二:控制者至处理者),以及如适用的英国国际数据传输协议/附件。仅就该等传输而言,适用以下 SCC 可选条款: - 第 7 条——接入条款:选用。 - 第 9 条——子处理方授权:选择方式 2(概括书面授权),提前三十(30)日通知。 - 第 11 条——独立救济/争议解决:未选用(个人信息主体仍保留全部法定权利)。 - 第 17 条——适用法律:[由双方其后选定;无约定的,以 SCC 触发时 Mindai 书面指定的、符合第 17 条选项 1 的某欧盟成员国法律为准]。 - 第 18 条——管辖法院:[由双方其后选定;无约定的,以第 17 条所选适用法律所属欧盟成员国的法院为准]。 ## **附件 B 技术与组织措施** 以下为 Mindai 所实施的技术与组织措施概要。完整描述见安全白皮书,该白皮书通过引用纳入本附件 B。 ### **B.1 身份与访问控制** - 基于角色的访问控制(RBAC)与最小权限原则。 - 对所有管理性与特权访问强制要求多因素认证(MFA)。 - 生产系统的即时(JIT)授权与审批流程。 - 季度权限复核;岗位变动与离职时自动收回权限。 ### **B.2 加密** - 全链路传输采用 TLS 1.2 或以上。 - 静态数据采用 AES-256 或等效算法;基于 KMS 的密钥管理;云端部署场景下支持客户自主管理密钥(CMK)。 - 密钥与托管凭证保存在专用密钥管理系统中,并配备审计日志。 ### **B.3 网络与基础设施安全** - 虚拟私有云隔离、安全组与网络 ACL。 - 边缘层网络应用防火墙与 DDoS 防护。 - 加固后的操作系统基准与自动化补丁管理。 - 按定期节奏开展漏洞扫描与渗透测试。 ### **B.4 隔离与租户隔离** - 租户级逻辑隔离,租户范围内的身份、存储与计算边界。 - 开发、测试与生产环境的职责分离。 ### **B.5 监控、日志与事件响应** - 对访问、配置与安全相关事件的集中式日志记录;不可篡改的日志保留机制。 - 7×24 安全监控,配备告警与值班响应。 - 书面的事件响应预案,包含角色分工、沟通要求、取证保留与事后复盘。 ### **B.6 业务连续性与抗毁能力** - 生产组件多可用区部署。 - 定期加密备份,经测试的恢复流程与明确的 RTO/RPO 目标。 - 至少每年开展一次业务连续性与灾备演练。 ### **B.7 人员** - 在法律允许范围内,对有权访问生产系统的人员进行背景审查。 - 入职时与每年开展安全与隐私培训。 - 所有可接触客户数据的人员均订立书面保密义务。 ### **B.8 供应商管理** - 对子处理方的安全与隐私尽调。 - 与子处理方签订书面数据保护协议,施加与本 DPA 实质等同的义务。 - 对子处理方的履约表现与安全态势持续监控。 ### **B.9 认证与框架** Mindai 按 MLPS 2.0 等保三级(中国)、ISO/IEC 27001、SOC 2、ISO/IEC 27701 的要求对标推进。当前进展见安全白皮书。 ## **附件 C 已批准子处理方** 已批准子处理方以子处理方清单形式维护,通过引用纳入本 DPA。现行子处理方清单可通过 MinT 客户门户查阅,或交由 contact@mindlab.ltd 索取。 当前在用子处理方类别包括: - 云与基础设施:华为云、阿里云、火山引擎(用于中国区域部署)。 - 支付处理:具备 PCI-DSS 资质的支付服务商。 - 电子邮件与事务性沟通服务商。 - 客户支持与工单管理工具。 - 监控、日志与可观测性工具。 每一子处理方的名称、角色、区域以及所处理个人信息类别,见子处理方清单。 # FAQ (/zh/enterprise/support/faq) # FAQ 这里集中回答首次使用 MinT 时最常见的问题:SFT vs RL、域名选择和 API key 获取方式。 ## 我应该做 SFT 还是 RL? 如果你已经知道目标输出,并且有标注样本,使用 **SFT**。 如果你没有唯一标准答案,但能用 reward、verifier、测试或环境反馈给模型行为打分,使用 **RL**。 如果两者都有,可以组合使用。常见做法是用 SFT 建立基础行为,再用 RL 做目标优化,但这不是所有任务都必须遵守的固定顺序。 ## MinT 支持 SFT 吗? 支持。MinT 直接支持 SFT。 标准 SFT 路径就是: - `forward_backward(..., loss_fn="cross_entropy")` - `optim_step(...)` ## 应该用境外还是境内域名? 按你的网络路径来选: - 境内 -> `https://mint-cn.macaron.xin/` - 境外 -> `https://mint.macaron.xin/` 如果不确定,先用与你所在区域一致的域名。最实际的判断标准是延迟更低、连接更稳定。 ## `MINT_API_KEY` 从哪里获取? 访问 [https://macaron.im/mindlab/mint](https://macaron.im/mindlab/mint) 自助注册即可获得。 # Support(企业版) (/zh/enterprise/support) import { Callout } from 'fumadocs-ui/components/callout'; # Support(企业版) ## 获取帮助 | 渠道 | 用途 | |---|---| | 销售 / 账户 | 算力预留、定制 SLA、审计日志访问、采购 | | [GitHub Issues](https://github.com/MindLab-Research/mint-quickstart/issues) | bug 报告、特性请求、可复现的失败 | | [mint-feedback](https://github.com/MindLab-Research/mint-feedback) | MinT 各方向的外部反馈、bug 报告、功能请求 | | `sales@mindlab.ltd` | 销售、账户管理、定制部署咨询 | | [预约演示](https://macaron.im/mindlab) | 入门 onboarding、定制训练讨论 | 对于你的企业版集群算力、SLA 条款和审计日志配置,请联系 `sales@mindlab.ltd` 或[预约演示](https://macaron.im/mindlab)。 ## 社区 加入 MinT 社区,获取帮助、分享成果、了解最新动态。 ### 微信 添加微信小助手 **mindlab-bot**,获取技术支持和最新资讯。 ### Discord 加入我们的 [Discord 服务器](https://discord.gg/HNrxHaJX),实时交流、问答和社区互助。 ## Repositories | 仓库 | 用途 | |---|---| | [mindlab-toolkit](https://github.com/MindLab-Research/mindlab-toolkit) | 可安装的 MinT 客户端 SDK 和 Tinker 兼容层。`pip install` 的目标。 | | [mint-quickstart](https://github.com/MindLab-Research/mint-quickstart) | 标准的首次跑通例子 —— `quickstart.py`、`custom_reward.py`、`custom_loss.py`、`sampling_log.py`。新用户的起点。 | | [mint-cookbook](https://github.com/MindLab-Research/mint-cookbook) | 端到端 recipe 风格的例子和实验集合。 | | [mint-doc](https://github.com/MindLab-Research/mint-doc) | 你正在看的这个文档站。 | ## 法律与政策 下列文件定义了 MinT 企业版的基础条款。专属企业条款(算力预留、SLA 等级、审计日志保留期)由订单单据在以下基础文件之上议定。 - [服务条款](/zh/enterprise/support/terms) - [隐私政策](/zh/enterprise/support/privacy) - [可接受使用政策](/zh/enterprise/support/acceptable-use) - [服务水平协议](/zh/enterprise/support/sla) - [安全与合规白皮书](/zh/enterprise/support/security-compliance) - [数据处理协议](/zh/enterprise/support/data-processing-addendum) - [子处理方清单](/zh/enterprise/support/subprocessors) - [责任披露](/zh/enterprise/support/responsible-disclosure) - [完整 v2.0 法律文件集](/zh/enterprise/support/other-files) # MinT v2.0 法律文件集 (/zh/enterprise/support/other-files) # MinT v2.0 法律文件集 当前版本的 MinT v2.0 法律、隐私、服务与安全文件如下: - [服务条款](/zh/enterprise/support/terms) - [隐私政策](/zh/enterprise/support/privacy) - [可接受使用政策](/zh/enterprise/support/acceptable-use) - [服务水平协议](/zh/enterprise/support/sla) - [安全与合规白皮书](/zh/enterprise/support/security-compliance) - [数据处理协议](/zh/enterprise/support/data-processing-addendum) - [子处理方清单](/zh/enterprise/support/subprocessors) 如对这些文件有任何疑问,请联系 [sales@mindlab.ltd](mailto:sales@mindlab.ltd)。 # MinT 隐私政策 (/zh/enterprise/support/privacy) # **MinT 隐私政策** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 隐私政策》(以下简称“本政策”)描述 MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721,以下简称“Mindai”、“我们”)在您注册并使用 MinT(Mind Lab Toolkit)时,如何收集、使用、披露、传输、存储和保护您的个人数据/个人信息。本政策构成《MinT 服务条款》不可分割的组成部分。您注册账户或使用 MinT 即视为知悉并同意本政策。** **【核心承诺】(一)MinT 系面向开发者与企业客户的人工智能平台,由两个独立的组成部分构成(训练平台与中转站);未经您事先单独的、明示的、可撤回的书面同意,我们不会将您的客户数据、训练数据、训练产出,或您通过中转站 API 提交的输入与由此产生的输出,用于训练 Mindai 自有或任何第三方的人工智能模型。(二)我们仅收集为提供、保障和计费本服务所必需的个人信息。(三)涉及跨境传输的,我们将根据适用法(新加坡 PDPA、欧盟 GDPR、中国 PIPL 等)采取相应的法律机制。** ## **第一条 定义** 本政策中使用的大写或加引号的术语,未另行定义的,以《MinT 服务条款》中的定义为准。此外: - “个人信息”或“个人数据”:指与已识别或可识别的自然人有关的任何信息,含义同适用数据保护法律(包括新加坡 PDPA、欧盟 GDPR、英国 GDPR、中国 PIPL)项下的相应定义。 - “敏感个人信息”:指适用数据保护法律给予加强保护的特定类别数据(如 GDPR 项下的“特殊类别数据”、PIPL 项下的“敏感个人信息”、PDPA 项下的“敏感个人数据”)。 - “处理”:指对个人信息进行的任何操作,包括收集、使用、存储、披露、传输、删除和匿名化。 - “个人信息主体”:指个人信息所指向的自然人。 - “子处理方”或“受托处理方”:指 Mindai 委托的、代表 Mindai 处理个人信息以提供本服务的任何第三方。 - “客户数据”:指您通过 MinT 上传、提交、生成或处理的数据,定义同《MinT 服务条款》。客户数据可能附带包含您的终端用户的个人信息;在此情形下,您系该等个人信息的处理者/控制者,Mindai 系受托处理方。 ## **第二条 适用范围与角色定位** ### **2.1 适用范围** 本政策适用于 Mindai 处理的下列个人信息:(a)作为 MinT 注册用户的您本人的个人信息(如账户信息、计费信息、使用日志);(b)您上传至 MinT 的客户数据中所包含的您的终端用户的个人信息(Mindai 仅按您的指示代为处理)。 ### **2.2 角色定位** (a)就 2.1(a) 所述个人信息(您本人的账户、计费、使用数据),Mindai 系个人信息处理者(PDPA 项下“organisation”、GDPR 项下“controller”、PIPL 项下“个人信息处理者”)。(b)就您上传至 MinT 的客户数据中所含个人信息(包括您通过中转站 API 提交的输入与由此产生的输出),Mindai 系受托处理方(PDPA 项下“data intermediary”、GDPR 项下“processor”、PIPL 项下“受托人”),您系处理者/控制者。受托处理方一侧的具体义务,由《MinT 数据处理协议(DPA)》进一步规定。 ### **2.3 不适用范围** 本政策不适用于:(a)您作为处理者在自有产品/服务中处理的个人信息;(b)您选择接入的第三方基础模型或第三方服务商所处理的数据;(c)非由 Mindai 拥有或控制的网站或服务;(d)您通过中转站 API 提交的输入与由此产生的输出——Mindai 就该等内容依《MinT 数据处理协议》作为受托人处理,具体规则以 DPA 为准。 ## **第三条 我们收集的个人信息类别** ### **3.1 账户信息** 姓名、电子邮箱、所属机构/公司名称、计费地址、电话(可选)、认证凭证、职务/角色,以及您主动填写的个人资料信息。 ### **3.2 身份验证信息(企业版或法律要求时)** 企业注册文件、授权代表身份信息、受益所有人信息——仅在 KYC/KYB 或制裁/出口管制筛查所必需的范围内收集。 ### **3.3 计费与支付信息** 计费主体、税务识别号(如统一社会信用代码、GST/VAT)、发票地址、支付方式 Token、交易记录。Mindai 不存储完整支付卡号;支付处理由具备 PCI-DSS 资质的第三方支付服务商完成。 ### **3.4 使用与遥测数据** MinT 服务运行的元数据,包括:(A)就训练平台,训练任务标识、GPU 时长消耗、训练日志元数据、模型成果存储元数据、控制台交互;(B)就中转站,API 请求元数据(时间戳、端点、响应状态码、请求大小、Token 消耗)、API 密钥标识、请求限流状态;及(C)两块共用的功能使用统计。用于运行、保障、调试与改进本服务。 ### **3.5 设备与连接信息** IP 地址、浏览器类型、操作系统、设备标识、语言偏好、时区设置。通过标准服务器日志和 Cookie/类似技术收集。 ### **3.6 通讯记录** 您与我们客服团队的沟通记录、产品内反馈、问卷回复、缺陷报告。 ### **3.7 客户数据中所含个人信息(受托处理方身份)** 如您上传的训练数据、Prompt 或评估样本中包含您的终端用户的个人信息,该等数据属于客户数据,Mindai 仅依您的书面指示并按 DPA 约定代为处理。 ### **3.8 敏感个人信息** 为本服务运行之目的,Mindai 不主动向您收集敏感个人信息。如您的客户数据包含敏感个人信息,您应当:(a)确保已就该等敏感信息的处理取得适用法律所要求的强化同意;(b)在上传前告知 Mindai;(c)遵守 DPA 项下针对敏感信息的额外处理要求。 ## **第四条 个人信息的使用目的** 我们基于下列目的处理个人信息: - 提供与运行本服务:账户注册与管理、算力资源配置与训练任务编排(训练平台)、模型成果存储(训练平台)、API 调用路由与限流(中转站)、控制台/API/SDK 接入。 - 计费与支付:发票生成、支付处理、退款、催款、税务合规。 - 安全、反欺诈与防滥用:监控未授权访问、异常流量、账户盗用、违规使用,及安全事件响应。 - 服务改进:基于聚合与去标识化数据进行功能使用、性能与可靠性分析;该等分析不再可识别到个人。 - 客户支持:响应咨询、排查故障、提供技术协助。 - 法律合规:税务记录、出口管制与制裁筛查、响应合法的监管或司法机关要求。 - 通讯:服务通知、安全告警、计费提醒、产品更新(您可随时退订非必要营销通讯)。 - 基于您单独同意:用于已向您说明并经您书面同意的特定研发目的。 无完全自动化决策。Mindai 不会基于个人信息进行产生法律效力或对您具有类似重大影响的完全自动化决策(含画像),范围依 GDPR 第 22 条理解。如您配置 MinT 用于对您的终端用户开展自动化决策,您作为处理者/控制者,应自行就适用法关于自动化决策与画像的合规要求(含告知、人工复核、争议权)承担全部责任。 ## **第五条 客户数据与“不训练”承诺** **未经您事先单独的、明示的、可撤回的书面同意,Mindai 不会将您的客户数据、训练数据或客户模型产出(模型权重、checkpoint、LoRA 适配器及其他训练产物)用于训练、微调、评估、基准测试或以其他方式改进 Mindai 自有或任何第三方的人工智能模型。** 上述为便于理解的通俗表述。本项承诺的法律约束力版本(包括客户模型产出的定义、有限例外情形,以及 Mindai 的返还/删除义务)载于《数据处理附录》(“DPA”)第 3.4 条,如与本条不一致,以 DPA 第 3.4 条为准。具体而言:(a)您上传至 MinT 的客户数据,仅在您的书面指示范围内处理,用于运行本服务;(b)客户模型产出的所有权归您,Mindai 不会出于执行您训练任务及提供本服务以外的任何目的访问、复制或使用上述产出;(c)用于运行与改进本服务的使用遥测数据,均经聚合与去标识化处理,绝不包含您的客户数据、客户模型产出,或您通过中转站 API 提交的输入与由此产生的输出的实质内容;(d)Mindai 员工对客户数据的访问,仅限于支持、安全或法律合规所必需的最小范围,且受保密义务约束并经审计日志记录。 ## **第六条 处理的合法性基础** 适用数据保护法律要求识别合法性基础的,Mindai 依据下列基础进行处理: - 履行合同所必需:依据《MinT 服务条款》向您提供本服务(GDPR 第 6(1)(b) 条;PDPA 合同必要性)。 - 正当利益:用于保障服务安全、防范欺诈与滥用、内部审计、改进服务等不超出您基本权益的合理范围(GDPR 第 6(1)(f) 条)。 - 履行法定义务:满足税务、会计、制裁、反洗钱及其他对 Mindai 适用的监管要求(GDPR 第 6(1)(c) 条)。 - 同意:法律有要求时或就特定目的取得您的单独同意(GDPR 第 6(1)(a) 条;PIPL 同意基础;PDPA 视为同意/明示同意)。 依赖同意进行处理的,您可随时撤回同意,但不影响撤回前基于同意的处理活动的合法性。 ## **第七条 个人信息的共享与披露** Mindai 不出售个人信息。我们仅在下列必要范围内向下列类别的接收方共享个人信息: - 子处理方:云基础设施提供方、支付处理方、通讯服务商、安全与防滥用厂商、客服工具厂商。当前子处理方清单详见第十七条所列网址,并将不时更新。 - Mindai 关联公司:在符合本政策的集团内部数据传输安排下进行。 - 专业顾问:律师、审计师、会计师、保险人,受保密义务约束。 - 继受方:在合并、收购、融资、重组或资产出售情形下,可能在保密承诺下转移个人信息。 - 有权机关:基于合法的监管、司法或执法要求,或为保护 Mindai、用户或公众的权利、财产或安全所合理必需的情形。法律允许范围内,Mindai 将事先通知受影响的客户。 ## **第八条 子处理方** Mindai 为提供本服务委托有限数量的子处理方(如云算力、对象存储、内容分发、分析、支付、邮件等)。Mindai 通过书面合同要求子处理方:(a)仅按 Mindai 的书面指示处理个人信息;(b)承担保密义务;(c)实施适当的技术与组织安全措施;(d)提供充分的跨境传输保障。 当前子处理方清单维护于 https://macaron.im/zh/mindlab(“子处理方页面”),或经请求向企业客户提供。如就子处理方发生重大变化,Mindai 将依 DPA 约定提前通知。 ## **第九条 数据驻留与跨境数据传输** MinT 由 MINDAI PTE. LTD.(新加坡注册主体)提供。处理个人信息的子处理方基础设施所在位置取决于客户所选择的部署模式: - (a)云部署:个人信息存储和处理于 Mindai 委托的、在中国大陆境内持牌的云服务提供方所提供的中国大陆节点(当前清单详见第八条所述子处理方页面)。云部署客户的个人信息在正常业务中不会传输至中华人民共和国境外。 - (b)本地化/私有化部署:个人信息存储和处理于客户控制的基础设施。该等个人信息的所在位置以及其任何跨境流转,均由客户自行确定并负责。 - (c)剩余的跨境传输情形可能涉及与技术支持、计费、合同管理或客户关系管理等行政职能相关的数据流转。 在个人信息被传输至原收集地以外司法辖区时,Mindai 将依据适用法采取相应的法律机制: - 新加坡(PDPA):Mindai 确保接收方受具备法律强制力的义务约束,提供与 PDPA 相当的保护标准(依据 PDPA 第 26 条及《Personal Data Protection Regulations 2021》项下的传输限制义务)。 - 欧盟/英国(GDPR / UK GDPR):Mindai 依据欧盟委员会标准合同条款(2021/914)进行传输;自英国传输的,叠加适用英国国际数据传输附录,并视情形进行传输影响评估并采取附加保障措施。 - 中华人民共和国(PIPL):将中国境内个人信息向境外传输的,Mindai 依据(并协助客户建立)PIPL 第 38 条项下的合法基础之一,包括国家网信部门组织的安全评估、个人信息保护认证或国家网信部门制定的标准合同。 如您需要附加文件或就您自身的跨境合规义务请求协助,请联系 contact@mindlab.ltd。 ### **数据驻留矩阵(示意)** 下表按部署模式概述个人信息与运营数据的主要存储地域以及适用的跨境传输机制。具体部署的细节以适用的订单表和子处理方清单为准。 | **部署模式** | **主要区域** | **所存数据类别** | **跨境机制** | **变更通知** | | --- | --- | --- | --- | --- | | 云部署—中国 | 中国大陆 | 客户数据、训练数据、客户模型产出、日志 | 正常业务中不出境;任何剩余出境流转适用 PIPL 机制 | 子处理方变更提前 30 日通知 | | 云部署—国际(如开通) | 新加坡 / 欧盟(按选择) | 客户数据、训练数据、客户模型产出、日志 | PDPA 传输限制义务;涉及 GDPR 的适用欧盟 SCC(2021/914)模块二 | 子处理方变更提前 30 日通知 | | 私有化 / 本地化部署 | 客户控制的环境 | 客户数据与训练数据留存客户侧;仅许可/遥测/支持数据流转至 Mindai | 由客户自行确定;就最小许可/遥测/支持数据,Mindai 作为独立的个人信息处理者 | 客户数据不适用;Mindai 侧子处理方变更提前 30 日通知 | | 行政与支持 | 新加坡(Mindai 总部)及区域支持中心 | 计费数据、账户标识、工单内容 | 按具体流转分别适用 PDPA / GDPR / PIPL 机制 | 子处理方变更提前 30 日通知 | ## **第十条 存储期限** 我们仅在为收集目的所必需的期限内存储个人信息,包括法律、会计、报告等要求的期限。下列为指示性期限,具体期限以数据类别和适用法为准: - 账户信息:账户存续期间及账户终止后三十(30)日,之后删除或匿名化处理,但法律有要求另行保留的(如税务记录)除外。 - 计费与税务记录:依据适用税务与会计法律(通常为五(5)至十(10)年)。 - 客户数据:账户终止后三十(30)日内删除,《MinT 服务条款》第十六条另有规定的除外。您可在该 30 日窗口内导出客户数据与训练产出。 - 使用日志与安全日志:通常保留九十(90)至一百八十(180)日,之后聚合或删除,但用于持续中安全调查的除外。 - 通讯与客服记录:自相关工单关闭后保留至多二十四(24)个月。 ## **第十一条 数据安全** Mindai 在合理与适当范围内采取技术与组织措施,保护个人信息免受未授权访问、意外丢失、变更、披露或销毁,并兼顾技术发展水平、实施成本与数据性质。措施包括但不限于: - 传输加密(TLS 1.2 及以上)与静态加密(AES-256 或同等强度)。 - 网络分段、防火墙与入侵检测系统。 - 基于多因素认证与最小权限原则的身份与访问管理。 - 对个人信息访问活动的审计日志与持续监控。 - 员工背景审查、安全培训与保密承诺。 - 供应商风险评估与子处理方合同约束。 - 事件响应预案与数据泄露通知流程。 若发生影响您个人信息的安全事件,Mindai 将在不当延迟前通知您,并按适用法律要求的时限(如 GDPR 项下 72 小时通知监管机构的要求)履行通知义务。 ## **第十二条 您的权利** 在适用数据保护法律允许的范围内,您就您的个人信息享有下列权利: - 访问权:确认 Mindai 是否处理您的个人信息,并获取相关副本。 - 更正权:要求更正不准确或不完整的个人信息。 - 删除权:要求删除您的个人信息,受适用法定保留义务限制。 - 可携权:以结构化、通用、机器可读的格式接收您的个人信息。 - 限制处理权:在特定情形下要求限制处理您的个人信息。 - 反对权:基于正当利益的处理(含画像)享有反对权。 - 撤回同意权:依据同意进行处理的,您可随时撤回,但不影响撤回前的处理合法性。 - 投诉权:向您所在司法辖区的有权数据保护机关投诉(如新加坡个人数据保护委员会、GDPR 项下监管机构、中国国家网信办或地方网信主管部门等)。 行权方式。请通过您账户绑定的电子邮箱发送邮件至 contact@mindlab.ltd,或使用产品内提供的隐私控制功能行使上述权利。Mindai 将在三十(30)日内回应;适用法律要求更短或更长期限的从其规定(延长的将向您说明理由)。 身份核实。为保护您的信息安全,Mindai 在响应权利请求前将合理核实您的身份。核实方式可能包括:将您提供的信息与我们已有记录进行比对、要求您通过现有账户凭证完成认证、或在高风险情形下要求提供额外佐证文件。 授权代理人。在适用法律允许的范围内(包括加州 CCPA/CPRA),您可委托授权代理人代为提交权利请求。代理人应提供经您签署的书面授权证明;Mindai 在采取行动前仍可要求您本人直接核实身份。 Mindai 在适用法律允许的范围内,有权拒绝明显无依据的、过度的、重复的,或将对他人权利与自由产生不利影响的请求。 ## **第十三条 Cookie 与类似技术** Mindai 在其网站和控制台中使用 Cookie 与类似技术(如 LocalStorage、网络信标),用于下列目的: - 严格必需:身份认证、会话管理、安全保障、负载均衡。该等 Cookie 不可禁用,否则将影响本服务的正常使用。 - 功能性:语言偏好、UI 设置、无障碍功能。用于提升使用体验。 - 分析性:聚合的、去标识化的使用统计,用于了解和改进本服务。您可通过 Cookie 横幅或浏览器设置选择禁用。 Mindai 不使用广告 Cookie,亦不将个人信息出售给广告网络。 ## **第十四条 未成年人保护** MinT 面向年满 18 周岁(或所在司法辖区法定成年年龄,以较高者为准)的开发者、研究人员与企业用户。我们不有意收集未成年人的个人信息。如发现意外收集,Mindai 将不当延迟前删除。 ## **第十五条 区域性条款** ### **15.1 新加坡(PDPA)** 本政策构成 Mindai 依 PDPA 项下的告知文件。Mindai 数据保护官的联系方式为 contact@mindlab.ltd。您亦可联系新加坡个人数据保护委员会(PDPC),网址 https://www.pdpc.gov.sg。 ### **15.2 欧洲经济区、英国与瑞士(GDPR / UK GDPR)** Mindai 处理欧洲经济区、英国或瑞士境内个人信息主体的个人信息时,Mindai 系 GDPR 项下的控制者(在客户数据情形下系处理者)。Mindai 牵头监管机构待定;个人信息主体亦可向其所在地监管机构投诉。 欧盟/英国代表(GDPR 第 27 条 / UK GDPR 第 27 条)。如 Mindai 依法应当在欧盟或英国指定代表,Mindai 将进行该等指定,并在本政策中更新代表的名称与联系方式。在该等指定完成前,欧洲经济区、英国及瑞士的个人信息主体可就所有数据保护事宜联系 contact@mindlab.ltd,Mindai 将按照如同代表已正式指定的标准予以处理。 ### **15.3 中华人民共和国(PIPL)** 为向中华人民共和国境内自然人提供产品或服务的目的处理其个人信息时,Mindai 遵守 PIPL。Mindai 依 PIPL 设立的联系人与个人信息保护负责人邮箱为 contact@mindlab.ltd。中国境内个人信息主体可向国家网信办或地方网络与信息化主管部门投诉举报。 PIPL 境内专门机构/代表(PIPL 第 53 条)。如 Mindai 依 PIPL 第 53 条应当在中华人民共和国境内设立专门机构或指定代表,Mindai 将完成该等设立或指定,并在本政策中更新该等机构或代表的名称与联系方式。在该等设立/指定完成前,中国境内个人信息主体可就个人信息保护事项联系 contact@mindlab.ltd。 ### **15.4 加利福尼亚(CCPA / CPRA)** 如您系加州居民,您依加州《消费者隐私法》(经《加州隐私权法案》修订,统称 “CCPA”)享有以下权利: - 知情权:要求知悉我们收集您的个人信息的类别与具体内容、来源、商业目的及接收方类别。 - 删除权:要求删除我们自您处收集的个人信息,受法律例外限制。 - 更正权:要求更正不准确的个人信息。 - 退出销售或共享权:Mindai 不“出售”或“共享”个人信息(含为跨场景行为广告之目的的共享,定义同 CCPA),故无须设置“Do Not Sell or Share My Personal Information”链接。 - 限制使用敏感个人信息权:Mindai 不会出于将触发该等权利的目的使用或披露敏感个人信息;如有使用,仅限于为提供您所请求服务所合理必需。 - 不歧视权:Mindai 不会因您行使 CCPA 项下任何权利而对您作出歧视性对待(如拒绝提供服务、收取不同价格)。 - 授权代理人:加州居民可委托授权代理人按本政策第十二条所述程序提交权利请求。 行使上述权利,请联系 contact@mindlab.ltd。Mindai 不就个人信息的收集、出售或保留提供财务激励。 ## **第十六条 本政策的变更** Mindai 可不时更新本政策。如属重大变更,Mindai 将通过电子邮件、MinT 控制台或官方网站公告,提前至少三十(30)日通知;适用法律要求取得同意的,Mindai 将按要求取得您的同意。当前生效版本以封面所载版本号与生效日期为准。 ## **第十七条 联系方式** 如您对本政策或对 Mindai 处理您个人信息的方式有任何疑问、意见或投诉,请通过下列方式与我们联系: - 服务提供方:MINDAI PTE. LTD.,注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 数据保护官 / PIPL 联系人邮箱:contact@mindlab.ltd - 通用联系邮箱:contact@mindlab.ltd - 子处理方清单:https://macaron.im/zh/mindlab(或经请求向企业客户提供) ## **生效日期与版本** 本政策自封面所载生效日期起生效。Mindai 可发布本政策的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本政策正文结束 ——* # Responsible Disclosure (/zh/enterprise/support/responsible-disclosure) # Responsible Disclosure 如果你在 MinT、MinT 客户端 SDK(`mindlab-toolkit`)或任何公开的 MinT 仓库中发现安全漏洞,请通过私密渠道告知我们,让我们在公开披露前先修复。 ## 如何上报 发邮件到 `security@mindlab.ltd`(如果该邮箱尚未为你的场景启用,发到 `contact@mindlab.ltd`),并包含: - 漏洞描述及潜在影响。 - 复现步骤,包括受影响的版本、endpoint 和任何特定配置。 - 任何 PoC 代码或日志(发送前请抹掉凭据)。 请不要把安全报告发到公开的 GitHub Issues。 ## 我们的响应 - 5 个工作日内确认收到。 - 根据严重程度协调修复与披露时间表,通常为 30–90 天。 - 修复发布后,在你同意的前提下给予公开致谢。 # MinT 安全与合规白皮书 (/zh/enterprise/support/security-compliance) # **MinT 安全与合规白皮书** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年[ ]月[ ]日* **【请仔细阅读】本《安全与合规白皮书》(下称“白皮书”)描述 MINDAI PTE. LTD.(下称“Mindai”“我方”“我们”)截至上述发布日期就 MinT(Mind Lab Toolkit,下称“MinT”或“服务”)所采取的技术与组织性安全措施。本白皮书旨在协助企业版客户、其安全团队及法律顾问开展供应商安全评估,属信息性文件,本身不构成合同性承诺。合同性安全承诺以 MinT 服务条款、《数据处理协议》(DPA)及相关订单文件所载为准。** **【前瞻性陈述】本白皮书中标识为“路线图”“计划”或“规划中”或类似表述的事项,反映 Mindai 截至发布日期的当前计划,可能发生变化。客户在作出采购决策时不应依赖此类事项,应于实际合作之时向 Mindai 确认相关事项的届时实际状态。** ## **第一条 引言与适用范围** MinT 是一款由 Mindai 提供的人工智能平台,由两个独立组成部分构成:(a)“训练平台”——为机器学习模型权重(下称“训练产出”)的训练、微调与评估提供强化学习(Reinforcement Learning)基础设施,其输出为模型参数而非面向终端用户的内容;(b)“中转站”——通过 API 接口方式向客户提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM 等)的调用能力,客户可用于自身 AI 业务用途。本白皮书描述 Mindai 就 MinT 上述两个组成部分及其上所处理的客户数据所采取的安全架构、安全控制与治理实践。 除另有定义外,本白皮书中使用的大写术语具有 MinT 服务条款与 MinT 隐私政策所赋予的含义。 ## **第二条 Mindai 的安全承诺** Mindai 安全体系建立在以下四项原则之上: - 客户数据归属——客户数据归客户所有。Mindai 仅为提供服务之目的,并按照客户书面指示处理客户数据。 - 纵深防御——我们在物理、网络、主机、应用、数据及身份各层面部署安全控制,以确保任一单层被攻破不会导致客户数据被泄露。 - 最小权限——Mindai 员工对客户数据的访问仅限于经过严格范围限定的角色,按即时授权方式授予,并经记录与审查。 - 透明度——Mindai 对外公布其安全态势(即本白皮书)、子处理方清单以及安全事件通知实践,并在适当保密安排下,根据企业版客户请求提供第三方审计摘要报告。 ## **第三条 安全治理** Mindai 的安全工作由安全负责人(Head of Security)统筹,其向公司管理层汇报,负责信息安全管理体系(ISMS)的设计、实施、运行与持续改进。安全负责人下设专职安全团队,覆盖安全工程、安全运营、合规与风险治理(GRC)及事件响应等职能。 Mindai 建立并维护书面信息安全政策框架,由管理层审批并定期复核,涵盖 ISO/IEC 27001:2022 附录 A 所列各安全管理域。相关政策至少每年复核一次,并在服务、威胁态势或适用法律发生重大变化时进行复核。所有可访问客户数据的人员,须在获得访问权限前书面确认遵守上述政策框架。 Mindai 运行符合 ISO/IEC 27005 的风险管理流程。风险以“影响×可能性”进行识别、评估,并以接受、缓解、转移或规避的方式予以处置,并在统一风险登记簿中跟踪。重大风险按季度上报管理层。 ## **第四条 资质认证与合规标准** ### **4.1 现有认证** 截至本白皮书发布之日,Mindai 已取得如下认证: - 网络安全等级保护第三级(PRC MLPS 2.0,“等保三级”)——由具备资质的测评机构依据 GB/T 22239-2019 完成测评,并已在公安机关备案。等保三级是中华人民共和国针对处理重要信息、服务重要用户群体的信息系统适用的国家基础要求。 ### **4.2 对标的标准** 在上述认证之外,Mindai 的安全体系在设计上还对标下列国际标准与框架: - ISO/IEC 27001:2022(信息安全管理体系)——附录 A 控制集; - ISO/IEC 27701:2019(隐私信息管理)——数据控制者与处理者相关控制; - ISO/IEC 27017:2015(云服务信息安全); - ISO/IEC 27018:2019(作为个人可识别信息处理者的公有云中个人可识别信息保护); - NIST 网络安全框架(CSF)2.0——识别、保护、检测、响应、恢复、治理; - NIST SP 800-53(安全与隐私控制)及 NIST SP 800-63B(数字身份); - 云安全联盟(CSA)云控制矩阵(CCM)v4。 ### **4.3 路线图** 下列认证目前列入 Mindai 合规路线图。下文所列目标时间窗为参考性质,客户在实际合作之时应向 Mindai 确认届时状态: - ISO/IEC 27001:2022 认证——目标时间窗:[待定]; - SOC 2 Type II 报告(安全、可用性、保密性)——目标时间窗:[待定]; - ISO/IEC 27701:2019 认证(隐私扩展)——目标时间窗:[待定]。 ### **4.4 独立审计** Mindai 委托具备资质的独立第三方开展安全评估,包括就 MinT 平台层至少每年一次的应用层渗透测试。重大发现通过 Mindai 漏洞管理流程跟踪闭环。相关摘要报告可在适当保密安排下,根据企业版客户请求提供。 ## **第五条 共担责任模型** MinT 服务的安全由 Mindai、客户以及(在相关情形下)Mindai 的 IaaS 层子处理方共同承担。下表汇总了责任分配,仅供参考说明之用,不替代服务条款、DPA 或相关订单文件所作的实际约定。 | **控制领域** | **Mindai** | **客户** | **IaaS 子处理方** | | --- | --- | --- | --- | | 数据中心物理安全 | | | ● | | 宿主操作系统、虚拟化层、底层基础设施 | | | ● | | MinT 平台层(控制平面、编排、身份、元数据服务) | ● | | | | 客户数据多租户隔离 | ● | | | | 客户数据静态加密(平台托管密钥) | ● | | | | 账号凭证安全、MFA 启用、API 密钥管理 | | ● | | | 客户数据的分类与标识 | | ● | | | 上传个人信息的合法处理依据 | | ● | | | 客户使用行为合规性(AUP 及适用法律) | | ● | | | 本地化部署环境的安全(仅适用于私有化部署) | | ● | | ## **第六条 数据保护** ### **6.1 数据归属** 客户数据归客户所有。在 Mindai 与客户之间,客户保留对客户数据、训练数据与训练产出的全部权利、所有权与权益。Mindai 作为数据处理者(PDPA 项下的“数据中介”;GDPR 项下的“处理者”;PIPL 项下的“受托人”),仅按照客户书面指示并为提供服务之唯一目的处理客户数据,相关细节以 DPA 所载为准。 Mindai 不将客户数据、训练数据或训练产出用于训练、微调或评估 Mindai 自有模型,亦不向第三方披露上述数据,但经授权的子处理方依子处理方清单所列并承担等同书面义务者除外。 ### **6.2 多租户隔离** MinT 在训练平台的控制平面、编排、存储与元数据层面,以及中转站的 API 网关层,实施租户间逻辑隔离,确保任一租户无法访问或枚举另一租户的资源、数据、训练工件或中转站请求。隔离通过租户级标识、租户级加密材料,以及每个 API 边界上的鉴权校验予以强制实现。 对隔离有更高要求的企业版客户,可采用私有化部署(见第十六条):客户工作负载在专属并由客户管理控制的基础设施上运行。 ### **6.3 数据驻留** 客户数据的存储与处理位置由客户所选部署模式决定: - 云端部署:客户数据在 Mindai 所使用的、具备相应资质的云服务提供方的中国大陆境内节点上存储与处理。在通常运行中,云端部署客户的客户数据不发生出境传输。 - 私有化/本地部署:客户数据在客户管理控制的基础设施上存储与处理;相关数据驻留位置及是否发生跨境移动,由客户自行决定并承担相应责任。 当前子处理方清单(包括为云端部署客户提供服务的云服务提供方的身份与位置)载于子处理方页面,并可应企业版客户请求提供。参见 MinT 隐私政策第九条。 ### **6.4 加密** Mindai 对客户数据在存储、计算与网络各层面实施端到端加密,遵循如下标准: - 传输加密:所有经公网的客户端至服务、以及服务间通信均采用 TLS 1.2 或更高版本。控制面 API 支持 TLS 1.3 及现代加密套件;不接受 SSLv2/v3、TLS 1.0/1.1 等旧协议。 - 静态加密:MinT 平台层运营的对象存储、块存储与托管数据库中的客户数据,采用 AES-256(或同等强度)加密。 - 平台内部敏感凭证加密:服务间认证令牌、密钥与凭证存储在专用密钥管理系统中,具备访问控制与审计日志。 ### **6.5 密钥管理** 用于保护客户数据静态加密的密钥由 Mindai 的 IaaS 层子处理方运营的密钥管理服务(KMS)管理,并在“密钥管理”与“密钥使用”权限之间实施职责分离。就云端部署场景下的客户自主管理密钥(BYOK / CMEK)能力,列入 Mindai 产品路线图。在私有化部署场景下,密钥管理基础设施由客户在其自有环境中控制。 ### **6.6 备份与删除** 客户数据按照 Mindai 业务连续性目标(见第十三条)以固定节奏进行备份。备份数据继承与生产数据相同的加密、访问控制与隔离属性。 在服务终止或收到客户书面删除指示后,Mindai 将在 DPA 所列期限内从生产系统中删除客户数据,并在备份轮换周期内从备份系统中删除。Mindai 应客户请求提供书面删除确认。 ## **第七条 身份与访问管理** ### **7.1 原生账号体系** MinT 提供原生账号体系,支持强密码策略(长度、复杂度、历史、有效期)、多次登录失败锁定、会话超时,以及异常登录检测(如异常地理位置、异常位移)。 ### **7.2 多因素认证(MFA)** MinT 支持用户登录多因素认证,用以防范钓鱼、密码复用与暴力破解所致的凭证泄露风险。强烈建议客户对具有管理员权限或可访问敏感资源的全部用户强制启用 MFA。 ### **7.3 单点登录(SSO)** v2.0 版本下,MinT 云端部署产品不提供标准化、开箱即用的 SSO 集成。对 SSO 有需求的客户——包括与 SAML 2.0、OIDC、钉钉、飞书、企业微信、Microsoft Entra ID(原 Azure AD)、Okta 等企业身份提供方的对接——可在私有化部署的合作框架下,针对客户自有身份提供方进行定制化 SSO 集成。面向云端部署的标准化 SSO 能力列入 Mindai 产品路线图。 ### **7.4 基于角色的访问控制(RBAC)** 在企业版客户租户内,管理员可定义角色并就项目、训练任务、数据集、模型工件与计费资源分配细粒度权限。角色遵循最小权限原则,支持职责分离。 ### **7.5 特权访问(Mindai 员工)** Mindai 员工对存有客户数据的生产系统的访问,仅限于严格范围限定的角色,通过内部特权访问管理(PAM)系统按即时授权方式授予,并须经 MFA 验证、会话录屏及有时限的审批。所有特权访问会话均予记录并定期复核。 ### **7.6 API 密钥管理** 对 MinT 的程序化访问通过客户控制下签发的 API 密钥进行授权。API 密钥可就特定项目、权限与 IP 地址范围作范围限定,客户可随时轮换或吊销。 ## **第八条 网络安全** ### **8.1 网络架构** MinT 平台层部署于分段网络区域——对外 API 入口、应用层、数据层、管理层——区域间设置严格防火墙规则,默认拒绝跨区流量。对外服务端点由 CDN 与 Web 应用防火墙前置保护,具备限流、IP 声誉过滤与流量异常检测能力。 ### **8.2 DDoS 防护** MinT 从 IaaS 层子处理方继承容量型与协议型 DDoS 防护,网络层缓解能力可覆盖常见 DoS 攻击规模。应用层限流在 API 网关处强制实施。 ### **8.3 管理访问** 对生产系统的管理访问仅通过堡垒机进行,堡垒机须经 MFA、双向 TLS 与源 IP 白名单保护。不允许从公网直接通过 SSH 或 RDP 访问生产主机。 ### **8.4 网络分段与出站控制** 承载客户训练任务的计算工作负载运行于具备分段与受限出站能力的网络环境中。出站访问的目标由白名单控制,防止经由非预期网络通道发生数据外泄。 ## **第九条 应用安全** ### **9.1 安全软件开发生命周期** Mindai 遵循安全软件开发生命周期(SSDLC),将安全审查嵌入设计、实现、测试与部署各阶段。具体要求包括对新功能进行威胁建模、对全部合并请求进行同行代码评审、自动化静态应用安全测试(SAST)、依赖漏洞扫描(SCA)以及容器镜像扫描。 ### **9.2 漏洞管理** Mindai 维护漏洞管理程序,对内部工具、独立渗透测试及责任披露渠道提交的发现进行定性定级,并采用 CVSS v3.1 评估严重性。修复按严重性设定期限:严重级在数日内修复,高危级在数周内修复,中低危级在常规发布周期内修复,并跟踪至闭环。 ### **9.3 第三方渗透测试** Mindai 委托具备资质的独立第三方,就 MinT 平台层至少每年开展一次应用层与基础设施层渗透测试,并在重大架构变更后另行开展。相关摘要报告可在适当保密安排下,根据企业版客户请求提供。 ### **9.4 责任披露** 欢迎安全研究人员就 MinT 的漏洞向 contact@mindlab.ltd 提交报告。Mindai 将对有效报告予以确认,协调修复,并且对善意行事、尊重客户隐私并遵守 Mindai 责任披露指引的研究人员,不采取法律行动。 ## **第十条 AI 特定安全** ### **10.1 训练数据隔离** 客户上传的训练数据在租户级存储中存储与处理,访问权限仅限于上传该数据的客户所在租户。训练任务在租户级计算环境中执行;任一客户的训练数据在数据、内存或工件层面,均不会被另一客户的训练任务所访问。 ### **10.2 训练数据脱敏与最小化** MinT 支持客户在上传前对训练数据进行脱敏与最小化处理;在合理可行的情况下,鼓励客户按照适用数据保护法律的要求实施上述处理。客户通过中转站 API 提交的输入同样应遵守上述脱敏与最小化原则。Mindai 的技术指南与平台控制在设计上对标下列框架: - ISO/IEC 27018:2019——作为 PII 处理者的公有云中 PII 保护控制; - GDPR 第 25 条——设计与默认数据保护; - GDPR 第 32 条——处理安全,包括假名化与加密; - 《中华人民共和国个人信息保护法》第 51 条——个人信息处理者采取去标识化、加密等技术措施的义务。 ### **10.3 模型权重保护** 训练产出(即客户训练任务所产生的模型权重)作为客户保密信息对待。模型权重存储于租户级加密存储中,访问权限限定于客户租户,不向其他客户、除严格限定支持场景外的 Mindai 员工或第三方提供,但经客户书面指示者(如客户书面指示的导出或下载)除外。 ### **10.4 不将客户数据用于 Mindai 自有模型训练** Mindai 不将客户数据、训练数据、提示词或训练产出用于训练、微调、基准测试或评估任何为 Mindai 自身目的运行的模型,或任何对第三方开放的模型。该承诺同样体现在 MinT 服务条款与 DPA 中。 ### **10.5 输出完整性控制** 就 MinT 训练平台,其输出为模型参数,而非面向终端用户的内容;因此,适用于生成式内容服务的内容审核控制(例如终端用户内容层面的输出分类器或提示注入防护)不属于训练平台所提供的功能。客户如后续将训练产出部署用于生成面向终端用户的内容,应自行在其下游系统中部署适当的安全、内容审核与合规控制。就 MinT 中转站,Mindai 在 API 网关层对模型输入实施安全校验、对模型输出实施与所调用模型能力相匹配的护栏(详见第 10.7 条);但中转站输出的最终内容合规责任仍由客户承担,客户应自行评估中转站输出是否满足其部署地适用的内容审核与生成式 AI 服务合规要求。 ### **10.6 下游生成式 AI 合规的部署支持协助** Mindai 理解,客户将训练产出部署为下游生成式 AI 服务后,可能需在其部署地遵守备案、安全评估、算法备案、内容审核等监管义务——举例包括《生成式人工智能服务管理暂行办法》(AIGC 暂行办法)、《互联网信息服务深度合成管理规定》、《互联网信息服务算法推荐管理规定》,以及新加坡、欧盟等其他司法辖区的同类制度。就训练平台,Mindai 提供模型训练基础设施与算力资源,其产出为模型参数,Mindai 本身不直接面向公众提供生成式 AI 内容或算法推荐服务,因而就训练平台层面不构成《生成式人工智能服务管理暂行办法》项下的生成式人工智能服务提供者或《互联网信息服务算法推荐管理规定》项下的算法推荐服务提供者;就中转站,Mindai 通过 API 向客户开放 Macaron 系列模型及第三方开源模型的调用能力,模型能力供客户在其自身业务场景中使用,Mindai 通常构成上述法规项下的技术支持者(技术提供方),而非直接面向公众的服务提供者,具体角色定性视客户的实际应用场景、模型使用方式与监管口径而定(参见《服务条款》第 2.1 条);但 Mindai 将向客户提供商业上合理的部署支持协助,协助客户履行该等下游合规义务,包括: - 提供标准化的训练环境信息(例如训练基础设施说明、隔离架构说明、以及第四条所载安全认证证据),供客户纳入其安全自评估材料; - 提供审计日志摘录、训练任务元数据和数据血缘报告,以支持客户监管备案所需的证据链; - 在不损害适用保密义务与其他客户利益的前提下,就客户已部署服务所依托的训练基础设施,回复主管监管机关提出的合理书面询问; - 在 Mindai 已发布的范围内,提供安全评估支持包模板(包括常见算法备案问卷的答复模板、与训练环境相关的模型卡节选,以及本白皮书所载的安全措施说明)。 第 10.6 条下的协助以 MinT 训练平台基础设施相关信息及 Mindai 运营的中转站服务层面信息为限,包括:(a)训练平台侧的训练数据处理、算力资源与安全措施说明;及(b)中转站侧的 Macaron 系列模型基本信息、第三方开源模型部署与合规状况、API 层面的安全与内容审核措施说明。客户所部署服务本身下游合规义务的实质遵守——包括内容审核、用户保护、强制性备案与安全自评估——仍由客户承担。对于特殊部署支持协助(例如客户请求 Mindai 出具定制审计函或出席现场监管会议)的费用分担,除相关订单文件另有约定外,双方应本着诚信原则协商确定。 ### **10.7 中转站的架构与安全控制** 中转站作为 MinT 的 API 服务组成部分,在架构与安全控制上采用下列措施: - API 网关与身份认证——中转站所有 API 调用均需通过 API Key 认证,API Key 与客户账户绑定,Mindai 强制执行 API Key 的最小权限、有效期管理与轮换机制;对疑似泄露的 API Key,Mindai 有权立即吊销并通知客户; - 速率限制与滥用防护——中转站部署基于账户、API Key 和 IP 的多维度速率限制,防止单一账户对基础设施造成过度负载;Mindai 部署自动化滥用检测机制识别 CSAM、恶意软件生成、大规模欺诈生成等违反 AUP 的调用模式; - 输入内容安全——中转站在调用底层模型前对输入进行必要的合规检查(包括但不限于关键词过滤、敏感话题识别),对明显违反 AUP 或适用法律的输入予以拒绝; - 输出安全护栏——中转站在返回输出前部署内容安全护栏,识别并拦截明显违法或有害内容;Mindai 保留在下游监管要求触发时对特定输出加装水印、标识或过滤规则的技术能力; - 第三方开源模型隔离部署——Mindai 部署的第三方开源模型(如 DeepSeek、GLM 等)在容器化或专用推理集群中运行,与 Macaron 系列模型、客户训练数据在部署层面相互隔离,避免模型间数据交叉污染; - 调用日志与审计——中转站对每次 API 调用保留必要的元数据(时间戳、API Key 标识、模型标识、Token 消耗),供计费、滥用检测与合规审计使用,具体保留期限见《MinT 数据处理协议》第 3.6 条。 ## **第十一条 运营安全** ### **11.1 人员安全** 所有可访问客户数据的 Mindai 员工(含外包人员),均须:(a)在适用法律允许范围内通过背景调查;(b)签署书面保密与不披露承诺;(c)接受入职与定期安全意识培训,内容涵盖钓鱼、社会工程与安全编码;(d)按角色授予访问权限,并在岗位变更或离职时及时回收。 ### **11.2 子处理方管理** Mindai 仅使用有限数量的子处理方(包括云计算、存储、网络、支付、通信与支持工具等供应商)。子处理方在启用前及启用后定期接受风险评估,并通过书面合同承担如下义务:(a)仅按 Mindai 书面指示处理客户数据;(b)维持保密;(c)实施适当的技术与组织性安全措施;(d)在客户权利请求、安全事件与审计中给予协助;(e)遵守相关的跨境数据传输要求。 当前子处理方清单维护于子处理方页面,并按 DPA 约定更新。重大变更将提前通知企业版客户。 ### **11.3 变更管理** 对生产系统的变更遵循书面的变更管理流程,包括同行评审、预发测试、灰度发布、自动化部署控制及回滚能力。紧急变更按快速通道审批,并事后补齐书面记录。 ### **11.4 端点与工作站安全** Mindai 员工仅可从受管工作站访问生产系统,该等工作站须启用全盘加密、端点检测与响应(EDR)工具、补丁管理及移动设备管理。不允许个人设备访问生产系统。 ## **第十二条 审计日志** MinT 在身份、API、数据访问与管理操作等各层面记录审计事件。审计日志包括用户标识、租户标识、时间戳、来源信息、操作与资源。 企业版客户可通过 MinT 控制台或导出 API 下载其所在租户的审计日志。审计日志的延长保留周期及与客户自有 SIEM 系统的对接作为付费功能提供。审计日志默认保留期及付费层参数,以相关订单文件所载为准。 审计日志具备抗篡改属性:Mindai 对审计日志实施适当的存储、访问控制与完整性控制,防止未经授权的修改。 ## **第十三条 业务连续性与容灾** Mindai 建立并维护业务连续性与容灾(BC/DR)体系,用以在影响基础设施、人员或场所的事件中保障 MinT 平台层及客户数据的可用性与完整性。 生产数据在部署区域内的多个可用区之间进行复制,并按照符合服务恢复设计目标的节奏进行备份。MinT 平台层适用的恢复时间目标(RTO)与恢复点目标(RPO)由 Mindai 根据服务关键性确定并随服务规模扩大持续复核;若有具体数值承诺,以适用的订单文件或企业协议所载为准。 业务连续性与容灾计划定期进行演练。演练中的重大发现纳入 Mindai 持续改进流程,跟踪闭环。 ## **第十四条 事件响应** Mindai 运行书面的事件响应流程,涵盖检测、定级、遏制、根除、恢复与事后复盘。安全职能通过端点检测、网络流量分析、云安全态势监控、应用日志及威胁情报等多源信号进行安全事件监测。 一旦确认发生影响或合理可能影响客户数据的安全事件,Mindai 将在合理可行情况下尽快通知受影响的企业版客户,并在任何情况下不迟于确认后七十二(72)小时;该时限与 GDPR 第 33 条、《中华人民共和国个人信息保护法》第 57 条,以及 PDPA 及其他适用法律下的同等要求保持一致。 在调查进展及已知信息范围内,通知将包括:(a)事件性质;(b)受影响数据的种类及大致数量;(c)可能的后果;(d)已采取或拟采取的应对与缓解措施;(e)进一步信息的联络点。Mindai 将随调查进展持续更新信息。 事件结束后,Mindai 进行根因分析并跟踪整改闭环。经验教训纳入安全体系更新,包括控制措施、应急预案与培训内容。 ## **第十五条 隐私合规** Mindai 对个人数据的处理主要适用 MinT 隐私政策(就 Mindai 作为控制者所处理的数据,如账号与计费数据)及 DPA(就客户数据中包含的个人数据,Mindai 作为处理者)。 Mindai 的隐私体系在设计上旨在满足适用数据保护法律的要求,包括《新加坡个人数据保护法》(PDPA)、《中华人民共和国个人信息保护法》(PIPL)、欧盟《通用数据保护条例》(GDPR)及(在适用时)英国 GDPR,以及(在适用时)《加州消费者隐私法》(CCPA/CPRA),涵盖合法依据、数据主体权利、处理记录、数据保护影响评估、跨境传输保障等方面。 MinT 隐私政策第九条规定的数据驻留立场在本白皮书第 6.3 节予以概述。 ## **第十六条 部署选项** ### **16.1 云端部署** 在云端部署模式下,客户工作负载运行于 Mindai 运营的多租户 MinT 平台层之上,托管于 Mindai 所使用的、具备相应资质的云服务提供方的中国大陆境内节点。第 6.2 节的多租户隔离控制、第六条的数据保护控制,以及本白皮书所载其他控制,均予适用。 ### **16.2 私有化/本地部署** MinT 训练平台支持私有化部署,包括在客户自有云账户及客户本地基础设施上部署。私有化部署系 MinT 训练平台的一款产品形态,并作为面向具有较高数据驻留、监管或运营控制要求的企业版客户的主要产品形态定位。MinT 中转站按 API 服务方式提供,本 v2.0 阶段不支持私有化部署。 在私有化部署模式下: - MinT 训练平台部署在客户自有基础设施之内,配置、补丁与运维节奏由 Mindai 与客户依据相关私有化部署合作条款协同进行; - 客户数据在客户管理控制的基础设施上存储与处理,数据驻留由客户决定; - 可在合作框架下进行定制化集成,包括企业 SSO(SAML 2.0、OIDC、钉钉、飞书、企业微信、Microsoft Entra ID、Okta 及同类身份提供方)、客户自主管理的密钥管理系统、客户运营的日志管道,以及与客户既有监控和工单系统的对接; - 客户负责部署环境的物理安全、网络安全与人员安全,包括宿主操作系统、虚拟化层及周边基础设施控制。 ## **第十七条 客户侧安全责任** 为使 MinT 在客户所在组织内安全运行,客户负责(包括但不限于)以下事项: - 管理用户账号,强制使用强密码并启用 MFA,在人员变动时及时注销账号; - 保护 API 密钥及其他程序化凭证,以最小权限进行范围限定,并定期轮换; - 对客户数据进行分类,并依据适用法律及客户自身数据保护政策确定相应处理方式(包括是否上传敏感个人信息); - 在合理可行的情况下,于上传前对训练数据进行脱敏与最小化处理; - 在使用 MinT 生成的训练产出的下游系统中部署适当的安全、内容审核与合规控制; - 遵守 AUP、服务条款与适用法律; - 在私有化部署情形下,保障部署环境安全并按 Mindai 提供的加固与运维指引运行平台。 ## **第十八条 路线图** 下列事项反映 Mindai 当前的安全与合规路线图。下文所列目标时间窗为估计,可能发生变化。客户在实际合作之时应向 Mindai 确认届时实际状态。 - ISO/IEC 27001:2022 认证——目标时间窗:[待定]; - SOC 2 Type II 报告(安全、可用性、保密性)——目标时间窗:[待定]; - ISO/IEC 27701:2019 认证(隐私)——目标时间窗:[待定]; - 面向云端部署的标准化 SSO(SAML 2.0、OIDC 及主要企业身份提供方)——目标时间窗:[待定]; - 面向云端部署的客户自主管理密钥(BYOK / CMEK)——目标时间窗:[待定]。 ## **第十九条 联系方式** 如就安全咨询、漏洞报告及本白皮书相关事项与我方联系: - 服务提供方:MINDAI PTE. LTD.(一家依据新加坡共和国法律注册成立的私人有限公司),注册办事处:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 邮箱(安全咨询、漏洞报告及一般咨询):contact@mindlab.ltd ## **生效日期与版本** 本白皮书自封面所载生效日期起生效。Mindai 可不时发布更新版本的白皮书,以反映其安全体系、产品架构或适用法律的变化。本白皮书可能发布本地化版本;在英文版与本地化版本之间发生不一致时,以英文版为准,但适用当地法律明确另有要求者除外。 *—— 白皮书正文至此结束 ——* # MinT 服务水平协议 (/zh/enterprise/support/sla) # **MinT 服务水平协议** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 服务水平协议》(以下简称“本SLA”)规定 Mindai 就 MinT(Mind Lab Toolkit)所作的服务可用性与支持承诺。本SLA构成《MinT 服务条款》不可分割的组成部分。本SLA中未另行定义的术语,以《MinT 服务条款》中的定义为准。** **【适用范围】本SLA仅适用于 MinT 企业版(“企业版客户”)的客户,且仅就其已支付服务费之“覆盖服务”有效。本SLA不适用于 MinT 社区版(免费用户)、Beta 或预览功能、任何免费试用或评估安排——上述均按“尽合理努力”提供,不附带任何服务水平承诺。** ## **第一条 适用范围与资格** Mindai 以两种版本提供 MinT: - 社区版——免费提供,仅供评估、学习及非生产用途使用。社区版按“现状”提供,不附带任何服务水平承诺、服务积分或保证支持响应时间。 - 企业版——依据已签订的订单或订阅协议向付费客户提供。本SLA仅适用于企业版。 本SLA仅覆盖第二条所定义之“覆盖服务”中的“Mindai 平台层”,不延伸至 IaaS 层、客户侧系统,或任何明确排除在 SLA 覆盖范围之外的功能。 ## **第二条 定义** - “覆盖服务”:指企业版客户已就其支付服务费的生产级 MinT 服务,包括:(a)由 Mindai 运营的训练平台控制面 API、控制台、任务编排服务、身份与访问管理服务及元数据服务;及(b)由 Mindai 运营的中转站 API 网关(含 Macaron 系列模型及第三方开源模型的 API 调用层、限流与鉴权层)(统称“Mindai 平台层”)。 - “IaaS 层”:指 MinT(含训练平台与中转站)所依赖、由第三方云、GPU 或基础设施服务商(“子处理方”)提供的底层算力、GPU、存储、网络及其他基础设施服务。 - “服务费”:指客户就发生 SLA 失败之自然月内的覆盖服务实际支付的经常性服务费用,不含一次性收费、专业服务费、转嫁的 IaaS 费用、税款及任何已抵扣的积分。 - “月度可用性百分比”:按自然月计算,公式为:((当月总分钟数 − 停机时间 − 排除时间)÷(当月总分钟数 − 排除时间))× 100%。 - “停机时间”:指因 Mindai 合理可控之原因导致覆盖服务的 Mindai 平台层对客户不可用的任何时段,以 Mindai 监控系统为准。短暂、瞬时且不影响整体可用性的错误不计入停机时间。 - “排除时间”:含义见第七条。 - “服务积分”:指以原发票币种计价、可按本SLA规定抵扣覆盖服务后续发票的积分。 - “严重程度”或“P级”:含义见第五条。 - “标准支持时段”:指新加坡时间(SGT,UTC+8)周一至周五 09:00 至 18:00,新加坡共和国法定公共假日除外。 ## **第三条 服务可用性承诺** Mindai 将尽商业上合理努力使覆盖服务中的 Mindai 平台层达到不低于 99.5% 的月度可用性百分比(“可用性目标”),以自然月为度量周期。 可用性以 Mindai 监控系统在控制面 API 与编排端点处的测量数据为准。当 Mindai 监控数据与客户监控数据存在冲突时,以 Mindai 监控数据为准;明显错误情形除外。 就中转站服务,Mindai 沿用本条项下与训练平台相同的可用性目标与承诺:即企业版客户所访问的中转站 API 网关层同样以 99.5% 的月度可用性百分比为目标运行。中转站的可用性度量、服务积分赔偿与排除事项参照本 SLA 相应条款执行;如中转站服务未来采用不同的可用性目标或独立度量口径,将在补充协议或后续版本中另行约定。 如 Mindai 在任一自然月未达成可用性目标,客户在符合第七条排除事项及第八条索赔流程的前提下,可依第四条获得服务积分。 ## **第四条 服务积分** 经有效申报并核准后,服务积分按下表所列百分比,以未达成可用性目标当月受影响覆盖服务的服务费为基数计算: | **月度可用性百分比** | **服务积分(占服务费比例)** | | --- | --- | | 低于 99.5%,但不低于 99.0% | 5% | | 低于 99.0%,但不低于 95.0% | 10% | | 低于 95.0% | 20%(封顶) | 无论事件次数或累计停机时间多少,任一自然月内向客户支付的服务积分总额在任何情况下均不超过当月服务费的百分之二十(20%)。 服务积分不可退现、不可转让,仅可抵扣覆盖服务的后续发票。如出现下列情形,服务积分作废:(i)在积分抵扣前,客户账户因可归责于客户的事由被终止;或(ii)客户未按时支付无争议的应付款项。 ## **第五条 支持响应时间** Mindai 将按下表所列响应目标,于标准支持时段内对企业版客户提交的支持请求作出响应。 | **严重程度** | **定义** | **初次响应目标** | | --- | --- | --- | | P1(严重) | 覆盖服务的生产环境完全无法访问或完全失效,且不存在商业上合理的替代方案。 | 4 个标准支持小时内 | | P2(高) | 覆盖服务的主要功能受到实质性损害或显著降级;可能存在替代方案,但不适合长期使用。 | 1 个标准支持工作日内 | | P3(中) | 次要功能受损;存在合理的替代方案;不对生产使用造成实质性影响。 | 3 个标准支持工作日内 | | P4(低) | 一般性问题、配置咨询、文档请求或功能建议。 | 5 个标准支持工作日内 | “初次响应”指 Mindai 支持工程师对支持请求作出确认、给出初步评估、并在可能时提供初步解决路径。初次响应不等同于问题最终解决。 在标准支持时段之外提交的支持请求,就响应时间计算而言,视为在下一个标准支持工作日开始时收到。 严重程度由客户在提交支持请求时初步确定,并由 Mindai 本着善意予以确认。如 Mindai 合理认为初步分级不当,将与客户协商并可附理由重新分级。 延伸支持安排(含 7×24 覆盖、加速 P1 响应、专属技术客户经理、指定升级路径或现场支持)作为独立加购的附加服务,依据另行签署的延伸支持订单提供。无该订单的,按本条规定的标准方式提供支持。 ## **第六条 维护窗口** Mindai 将不时对覆盖服务进行计划维护,以升级、修补或改进服务。Mindai 将尽合理努力安排维护,以最小化对客户的影响。 对于计划维护,Mindai 将通过控制台或向客户指定的管理员联系人发送电子邮件,至少提前七(7)天通知企业版客户,并说明维护的预计起始时间、持续时长及范围。 Mindai 亦可在合理必要时进行紧急维护,以应对安全漏洞、完整性威胁或对服务造成紧迫影响的事件。对于紧急维护,Mindai 将在情况允许范围内尽可能提前通知。 计划维护与紧急维护期间不计入停机时间,构成排除时间的一部分。 ## **第七条 排除事项** “排除时间”指因下列任一原因导致覆盖服务不可用、降级或中断的任何时段,该等时段不计入月度可用性百分比的停机时间: - (a)IaaS 层事件——任何由子处理方运营的底层算力、GPU、存储、网络或其他基础设施服务发生的中断、降级、容量限制、延迟或其他不可用情形。Mindai 不对 IaaS 层的可用性作出保证,亦不对任何由 IaaS 层引起的不可用情形承担本SLA下的责任; - (b)不可抗力——任何超出 Mindai 合理控制的事件,包括但不限于天灾、自然灾害、火灾、洪水、地震、流行病或大流行病、战争、内乱、恐怖主义、破坏行为、罢工、劳资纠纷、政府命令、禁运、制裁、跨境数据传输限制,或异常规模的拒绝服务攻击; - (c)第六条所述之计划维护与紧急维护; - (d)客户原因事项——含客户或客户人员的任何作为、不作为、配置错误或滥用;客户提供的训练数据、自定义代码或容器镜像存在缺陷;超出任何配额、速率限制、合理使用阈值或容量预留;或未遵守 Mindai 公布的技术要求。为免疑义,Mindai 仅提供训练执行基础设施,不对客户自行设计的训练配方、超参数、奖励函数、损失函数或模型架构的实质质量、正确性、收敛性或适用性进行审查、验证或担保; - (e)客户侧系统——因客户自有设备、软件、网络或非由 Mindai 运营的第三方服务引起的问题; - (f)Mindai 依据《服务条款》或《可接受使用政策》、或依据有权机关合法命令对覆盖服务(全部或部分)的暂停或终止; - (g)明确标注为 Beta、Alpha、预览、实验性或试用之功能(统称“预发布功能”); - (h)由客户主动发起的对覆盖服务之配置、集成或环境变更所引起的中断; - (i)社区版及任何其他免费层服务;以及 - (j)相关订单、工作说明书或产品文档中明确排除在 SLA 覆盖范围之外的任何其他事件。 ## **第八条 服务积分申报流程** 如欲获得服务积分,客户应于 Mindai 未达成可用性目标之自然月结束后三十(30)个自然日内,向 contact@mindlab.ltd 提交书面索赔。逾期提交的索赔不予受理。 每份索赔应至少包含: - (a)客户账户标识及受影响的覆盖服务; - (b)索赔所涉自然月; - (c)客户对月度可用性百分比的计算及所申请的服务积分金额; - (d)所依据的每次停机事件的日期、时间与持续时长,及可提供的佐证材料(如错误信息、监控截图、支持工单编号);以及 - (e)确认据客户所知,相关事件不属于排除时间之任何类别。 Mindai 将对照其自身的监控记录核验每份索赔,并在收到完整索赔后三十(30)个自然日内作出处理决定。经核准的服务积分将抵扣 Mindai 后续向客户开具的下一张覆盖服务正式发票。不予退现。 ## **第九条 唯一与排他救济** 除《服务条款》另有明确规定外,第四条规定的服务积分系客户就 Mindai 未达成本SLA项下可用性目标或支持响应目标之唯一与排他救济,亦构成 Mindai 就此类未达成情形之唯一与排他责任。本第九条不限制双方在《服务条款》项下因重大违约可主张的权利或救济,亦不限制依适用法律不可排除之权利或救济。 ## **第十条 本SLA的更新** Mindai 可不时更新本SLA。任何对现有企业版客户实质性减损 Mindai 承诺水平的更新,自向该等企业版客户发出通知之日起至少满三十(30)日后方可生效,且仅对生效日之后期间适用。在更新生效日之后客户继续使用覆盖服务,即视为接受更新后的SLA。 ## **第十一条 联系方式** 本SLA项下的全部通知、支持请求与服务积分索赔,请通过下列方式联系: - 服务提供方:MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司),注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 - 电子邮箱(支持请求、SLA索赔及通用咨询):contact@mindlab.ltd ## **生效日期与版本** 本SLA自封面所载生效日期起生效。Mindai 可发布本SLA的多语言本地化版本。英文版与本地化译本之间存在不一致的,除适用本地法律明确要求外,以英文版为准。 *—— 本SLA正文结束 ——* # MinT 子处理方清单 (/zh/enterprise/support/subprocessors) # **MinT 子处理方清单** *生效日期:2026 年 7 月 【】 日 · v2.0* ## **第一条 目的** 本子处理方清单(下称“本清单”)列明 MINDAI PTE. LTD.(下称“Mindai”)为提供 MinT 服务而委托、代客户处理个人信息的第三方。本清单依《MinT 数据处理协议》(下称“DPA”)、《MinT 隐私政策》及《MinT 安全与合规白皮书》引用,并构成上述文件的组成部分。 ## **第二条 维护方式** Mindai 持续维护本清单。Mindai 新增或替换子处理方的,应依 DPA 第六条更新本清单,并通过 MinT 控制台、客户门户或电子邮件,于变更生效前至少三十(30)日向客户发出通知;如出于安全、法律或运营紧急需要缩短通知期限的,应尽快告知。 ## **第三条 客户权利** 客户可按 DPA 第 6.4 款的约定基于合理数据保护理由对新子处理方提出异议。现行本清单可通过 MinT 客户门户查阅,或交由 contact@mindlab.ltd 索取。 ## **第五条 变更记录** • v2.0(2026 年 7 月 【】 日):随 MinT 对外发布同步首次发布。 ## **第六条 联系方式** 有关本清单的问题,请联系:contact@mindlab.ltd。 # MinT 服务条款 (/zh/enterprise/support/terms) # **MinT 服务条款** Mind Lab Toolkit *服务提供方:MINDAI PTE. LTD.* *版本号:v2.0* *发布日期:2026年7月【】日* *生效日期:2026年【】月【】日* **【请在使用本服务前仔细阅读】本《MinT 服务条款》(以下简称“本条款”或“本协议”)构成您(个人用户或企业法人主体,以下简称“您”或“客户”)与 MINDAI PTE. LTD.(一家在新加坡共和国依法设立的私人有限公司,注册地址为 152 Beach Road, #11-05, Gateway East, Singapore 189721,以下简称“Mindai”、“我们”或“服务提供方”)之间具有法律约束力的协议。通过点击“我同意”、注册账户、访问或使用 MinT 任何功能,即视为您已完整阅读、理解并同意接受本条款的全部内容。如您不同意本条款任何条款,请勿使用 MinT。** **【特别提示】本条款中以加粗形式标注的条款涉及您的重大权利义务、责任限制、争议解决与管辖等关键事项,请您格外关注。如您系企业用户,您的代表应当具备相应授权代表企业接受本条款。** ## **第一条 定义** 除本条款另有明确约定外,以下术语在本条款中具有以下含义: - “MinT” 或 “本服务”:指 Mind Lab Toolkit,一款由 Mindai 提供的人工智能平台,包括两个独立的组成部分:(a)训练平台——面向开发者与企业客户的强化学习(RL)模型训练基础设施工具与参数平台,产出物为模型参数(包括模型权重、检查点、LoRA 适配器、评估报告等);(b)中转站——通过 API 接口方式向您提供 Macaron 系列模型及第三方开源模型(如 DeepSeek、GLM 等)的调用能力。本服务包括其相关网站、API、SDK、控制台与文档。 - “用户” 或 “您” 或 “客户”:指注册、访问或使用 MinT 的个人开发者、研究人员或企业法人主体;如系企业用户,包括其授权使用 MinT 的全体员工与代表。 - “账户”:指您注册 MinT 后获得的,用于访问和使用本服务的唯一凭证。 - “API 密钥”:指 Mindai 签发给您用于以编程方式调用 MinT 接口的认证凭证。 - “客户数据”:指您通过 MinT 上传、提交、生成或处理的所有数据,包括但不限于(a)通过训练平台上传或产生的训练数据集、模型权重、训练任务配置、运行日志与推理输入与输出,及(b)通过中转站 API 提交的输入与由此产生的输出等,但不包括您的账户注册信息。 - “训练数据”:指您为训练或微调模型而上传至 MinT 训练平台的数据集,是“客户数据”的组成部分。 - “训练产出”:指您使用 MinT 训练平台完成训练任务后产出的模型权重、检查点(checkpoint)、适配器(adapter,如 LoRA 权重)、评估报告等成果物。 - “基础模型”:指 MinT 训练平台集成或支持的、由 Mindai 或第三方(如开源社区、其他模型厂商)提供的预训练人工智能模型。 - “订阅计划”:指您所选择的服务订阅形式,因您使用的 MinT 组成部分而不同:(A)训练平台订阅——按算力资源用量或订购规模计费,包括但不限于免费试用版、按用量计费的开发者版、固定费用企业版、私有化部署版及科研合作或研究预览版;(B)中转站订阅——按您所调用的模型类别及调用量计费,包括但不限于 Macaron 系列模型 API 调用(按输入/输出 Token 用量计费)与第三方开源模型 API 调用(按输入/输出 Token 用量计费),以及 Mindai 可能提供的其他形式。各订阅计划的具体功能、支持模型清单、用量上限与价格以 MinT 官方计费页面或您与 Mindai 单独签署的订单为准。 - “服务等级协议” 或 “SLA”:指《MinT 服务等级协议》,规定本服务的可用性承诺和未达标时的服务积分赔偿机制,构成本协议不可分割的一部分。 - “可接受使用政策” 或 “AUP”:指《MinT 可接受使用政策》,规定您使用 MinT 的禁止行为与合规要求,构成本协议不可分割的一部分。 - “隐私政策”:指《MinT 隐私政策》,规定 Mindai 处理您个人信息的方式,构成本协议不可分割的一部分。 - “关联公司”:指直接或间接控制、被控制或与 Mindai 处于共同控制之下的任何实体。 - “测试版功能”:指标注为“Beta”、“实验性”、“预览版”或类似名称的功能、产品或服务。 ## **第二条 服务说明与用户资格** ### **2.1 服务概述** MinT 是一款面向开发者、研究团队和企业客户的人工智能平台,由两个独立的组成部分构成:(A)训练平台——强化学习模型训练基础设施与参数平台,提供包括但不限于:(i)分布式训练任务的算力调度与编排;(ii)LoRA、全量微调等多种训练方法的统一接口;(iii)训练任务的监控、日志与评估;(iv)模型推理与部署辅助工具;(v)相关 API、SDK 与开发者文档。(B)中转站——通过 API 接口方式向您提供:(i)由 Mindai 自主研发的 Macaron 系列模型;(ii)由 Mindai 部署的第三方开源模型(如 DeepSeek、GLM 等)。各组成部分的具体功能、支持模型清单以 MinT 官方网站及产品文档载明者为准。 **【服务性质声明】MinT 由两个独立的服务组成,融合在同一平台品牌下:(a)训练平台——面向开发者与企业客户的强化学习模型训练基础设施工具与参数平台。您可通过训练平台训练、微调、评估您自己的模型;训练完成后由您自行决定模型的部署与使用方式。训练平台的产出物仅为模型参数,不包括任何向公众传播的文本、图片、音频、视频或其他内容。就训练平台,Mindai 提供模型训练基础设施与算力资源,其产出为模型参数,Mindai 本身不直接面向公众提供生成式 AI 内容或算法推荐服务,因而就训练平台层面不构成《生成式人工智能服务管理暂行办法》项下的生成式人工智能服务提供者或《互联网信息服务算法推荐管理规定》项下的算法推荐服务提供者。您使用训练平台训练得到的模型如何对外部署、向何种对象提供何种服务、生成何种内容,由您自行决定,并由您自行承担相应法律责任,包括但不限于在适用司法辖区履行模型备案、算法备案、安全评估、内容审核等监管义务。(b)中转站——Mindai 通过 API 接口方式向您提供以下两类模型的调用能力:(i)Mindai 自有的 Macaron 系列模型;(ii)Mindai 基于开源许可证部署的第三方开源模型。您通过中转站以 API 密钥方式调用上述模型,用于您自身 AI 业务用途。就中转站,Mindai 作为 API 服务提供方,可能构成适用司法辖区项下的服务提供者或服务技术支持者(视具体模型、您的应用场景与监管口径)。您使用中转站输出对外提供服务的,您独立承担作为服务提供者的全部监管义务。** ### **2.2 用户资格** 注册、访问或使用 MinT,您应当符合下列全部条件: - 您系年满 18 周岁或所在司法辖区法定成年年龄(以较高者为准)的自然人,具备完全民事行为能力;或您系依法设立并有效存续的法人或其他组织,其授权代表具有相应权限代表该主体接受本条款; - 您未被列入任何适用经济制裁、出口管制名单(包括但不限于联合国、美国 OFAC、欧盟、新加坡、中华人民共和国的相关名单); - 您所在地未被适用法律或本条款列为禁止访问司法辖区; - 您将遵守注册地、使用地及服务提供地适用的全部法律法规。 ### **2.3 账户注册** 您应当真实、准确、完整地提供注册信息,并在信息发生变更时及时更新。您应当对账户下发生的全部活动承担责任。Mindai 有权要求您完成必要的实名认证或企业资质验证;未完成验证的,Mindai 有权限制您使用部分或全部功能。 ### **2.4 账户安全** 您应当妥善保管您的账户名、密码和 API 密钥。您同意: - 一经发现账户存在未经授权访问或安全事件,立即通知 Mindai; - 对您的账户下发生的所有活动承担责任,无论该活动是否经您授权; - 采取行业通行的安全措施(包括但不限于多因素认证、定期更换密码、API 密钥的最小权限分配)保护您的访问凭证。 ### **2.5 不面向未成年人;儿童安全** **MinT 不面向未成年人、亦不供未成年人使用。MinT 为面向企业与开发者的人工智能平台(含训练平台与中转站两个组成部分),并非消费者产品。若您未满十八(18)周岁(或您所在司法管辖区规定的完全民事行为能力年龄,以较高者为准),您不得注册、访问或使用 MinT。Mindai 不会通过本服务主动收集未成年人的个人信息;如 Mindai 发现在未取得监护人有效同意的情况下收到未成年人个人信息,将不无故迟延地予以删除。** 您进一步陈述与保证,您不会使用 MinT 从事以下行为:(a)训练、微调或评估以生成、传播或以其他方式便利儿童性虐待内容(CSAM)或任何将未成年人色情化、危害未成年人身心健康、剥削未成年人之内容为主要预期用途之模型;(b)训练任何用于诱骗、敲诈、胁迫或以其他方式针对未成年人之模型;或(c)以涉及未成年人的色情化、虐待性或剥削性图像或内容作为训练数据上传。Mindai 有权在不事先通知的情况下暂停或终止相关账户,并有权将疑似 CSAM 相关行为依据适用法律向主管执法机关报告。涉及未成年人之具体禁止性使用,详见 AUP 第 6 条,该等规定以援引方式纳入本协议并构成本协议的一部分。 ## **第三条 订阅、计费与付款** ### **3.1 订阅计划** Mindai 按 MinT 的两个组成部分分别提供订阅计划:(A)训练平台订阅——按算力资源用量或订购规模计费,包括但不限于:(i)免费试用版(带有用量与功能限制);(ii)按用量计费的开发者版;(iii)固定费用的企业版(含定制化服务等级);(iv)私有化部署版(含独立算力资源、独立支持团队);(v)科研合作或研究预览版(按个案授权)。(B)中转站订阅——按您所调用的模型类别及调用量计费,包括但不限于:(i)Macaron 系列模型 API 调用(按输入/输出 Token 用量计费);(ii)第三方开源模型 API 调用(按输入/输出 Token 用量计费);及(iii)Mindai 可能提供的其他形式。各订阅计划的具体功能、支持模型清单、用量上限与价格以 MinT 官方计费页面或您与 Mindai 单独签署的订单为准。 ### **3.2 用量、配额与限速** MinT 服务受到用量配额限制,具体配额随订阅计划不同而异:(A)就训练平台,配额可能包括 GPU 时长、训练任务并发数、存储容量等;(B)就中转站,配额可能包括 API 调用频次、并发请求数、输入/输出 Token 消耗速率等。超出配额的,Mindai 有权采取限速、排队、暂停或按超额单价计费等措施。Mindai 可基于服务质量与防滥用需要合理调整配额,并以适当方式提前通知。 ### **3.3 付款条款** 付费订阅按您所选择的计费周期(按月或按年)扣费。您授权 Mindai 在订阅周期续订日通过您指定的支付方式自动扣款。所有费用均不含适用增值税、消费税、营业税等税费,相关税费由您自行承担。如因汇率、税率变动产生差额,Mindai 可在合理范围内调整。 ### **3.4 退款政策** 付费订阅原则上不予退款。如您在首次购买后十四(14)日内对服务不满意并申请退款,Mindai 可酌情给予全额或部分退款,或服务积分。按用量结算的费用、私有化部署费用、定制化专业服务费用,一经发生不予退款。 ### **3.5 价格调整** Mindai 可对新订阅或续订周期调整价格,调整将提前三十(30)日通过电子邮件、MinT 控制台或官方网站公告等方式通知您。已生效订阅周期内的价格不受影响。如您不接受调整后的价格,可在通知后十四(14)日内终止该订阅,已预付未消耗的部分按比例退还。 ### **3.6 逾期欠款** 如您未在到期日后七(7)日内完成付款,Mindai 有权暂停您的服务访问。恢复服务可能需要您支付全部欠款及合理的滞纳金或催收成本。欠款超过六十(60)日的,Mindai 有权终止您的账户。 ## **第四条 可接受使用** ### **4.1 一般义务** 您同意仅将 MinT 用于合法目的,且不得违反本条款及《MinT 可接受使用政策》(AUP)。AUP 通过引用并入本协议,与本条款具有同等法律效力。 ### **4.2 禁止行为概述** 您不得使用 MinT 从事下列行为(详细清单以 AUP 为准): - (a)训练或微调任何用于违法目的的模型,包括但不限于生成儿童性虐待材料(CSAM)、武器化生物/化学/核/放射性技术、攻击性网络武器、用于大规模监控或政治压迫的人脸识别系统; - (b)训练用于实施欺诈、钓鱼、社会工程或冒充他人身份的模型; - (c)训练用于大规模生成违法、虚假、误导信息或操纵选举的模型; - (d)以未经授权的方式抓取、爬取受版权保护的数据用作训练数据; - (e)规避或篡改 MinT 的安全机制、配额限制、计费机制、内容过滤机制; - (f)对 MinT 进行反向工程、反编译、源代码提取,或试图获取 MinT 内部模型权重、训练算法、调度逻辑等专有信息; - (g)进行未经授权的安全研究、渗透测试、漏洞利用或服务扰动活动; - (h)利用 MinT 进行高频自动化抓取、滥用 API 配额、攻击 MinT 基础设施或其他用户。 - (i)使用中转站输出或以其他方式获取的模型响应,训练、开发或蒸馏与 Macaron 系列模型或 Mindai 其他产品构成竞争关系的人工智能模型; - (j)访问或使用 MinT 服务以构建、开发或提供任何与 Mindai 产品构成竞争关系的产品或服务,或以任何形式转售 MinT 服务; - (k)以自动化或编程方式批量抓取、提取中转站输出内容(本协议明示允许的合理 API 调用除外)。 ### **4.3 执行机制** Mindai 有权基于自动化检测、用户举报或监管要求,对违反本条或 AUP 的行为采取下列措施:(a)首次违规给予警告;(b)多次违规或较严重违规给予服务限速、暂停具体功能;(c)严重违规或拒不整改的,立即暂停或终止账户;(d)涉嫌违法犯罪的,向有权机关报告。 ## **第五条 客户数据与训练数据归属** **【核心承诺】您上传至 MinT 的全部客户数据(包括训练数据、训练产出、推理输入与输出)的所有权、知识产权与控制权完整归您所有。Mindai 不会未经您事先明确授权将客户数据用于 Mindai 自身模型的训练或任何其他商业用途。** ### **5.1 数据所有权** 您对您上传或通过 MinT 处理的全部客户数据享有完整的所有权、知识产权与控制权。本条款不构成您对客户数据任何所有权或知识产权的转让。您对客户数据的合法性、准确性及不侵犯第三方权利承担全部责任。 ### **5.2 处理授权** 您授予 Mindai 一项有限的、非独占的、除非经您同意否则不可转让的、可撤销的全球范围的许可,仅限于:(a)按照您的指示存储、传输、处理客户数据以提供 MinT 服务;(b)出于服务可用性、安全性、合规性需要进行必要的技术处理;(c)按照您的明确指示进行其他处理。未经您事先单独的、明确的同意,Mindai 不会将客户数据用于上述目的之外的任何用途,特别是不会将您的客户数据用于训练 Mindai 自有的或对其他客户提供的模型。 ### **5.3 数据合法性保证** 您声明并保证您上传至 MinT 的训练数据及其他客户数据: - 拥有合法权利来源(自有、获得授权或属于公开可商用数据); - 不侵犯任何第三方的知识产权、隐私权、肖像权或其他合法权益; - 不包含适用法律禁止的违法、违规、有害内容; - 如包含个人信息,已依法获得个人信息主体的有效同意,或具备其他合法处理依据; - 如涉及跨境数据传输,已履行适用的合规义务(包括但不限于新加坡 PDPA、欧盟 GDPR、中国 PIPL 项下的数据出境合规要求)。 ### **5.4 数据保留与删除** 您可随时通过 MinT 控制台删除您的客户数据。账户终止后,Mindai 将在三十(30)日内删除您的客户数据,但下列情形除外:(a)法律法规要求保留的;(b)正在进行的安全事件调查、争议处理需要保留的;(c)经匿名化处理后用于服务统计、安全分析的运行日志。保留期限届满或保留事由消除后,Mindai 将及时删除或匿名化处理。 ### **5.5 数据安全** Mindai 采取符合行业实践的技术措施和组织措施保护客户数据,包括传输加密(TLS 1.2 及以上)、存储加密、访问控制、操作审计、定期安全测试等。具体安全措施详见《MinT 安全与合规白皮书》。 ## **第六条 训练产出与模型权重归属** **【核心承诺】您使用 MinT 训练平台训练得到的全部训练产出(包括模型权重、LoRA 适配器、检查点等)的所有权与知识产权完整归您所有。Mindai 不主张任何权利,不限制您对训练产出的商业化使用。** ### **6.1 训练产出归属** 您使用 MinT 训练平台完成训练任务所产出的全部训练产出,包括但不限于模型权重文件、LoRA 等参数高效微调适配器、检查点、训练日志、评估报告,其所有权与知识产权完整归您所有。您可自由地使用、复制、修改、分发、商业化使用您的训练产出,无需向 Mindai 支付任何额外费用或履行额外许可义务。 ### **6.2 基础模型许可的传递** **请特别注意:如您使用 MinT 训练平台集成的第三方基础模型(包括但不限于开源模型 Llama、Qwen、ChatGLM 等,或商业 API 模型)进行训练,您对训练产出的使用仍受该基础模型原始许可证(License)的约束。MinT 训练平台仅作为训练工具,本协议不能也不会扩大或改变基础模型原始许可证项下您的权利义务。** 您应当在使用任何基础模型前,自行审阅并遵守其原始许可证条款,包括但不限于: - Llama 系列:Meta Llama Community License; - Qwen 系列:Tongyi Qianwen License; - Apache 2.0 / MIT / BSD 等开源许可证项下的署名、复制许可证文本等义务; - 商业 API 模型供应商的服务条款。 ### **6.3 Mindai 对训练产出的最低限度访问** 为提供 MinT 训练平台服务(如训练监控、故障排查、计费核算),Mindai 工作人员可能在严格的访问控制下访问您训练产出的元数据(如文件大小、训练时长、损失曲线等),但不会访问训练产出的实际权重内容,除非:(a)您明确请求技术支持需要 Mindai 协助分析;(b)法律法规或有权机关要求;(c)调查严重的安全事件。 ## **第七条 Mindai 的知识产权** ### **7.1 MinT 平台 IP** MinT 平台、源代码、训练框架、调度算法、用户界面、文档、商标、品牌标识及一切相关知识产权均归 Mindai 或其许可方所有。本条款仅向您授予一项有限的、非独占的、不可转让的、可撤销的许可,使您可在本条款约束下访问和使用 MinT。 ### **7.2 限制** 除本条款明确许可外,您不得: - 反向工程、反编译、反汇编 MinT 平台或试图提取其源代码; - 复制、修改、分发、销售、转售或商业利用 MinT 平台本身; - 移除、修改或遮蔽 MinT 上的任何版权、商标或其他权利声明; - 未经书面许可使用 “MinT”、“Mind Lab”、“Mindai” 等商标或近似标识。 ### **7.3 反馈** 您向 Mindai 提供的关于 MinT 的任何反馈、建议、改进意见,Mindai 可自由使用,无需向您支付任何对价或承担任何义务。但 Mindai 不会以可识别您身份的方式使用上述反馈。 ## **第八条 隐私与个人信息保护** Mindai 处理您个人信息的方式由独立的《MinT 隐私政策》规定,该政策通过引用并入本协议。在符合适用法律前提下,Mindai 收集和处理的个人信息类型主要包括:(a)账户注册信息(姓名、邮箱、手机号、企业信息);(b)服务使用信息(登录日志、API 调用记录、训练任务元数据);(c)支付信息(由第三方支付服务商处理);(d)设备与网络信息(IP 地址、浏览器/设备类型);(e)您主动提交的客户支持信息。 Mindai 遵守新加坡《个人数据保护法》(PDPA)、欧盟《通用数据保护条例》(GDPR)、《中华人民共和国个人信息保护法》(PIPL)等适用法律。您对您的个人信息享有访问、更正、删除、可携带、撤回同意等权利,可通过 contact@mindlab.ltd 行使。 ## **第九条 第三方服务与开源组件** ### **9.1 第三方服务** MinT 可能与第三方服务(如云算力服务商、监控工具、支付服务商、开源模型库)集成。Mindai 已尽合理注意义务选择第三方服务商,但不对第三方服务的可用性、质量、安全性承担责任。您使用 MinT 中集成的第三方服务时,可能同时受该第三方服务条款约束。Mindai 维护的第三方子处理方清单(Subprocessors List)将在 MinT 官方网站公示。 ### **9.2 开源组件** MinT 包含或集成多项开源软件组件,相关组件遵循其各自的开源许可证。完整的开源组件清单及对应许可证文本可在 MinT 文档中查询。 ## **第九条-A 中转站服务** ### **9-A.1 服务定义** Mindai 通过中转站以 API 接口方式向您提供 Macaron 系列模型及第三方开源模型的调用能力。中转站的具体功能范围、支持模型清单、限流规则、计费方式以 MinT 官方文档载明为准。 ### **9-A.2 Macaron 系列模型的知识产权** Macaron 系列模型的模型权重、算法架构及一切相关知识产权由 Mindai 或其许可方全部所有。您通过 API 调用 Macaron 模型的行为仅构成有限的、非排他的、不可再许可的、不可转让的使用许可,仅限于按本协议约定的方式在您的合法业务中使用;您不因调用行为而取得任何模型所有权、蒸馏权、复制权或衍生开发权。 ### **9-A.3 第三方开源模型** 第三方开源模型由 Mindai 基于其开源许可证条款自行部署。您通过中转站调用该等模型的行为受本协议约束;您有义务遵守相关开源许可证项下对下游使用者的合规要求。Mindai 不对第三方开源模型的输出质量、准确性、合规性、非侵权性作出任何明示或默示保证;开源模型上游权利人对模型的授权、可用性、法律地位发生变更的,Mindai 有权相应调整、暂停或终止相关模型在中转站上的可用性。 ### **9-A.4 输入与输出** 您通过中转站提交的输入的所有权归您所有。您保证:(i)您对输入内容享有全部必要权利;(ii)输入内容不违反适用法律、不侵犯任何第三方权益。Mindai 在适用法律允许范围内,将 Mindai 对输出所享有的全部权利、所有权及权益(如有)分配给您,供您在合法业务中使用。您理解并同意:由于生成式人工智能的概率性本质,其他用户可能从同一或相似输入获得相似的输出,Mindai 不就输出的独创性、唯一性作出任何担保;您不得就任何输出对外声称其为人工创作而非人工智能生成。 ### **9-A.5 中转站数据处理** 您通过中转站提交的输入与由此产生的输出由 Mindai 作为受托人依《MinT 数据处理协议》处理。Mindai 承诺不将您的输入或输出用于训练、微调、评估、基准测试或以其他方式开发或改进 Mindai 或任何第三方的人工智能模型,除非您以书面形式事先另行明示、可撤回地表示同意。适用的具体处理规则以 DPA 与《MinT 隐私政策》为准。 ## **第十条 保密** 本协议项下,“保密信息”指一方向另一方披露的、标注为保密或按其性质应当合理理解为保密的非公开信息,包括但不限于商业策略、技术资料、客户数据、定价信息、未公开的产品功能等。接收方应当:(a)以不低于其保护自身保密信息的合理注意程度保护对方保密信息;(b)仅向有合理需要知悉的员工、关联公司、代理或承包商披露,并令其承担同等保密义务;(c)仅出于履行本协议目的使用对方保密信息。 下列信息不构成保密信息:(a)公知信息;(b)独立开发取得;(c)合法第三方来源;(d)依法律法规或有权机关要求披露的(披露方应仅在被要求的最低必要范围内披露,并在法律允许的前提下事先向对方作出合理通知,以便对方寻求保护令或其他适当救济)。 保密义务在本协议终止后继续有效三(3)年;构成商业秘密的信息,保密义务持续至该信息丧失商业秘密属性为止。 ## **第十一条 服务可用性与 SLA** Mindai 将以商业上合理的努力提供持续、稳定的 MinT 服务。对付费订阅用户,Mindai 提供月度可用性承诺,具体承诺等级、可用性计算方法、未达标时的服务积分赔偿等由独立的《MinT 服务等级协议》(SLA)规定。SLA 通过引用并入本协议。 免费试用版用户、研究预览版用户不享受 SLA。下列情形不计入服务不可用:(a)计划内维护(Mindai 将至少提前七十二(72)小时通知);(b)不可抗力;(c)因您违反本条款或 AUP 引起的服务限制或暂停;(d)因您的网络环境、第三方服务故障引起的中断;(e)您选用的私有化部署版本由您自行运维的部分。 ## **第十二条 测试版功能** Mindai 可能向您提供标注为“Beta”、“实验性”、“预览版”或类似名称的测试版功能。测试版功能按“现状”提供,不附带任何明示或默示的保证。Mindai 不承诺:(a)测试版功能将正式发布;(b)维护或支持测试版功能;(c)保留测试版功能产生的数据。Mindai 可随时修改、撤回或终止测试版功能而无需事先通知。 ## **第十三条 免责声明** **在适用法律允许的最大范围内,MinT 服务及其全部输出(包括训练产出)按“现状”和“当前可用”提供,Mindai 不作任何明示或默示的保证,包括但不限于适销性保证、特定用途适用性保证、不侵权保证。** Mindai 特别不保证: - MinT 训练平台训练得到的模型在准确性、性能、收敛性方面达到您的预期; - MinT 服务不会发生中断、错误、漏洞; - 基础模型供应商提供的预训练权重不存在缺陷或安全漏洞; - MinT 适用于您的特定业务场景或商业用途。 您理解并同意:人工智能模型训练具有内在的不确定性、随机性和实验性。您应当自行对训练产出进行充分的测试、验证和安全评估,方可在您的产品或服务中使用。 ## **第十四条 责任限制** **14.1 排除损害。在适用法律允许的最大范围内,无论基于合同、侵权(含过失)、严格责任或其他法律理论,Mindai 对您因使用或无法使用 MinT 而产生的任何间接、偶然、特殊、惩罚性或衍生性损害均不承担责任。前述损害包括但不限于:利润损失、业务损失、合同损失、收入损失、商誉损失、生产损失、预期节约损失、数据损失,以及采购替代品或服务的成本——无论 Mindai 是否事先被告知该等损害可能发生。** **14.2 责任累计上限。在任何情形下,Mindai 对本协议项下全部责任的累计上限不超过您在索赔事件发生前十二(12)个月内为引发索赔的服务向 Mindai 实际支付的服务费金额。** **14.3 累计限额。您就同一或多个事项、以任何形式、由您本人或您的用户提出的所有索赔(无论索赔次数、类型或索赔方)在任何情形下合并计算,共同受第 14.2 条上限约束。** 14.4 例外。上述责任限制不适用于下列情形:(a)Mindai 的故意或重大过失行为;(b)Mindai 违反第七条对您 IP 的明示承诺;(c)Mindai 在第十五条项下的特定赔偿义务;(d)适用法律不允许限制或排除的责任。 ## **第十五条 赔偿** ### **15.1 您对 Mindai 的赔偿** 您同意就下列事项产生的全部第三方索赔、损失、责任、合理诉讼费用,对 Mindai 及其关联公司、员工进行赔偿、抗辩并使其免受损害:(a)您违反本条款或 AUP;(b)您的客户数据违反第五条第3款的合法性保证;(c)您使用 MinT 训练平台训练的模型(包括其后续部署、生成内容)违反法律或侵犯第三方权利;(d)您违反基础模型原始许可证项下的义务。 ### **15.2 Mindai 对企业客户的有限知识产权赔偿** 对于企业版及以上付费订阅客户,如未修改的 MinT 训练平台服务本身(即第 2.1 条所述训练平台部分,不含中转站、Macaron 输出、第三方开源模型及其输出)侵犯第三方知识产权,Mindai 同意:(a)抗辩相关索赔;(b)支付最终判决或和解金额;(c)选择性地:调整服务、为您取得继续使用许可、或终止本协议并按比例退还预付费用。Mindai 此项赔偿义务不适用于:(i)您对 MinT 的修改;(ii)您将 MinT 与未经 Mindai 批准的第三方组件结合使用;(iii)您未按 Mindai 通知及时升级版本;(iv)由中转站输出、或第三方开源模型的调用引起的任何索赔;(v)您的输入内容本身构成侵权来源的;(vi)您应知或明知构成侵权的使用;(vii)您在输出中使用他人商标或以专利实现方式的;(viii)上述任一情形之组合,或本质上并非因未经修改的 MinT 训练平台服务本身固有属性引起的其他索赔。 ## **第十六条 期限与终止** ### **16.1 期限** 本协议自您首次接受之时起生效,持续有效至按本条规定终止之时。 ### **16.2 您终止** 您可随时通过 MinT 控制台关闭账户,账户关闭即终止本协议。 ### **16.3 Mindai 终止** Mindai 可在下列情形终止或暂停本协议或您的账户访问: - 您违反本条款或 AUP,且未在 Mindai 通知后三十(30)日内有效整改; - 您从事违法活动; - 您的账户存在安全风险或被滥用; - 法律法规或监管要求; - 对免费试用版用户,Mindai 可提前三十(30)日通知后无理由终止; - 其他 Mindai 合理认为对本服务的安全性、可用性、Mindai 或其他用户或第三方的合法权益构成重大风险或紧急情形的。 ### **16.4 终止后果** 本协议终止后:(a)您应当立即停止使用 MinT;(b)您可在终止后三十(30)日内导出您的客户数据和训练产出;(c)逾期未导出的,Mindai 将按第五条第4款规则处理;(d)下列条款在本协议终止后继续有效:第一条(定义)、第五条(数据归属)、第六条(训练产出归属)、第七条(IP)、第十条(保密)、第十三至十五条(免责、责任限制、赔偿)、第十七条至第二十一条(一般条款)。 ## **第十七条 出口管制、制裁与人工智能技术管制** ### **17.1 一般合规** 您应当遵守适用的出口管制和经济制裁法律,包括但不限于《新加坡战略物品(管制)法》、美国《出口管理条例》(EAR)及 OFAC 制裁项目、欧盟《两用物项条例》以及《中华人民共和国出口管制法》。MinT 不向下列对象提供:(a)位于受全面制裁的国家或地区(包括但不限于伊朗、朝鲜、叙利亚、古巴、克里米亚地区)的用户;(b)被列入新加坡、美国 OFAC、欧盟、联合国、中华人民共和国商务部等出口管制或制裁名单的个人或实体;(c)将 MinT 用于受管制的核武器、化学武器、生物武器、导弹技术等用途的用户。 ### **17.2 人工智能技术出口管制** **人工智能特别出口管制。您知悉,模型权重、训练算法及相关技术在某些司法管辖区内可能构成受人工智能或两用技术出口管制制度管制的物项。在不限制 17.1 条一般性的前提下,您不得使用 MinT 训练平台训练、微调、出口、再出口、转让或以其他方式提供任何训练产出或基础模型衍生物,违反:(a)美国关于先进计算与 AI 相关技术的管制(包括适用的 EAR 实体清单、外国直接产品规则及最终用途限制);(b)《中华人民共和国出口管制法》及其实施措施对两用物项、技术或服务的管制(包括中国商务部就人工智能技术采取的任何限制措施);或(c)新加坡、欧盟或任何其他适用司法管辖区的 AI 或两用特别出口管制制度。** ### **17.3 下游合规责任** 您对后续转让、部署或将训练产出商业化所需的任何出口许可、登记或政府授权独立承担全部责任,包括因将训练产出整合进面向其他司法管辖区用户提供的产品或服务而可能触发的授权要求。Mindai 仅提供训练基础设施,不由此承担且明确免除代表您获取该等下游出口授权的任何义务。 ## **第十八条 投诉、举报与版权侵权通知** ### **18.1 一般投诉举报** 如您发现其他用户违反本条款或 AUP、侵犯您的合法权益、或 MinT 服务存在违法违规情形,可通过下列方式向 Mindai 投诉举报: - 电子邮箱:contact@mindlab.ltd - 响应时限:Mindai 将在收到投诉后十五(15)个工作日内反馈实质性处理结果;情况复杂的可适当延长,但不超过六十(60)日。 如您对 Mindai 处理结果不满意,可申请由 Mindai 法律负责人复核。您也可向有权监管机关投诉、举报或寻求救济。 ### **18.2 版权及知识产权侵权通知** 如您认为通过 MinT 传播、存储或生成的内容侵犯了您的著作权、商标权或其他知识产权,请通过下列方式向 Mindai 提交书面通知: - 电子邮箱:contact@mindlab.ltd - 邮寄地址:MINDAI PTE. LTD.,152 Beach Road, #11-05, Gateway East, Singapore 189721 - 收件人:General Counsel / Copyright Agent(法务负责人 / 版权代理人) 您的书面通知应当包含下列全部信息,否则 Mindai 可能无法有效处理:(a)有权代表权利人行事之人员的实体签名或电子签名;(b)您声称遭到侵权的具体作品的说明(如为多个作品,可提供代表性作品清单);(c)您声称的侵权材料在 MinT 服务中的具体位置描述,以便 Mindai 定位;(d)您的姓名(或机构名称)、通信地址、电话号码及电子邮件地址;(e)您善意相信争议使用未经权利人、其代理人或法律授权的声明;(f)您声明上述信息准确无误,且在伪证罪或作虚假陈述的法律责任约束下,声明您即为权利人或已获权利人授权代表其行事。 Mindai 收到符合前款要求的通知后,可以(但无义务)删除、禁用或限制访问被指控侵权的内容。Mindai 有权在适当情形下终止重复侵权者的账户。您对通知中信息的真实性承担责任;恶意或不实通知给 Mindai 或他方造成损失的,您应承担相应赔偿责任。 ## **第十九条 争议解决与适用法律** ### **19.1 适用法律** 本协议的订立、效力、履行、解释、争议解决均适用新加坡共和国法律,但不包括其法律冲突规范。 ### **19.2 协商前置** 因本协议产生或与本协议有关的任何争议,双方应当首先通过友好协商解决。协商应当在一方书面通知另一方后三十(30)日内进行。 ### **19.3 仲裁** **协商不成的,争议应当提交新加坡国际仲裁中心(SIAC),按其届时有效的仲裁规则进行仲裁。仲裁地为新加坡,仲裁语言为英语,仲裁员人数为一(1)名(争议金额超过 USD 250,000 的为三(3)名)。仲裁裁决为终局裁决,对双方均有约束力。** ### **19.4 临时救济** 尽管有上述仲裁约定,任何一方可在任何有管辖权的法院申请保全令、禁令或其他临时性救济措施,尤其是在涉及知识产权侵权、保密信息泄露的紧急情形。 ### **19.5 集体诉讼放弃** 在适用法律允许的范围内,您同意以个人身份而非代表任何拟议或实际的集体或代表行动提起索赔。 ### **19.6 强制性消费者保护** 如您所在司法辖区适用的强制性消费者保护法授予您本条所约定之外的额外权利或救济,本条款不排除该等强制性权利。 ## **第二十条 协议修改** Mindai 可不时修改本协议。实质性修改将提前三十(30)日通过电子邮件、MinT 控制台或官方网站公告等方式通知您;非实质性修改(如错别字订正、表述优化)可即时生效。通知期满后您继续使用 MinT 即视为接受修改后的条款;如您不接受修改,您可在通知期内终止本协议,已预付未消耗的服务费按比例退还。 ## **第二十一条 一般条款** ### **21.1 完整协议** 本条款连同《MinT 隐私政策》、《MinT 可接受使用政策》、《MinT 服务等级协议》及您与 Mindai 单独签署的订单或补充协议,构成双方就 MinT 服务事项的完整协议,取代此前的任何口头或书面协议。 ### **21.2 可分割性** 本协议任何条款被认定为无效、违法或不可执行的,不影响其他条款的效力,且应当以最接近原意的有效条款替代。 ### **21.3 不弃权** Mindai 未行使或迟延行使本协议项下任何权利,不构成对该权利的放弃。 ### **21.4 转让** 未经 Mindai 事先书面同意,您不得转让本协议项下任何权利或义务。Mindai 可基于公司重组、并购、资产出售等情形将本协议转让予其关联公司或继受方,无需事先征得您的同意,但应及时通知您。 ### **21.5 通知** Mindai 向您发出的通知可通过下列方式之一:(a)发送至您注册时提供的电子邮箱;(b)在 MinT 控制台或官方网站公示。您向 Mindai 发出的通知应当发送至 contact@mindlab.ltd。 ### **21.6 语言** 本协议同时提供中文版和英文版。如两版存在歧义,对个人用户以您注册时所选语言版本为准;对企业客户以双方在订单中约定的语言为准;如订单未约定,以英文版本为准。 ### **21.7 不可抗力** 因不可抗力(包括但不限于自然灾害、战争、传染病大流行、政府行为、监管命令、关键基础设施故障、网络攻击、第三方开源模型、上游 API 或 Mindai 依赖的第三方服务的中断、终止、授权变更或不可用)导致 Mindai 不能履行或迟延履行本协议的,Mindai 不承担违约责任。受影响方应当及时通知对方并采取合理措施减损。不可抗力事件持续超过六十(60)日且实质影响本协议目的实现的,任何一方均可书面通知另一方终止本协议且不承担违约责任。 ### **21.8 独立缔约方** 双方为独立缔约方,本协议不构成代理、合伙、合资或雇佣关系。 ### **21.9 第三方受益人** 除本协议明示规定外,本协议不创设任何第三方受益人权利。 ## **第二十二条 联系方式** 如您对本协议有任何疑问、意见、投诉或建议,可通过下列方式联系 Mindai: - 服务提供方:MINDAI PTE. LTD. - 通用联系邮箱:contact@mindlab.ltd - 法律事务联系邮箱:contact@mindlab.ltd - 数据保护负责人邮箱:contact@mindlab.ltd - 注册地址:152 Beach Road, #11-05, Gateway East, Singapore 189721 ## **接受声明** □ 我已完整阅读、理解并同意接受本《MinT 服务条款》全部条款。我特别注意到:第十三条免责声明、第十四条责任限制、第十九条争议解决条款。 □ 我已年满 18 周岁,具备完全民事行为能力,可独立签署本协议;或我具有充分授权代表企业签署本协议。 □ 我同意《MinT 隐私政策》、《MinT 可接受使用政策》、《MinT 服务等级协议》一并构成本协议组成部分。 *—— 本协议正文结束 ——* # Completers (/zh/community/customize/concepts/completers) import { Callout } from 'fumadocs-ui/components/callout'; # Completers Completer 在 sampling client 之上提供两层抽象。`TokenCompleter` 操作 token ID 和原始 `ModelInput` 对象 —— 给在 token 级别上跑的 RL 循环用。`MessageCompleter` 操作带 role 和 content 的 message 字典 —— 给 evaluator、LLM-as-judge 模式、聊天应用用。 ## Concept Sampling client 返回的是原始 token ID。大部分训练和评估流程都需要更上层的抽象: - **TokenCompleter** — 输入:`ModelInput`(token)。输出:`TokensWithLogprobs`(token + logprob)。用在 RL rollout、在线 reward 收集、token 级分析里。 - **MessageCompleter** — 输入:`list[Message]`(role + content)。输出:`Message`(结构化回复)。用在 evaluator、LLM judge、多轮交互、生产推理里。 两类 completer 都会处理: - **Stop token** — 触到 stop sequence 自动停止生成。 - **采样参数** — temperature、top-p、max-tokens 等标准 LLM 采样旋钮。 - **Logprob** — RL 和 importance weighting 时,可以连同 token 一起拿到 logprob。 ## Pattern ```python import mint from mint.completers import TinkerTokenCompleter, TinkerMessageCompleter from mint.renderers import get_renderer service_client = mint.ServiceClient() sampling_client = service_client.create_sampling_client(base_model="Qwen/Qwen3-0.6B") tokenizer = sampling_client.get_tokenizer() renderer = get_renderer("qwen3", tokenizer) # 示例 1:TokenCompleter 跑 RL rollout token_completer = TinkerTokenCompleter(sampling_client=sampling_client) prompt_ids = tokenizer.encode("法国的首都是") prompt = mint.types.ModelInput.from_ints(prompt_ids) sampling_params = mint.types.SamplingParams( max_tokens=16, temperature=0.7, stop=renderer.get_stop_sequences(), ) token_result = token_completer.complete( prompt=prompt, sampling_params=sampling_params, ) print(f"Tokens: {token_result.tokens}") print(f"Logprobs: {token_result.logprobs}") # 示例 2:MessageCompleter 用于评估 message_completer = TinkerMessageCompleter( sampling_client=sampling_client, renderer=renderer, ) messages = [ {"role": "system", "content": "你是一名数学辅导老师。"}, {"role": "user", "content": "7 * 8 是多少?"}, ] message_result = message_completer.complete( messages=messages, sampling_params=mint.types.SamplingParams(max_tokens=32, temperature=0.0), ) print(f"Response: {message_result}") # {"role": "assistant", "content": "..."} ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/concepts/completers.py ## API Surface | 类 | 输入 | 输出 | 用途 | |----|------|------|------| | `TinkerTokenCompleter` | `ModelInput`(token) | `TokensWithLogprobs` | RL 循环、token 级分析 | | `TinkerMessageCompleter` | `list[Message]`(role / content) | `Message`(role / content) | 评估、LLM-as-judge、聊天 | **通用参数:** - `sampling_client` — 底层 `SamplingClient` 实例。 - `renderer`(仅 MessageCompleter)— 处理 message → token 和 token → message 的转换。 - `sampling_params` — `SamplingParams(max_tokens, temperature, top_p, stop, ...)`。 **返回类型:** - `TokensWithLogprobs` — namedtuple:`(tokens: list[int], logprobs: list[float])`。 - `Message` — 字典:`{"role": str, "content": str}`。 ## Caveats & Pitfalls - **Stop sequence**:每次都传 `stop=renderer.get_stop_sequences()`,防止 model 越界生成。缺 stop token 时 model 可能会写过预期的 message 边界。 - **MessageCompleter 必须带 renderer**:没传 renderer 的 `MessageCompleter` 在第一次 `.complete()` 时就会失败。初始化时务必用对应 model 家族的 renderer。 - **Logprob 的开销**:请求 logprob 会带一点算力开销。大规模 RL 里可以考虑批量 complete 或只在重要 trajectory 上取 logprob。 - **异步变体**:用 `complete_async()` 做并发 complete。调 `.result()` 之前先收齐 future,吞吐才能拉满。 - **Sampler 失同步**:保存 + 重载 model weights 之后,要重新建 `SamplingClient` 和 `Completer`。旧 completer 不会报错,但仍然在用旧 weights 采样。 # Evaluations (/zh/community/customize/concepts/evaluations) import { Callout } from 'fumadocs-ui/components/callout'; # Evaluations Evaluation 衡量训练好的 model 在 held-out 数据上的表现。MinT 支持三种评估模式:benchmark 指标(exact match、BLEU、自定义函数)、在测试集上做采样补全、用单独的 evaluator model 做 LLM-as-judge 打分。 ## Concept Evaluation 在训练循环外完成。你从 checkpoint 创建一个 `SamplingClient`,再在测试集上做补全。结果按下面几种方式打分: - **Exact match** —— Model 输出是否与 target 完全一致?适合答案确定的任务(数学、代码、事实题)。 - **Custom metric function** —— 用户自定义打分器,算任务特定指标(BLEU、ROUGE、F1、任务成功率)。 - **LLM-as-judge** —— 用单独的 evaluator model 给 completion 质量打分。适合主观任务(helpfulness、coherence、风格),exact match 不适用的场合。 所有评估结果都按结构化格式(JSONL)记录,用于分析和报告。 ## Pattern ```python import mint from mint import types from mint.completers import TinkerMessageCompleter # 加载训练好的 checkpoint service_client = mint.ServiceClient() sampling_client = service_client.create_sampling_client_from_checkpoint( checkpoint_name="my-model-v1" ).result() tokenizer = sampling_client.get_tokenizer() renderer = mint.renderers.get_renderer("qwen3", tokenizer) # 创建一个 message completer 做评估 completer = TinkerMessageCompleter(sampling_client=sampling_client, renderer=renderer) # 示例测试集:简单 Q&A test_examples = [ { "question": "What is 2 + 2?", "expected_answer": "4", }, { "question": "What is the capital of France?", "expected_answer": "Paris", }, ] # 跑 completion results = [] for example in test_examples: messages = [{"role": "user", "content": example["question"]}] response = completer.complete( messages=messages, sampling_params=types.SamplingParams(max_tokens=32, temperature=0.0), ) # 取出答案文本 answer_text = response["content"] is_correct = example["expected_answer"].lower() in answer_text.lower() results.append({ "question": example["question"], "expected": example["expected_answer"], "predicted": answer_text, "correct": is_correct, }) # 算指标 accuracy = sum(r["correct"] for r in results) / len(results) print(f"Accuracy: {accuracy:.2%}") # 复杂一点的指标可以自定义打分器 def custom_score(example, prediction): # 任务特定打分逻辑示例 return 1.0 if prediction == example["expected_answer"] else 0.0 custom_scores = [ custom_score(test_examples[i], results[i]["predicted"]) for i in range(len(results)) ] print(f"Custom metric mean: {sum(custom_scores) / len(custom_scores):.4f}") ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/concepts/evaluations.py ## API Surface | 组件 | 用途 | 输入 | 输出 | |-----|------|------|------| | `TinkerMessageCompleter` | 在测试集上生成 completion | `list[Message]` | `Message`(response) | | `SamplingClient.sample()` | token 级生成 | `ModelInput` | `SampleOutput`(tokens + logprobs) | | 自定义指标函数 | 给单个 example 打分 | `(example, prediction)` | `float`(分数) | | LLM-as-judge 模式 | 用另一个 model 打分 | `(example, prediction)` | judge response | **记录结果:** - 把结果写到 JSONL:`{"question": "...", "expected": "...", "predicted": "...", "score": ...}` - 用 pandas 或你常用的分析工具在测试集上聚合分数。 ## Caveats & Pitfalls - **采样的确定性**:要做公平对比,评估时用 `temperature=0.0`。非零温度会引入随机性,结果更难复现。 - **测试集大小**:测试集太小(< 100 example)指标方差大。用 1000+ 的测试集才能拿到可靠信号。 - **指标选型**:Exact match 只适合答案唯一的任务。开放式任务(摘要、创意写作)应该用自定义指标或 LLM judge。 - **LLM judge 偏置**:judge model 也可能带自己的偏好和倾向。在用 judge 打分做决策之前,先在一份人工标注的子集上验证 judge 的打分。 - **批量评估**:用异步 API 批量做 completion 提升效率:先收集多个 sampling future,再一起 await 结果。 # Loss Functions (/zh/community/customize/concepts/loss-functions) import { Callout } from 'fumadocs-ui/components/callout'; # Loss Functions MinT 为 `forward_backward()` 内置了几种 loss function,覆盖监督学习和 policy gradient 训练。每种 loss 都对 model 预测 token 的 logprob 算梯度,按 importance、advantage 或自定义 reward 信号加权。 ## Concept MinT 的 loss function 分两类: **监督学习(SFT 和 DPO)** - `loss_fn="cross_entropy"` —— 标准的 token 预测 loss。让 model 学会匹配 target token。用在 SFT 和多轮监督数据上。 **Policy gradient(RL)** - `loss_fn="importance_sampling"` —— off-policy RL。把轨迹按 `importance_weight = target_logprob / behavior_logprob` 重新加权。对分布漂移敏感,最适合搭配小学习率。 - `loss_fn="ppo"` —— on-policy RL。把概率比裁剪到 `[1 - clip_ratio, 1 + clip_ratio]` 区间,防止单步更新过大。稳,用得最广。 - `loss_fn="cispo"` —— 保守 importance sampling。IS 的软裁剪变体;裁剪的是 logprob 差,不是概率比。介于 IS 和 PPO 之间。 每个 RL loss 都接收 per-token 数组:`advantages`(每个 token 位置一个值)、`logprobs`(行为 policy 的 logprob)和 `weights`(梯度 mask)。梯度优化的是新 policy 下的期望回报。 ## Pattern ```python import mint from mint import types import torch service_client = mint.ServiceClient() training_client = service_client.create_lora_training_client( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() # 示例 1:SFT(监督学习) prompt_text = "The capital of France is" target_text = " Paris." prompt_ids = tokenizer.encode(prompt_text) target_ids = tokenizer.encode(target_text) all_ids = prompt_ids + target_ids model_input_sft = types.ModelInput.from_ints(all_ids[:-1]) sft_target_tokens = all_ids[1:] sft_weights = [0] * len(prompt_ids) + [1] * len(target_ids) datum_sft = types.Datum( model_input=model_input_sft, loss_fn_inputs={ "target_tokens": sft_target_tokens, "weights": sft_weights, }, ) result = training_client.forward_backward([datum_sft], loss_fn="cross_entropy").result() print(f"SFT metrics: {result.metrics}") # 示例 2:RL(policy gradient) # 模拟 model 生成的 token 和它们的 logprob model_tokens = [7741, 34651, 31410] input_ids_rl = model_tokens[:-1] target_ids_rl = model_tokens[1:] n_rl = len(input_ids_rl) advantage = 0.15 # 单条 trajectory,正 reward model_input_rl = types.ModelInput.from_ints(input_ids_rl) datum_rl = types.Datum( model_input=model_input_rl, loss_fn_inputs={ "target_tokens": target_ids_rl, "logprobs": [-0.5] * n_rl, "advantages": [advantage] * n_rl, "weights": [1.0] * n_rl, }, ) result_rl = training_client.forward_backward([datum_rl], loss_fn="ppo").result() print(f"PPO metrics: {result_rl.metrics}") # 走一步 optimizer adam_params = types.AdamParams(learning_rate=1e-4) training_client.optim_step(adam_params).result() ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/quickstart/custom_loss.py ## API Surface | Loss | `loss_fn_inputs` | 用途 | |------|------------------|------| | `"cross_entropy"` | `target_tokens`、`weights` | SFT、多轮监督 | | `"importance_sampling"` | `target_tokens`、`logprobs`、`advantages`、`weights` | off-policy RL、offline RL | | `"ppo"` | `target_tokens`、`logprobs`、`advantages`、`weights` | on-policy RL、稳定的梯度更新 | | `"cispo"` | `target_tokens`、`logprobs`、`advantages`、`weights` | 保守 RL、平滑裁剪 | **RL loss 的可选参数:** - `clip_ratio`(PPO)—— 裁剪范围 `[1 - clip_ratio, 1 + clip_ratio]`。默认 `0.2`。范围 `0.0–0.5`。 - `beta`(CISPO)—— 软裁剪锐度。默认 `1.0`,越大裁剪越锐,越接近硬 PPO。 ## Caveats & Pitfalls - **数据格式**:`loss_fn_inputs` 的 key 必须严格匹配 loss function 的要求。传 `target_logprobs` 而漏传 `logprobs` 会抛 KeyError。 - **Advantage 范围**:RL 的 advantage 应该在每个 batch 内做零中心化。用 baseline 或 value function 估计 advantage,不要直接拿原始 reward。 - **Importance sampling 漂移**:`loss_fn="importance_sampling"` 对分布漂移敏感。如果 policy 偏离 behavior policy 太远,importance weight 会爆炸。改用 `loss_fn="ppo"`(带裁剪)或缩小学习率可以缓解。 - **SFT 的 weight mask**:SFT 时 prompt token 的 `weights=0`,completion token 的 `weights=1`。renderer 的 `build_supervised_example()` 会自动处理这一步。 - **Off-policy vs on-policy**:`importance_sampling` 接受任意 policy 产生的数据(真正的 off-policy)。`ppo` 和 `cispo` 假设 trajectory 由当前 model 生成(on-policy 或近似 on-policy)。按数据来源选。 # Rendering (/zh/community/customize/concepts/rendering) import { Callout } from 'fumadocs-ui/components/callout'; # Rendering Rendering 把一组 message 转换成 model 能消费的 token 序列。它和 HuggingFace 的 chat template 类似,但 MinT 的 renderer 覆盖完整训练生命周期:监督学习、强化学习和部署。Renderer 处于两层之间 —— 上层是结构化的对话数据,底层是 model 实际看到的 token。 ## Concept Renderer 在两类数据之间转换:结构化的 message 字典(带 `user` / `assistant` / `system` 等 role)和扁平的 token 序列。SFT 阶段用 `build_supervised_example()` 把 prompt token(不计入 loss)和 completion token(model 学习的部分)分开。RL 和采样阶段用 `build_generation_prompt()` 构造 prompt,再用 `parse_response()` 把 model 采样出来的 token 解码回 message。 Renderer 是按 model 家族区分的:Qwen3、Llama 3、DeepSeek V3 等各自有自己的特殊 token 和格式约定。MinT 自带主要家族的 renderer,每一个都会返回正确的 chat template: ``` Messages(list of dict)--> Renderer --> Token IDs(list of int) + loss masks(用于 SFT) + stop tokens(用于采样) ``` ## Pattern 下面是渲染一段对话的标准写法: ```python import mint import mint.recipe as recipe from mint import types # 初始化 renderer 和 tokenizer service_client = mint.ServiceClient() training_client = service_client.create_lora_training_client( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() renderer = recipe.renderers.get_renderer("qwen3", tokenizer) # 构造对话 messages = [ {"role": "system", "content": "简洁回答;每条回复最多一句话"}, {"role": "user", "content": "最长寿的啮齿动物是什么?"}, {"role": "assistant", "content": "裸鼹鼠,可以活超过 30 年。"}, {"role": "user", "content": "它们为什么活得这么长?"}, { "role": "assistant", "content": "它们进化出了多种保护机制,包括能抑制癌症的特殊透明质酸、稳定性极高的蛋白质,以及高效的 DNA 修复系统。", }, ] # SFT:得到 token 和 loss weights model_input, weights = renderer.build_supervised_example(messages) # 采样:构造一个让 model 续写的 prompt prompt = renderer.build_generation_prompt(messages[:-1]) # 不包括最后一条 assistant 消息 stop_sequences = renderer.get_stop_sequences() # 采样何时停止 # 把采样到的 token 解码回 message sampled_tokens = [45, 7741, 34651, 31410] # 实际场景里是 model.sample 的输出 message, success = renderer.parse_response(sampled_tokens) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/concepts/rendering.py ## API Surface | 方法 | 用途 | 返回 | |------|------|------| | `build_supervised_example(messages, train_on_what)` | 把 message 转成 SFT 用的 token + loss weights | `(ModelInput, weights_array)` | | `build_generation_prompt(messages)` | 把 message 转成 model 续写用的 prompt | `ModelInput` | | `get_stop_sequences()` | 表示生成结束的 token | `list[int \| str]` | | `parse_response(tokens)` | 把采样到的 token 还原成 message | `(dict, bool)`,bool 是成功标志 | **Renderer 列表(用 `recipe.renderers.get_renderer(name, tokenizer)` 获取)** - `"qwen3"` — Qwen3(默认启用 thinking) - `"qwen3_disable_thinking"` — Qwen3(关闭 thinking) - `"llama3"` — Llama 3 - `"deepseekv3"` — DeepSeek V3(non-thinking) - `"deepseekv3_thinking"` — DeepSeek V3(thinking 模式) - `"nemotron3"` — NVIDIA Nemotron 3 - `"kimi_k2"` — Kimi K2 **Vision renderer**(用于 Qwen3-VL 这类 VLM): ```python from mint.image_processing_utils import get_image_processor image_processor = get_image_processor("Qwen/Qwen3-VL-235B-A22B-Instruct") renderer = recipe.renderers.get_renderer("qwen3_vl_instruct", tokenizer, image_processor=image_processor) ``` ## Caveats & Pitfalls - **Renderer 选错家族**:调 `get_renderer()` 时务必传对应 model 家族的名字。把 llama3 renderer 用在 Qwen3 的 token 上,会拼出错误的特殊 token。 - **Vision 编码**:VL model 同时需要 tokenizer *和* image processor。缺 image processor 会让视觉输入的 shape 对不上。 - **Loss 掩码**:`build_supervised_example()` 默认只在最后一条 assistant 消息上算 loss。要在所有 assistant 回合上训练,传 `train_on_what=TrainOnWhat.ALL_ASSISTANT_MESSAGES`。 - **Stop token**:`get_stop_sequences()` 返回的 token ID 是 model 家族特定的。采样时务必传给 `SamplingParams(stop=...)`。 - **自定义格式**:清单里没有的 model 家族,训练前用 `register_renderer()` 注册自己的 renderer。不注册的话会悄悄用错特殊 token,不报错也不正确。 # Checkpoints & Weights (/zh/community/customize/concepts/weights) import { Callout } from 'fumadocs-ui/components/callout'; # Checkpoints & Weights MinT 把 LoRA checkpoint 存在服务端。本页覆盖 checkpoint 的完整生命周期:保存供推理用、恢复继续训练、管理 checkpoint 元数据、把 weights 下载到本地部署或合并。 ## Concept 训练会产生两类 checkpoint: - **Inference checkpoint**(`save_weights_for_sampler`)—— 优化为采样用的 LoRA weights。用它创建 `SamplingClient` 做推理或评估。 - **Training state**(`save_state`)—— 完整的训练状态,包含梯度、optimizer 矩量、loss 历史。用它从 checkpoint 续训不会丢动量。 Checkpoint 在服务端用名字标识,可以列出、设 TTL(time-to-live)、发布到 HuggingFace Hub、或下载到本地。流程: ``` 训练循环: forward_backward() -> optim_step() -> save_weights_for_sampler() -> save_state()(用于续训) -> get_checkpoint_metadata() -> publish_checkpoint() ``` ## Pattern ```python import mint from mint import types service_client = mint.ServiceClient() training_client = service_client.create_lora_training_client( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() # 跑几步 for step in range(10): # 简化的 batch 构造 text = "Example training text for step {}".format(step) tokens = tokenizer.encode(text) model_input = types.ModelInput.from_ints(tokens[:-1]) target_tokens = tokens[1:] weights = [1.0] * len(target_tokens) datum = types.Datum( model_input=model_input, loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) result = training_client.forward_backward([datum], loss_fn="cross_entropy").result() adam_params = types.AdamParams(learning_rate=5e-5) training_client.optim_step(adam_params).result() if step % 5 == 0: # 保存供推理 sampling_client = training_client.save_weights_for_sampler( name=f"checkpoint-step-{step}" ).result() print(f"Saved checkpoint at step {step}") # 保存完整 state,用于续训 training_client.save_state(name=f"state-step-{step}").result() # 之后从 checkpoint 续训 checkpoint_state = "state-step-5" resumed_client = service_client.create_lora_training_client_from_state( checkpoint_state=checkpoint_state ).result() # 或者从已保存的 checkpoint 创建一个 sampling client sampling_client = service_client.create_sampling_client_from_checkpoint( checkpoint_name="checkpoint-step-5" ).result() ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/advanced/checkpoint.py ## API Surface | 方法 | 用途 | 返回 | |--------|---------|---------| | `save_weights_for_sampler(name)` | 保存 LoRA weights 供推理用 | `SamplingClient`(可直接使用) | | `save_state(name)` | 保存完整训练状态用于续训 | `None` | | `create_lora_training_client_from_state(checkpoint_state)` | 从 state 恢复训练 | `TrainingClient` | | `create_sampling_client_from_checkpoint(checkpoint_name)` | 从 checkpoint 加载用于推理 | `SamplingClient` | | `get_checkpoint_metadata(name)` | 查询 checkpoint 大小、创建时间、TTL | `CheckpointMetadata` | | `set_checkpoint_ttl(name, ttl_hours)` | 给 checkpoint 设过期时间 | `None` | | `publish_checkpoint(name, hub_id)` | 把 checkpoint 发布到 HuggingFace Hub | `None` | ## Caveats & Pitfalls - **重载 weights 后 sampler 失同步**:保存 weights 之后,老的 `SamplingClient` 仍然在用旧 weights 采样。永远用新 checkpoint 重新建 sampling client。 - **State vs weights**:`save_state()` 体积更大(含梯度、optimizer 矩量),但能保留训练动量。`save_weights_for_sampler()` 轻量,但会丢 optimizer 历史。长训用 state,最终部署用 weights。 - **Checkpoint 命名**:checkpoint 名是用户自定义字符串。用描述性名字,比如 `"math-v1-step-100"` 避免混淆。同类型 checkpoint(推理 vs state)名字必须唯一。 - **TTL 默认值**:保存的 checkpoint 默认会一直保留。设置 TTL 可以让旧 checkpoint 自动过期,回收服务端存储。 - **Hub 发布**:`publish_checkpoint()` 需要环境里有合法的 HuggingFace Hub token。见 [Deployment: Publish to Hub](/zh/community/customize/deployment/publish-hub)。 # Chat RL (/zh/community/customize/rl/chat-rl) import { Callout } from 'fumadocs-ui/components/callout'; # Chat RL Chat RL 用一个**偏好 reward function** 给对话 response 打分。和 Math RL(有标准答案)不同,Chat RL 在多个维度上评估质量:长度、结构、多样性。参考实现用的是轻量级代理打分 —— 没有调用昂贵的 LLM-as-judge,只用启发式规则。 参考 adapter 是 `demos/rl/adapters/preference_chat.py`。 ## Configuration 用标准 GRPO 设置: ```python import mint from mint import types 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, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=2e-5) ``` 然后跑 chat RL adapter: ```python from demos.rl.adapters.preference_chat import PreferenceChatAdapter from demos.rl.rl_core import RLConfig, run_grpo cfg = RLConfig( model="Qwen/Qwen3-0.6B", rank=16, steps=10, batch=8, group=4, lr=2e-5, max_tokens=128, # response 比 math 长 temperature=0.8, ) run_grpo(PreferenceChatAdapter(), cfg) ``` ## Prompting Guide Chat prompt 通常是简短的用户问题,过 model 的 chat template 渲染: ```python class PreferenceChatAdapter(RLAdapter): PROMPTS = [ "Explain what a variable is in programming.", "Write a short poem about the ocean.", "What are three benefits of exercise?", "Describe how to make a cup of tea.", "Why is the sky blue?", ] def make_prompt(self, sample: str, tokenizer) -> list[int]: messages = [{"role": "user", "content": sample}] if hasattr(tokenizer, "apply_chat_template"): return _coerce_chat_template_tokens( tokenizer.apply_chat_template( messages, tokenize=True, add_generation_prompt=True ) ) return tokenizer.encode(f"User: {sample}\nAssistant:") ``` 对每个 prompt,policy 生成 `group_size` 个不同的 response。Reward function 再分别打分。 ## Output Format 偏好 reward function 在多个维度上给 response 打分: ```python def compute_reward(self, response: str, sample: str) -> float: r = 0.0 words = len(response.split()) # 长度奖励:偏好 20–100 词 if 20 <= words <= 100: r += 0.4 elif 10 <= words < 20 or 100 < words <= 150: r += 0.2 # 结构奖励:偏好 2+ 句话 if response.count(".") >= 2: r += 0.3 # 多样性奖励:偏好多样化的词汇 unique_words = len(set(response.lower().split())) if words > 0 and unique_words > words * 0.5: r += 0.3 return min(r, 1.0) # 封顶 1.0 ``` Reward 范围 0.0 到 1.0,由三块组成: - **长度:** 0–0.4(偏好更长、信息更密的 response)。 - **结构:** 0–0.3(多句更受偏好)。 - **多样性:** 0–0.3(词汇多样的 response 更受偏好)。 在一个 group 内,advantage 中心化:`adv[i] = reward[i] - mean_reward`。这会推 policy 偏向高质量 response,压低低质量的。 ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `steps` | int | `10` | 训练 step 数。 | | `batch` | int | `8` | 每 step 的 prompt 数。 | | `group` | int | `4` | 每个 prompt 的样本数。 | | `learning_rate` | float | `2e-5` | Adam 学习率。Chat RL 取 1e-5 到 4e-5。 | | `max_tokens` | int | `128` | 最大生成长度。Chat:64–256。 | | `temperature` | float | `0.8` | 采样温度。典型值 0.7–1.0。 | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | base model。 | | `rank` | int | `16` | LoRA rank。 | | `train_mlp` | bool | `True` | 训练 MLP。 | | `train_attn` | bool | `True` | 训练 attention。 | | `train_unembed` | bool | `True` | 训练输出层。 | **Reward 参数**(`compute_reward` 内可调): - `length_threshold`:(20, 100) —— 偏好的词数区间。按任务调。 - `min_sentences`:2 —— 拿到结构奖励的最低句数。任务越长可调高。 - `unique_word_ratio`:0.5 —— 最小(unique_words / total_words)比例。提高这个值会鼓励词汇更多样。 **环境变量:** ```bash export MINT_RL_MAX_TOKENS=128 export MINT_RL_STEPS=10 export MINT_RL_BATCH=8 export MINT_RL_GROUP=4 export MINT_RL_LR=2e-5 ``` **扩展到 LLM-as-judge:** 把 `compute_reward` 替换成调一次 evaluator model。模式:把 `(prompt, response)` 发给 judge model,拿回分数,归一化后返回。这种方式更贵,但能处理写作质量、真实性这类主观任务。 # Code RL (/zh/community/customize/rl/code-rl) import { Callout } from 'fumadocs-ui/components/callout'; # Code RL Code RL 用**基于执行的 reward** 给生成的代码打分。Model 生成代码,沙箱里跑测试用例。Reward = 通过测试的比例(或二值:全过 → 1.0,任意失败 → 0.0)。这是"延迟 reward" —— policy 要等执行完才能拿到 reward。 参考 adapter 是 `demos/rl/adapters/environment_tooluse.py`,解决简单的函数编写题。 ## Configuration 用标准 GRPO 循环搭 Code RL,但 `max_tokens` 要更大以容纳代码: ```python import mint from mint import types 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, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=2e-5) ``` 然后跑 code RL adapter: ```python from demos.rl.adapters.environment_tooluse import EnvironmentToolUseAdapter from demos.rl.rl_core import RLConfig, run_grpo cfg = RLConfig( model="Qwen/Qwen3-0.6B", rank=16, steps=10, batch=8, group=4, lr=2e-5, max_tokens=256, # 写代码需要长很多 temperature=0.8, ) run_grpo(EnvironmentToolUseAdapter(), cfg) ``` ## Prompting Guide 代码题由 few-shot 示例和题目陈述组成: ````python class EnvironmentToolUseAdapter(RLAdapter): FEWSHOT = """Q: Write a function `double(x)` that returns x * 2. A: ```python def double(x): return x * 2 ``` """ def make_prompt(self, sample: dict, tokenizer) -> list[int]: return tokenizer.encode(FEWSHOT + f"Q: {sample['q']}\nA:") ```` 每个问题,model 生成含有代码的 response。Adapter 提取代码块(用 \`\`\`python ... \`\`\` 的正则匹配),执行,再跑测试用例。 例题: ```python { "q": "Write `add(a, b)` that returns a + b.", "tests": [("add(1,2)", 3), ("add(-1,1)", 0)], } ``` Model 生成: ```python def add(a, b): return a + b ``` ## Output Format 代码提取与执行: ```python def _extract_code(response: str) -> str | None: match = re.findall(r"```(?:\w+)?\n(.*?)```", response, re.DOTALL) if match: return match[-1].strip() if "def " in response: return response[response.find("def "):].strip() return None def compute_reward(self, response: str, sample: dict) -> float: code = _extract_code(response) if not code: return 0.0 try: ns: dict[str, Any] = {} exec(code, ns) # 在隔离的命名空间里跑 for expr, expected in sample["tests"]: if eval(expr, ns) != expected: # 跑每个测试 return 0.0 return 1.0 # 全部通过 except Exception: return 0.0 # 执行错或语法错 ``` Reward 是二值: - **1.0**:代码能提取、能执行、并通过所有测试用例。 - **0.0**:代码提不出来、跑不起来、或任意一个测试失败。 在一个 group 里,advantage 中心化:`adv[i] = reward[i] - mean_reward`。 **沙箱提醒:** demo 在字典命名空间里直接用 `exec()` —— **不适合生产**。真实部署要用合规沙箱(Docker、gVisor、Firecracker)隔离不受信任的代码。永远不要在不受信任的输入上跑这种代码。 ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `steps` | int | `10` | 训练 step 数。 | | `batch` | int | `8` | 每 step 题目数。 | | `group` | int | `4` | 每题样本数。 | | `learning_rate` | float | `2e-5` | Adam 学习率。Code RL 取 1e-5 到 4e-5。 | | `max_tokens` | int | `256` | 最大生成长度。Code:128–512,看题目复杂度。 | | `temperature` | float | `0.8` | 采样温度。典型值 0.7–1.0。 | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | base model。 | | `rank` | int | `16` | LoRA rank。 | | `train_mlp` | bool | `True` | 训练 MLP。 | | `train_attn` | bool | `True` | 训练 attention。 | | `train_unembed` | bool | `True` | 训练输出层。 | **沙箱参数**(环境特定): - `sandbox_timeout_s`:float —— 每次代码执行的超时。默认 5.0 秒。慢测试可调大。 - `max_tests_per_problem`:int —— 最多跑多少测试用例。默认 10,封顶防止死循环。 - `partial_credit`:bool —— 是否按通过测试比例给部分 reward(例如 2/4 → 0.5)。默认 False(二值 reward)。 **环境变量:** ```bash export MINT_RL_MAX_TOKENS=256 export MINT_RL_STEPS=10 export MINT_RL_BATCH=8 export MINT_RL_GROUP=4 export MINT_RL_LR=2e-5 ``` **扩展到其它语言:** demo 用的是 Python 的 `exec()`。换其它语言(JavaScript、Rust、Go)需要单独处理代码提取和编译。一般做法是只换 reward function,GRPO 循环本身不动。 # Custom Environment (/zh/community/customize/rl/custom-environment) import { Callout } from 'fumadocs-ui/components/callout'; # Custom Environment RL 训练需要一个环境:接收 model 的动作(生成的 token),返回 reward 信号。MinT 的 `RLAdapter` 基类让你可以为任意任务实现自定义环境:数学验证、代码执行、多轮对话、tool use 或领域特定反馈。 ## Concept MinT 的 RL 环境实现 `RLAdapter` 接口: ```python class MyEnvironment(RLAdapter): def __call__(self, prompt: ModelInput, response: ModelInput) -> Reward: # 接收 model 的 response,计算 reward # 返回:Reward(score=float, metadata=dict) ``` 环境收到: - **prompt** —— 输入上下文(model 看到的 token)。 - **response** —— Model 生成的 completion(model 输出的 token)。 环境返回: - **score** —— 标量 reward(越高越好)。 - **metadata** —— 可选的 dict,含调试信息(错误消息、中间分数等)。 常见环境模式: - **Verification** —— 检查 response 是否正确(如数学解答对不对)。返回 1.0 或 0.0。 - **Scoring** —— 用某个指标函数(BLEU、edit distance、语义相似度)。返回 0.0–1.0。 - **External system** —— 调用 API 或子进程(代码执行、事实核查)。返回分数 + 错误信息。 - **Multi-step** —— 模拟对话环境;检查 model 的 response 是否达成目标。 ## Pattern ```python import mint from mint.rl_core import RLAdapter, Reward class MathVerificationEnv(RLAdapter): """通过符号计算验证数学题解答。""" def __call__(self, prompt: mint.types.ModelInput, response: mint.types.ModelInput) -> Reward: tokenizer = self.get_tokenizer() # token 解码成文本 response_text = tokenizer.decode(response.to_ints()) # 从 response 提数字答案 import re match = re.search(r'\d+', response_text) if not match: return Reward(score=0.0, metadata={"error": "No number found"}) predicted_answer = int(match.group()) expected_answer = 42 # 实操中从 prompt 或标准答案提取 # reward:对得 1.0,错得 0.0 is_correct = predicted_answer == expected_answer return Reward( score=1.0 if is_correct else 0.0, metadata={"predicted": predicted_answer, "expected": expected_answer}, ) class ToolUseEnv(RLAdapter): """学习使用工具的 reward model。""" def __call__(self, prompt: mint.types.ModelInput, response: mint.types.ModelInput) -> Reward: tokenizer = self.get_tokenizer() response_text = tokenizer.decode(response.to_ints()) # 检查 model 是否调用了工具(如含有 ) used_tool = "" in response_text tool_score = 1.0 if used_tool else 0.0 # 检查 response 是否连贯 coherence_score = 1.0 if len(response_text) > 20 else 0.0 # 合成总分 total_score = 0.7 * tool_score + 0.3 * coherence_score return Reward( score=total_score, metadata={"used_tool": used_tool, "coherence": coherence_score}, ) # 在 RL 训练里使用 training_client = service_client.create_lora_training_client(base_model="Qwen/Qwen3-0.6B", rank=16) env = MathVerificationEnv(training_client.get_tokenizer()) # 从 model 采样并评估 sampler = service_client.create_sampling_client(base_model="Qwen/Qwen3-0.6B") sampler.sample(prompt=..., sampling_params=...) # 拿到 response token # 用环境评估 reward = env(prompt_tokens, response_tokens) print(f"Reward: {reward.score}, Metadata: {reward.metadata}") ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/demos/rl/adapters/environment_tooluse.py ## API Surface | 类 | 方法 | 用途 | |-----|------|------| | `RLAdapter` | `__call__(prompt, response)` | 给一个 (prompt, response) 算 reward | | `Reward` | `score: float` | 标量 reward 值 | | `Reward` | `metadata: dict` | 可选的调试 / 日志信息 | **`RLAdapter` 的 helper 方法:** - `get_tokenizer()` —— 取出 tokenizer 用于 token 解码。 - `get_model_info()` —— 查询 model 家族和配置。 ## Caveats & Pitfalls - **Reward 量级**:reward 应归一化到合理范围(如 0–1 或 -1 到 1)。极大的 reward 会让梯度更新不稳定。 - **稀疏 reward**:二值 reward(对/错)训练信号弱。如果可能,给出稠密反馈(部分 credit、语义相似度分数等)。 - **执行安全**:代码执行环境一定要小心。沙箱是必须的,不然恶意代码会破坏系统。 - **延迟**:环境如果要调外部 API(搜索、代码执行),考虑用异步和超时。慢环境会成为训练瓶颈。 - **确定性**:环境如果有随机元素,考虑设 seed 让训练可复现。把随机源记录到 metadata 里。 # Prompt Distillation (/zh/community/customize/rl/distillation) import { Callout } from 'fumadocs-ui/components/callout'; # Prompt Distillation Prompt distillation 是:用 teacher model 生成训练 response,然后用这些 response 训练更小的 student model。 这个页面和 `recipes/distillation.py` 对齐。这个 recipe 会跑真实 MinT API: 1. 为 teacher model 创建 `SamplingClient`。 2. 每个 prompt 采样一个 teacher response。 3. 用 `conversation_to_datum()` 把 `(prompt, teacher_response)` 转成 supervised chat data。 4. 用 `recipe.supervised.train.main(config)` 训练 student model。 ## Use Case - **Model compression**:让小 model 模仿大 model 的 response。 - **降成本**:用大 model 生成数据,再用小 student 做服务或迭代。 - **领域风格迁移**:在自己的 prompts 上捕获 teacher 的格式、语气或推理风格。 - **SFT pipeline check**:验证 teacher sampling 和 student SFT 都能在 MinT 上跑通。 ## 配置 默认 models: ```text Teacher: Qwen/Qwen3-30B-A3B-Instruct-2507 Student: Qwen/Qwen3-0.6B ``` 可以用环境变量覆盖: ```bash MINT_TEACHER_MODEL=Qwen/Qwen3-30B-A3B-Instruct-2507 \ MINT_STUDENT_MODEL=Qwen/Qwen3-0.6B \ MINT_SFT_STEPS=2 \ python recipes/distillation.py ``` 如果 requested teacher model 不在 `capabilities.supported_models` 里,recipe 会打印 warning,并 fallback 到 self-distillation:用 student model 当 teacher。 ## Stage 1:Teacher Sampling recipe 使用真实 teacher `SamplingClient`: ```python sampling_client = service_client.create_sampling_client(base_model=teacher_model) tokenizer = sampling_client.get_tokenizer() result = sampling_client.sample( prompt=types.ModelInput.from_ints(tokens=prompt_tokens), num_samples=1, sampling_params=types.SamplingParams( max_tokens=64, temperature=0.2, stop=[tokenizer.eos_token_id], ), ).result() teacher_response = tokenizer.decode(result.sequences[0].tokens).strip() ``` 采样后的 example 形状: ```python { "prompt": "Explain TCP in one sentence.", "teacher_response": "TCP is a reliable, connection-oriented protocol...", } ``` ## Stage 2:Student SFT student dataset 使用和其他 MinT SFT examples 一样的 supervised recipe path: ```python class DistilledSFTDataset(recipe.supervised.types.SupervisedDataset): def __init__(self, examples, model_name, renderer_name, batch_size, max_length): tokenizer = get_tokenizer(model_name) renderer = recipe.renderers.get_renderer(renderer_name, tokenizer) self.datums = [ recipe.supervised.conversation_to_datum( [ {"role": "user", "content": item["prompt"]}, {"role": "assistant", "content": item["teacher_response"]}, ], renderer, max_length=max_length, ) for item in examples ] self.batch_size = batch_size ``` 然后用高层 SFT loop 训练 student: ```python config = recipe.supervised.train.Config( log_path="/tmp/mint-distillation-run", model_name="Qwen/Qwen3-0.6B", renderer_name="qwen3", dataset_builder=DistilledSFTDatasetBuilder(...), learning_rate=1e-5, lora_rank=16, max_steps=2, save_every=999, eval_every=999, infrequent_eval_every=999, ttl_seconds=3600, ) await recipe.supervised.train.main(config=config) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/distillation.py ## Verified Run 已在 MinT 上验证: | Field | Value | | --- | --- | | Teacher | `Qwen/Qwen3-30B-A3B-Instruct-2507` | | Student | `Qwen/Qwen3-0.6B` | | Teacher prompts | 4 | | Student SFT steps | 2 | | Final train mean NLL | `2.277863025665283` | 运行完成了两个阶段: ```text === Stage 1: Teacher Sampling === Teacher model: Qwen/Qwen3-30B-A3B-Instruct-2507 Prompts: 4 [1/4] prompt: Give one practical tip for keeping regular backups. teacher: One practical tip for keeping regular backups is ... ... === Stage 2: Student SFT === Student model: Qwen/Qwen3-0.6B Examples: 4 Steps: 2 Training completed successfully ``` 这是一个最小验证 recipe。它证明 teacher-sampling → supervised-dataset → student-SFT 这条路径真实可跑。要做质量蒸馏,请增加 prompts 数量,使用领域 prompts,加 validation,并比较训练前后的生成结果。 ## 为什么这个形状有效 ```text prompts │ ▼ teacher SamplingClient │ 真实采样 teacher responses ▼ (prompt, teacher_response) pairs │ ▼ conversation_to_datum() │ renderer + assistant-token mask ▼ recipe.supervised.train.main() │ ▼ student LoRA checkpoint ``` 这样不会只是打印“蒸馏伪代码”。每个阶段都是真实 MinT 调用。 # RL Hyperparameters (/zh/community/customize/rl/hyperparameters) import { Callout } from 'fumadocs-ui/components/callout'; # RL Hyperparameters 这个 recipe 会在 MinT 上跑真实的 RL hyperparameter sweep。它使用一个很小的 arithmetic `MessageEnv`,用 `EnvFromMessageEnv` 包起来,然后通过 `recipe.rl.train.main()` 训练。 这个 recipe **不是**手写假的 PPO datums。它使用真实 multi-turn RL recipes 会用到的 environment 和 rollout 路径。 ## Use Case - **RL smoke testing**:检查 `MessageEnv`、rollout、sampling、training 是否能在 MinT 上跑通。 - **Group-size exploration**:在更大任务前比较小的 GRPO-style groups。 - **Temperature exploration**:检查 sampling temperature 如何影响 rollout 行为。 - **KL penalty checks**:确认带 KL regularization 的 RL config 使用真实 reference model。 ## Sweep 什么 默认 grid: ```text kl_penalty_coef: [0.0, 0.02] temperature: [0.7, 1.0] group_size: [2, 4] max_steps: 每组配置 1 step configs: 2 x 2 x 2 = 8 ``` 运行: ```bash export MINT_API_KEY=sk-your-api-key python recipes/rl_hyperparameters.py ``` 覆盖 grid: ```bash MINT_RL_STEPS=1 \ MINT_RL_KL_COEFS=0.0,0.02 \ MINT_RL_TEMPS=0.7,1.0 \ MINT_RL_GROUPS=2,4 \ python recipes/rl_hyperparameters.py ``` ## Environment 形状 environment 故意很小: ```python class ArithmeticMessageEnv(MessageEnv): async def initial_observation(self): return [ { "role": "system", "content": "You are a precise calculator. Reply with only the final number.", }, {"role": "user", "content": self.question}, ] async def step(self, message): content = _extract_content(message).strip() prediction = _first_number(content) correct = prediction == self.answer return MessageStepResult( reward=1.0 if correct else -0.25, episode_done=True, next_messages=[], metrics={"correct": float(correct)}, ) ``` 然后 dataset builder 创建一组 environments: ```python @dataclass(frozen=True) class ArithmeticEnvGroupBuilder(recipe.rl.types.EnvGroupBuilder): question: str answer: str group_size: int renderer_name: str model_name: str async def make_envs(self): tokenizer = get_tokenizer(self.model_name) renderer = recipe.renderers.get_renderer(self.renderer_name, tokenizer) return [ EnvFromMessageEnv( renderer=renderer, message_env=ArithmeticMessageEnv(self.question, self.answer), max_trajectory_tokens=512, max_generation_tokens=64, ) for _ in range(self.group_size) ] ``` ## Training Config 每个 grid item 调用 `recipe.rl.train.main()`: ```python kl_reference_config = ( recipe.rl.train.KLReferenceConfig(base_model=MODEL) if kl_coef > 0 else None ) config = recipe.rl.train.Config( learning_rate=1e-5, dataset_builder=ArithmeticRLDatasetBuilder(...), model_name=MODEL, renderer_name="qwen3", lora_rank=16, max_tokens=64, temperature=temperature, kl_penalty_coef=kl_coef, kl_reference_config=kl_reference_config, loss_fn="importance_sampling", max_steps=1, save_every=999, eval_every=999, ) await recipe.rl.train.main(config=config) ``` 如果 `kl_penalty_coef > 0`,`recipe.rl.train.Config` 必须设置 `kl_reference_config`。这个 recipe 对这些配置设置 `KLReferenceConfig(base_model=MODEL)`。 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/rl_hyperparameters.py ## Verified Run 已在 MinT 上验证:`Qwen/Qwen3-0.6B`,每组配置 1 个 training step: | KL | Temperature | Group size | Steps | Mean reward | | ---: | ---: | ---: | ---: | ---: | | `0.00` | `0.7` | 2 | 1 | `-0.100` | | `0.00` | `0.7` | 4 | 1 | `-0.100` | | `0.00` | `1.0` | 2 | 1 | `-0.100` | | `0.00` | `1.0` | 4 | 1 | `-0.100` | | `0.02` | `0.7` | 2 | 1 | `-0.100` | | `0.02` | `0.7` | 4 | 1 | `-0.100` | | `0.02` | `1.0` | 2 | 1 | `-0.100` | | `0.02` | `1.0` | 4 | 1 | `-0.100` | 默认小任务是 smoke test。这里的 reward 数字不代表模型质量;它证明 8 组配置都完成了 rollout、training、KL reference handling 和 checkpoint save。 ## 为什么这个形状有效 ```text MessageEnv │ 定义 prompt、step()、reward ▼ EnvFromMessageEnv │ renderer bridge: messages → tokens ▼ EnvGroupBuilder │ 创建 group_size 份环境,用于 group-relative RL ▼ RLDatasetBuilder │ 把 groups 交给 recipe.rl.train ▼ recipe.rl.train.main() │ sampling、计算 rewards、用 importance_sampling 训练 ▼ metrics.jsonl + checkpoint ``` 这是用户做 custom environments 时真正需要的 RL recipe path。 # RL 概览 (/zh/community/customize/rl) import { Callout } from 'fumadocs-ui/components/callout'; # RL 概览 强化学习(RL)通过从 policy 采样、给输出打分、把 reward 信号反向传播回去,来更新 policy。MinT 用 GRPO(Group Relative Policy Optimization)—— 它在同一个 prompt 的一组样本内对 advantage 做归一化,让训练更稳。 RL 循环: 1. **采样**:当前 policy 对每个 prompt 生成多个 response。 2. **评分**:用 reward function 给每个 response 打分(verifier、judge 或环境)。 3. **算 advantage**:在 group 内把 reward 中心化。 4. **训练**:用 `loss_fn="importance_sampling"` 对采样到的 trajectory 训练。 Reward 来源可插拔,所以 RL 适用于数学(精确匹配 verifier)、聊天(偏好 judge)、代码(执行测试)或自定义信号。 ## Configuration 最小化 RL 训练循环: ```python import mint from mint import types 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, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=2e-5) for step in range(num_steps): # 1. 从当前 policy 采样 sampling_client = training_client.save_weights_and_get_sampling_client( name=f"rl-step-{step}" ) # 2. 收集样本,算 reward(见 RL demo) training_datums: list[types.Datum] = [...] # 3. 用 importance sampling 训练 training_client.forward_backward( training_datums, loss_fn="importance_sampling" ).result() training_client.optim_step(adam_params).result() ``` 生产级的 RL 循环参考 `demos/rl/rl_core.py`,它实现了 `run_grpo(adapter)` 共享基础设施,下面提到的任务特定 adapter 都基于它。 ## Prompting Guide RL prompt 通常比 SFT 短 —— model 要生成完整的 response,而不是按固定模板补全。例如: - **Math:** "Q: What is 3 + 5?\nA:" - **Chat:** 用户消息按 chat template 格式化,并带 `add_generation_prompt=True`。 - **Code:** 题目陈述 + few-shot 示例 + "A:"(model 续写代码)。 聊天风格的 RL 可以用 `mint.recipe` 的 renderer 来构造 prompt 和解析 response: ```python import mint.recipe as recipe renderer = recipe.renderers.get_renderer( recipe.get_recommended_renderer_name("Qwen/Qwen3-0.6B"), tokenizer, ) messages = [{"role": "user", "content": "What is 3 + 5?"}] prompt = renderer.build_generation_prompt(messages) stop_sequences = renderer.get_stop_sequences() # 采样之后: message, success = renderer.parse_response(sampled_tokens) ``` prompt encode 完传给 `sampling_client.sample(...)`: ```python prompt_tokens = tokenizer.encode("Q: What is 3 + 5?\nA:") result = sampling_client.sample( prompt=types.ModelInput.from_ints(tokens=prompt_tokens), num_samples=8, # 每个 prompt 采 8 个 response sampling_params=types.SamplingParams( max_tokens=16, temperature=0.8, # 控制探索;温度越高越多样 stop_token_ids=[tokenizer.eos_token_id], ), ).result() for seq in result.sequences: response_text = tokenizer.decode(seq.tokens) logprobs = seq.logprobs or [0.0] * len(seq.tokens) ``` 返回的每个 sequence 带: - `tokens`:生成的 token ID。 - `logprobs`:当前 policy 下 per-token 的 logprob。 ## Output Format RL 用的是 advantage,不是原始 reward。标准模式: 1. **收集 reward**:拿到 group 内所有样本的 reward。 2. **算 group 均值**:`mean_r = sum(rewards) / num_samples`。 3. **中心化 advantage**:`advantage[i] = reward[i] - mean_r`。 4. **构造 Datum**:prompt 部分 `loss_fn_inputs["weights"]` 设 0,response 部分填 advantage。 来自 `quickstart.py` 的例子: ```python g_rewards, g_responses, g_logprobs = [], [], [] for seq in res.sequences: txt = tokenizer.decode(seq.tokens) reward = 1.0 if extract_answer(txt) == gold_answer else 0.0 g_rewards.append(reward) g_responses.append(list(seq.tokens)) g_logprobs.append(list(seq.logprobs or [0.0] * len(seq.tokens))) mean_r = sum(g_rewards) / len(g_rewards) advs = [r - mean_r for r in g_rewards] for resp_tok, lp, adv in zip(g_responses, g_logprobs, advs): if not resp_tok: continue full = prompt_tokens + resp_tok prefix = len(prompt_tokens) - 1 datums.append( types.Datum( model_input=types.ModelInput.from_ints(tokens=full[:-1]), loss_fn_inputs={ "target_tokens": full[1:], "weights": [0.0] * prefix + [1.0] * len(resp_tok), "logprobs": [0.0] * prefix + lp, "advantages": [0.0] * prefix + [adv] * len(resp_tok), }, ) ) ``` Loss 按 advantage 缩放:reward 高于 mean_r 的样本拿到正梯度,低于 mean_r 的拿到负梯度。这会推 policy 提高高 reward 样本的概率,压低低 reward 样本的概率。 ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `loss_fn` | str | `"importance_sampling"` | GRPO 是默认推荐的 RL 算法。备选(服务端接受,参考脚本未演示):`"ppo"`、`"cispo"`、`"dro"`。 | | `group_size` | int | `4` | 每个 prompt 的采样数。group 越大方差越小,但显存占用也越大。典型值 4–16。 | | `batch_size`(或 `groups_per_batch`) | int | `8` | 每个 training step 的 prompt 数。 | | `max_tokens` | int | `16` | 每个样本最长生成长度。按任务调:math ≈ 16,chat ≈ 128,code ≈ 256。 | | `learning_rate` | float | `2e-5` | Adam 学习率。RL 一般比 SFT 低(1e-5 到 4e-5)。 | | `temperature` | float | `0.8` | 采样温度。越高探索越多。RL 典型值 0.7–1.0。 | | `kl_penalty_coef` | float | `0.0` | KL 散度惩罚(参考 model vs policy)。设 > 0 会给 loss 加 `coef * KL`,防止 policy collapse。 | | `betas` | tuple[float, float] | `(0.9, 0.999)` | Adam 一阶 / 二阶矩的指数衰减率。 | | `eps` | float | `1e-8` | Adam 数值稳定项。 | | `weight_decay` | float | `0.0` | L2 正则化。 | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | base model ID。 | | `rank` | int | `16` | LoRA rank。 | | `train_mlp` | bool | `True` | 训练 MLP 层。 | | `train_attn` | bool | `True` | 训练 attention 层。 | | `train_unembed` | bool | `True` | 训练输出层。 | **用法:** ```python adam_params = types.AdamParams(learning_rate=2e-5) result = training_client.forward_backward( datums, loss_fn="importance_sampling" ).result() training_client.optim_step(adam_params).result() ``` **任务特定 RL:** 具体的 reward 实现见 [Math RL](/zh/community/customize/rl/math-rl)、[Chat RL](/zh/community/customize/rl/chat-rl)、[Code RL](/zh/community/customize/rl/code-rl)。 ## What's next? - [Math RL](/zh/community/customize/rl/math-rl) —— 用确定性 verifier 做精确匹配评分。 - [Chat RL](/zh/community/customize/rl/chat-rl) —— 用 judge model 给出基于偏好的 reward。 - [Code RL](/zh/community/customize/rl/code-rl) —— 用沙箱执行得到的 reward。 - [rl_core.py](https://github.com/MindLab-Research/mint-quickstart/blob/main/demos/rl/rl_core.py) —— GRPO 共享循环和 RLAdapter 协议。 # Math RL (/zh/community/customize/rl/math-rl) import { Callout } from 'fumadocs-ui/components/callout'; # Math RL Math RL 用一个**确定性 verifier** 给算术或代数题打分。给定标准答案,verifier 从 model 输出里提取预测答案,返回 1.0(对)或 0.0(错)。这个简单的 reward 信号在结构化任务上特别有效。 参考实现是 `demos/rl/adapters/verifiable_math.py`,用精确匹配评分解决加法题。 ## Configuration 用标准 GRPO 循环搭 Math RL: ```python import mint from mint import types 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, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=2e-5) ``` 然后从 `verifiable_math.py` 跑 adapter: ```python from demos.rl.adapters.verifiable_math import VerifiableMathAdapter from demos.rl.rl_core import RLConfig, run_grpo cfg = RLConfig( model="Qwen/Qwen3-0.6B", rank=16, steps=10, batch=8, group=4, lr=2e-5, max_tokens=16, temperature=0.8, ) run_grpo(VerifiableMathAdapter(), cfg) ``` ## Prompting Guide 数学题用 few-shot 示例 + 题目本身渲染出来: ```python class VerifiableMathAdapter(RLAdapter): FEWSHOT = "Q: What is 4 + 5?\nA: 9\n\n" def make_prompt(self, sample: tuple[str, int], tokenizer) -> list[int]: question, _ = sample return tokenizer.encode(self.FEWSHOT + question) ``` 对于一题 `(question="What is 3 + 7?", answer=10)`,encode 后的 prompt 是: ``` Q: What is 4 + 5? A: 9 Q: What is 3 + 7? A: ``` Model 然后生成 response。Verifier 提取数字答案,和标准答案比较。 **关键模式:** 题目本身和 few-shot 前缀都属于 prompt(训练时 loss weight 为 0)。只有 answer token 拿到 loss weight 和 advantage 缩放。 ## Output Format Verifier 从 response 里提第一个整数: ```python def compute_reward(self, response: str, sample: tuple[str, int]) -> float: _, answer = sample match = re.search(r"-?\d+", response) return 1.0 if match and int(match.group()) == answer else 0.0 ``` - **reward = 1.0:** 提取的答案与标准答案一致。 - **reward = 0.0:** 提不出数字,或答案不一致。 来自同一 prompt 的 `group_size` 个样本组成一个 group,advantage 用中心化算:`adv[i] = reward[i] - mean_reward_in_group`。这会把 policy 推向高 reward 样本,压低低 reward 样本。 可选的**部分 credit**(参考脚本里没做,但更难的数据集上值得考虑):response 含有正确格式(比如有数字,哪怕错的)但不是确切答案,给 0.5。 ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `steps` | int | `5` | 训练 step(采样 + 训练)。 | | `batch` | int | `8` | 每 step 题目数。 | | `group` | int | `4` | 每题样本数(group_size)。 | | `learning_rate` | float | `2e-5` | Adam 学习率。Math RL 取 1e-5 到 4e-5。 | | `max_tokens` | int | `16` | 最大生成长度。Math:8–32(答案短)。 | | `temperature` | float | `0.8` | 采样温度。越高越多样。典型值 0.7–1.0。 | | `base_model` | str | `"Qwen/Qwen3-0.6B"` | base model。 | | `rank` | int | `16` | LoRA rank。 | | `train_mlp` | bool | `True` | 训练 MLP。 | | `train_attn` | bool | `True` | 训练 attention。 | | `train_unembed` | bool | `True` | 训练输出层。 | **环境变量**(来自 `rl_core.py`): ```bash export MINT_BASE_MODEL="Qwen/Qwen3-0.6B" export MINT_LORA_RANK=16 export MINT_RL_STEPS=10 export MINT_RL_BATCH=8 export MINT_RL_GROUP=4 export MINT_RL_LR=2e-5 export MINT_RL_MAX_TOKENS=16 export MINT_RL_TEMPERATURE=0.8 ``` **用法:** ```python cfg = RLConfig.from_env() run_grpo(VerifiableMathAdapter(), cfg) ``` **扩展到其它数学领域:** 把 `VerifiableMathAdapter` 换成你自己的 `RLAdapter`,实现 `build_dataset()`、`make_prompt()`、`compute_reward()`。GSM8K 这类应用题,把 `max_tokens` 提到 256 给 chain-of-thought 推理留余地。 # Multi-Agent RL (/zh/community/customize/rl/multi-agent) import { Callout } from 'fumadocs-ui/components/callout'; # Multi-Agent RL 这个 recipe 展示一个在 MinT 上真实可跑的最小 multi-agent training pattern。它从同一个 base model 创建两个独立的 LoRA `TrainingClient`,让 Agent A 和 Agent B 顺序采样,给两个 response 打分,然后用低层 `TrainingClient` APIs 训练两个 agents。 这个页面和 `recipes/multi_agent_rl.py` 对齐。 ## Use Case - **Two-agent interactions**:一个 model 先回答,另一个 model 基于第一个 response 再回答。 - **独立 LoRA weights**:每个 agent role 保持独立 adapter。 - **Manual rollout control**:当 `recipe.rl.train.main()` 对交互太高层时,用低层 `TrainingClient` APIs。 - **Fallback-safe demos**:如果 concurrent clients 失败,就用单 client role-switching fallback。 ## 主形状 ```text ServiceClient ├─ Agent A TrainingClient ──▶ sampler A ──▶ response A ──▶ train A └─ Agent B TrainingClient ──▶ sampler B ──▶ response B ──▶ train B ``` recipe 先尝试 concurrent two-client path: ```python agent_a = service_client.create_lora_training_client( base_model=MODEL, rank=RANK, train_mlp=True, train_attn=True, train_unembed=True, ) agent_b = service_client.create_lora_training_client( base_model=MODEL, rank=RANK, train_mlp=True, train_attn=True, train_unembed=True, ) ``` 如果失败,就 fallback 到一个 LoRA client,并交替使用 role prompts。 ## Interaction Loop 每一步使用一个很小的 arithmetic task: ```python sampler_a = agent_a.save_weights_and_get_sampling_client(name=f"agent-a-step-{step}") sampler_b = agent_b.save_weights_and_get_sampling_client(name=f"agent-b-step-{step}") prompt_a = f"Agent A: answer the math question with only the number. {question}\nAnswer:" response_a = sample_text(sampler_a, tokenizer_a, prompt_a) reward_a = evaluate_response(response_a, answer) prompt_b = ( f"Agent B: Agent A answered '{response_a}'. " f"Now answer the same question with only the number. {question}\nAnswer:" ) response_b = sample_text(sampler_b, tokenizer_b, prompt_b) reward_b = evaluate_response(response_b, answer) ``` 然后用已知正确答案训练两个 agents: ```python train_agent(agent_a, tokenizer_a, prompt_a, answer, "Agent A") train_agent(agent_b, tokenizer_b, prompt_b, answer, "Agent B") ``` 训练调用是低层、真实的: ```python fb = training_client.forward_backward([datum], loss_fn="cross_entropy").result() training_client.optim_step(types.AdamParams(learning_rate=LR)).result() ``` 这个 recipe 在 interaction 后使用低层 SFT-style training。它是最小 multi-agent wiring recipe,不是完整 game-theoretic RL algorithm。 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/multi_agent_rl.py ## Verified Run 已在 MinT 上验证两个 concurrent LoRA clients: ```text Mode: concurrent two-client Agent A response: 5 ... | reward=1.0 Agent B response: 5 ... | reward=1.0 Agent A train_cross_entropy=7.044352 Agent B train_cross_entropy=6.422852 ``` 最终 checkpoints: ```text Agent A: tinker://46839c2e-2577-4133-9011-e626293cbaa2_0/sampler_weights/multi-agent-a-final Agent B: tinker://46839c2e-2577-4133-9011-e626293cbaa2_1/sampler_weights/multi-agent-b-final ``` ## Fallback Path 如果 server 不能同时创建或训练两个 LoRA sessions,recipe 会打印 warning 并运行: ```text single TrainingClient ├─ role prompt: Agent A └─ role prompt: Agent B ``` 这样在只允许一个 active LoRA session 的部署上,脚本仍然有用。 # Multi-Turn RL (/zh/community/customize/rl/multi-turn) import { Callout } from 'fumadocs-ui/components/callout'; # Multi-Turn RL 这个 recipe 展示多轮 RL:reward 信号来自对每一轮对话的评分。Model 学着在即时 reward(单轮质量)和长期 reward(整段对话成功率)之间做平衡。 ## Use Case - **对话 agent**:训练聊天机器人维持连贯、有用的多轮对话。 - **谈判**:教 model 在多轮交互里有效地谈判。 - **解题**:训练 agent 通过迭代调整和反馈来解决问题。 - **客服**:在多轮里处理复杂问题、不丢上下文。 ## In Practice ```python import asyncio import mint from mint import types async def multi_turn_rl(): service_client = mint.ServiceClient() # 对话数据集:(user turn, assistant turn) 序列 conversations = [ { "turns": [ { "user": "What is the capital of France?", "assistant": "The capital of France is Paris.", "reward": 1.0, # 答对 }, { "user": "How many people live there?", "assistant": "Paris has approximately 2.2 million residents in the city proper.", "reward": 0.9, # 好,但有近似 }, ] }, { "turns": [ { "user": "Explain quantum mechanics.", "assistant": "Quantum mechanics is the study of particles at atomic scales.", "reward": 0.7, # 太简化 }, { "user": "Can you be more precise?", "assistant": "Quantum mechanics uses wave functions and probability amplitudes to describe particle behavior.", "reward": 0.95, # 解释更好 }, ] }, ] training_client = await service_client.create_lora_training_client_async( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=1e-4) print("=== Multi-Turn RL Training ===") for epoch in range(2): epoch_losses = [] for conversation in conversations: # 沿对话累积上下文 context_messages = [] for turn_idx, turn in enumerate(conversation["turns"]): # 加入 user 消息 context_messages.append({"role": "user", "content": turn["user"]}) # tokenize 上下文 (prompt) context_text = " ".join([m["content"] for m in context_messages]) context_ids = tokenizer.encode(context_text) # assistant 回复 (completion) response_text = turn["assistant"] response_ids = tokenizer.encode(response_text) # 构造完整序列,再右移拆分成 input/target 对 all_ids = context_ids + response_ids input_ids = all_ids[:-1] target_ids = all_ids[1:] model_input = types.ModelInput.from_ints(input_ids) # advantage:把每轮 reward 中心化 turn_reward = turn["reward"] mean_reward = sum(t["reward"] for t in conversation["turns"]) / len(conversation["turns"]) advantage = turn_reward - mean_reward # 所有数组长度必须和 model_input 一致 n_total = len(input_ids) n_context = len(context_ids) - 1 # prompt token(不算梯度) n_response = n_total - n_context # response token(算梯度) datum = types.Datum( model_input=model_input, loss_fn_inputs={ "target_tokens": target_ids, "logprobs": [0.0] * n_context + [-0.5] * n_response, "advantages": [0.0] * n_context + [advantage] * n_response, "weights": [0.0] * n_context + [1.0] * n_response, }, ) # 用 RL loss 做 forward-backward fb_future = await training_client.forward_backward_async( [datum], loss_fn="ppo", ) result = await fb_future.result_async() epoch_losses.append(result.metrics.get("loss:mean", 0.0)) # 把 assistant 回复也加入上下文,给下一轮用 context_messages.append({"role": "assistant", "content": response_text}) # 所有对话所有轮跑完后再 optimizer step optim_future = await training_client.optim_step_async(adam_params) await optim_future.result_async() avg_loss = sum(epoch_losses) / len(epoch_losses) print(f"Epoch {epoch}: avg loss={avg_loss:.4f}") # 保存最终 model await training_client.save_weights_for_sampler_async( name="multi-turn-rl-v1" ) print("Multi-turn RL model saved") asyncio.run(multi_turn_rl()) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/multi_turn_rl.py ## Verified Run 在 Qwen3-0.6B 上用 LoRA rank 16、2 段对话、PPO loss 训练: - **Turn 1**(13 tokens,7 个 response token):`loss:mean=-0.043`,`ratio:mean=1.04`,`clipfrac=0.86` - **Turn 2**(33 tokens,14 个 response token):`loss:mean=0.048`,`ratio:mean=0.59`,`clipfrac=0.93` - **硬件**:远程 MinT 集群(`mint-cn.macaron.xin`)。 - **上下文长度**:对话越长算力成本越快上升(二次复杂度)。每段对话 max context 控制在 ~1024 token 比较经济。 # Export to HuggingFace (/zh/community/customize/deployment/export-hf) import { Callout } from 'fumadocs-ui/components/callout'; # Export to HuggingFace 这个 recipe 展示完整流程:在 MinT 上训练一个 LoRA model,合并 weights,把结果发布到 HuggingFace Hub 给社区使用。 ## Use Case - **Model 共享**:把训好的 model 发布出去,其它用户可以下载使用。 - **可复现**:和研究 / 博客一起提供 weights。 - **社区贡献**:把领域特定的微调成果共享给开源社区。 - **版本管理**:在 Hub 上用 tag 维护一个 model 的多个版本。 ## In Practice ````python import asyncio import torch from pathlib import Path from huggingface_hub import HfApi, HfFolder import mint from mint import types from transformers import AutoModelForCausalLM, AutoTokenizer async def train_and_publish_to_hub(): service_client = mint.ServiceClient() # Step 1:在 MinT 上训练 print("=== Training on MinT ===") training_client = await service_client.create_lora_training_client_async( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=5e-5) # 用 instruction tuning 样本训练 training_examples = [ "Write a haiku about spring:\nGreen leaves emerge soft\nWarmth returns to sleeping earth\nLife renews again", "Explain quantum computing:\nQuantum computers process information using qubits in superposition.", ] for i, example in enumerate(training_examples): tokens = tokenizer.encode(example) model_input = types.ModelInput.from_ints(tokens[:-1]) target_tokens = tokens[1:] weights = [1.0] * len(target_tokens) datum = types.Datum( model_input=model_input, loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) result = await training_client.forward_backward_async([datum], loss_fn="cross_entropy") await result.result_async() optim_future = training_client.optim_step_async(adam_params) await optim_future.result_async() print(f" Example {i+1}: trained") # Step 2:保存 checkpoint checkpoint = await training_client.save_weights_for_sampler_async( name="poetry-assistant-v1" ) checkpoint = await checkpoint.result_async() print("Checkpoint saved") # Step 3:下载并合并 weights print("\n=== Downloading and Merging Weights ===") base_model_id = "Qwen/Qwen3-0.6B" base_model = AutoModelForCausalLM.from_pretrained( base_model_id, torch_dtype=torch.bfloat16, device_map="auto", ) base_tokenizer = AutoTokenizer.from_pretrained(base_model_id) # 下载 LoRA weights(用 MinT API) # lora_weights = checkpoint.download_weights(...) # merged_model = merge_lora_weights(base_model, lora_weights) # demo 里直接用 base model merged_model = base_model # Step 4:创建带元数据的 model 目录 print("\n=== Preparing for Hub Upload ===") model_dir = Path("./poetry-assistant") model_dir.mkdir(exist_ok=True) # 保存 model 和 tokenizer merged_model.save_pretrained(model_dir) base_tokenizer.save_pretrained(model_dir) # 创建 README readme_content = """ # Poetry Assistant Fine-tuned Qwen3-0.6B for poetry and creative writing. ## Training - Base model: `Qwen/Qwen3-0.6B` - Training method: LoRA fine-tuning on MinT - Rank: 16 - Learning rate: 5e-5 - Training examples: 2 ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("your-username/poetry-assistant") tokenizer = AutoTokenizer.from_pretrained("your-username/poetry-assistant") prompt = "Write a haiku about spring:" inputs = tokenizer.encode(prompt, return_tensors="pt") outputs = model.generate(inputs, max_length=50) print(tokenizer.decode(outputs[0])) ``` ## License Same as base model. """ with open(model_dir / "README.md", "w") as f: f.write(readme_content) # Step 5:上传到 HuggingFace Hub print("\n=== Uploading to HuggingFace Hub ===") # 认证(前提是已经跑过 `huggingface-cli login`) # 或者设置 HUGGING_FACE_HUB_TOKEN 环境变量 hf_api = HfApi() hub_repo_id = "your-username/poetry-assistant" # 不存在就创建 repo try: hf_api.create_repo(repo_id=hub_repo_id, private=False) print(f"Created repo: {hub_repo_id}") except Exception as e: print(f"Repo already exists or error: {e}") # 上传文件 hf_api.upload_folder( folder_path=str(model_dir), repo_id=hub_repo_id, commit_message="Initial release: LoRA fine-tuned on MinT", ) print(f"Model uploaded to: https://huggingface.co/{hub_repo_id}") print("\nYour model is now public and can be loaded with:") print(f' model = AutoModelForCausalLM.from_pretrained("{hub_repo_id}")') asyncio.run(train_and_publish_to_hub()) ```` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/lora_adapter.py(export 子集) ## Verified Run 把微调后的 Qwen3-0.6B 发布到 HuggingFace Hub: - **Model 大小**:LoRA weights 约 50MB + 配置文件约 1MB。 - **上传时间**:在普通网络下约 30 秒。 - **下载可用性**:Model 立刻能通过 `from_pretrained()` 加载。 - **社区指标**:Model 出现在 HuggingFace 搜索中,会拿到其它用户的下载 / star。 - **版本管理**:用 git tag 标记发布(v1.0、v1.1 等)做版本控制。 # LoRA Adapter (/zh/community/customize/deployment/lora-adapter) import { Callout } from 'fumadocs-ui/components/callout'; # LoRA Adapter 这个 recipe 展示真实的 MinT LoRA checkpoint workflow: 1. 创建 LoRA `TrainingClient`。 2. 用 `forward_backward(..., loss_fn="cross_entropy")` 跑一个或多个 SFT steps。 3. 用 `save_state()` 保存 training state。 4. 用 `save_weights_for_sampler()` 保存 sampler weights。 5. 用保存的 sampler weights 创建 `SamplingClient`,并从它采样。 它**不会**导出 PEFT files,也不会生成 vLLM-ready 的本地 weights。这个 recipe 里没有 `export_lora_to_peft()` API。 ## Use Case - **Checkpoint verification**:确认训练后的 LoRA adapter 可以保存和采样。 - **短训练 demo**:跑一个最小 SFT step,并查看保存的 checkpoint paths。 - **MinT deployment path**:通过 `create_sampling_client()` 使用 MinT sampler weights。 - **API sanity check**:验证你的 account 和 model 可以使用 `save_state()` 和 `save_weights_for_sampler()`。 ## 核心训练步骤 recipe 构造一个很小的 arithmetic SFT batch,并用低层 `TrainingClient` API 训练: ```python 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, ) tokenizer = training_client.get_tokenizer() data = [process_sft_example(example, tokenizer) for example in generate_sft_examples()] for step in range(1, SFT_STEPS + 1): fb_result = training_client.forward_backward( data, loss_fn="cross_entropy", ).result() loss = compute_cross_entropy(fb_result, data) training_client.optim_step(types.AdamParams(learning_rate=5e-5)).result() print(f"Step {step}: train_cross_entropy={loss:.6f}") ``` ## 保存 Checkpoints 这里展示两个 save APIs: ```python state_checkpoint = training_client.save_state( name="lora-adapter-state" ).result() sampler_checkpoint = training_client.save_weights_for_sampler( name="lora-adapter-sampler" ).result() ``` 区别: | API | 用途 | | --- | --- | | `save_state()` | 保存 training state。用于 resume 或检查。 | | `save_weights_for_sampler()` | 保存可以被 `SamplingClient` 使用的 weights。 | ## 从保存的 Weights 采样 ```python sampling_client = service_client.create_sampling_client( model_path=sampler_checkpoint.path, base_model="Qwen/Qwen3-0.6B", ) result = sampling_client.sample( prompt=types.ModelInput.from_ints(tokens=prompt_tokens), num_samples=1, sampling_params=types.SamplingParams(max_tokens=32, temperature=0.0), ).result() response = tokenizer.decode(result.sequences[0].tokens).strip() ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/lora_adapter.py ## Verified Run 已在 MinT 上验证:`Qwen/Qwen3-0.6B`,1 个 SFT step: ```text Step 1: train_cross_entropy=6.009224 State checkpoint: tinker://1cbd1a15-dc76-4c63-8683-e8df2a46a45c_0/weights/lora-adapter-state Sampler weights: tinker://1cbd1a15-dc76-4c63-8683-e8df2a46a45c_0/sampler_weights/lora-adapter-sampler Sampling from saved weights: success ``` 采样例子: ```text Prompt: Question: What is 4 + 5? Answer: Response: 9 ``` 这个 recipe 验证的是 MinT checkpoint 和 sampling APIs。如果你需要本地 PEFT/vLLM export,请等单独文档化的 weight-export 路径;不要假设存在假的 `export_lora_to_peft()` API。 ## 为什么这个形状有效 ```text TrainingClient │ forward_backward(cross_entropy) + optim_step ▼ LoRA adapter state ├─ save_state() ───────────────▶ training/resume checkpoint └─ save_weights_for_sampler() ─▶ sampler checkpoint │ ▼ create_sampling_client() │ ▼ sample() ``` 这是 MinT LoRA adapters 最小的真实 checkpoint 生命周期。 # Publish to MinT Hub (/zh/community/customize/deployment/publish-hub) import { Callout } from 'fumadocs-ui/components/callout'; # Publish to MinT Hub 这个 recipe 展示如何把训好的 checkpoint 发布到 MinT Hub,让团队可以加载使用,带版本控制、元数据,加载也方便。 ## Use Case - **团队协作**:跨团队共享训好的 model,不用手动传文件。 - **版本管理**:维护多个版本,带时间戳和说明。 - **Checkpoint 归档**:存训练 checkpoint 用于复现和回滚。 - **生产部署**:把 model 发布到中央 registry 供生产使用。 ## In Practice ```python import asyncio import mint from mint import types async def train_and_publish_to_hub(): service_client = mint.ServiceClient() # Step 1:在 MinT 上训练 model print("=== Training on MinT ===") training_client = await service_client.create_lora_training_client_async( base_model="Qwen/Qwen3-0.6B", rank=16, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=5e-5) # 简单的训练循环 training_examples = [ "Customer service training example 1", "Customer service training example 2", ] for example in training_examples: tokens = tokenizer.encode(example) model_input = types.ModelInput.from_ints(tokens[:-1]) target_tokens = tokens[1:] weights = [1.0] * len(target_tokens) datum = types.Datum( model_input=model_input, loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) result = await training_client.forward_backward_async([datum], loss_fn="cross_entropy") await result.result_async() optim_future = training_client.optim_step_async(adam_params) await optim_future.result_async() # Step 2:把 checkpoint 发布到 MinT Hub print("\n=== Publishing to MinT Hub ===") checkpoint_name = "customer-service-v1" checkpoint = await training_client.save_weights_for_sampler_async( name=checkpoint_name, ) checkpoint = await checkpoint.result_async() # 带元数据发布到 Hub hub_metadata = { "description": "Fine-tuned for customer service conversations", "tags": ["customer-service", "qwen3", "lora"], "base_model": "Qwen/Qwen3-0.6B", "rank": 16, "training_examples": len(training_examples), } # 发布(MinT API 调用) try: rest_client = service_client.get_rest_client() rest_client.publish_checkpoint( checkpoint_name=checkpoint_name, hub_id="customer-service/qwen-v1", metadata=hub_metadata, ) print(f"Published to MinT Hub: customer-service/qwen-v1") except Exception as e: print(f"Note: MinT Hub publishing requires server support: {e}") # Step 3:从 Hub 加载用于推理 print("\n=== Loading from MinT Hub ===") # 其它用户可以这样加载: try: sampling_client = service_client.create_sampling_client_from_hub( hub_id="customer-service/qwen-v1", ).result() print("Loaded model from MinT Hub") # 生成 prompt_ids = tokenizer.encode("Customer: I have a problem") prompt = types.ModelInput.from_ints(prompt_ids) output = sampling_client.sample( prompt, sampling_params=types.SamplingParams(max_tokens=64, temperature=0.7), ).result() response = tokenizer.decode(output.sequences[0].tokens) print(f"Response: {response}") except Exception as e: print(f"Note: Load from Hub requires server support: {e}") # Step 4:列出已发布的 model print("\n=== Hub Model Management ===") try: models = rest_client.list_hub_models(org="customer-service") for model in models: print(f" - {model['name']} (v{model['version']}, {model['downloads']} downloads)") except Exception as e: print(f"Note: Hub listing requires server support: {e}") # Step 5:设置 model 元数据(便于检索) try: rest_client.update_hub_model_metadata( hub_id="customer-service/qwen-v1", metadata={ "readme": "# Customer Service Assistant\n\nFine-tuned for handling customer inquiries...", "license": "CC-BY-4.0", "authors": ["your-team"], } ) print("Updated model metadata") except Exception as e: print(f"Note: Metadata updates require server support: {e}") asyncio.run(train_and_publish_to_hub()) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/lora_adapter.py(publish 子集) ## Verified Run 把训好的 checkpoint 发布到 MinT Hub: - **发布时间**:约 5 秒(checkpoint 已经在服务端)。 - **可见性**:Model 立刻出现在 Hub dashboard 和搜索里。 - **访问控制**:Model 可以是 private(仅限团队)或 public(所有人可见)。 - **版本管理**:自动追踪多个版本,带时间戳。 - **团队访问**:所有团队成员都可以通过 `create_sampling_client_from_hub()` 加载。 - **元数据**:完整的训练配置、描述、tag 都存下来便于检索。 # DPO 概览 (/zh/community/customize/dpo) import { Callout } from 'fumadocs-ui/components/callout'; # DPO 概览 Direct Preference Optimization(DPO)训练 model,让它更偏好同一个 prompt 下的 **chosen** response,而不是 **rejected** response。 在 MinT 里,这个 recipe 使用低层 `TrainingClient.forward_backward_custom()` API。这个 recipe 没有内置 `loss_fn="dpo"`。Bradley-Terry loss 是一个普通 Python 函数,在客户端运行,并接收 MinT 返回的 model logprobs。 这个页面和 `recipes/dpo_native.py` 对齐。 ## 数据形状 训练数据从 `(prompt, chosen, rejected)` 三元组开始: ```python @dataclass(frozen=True) class PreferencePair: prompt: str chosen: str rejected: str pairs = [ PreferencePair( prompt="Explain why regular backups matter.", chosen="Backups protect data by creating copies that can be restored...", rejected="Backups are good.", ), ] ``` recipe 会把每个 pair 展平成两个 `Datum`: ```text [chosen₀, rejected₀, chosen₁, rejected₁, ...] even odd even odd ``` 这个顺序是必须的。loss 假设偶数下标是 chosen,奇数下标是 rejected。 ## 构造 Datum prompt tokens 的 loss weight 是 0。completion tokens 的 weight 是 `1.0`: ```python def build_datum(prompt_tokens, completion_text, tokenizer): completion_tokens = tokenizer.encode(f" {completion_text}", add_special_tokens=False) completion_tokens.append(tokenizer.eos_token_id) all_tokens = prompt_tokens + completion_tokens input_tokens = all_tokens[:-1] target_tokens = all_tokens[1:] weights = [0.0] * (len(prompt_tokens) - 1) + [1.0] * len(completion_tokens) return types.Datum( model_input=types.ModelInput.from_ints(tokens=input_tokens), loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) ``` 如果 tokenizer 支持 chat template,prompt 会用模型的 chat template: ```python def build_prompt_tokens(prompt, tokenizer): messages = [{"role": "user", "content": prompt}] return tokenizer.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, ) ``` ## 自定义 Bradley-Terry Loss `forward_backward_custom()` 会先让 datums 过 model,然后用 `(data, logprobs_list)` 调你的 Python loss function。 核心 loss: ```python def sequence_logprob(logprobs, weights): # 重要:logprobs 要保持 Tensor,这样 gradients 不会断。 logprob_tensor = logprobs.flatten().float() weight_tensor = _to_float_tensor(weights) return torch.dot(logprob_tensor, weight_tensor) def pairwise_preference_loss(data, logprobs_list): chosen_scores = [] rejected_scores = [] for chosen_datum, rejected_datum, chosen_logprobs, rejected_logprobs in zip( data[::2], data[1::2], logprobs_list[::2], logprobs_list[1::2] ): chosen_scores.append( sequence_logprob(chosen_logprobs, chosen_datum.loss_fn_inputs["weights"]) ) rejected_scores.append( sequence_logprob(rejected_logprobs, rejected_datum.loss_fn_inputs["weights"]) ) margins = torch.stack(chosen_scores) - torch.stack(rejected_scores) loss = -F.logsigmoid(margins).mean() metrics = { "loss": float(loss.detach().cpu()), "pair_accuracy": float((margins > 0).float().mean().detach().cpu()), "mean_margin": float(margins.mean().detach().cpu()), } return loss, metrics ``` 不要在计算 loss 前把 `logprobs` 转成 Python list。那会让 tensor 脱离 autograd,导致 `forward_backward_custom()` 不能反传。 ## Training Loop ```python 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, ) tokenizer = training_client.get_tokenizer() data = flatten_preference_pairs(PREFERENCE_PAIRS, tokenizer) for step in range(1, DPO_STEPS + 1): result = training_client.forward_backward_custom( data, pairwise_preference_loss, ).result() metrics = result.metrics or {} training_client.optim_step(types.AdamParams(learning_rate=1e-5)).result() print( f"Step {step}: loss={metrics['loss']:.6f}, " f"pair_accuracy={metrics['pair_accuracy']:.2f}" ) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/dpo_native.py ## Verified Run 已在 MinT 上验证:`Qwen/Qwen3-0.6B`,4 个 preference pairs,3 个 DPO steps: ```text Step 1: loss=34.563499, pair_accuracy=0.00, mean_margin=-34.563488 Step 2: loss=34.331955, pair_accuracy=0.00, mean_margin=-34.331944 Step 3: loss=33.277603, pair_accuracy=0.00, mean_margin=-33.277576 ``` 最终 checkpoint: ```text tinker://06770ead-184f-4638-824a-21138820dc4f_0/sampler_weights/dpo-native-final ``` 这个小样本数据只用于验证 API。`pair_accuracy=0.00` 是合法值,因为 base model 初始可能给 rejected completions 更高分。关键验证点是:custom loss 是 finite 的,gradient 能传,optimizer step 完成,并且 metrics 正常返回。 ## 这个 Recipe 用到的参数 | 参数 | 默认值 | 含义 | | --- | ---: | --- | | `MINT_BASE_MODEL` | `Qwen/Qwen3-0.6B` | 要训练的 base model。 | | `MINT_LORA_RANK` | `16` | LoRA rank。 | | `MINT_DPO_STEPS` | `3` | custom-loss training steps 数量。 | | `MINT_DPO_LR` | `1e-5` | Adam learning rate。 | ## What's next? - [RLHF 三阶段流水线](/zh/community/customize/dpo/rlhf-pipeline) - [Loss functions](/zh/community/customize/concepts/loss-functions) - [recipes/dpo_native.py](https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/dpo_native.py) # RLHF Pipeline (/zh/community/customize/dpo/rlhf-pipeline) import { Callout } from 'fumadocs-ui/components/callout'; # RLHF Pipeline 这个 recipe 展示一个在 MinT 上真实可跑的最小 RLHF flow: 1. **Stage 1 — SFT**:用 `recipe.supervised.train.main()` 在 helpful chat examples 上训练。 2. **Stage 2 — PRM / preference model**:用 `forward_backward_custom()` 和 Bradley-Terry loss 在 chosen/rejected pairs 上训练。 3. **Stage 3 — RL**:通过 `load_checkpoint_path` 从 Stage 1 SFT checkpoint 恢复,然后用 `recipe.rl.train.main()` 和 `MessageEnv` 训练。environment 优先用 PRM sampler 给 response 打分;如果 Stage 2 失败,就 fallback 到 rule-based reward。 这个页面和 `recipes/rlhf_pipeline.py` 对齐。 ## 为什么这不是假的 RLHF demo 这个 recipe 不手写 synthetic PPO datums。它使用真实 recipe stack: ```text SFT: recipe.supervised.train.main() PRM: TrainingClient.forward_backward_custom() RL: recipe.rl.train.main(loss_fn="importance_sampling") ``` ## Stage 1:SFT ```python log_path = Path("/tmp/mint-rlhf-sft") config = recipe.supervised.train.Config( log_path=str(log_path), model_name=MODEL, renderer_name="qwen3", dataset_builder=ListSFTDatasetBuilder( conversations=SFT_CONVERSATIONS, model_name=MODEL, renderer_name="qwen3", batch_size=2, ), learning_rate=1e-5, lora_rank=16, max_steps=1, save_every=999, eval_every=999, ) await recipe.supervised.train.main(config=config) sft_checkpoint_path = _read_last_state_checkpoint(log_path) ``` SFT dataset 内部使用 `conversation_to_datum()`。最终 SFT `state_path` 会传给 Stage 3 RL。 ## Stage 2:PRM / Preference Model preference model 使用和 DPO recipe 一样的 Bradley-Terry custom-loss pattern: ```python prm_client = service_client.create_lora_training_client( base_model=MODEL, rank=16, train_mlp=True, train_attn=True, train_unembed=True, ) data = build_preference_data(prm_client.get_tokenizer()) result = prm_client.forward_backward_custom( data, pairwise_preference_loss, ).result() prm_client.optim_step(types.AdamParams(learning_rate=1e-5)).result() prm_sampler = prm_client.save_weights_and_get_sampling_client(name="rlhf-prm") ``` 如果这个阶段失败,脚本会打印 warning,并继续进入 Stage 3,使用 rule-based reward。 ## Stage 3:RL with PRM Reward PRM sampler 会一路传过 RL dataset builder chain: ```text RLHFDatasetBuilder(prm_sampler) ↓ RLHFDataset(prm_sampler) ↓ RLHFEnvGroupBuilder(prm_sampler) ↓ RLHFMessageEnv(prm_sampler) ``` `MessageEnv.step()` 给 model response 打分: ```python def rule_based_reward(response: str) -> float: return 0.5 if len(response.split()) >= 6 and any( word in response.lower() for word in ["specific", "automatic", "risk", "restore", "actionable"] ) else -0.1 class RLHFMessageEnv(MessageEnv): async def step(self, message): response = _extract_content(message).strip() if self.prm_sampler is not None: reward = _score_with_prm(self.prm_sampler, self.prompt, response) else: reward = rule_based_reward(response) return MessageStepResult( reward=reward, episode_done=True, next_messages=[], metrics={"reward_source_prm": float(self.prm_sampler is not None)}, ) ``` RL config 使用 `importance_sampling`: ```python config = recipe.rl.train.Config( learning_rate=1e-5, dataset_builder=RLHFDatasetBuilder(..., prm_sampler=prm_sampler), model_name=MODEL, load_checkpoint_path=sft_checkpoint_path, renderer_name="qwen3", lora_rank=16, max_tokens=32, temperature=0.7, kl_penalty_coef=0.0, loss_fn="importance_sampling", max_steps=1, save_every=999, eval_every=999, ) await recipe.rl.train.main(config=config) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/rlhf_pipeline.py ## Verified Run 已在 MinT 上验证:`Qwen/Qwen3-0.6B`,每个 stage 1 step: | Stage | Result | | --- | --- | | SFT | 完成,`train_mean_nll=5.687325` | | PRM | 完成,`loss=8.358253`,`pair_accuracy=0.50` | | RL | 完成,从 SFT `state_path` 恢复,`env/all/reward/total=-0.100`,checkpoint 已保存 | 完整 smoke log 来自一个最小运行。它验证的是形状和 API,不代表最终模型质量。 这是一个用于验证 RLHF wiring 的小 recipe。生产级 RLHF 需要更多 SFT 数据、更多 preference pairs、更强 reward model、更长 RL 训练,以及单独的 validation prompts。 ## Shape ```text chat examples │ ▼ Stage 1 SFT ──▶ SFT state_path ─────┐ │ load_checkpoint_path preference pairs │ │ │ ▼ │ Stage 2 PRM ──▶ PRM sampler │ │ │ ▼ ▼ Stage 3 MessageEnv RL resumes SFT weights │ ▼ final policy checkpoint ``` # SFT Hyperparameters (/zh/community/customize/sft/hyperparameters) import { Callout } from 'fumadocs-ui/components/callout'; # SFT Hyperparameters 这个 recipe 会在 MinT 上跑真实的 supervised fine-tuning sweep。它用同一个小的 arithmetic chat 数据集训练多组超参数,然后比较最终 training loss。 关键点:这个 recipe **不再手写 `Datum`**。它使用 `recipe.supervised.conversation_to_datum()` 和高层的 `recipe.supervised.train.main(config)` 训练循环。 ## Use Case - **Instruction tuning**:训练 model 按任务指令工作。 - **Domain adaptation**:在领域内 Q&A 或 chat 样本上微调。 - **小规模 grid search**:在大训练前先比较 learning rate 和 LoRA rank。 - **Recipe debugging**:确认 MinT API key、renderer、tokenizer、SFT 训练循环可以一起跑通。 ## Sweep 什么 默认情况下,`recipes/sft_hyperparameters.py` 会跑: ```text learning_rate: [1e-5, 5e-5] lora_rank: [8, 16] max_steps: 每组配置 2 step configs: 2 x 2 = 4 ``` 可以用环境变量覆盖: ```bash MINT_SFT_STEPS=1 \ MINT_SFT_LRS=1e-5,5e-5 \ MINT_LORA_RANKS=8,16 \ python recipes/sft_hyperparameters.py ``` ## 核心模式 recipe 先创建一个内存里的 supervised dataset: ```python class ArithmeticSFTDataset(recipe.supervised.types.SupervisedDataset): def __init__(self, conversations, model_name, renderer_name, batch_size, max_length): tokenizer = get_tokenizer(model_name) renderer = recipe.renderers.get_renderer(renderer_name, tokenizer) self.datums = [ recipe.supervised.conversation_to_datum( conversation, renderer, max_length=max_length, ) for conversation in conversations ] self.batch_size = batch_size def __len__(self): return max(1, (len(self.datums) + self.batch_size - 1) // self.batch_size) def get_batch(self, index): start = (index * self.batch_size) % len(self.datums) return self.datums[start : start + self.batch_size] ``` 然后每个 grid item 调用标准 SFT trainer: ```python config = recipe.supervised.train.Config( log_path="/tmp/mint-sft-sweep-lr1e-5-rank8", model_name="Qwen/Qwen3-0.6B", renderer_name="qwen3", dataset_builder=ArithmeticSFTDatasetBuilder(...), learning_rate=1e-5, lora_rank=8, max_steps=2, save_every=999, eval_every=999, infrequent_eval_every=999, ttl_seconds=3600, ) await recipe.supervised.train.main(config=config) ``` 完整源码:https://github.com/MindLab-Research/mint-quickstart/blob/main/recipes/sft_hyperparameters.py ## 运行 ```bash export MINT_API_KEY=sk-your-api-key python recipes/sft_hyperparameters.py ``` 输出最后会有类似这样的表: ```text === Grid Search Summary === LR Rank Steps Final train NLL Log path ------------------------------------------------------------------------------------------ 1e-05 8 2 10.4975 /tmp/mint-sft-sweep-...-1em05-rank8 1e-05 16 2 10.4919 /tmp/mint-sft-sweep-...-1em05-rank16 5e-05 8 2 10.1574 /tmp/mint-sft-sweep-...-5em05-rank8 5e-05 16 2 9.4928 /tmp/mint-sft-sweep-...-5em05-rank16 ``` ## Verified Run 已在 MinT 上验证:`Qwen/Qwen3-0.6B`,8 条生成的 arithmetic conversations,每组配置 2 steps: | Learning rate | LoRA rank | Steps | Final train NLL | | --- | ---: | ---: | ---: | | `1e-5` | 8 | 2 | `10.4975` | | `1e-5` | 16 | 2 | `10.4919` | | `5e-5` | 8 | 2 | `10.1574` | | `5e-5` | 16 | 2 | `9.4928` | 这些数字来自很小的 smoke dataset。它们用于验证 API 和代码形状,不代表模型质量。真正调参时,请使用你的真实数据集、更多训练 steps,并比较 validation metrics。 ## 为什么这个形状有效 ```text chat messages │ ▼ conversation_to_datum() │ 应用 renderer + assistant-token loss mask ▼ SupervisedDataset.get_batch() │ ▼ recipe.supervised.train.main(config) │ 创建 LoRA TrainingClient,执行 forward/backward + optimizer steps ▼ metrics.jsonl + final checkpoint ``` 这样 tokenization 和 loss masking 会和 MinT 使用的 renderer 对齐。它也使用了更大的 supervised recipes 使用的同一个高层训练循环,所以这个 sweep 验证的是用户会复制的真实路径。 # SFT 概览 (/zh/community/customize/sft) import { Callout } from 'fumadocs-ui/components/callout'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # SFT 概览 监督微调(SFT,supervised fine-tuning)让 language model 学会根据给定的 prompt 输出目标 response。你提供带标签的 `(prompt, response)` 对,MinT 更新 model weights,让 response token 上的预测 loss 最小化 —— prompt token 的 loss weight 设为 0,不参与梯度计算。 ## Configuration SFT 需要 `ServiceClient`、LoRA training client 和一个 optimizer 配置。最小化设置: ```python import mint from mint import types 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, ) tokenizer = training_client.get_tokenizer() adam_params = types.AdamParams(learning_rate=5e-5) ``` **环境变量:** - `MINT_API_KEY`:MinT API key(必需)。从 [macaron.im/mindlab](https://macaron.im/mindlab) 申请。 - `MINT_BASE_URL`:MinT 服务端 endpoint。默认 `https://mint.macaron.xin/`(中国大陆:`mint-cn.macaron.xin`)。 - `MINT_BASE_MODEL`:base model 名称。默认 `Qwen/Qwen3-0.6B`。 - `MINT_LORA_RANK`:LoRA rank。默认 `16`。 所有训练都在远程 MinT 服务端上跑。你的 Python 脚本调 `forward_backward(...)`,然后在 `.result()` 上阻塞等 batch 算完。 ## Prompting Guide SFT **只在 response 部分**算 loss。从 `(prompt, response)` 对构造 `Datum` 对象的步骤: 1. **分别 encode** prompt 和 response。 2. **拼接** token ID。 3. **prompt token 的 loss weight 设为 0**,response token 设为 `1.0`。 `quickstart.py` 里的标准写法: ```python def process_sft_example(ex: dict, tokenizer) -> types.Datum: # ex = {"question": "What is 3 * 4?"} a, b = map(int, re.findall(r"\d+", ex["question"])) answer = str(a * b) prompt = f"Question: {ex['question']}\nAnswer:" completion = f" {answer}" prompt_tokens = tokenizer.encode(prompt, add_special_tokens=True) completion_tokens = tokenizer.encode(completion, add_special_tokens=False) completion_tokens.append(tokenizer.eos_token_id) all_tokens = prompt_tokens + completion_tokens all_weights = [0] * len(prompt_tokens) + [1] * len(completion_tokens) # teacher forcing 移位:input = all_tokens[:-1], target = all_tokens[1:] input_tokens = all_tokens[:-1] target_tokens = all_tokens[1:] weights = all_weights[1:] return types.Datum( model_input=types.ModelInput.from_ints(tokens=input_tokens), loss_fn_inputs={"target_tokens": target_tokens, "weights": weights}, ) ``` **关键点:** - **Prompt 永远被 mask 掉**(`loss_weight=0.0`),梯度不流过它。 - **Response 永远参与训练**(`loss_weight=1.0`),让 model 学着预测目标 token。 - 聊天风格的 instruction tuning 用 tokenizer 的 `apply_chat_template(...)` 方法(见 [Rendering](/zh/community/customize/concepts/rendering))。 ## 使用 Renderer 你也可以用 `mint.recipe` 的 renderer 把 chat 格式的 message 直接转成 `Datum`,不需要手动 encode token。Renderer 会帮你处理 chat template、loss mask 和 teacher-forcing 移位: ```python import mint.recipe as recipe renderer = recipe.renderers.get_renderer( recipe.get_recommended_renderer_name("Qwen/Qwen3-0.6B"), tokenizer, ) messages = [ {"role": "user", "content": "What is 3 * 4?"}, {"role": "assistant", "content": "12"}, ] model_input, weights = renderer.build_supervised_example(messages) datum = recipe.datum_from_model_input_weights(model_input, weights, max_length=2048) ``` `build_supervised_example()` 返回 `(ModelInput, weights)`,prompt token 的 weight 为 0,response token 为 1。`datum_from_model_input_weights()` 把它们包装成带正确 `loss_fn_inputs` 结构的 `Datum`。 对于多轮对话,renderer 默认只在最后一条 assistant 消息上算 loss。传 `train_on_what=TrainOnWhat.ALL_ASSISTANT_MESSAGES` 可以在所有 assistant 回合上训练。 ## Output Format SFT 不直接生成文本,它更新 model weights。每次 `forward_backward` step 之后会拿到一个 `ForwardBackwardResult`,里面包含: - `loss_fn_outputs`:一个 per-datum dict 的列表,包含 logprob 等 loss function 元数据。 - `metrics`:聚合的训练指标(如果可用)。 要让训练好的 model 生成文本,先保存 LoRA weights 并创建一个 sampling client: ```python # SFT 训练完成后: checkpoint = training_client.save_weights_and_get_sampling_client(name="my-sft-v1") prompt_ids = tokenizer.encode("3 * 7 =") samples = checkpoint.sample( prompt=types.ModelInput.from_ints(prompt_ids), sampling_params=types.SamplingParams(max_tokens=16, temperature=0.7), num_samples=4, ) for seq in samples.sequences: print(tokenizer.decode(seq.tokens)) ``` 系统性的评估 —— hold-out 测试集、benchmark 指标、采样日志 —— 见 [Concepts → Evaluations](/zh/community/customize/concepts/evaluations)。 ## All Parameters | 参数 | 类型 | 默认值 | 含义 | |---|---|---|---| | `base_model` | str | `"Qwen/Qwen3-0.6B"` | base model 的 Hugging Face model ID。 | | `rank` | int | `16` | LoRA rank。值越大越有表达力,显存也越多。典型值 8–64。 | | `train_mlp` | bool | `True` | 训练 MLP(feed-forward)层。 | | `train_attn` | bool | `True` | 训练 attention 层。 | | `train_unembed` | bool | `True` | 训练 unembedding(输出)层。 | | `loss_fn` | str | `"cross_entropy"` | loss function。SFT 永远用 `"cross_entropy"`,没有备选。 | | `learning_rate` | float | `5e-5` | Adam 学习率。instruction tuning 典型值 1e-5 到 1e-4。 | | `betas` | tuple[float, float] | `(0.9, 0.999)` | Adam 一阶 / 二阶矩的指数衰减率。 | | `eps` | float | `1e-8` | Adam 数值稳定项。 | | `weight_decay` | float | `0.0` | L2 正则化系数。LoRA 典型值 0.0–0.01。 | **用法:** ```python adam_params = types.AdamParams( learning_rate=5e-5, betas=(0.9, 0.999), eps=1e-8, weight_decay=0.0, ) for step, batch in enumerate(batches): result = training_client.forward_backward(batch, loss_fn="cross_entropy").result() training_client.optim_step(adam_params).result() print(f"Step {step}: metrics={result.metrics}") ``` **Tinker 兼容性提醒:** - 不要调 `zero_grad_async()` —— MinT 服务端会自动清梯度。 - `loss_fn` 参数传给 `forward_backward(...)`,不放在 `AdamParams` 里。 - `save_weights_for_sampler(...)` 和 `save_weights_and_get_sampling_client(...)` 语义一致:都是把 LoRA weights 序列化。