Chọn một GPU hay nhiều GPU hiện ra trên trang triển khai Cloudj dưới dạng một bộ chọn nhỏ: 1x, 2x, 4x hoặc 8x. Mọi GPU trong một instance nằm trong cùng một máy và cùng model. Chọn số lớn hơn nghe như mua thêm tốc độ, nhưng nhiều GPU chỉ có ích khi phần mềm của bạn biết chia việc cho chúng, và đôi khi một card lớn hơn lại là câu trả lời đúng. Bài này giải thích từng lựa chọn cho bạn gì, hai cách chính để dùng nhiều GPU, và điều nên chờ đợi khi tìm máy nhiều GPU ở một nước cụ thể.
Nếu câu hỏi của bạn là về mô hình ngôn ngữ cỡ 70B, bài chạy LLM 70B trên nhiều GPU tính toán bộ nhớ chi tiết.
Bộ chọn số GPU có nghĩa là gì
Khi bạn chọn 2x, 4x hoặc 8x, console chỉ liệt kê những máy có đúng số GPU đó của model đã chọn. Bạn thuê trọn bộ cùng lúc, trong một container, trên một host. Không thể thêm GPU vào instance đang chạy; muốn đổi số lượng, bạn triển khai máy mới.
Vì mọi GPU nằm trong cùng máy, chúng dùng chung CPU, RAM, ổ đĩa và mạng của máy đó. Tốc độ các GPU trao đổi với nhau tùy phần cứng: card phổ thông thường giao tiếp qua PCIe, còn máy data center dạng SXM như A100 SXM4 hay H100 SXM thường có NVLink băng thông cao giữa các GPU.
Bốn câu hỏi quyết định
Hãy trả lời lần lượt.
- Mô hình và bộ nhớ làm việc của nó có vừa một GPU không? Nếu có, một GPU là đơn giản nhất. Chuyển sang câu 3.
- Nếu không, có card đơn nào đủ lớn không? Một card 80 GB hay 96 GB thường dễ dựng và chạy nhanh hơn so với chia mô hình trên nhiều card nhỏ. Nếu card đó đang có và cấp tài khoản cho phép, hãy ưu tiên.
- Job của bạn bị giới hạn bởi thông lượng hay bộ nhớ? Huấn luyện trên dataset lớn, hoặc phục vụ nhiều người dùng, có thể nhanh hơn khi nhiều GPU làm song song.
- Code của bạn có hỗ trợ nhiều GPU không? Nếu script huấn luyện hay phần mềm phục vụ chỉ chạy một GPU, các GPU còn lại sẽ ngồi chơi trong khi bạn vẫn trả tiền.
Hai cách dùng nhiều GPU
Data parallel. Mỗi GPU giữ một bản đầy đủ của mô hình và xử lý một phần khác nhau của batch. Gradient được lấy trung bình giữa các GPU sau mỗi bước. Đây là cách chuẩn để tăng tốc huấn luyện khi mô hình vừa một card. Với PyTorch, thường khởi chạy bằng torchrun:
torchrun --nproc_per_node=4 train.py --config config.yaml
Với inference thì đơn giản hơn: chạy mỗi GPU một model server và đặt bộ cân bằng tải phía trước, hoặc để phần mềm phục vụ tự quản lý các bản sao.
Tensor parallel (hay model parallel). Chính mô hình được chia ra trên các GPU, mỗi GPU giữ một phần của từng layer. Đây là cách phục vụ hoặc huấn luyện mô hình không vừa một card. Cách này cần kết nối nhanh giữa các GPU, vì chúng trao đổi dữ liệu ở mọi layer. Ví dụ với vLLM:
vllm serve <hf-model-id> --tensor-parallel-size 2 --host 127.0.0.1 --port 8000
Bài dựng inference server vLLM hướng dẫn trọn bộ cách làm này.
So sánh nhanh
| Lựa chọn | Hợp nhất với | Cần để ý |
|---|---|---|
| 1x | Phần lớn inference, fine-tune mô hình nhỏ và vừa, phát triển | Giới hạn bộ nhớ của card |
| 2x | Mô hình hơi quá lớn cho một card; gấp đôi thông lượng huấn luyện | Chi phí trao đổi trên card PCIe |
| 4x | Huấn luyện lớn hơn; phục vụ mô hình lớn bằng tensor parallel | Code phải dùng hết GPU; ổ đĩa và RAM cũng phải đủ |
| 8x | Huấn luyện quy mô lớn, mô hình rất lớn | Ít máy hơn; card data center cần cấp tài khoản cao hơn |
Ví dụ cụ thể: bốn card RTX 4090 cho tổng 96 GB, bằng một card workstation 96 GB. Máy bốn card có thể cho nhiều sức tính hơn khi huấn luyện data parallel, nhưng để phục vụ một mô hình lớn bằng tensor parallel, card đơn tránh được hoàn toàn lưu lượng giữa các GPU. Nếu cả hai đều đang có, hãy thử cả hai.
Máy nhiều GPU theo khu vực
Trên Cloudj, vị trí là bộ lọc quốc gia trên danh sách máy độc lập thay đổi liên tục. Máy 8 GPU chỉ là phần nhỏ trong danh sách, và máy data center 4x, 8x thường bị thuê liền nhiều ngày. Khi tìm hẹp trong một nước, lựa chọn 8x có thể không ra máy nào dù máy 1x cùng model vẫn có. Tình trạng thay đổi trong ngày.
Nếu tìm máy nhiều GPU mà danh sách trống:
- mở rộng danh sách quốc gia, nhất là với huấn luyện, khi vị trí hiếm khi quan trọng; nhóm ở Việt Nam hoàn toàn có thể huấn luyện trên máy ở Mỹ hay châu Âu;
- thử số lượng khác (hai máy 4x không giống một máy 8x, nhưng 4x có thể là đủ);
- thử model tương đương có nhiều bộ nhớ hơn trên mỗi card;
- kiểm tra lại sau.
Với job huấn luyện dài trên máy ở Mỹ, bài huấn luyện AI trên GPU tại Mỹ nói về checkpoint và chuyển dữ liệu.
Chi phí, không cần con số
Máy nhiều GPU đắt hơn mỗi giờ, và bạn trả cho từng GPU dù nó bận hay rảnh. Trước một job dài, hãy xác nhận mọi GPU đều đang làm việc:
nvidia-smi --query-gpu=index,utilization.gpu,memory.used --format=csv -l 5
Hãy chọn ổ đĩa đủ dùng và để ý khoản cọc: khi triển khai, khoảng một giờ tiền GPU được giữ từ số dư tài khoản, và khoản này tăng theo số GPU. Nhớ nạp đủ tiền bằng chuyển khoản VND trước khi chọn 4x hay 8x. Giá theo thời gian thực có trên GPU cloud.
GPU phổ thông dùng được với tài khoản mới ở bất kỳ số lượng nào đang có. Card data center cần cấp tài khoản cao hơn. Bài GPU phổ thông hay GPU data center giải thích khác biệt.
Câu hỏi thường gặp
Các GPU trong instance 4x có nằm cùng một máy không?
Có. Mọi GPU của một instance nằm trong một host và cùng model.
Tôi thêm GPU thứ hai sau được không?
Không. Số GPU cố định lúc triển khai. Hãy triển khai máy mới với số lượng cần dùng.
2x RTX 4090 có giống một card 48 GB không?
Không hẳn. Tổng bộ nhớ tương đương, nhưng chia mô hình trên hai card có thêm chi phí trao đổi.
Vì sao tôi không tìm được máy 8x ở nước mình?
Máy 8x hiếm hơn và thường bị thuê dài ngày. Hãy mở rộng bộ lọc quốc gia hoặc thử 4x.
Bước tiếp theo
Trả lời bốn câu hỏi ở trên, rồi mở trang triển khai với RTX 4090 và so sánh các máy 1x, 2x, 4x. Xác nhận mọi GPU đều bận trước khi chạy dài, và luôn đưa checkpoint ra khỏi máy.