GPU
如果可用,Ludwig 将自动检测并运行在 GPU 硬件上。要在多个 GPU 或 GPU 集群上运行,请参阅 分布式训练。
使用默认的 ECD 架构进行训练时,GPU 将显著提高训练速度。某些特征类型,特别是文本和图像,实际上需要 GPU 才能在合理的时间内完成训练。话虽如此,如果您仅使用表格特征(二进制、类别、数值)和默认的 concat 组合器,或者正在训练 GBM 模型,则可能不会注意到没有 GPU 的差异,因此其效用因用例而异。
在 Apple Metal 上运行¶
Ludwig 通过 Metal Performance Shaders (MPS) 库实验性地支持 Apple Metal GPU。要尝试此功能,请在训练时设置环境变量 LUDWIG_ENABLE_MPS
LUDWIG_ENABLE_MPS=1 PYTORCH_ENABLE_MPS_FALLBACK=1 ludwig train ...
同样建议设置 PYTORCH_ENABLE_MPS_FALLBACK=1
,因为 Ludwig 使用并非所有操作都受 MPS 支持。
根据经验,我们发现在大型文本和图像模型上进行训练时,使用 MPS 获得了显著的速度提升。然而,我们也在小型表格模型上观察到性能下降,这就是我们默认不启用此功能的原因。我们建议尝试使用和不使用 MPS,以查看哪种方式在您的用例中提供最佳性能。
技巧¶
避免 CUDA OOM 错误¶
在大型模型上训练时,GPU 很容易耗尽内存。为避免此类错误,我们建议按顺序尝试以下方法:
- 在配置中设置
trainer.batch_size=auto
(这是当前的默认设置)。 - 手动设置
trainer.max_batch_size
。 - 尝试较小的模型架构。
- 使用 完全分片数据并行 (Fully Sharded Data Parallel) 策略将模型拆分到多个 GPU 上。
禁用 GPU¶
您可以通过在环境变量中设置 CUDA_VISIBLE_DEVICES=""
来在训练期间禁用 GPU 加速。这对于调试特定于您的 GPU 硬件的运行时故障非常有用。