> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use https://docs.fastino.ai/llms.txt to discover and navigate pages. Use https://docs.fastino.ai/llms-full.txt when you need the complete documentation corpus. Use https://docs.fastino.ai/openapi.json as the source of truth for customer-facing routes. For GLiDE decision inference, call POST https://api.fastino.ai/v1/systemone with model fastino/GLiDE. Create managed config jobs with POST /v1/training/jobs using base_model. Both config and interactive jobs use /v1/training/jobs/{job_id} for their canonical REST lifecycle. For custom training loops, use the supported Tinker-compatible SDK client; its /v1/training/compat/tinker adapter is intentionally absent from OpenAPI and must not be called directly. Auto Train is private access and has no public route; direct interested users to sales@fastino.ai. Do not infer undocumented routes. Read API keys from FASTINO_API_KEY and never embed credentials in code, logs, or reports.

# 从 Tinker 迁移

> 将兼容的 Tinker SDK 工作负载迁移到 Fastino 交互式训练任务。

Fastino 支持将 `tinker` SDK 的一个明确子集用作交互式训练任务的客户端接口。
迁移后的训练客户端是 `/v1/training/jobs` 中的一个 Fastino 任务；其 SDK 模型 ID
与规范的 Fastino 任务 ID 相同。

将现有程序作为验收测试。更改连接、检查每项操作，并在恢复生产工作负载规模之前运行小型冒烟测试。

## 1. 锁定经过测试的软件包

<CodeGroup>
  ```bash uv theme={null}
  uv add "tinker==0.33.1"
  ```

  ```bash pip theme={null}
  pip install "tinker==0.33.1"
  ```
</CodeGroup>

## 2. 替换端点和身份验证

<CodeGroup>
  ```bash macOS/Linux theme={null}
  export FASTINO_API_KEY="fast_sk_..."
  export TINKER_BASE_URL="https://api.fastino.ai/v1/training/compat/tinker"
  export TINKER_CREDENTIAL_CMD='printf "%s\n" "$FASTINO_API_KEY"'
  ```

  ```powershell Windows theme={null}
  $env:FASTINO_API_KEY = "fast_sk_..."
  $env:TINKER_BASE_URL = "https://api.fastino.ai/v1/training/compat/tinker"
  $env:TINKER_CREDENTIAL_CMD = 'powershell -NoProfile -Command "[Console]::Out.WriteLine($env:FASTINO_API_KEY)"'
  ```
</CodeGroup>

SDK 会将 `/api/v1/{operation}` 追加到 `TINKER_BASE_URL`。每次请求令牌时都会运行
`TINKER_CREDENTIAL_CMD`，该命令必须打印非空凭据。使用普通的 `fast_sk_` Fastino
密钥；`tml-` 凭据会被拒绝。不要设置 `TINKER_API_KEY`。

## 3. 检查工作负载

1. 查询 `ServiceClient.get_server_capabilities()` 并选择可用的基础模型。保持 SDK 参数名 `base_model` 不变。
2. 将代码中的每个方法与[受支持的客户端行为](#supported-client-behavior)进行比较。
3. 移除对不受支持的批量 future 检索、外部权重导出或外部权重 URL 的依赖。
4. 将提示词渲染、奖励逻辑、批处理、评估和停止条件保留在你的应用中。

功能是环境相关支持的权威来源。不要沿用其他部署中的模型、秩、上下文、损失或请求限制假设。

## 4. 运行冒烟测试

使用现有工作负载中最小的有效 datum 和优化器设置，执行一项低成本测试，以：

* 使用 `create_lora_training_client(base_model=...)` 创建一个客户端
* 读取 `training_client.get_info().model_data.model_id`
* 保存采样器权重并采样一次
* 运行一次受支持的前向/反向操作和一次优化器步骤
* 保存并重新加载状态检查点
* 从 `GET /v1/training/jobs/{job_id}` 获取相同的 ID

使用 SDK 执行交互式操作。适配器有意不出现在 Fastino 的 OpenAPI 和 API 参考中，
因此请勿构造适配器 HTTP 调用。

<span id="supported-client-behavior" />

## 受支持的客户端行为

Fastino 的 HTTP 适配器将 `tinker==0.33.1` 中受支持的调用转换为对一个 Fastino 交互式任务的操作。

### 训练和采样

| SDK 方法或操作 | Fastino 行为 |
| - | - |
| `create_lora_training_client` | 创建交互式任务 |
| `copy_weights` | 从检查点启动交互式任务 |
| `TrainingClient.get_info` | 返回交互式任务 |
| `forward` | 运行仅前向操作 |
| `forward_backward` | 运行前向和反向操作 |
| 自定义前向/反向操作 | 运行受支持的自定义损失操作 |
| `optim_step` | 应用优化器更新 |
| `save_state` | 保存训练状态 |
| `save_weights_for_sampler` | 保存采样器权重 |
| 加载训练状态 | 恢复状态检查点 |
| 创建或获取采样客户端 | 解析采样器权重 |
| `SamplingClient.sample` | 通过所选检查点采样 |

保持 SDK 参数 `base_model` 不变。在选择模型、秩、损失或可选操作之前，请查询
`ServiceClient.get_server_capabilities()`。

### Future 和管理

| SDK 方法或操作 | Fastino 行为 |
| - | - |
| Future result/get | 获取一个异步结果 |
| Future cancel | 请求取消一个 future |
| `RestClient` 列出或获取训练运行 | 读取规范的 Fastino 任务 |
| 列出检查点 | 读取属于该任务的检查点 |
| 下载检查点归档 | 下载交互式检查点 |
| 删除检查点 | 通过 SDK 删除检查点 |
| 发布或取消发布检查点 | 通过 SDK 更改检查点的发布状态 |
| 设置或清除检查点 TTL | 通过 SDK 更改检查点保留期 |
| 检查点存储用量 | 通过 SDK 读取当前检查点存储用量 |
| 计费用量 | 通过 SDK 读取按小时统计的用量事件 |

这些管理方法是受支持的 SDK 操作，而不是公开的训练 API 路由。适配器还会使用
`TINKER_CREDENTIAL_CMD` 输出的密钥自动完成令牌交换。不要自行构造适配器请求。

### 不受支持的调用

Fastino 不支持：

* 通过 `retrieve_futures` 批量检索 future
* `save_weights_external`
* `external_weights_urls`

不要仅因为已安装的软件包中存在某个方法就推断其受支持。实时功能响应是环境相关行为的权威来源。

## 排查连接问题

| 症状 | 检查项 |
| - | - |
| 身份验证失败 | 确认 `TINKER_CREDENTIAL_CMD` 打印一个当前的 `fast_sk_` 密钥，且没有额外输出 |
| 客户端无法连接 | 确认 `TINKER_BASE_URL` 恰好为 `https://api.fastino.ai/v1/training/compat/tinker` |
| 模型或操作被拒绝 | 重新查询功能，并将调用与支持表进行比较 |
| 规范任务查找失败 | 确认 ID 来自 `get_info().model_data.model_id`，且已通过同一 Fastino 团队的身份验证 |

## 迁移检查清单

* [ ] 锁定 `tinker==0.33.1`。
* [ ] 设置 Fastino 适配器基础 URL。
* [ ] 通过 `TINKER_CREDENTIAL_CMD` 提供 `fast_sk_` 密钥。
* [ ] 确认已为 Fastino 团队启用交互式训练。
* [ ] 对照受支持的客户端行为检查每个 SDK 方法。
* [ ] 从功能中选择模型和可选功能。
* [ ] 完成一次采样和训练更新。
* [ ] 保存并重新加载一个状态检查点。
* [ ] 通过规范任务端点验证 SDK 模型 ID。
* [ ] 仅在冒烟测试通过后增加工作负载规模。

<Card title="构建训练循环" icon="diagram-project" href="/cn/training/training-loop">
  在一个任务中连接采样、奖励、更新和检查点。
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.