Hub documentation
Tổng quan về Spaces
Tổng quan về Spaces
Hugging Face Spaces giúp bạn dễ dàng tạo và triển khai các demo ứng dụng ML chỉ trong vài phút. Xem video sau đây để có cái nhìn tổng quan nhanh về Spaces:
Trong các phần tiếp theo, bạn sẽ học các kiến thức cơ bản về việc tạo một Space, cấu hình nó và triển khai mã của bạn lên đó.
Tạo một Space mới
Để tạo một Space mới, hãy truy cập trang chính của Spaces và nhấp vào Tạo Space mới. Cùng với việc chọn tên cho Space của bạn, chọn giấy phép tùy chọn và thiết lập tính khả dụng của Space (công khai, được bảo vệ hoặc riêng tư), bạn sẽ được yêu cầu chọn SDK cho Space của mình. Hub cung cấp ba tùy chọn SDK: Gradio, Docker và HTML tĩnh. Nếu bạn chọn “Gradio” làm SDK, bạn sẽ được chuyển đến một repo mới hiển thị trang sau:
Static Spaces miễn phí cho tất cả mọi người. Gradio và Docker Spaces chạy trên compute và yêu cầu gói trả phí để tạo: PRO cho tài khoản cá nhân, Team hoặc Enterprise cho tổ chức. Các tài khoản cá nhân miễn phí có tình trạng tốt vẫn có thể lưu trữ tối đa 2 Gradio Spaces chạy trên ZeroGPU.

