# πŸ—οΈ PixelForge Architektur mit HuggingFace Spaces ## Übersicht PixelForge wird als **Orchestrator** fungieren, der externe AI-Services via REST API orchestriert. Die Heavy-Lifting (GPU-intensive Image Generation) lΓ€uft auf HuggingFace Spaces. ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ PixelForge Frontend (React/Vite) β”‚ β”‚ http://127.0.0.1:5173 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ HTTP Requests ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ PixelForge Backend (FastAPI) β”‚ β”‚ http://127.0.0.1:8008 β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Provider Factory & Job Manager β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”œβ”€ Lokale Provider (CPU): β”‚ β”œβ”€ dummy: Dummy bilder β”‚ β”œβ”€ localai: LocalAI Engine β”‚ └─ diffusion: Stable Diffusion (lokal) β”‚ └─ Remote Provider (API/GPU): β”œβ”€ zimageturbo: Cloud API (Colab/RunPod) [ÜBERGANGSLΓ–SUNG] β”œβ”€ huggingface: HuggingFace Space API [ZUKÜNFTIG] β”‚ β”œβ”€ Heartsync/Adult Space (erwachsene Inhalte) β”‚ β”œβ”€ weitere HF Spaces... β”‚ └─ Authentifizierung via HF API Token β”‚ └─ a1111: AUTOMATIC1111 API (lokal falls vorhanden) ``` --- ## Phase 1: Aktuelle State (ÜbergangslΓΆsung) **Colab + Z-Image Turbo** als schneller Remote-Provider: - βœ… Funktioniert sofort - ⚠️ Session-basiert (max 12 Stunden) - ⚠️ Colab kann jeden Moment beenden - βœ… Kostenlos **Implementation**: `zimageturbo_provider.py` (HTTP API Wrapper) ### Zu tun jetzt: 1. Frontend testen (Modellauswahl wurde gefixt) 2. Colab Notebook hochladen & API URL setzen 3. Z-Image Turbo Provider testen --- ## Phase 2: HuggingFace Space Integration (ZukΓΌnftig) **Adult_repo** bleibt als eigenstΓ€ndige Einheit auf HuggingFace Spaces: ```bash # Adult_repo lΓ€uft auf: https://huggingface.co/spaces/Heartsync/Adult # β†’ Hat eigene GPU/Inference Engine # β†’ VerfΓΌgbar 24/7 (solange Space online) ``` ### Architektur: 1. **Adult_repo auf HF Space** (remote) - Gradio Interface (aber nicht fΓΌr PixelForge relevant) - Inference Endpoint fΓΌr API-Calls - Nutzt Z-Image Turbo Model intern 2. **HuggingFace Space API Provider** (neu in PixelForge) ```python # Backend Provider class HuggingFaceSpaceProvider(IImageProvider): def __init__(self, space_name: str, token: str): self.space_name = "Heartsync/Adult" # oder andere Spaces self.api_token = os.getenv("HF_API_TOKEN") def generate(self, request: ProviderRequest) -> ProviderResult: # POST zu HF Inference API # https://api-inference.huggingface.co/models/{space} ... ``` 3. **PixelForge kennt mehrere Spaces**: - `heartsync/adult` β†’ Erwachsene Inhalte - `heartsync/anime` β†’ Anime-Style - `custom/space` β†’ Beliebige andere Spaces --- ## Vergleich: Colab vs HuggingFace Space | Aspekt | Colab | HF Space | Lokal | |--------|-------|----------|-------| | **Setup** | Jupyter Notebook | Einmal deployen | Python Virtual Env | | **Kosten** | Kostenlos | Kostenlos (mit Limits) | Nur Hardware | | **Persistenz** | 12h max | 24/7 (solange online) | 24/7 | | **GPU** | T4/A100 (kostenlos) | Space-spezifisch | Deine Hardware | | **API-Zugriff** | ΓΌber Ngrok-Tunnel | HF Inference API | localhost:PORT | | **Startzeit** | ~2 min (Kernel) | instant | instant | | **Geeignet fΓΌr** | Schnelle Tests | Production | Development | --- ## Implementierungs-Roadmap ### βœ… Heute (Phase 1) - [x] Frontend Model-Picker repariert - [x] Colab Notebook erstellt - [x] zimageturbo_provider.py βœ“ - [ ] Testen mit Colab ### πŸ“… SpΓ€ter (Phase 2) - [ ] HuggingFaceSpaceProvider erstellen - [ ] HF API Token Authentication - [ ] Adult_repo auf HF Space deployen - [ ] Provider registrieren & testen - [ ] Colab durch HF Space ersetzen ### 🎯 Langfristig (Phase 3) - [ ] Multi-Space Support (verschiedene Spaces wΓ€hlen) - [ ] Space Health Monitoring - [ ] Fallback-Strategie (wenn Space down ist) - [ ] Queue Management fΓΌr lange Jobs --- ## HuggingFace API Details (fΓΌr spΓ€ter) ### Space Deployment (Adult_repo) ```bash # HF CLI installieren pip install huggingface-hub # Private Space erstellen (Adult content) huggingface-cli repo create --type space Adult_repo --private # Adult_repo hochladen git push huggingface main ``` ### PixelForge Provider (HTTP API Call) ```python import requests # HF Inference API Endpoint url = "https://api-inference.huggingface.co/models/Heartsync/Adult" payload = { "inputs": "A beautiful sunset over mountains", } headers = { "Authorization": f"Bearer {HF_API_TOKEN}" } response = requests.post(url, json=payload, headers=headers) image_data = response.content # PIL Image bytes ``` ### Alternative: Space API (wenn Gradio genutzt) ```python # Falls Adult_repo Gradio API exponiert from gradio_client import Client client = Client("https://huggingface.co/spaces/Heartsync/Adult") result = client.predict( prompt="A girl in a school uniform", seed=42, api_name="/predict" ) ``` --- ## Umgebungsvariablen (Phase 2) ```powershell # HuggingFace Integration $env:HF_API_TOKEN = "hf_xxxxxxxxxxxxxxxxxxxxx" $env:HF_SPACE_ADULT = "Heartsync/Adult" $env:HF_SPACE_DEFAULT = "Heartsync/Adult" $env:HF_REQUEST_TIMEOUT = "300" # Sekunden # Colab (Phase 1 - temporΓ€r) $env:ZIMAGETURBO_API_URL = "https://abc123.ngrok.io" $env:ZIMAGETURBO_TIMEOUT = "300" ``` --- ## Adult_repo Struktur (vor Ort) ``` d:/VSC Codes/Bild/Adult_repo/ β”œβ”€β”€ app.py # Gradio Interface (wird auf HF Space laufen) β”œβ”€β”€ requirements.txt # Dependencies β”œβ”€β”€ README.md └── .git # Git Repo ``` **Wichtig**: Adult_repo ist momentan nicht in PixelForge integriert! - Es lΓ€uft spΓ€ter als eigenstΓ€ndiger Service auf HF Space - PixelForge ruft es via HF API auf - Keine lokale AbhΓ€ngigkeit β†’ Clean Architecture ✨ --- ## NΓ€chste Schritte ### Sofort (Phase 1): ```powershell # 1. Frontend aktualisieren (Done βœ“) # 2. Browser aktualisieren (F5) # 3. Modellauswahl testen # 4. Colab konfigurieren & testen ``` ### SpΓ€ter (Phase 2): ```powershell # 1. Adult_repo zu HF Space pushen # 2. HF API Token besorgen # 3. HuggingFaceSpaceProvider schreiben # 4. In Factory registrieren # 5. Testen & Colab deaktivieren ``` --- ## Fragen fΓΌr Phase 2? - Welche anderen Spaces mΓΆchtest du anbinden? - BenΓΆtigst du Content Moderation (Safety Filter)? - Wie sollen lange Jobs (>5min) gehandhabt werden? - Fallback-Strategie wenn Space down ist? --- **Status**: 🟒 Phase 1 bereitet sich vor **Phase 2 Start**: Nach Colab-Test & HF Space Deployment