coverhunter_training_process.md
5.67 KB
CoverHunter 双流微调标准流程
1. 当前架构
当前训练架构已经调整为双流:
-
流 A:MERT + Melody 分支
- 代码位置:
acr-engine/src/models/ecapa_tdnn.py - 逻辑:冻结的
FrozenMERTFeatureExtractor+melody/chroma融合 - 默认模型:
m-a-p/MERT-v1-95M - 说明:当前代码已经支持真实 HuggingFace MERT 权重接入;若环境里缺少
transformers或首次拉取失败,则无法启用真实 MERT
- 代码位置:
-
流 B:ECAPA 分支
- 逻辑:保留 ECAPA 特征建模路径
-
双流融合
DualStreamFusion
-
检索头
CoverHunterHead
-
训练目标
InfoNCE + AAMSoftmax
2. 当前资源检查结论
Python 解释器
训练入口已固定支持:
/usr/local/miniconda3/bin/python
acr-engine/scripts/run_coverhunter_finetune.py 已支持 --python 参数,默认就是这个解释器。
GPU
当前检测到 GPU:
- Quadro P1000
- 总显存:4096 MiB
- 空闲显存:约 3817 MiB
结论:
- 可以跑训练
- 但显存较小,建议:
batch_size=2~4-
segment_dur=5.0起步 - 优先做 dry-run、小批量试跑、再正式训练
- 启用真实 MERT 后不要直接上大 batch
数据
当前仓库中可直接用于冒烟训练的数据:
acr-engine/data/synthetic_v2/train.json- 音频切片位于
acr-engine/data/synthetic_v2/segments/
这些数据已经包含:
- 普通切片
- augmented
- humming_like
- confused
适合先做流程验证。
当前环境缺口
/usr/local/miniconda3/bin/python 下当前缺少这些核心包:
torchtransformershuggingface_hubtorchaudiolibrosasoundfileaudiomentations
所以:
- GPU 与解释器可用
- 但当前训练环境还不能直接跑
- 需要先补齐依赖
3. 标准处理流程
Step 1:准备 Python 环境
进入项目后,先确保用的是目标解释器:
/usr/local/miniconda3/bin/python --version
安装依赖:
/usr/local/miniconda3/bin/python -m pip install -r acr-engine/requirements.txt
如需单独补装:
/usr/local/miniconda3/bin/python -m pip install torch torchaudio transformers huggingface_hub librosa soundfile audiomentations
Step 2:准备 MERT 权重缓存
首次启用真实 MERT 时,会从 HuggingFace 拉取:
m-a-p/MERT-v1-95M
建议先确认网络可访问 HuggingFace,或提前缓存模型。
如果不希望改默认配置,可以在 configs/default.yaml 或 configs/coverhunter_finetune.yaml 中调整:
model:
mert_model_name: m-a-p/MERT-v1-95M
Step 3:准备噪声数据
为了支持伪造录音增强,建议准备目录,例如:
acr-engine/data/noise/restaurant/
acr-engine/data/noise/street/
里面放公开可用环境音频:
- 餐厅底噪
- 街道底噪
- 室内人声背景
训练时通过:
--noise-root acr-engine/data/noise/restaurant \
--noise-root acr-engine/data/noise/street
传入。
Step 4:先做 dry-run
先验证数据、模型、GPU、增强链路是否都通:
cd /mnt/e/hikoon-ACR/acr-engine && \
/usr/local/miniconda3/bin/python scripts/run_coverhunter_finetune.py \
--python /usr/local/miniconda3/bin/python \
--data data/synthetic_v2 \
--device cuda \
--segment-strategy hybrid \
--dry-run
Step 5:小规模试训
建议先缩小 batch/config,确认显存稳定:
cd /mnt/e/hikoon-ACR/acr-engine && \
/usr/local/miniconda3/bin/python train.py \
--config configs/coverhunter_finetune.yaml \
--data data/synthetic_v2 \
--output data/training_runs/coverhunter_trial \
--device cuda \
--segment-strategy hybrid \
--batch-size 2 \
--epochs 2 \
--noise-root data/noise/restaurant \
--noise-root data/noise/street
如果显存稳定,再逐步提高到:
batch_size=4- 必要时再尝试
batch_size=6
Step 6:正式专题训练
标准命令:
cd /mnt/e/hikoon-ACR/acr-engine && \
/usr/local/miniconda3/bin/python scripts/run_coverhunter_finetune.py \
--python /usr/local/miniconda3/bin/python \
--data data/synthetic_v2 \
--device cuda \
--segment-strategy hybrid \
--noise-root data/noise/restaurant \
--noise-root data/noise/street
Step 7:检查训练产物
每次训练会记录到:
acr-engine/data/training_runs/<run_name>/
标准产物包括:
best_model.ptcheckpoint_epoch_*.ptsong_to_idx.jsontraining_metrics.jsontraining_manifest.jsonrun_request.jsonrun_summary.jsonstdout.logstderr.log
4. 增强策略说明
当前代码已经覆盖两类伪造策略:
伪造录音
位置:acr-engine/src/utils/augment.py
AddGaussianNoiseAddBackgroundNoiseBandPassFilterMp3Compression
伪造翻唱
位置:acr-engine/src/utils/augment.py
PitchShiftTimeStretch-
Frequency Masking(作用于 mel)
5. 资源适配建议
由于当前 GPU 是 Quadro P1000 4GB,建议按以下梯度推进:
推荐起步配置
segment_dur=5.0batch_size=2mixed_precision=truenum_workers=0
稳定后可尝试
batch_size=4- 如 OOM 则回退
当前不建议
- 直接上 8 秒片段 + batch 16
- 真实 MERT + 大 batch 同时启用
6. 当前结论
当前状态可以概括为:
- 架构方向已经调整正确:双流
- 真实 MERT 接口已接入:是
- GPU 可以用于训练:是
-
当前 Python 解释器可用:是,
/usr/local/miniconda3/bin/python - 当前环境能否立刻开训:还不能,因为依赖未装全
-
现有数据能否支撑一波流程训练:可以,先从
synthetic_v2开始