|
|
@@ -11,9 +11,9 @@ os.environ["TORCHINDUCTOR_MAX_WORKERS"] = "1"
|
|
|
# 解决 PyTorch 显存碎片化问题(避免 reserved unallocated 占用大量显存)
|
|
|
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True"
|
|
|
# 限制训练只用 GPU 2 和 3(GPU 0/1 被 VLLM 占用)
|
|
|
-# 沐曦 MPS 模式下 CUDA_VISIBLE_DEVICES 可能干扰设备映射,
|
|
|
-# 只设 METAX_VISIBLE_DEVICES,device_map 里用物理 GPU 号手动指定。
|
|
|
-os.environ["METAX_VISIBLE_DEVICES"] = "2,3"
|
|
|
+# CUDA_VISIBLE_DEVICES 将物理 GPU 2,3 映射为容器内的 cuda:0, cuda:1
|
|
|
+# device_map 中使用相对编号 0(对应物理 GPU 2)
|
|
|
+os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
|
|
|
# 启用 MPS 多进程服务,允许与 VLLM 共享 GPU
|
|
|
os.environ["MACA_MPS_MODE"] = "1"
|
|
|
|
|
|
@@ -80,11 +80,9 @@ class TextEngine(BaseEngine):
|
|
|
else:
|
|
|
raise RuntimeError("No GPU detected! Training requires GPU.")
|
|
|
|
|
|
- # 沐曦 MPS 模式下 CUDA_VISIBLE_DEVICES 可能不被遵守,
|
|
|
- # 直接用物理 GPU 号(METAX_VISIBLE_DEVICES 的第一个)。
|
|
|
- visible_devices = os.environ.get("METAX_VISIBLE_DEVICES", "0")
|
|
|
- first_gpu = int(visible_devices.split(",")[0]) # 物理 GPU 2
|
|
|
- device_map = {"": first_gpu}
|
|
|
+ # CUDA_VISIBLE_DEVICES=2,3 已将物理 GPU 2,3 映射为逻辑 GPU 0,1
|
|
|
+ # device_map 直接用 0 即可(对应物理 GPU 2)
|
|
|
+ device_map = {"": 0}
|
|
|
|
|
|
load_kwargs: dict[str, Any] = {
|
|
|
"dtype": torch.float16,
|