PixelForge / ARCHITECTURE_HUGGINGFACE.md
Gregorfun's picture
Initial commit
32c5da4

A newer version of the Gradio SDK is available: 6.12.0

Upgrade

πŸ—οΈ 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:

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

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

  • Frontend Model-Picker repariert
  • Colab Notebook erstellt
  • 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)

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

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)

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

# 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):

# 1. Frontend aktualisieren (Done βœ“)
# 2. Browser aktualisieren (F5)
# 3. Modellauswahl testen
# 4. Colab konfigurieren & testen

SpΓ€ter (Phase 2):

# 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