需添加debug代码片段
- 多卡训练只能监听其中一个进程
- 对应的GPU使用率大部分时间为0,只有forward的时候占满
- 在 LLaMA-Factory/src/llamafactory/train/tuner.py 中的run_exp函数中添加下面的代码片段(非LLaMA-Factory也适用,尝试加到你的train函数前面)
pythondef run_exp(args: Optional[Dict[str, Any]] = None, callbacks: List["TrainerCallback"] = []) -> None:
import os
import debugpy
# 只在rank 0进程中启动调试器
if int(os.environ.get('LOCAL_RANK', '0')) == 0:
debugpy.listen(("localhost", 5678))
print("⏳ 等待调试器附加...")
debugpy.wait_for_client()
print("🚀 调试器已附加!继续执行...")
...
- vscode的debug配置如下
JSON{
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Attach",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"justMyCode": false
}
]
}
- 使用步骤:
a. 训练启动命令无需修改(非LLaMA-Factory也适用),例如:
BashCUDA_VISIBLE_DEVICES=6,7 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
b. 当看到命令行打印出“⏳ 等待调试器附加...”时,选中vscode编辑器中的“运行和调试”然后选中“Python Debugger: Attach”点击左边的“开始调试”按钮即可开始,等待程序运行至打好的断点处