Tới nội dung
Cloudj

Hướng dẫn GPU

Dùng PyTorch JupyterLab trên GPU cloud: hướng dẫn template từ A đến Z

Cách dùng PyTorch JupyterLab trên GPU cloud với template của Cloudj: mở JupyterLab, kiểm tra CUDA, chuyển file lớn qua SSH và giữ notebook an toàn.

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

Dùng PyTorch JupyterLab trên GPU cloud lẽ ra chỉ mất vài phút, chứ không phải cả buổi chiều loay hoay cài driver. Cloudj có sẵn template PyTorch + JupyterLab cho đúng việc này: một image PyTorch chạy trên GPU thuê, kèm JupyterLab mở được từ trang instance. Bài này đi qua template từ lúc triển khai tới lúc dọn dẹp: mở JupyterLab, quy tắc phiên 12 giờ, cách dùng SSH tunnel thay thế, kiểm tra PyTorch có thấy GPU không, chuyển file lớn đúng cách, và sao lưu notebook.

Nếu bạn là sinh viên với ngân sách eo hẹp, bài Jupyter Notebook có GPU cho sinh viên bổ sung các thói quen giúp tiết kiệm chi phí.

Ba template, nói ngắn gọn

TemplateKhi nào dùng
Ubuntu 22.04 + CUDA (SSH)Bạn muốn nền sạch và tự cài mọi thứ
PyTorch + JupyterLabBạn muốn có sẵn PyTorch và giao diện notebook
Custom imageBạn cần Docker image công khai của riêng mình; cần cấp tài khoản cao hơn

Bài này nói về template thứ hai. Khi đã cần nhiều hơn, bài dùng custom Docker image cho GPU hướng dẫn mang môi trường riêng của bạn lên.

Bước 1: triển khai với template

  1. Mở trang triển khai GPU và chọn model. Card phổ thông như RTX 4090 dùng được với tài khoản mới.
  2. Có thể nhập mã quốc gia vào ô Country để chọn host ở gần, ví dụ SG, HK nếu bạn ở Việt Nam. Tình trạng máy thay đổi trong ngày; nếu không có máy, thêm mã lân cận.
  3. Chọn template PyTorch + JupyterLab.
  4. Đặt dung lượng ổ đĩa. Phải đạt mức tối thiểu của template và không thể nới sau, nên hãy chừa chỗ cho dataset, checkpoint và kết quả.
  5. Chọn ít nhất một SSH key. Instance GPU không cho đăng nhập bằng mật khẩu.
  6. Triển khai. Nếu không khởi động được, bạn không bị tính tiền và tiền cọc được hoàn lại.

Bước 2: mở JupyterLab từ console

Khi instance đã chạy và console có nút mở, hãy mở JupyterLab từ trang instance. Có hai điểm cần nhớ:

  • Mỗi phiên kéo dài 12 giờ. Sau đó bạn mở lại JupyterLab từ trang instance. File và instance không bị ảnh hưởng; chỉ phiên trên trình duyệt hết hạn.
  • Lưu lượng notebook đi qua Cloudj. Rất tiện để sửa và chạy cell, nhưng không phải đường phù hợp để tải lên hay tải về file lớn. File lớn hãy dùng SSH.

Bước 3: kiểm tra PyTorch có thấy GPU

Trong một notebook mới, chạy:

import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
x = torch.randn(4096, 4096, device="cuda")
print((x @ x).sum().item())

Nếu is_available() trả về False, hãy kiểm tra trạng thái và log của instance trên trang instance trước. Bạn cũng có thể mở terminal trong JupyterLab và chạy nvidia-smi để xem GPU, bộ nhớ đang dùng và driver.

Cài thêm thư viện ngay trong cell bằng %pip install kèm tên gói, hoặc từ terminal của JupyterLab. Tránh cài lại chính torch trừ khi cần bản build cụ thể, vì phiên bản trong template đã khớp với thư viện CUDA đi kèm. Trang cài đặt PyTorch sẽ giúp nếu bạn thật sự cần bản khác.

