2. 模型训练
2.1 run.sh stage 3
数据集处理完毕后开始训练,主要是调用wespeaker/bin/train.py 函数
- echo ”Start training ...” 打印提示信息,表示开始训练
- num_gpus=$(echo $gpus | awk -F ’,’ ’print NF’) 通过gpus 变量获取要使用的GPU 数量
- torchrun –standalone –nnodes=1 –nproc_per_node=$num_gpus,其中使用torchrun 命令来运行训练脚本
- standalone 表示以独立模式运行
- nnodes=1 表示使用单节点
- nproc_per_node=$num_gpus 表示每个节点使用$num_gpus 个进程
- wespeaker/bin/train.py
- config 模型配置文件yaml 路径
- exp_dir 实验结果的保存路径
- gpus 指定使用的GPU 编号[0]
- num_avg 参数更新平均步长,默认10
- data_type 数据类型shard/raw
- train_data 训练集索引list 路径
- train_label 训练集的标签信息索引路径
- reverb_data 混响噪声集索引路径
- noise_data 噪声集数据索引路径
- checkpoint 模型的检查点路径,如果有则加载已有的checkpoint
在train.py中
输入参数:包括conf\config.yaml文件,也可以是外部设定的参数内容(如run.sh中定义外部参数config = conf/campplus.yaml)
campplus.yaml文件中又对训练epoch,间隔,保存记录,输出路径等参数进行了设定。具体后续对模型训练参数修改就在具体的模型.yaml文件中进行设定。临时的修改可以在run.sh中进行修改。
2.2 运行run.sh
首先设置run.sh 起始stage 和结束stage都为3;
通过anaconda进入wespeaker 环境(这里环境名称就是Wespeaker)
conda activate Wespeaker
运行nohup bash run.sh > ./exp/firstmodel.log 2>&1 &
进入训练阶段。
输出队列内容如下:
Epoch | Batch | Lr | Margin | Loss | Acc | |
INFO : 2023-09-26 10:14:10,957 | 1 | 100 | 0.0003866 | 0 | 10.767 | 0 |
INFO : 2023-09-26 10:14:38,551 | 1 | 200 | 0.00077664 | 10.707 | ||
INFO : 2023-09-26 10:15:06,752 | 1 | 300 | 0.0011662 | 10.631 | 0.0078125 | |
INFO : 2023-09-26 10:15:35,557 | 1 | 400 | 10.553 | 0.013672 |