> ## 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.

# 检查点与恢复

> 通过 SDK 保存交互式任务的状态检查点和循环记录，读取最新的完整记录，加载前验证任务 ID 和数据集游标，然后在不重放已完成工作的情况下恢复。

状态检查点保护服务端训练状态。完整的恢复记录还会保护由用户负责、用于告诉控制器下一步操作的状态。

## 要保存的内容

| 记录 | 包含内容 | 存储方 |
| - | - | - |
| 状态检查点 | SDK 检查点所表示的训练权重和优化器状态 | Fastino |
| 循环记录 | 任务 ID、检查点标识符、步骤、数据集游标和配置 | 你的应用 |

SDK 训练客户端代表一个 Fastino 交互式任务。从
`training_client.get_info().model_data.model_id` 读取其规范 ID。

## 1. 保存状态和循环进度

通过 SDK 保存状态，然后持久化返回的检查点及继续运行所需的客户端字段：

```python theme={null}
import json
from pathlib import Path


job_id = training_client.get_info().model_data.model_id
state = training_client.save_state(f"step-{step:06d}").result()
record = {
    "job_id": job_id,
    "state_path": state.path,
    "model": model_name,
    "dataset_revision": dataset_revision,
    "optimizer": optimizer_config,
    "step": step,
    "dataset_cursor": dataset_cursor,
    "reward_version": reward_version,
}

with Path(log_path).open("a", encoding="utf-8") as checkpoint_log:
    checkpoint_log.write(json.dumps(record, sort_keys=True) + "\n")
```

使用唯一的检查点名称，使每条循环记录都能标识明确的恢复边界。不要假设未记录的检查点生命周期。

## 2. 读取最新的完整记录

进程可能在写入最后一行时停止。反向扫描并跳过格式错误的尾部：

```python theme={null}
def get_last_checkpoint(log_path: str) -> dict[str, object] | None:
    path = Path(log_path)
    if not path.exists():
        return None

    for line in reversed(path.read_text(encoding="utf-8").splitlines()):
        try:
            record = json.loads(line)
        except json.JSONDecodeError:
            continue
        if isinstance(record, dict) and isinstance(record.get("state_path"), str):
            return record
    return None
```

## 3. 加载前验证

将记录与请求的继续运行进行比较：

* 规范任务 ID
* 基础模型和可训练配置
* 数据集修订版和游标
* 奖励实现修订版
* 优化器配置
* 渲染器和 tokenizer 假设

如果这些字段冲突，请停止并要求明确决策。不要悄然将检查点与其他实验组合。

然后使用 SDK 支持的状态加载流程：

```python theme={null}
training_client = (
    service_client.create_training_client_from_state_with_optimizer(
        str(resume["state_path"])
    )
)
```

此 SDK 操作映射到 Fastino 检查点加载。不要直接构造适配器请求，也不要从该操作推断其他运行沿袭关系。

## 4. 使边界可恢复

按以下顺序操作：

1. 解析前向/反向传播和优化器 future。
2. 保存状态检查点。
3. 持久化包含其标识符的循环记录。
4. 将应用步骤标记为完成。
5. 开始下一步。

如果进程在保存检查点后、持久化循环记录前退出，请继续将上一条完整记录作为可信恢复点。
不要在记录持久保存前将步骤标记为完成。

## 5. 区分检查点类型

```python theme={null}
state = training_client.save_state("step-000100").result()
sampler = training_client.save_weights_for_sampler(
    "step-000100"
).result()
```

使用状态检查点恢复训练。使用采样器检查点进行 rollout 或评估。不要将采样器检查点用作优化器状态恢复点。

公开的训练 API 可以列出检查点。团队同时拥有交互式训练访问权限和权重下载权限时，
还可以下载交互式检查点。SDK 还支持检查点删除、发布、保留期和存储用量方法。
这些是 SDK 操作，而不是公开的训练 API 路由。请勿构造适配器请求，也不要假设未记录的保留期限。

## 6. 验证继续运行

扩大恢复后的工作负载之前：

1. 加载所选状态检查点。
2. 通过 `GET /v1/training/jobs/{job_id}` 确认 SDK 客户端的规范任务 ID。
3. 运行小型留出评估。
4. 提交一次受支持的训练更新。
5. 使用新名称保存新的状态检查点。
6. 持久化下一条循环记录。

所有交互式模型操作均使用 SDK。

## 诊断恢复错误

| 症状 | 检查项 |
| - | - |
| Future 失败 | 记录任务 ID 和操作结果。不要推进依赖的应用状态 |
| 无法加载检查点 | 验证其任务、检查点类型和客户端负责的恢复记录 |
| 规范任务查找失败 | 确认 ID 来自 `get_info().model_data.model_id`，且已通过同一 Fastino 团队的身份验证 |


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