本篇文章主要记录一些训练神经网络的内容

1. 硬件查看

1
nvidia-smi
  • GPU:GPU 编号;
  • Name:GPU 型号;
  • Persistence-M:持续模式的状态。持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态;
  • Fan:风扇转速,从0到100%之间变动;
  • Temp:温度,单位是摄氏度;
  • Perf:性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能(即 GPU 未工作时为P0,达到最大工作限度时为P12)。
  • Pwr:Usage/Cap:能耗;
  • Memory Usage:显存使用率;
  • Bus-Id:涉及GPU总线的东西,domain:bus:device.function;
  • Disp.A:Display Active,表示GPU的显示是否初始化;
  • Volatile GPU-Util:浮动的GPU利用率;
  • Uncorr. ECC:Error Correcting Code,错误检查与纠正;
  • Compute M:compute mode,计算模式。

2. 超参数调优

常见的超参数调优方法:网格搜索、随机搜索和贝叶斯优化

2.1 网格搜索

网格搜索是一种穷举搜索方法,它通过遍历超参数的所有可能组合来寻找最优超参数。
网格搜索适用于超参数数量较少的情况,计算量较大

2.2 随机搜索

随机搜索是一种随机化的搜索方法,它通过随机采样超参数的组合来寻找最优超参数。
随机搜索适用于快速寻找较好的超参数组合

2.3 贝叶斯优化

贝叶斯优化首先利用已有的观测数据训练一个高斯过程模型,根据采集函数的结果选择新的超参数组合进行评估。
贝叶斯优化则能够在有限的迭代次数内找到全局最优解,适用于精细搜索。
随机搜索+贝叶斯优化的组合往往效果不错。

3. 训练参数记录

要更加直观的了解训练过程,我们可以借助一些工具来记录训练过程的参数。下面以 swanlab 为例,介绍如何使用它来记录训练参数。

3.1 安装和登录 swanlab

1
2
pip install swanlab
swanlab login

3.2 在训练代码中集成 swanlab

在训练代码中导入 swanlab,并在训练过程中记录参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 导入
import swanlab

# 2. 初始化
run = swanlab.init(
project="your_project_name",
config={
"learning_rate": 0.001,
"batch_size": 32,
"optimizer": "Adam",
},
)

# 3. 记录训练过程中的参数
swanlab.log({"epoch": epoch, "loss": loss, "accuracy": accuracy})