Tới nội dung
Cloudj

Ứng dụng GPU

Train YOLO trên GPU cloud: dự án thị giác máy tính tại châu Á

Hướng dẫn train YOLO trên GPU cloud cho bài toán nhà máy và bán lẻ: để dung lượng dataset quyết định khu vực, chọn card RTX tầm trung, train và xuất model.

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

Phát hiện lỗi trên dây chuyền may, đếm kệ trống ở chuỗi cửa hàng tiện lợi, kiểm tra mũ bảo hộ ở công trường, đọc biển số ở bãi giữ xe: các dự án thị giác máy tính ở Việt Nam và Đông Nam Á thường bắt đầu bằng một model YOLO và một kho ảnh đã gán nhãn. Train trên laptop thì chậm, còn mua hẳn một GPU cho dự án ba tuần hiếm khi hợp lý. Bài hướng dẫn train YOLO trên GPU cloud này đi theo một dự án thực tế từ dataset tới model đã xuất, trên GPU thuê của Cloudj, và cho thấy vì sao dung lượng dataset, chứ không phải vị trí người dùng, quyết định bạn nên thuê ở đâu.

Dự án ví dụ

Một công ty tích hợp hệ thống ở TP.HCM đang làm tính năng phát hiện kệ trống cho một chuỗi bán lẻ. Họ có:

  • Khoảng 60.000 ảnh đã gán nhãn từ camera cửa hàng, tầm 40 GB dạng JPEG.
  • Thiết bị đích ở mỗi cửa hàng: một hộp edge nhỏ sẽ chạy model.
  • Hạn chót ba tuần, với nhiều vòng train khi nhãn được cải thiện.

Không ai chờ GPU theo thời gian thực; train là tác vụ batch. Vậy câu hỏi vị trí duy nhất là: 40 GB tới GPU nhanh cỡ nào, và trọng số train xong về lại nhanh cỡ nào?

Bước 1: để dung lượng dataset chọn khu vực

Tình trạng datasetÔ Country gợi ýLý do
Dataset lớn trên server hoặc NAS ở Việt NamSG, HKĐường upload từ Việt Nam ngắn hơn; có thể thử VN, nhưng không có gì bảo đảm có máy ở Việt Nam được liệt kê
Dataset lớn ở Nhật hoặc HànJP hoặc KRUpload trong khu vực
Dataset đã nằm trên cloud storage ở nơi khácTìm rộng hoặc gần nơi lưu trữKéo dữ liệu từ phía máy GPU
Dataset nhỏ (vài GB)Để trốngChọn theo giá và độ tin cậy

Hướng dẫn thuê GPU châu Á giải thích các mã châu Á, còn bài chuyển model và dữ liệu giữa các khu vực GPU nói về chiến lược chuyển dataset lớn. Nếu dataset nhỏ, logic trong bài train LoRA trên GPU ở Mỹ vẫn đúng: train batch thì vị trí gần như không quan trọng.

Hàng thay đổi trong ngày. Nếu SG, HK chưa có máy phù hợp, thêm JP, thử lại sau hoặc nới bộ lọc.

Bước 2: chọn card tầm trung

Model phát hiện vật thể YOLO nhỏ hơn nhiều so với model ngôn ngữ. Card consumer tầm trung thường là đủ:

  • RTX 4070 Ti Super, 16 GB: ổn cho model nano tới medium ở kích thước ảnh tiêu chuẩn.
  • RTX 3090, 24 GB: dư chỗ cho model lớn hơn, batch lớn hơn hoặc độ phân giải cao hơn.
  • RTX 4090, 24 GB: mỗi vòng train nhanh hơn khi bạn lặp lại nhiều lần.

Cả ba đều thuê được ở cấp tài khoản khởi đầu. Bài thuê RTX 3090 ở châu Á tập trung vào card này. Giá "từ" theo thời gian thực có trên GPU cloud.

Đừng bỏ qua CPU và ổ đĩa trong danh sách kết quả: việc nạp dữ liệu và augmentation chạy trên CPU, nên máy có quá ít vCPU có thể khiến GPU ngồi chờ. Chọn ổ đĩa đủ cho dataset, cache và vài lượt train; dung lượng không đổi được sau khi triển khai.

Bước 3: triển khai và upload một lần

Mở trang triển khai RTX 3090, nhập SG, HK, xem reliability, max duration và tốc độ tải, chọn template PyTorch + JupyterLab hoặc Ubuntu + CUDA, chọn SSH key rồi triển khai.

