Bài này đi một mạch từ máy GPU vừa đặt xong tới lúc chạy được một mô hình ngôn ngữ và gọi được nó từ ứng dụng. Trước khi làm theo, máy phải đã nhận GPU: xem bài Cài trình điều khiển và bộ công cụ để chạy việc trên GPU.
Kiểm nhanh một lệnh, ra bảng là đi tiếp được:
nvidia-smi
1. Chọn mô hình vừa bộ nhớ GPU
Đây là quyết định đầu tiên và là chỗ hay vấp nhất. Mô hình không vừa bộ nhớ GPU thì không chạy được, dù CPU và RAM có dư bao nhiêu.
Cách ước lượng nhanh dung lượng bộ nhớ GPU một mô hình cần:
| Cách lượng tử hoá | Bộ nhớ cần, xấp xỉ |
|---|---|
| Không lượng tử (16 bit) | số tỷ tham số × 2 GB |
| 8 bit | số tỷ tham số × 1 GB |
| 4 bit | số tỷ tham số × 0,6 GB |
Ví dụ một mô hình 7 tỷ tham số: khoảng 14 GB nếu để nguyên, khoảng 4 GB nếu lượng tử 4 bit.
Cộng thêm khoảng 1 tới 2 GB cho phần ngữ cảnh và phần đệm khi chạy. Nếu con số ra sát mức bộ nhớ của card thì chọn mô hình nhỏ hơn một bậc, vì chạy sát mức sẽ gặp lỗi hết bộ nhớ ngay khi có nhiều yêu cầu cùng lúc.
Xem bộ nhớ card đang có:
nvidia-smi --query-gpu=name,memory.total --format=csv
2. Cách nhanh nhất để có kết quả: Ollama
Nếu quý Khách hàng chỉ cần chạy một mô hình ngôn ngữ và gọi nó từ ứng dụng, đây là đường ngắn nhất. Không phải dựng môi trường Python, không phải lo phiên bản thư viện.
curl -fsSL https://ollama.com/install.sh -o cai-ollama.sh
less cai-ollama.sh # doc qua truoc khi chay
sudo sh cai-ollama.sh
Kiểm Ollama có thấy GPU không:
ollama --version
nvidia-smi # chay song song o mot cua so khac khi tai mo hinh
Tải và chạy thử một mô hình:
ollama run qwen2.5:7b
Lần đầu sẽ tải mô hình về, mất một lúc tuỳ đường truyền. Sau đó hiện dấu nhắc để gõ thử. Gõ /bye để thoát.
Kiểm xem nó có thật sự chạy trên GPU không. Mở một cửa sổ thứ hai trong lúc mô hình đang trả lời:
nvidia-smi
Cột Memory-Usage phải tăng và GPU-Util phải nhảy lên. Nếu bộ nhớ GPU gần như không đổi mà CPU thì đầy, nghĩa là mô hình đang chạy trên CPU, và tốc độ sẽ chậm hơn nhiều lần. Xem mục 6.
3. Gọi từ ứng dụng
Ollama mở sẵn một cổng dịch vụ ở localhost:11434. Gọi thử:
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "Viet mot cau gioi thieu ngan ve dich vu luu tru dam may",
"stream": false
}'
🔴 Mặc định cổng này chỉ nghe ở máy nội bộ, và nên giữ nguyên như vậy. Nếu mở ra Internet thì bất kỳ ai cũng gọi được, tức là dùng GPU mà quý Khách hàng đang trả tiền. Cần gọi từ máy khác thì đi qua một lớp có xác thực, hoặc qua đường hầm riêng, đừng mở thẳng cổng ra ngoài.
4. Khi cần tự chủ hơn: dùng container
Hợp khi quý Khách hàng cần đúng phiên bản thư viện, hoặc chạy mã tự viết chứ không chỉ gọi mô hình có sẵn.
# Cai Docker va phan noi Docker voi GPU (xem bai Cai trinh dieu khien, muc 3)
sudo docker run --rm --gpus all ubuntu nvidia-smi
Ra đúng bảng nvidia-smi bên trong container nghĩa là đường nối đã thông. Từ đây kéo về container đã dựng sẵn cho công việc của mình.
Ưu điểm so với cài thẳng lên máy: phiên bản thư viện nằm trong container, nên nâng cấp hệ điều hành không làm hỏng môi trường, và chuyển sang máy khác chỉ việc chạy lại cùng một lệnh.
5. Dữ liệu và mô hình để ở đâu
Mô hình chiếm nhiều dung lượng, và ổ đĩa máy GPU thường không rộng.
| Thứ | Nên để ở đâu |
|---|---|
| Mô hình đang dùng | Ổ đĩa của máy, để nạp nhanh |
| Mô hình đã thử nhưng không dùng | Xoá đi, tải lại khi cần |
| Dữ liệu huấn luyện, dữ liệu gốc | Kho tách biệt, chép phần đang dùng về máy khi chạy |
| Kết quả đã xong | Đẩy ra kho tách biệt ngay sau mỗi đợt |
Xem các mô hình đang chiếm chỗ và xoá bớt:
ollama list
ollama rm ten-mo-hinh
Để dữ liệu gốc ở kho tách biệt có một ích lợi thường bị bỏ qua: khi không chạy việc, quý Khách hàng huỷ máy GPU được mà không mất gì. Xem chuyên mục Object Storage để biết cách nối kho vào máy.
6. Mô hình chạy trên CPU thay vì GPU
Hiện tượng: trả lời rất chậm, nvidia-smi thấy bộ nhớ GPU gần như không dùng, trong khi CPU đầy.
Nguyên nhân theo thứ tự hay gặp:
a. Mô hình không vừa bộ nhớ GPU. Phần mềm tự chuyển sang CPU thay vì báo lỗi. Đây là nguyên nhân phổ biến nhất. Chọn bản lượng tử nhỏ hơn, hoặc mô hình ít tham số hơn.
b. Trình điều khiển chưa sẵn sàng. Chạy nvidia-smi, không ra bảng thì xử lý lớp đó trước.
c. Bộ nhớ GPU đang bị tiến trình cũ giữ. Xem cột Processes trong nvidia-smi, kết thúc tiến trình không còn dùng.
d. Container chạy thiếu --gpus all. Thiếu cờ này thì container không nhìn thấy GPU nào.
7. Giữ việc chạy khi mất kết nối
Việc chạy trong phiên SSH sẽ chết theo phiên khi đường truyền ngắt. Với một đợt huấn luyện vài giờ, đó là mất trắng.
sudo apt install -y tmux
tmux new -s ai
# chay viec o day
# nhan Ctrl+B roi D de roi phien ma viec van chay
Quay lại:
tmux attach -t ai
8. Theo dõi trong lúc chạy
watch -n 2 nvidia-smi
Nhìn hai cột:
Memory-Usagegần đầy màGPU-Utilthấp: GPU đang chờ dữ liệu, nút cổ chai nằm ở khâu đọc đĩa hoặc chuẩn bị dữ liệu, không phải ở GPU.- Cả hai đều cao: GPU đang chạy hết sức, muốn nhanh hơn thì cần card mạnh hơn hoặc tối ưu lại.
9. Việc nên làm thành thói quen
| Thói quen | Vì sao |
|---|---|
| Ghi lại tên card, phiên bản trình điều khiển, phiên bản thư viện | Mọi tài liệu và mọi bên hỗ trợ đều hỏi ba thứ này |
Chạy việc dài trong tmux |
Mất kết nối không làm mất việc |
| Đẩy kết quả ra kho ngoài sau mỗi đợt | Máy GPU không phải chỗ giữ dữ liệu lâu dài |
| Tắt máy khi không dùng, nếu thuê theo giờ | Máy bật mà không chạy gì vẫn tính tiền |
| Không mở cổng mô hình ra Internet | Người khác dùng GPU quý Khách hàng đang trả tiền |
10. Khi cần hỗ trợ
Lỗi về trình điều khiển, GPU không nhận, máy chậm bất thường: xem bài GPU không nhận hoặc chạy chậm.
Cần tư vấn chọn cấu hình phù hợp với mô hình định chạy, hãy nêu rõ tên mô hình và số tham số khi liên hệ đội ngũ kinh doanh Cloudzone, hoặc nhắn qua ô chat trên trang chủ. Đó là hai thông tin quyết định dung lượng bộ nhớ GPU cần có.