Mọi GPU instance của Cloudj đều được truy cập theo cùng một cách: qua SSH, bằng key. Không có đăng nhập bằng mật khẩu, nên SSH vào máy chủ GPU là kỹ năng đầu tiên bạn cần nắm. Bài viết hướng dẫn tạo và thêm key, tìm host và port (không phải lúc nào cũng là 22), làm gì trong vài phút đầu sau khi triển khai, cách kiểm tra GPU bằng nvidia-smi, và hai thói quen giúp người mới tránh được nhiều rắc rối nhất: tmux và chuyển tiếp cổng. Bài viết dành cho cả sinh viên mới tập làm AI lẫn kỹ sư đã quen VPS.
Bước 1: tạo SSH key
Nếu bạn đã dùng SSH key cho máy chủ khác, có thể dùng lại. Nếu chưa, hãy tạo trên máy tính của bạn. Trên macOS, Linux và Windows 10, 11 (PowerShell đã có sẵn OpenSSH):
ssh-keygen -t ed25519 -C "laptop-cua-toi"
Nhấn Enter để giữ vị trí mặc định và đặt passphrase. Lệnh này tạo private key, thứ không bao giờ rời khỏi máy bạn, và public key có đuôi .pub. Bài thiết lập SSH key cho VPS giải thích kỹ hơn về key; cùng một key dùng được cho GPU instance.
In public key ra để sao chép:
cat ~/.ssh/id_ed25519.pub
Bước 2: thêm key và chọn key khi triển khai
Thêm public key vào tài khoản Cloudj trong console. Khi triển khai GPU, bạn bắt buộc chọn ít nhất một SSH key; thiếu key thì không triển khai được. Nếu làm theo nhóm, hãy thêm key của từng người và chọn tất cả.
Cách chọn máy, gồm cả quốc gia đặt máy, có trong bài chọn quốc gia cho máy chủ GPU trong console.
Bước 3: tìm host và port
Khi instance đã chạy, mở tab Connection. Tab này hiển thị:
- host,
- port, thường không phải 22,
- câu lệnh SSH đầy đủ, chỉ việc sao chép.
Câu lệnh có dạng:
ssh -p PORT root@HOST
Luôn lấy port từ tab Connection thay vì mặc định là 22.
Vài phút đầu tiên
Key mới thêm có thể mất tới 3 phút mới được chấp nhận sau khi instance khởi động. Nếu thấy Permission denied (publickey) ngay sau khi triển khai, hãy chờ một lát rồi thử lại trước khi thay đổi bất cứ điều gì.
Bước 4: kết nối gọn hơn
Thêm một mục vào ~/.ssh/config trên máy bạn:
Host gpu1
HostName HOST
Port PORT
User root
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 30
Giờ chỉ cần gõ ssh gpu1. ServerAliveInterval gửi một gói giữ kết nối mỗi 30 giây, hữu ích khi mạng hay cắt các phiên đang rảnh, chuyện khá quen với kết nối quốc tế từ Việt Nam. Nhớ cập nhật mục này khi triển khai instance mới.
Bước 5: kiểm tra GPU
Sau khi kết nối, xác nhận đúng thứ bạn đã thuê:
nvidia-smi
Bạn sẽ thấy tên GPU, bộ nhớ, phiên bản driver và phiên bản CUDA cao nhất mà driver hỗ trợ. Vài lệnh kiểm tra hữu ích khác:
nvidia-smi --query-gpu=name,memory.total,memory.used,utilization.gpu --format=csv
watch -n 2 nvidia-smi
df -h
Lệnh đầu in bản tóm tắt gọn, lệnh thứ hai làm mới mỗi hai giây khi job đang chạy, lệnh thứ ba cho biết dung lượng đĩa còn trống. Dung lượng đĩa cố định từ lúc triển khai, nên hãy kiểm tra sớm.
Nếu dùng template PyTorch, kiểm tra PyTorch có nhận GPU không:
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
Bài chạy PyTorch với template Jupyter nói chi tiết về template này.
Bước 6: giữ job dài sống sót với tmux
Nếu kết nối SSH bị rớt, mọi thứ đang chạy trong phiên đó sẽ dừng. Hãy chạy job dài trong tmux:
tmux new -s train
python train.py
Thoát ra bằng Ctrl+b rồi d. Lúc sau kết nối lại và gõ tmux attach -t train. Nếu máy chưa có tmux, cài bằng apt-get install -y tmux.
Bước 7: mở công cụ web bằng chuyển tiếp cổng
Jupyter, ComfyUI, API của model hay dashboard đều lắng nghe trên một cổng của GPU instance. Đừng mở chúng ra internet; hãy chuyển tiếp cổng qua SSH:
ssh -p PORT -L 8188:localhost:8188 root@HOST
Rồi mở http://localhost:8188 trên trình duyệt. Đổi số cổng cho công cụ khác, ví dụ -L 8888:localhost:8888 cho Jupyter hay -L 11434:localhost:11434 cho API của Ollama. Bài chạy Ollama trên máy chủ GPU châu Á dùng đúng cách này.
Chuyển file
rsync -avP -e "ssh -p PORT" ./data/ root@HOST:/workspace/data/
scp -P PORT root@HOST:/workspace/results.zip .
Lưu ý scp dùng -P viết hoa cho port. rsync -P tiếp tục được khi bị ngắt giữa chừng, rất quan trọng khi chuyển model lớn.
Xử lý sự cố
| Hiện tượng | Nguyên nhân có thể | Cách xử lý |
|---|---|---|
Permission denied (publickey) ngay sau khi triển khai | Key chưa được chấp nhận | Chờ tới 3 phút rồi thử lại |
Permission denied (publickey) về sau | Sai key, hoặc chưa chọn key lúc triển khai | Dùng -i với đúng key; triển khai lại có chọn key |
Connection refused hoặc timeout | Sai port, hoặc instance chưa chạy | Lấy port từ tab Connection; xem trạng thái trên trang instance |
Host key verification failed | Instance mới trả lời trên host và port bạn từng dùng trước đó | Xóa mục cũ bằng ssh-keygen -R "[HOST]:PORT" |
| Phiên bị rớt khi để rảnh | Mạng đóng kết nối nhàn rỗi | Thêm ServerAliveInterval 30 |
Trang instance còn hiển thị trạng thái, mức sử dụng GPU và những dòng log cuối của container, rất hữu ích khi container không khởi động được.
Câu hỏi thường gặp
Có đăng nhập bằng mật khẩu được không?
Không. GPU instance chỉ nhận SSH key.
Vì sao port của tôi không phải 22?
Port SSH được cấp riêng cho từng instance và có thể là bất kỳ số nào. Luôn dùng port trong tab Connection.
Nhiều người có dùng chung một instance được không?
Được. Thêm public key của từng người vào tài khoản và chọn tất cả khi triển khai.
Mở Jupyter hay ComfyUI thế nào?
Chuyển tiếp cổng bằng ssh -L rồi mở localhost trên trình duyệt.
Bước tiếp theo
Mở trang triển khai GPU, triển khai một instance nhỏ có chọn key của bạn, rồi chạy qua các bước kiểm tra ở trên. Tiền thuê trừ theo phút từ số dư tài khoản nạp bằng chuyển khoản VND. Giá "từ" theo thời gian thực của mọi mẫu có trên GPU cloud.