Bước 4: dùng SSH tunnel thay thế

Có người thích trình soạn thảo quen thuộc trên máy mình như VS Code, hoặc muốn JupyterLab không bị giới hạn phiên 12 giờ trên trình duyệt. Kết nối bằng lệnh SSH trong tab Connection và tự khởi động JupyterLab:

ssh -L 8888:localhost:8888 -p <port> root@<host>
jupyter lab --no-browser --ip 127.0.0.1 --port 8888

Dòng đầu chạy trên laptop, dòng thứ hai chạy trong phiên SSH vừa mở (tốt nhất là trong tmux). Mở http://localhost:8888 trên máy và dùng token mà JupyterLab in ra. Các trình soạn thảo hỗ trợ Jupyter cũng kết nối được vào địa chỉ này. Bài SSH vào instance GPU nói về key, cổng và việc key mới thêm có thể phải chờ tới ba phút.

Bước 5: chuyển file lớn qua SSH

Dùng rsync hoặc scp cho dataset và trọng số mô hình, đừng dùng nút upload của JupyterLab:

rsync -avP -e "ssh -p <port>" ./data/ root@<host>:/workspace/data/
rsync -avP -e "ssh -p <port>" root@<host>:/workspace/outputs/ ./outputs/

rsync tiếp tục được khi bị ngắt giữa chừng và bỏ qua file đã có. Điều này rất có ích khi bạn upload từ mạng gia đình hay mạng 4G ở Việt Nam. Băng thông tính theo GB với giá niêm yết của máy, nên tránh chuyển cùng một dữ liệu hai lần.

Bước 6: sao lưu notebook

Các máy là host độc lập, không có SLA phần cứng. Mỗi máy còn có ngày "available until", tới ngày đó instance và ổ đĩa bị xóa. Hãy coi ổ của instance là chỗ tạm:

  • Commit notebook và code lên Git từ terminal JupyterLab, thường xuyên.
  • Chép checkpoint và kết quả về kho lưu trữ của bạn ngay khi có.
  • Trước khi xóa instance, đồng bộ lần cuối và mở thử vài file ở máy bạn để chắc chắn bản sao đọc được.

Bài sao lưu instance GPU trước khi máy hết hạn có quy trình đầy đủ.

Bước 7: dừng hay xóa

Stop (dừng) giữ ổ đĩa và chỉ tính phí lưu trữ, nhưng nhả GPU ra; khi bật lại có thể phải chờ tới lúc có GPU rảnh. Destroy (xóa) xóa instance cùng ổ đĩa và dừng tính tiền. Với phần lớn công việc trên notebook, lưu hết rồi xóa là thói quen gọn gàng hơn. Giá theo thời gian thực của mọi card có trên GPU cloud; tiền trừ theo phút từ số dư tài khoản mà bạn nạp bằng chuyển khoản VND.

Câu hỏi thường gặp

Template có desktop hay remote desktop không?

Không. Instance GPU không có giao diện desktop. Hãy dùng JupyterLab trên trình duyệt hoặc SSH.

Sau 12 giờ dùng JupyterLab thì sao?

Phiên trên trình duyệt kết thúc; bạn mở lại JupyterLab từ trang instance. Instance vẫn chạy bình thường.

Tôi dùng phiên bản PyTorch khác được không?

Được, bằng cách cài trong instance, hoặc dùng Docker image công khai của riêng bạn khi ở cấp tài khoản cao hơn.

Vì sao file lớn nên đi qua SSH?

Lưu lượng JupyterLab đi qua Cloudj và dành cho việc tương tác. SSH đi trực tiếp và tiếp tục được với rsync.

Bắt đầu

Mở trang triển khai GPU, chọn template PyTorch + JupyterLab và một model hợp với công việc. Kiểm tra CUDA ở cell đầu tiên, chuyển file lớn qua SSH, và commit notebook trước khi kết thúc phiên.

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.