Upload dataset bằng rsync, công cụ này tiếp tục được khi kết nối bị ngắt:

rsync -avP -e "ssh -p PORT" ./dataset/ root@HOST:/workspace/dataset/

Với hàng chục nghìn file nhỏ, đóng gói trước thường nhanh hơn:

tar -cf dataset.tar dataset/
rsync -avP -e "ssh -p PORT" dataset.tar root@HOST:/workspace/

Nếu văn phòng dùng đường truyền cáp quang doanh nghiệp của Viettel hay FPT, hãy upload từ đó thay vì từ laptop qua wifi, sẽ đỡ mất thời gian hơn nhiều.

Bước 4: train

Kết nối và cài thư viện train:

ssh -p PORT root@HOST
nvidia-smi
pip install ultralytics
tmux new -s yolo
cd /workspace
yolo detect train data=/workspace/dataset/data.yaml model=yolo11s.pt epochs=100 imgsz=640 batch=-1

Nếu đã upload file tar, hãy giải nén trước bằng tar -xf /workspace/dataset.tar -C /workspace. batch=-1 để công cụ tự chọn batch size vừa với bộ nhớ GPU. Chạy trong tmux giúp quá trình train không dừng khi rớt SSH. Tài liệu Ultralytics mô tả mọi tham số train, từ augmentation tới dừng sớm.

Theo dõi tiến độ từ một phiên khác:

watch -n 5 nvidia-smi
tail -f runs/detect/train/results.csv

Bước 5: xuất model và mang về

Khi train xong, trọng số tốt nhất nằm ở runs/detect/train/weights/best.pt. Xuất sang định dạng dùng được trên thiết bị edge:

yolo export model=runs/detect/train/weights/best.pt format=onnx

Rồi kéo kết quả về:

rsync -avP -e "ssh -p PORT" root@HOST:/workspace/runs/ ./runs/

Nếu thiết bị edge dùng TensorRT, hãy build engine TensorRT ngay trên thiết bị hoặc trên phần cứng tương đương, vì engine gắn với GPU và phiên bản phần mềm lúc build.

Giữa các vòng train

Nhãn được sửa, và bạn sẽ train lại. Có hai cách:

  • Destroy rồi triển khai lại cho mỗi vòng. Giữa các vòng không tốn đồng nào, nhưng phải upload dataset lại. Hợp khi các vòng cách nhau vài ngày.
  • Stop instance. Ổ đĩa và dataset được giữ, tính phí lưu trữ, nhưng GPU bị nhả và khi bật lại phải chờ GPU rảnh. Hợp khi vòng tiếp theo sắp tới và dataset lớn.

Dù cách nào, hãy giữ trọng số tốt nhất và file cấu hình train ở ngoài máy. Instance và ổ đĩa bị xóa vào ngày "available until", và host không có SLA phần cứng. Tiền thuê trừ theo phút từ số dư tài khoản, nạp bằng chuyển khoản VND.

Giấy phép và dữ liệu

Kiểm tra giấy phép của thư viện train và trọng số pretrained trước khi đưa vào sản phẩm thương mại; một số bản YOLO phổ biến dùng giấy phép copyleft và có điều khoản thương mại riêng. Bảo quản cẩn thận dữ liệu camera vì có thể chứa hình ảnh con người, và tự kiểm tra nghĩa vụ pháp lý của mình.

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

GPU tầm trung có đủ để train YOLO không?

Thường là đủ. Card RTX 16 GB hoặc 24 GB xử lý được phần lớn dự án phát hiện vật thể ở kích thước ảnh tiêu chuẩn.

Có nên thuê GPU gần camera cửa hàng không?

Chỉ để rút ngắn thời gian upload dataset. Việc train không cần gần người dùng.

Có chạy YOLO trực tiếp cho camera trên GPU cloud được không?

Được, nhưng đa số dự án bán lẻ và nhà máy chạy inference trên thiết bị edge, chỉ dùng cloud để train.

Cloudj có cài sẵn Ultralytics không?

Không. Bạn cài bằng pip qua SSH, hoặc dùng Docker image công khai của mình.

Bước tiếp theo

Mở trang triển khai RTX 3090, tìm SG, HK, và chạy thử một vòng train ngắn trên một phần dataset trước khi upload toàn bộ.

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.