Unsloth + vLLM multi-GPU setup in ART crashes when restricting CUDA_VISIBLE_DEVICES or using tensor parallelism >1 on H100 GPUs
Maintainer thường phản hồi trong vòng 3 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- distributed-systems, machine-learning
Hướng nghiên cứu
Báo cáo không nêu tệp, bài kiểm thử hoặc ngoại lệ có thể tái hiện; hãy bắt đầu bằng cách thu thập các log đầy đủ đã hứa và theo dõi quá trình khởi tạo Unsloth/vLLM nội bộ của ART với CUDA_VISIBLE_DEVICES và các thiết lập tensor_parallel. Công việc được hoàn tất khi xác lập được một lỗi có thể tái hiện và xác định được liệu việc truyền cấu hình, lựa chọn GPU hay lỗi khởi tạo có ngăn cản việc thực thi multi-GPU hay không.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happened?
I’m running ART on a machine with multiple NVIDIA H100 80GB GPUs.
ART automatically detects multiple GPUs and logs messages like:
NVIDIA H100 80GB HBM3. Num GPUs = 2 (or 4)
However, as soon as I try to use multi-GPU inference or training through ART’s internal Unsloth + vLLM engine, the system becomes unstable:
1. When I set CUDA_VISIBLE_DEVICES to limit GPUs (e.g., export CUDA_VISIBLE_DEVICES=0,1), the engine crashes
Even though:
- Those GPUs are valid
- vLLM is supposed to support multi-GPU tensor parallelism
- Unsloth detects the GPUs correctly
The moment ART initializes the model, I get:
- vLLM engine crashes
- Runtime exceptions (varies)
- Training or inference does not start
2. Setting tensor parallelism to 1 or more also breaks execution
Even with:
tensor_parallel=1
or passing parameters through the backend config, the engine fails to initialize.
Instead of loading the model across the selected GPUs, ART/Unsloth/vLLM simply crashes without completing startup.
3. I cannot run any parallel execution even though hardware supports it
Even basic inference through the ART model wrapper fails to run if:
- More than one GPU is present or
- The model attempts to distribute across GPUs
4. This prevents using larger models (e.g., Qwen2.5-14B, Qwen3-32B) effectively
Since models must fit on a single GPU, this limits model size and sequence length, and makes RL training very slow.
My setup
-
4 × NVIDIA H100 80GB (PCIe)
-
Running Ubuntu Linux
-
CUDA 12.6
-
PyTorch 2.7.1
-
vLLM 0.10.x
-
Unsloth 2025.10.3
-
ART latest version (Dec 2025)
-
Models tested:
- Qwen2.5-14B-Instruct
- Qwen3-32B (FP16 and quantized)
- Smaller models also experience the GPU crash on parallel init
I export GPU visibility like:
export CUDA_VISIBLE_DEVICES=0,1
ART detects this correctly, logs the right GPU count, but fails during Unsloth/vLLM initialization.
What I expected
- ART should be able to run Unsloth + vLLM across multiple GPUs using tensor parallelism.
- If
CUDA_VISIBLE_DEVICES="0,1"is set, ART should cleanly use those two GPUs. - No engine crash during initialization.
- Ability to train/infer on larger models that require parallelism.
Actual behavior
- vLLM / Unsloth engine crashes immediately
- No clear error message (varies by run)
- Parallel execution never enters the training loop
- Only single-GPU mode works, limiting model size and speed
Why this is a problem
-
ART advertises support for large-scale RL training
-
But without working multi-GPU support, users cannot:
- Run 14B / 32B models at full context length
- Scale training
- Perform faster rollouts
- Avoid VRAM bottlenecks
-
This makes multi-GPU deployments unusable in practice
Potential cause (hypotheses)
After checking logs, it seems:
1. Unsloth’s vLLM patching may incorrectly disable TP or enforce single-GPU mode
The log even includes:
Unsloth: vLLM's KV Cache can use up to 0.0 GB
when multiple GPUs are visible.
2. vLLM engine may not be receiving correct TP configuration from ART
No TP config seems to propagate, or the engine rejects it and crashes.
3. CUDA_VISIBLE_DEVICES filtering + Unsloth’s GPU detection produces inconsistent internal state
ART logs the correct number of GPUs, but vLLM later fails.
Requested fix / enhancements
- Proper multi-GPU vLLM + Unsloth support inside ART
- Explicit configuration options for TP, PP, and GPU selection
- Graceful failure with meaningful error messages
- Documentation for how ART expects multi-GPU environments to be configured
- Validation that
CUDA_VISIBLE_DEVICESis respected by all internal components
I can provide full logs, environment files, or run debugging commands if needed.
Let me know what additional details would help.
- Ngôn ngữ chính
- Python
- Star
- 10.8k
- Fork
- 989
- Merge trung bình
- 11 giờ 38 phút
- Pull request đã merge (30 ngày)
- 104
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenPipe/ART
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 54/100
OpenPipe/ART#961 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
OpenPipe/ART#949 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 42/100
Maintainer thường phản hồi trong vòng 3 ngày
Issue tương tự
-
correction metadata
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
acl-org/acl-anthology#10104 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug status/needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
prowler-cloud/prowler#12885 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug in GaussianTailProbabilityCalibrator: running_statistics=False still uses a windowed varianceĐang mởbug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
selimfirat/pysad#107 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug ci-failure high priority
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
vllm-project/vllm-omni#8194 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày