Hub documentation

Spaces Geliştirme Modu: Spaces'te kesintisiz geliştirme

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces Geliştirme Modu: Spaces'te kesintisiz geliştirme

Spaces Dev Mode, PRO veya Team & Enterprise planlarının bir parçasıdır.

Spaces Geliştirme Modu

Spaces Dev Mode, uygulamanızın hata ayıklamasını kolaylaştıran ve Spaces üzerinde iterasyon yapmayı hızlandıran bir özelliktir.

Space deposuna her değişiklik yaptığınızda, altta yatan Docker imajı yeniden oluşturulur ve ardından yeni konteyneri barındırmak için yeni bir sanal makine tahsis edilir.

Dev Mode, Docker görüntüsünü geçersiz kılma yoluyla Space'inizi çok daha hızlı güncellemenizi sağlar.

Dev Mode Docker görüntüsü, uygulamanızı bir alt süreç olarak başlatır; böylece Space konteynerinin kendisini durdurmadan uygulamayı yeniden başlatabilirsiniz. Ayrıca, Space'e bağlanabilmeniz için arka planda bir SSH sunucusunu (yerel editörler ve terminaller için) ve bir VS Code sunucusunu (ürün içi VS Code Web için) başlatır.

Çalışan Space'e bağlanabilme özelliği çeşitli kullanım senaryolarını mümkün kılar:

  • Uygulama kodunda değişiklikler yapabilirsiniz; her seferinde Space'in yeniden derlenmesine gerek kalmaz
  • Çalışan bir uygulamayı hata ayıklayabilir ve kaynakları canlı olarak izleyebilirsiniz

Genel olarak, Docker görüntüsü yeniden derleme aşamasını atlayarak Spaces üzerinde geliştirme ve deney yapma sürecini çok daha hızlı hale getirir.

Arayüz

Space'inizde Dev Mode etkinleştirildiğinde, aşağıdaki gibi bir modal görmelisiniz.

screenshot of the dev mode controls interface.

Uygulama, kodu değiştirdiğinizde otomatik olarak yeniden başlatılmaz. Değişikliklerinizin Space'te görünmesi için, uygulamayı yeniden başlatacak olan Refresh düğmesini kullanmanız gerekir.

Gradio SDK kullanıyorsanız veya uygulamanız Python tabanlıysa, gereksinimlerin otomatik olarak kurulmadığını unutmayın. pip install komutunu VS Code veya SSH üzerinden manuel olarak çalıştırmanız gerekir.

Bağlanıyor

Dev Mode, çalışan Space'i standart bir SSH ana makinesi olarak sunar. VS Code ve diğer tüm editörler, aynı SSH uç noktası üzerinden bağlanır.

SSH

Dev Mode çalışmaya başladığında, şu komutla bağlanın:

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

Alt alan adı, Dev Mode kontrolleri modalında gösterilir. Ayrıca programatik olarak da alabilirsiniz:

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

Hugging Face CLI, alt alan adını çözebilir ve oturumu sizin için açabilir:

# 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

Dev Mode zaten çalışmıyorsa, istek sormadan etkinleştirmek için --auto parametresini geçirin. Tüm seçenekler için hf spaces ssh CLI referansına bakın.

SSH ile Space'e bağlanabilmek için makinenizin SSH anahtarını kullanıcı hesabınıza eklemeniz gerekir. Daha ayrıntılı talimatlar için Git over SSH belgesine göz atın.

VS Code

VS Code'un yerel kurulumunu da Space konteynerine bağlanmak için kullanabilirsiniz. Bunu yapmak için Remote - SSH uzantısını yükleyin ve aynı <space-subdomain>@ssh.hf.space ana bilgisayarına bağlanın.

Değişiklikleri kalıcı hale getirme

Dev Mode etkinleştirildiğinde yaptığınız değişiklikler, Space deposuna otomatik olarak kaydedilmez. Varsayılan olarak, Dev Mode devre dışı bırakıldığında veya Space uyku moduna geçtiğinde bu değişiklikler silinir.
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

Space'te taahhüt edilmemiş veya itilmemiş değişiklikleriniz varsa modal bir uyarı gösterecektir:

screenshot of the dev mode controls interface.

Geliştirici Modunu Etkinleştirme

Dev Mode'ı web arayüzünden veya API üzerinden Space'inizde etkinleştirebilirsiniz.

API üzerinden

Dev Mode'u programatik olarak açabilirsiniz:

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

{
  "enabled": true
}

Web arayüzü üzerinden

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.

Ayrıca dev modu etkinleştirilmiş bir Space oluşturabilirsiniz:

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

Kısıtlamalar

Dev Mode şu anda statik Spaces için mevcut değildir. Docker Spaces'in de bazı ek gereksinimleri vardır.

Docker Spaces

Dev Mode, Docker Spaces için desteklenmektedir. Ancak Dev Mode'un düzgün çalışabilmesi için Space'inizin aşağıdaki kurallara uyması gerekir.

  1. Aşağıdaki paketler kurulmalıdır:
  • bash (SSH bağlantılarını kurmak için gereklidir)
  • curl, wget ve procps (VS Code sunucu süreci tarafından gereklidir)
  • Dev Mode ortamınızdan değişiklikleri commit ve push yapabilmek için git ve git-lfs
  1. Dev Mode daemon'ının değişiklikleri algılayabilmesi için uygulama kodunuzun /app klasöründe bulunması gerekir.

  2. Kodda değişiklik yapabilmek için /app klasörünün uid'si 1000 olan kullanıcıya ait olmalıdır.

  3. Dockerfile, başlatma için bir CMD talimatı içermelidir. CMD talimatı hakkında daha fazla ayrıntı için Docker'ın belgelerine göz atın.

Dev Mode, taban görüntüsü debian tabanlı olduğunda (ör. ubuntu) iyi çalışır.

Daha egzotik linux dağıtımları (ör. alpine) test edilmemiştir ve Dev Mode bunlarda çalışması garanti edilmemektedir.

Uyumlu Dockerfile örnekleri

Bu, Spaces Dev Mode ile uyumlu bir Dockerfile örneğidir.

Gerekli paketleri apt-get ile yükler, geliştirici kolaylığı için birkaç ek paket daha ekler (bunlar: top, vim ve nano). Ardından /app konumundan bir NodeJS uygulaması başlatır.

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"]

Bu organizasyonda Dev Mode ile uyumlu Docker Spaces'in birkaç örneği bulunmaktadır. Onları kendi ad alanınızda çoğaltmaktan çekinmeyin!

Örnek Python uygulaması (FastAPI HTTP sunucusu): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Örnek JavaScript uygulaması (Express.js HTTP sunucusu): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

Geri bildirim

Spaces Dev Mode hakkındaki geri bildirimlerinizi doğrudan HF Hub üzerinden paylaşabilirsiniz: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

Update on GitHub