conda CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --master_port=7777 --nproc_per_node=4 train.py -c configs/dfine/custom/dfine_hgnetv2_${model}_custom.yml --test-only -r model.pth
时间: 2025-06-25 19:19:42 浏览: 18
### 使用 Conda 环境与分布式训练
为了实现多 GPU 训练并指定 CUDA 设备,可以通过 `torchrun` 工具来管理分布式环境,并利用 `CUDA_VISIBLE_DEVICES` 来控制可见的 GPU。以下是具体方法:
#### 设置 Conda 环境
确保当前工作目录处于激活的 Conda 环境下。如果尚未创建合适的环境,则可通过以下命令完成:
```bash
conda create -n myenv python=3.8
conda activate myenv
```
安装必要的依赖项,例如 PyTorch 和其他工具包。
---
#### 配置 CUDA 可见设备
通过设置环境变量 `CUDA_VISIBLE_DEVICES` 控制哪些 GPU 被程序识别。例如,要使用第 0 和第 1 块 GPU 进行训练,可以在终端中输入以下命令:
```bash
export CUDA_VISIBLE_DEVICES=0,1
```
此操作会隐藏其他未被列举的 GPU[^3]。
---
#### 启动分布式训练
使用 `torchrun` 执行分布式的 Python 脚本。假设项目的入口脚本为 `train.py`,并且需要加载 YAML 配置文件和预训练权重路径,则完整的启动命令如下所示:
```bash
torchrun --standalone --nnodes=1 --nproc_per_node=2 train.py \
--config configs/ecapa_tdnn.yml \
--pretrained_weights path/to/pretrained_model.pth
```
上述命令解释:
- `--standalone`: 表明这是一个单节点的任务。
- `--nnodes=1`: 指定仅在一个节点上运行。
- `--nproc_per_node=2`: 每个节点分配两个进程(对应两块 GPU)。
- `--config`: 加载自定义的 YAML 配置文件。
- `--pretrained_weights`: 提供预训练模型的路径或 URL[^2]。
---
#### 自定义配置文件
YAML 文件用于定义模型架构、数据增强策略以及其他超参数。例如,在 `configs/ecapa_tdnn.yml` 中可以调整以下选项:
- **特征提取方法**: 将 `feature_method` 参数设为所需模式(如 MelSpectrogram 或 MFCC)。
- **数据增强配置**: 利用 `augment_conf_path` 指向特定的数据增强方案[^1]。
---
#### 测试阶段
当训练完成后,同样可以通过类似的命令执行测试流程。只需替换脚本名称或将额外标志传递给现有脚本即可。例如:
```bash
torchrun --standalone --nnodes=1 --nproc_per_node=2 test.py \
--config configs/ecapa_tdnn.yml \
--model_weights trained_model.pth
```
此处,`test.py` 是专门设计用来评估模型性能的脚本;而 `trained_model.pth` 应该是之前保存的最佳模型权重文件。
---
#### 查看训练日志
在训练期间,推荐启用 VisualDL 实时监控进度。其基本启动方式如下:
```bash
visualdl --logdir=log --host 0.0.0.0
```
这允许用户打开浏览器访问可视化界面以跟踪损失曲线和其他指标变化情况。
---
阅读全文
相关推荐













