Hub documentation
Spaces Dev Mode: Phát triển liền mạch trong Spaces
Spaces Dev Mode: Phát triển liền mạch trong Spaces
Chế độ Dev của Spaces là một phần của gói PRO hoặc Team & Enterprise.
Chế độ Dev của Spaces
Spaces Dev Mode là tính năng giúp việc gỡ lỗi ứng dụng của bạn trở nên dễ dàng hơn và rút ngắn thời gian lặp lại trên Spaces.
Mỗi khi bạn commit các thay đổi vào repo Space của mình, hình ảnh Docker bên dưới sẽ được build lại, sau đó một máy ảo mới sẽ được cấp phát để chạy container mới.
Chế độ Dev cho phép bạn cập nhật Space của mình nhanh hơn bằng cách ghi đè lên hình ảnh Docker.
Ảnh Docker Dev Mode khởi chạy ứng dụng của bạn dưới dạng tiến trình con, cho phép bạn khởi động lại nó mà không cần dừng container Space. Nó cũng khởi chạy một máy chủ SSH (cho trình soạn thảo và terminal cục bộ) và một máy chủ VS Code (cho VS Code Web trong sản phẩm) ở chế độ nền, để bạn có thể kết nối với Space.
Khả năng kết nối với Space đang chạy mở ra một số trường hợp sử dụng:
- Bạn có thể thực hiện các thay đổi đối với mã ứng dụng mà không cần Space xây dựng lại mỗi lần
- Bạn có thể gỡ lỗi một ứng dụng đang chạy và theo dõi tài nguyên theo thời gian thực
Nhìn chung, điều này giúp việc phát triển và thử nghiệm với Spaces nhanh hơn đáng kể bằng cách bỏ qua giai đoạn xây dựng lại hình ảnh Docker.
Giao diện
Khi Dev Mode được bật trên Space của bạn, bạn sẽ thấy một hộp thoại như sau.

Ứng dụng không tự động khởi động lại khi bạn thay đổi mã. Để các thay đổi của bạn hiển thị trong Space, bạn cần sử dụng nút Refresh để khởi động lại ứng dụng.
Kết nối
Dev Mode hiển thị Space đang chạy dưới dạng một host SSH tiêu chuẩn. VS Code và bất kỳ trình chỉnh sửa nào khác đều kết nối thông qua cùng một điểm cuối SSH đó.
SSH
Khi Dev Mode đang chạy, hãy kết nối bằng cách:
ssh <space-subdomain>@ssh.hf.space
Tên miền con được hiển thị trong hộp thoại điều khiển Chế độ Dev. Bạn cũng có thể lấy nó theo cách lập trình:
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)Hugging Face CLI có thể phân giải tên miền con và mở phiên cho bạn:
# SSH into the Space's Dev Mode container
hf spaces ssh username/my-space
# Print the SSH command instead of running it
hf spaces ssh username/my-space --dry-run
# Use a specific identity file
hf spaces ssh username/my-space -i ~/.ssh/id_ed25519Truyền --auto để bật Dev Mode mà không cần hỏi nếu nó chưa chạy. Xem hf spaces ssh CLI reference để biết danh sách đầy đủ các tùy chọn.
Bạn cần thêm khóa SSH công khai của máy vào tài khoản người dùng để có thể kết nối với Space bằng SSH. Xem tài liệu Git over SSH để có hướng dẫn chi tiết hơn.
VS Code
Bạn cũng có thể sử dụng bản cài đặt VS Code cục bộ để kết nối với container của Space. Để làm điều này, hãy cài đặt tiện ích mở rộng Remote - SSH và kết nối đến cùng một host <space-subdomain>@ssh.hf.space.
Lưu trữ các thay đổi
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"
# Push the commit to persist them in the repo
git pushCửa sổ bật lên sẽ hiển thị cảnh báo nếu bạn có các thay đổi chưa được cam kết hoặc chưa được đẩy lên trong Space:

Bật Chế độ Dev
Bạn có thể bật Dev Mode cho Space của mình từ giao diện web hoặc qua API.
Thông qua API
Bạn có thể bật/tắt Dev Mode bằng cách lập trình:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}Thông qua giao diện web



Bạn cũng có thể tạo một Space với chế độ dev được bật:

Hạn chế
Dev Mode hiện không khả dụng cho các Spaces tĩnh. Các Spaces Docker cũng có một số yêu cầu bổ sung.
Docker Spaces
Dev Mode được hỗ trợ cho Docker Spaces. Tuy nhiên, Space của bạn cần tuân thủ các quy tắc sau để Dev Mode hoạt động đúng cách.
- Các gói sau đây phải được cài đặt:
bash(cần thiết để thiết lập kết nối SSH)curl,wgetvàprocps(bắt buộc cho tiến trình máy chủ VS Code)gitvàgit-lfsđể có thể commit và push các thay đổi từ môi trường Dev Mode của bạn
Mã ứng dụng của bạn phải được đặt trong thư mục
/appđể tiến trình nền Dev Mode có thể phát hiện các thay đổi.Thư mục
/appphải do người dùng có uid1000sở hữu để bạn có thể thực hiện các thay đổi đối với mã.Dockerfile phải chứa chỉ thị
CMDđể khởi động. Xem tài liệu của Docker về chỉ thịCMDđể biết thêm chi tiết.
Dev Mode hoạt động tốt khi image gốc dựa trên debian (ví dụ: ubuntu).
Các bản phân phối Linux kỳ lạ hơn (ví dụ, alpine) không được kiểm thử và Dev Mode không được đảm bảo hoạt động trên chúng.
Ví dụ về Dockerfile tương thích
Đây là một ví dụ về Dockerfile tương thích với Spaces Dev Mode.
Nó cài đặt các gói cần thiết bằng apt-get, cùng với một vài gói khác để tiện cho việc phát triển (cụ thể là: top, vim và nano).
Sau đó, nó khởi động một ứng dụng NodeJS từ /app.
FROM node:19-slim
RUN apt-get update && \
apt-get install -y \
bash \
git git-lfs \
wget curl procps \
htop vim nano && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --link ./ /app
RUN npm i
RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]Có một số ví dụ về Docker Spaces tương thích với Dev Mode trong tổ chức này. Hãy tự do sao chép chúng vào namespace của bạn!
Ứng dụng Python mẫu (máy chủ HTTP FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Ứng dụng JavaScript mẫu (máy chủ HTTP Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
Phản hồi
Bạn có thể chia sẻ phản hồi về Spaces Dev Mode trực tiếp trên HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions
Update on GitHub