Hub documentation

Spaces Dev Mode: Pengembangan yang mulus di Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces Dev Mode: Pengembangan yang mulus di Spaces

Spaces Dev Mode merupakan bagian dari paket PRO atau Team & Enterprise.

Spaces Mode Dev

Spaces Dev Mode adalah fitur yang memudahkan proses debugging aplikasi Anda dan mempercepat iterasi pada Spaces.

Setiap kali Anda melakukan commit perubahan ke repo Space Anda, image Docker yang mendasarinya akan dibangun ulang, dan kemudian virtual machine baru akan diproses untuk menampung container baru.

Mode Dev memungkinkan Anda memperbarui Space Anda jauh lebih cepat dengan menimpa image Docker.

Gambar Docker Dev Mode memulai aplikasi Anda sebagai sub-proses, sehingga Anda dapat memulai ulang aplikasi tersebut tanpa menghentikan kontainer Space itu sendiri. Gambar ini juga memulai server SSH (untuk editor dan terminal lokal) serta server VS Code (untuk VS Code Web di dalam produk) di latar belakang, sehingga Anda dapat terhubung ke Space.

Kemampuan untuk terhubung ke Space yang sedang berjalan membuka beberapa kasus penggunaan:

  • Anda dapat membuat perubahan pada kode aplikasi tanpa Space harus dibangun ulang setiap kali
  • Anda dapat men-debug aplikasi yang sedang berjalan dan memantau sumber daya secara langsung

Secara keseluruhan, hal ini membuat pengembangan dan eksperimen dengan Spaces jauh lebih cepat dengan melewati fase rebuild image Docker.

Antarmuka

Setelah Dev Mode diaktifkan pada Space Anda, Anda seharusnya melihat modal seperti berikut.

screenshot of the dev mode controls interface.

Aplikasi tidak dimulai ulang secara otomatis saat Anda mengubah kode. Agar perubahan Anda muncul di Space, Anda perlu menggunakan tombol Refresh yang akan memulai ulang aplikasi.

Jika Anda menggunakan Gradio SDK, atau jika aplikasi Anda berbasis Python, perhatikan bahwa dependensi tidak diinstal secara otomatis. Anda perlu menjalankan pip install secara manual dari VS Code atau SSH.

Menghubungkan

Dev Mode mengekspos Space yang sedang berjalan sebagai host SSH standar. VS Code dan editor lain terhubung melalui endpoint SSH yang sama.

SSH

Setelah Dev Mode berjalan, hubungkan dengan:

ssh <space-subdomain>@ssh.hf.space

Subdomain ditampilkan di modal kontrol Mode Dev. Anda juga dapat mengambilnya secara programatik:

from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)

CLI Hugging Face dapat menyelesaikan subdomain dan membuka sesi untuk Anda:

# 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_ed25519

Gunakan --auto untuk mengaktifkan Dev Mode tanpa meminta konfirmasi jika belum berjalan. Lihat referensi CLI hf spaces ssh untuk daftar lengkap opsi.

Anda perlu menambahkan kunci SSH publik mesin Anda ke akun pengguna Anda agar dapat terhubung ke Space menggunakan SSH. Lihat dokumentasi Git over SSH untuk instruksi yang lebih rinci.

VS Code

Anda juga dapat menggunakan instalasi lokal VS Code untuk terhubung ke kontainer Space. Untuk melakukannya, instal ekstensi Remote - SSH dan terhubung ke host <space-subdomain>@ssh.hf.space yang sama.

Menyimpan perubahan

Perubahan yang Anda buat saat Dev Mode diaktifkan tidak disimpan secara otomatis ke repo Space. Secara default, perubahan tersebut akan dibuang saat Dev Mode dinonaktifkan atau saat Space masuk ke mode tidur.
If you wish to persist changes made while Dev Mode is enabled, you need to use `git` from inside the Space container (using VS Code or SSH). For example:
# 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 push

Modal akan menampilkan peringatan jika Anda memiliki perubahan yang belum di-commit atau belum di-push di Space:

screenshot of the dev mode controls interface.

Mengaktifkan Mode Dev

Anda dapat mengaktifkan Dev Mode pada Space Anda melalui antarmuka web atau melalui API.

Melalui API

Anda dapat mengaktifkan/menonaktifkan Mode Dev secara programatik:

POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}

{
  "enabled": true
}

Melalui antarmuka web

screenshot of the dev mode toggle from the contextual menu.
screenshot of the dev mode toggle from the Space settings.
screenshot of the dev mode toggle from the Space logs.

Anda juga dapat membuat Space dengan mode dev diaktifkan:

screenshot of the dev mode toggle from the Space creation page.

Keterbatasan

Dev Mode saat ini tidak tersedia untuk Spaces statis. Spaces Docker juga memiliki beberapa persyaratan tambahan.

Docker Spaces

Dev Mode didukung untuk Docker Spaces. Namun, Space Anda harus mematuhi aturan berikut agar Dev Mode berfungsi dengan baik.

  1. Paket-paket berikut harus diinstal:
  • bash (diperlukan untuk membangun koneksi SSH)
  • curl, wget dan procps (diperlukan oleh proses server VS Code)
  • git dan git-lfs untuk dapat melakukan commit dan push perubahan dari lingkungan Dev Mode Anda
  1. Kode aplikasi Anda harus berada di folder /app agar daemon Dev Mode dapat mendeteksi perubahan.

  2. Folder /app harus dimiliki oleh pengguna dengan uid 1000 agar Anda dapat membuat perubahan pada kode.

  3. Dockerfile harus berisi instruksi CMD untuk startup. Lihat dokumentasi Docker tentang instruksi CMD untuk detail lebih lanjut.

Dev Mode berfungsi dengan baik ketika image dasar berbasis debian (misalnya, ubuntu).

Distro Linux yang lebih eksotis (misalnya, alpine) tidak diuji dan Dev Mode tidak dijamin berfungsi di atasnya.

Contoh Dockerfile yang kompatibel

Ini adalah contoh Dockerfile yang kompatibel dengan Spaces Dev Mode.

Ini menginstal paket yang diperlukan dengan apt-get, beserta beberapa paket tambahan untuk kenyamanan pengembang (yaitu: top, vim dan nano). Kemudian, aplikasi NodeJS dimulai dari /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"]

Beberapa contoh Docker Spaces yang kompatibel dengan Dev Mode tersedia di organisasi ini. Silakan duplikat mereka di namespace Anda!

Contoh aplikasi Python (server HTTP FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Contoh aplikasi JavaScript (server HTTP Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

Umpan Balik

Anda dapat membagikan umpan balik Anda tentang Spaces Dev Mode langsung di HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

Update on GitHub