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

# 跑一次超参扫描

> 把一个网格展开成每个变体一次提交，并尽早砍掉没戏的那些。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
tp sweep my-grpo --profile h200:4 \
  -g policy.optimizer.kwargs.lr=1e-6,2e-6,5e-6 \
  -g loss_fn.reference_policy_kl_penalty=0.01,0.05 \
  -s grpo.num_generations_per_prompt=8
```

六个变体，逐个提交。`-g` 声明一个网格轴，可重复；多个轴取笛卡尔积。`-s` 是所有变体共享的固定
覆盖项。

每个变体都走普通的提交路径：本地校验、配额、排队。没有任何绕过 gate 的批量通道。

## 先看一眼网格

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
tp sweep my-grpo --profile h200:4 \
  -g policy.optimizer.kwargs.lr=1e-6,2e-6 --dry-run
```

打印变体列表和每个变体完整的覆盖集合，不提交任何东西。没数清个数的网格，先跑这个。

## 跟踪这一组

每个变体带同一个 `sweep_id`，形如 `sweep-<experiment>-<timestamp>`。控制台的 Jobs 页会给 sweep
成员打标，[项目页](/zh-Hans/console/projects)把它们的曲线画在一张图上。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
tp job stop-sweep <SWEEP_ID>    # 停掉这一组里每个活跃作业
```

配额按变体计。六个变体每个四张卡就是 24 张卡的并发需求，所以超配额的变体在 `QUEUED` 里等而不是
失败 —— 这也意味着它们不会同时开始。

## 尽早砍掉没戏的变体

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
tp sweep my-grpo --profile h200:4 \
  -g policy.optimizer.kwargs.lr=1e-6,1e-5,1e-4 \
  -g loss_fn.reference_policy_kl_penalty=0.01,0.05 \
  --early-stop
```

平台在若干 step **rung** 上比较变体，停掉排在底部的，让其余继续。

| 参数              | 默认            | 含义                           |
| --------------- | ------------- | ---------------------------- |
| `--stop-metric` | 方法的主指标        | 按哪个指标判断。越大越好还是越小越好，来自方法的指标契约 |
| `--rungs`       | `100,300,900` | 那些 rung，单位 step              |
| `--keep`        | `3`           | 每个 rung 保留 1/3 的变体           |

被停掉的变体，作业页上会写明在第几 step、与多少个变体比较、排名第几。

比较遵守四条规则，看结果之前值得知道：

* 只在 rung 上判断，从不连续判断，这样处在正常回落里的变体能活下来。
* 只比较到达了同一个 rung 的变体。
* 某个 rung 上不到四个变体就不做决定。
* 不管 `--keep` 写多少，至少有一个变体活下来。

管理员可以用 `TUNEPLANE_SWEEP_EARLY_STOP_ENABLED=false` 整体关掉这个功能，不用改任何 sweep。

## 怎么少花钱

先把学习率按数量级扫一遍 —— `1e-6`、`1e-5`、`1e-4` —— 再在赢的那个数量级内做一次细扫。把
`grpo.max_num_steps` 降到刚好能看出趋势的最小值，挑前两名，再按完整长度训。

## 确认成功

`tp sweep` 打印 `sweep_id` 以及提交/排队了多少个变体。`tp job ls` 能看到它们，控制台的 Jobs 页
会把它们标成一组。

## 下一步

[提交作业](/zh-Hans/guides/submit) · [对比多次运行](/zh-Hans/console/review) ·
[流水线](/zh-Hans/guides/pipelines)
