Potato in einem Hugging Face Space bereitstellen
Eine Potato-Annotationsaufgabe mit potato deploy in einem Hugging-Face-Docker-Space betreiben, mit einem Backup alle fünf Minuten in ein privates Dataset.
potato deploy up --provider huggingface führt eine Annotationsaufgabe in einem Hugging-Face-Docker-Space aus, mit HTTPS unter einer hf.space-Adresse und ohne einen Server, den Sie konfigurieren müssen. Das eignet sich für eine öffentliche Demo einer Aufgabe und für ein Labor, dessen Daten und Modelle bereits auf dem Hugging Face Hub liegen. Der Datenträger eines Space wird bei jedem Neustart gelöscht, deshalb hält Potato die Annotationen in einem privaten Hugging-Face-Dataset, das es zusammen mit dem Space anlegt. Es sichert die Annotationen alle fünf Minuten in das Dataset und stellt sie wieder her, wenn der Space startet. Diese Seite setzt Potato 2.10 oder neuer voraus und eine Konfiguration, die Sie bereits mit potato start ausgeführt haben.
Voraussetzungen und Grenzen eines Space
Potato-Spaces sind Docker-Spaces, und für das Anlegen eines Docker-Space braucht es einen kostenpflichtigen Hugging-Face-Plan: PRO für ein persönliches Konto oder Team bzw. Enterprise für eine Organisation. Ein Konto oder eine Organisation im kostenlosen Tarif von Hugging Face betreibt außerdem höchstens drei Spaces gleichzeitig. Ein vierter bleibt im Zustand PAUSED, und anders als ein schlafender Space wacht ein pausierter nie auf, wenn jemand ihn öffnet.
Für eine Studie, die über Wochen mit benannten Annotatoren läuft, behält eine virtuelle Maschine wie AWS Lightsail, Jetstream2 oder Hetzner ihren Datenträger über Neustarts hinweg, sodass die Daten nicht von einem Backup abhängen. Ein Space passt am besten, wenn die Personen, die Sie erreichen wollen, bereits Hugging-Face-Konten haben, oder wenn die Aufgabe eine Demonstration ist, deren Annotationen Sie verlieren dürfen.
Ein Hugging-Face-Token einrichten
Potato legt den Space und das Dataset mit Ihrem Hugging-Face-Token an. Erstellen Sie in Ihren Hugging-Face-Einstellungen ein Token mit Schreibzugriff, installieren Sie dann das Hugging-Face-Extra und legen Sie das Token in Ihrer Umgebung ab:
pip install 'potato-annotation[huggingface]'
export HF_TOKEN=hf_...
potato deploy providers --verifyproviders --verify gibt das Konto aus, zu dem das Token gehört. Potato übergibt das Token dem Space als Space-Secret, damit das Backup in das Dataset schreiben kann, und committet es nie in das Repository des Space.
Festlegen, wer sich anmelden kann
potato deploy ändert Ihre Anmeldeeinstellungen nicht, und einen öffentlichen Space kann jeder öffnen, der seine Adresse kennt. Wenn sich laut Konfiguration jeder registrieren kann, meldet der Probelauf unten die Warnung D003, „Anyone who finds the URL can register and annotate.“ (Jeder, der die URL findet, kann sich registrieren und annotieren.) Für eine Demo passt offene Registrierung meist. Für benannte Annotatoren tragen Sie diese unter user_config.users mit allow_all_users: false ein (Passwortverwaltung) oder lassen sie sich mit ihren Hugging-Face-Konten anmelden, die Potato als eingebauten Provider unter authentication.providers unterstützt (SSO und OAuth).
Den Plan prüfen und bereitstellen
Ein Probelauf legt nichts an und gibt aus, was das Deployment anlegen würde:
potato deploy up myproject/config.yaml --provider huggingface --dry-runDer Plan legt das private Dataset <account>/<name>-annotations an, dann einen Docker-Space <account>/<name>, setzt den Sitzungsschlüssel, den Admin-Schlüssel und das Token als Space-Secrets und lädt Ihr Projekt mit einem Dockerfile und einer README hoch. Das Dockerfile baut auf dem veröffentlichten Potato-Image für die installierte Version auf, sodass der Space nur Ihre Projektdateien enthält. --owner stellt unter einer Organisation bereit, --private macht den Space selbst privat, und --name ersetzt den Namen, der aus der Aufgabe stammt.
Führen Sie den Befehl ohne --dry-run aus und bestätigen Sie den Plan:
potato deploy up myproject/config.yaml --provider huggingfaceDas Deployment wartet, bis der Space läuft, und gibt dann seine Adresse aus, https://<account>-<name>.hf.space, sowie den Pfad der Datei mit dem Admin-Schlüssel, .potato/secrets.json neben Ihrer Konfiguration. Der Admin-Schlüssel öffnet das Admin-Dashboard unter /admin. Ein Space auf kostenloser Hardware schläft nach 48 Stunden ohne Besuch ein und wacht auf, wenn jemand ihn öffnet, und die Annotationen kommen jedes Mal aus dem Dataset zurück.
Die Studie beenden
potato deploy pull lädt das Backup-Dataset herunter, das alles enthält, was der Space gespeichert hat, statt den Space selbst auszulesen:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamldestroy löscht den Space und lässt das Dataset bestehen, weil sich das Löschen eines Space durch ein erneutes Deployment rückgängig machen lässt, das Löschen der Annotationen aber nicht. Wenn Sie das Dataset nicht mehr brauchen, löschen Sie es über seine Einstellungsseite auf dem Hub.
Ohne Backup bereitstellen
--demo stellt den Space ohne Dataset bereit, für eine Demonstration, deren Annotationen keine Rolle spielen. Der Probelauf warnt dann, dass alles Gesammelte beim nächsten Neustart verloren geht. Ohne Dataset liest pull den laufenden Space über den Admin-Export aus, was nur funktioniert, solange der Space läuft.
Fehlerbehebung
Ein Zahlungsfehler beim Anlegen bedeutet, dass das Konto oder die Organisation keinen kostenpflichtigen Plan hat. Docker-Spaces brauchen PRO für ein persönliches Konto oder Team bzw. Enterprise für eine Organisation.
Der Space steht auf PAUSED, wenn ein Konto im kostenlosen Tarif bereits drei Spaces betreibt. Pausieren Sie einen anderen und starten Sie diesen dann über seine Einstellungsseite neu. Der Neustart eines bestehenden Space braucht keinen kostenpflichtigen Plan.
Nach einem Rebuild fehlen Annotationen, wenn der Space nicht aus dem Dataset wiederherstellen konnte. Das Log des Space zeigt bei einer erfolgreichen Wiederherstellung eine Zeile RESTORED. Fehlt sie, ist das Space-Secret HF_TOKEN meist nicht gesetzt oder hat keinen Schreibzugriff.
BUILD_ERROR wird im Build-Log unter https://huggingface.co/spaces/<account>/<name>?logs=build erklärt.
Weiterführende Informationen
- Potato lokal oder in der Cloud ausführen, für die anderen Cloud-Ziele und die Backup-Flags
- Einen Annotationsserver bereitstellen, für die Wahl eines Hosts
- Referenz zu Hugging Face Spaces