Hub documentation
Spaces ZeroGPU: Phân bổ GPU động cho Spaces
Spaces ZeroGPU: Phân bổ GPU động cho Spaces
ZeroGPU là một hạ tầng dùng chung, tối ưu hóa việc sử dụng GPU cho các mô hình và demo AI trên Hugging Face Spaces. Nó phân bổ và giải phóng các GPU NVIDIA RTX Pro 6000 Blackwell một cách động khi cần, cung cấp:
- Truy cập GPU miễn phí: Cho phép sử dụng GPU hiệu quả về chi phí cho Spaces.
- Hỗ trợ đa GPU: Cho phép Spaces tận dụng nhiều GPU đồng thời trên một ứng dụng duy nhất.
Khác với các cấp phát GPU đơn truyền thống, hệ thống hiệu quả của ZeroGPU giúp giảm rào cản cho các nhà phát triển, nhà nghiên cứu và tổ chức trong việc triển khai các mô hình AI bằng cách tối đa hóa việc sử dụng tài nguyên và hiệu quả năng lượng.
Sử dụng và lưu trữ ZeroGPU Spaces
- Using existing ZeroGPU Spaces
- ZeroGPU Spaces có thể được sử dụng miễn phí cho tất cả người dùng. (Xem danh sách được tuyển chọn).
- Người dùng PRO nhận hạn mức sử dụng hàng ngày gấp 8 lần, có độ ưu tiên cao nhất trong hàng đợi GPU và có thể vượt quá hạn mức hàng ngày bằng cách sử dụng tín dụng trả trước khi dùng bất kỳ ZeroGPU Spaces nào.
- Hosting your own ZeroGPU Spaces
- Tài khoản cá nhân miễn phí: các tài khoản có tình trạng tốt (email đã xác minh, tài khoản trên 30 ngày) có thể lưu trữ tối đa 2 ZeroGPU Spaces miễn phí.
- Tài khoản PRO: Đăng ký PRO để lưu trữ tối đa 10 Spaces ZeroGPU dưới tài khoản của bạn.
- Tổ chức: Đăng ký gói Team hoặc Enterprise để bật ZeroGPU Spaces cho tất cả thành viên trong tổ chức.
Thông số kỹ thuật
ZeroGPU hỗ trợ hai kích thước GPU
| Kích thước GPU | Phần cứng hỗ trợ | Vram | Chi phí hạn mức |
|---|---|---|---|
large (mặc định) | Một nửa NVIDIA RTX Pro 6000 Blackwell | 48GB | 1× |
xlarge | Toàn bộ NVIDIA RTX Pro 6000 Blackwell | 96GB | 2× |
Xem chọn kích thước GPU để tìm hiểu cách sử dụng các kích thước
Tương thích
Các Space ZeroGPU được thiết kế để tương thích với hầu hết các Space GPU dựa trên PyTorch. Mặc dù khả năng tương thích được tăng cường cho các thư viện cấp cao của Hugging Face như transformers và diffusers, người dùng cần lưu ý rằng:
- Hiện tại, ZeroGPU Spaces chỉ tương thích với Gradio SDK.
- Các Space ZeroGPU có thể có khả năng tương thích hạn chế so với các Space GPU tiêu chuẩn.
- Một số vấn đề bất ngờ có thể xảy ra trong một số kịch bản.
Phiên bản được hỗ trợ
Gradio: 4+
PyTorch: Gần như tất cả các phiên bản từ 2.8.0 đến mới nhất đều được hỗ trợ
Xem danh sách đầy đủ
- 2.8.0
- 2.9.1
- 2.10.0
- 2.11.0
- 2.12.1
- 2.13.0
Python:
- 3.12.12
- 3.10.13
Bắt đầu với ZeroGPU
Để sử dụng ZeroGPU trong Space của bạn, hãy làm theo các bước sau:
- Hãy đảm bảo phần cứng ZeroGPU đã được chọn trong cài đặt Space của bạn.
- Nhập module
spaces. - Trang trí các hàm phụ thuộc vào GPU bằng
@spaces.GPU.
Quá trình trang trí này cho phép Space yêu cầu một GPU khi hàm được gọi và giải phóng nó khi hoàn tất.
Trình trang trí
@spaces.GPUđược thiết kế để không gây tác dụng phụ trong các môi trường không phải ZeroGPU, đảm bảo khả năng tương thích trên các cấu hình khác nhau.
Ví dụ sử dụng
import spaces
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')
@spaces.GPU
def generate(prompt):
return pipe(prompt).images
gr.Interface(
fn=generate,
inputs=gr.Text(),
outputs=gr.Gallery(),
).launch()Tải mô hình
Mặc dù GPU thực sự chỉ khả dụng bên trong các hàm @spaces.GPU, các mô hình vẫn phải được đặt trên cuda ở cấp độ module gốc (như minh họa trong ví dụ trên).
Việc nạp chậm hoặc di chuyển mô hình sang CUDA bên trong @spaces.GPU không được khuyến khích, vì cách này kém hiệu quả hơn đáng kể (các thao tác chuyển CUDA được tối ưu hóa cho việc đặt thiết bị thực hiện trong quá trình khởi động).
Việc tải mô hình trên
cudaở cấp module hoạt động được vì chế độ mô phỏng CUDA của PyTorch được bật bên ngoài các hàm@spaces.GPU, cho phép thực hiện các thao tác CUDA mà không cần GPU thực. Bên trong@spaces.GPU, CUDA thực được sử dụng.
Chọn kích thước GPU
Kích thước mặc định được sử dụng bởi @spaces.GPU là large (một nửa NVIDIA RTX Pro 6000 Blackwell).
Bạn có thể yêu cầu rõ ràng một NVIDIA RTX Pro 6000 Blackwell đầy đủ bằng cách chỉ định size="xlarge":
@spaces.GPU(size="xlarge")
def generate(prompt):
return pipe(prompt).images
xlargetiêu thụ 2× hạn mức hàng ngày so vớilarge(ví dụ: thời lượng tác vụ hiệu dụng là 45s sẽ tiêu thụ 90s hạn mức)xlargethường có nghĩa là xác suất xếp hàng cao hơn và thời gian chờ dài hơn- Chỉ sử dụng
xlargekhi khối lượng công việc của bạn thực sự được hưởng lợi từ thêm tài nguyên tính toán hoặc bộ nhớ
Quản lý thời lượng
Đối với các hàm được dự kiến sẽ vượt quá thời gian chạy GPU mặc định là 60 giây, bạn có thể chỉ định một thời lượng tùy chỉnh:
@spaces.GPU(duration=120)
def generate(prompt):
return pipe(prompt).imagesĐiều này đặt thời gian chạy tối đa của hàm là 120 giây. Việc chỉ định thời lượng ngắn hơn cho các hàm chạy nhanh sẽ cải thiện độ ưu tiên hàng đợi cho khách truy cập Space.
Thời lượng động
@spaces.GPU cũng hỗ trợ thời lượng động.
Thay vì truyền trực tiếp một khoảng thời gian, hãy chỉ cần truyền một hàm có thể gọi nhận các đầu vào giống với hàm được trang trí của bạn và trả về một giá trị khoảng thời gian:
def get_duration(prompt, steps):
step_duration = 3.75
return steps * step_duration
@spaces.GPU(duration=get_duration)
def generate(prompt, steps):
return pipe(prompt, num_inference_steps=steps).imagesBiên dịch
ZeroGPU không hỗ trợ torch.compile, nhưng bạn có thể sử dụng biên dịch trước thời điểm thực thi của PyTorch (yêu cầu torch 2.8+)
Xem bài viết trên blog này để có hướng dẫn đầy đủ về biên dịch trước thời điểm thực thi trên ZeroGPU.
Các cấp độ sử dụng
Việc sử dụng GPU bị giới hạn bởi hạn mức mỗi ngày, theo cấp tài khoản:
| Loại tài khoản | Hạn mức GPU hàng ngày được bao gồm | Ưu tiên hàng đợi |
|---|---|---|
| Chưa xác thực | 2 phút | Thấp |
| Tài khoản miễn phí | 5 phút | Trung bình |
| Tài khoản PRO | 40 phút (có thể mở rộng) | Cao nhất |
| Thành viên tổ chức nhóm | 40 phút (có thể mở rộng) | Cao nhất |
| Thành viên tổ chức doanh nghiệp | 60 phút (có thể mở rộng) | Cao nhất |
Hạn mức hàng ngày được đặt lại đúng 24 giờ sau lần sử dụng GPU đầu tiên của bạn.
Hạn mức còn lại ảnh hưởng trực tiếp đến mức ưu tiên trong hàng đợi ZeroGPU.
Mở rộng hạn mức bằng điểm
Người dùng PRO, Team và Enterprise có thể tiếp tục sử dụng ZeroGPU Spaces vượt quá hạn mức hàng ngày được bao gồm bằng cách tiêu thụ tín dụng trả trước với mức phí 1 đô la cho mỗi 10 phút thời gian GPU. Khi hạn mức hàng ngày của bạn đã hết, mọi mức sử dụng GPU bổ sung sẽ được tính phí tự động vào số dư tín dụng của bạn.
Bạn có thể thêm hạn mức từ cài đặt thanh toán của mình.
Hạn chế về lưu trữ
- Tài khoản cá nhân miễn phí: Tối đa 2 Spaces ZeroGPU, dành cho các tài khoản có tình trạng tốt (email đã xác minh, tài khoản trên 30 ngày).
- Tài khoản cá nhân (người đăng ký PRO): Tối đa 10 Spaces ZeroGPU.
- Tài khoản tổ chức (Team & Enterprise): Tối đa 50 ZeroGPU Spaces.
Bằng cách tận dụng ZeroGPU, các nhà phát triển có thể tạo ra các Spaces hiệu quả và có khả năng mở rộng hơn, tối đa hóa việc sử dụng GPU trong khi giảm thiểu chi phí.
Khuyến nghị
Nếu demo của bạn sử dụng một mô hình lớn, chúng tôi khuyến nghị sử dụng các tối ưu hóa như biên dịch trước (ahead-of-time compilation) và flash-attention 3. Bạn có thể tìm hiểu cách tận dụng những tính năng này với ZeroGPU trong bài viết này. Các tối ưu hóa này sẽ giúp bạn khai thác tối đa lợi thế của các giờ ZeroGPU và mang lại trải nghiệm người dùng tốt hơn.
Phản hồi
Bạn có thể chia sẻ phản hồi về Spaces ZeroGPU trực tiếp trên HF Hub: https://huggingface.co/spaces/zero-gpu-explorers/README/discussions
Update on GitHub