AgentSkillsCN

Kt Hyperopt

KT Hyperopt

SKILL.md

kt-hyperopt Skill

使用 Wandb Sweep 进行 pyKT 模型超参数自动调优的工具集。

何时使用此技能

当您需要:

  • 自动搜索最优超参数:使用贝叶斯优化寻找最佳配置
  • 系统性调参实验:对比不同参数组合的效果
  • 与 kt-experiment 集成:用最优配置运行交叉验证

快速开始

1. 运行超参数搜索

bash
# 使用 DKT 配置运行搜索
python scripts/run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009

# 自定义搜索次数
python scripts/run_sweep.py --config configs/akt_sweep.yaml --dataset assist2015 --count 30

2. 分析搜索结果

bash
# 分析 sweep 结果
python scripts/analyze_sweep.py --sweep_id xxx --output ./analysis

3. 提取最佳配置并运行 CV

bash
# 提取最佳参数并运行 5-fold CV
python scripts/find_best.py --sweep_id xxx --model dkt --datasets assist2009,assist2015

脚本参考

run_sweep.py - 执行超参数搜索

参数:

参数必需默认描述
--config-c-Sweep 配置文件
--dataset-d-数据集名称
--count-n无限制最大运行次数
--project-p默认W&B 项目名

示例:

bash
# 基本用法
python run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009

# 限制运行次数
python run_sweep.py --config configs/akt_sweep.yaml --dataset assist2015 --count 20

# 指定项目名
python run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009 --project my_kt

analyze_sweep.py - 分析搜索结果

参数:

参数必需默认描述
--sweep_id-s-W&B Sweep ID
--output-o./sweep_analysis.json输出文件
--top_n-n20分析前 N 个结果

示例:

bash
# 基本分析
python analyze_sweep.py --sweep_id xxx

# 保存结果
python analyze_sweep.py --sweep_id xxx --output ./analysis/results.json --top_n 10

输出:

json
{
  "results": [
    {
      "run_id": "xxx",
      "learning_rate": 0.001,
      "emb_size": 200,
      "dropout": 0.1,
      "validauc": 0.8234,
      "validacc": 0.7567
    }
  ]
}

find_best.py - 提取最佳配置并运行 CV

参数:

参数必需默认描述
--sweep_id-s-W&B Sweep ID
--model-m-模型名称
--datasets-dassist2009数据集列表
--folds-f5交叉验证折数
--top_k-k3测试的 Top K 配置

示例:

bash
# 提取最佳配置并运行 CV
python find_best.py --sweep_id xxx --model dkt --datasets assist2009

# 多数据集
python find_best.py --sweep_id xxx --model akt --datasets assist2009,assist2015 --folds 5

配置文件

预定义配置

文件模型描述
configs/dkt_sweep.yamlDKT搜索 emb_size, dropout, learning_rate
configs/akt_sweep.yamlAKT搜索 d_model, n_blocks, learning_rate
configs/simplekt_sweep.yamlSimpleKT搜索 d_model, n_blocks, dropout
configs/template_sweep.yaml通用可自定义的模板

配置结构

yaml
# DKT 配置示例
program: ../pykt-toolkit/examples/wandb_train.py
method: bayes  # bayes, grid, random
metric:
  goal: maximize
  name: validauc

parameters:
  learning_rate:
    distribution: log_uniform
    min: 1e-4
    max: 1e-2
  
  emb_size:
    values: [64, 128, 200, 256]
  
  dropout:
    min: 0.0
    max: 0.3

command:
  - ${env}
  - python
  - ${program}
  - --model_name
  - dkt
  - --learning_rate
  - ${learning_rate}
  # ...

early_terminate:
  type: hyperband
  min_iter: 10

集成 kt-experiment

find_best.py 会自动调用 kt-experiment 来运行交叉验证:

code
find_best.py
    ↓
kt-experiment/scripts/run_cv.py
    ↓
5-fold CV on optimal config

常见问题

Q1: Wandb 未安装?

bash
pip install wandb
wandb login

Q2: Sweep 创建失败?

bash
# 检查配置
python -c "import yaml; yaml.safe_load(open('configs/dkt_sweep.yaml'))"

# 检查程序路径
ls ../pykt-toolkit/examples/wandb_train.py

Q3: 如何选择搜索方法?

方法适用场景
bayes连续参数,搜索空间大(推荐)
grid少量离散参数
random快速探索,大规模搜索

相关技能

  • kt-experiment: 运行交叉验证实验
  • kt-model-dev: 开发新模型
  • dataset-prep: 准备数据

Last updated: 2026-02-02