Tới nội dung
Cloudj

So sánh GPU

Một GPU hay nhiều GPU: chọn máy 1x, 2x, 4x hay 8x khi thuê cloud

Một GPU hay nhiều GPU: bộ chọn số GPU hoạt động thế nào, khi nào data parallel hay tensor parallel có ích, khi nào một card lớn tốt hơn, và vì sao máy 8x hiếm.

Cập nhật · 4 phút đọc

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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ọnHợp nhất vớiCần để ý
1xPhần lớn inference, fine-tune mô hình nhỏ và vừa, phát triểnGiới hạn bộ nhớ của card
2xMô hình hơi quá lớn cho một card; gấp đôi thông lượng huấn luyệnChi phí trao đổi trên card PCIe
4xHuấn luyện lớn hơn; phục vụ mô hình lớn bằng tensor parallelCode phải dùng hết GPU; ổ đĩa và RAM cũng phải đủ
8xHuấ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.

Triển khai máy chủ hoặc mua proxy

Chọn vị trí trong console, xem giá trực tiếp và thanh toán từ số dư tài khoản.