如何配置算法
支持的神经架构搜索算法列表
本页面描述了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 控制器采样日志的温度。值必须大于 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 | 训练模型的轮数 |
| w_lr | float | 0.025 | Initial learning rate for training model weights.
This learning rate annealed down to w_lr_min
following a cosine schedule without restart. |
| 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 | alphas 权重的初始学习率。 |
| alpha_weight_decay | float | 1e-3 | 阿尔法权重衰减。 |
| 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 | 初始通道的乘数。它用于第一个干细胞。 |
下一步
Last modified May 8, 2024: Katib: 重新组织的 Katib 文档 (#3723) (9903837)