Bên trong, Spaces lưu trữ mã nguồn của bạn trong một kho git, giống như các kho mô hình và bộ dữ liệu. Nhờ đó, các công cụ mà chúng tôi sử dụng cho tất cả các kho khác trên Hub (git và git-xet) cũng hoạt động với Spaces. Hãy làm theo cùng một quy trình như trong Bắt đầu với Kho để thêm tệp vào Space của bạn. Mỗi khi một commit mới được đẩy lên, Space sẽ tự động xây dựng lại và khởi động lại.
Để xem các hướng dẫn từng bước để tạo Space đầu tiên của bạn, hãy xem các hướng dẫn bên dưới:
Hiển thị không gian
Bạn có thể đặt mức độ hiển thị của một Space từ tab Cài đặt bằng cách sử dụng menu thả xuống hiển thị. Spaces hỗ trợ ba mức độ hiển thị: public, protected và private.
Tính năng hiển thị được bảo vệ là một phần của gói PRO hoặc Team & Enterprise.
| Công khai | Được bảo vệ | Riêng tư | |
|---|---|---|---|
| Mã nguồn trên Hub | Có thể nhìn thấy bởi tất cả mọi người | Riêng tư (chỉ chủ sở hữu/người cộng tác) | Riêng tư (chỉ chủ sở hữu/người cộng tác) |
| Ứng dụng có thể truy cập qua URL nhúng | Có | Có | Không |
| Ứng dụng có thể truy cập qua miền tùy chỉnh | Có | Có | Không |
| Có thể được nhân bản bởi người khác | Có | Không | Không |
Công khai Spaces hoàn toàn mở: bất kỳ ai cũng có thể xem mã nguồn, truy cập ứng dụng đang chạy và nhân bản kho lưu trữ.
Protected Spaces giữ mã nguồn riêng tư trên Hub — chỉ chủ sở hữu và cộng tác viên mới có thể xem hoặc clone kho lưu trữ. Tuy nhiên, ứng dụng đang chạy vẫn có thể được truy cập công khai thông qua URL nhúng (https://<space-subdomain>.hf.space) hoặc thông qua domain tùy chỉnh khi được cấu hình. Điều này đặc biệt hữu ích để lưu trữ các trang web hoặc ứng dụng mà không cần công bố mã nguồn.
Private Spaces hoàn toàn riêng tư: mã nguồn và ứng dụng đang chạy chỉ có thể được truy cập bởi chủ sở hữu và các cộng tác viên. Space sẽ không xuất hiện trong kết quả tìm kiếm và các người dùng khác sẽ nhận được lỗi 404 khi truy cập URL của nó.
Tài nguyên phần cứng
Mỗi môi trường Spaces mặc định bị giới hạn ở 16GB RAM, 2 lõi CPU và 50GB dung lượng đĩa (không lưu trữ vĩnh viễn). Phần cứng CPU Basic mặc định không có chi phí theo giờ, nhưng việc tạo một Space chạy trên compute (Gradio hoặc Docker) yêu cầu gói trả phí, trong khi Static Spaces miễn phí cho tất cả mọi người. Bạn có thể nâng cấp lên phần cứng tốt hơn, bao gồm nhiều loại bộ tăng tốc GPU, với giá cạnh tranh. Để yêu cầu nâng cấp, hãy nhấp vào nút Settings trong Space của bạn và chọn môi trường phần cứng mong muốn.
| Cấu hình phần cứng | CPU | Bộ nhớ | Bộ nhớ GPU | Giá theo giờ |
|---|---|---|---|---|
| CPU cơ bản | 2 vCPU | 16 GB | MIỄN PHÍ | |
| Nâng cấp CPU | 8 vCPU | 32 GB | $0.03 | |
| Nvidia T4 - nhỏ | 4 vCPU | 15 GB | 16 GB | $0.40 |
| Nvidia T4 - trung bình | 8 vCPU | 30 GB | 16 GB | $0.60 |
| 1x Nvidia L4 | 8 vCPU | 30 GB | 24 GB | $0.80 |
| 4x Nvidia L4 | 48 vCPU | 186 GB | 96 GB | $3.80 |
| 1x Nvidia L40S | 8 vCPU | 62 GB | 48 GB | $1.80 |
| 4x Nvidia L40S | 48 vCPU | 382 GB | 192 GB | $8.30 |
| 8x Nvidia L40S | 192 vCPU | 1534 GB | 384 GB | $23.50 |
| 1x Nvidia RTX PRO 6000 | 23 vCPU | 256 GB | 96 GB | $2.75 |
| 2x Nvidia RTX PRO 6000 | 46 vCPU | 512 GB | 192 GB | $5.50 |
| 4x Nvidia RTX PRO 6000 | 92 vCPU | 1024 GB | 384 GB | $11.00 |
| 8x Nvidia RTX PRO 6000 | 184 vCPU | 2048 GB | 768 GB | $22.00 |
| Nvidia A10G - nhỏ | 4 vCPU | 15 GB | 24 GB | $1.00 |
| Nvidia A10G - lớn | 12 vCPU | 46 GB | 24 GB | $1.50 |
| 2x Nvidia A10G - lớn | 24 vCPU | 92 GB | 48 GB | $3.00 |
| 4x Nvidia A10G - lớn | 48 vCPU | 184 GB | 96 GB | $5.00 |
| Nvidia A100 - lớn | 12 vCPU | 142 GB | 80 GB | $2.50 |
| 4x Nvidia A100 | 48 vCPU | 568 GB | 320 GB | $10.00 |
| 8x Nvidia A100 | 96 vCPU | 1136 GB | 640 GB | $20.00 |
Lưu ý: Tìm hiểu thêm thông tin về giá cả chi tiết và đầy đủ hơn trên trang giá của chúng tôi.
Bạn có một Space tuyệt vời nhưng cần hỗ trợ chi phí nâng cấp phần cứng? Chúng tôi rất sẵn lòng giúp đỡ những người có Space mang tính đổi mới, vì vậy hãy thoải mái nộp đơn xin tài trợ GPU từ cộng đồng bằng cách sử dụng liên kết trong tab Cài đặt của Space và xem liệu Space của bạn có được chọn hay không!
Đọc thêm trong các phần chuyên biệt của chúng tôi về Spaces GPU Upgrades và Spaces Disk Usage & Storage.

Quản lý thông tin bí mật và biến môi trường
Nếu ứng dụng của bạn yêu cầu các biến môi trường (ví dụ: khóa bí mật hoặc token), đừng hard-code chúng bên trong ứng dụng! Thay vào đó, hãy chuyển đến trang Settings của kho Space và thêm một variable hoặc secret mới. Sử dụng variables nếu bạn cần lưu trữ các giá trị cấu hình không nhạy cảm và secrets để lưu trữ access tokens, API keys, hoặc bất kỳ giá trị hoặc thông tin xác thực nhạy cảm nào.

Bạn có thể sử dụng:
- Biến nếu bạn cần lưu trữ các giá trị cấu hình không nhạy cảm. Chúng có thể được truy cập và xem công khai, và sẽ được thêm tự động vào các Spaces được nhân bản từ Spaces của bạn.
- Secrets để lưu trữ access token, API key hoặc bất kỳ giá trị hoặc thông tin xác thực nhạy cảm nào. Chúng là riêng tư và giá trị của chúng không thể được đọc từ trang cài đặt của Space sau khi được thiết lập. Chúng sẽ không được thêm vào các Space được nhân bản từ kho của bạn.
Việc truy cập secrets và variables khác nhau tùy thuộc vào Space SDK của bạn:
- Đối với Static Spaces, cả hai đều có sẵn thông qua JavaScript phía client trong
window.huggingface.variables - Đối với Docker Spaces, hãy xem quản lý môi trường với Docker
Đối với các Spaces khác, cả hai đều được phơi bày cho ứng dụng của bạn dưới dạng các biến môi trường. Dưới đây là một ví dụ rất đơn giản về việc truy cập biến MODEL_REPO_ID đã khai báo trước đó trong Python (tương tự cho secrets):
import os
print(os.getenv('MODEL_REPO_ID'))Chủ sở hữu Spaces sẽ được cảnh báo khi Spaces Secrets Scanner của chúng tôi phát hiện các bí mật được mã hóa cứng.
Nhân bản một Space
Việc nhân bản một Space có thể hữu ích nếu bạn muốn xây dựng một demo mới bằng cách sử dụng một demo khác làm mẫu ban đầu. Các Space được nhân bản cũng có thể hữu ích nếu bạn muốn có một Space Nâng cấp riêng cho mục đích sử dụng của mình với suy luận nhanh.
Nếu bạn muốn sao chép một Space, hãy nhấp vào ba dấu chấm ở góc trên bên phải của space và nhấp vào Duplicate this Space. Sau khi thực hiện, bạn có thể thay đổi các thuộc tính sau:
- Người sở hữu: Space bị nhân bản có thể nằm dưới tài khoản của bạn hoặc bất kỳ tổ chức nào mà bạn có quyền ghi
- Tên Space
- Hiển thị: Space mặc định là riêng tư. Đọc thêm về các tùy chọn hiển thị tại đây.
- Phần cứng: Bạn có thể chọn phần cứng mà Space sẽ chạy trên đó. Đọc thêm về nâng cấp phần cứng tại đây.
- Lưu trữ: Nếu kho lưu trữ gốc sử dụng một bucket lưu trữ, bạn sẽ được yêu cầu cấu hình lưu trữ. Đọc thêm về việc sử dụng đĩa và lưu trữ tại đây.
- Secrets và biến: Nếu kho gốc đã thiết lập một số secrets và biến, bạn sẽ có thể thiết lập chúng khi nhân bản kho.
Một số Spaces có thể có các biến môi trường mà bạn cần thiết lập. Trong những trường hợp này, quy trình nhân bản sẽ tự động điền các Variables công khai từ Space nguồn và đưa ra cảnh báo về việc thiết lập Secrets. Space được nhân bản sẽ sử dụng phần cứng CPU Basic theo mặc định, nhưng bạn có thể nâng cấp sau nếu cần. Việc nhân bản tuân theo các quy tắc tương tự như khi tạo một Space mới: nhân bản một Space Gradio hoặc Docker yêu cầu gói trả phí cho tài khoản hoặc tổ chức đích (ngoại trừ cùng ZeroGPU free tier cho tài khoản cá nhân).
Mạng
Nếu Space của bạn cần thực hiện bất kỳ yêu cầu mạng nào, bạn có thể gửi yêu cầu qua các cổng HTTP và HTTPS chuẩn (80 và 443) cùng với cổng 8080. Mọi yêu cầu gửi đến các cổng khác sẽ bị chặn.
Quản lý vòng đời
Trên phần cứng miễn phí, Space của bạn sẽ “ngủ” và ngừng thực thi sau một khoảng thời gian nếu không được sử dụng. Nếu bạn muốn Space chạy liên tục, hãy cân nhắc nâng cấp lên phần cứng trả phí. Bạn cũng có thể tạm dừng Space thủ công từ tab Cài đặt. Space ở trạng thái tạm dừng sẽ ngừng thực thi cho đến khi người có quyền ghi khởi động lại. Thời gian tạm dừng không bị tính phí.
Biến môi trường tích hợp sẵn
Trong một số trường hợp, bạn có thể muốn truy cập theo cách lập trình vào tên tác giả hoặc tên kho của Space. Tính năng này đặc biệt hữu ích khi bạn dự kiến người dùng sẽ sao chép Space của bạn. Để hỗ trợ điều này, Spaces cung cấp các biến môi trường khác nhau tại thời điểm chạy (xem thêm các biến môi trường tích hợp sẵn trong Jobs). Với một Space osanseviero/i-like-flan:
ACCELERATOR: Loại bộ tăng tốc khả dụng (ví dụ:t4-medium,a10g-small), hoặcnonecho các Spaces chỉ dùng CPU.CPU_CORES: 4MEMORY: 15GiSPACE_AUTHOR_NAME: osansevieroSPACE_REPO_NAME: i-like-flanSPACE_TITLE: I Like Flan (được chỉ định trong tệp README)SPACE_ID:osanseviero/i-like-flanSPACE_HOST:osanseviero-i-like-flan.hf.spaceSPACE_CREATOR_USER_ID:6032802e1f993496bc14d9e3- Đây là ID của người dùng đã tạo Space ban đầu. Thông tin này hữu ích nếu Space thuộc về một tổ chức. Bạn có thể lấy thông tin người dùng bằng cách gọi API tạihttps://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview.SPACE_SIGNING_SECRET: một bí mật ngẫu nhiên duy nhất cho Space của bạn, được phơi bày dưới dạng secret. Giá trị này giữ nguyên qua các lần khởi động lại, xây dựng lại và các bản sao (replicas), nên bạn có thể dùng nó để ký cho các thứ như cookie, trạng thái OAuth hoặc token CSRF. Để sử dụng giá trị của riêng bạn, hãy thêm một secret có tênSPACE_SIGNING_SECRETtrong cài đặt Space của bạn.
Trong trường hợp OAuth được bật cho Space của bạn, các biến sau cũng sẽ khả dụng:
OAUTH_CLIENT_ID: ID của ứng dụng OAuth của bạn (công khai)OAUTH_CLIENT_SECRET: bí mật client của ứng dụng OAuth của bạnOAUTH_SCOPES: các scope mà ứng dụng OAuth của bạn có thể truy cập. Hiện tại, giá trị này luôn là"openid profile".OPENID_PROVIDER_URL: URL của nhà cung cấp OpenID. Metadata OpenID sẽ có sẵn tại{OPENID_PROVIDER_URL}/.well-known/openid-configuration.
Clone kho
Bạn có thể dễ dàng clone kho Space của mình về máy cục bộ. Bắt đầu bằng cách nhấp vào menu thả xuống ở góc trên bên phải của trang Space:

Chọn “Clone repository”, sau đó bạn sẽ có thể làm theo các hướng dẫn để clone kho Space về máy cục bộ của bạn bằng HTTPS hoặc SSH.


Liên kết Mô hình và Bộ dữ liệu trên Hub
Bạn có thể giới thiệu tất cả các model và dataset mà Space của bạn liên kết bằng cách thêm định danh của chúng vào metadata README của Space. Để làm điều này, bạn có thể định nghĩa chúng dưới các khóa models và datasets. Ngoài việc liệt kê các artefact trong tệp README, bạn cũng có thể ghi lại chúng trong bất kỳ tệp .py, .ini hoặc .html nào. Chúng tôi sẽ tự động phân tích chúng!
Dưới đây là một ví dụ liên kết hai mô hình từ một space:
title: My lovely space
emoji: 🤗
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
models:
- reach-vb/musicgen-large-fp16-endpoint
- reach-vb/wav2vec2-large-xls-r-1B-common_voice7-lt-ft