起因:使用GitHub - baichuan上的单机训练显示内存不足,所以准备单机多卡训练,但看不懂多机训练的代码以及不明确它这个多机训练的定义,又在大佬的建议下,决定单机多卡使用accelerate,见图:
“单机多卡。用accelerate" cr 大佬
于是参考这篇链接:7_accelerate,试图按照步骤来,但出现了一个没解决的老问题,就是服务器连不上huggingface(烦),于是我决定手动下载然后上传,然后进行配置,一些过程记录:
Q1:Please select a choice using the arrow or number keys, and selecting with enter.选择是This machine 和 AWS(Amazon SageMaker),
A:在这个选择中,你被要求选择你的运行环境。这通常会影响配置文件的设置和如何优化你的训练任务。下面是每个选项的简单说明:
-
This machine:
- 如果你选择 "This machine",那么配置和优化将针对你当前的机器或服务器进行。这是一个适用于本地服务器或你直接可以访问的服务器的选项。
-
AWS (Amazon SageMaker):
- 如果你选择 "AWS (Amazon SageMaker)",那么配置和优化将针对运行在Amazon SageMaker服务上的训练任务进行。Amazon SageMaker是一个托管的机器学习服务,它允许你在云中轻松构建、训练和部署机器学习模型。
由于你提到你是在一台服务器上进行多卡训练,你应该选择 "This machine" 选项。这样,配置将针对你的服务器环境进行优化,以确保你可以充分利用你的多卡硬件来加速训练过程。
Q2:Should distributed operations be checked while running for errors?This can avoid timeout tissues but will be slower.
A:这个问题是在询问你是否希望在运行过程中检查分布式操作以便发现错误。在一个分布式系统(例如多卡训练或多机训练)中,运行时错误检查可以帮助识别和调试可能出现的问题,例如通信错误或数据不一致等。然而,启用运行时错误检查可能会降低运行速度,因为它会增加额外的计算和通信开销。
以下是选择 "Yes" 或 "No" 的一些考虑因素:
-
选择 "Yes":
- 如果你选择 "Yes",系统会在运行过程中检查分布式操作的错误。这可以帮助你更快地识别和解决问题,特别是在调试新代码或配置时。
- 但是,这可能会降低训练速度,因为错误检查需要额外的计算和通信。
-
选择 "No":
- 如果你选择 "No",系统不会在运行过程中检查分布式操作的错误。这可能会提高运行速度,但如果出现问题,可能会更难诊断。
- 这个选项可能更适合在你已经测试过你的代码,并且相信它没有明显错误的情况下使用。
最终的选择取决于你的具体需求和优先级。如果你更关心运行速度并且相信你的代码是正确的,你可能会选择 "No"。如果你更关心错误诊断并愿意接受一些额外的运行时间开销,你可能会选择 "Yes"。
Q3:Do you wish to optimize your script with torch dynamo?eager,aot_eager,inductor,nvfuser,aot_nvfuser,aot_cudagraphs,ofi,fx2trt,onnxrt,ipex,
A:Torch Dynamo
是一个可以优化 PyTorch 脚本的工具。它通过分析和转换你的 PyTorch 代码,以提高运行效率并减少内存使用。它可能会应用一系列的优化技术,例如内联(inlining)、常量传播(constant propagation)、死代码消除(dead code elimination)等,以提高你的 PyTorch 脚本的运行速度。
在你面对的选择中:
-
选择 "Yes":
- 如果你选择 "Yes",
accelerate
将尝试使用Torch Dynamo
优化你的脚本。这可能会使你的脚本运行得更快,但可能会使代码变得更难调试(例如,如果优化改变了代码的行为或引入了新的错误)。
- 如果你选择 "Yes",
-
选择 "No":
- 如果你选择 "No",
accelerate
不会尝试优化你的脚本。你的脚本可能会按照常规速度运行,但不会应用任何额外的优化技术。
- 如果你选择 "No",
如果你正在寻求更快的运行速度,并且愿意尝试自动优化,那么选择 "Yes" 可能是一个好选择。但是,如果你更关心保持代码的清晰和可调试,或者如果你已经手动优化了你的代码,那么选择 "No" 可能更合适。
-
Eager:
- 这是