如何配置算法
神经网络架构搜索支持的算法列表
本页描述了 Katib 支持的神经网络架构搜索 (NAS) 算法及其配置方法。
NAS 算法
Katib 当前支持多种 NAS 搜索算法
高效神经网络架构搜索 (ENAS)
Katib 中的算法名称是 enas
。
ENAS 示例 — enas-gpu.yaml
— 旨在展示所有可能的操作。由于搜索空间庞大,此示例不太可能产生良好结果。
Katib 支持 ENAS 的以下算法设置
设置名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
controller_hidden_size | int | 64 | RL 控制器 lstm 隐藏层大小。值必须 >= 1。 |
controller_temperature | float | 5.0 | RL 控制器用于采样 logits 的温度。值必须 > 0。将值设置为 "None" 以在控制器中禁用它。 |
controller_tanh_const | float | 2.25 | RL 控制器 tanh 常量,用于防止过早收敛。值必须 > 0。将值设置为 "None" 以在控制器中禁用它。 |
controller_entropy_weight | float | 1e-5 | RL 控制器应用于奖励的熵权重。值必须 > 0。将值设置为 "None" 以在控制器中禁用它。 |
controller_baseline_decay | float | 0.999 | RL 控制器基线因子。值必须 > 0 且 <= 1。 |
controller_learning_rate | float | 5e-5 | RL 控制器 Adam 优化器的学习率。值必须 > 0 且 <= 1。 |
controller_skip_target | float | 0.4 | RL 控制器概率,表示跳跃连接形成的先验信念。值必须 > 0 且 <= 1。 |
controller_skip_weight | float | 0.8 | RL 控制器跳跃惩罚损失的权重。值必须 > 0。将值设置为 "None" 以在控制器中禁用它。 |
controller_train_steps | int | 50 | 每个候选运行后 RL 控制器的训练步数。值必须 >= 1。 |
controller_log_every_steps | int | 10 | 记录之前 RL 控制器的训练步数。值必须 >= 1。 |
可微分架构搜索 (DARTS)
Katib 中的算法名称是 darts
。
DARTS 示例 — darts-gpu.yaml
。
Katib 支持 DARTS 的以下算法设置
设置名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
num_epochs | int | 50 | 模型训练的 epoch 数 |
w_lr | float | 0.025 | 用于训练模型权重的初始学习率。此学习率根据无重启的余弦退火策略衰减到 w_lr_min 。 |
w_lr_min | float | 0.001 | 用于训练模型权重的最小学习率。 |
w_momentum | float | 0.9 | 用于训练模型权重的动量。 |
w_weight_decay | float | 3e-4 | 模型权重衰减。 |
w_grad_clip | float | 5.0 | 裁剪模型权重梯度范数最大范数值。 |
alpha_lr | float | 3e-4 | 用于 alpha 权重的初始学习率。 |
alpha_weight_decay | float | 1e-3 | Alpha 权重衰减。 |
batch_size | int | 128 | 数据集的批处理大小。 |
num_workers | int | 4 | 下载数据集的子进程数。 |
init_channels | int | 16 | 初始通道数。 |
print_step | int | 50 | 记录之前的训练或验证步数。 |
num_nodes | int | 4 | DARTS 节点数。 |
stem_multiplier | int | 3 | 初始通道的乘数。用于第一个 stem 单元。 |
后续步骤
最后修改于 2024年5月8日: Katib: 重组 Katib 文档 (#3723) (9903837)