>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Jak pozbyć się zoo kontenerów przy budowaniu agentów AI z SIE

Superlinked logo

Budowanie autonomicznych agentów na lokalnych lub open-source'owych sieciach neuronowych szybko staje się problemem infrastrukturalnym. Jeśli składasz system RAG z wieloma etapami podejmowania decyzji, musisz uruchomić jednocześnie kilka systemów o wąskim przeznaczeniu. Potrzebujesz modelu wektorowego do wyszukiwania, osobnego rerankera, narzędzia do parsowania złożonej grafiki w PDF-ach, klasyfikatora bezpieczeństwa i generatywnego LLM-a.

W rezultacie środowisko deweloperskie szybko zamienia się w składowisko plików docker-compose. Jeden kontener zajmuje pamięć dla vLLM, inny uruchamia Text Embeddings Inference, trzeci uruchamia PyTorch tylko dla paranoicznej ekstrakcji encji przez GLiNER. Utrzymywanie wszystkich tych instancji w ciągłym działaniu to pewny sposób na naliczenie ogromnych rachunków za GPU.

Inżynierowie w Superlinked napotkali ten sam problem i wydali SIE (Superlinked Inference Engine). To serwer inferencyjny, który konsoliduje całe przetwarzanie zadań agentów pod jednym parasolem.

Jak to działa pod maską

SIE stosuje inne podejście. Zamiast uruchamiać pięć niezależnych serwerów inferencyjnych, wdrażasz jeden klaster, który odpowiada na standardowe punkty końcowe OpenAI, takie jak /v1/embeddings lub /v1/chat/completions.

Główną funkcją jest dynamiczne ładowanie modeli na żądanie z algorytmem wyrzucania LRU (Least Recently Used). Gdy agent potrzebuje OCR do parsowania zeskanowanego dokumentu przesłanego przez użytkownika, SIE ładuje model rozpoznawania dokumentów do pamięci GPU. Po zakończeniu etapu parsowania i przejściu systemu do dialogu, rzadko używany model zwalnia pamięć dla sieci generatywnej.

Katalog zawiera ponad sto wstępnie skonfigurowanych setupów out of the box. Popularne opcje to BGE-M3, ColBERTv2, SPLADE-v3, GLiNER, Docling, Qwen3 oraz modele ochrony przed wstrzykiwaniem promptów, jak Granite Guardian.

Szybki start na lokalnej maszynie

Do pierwszego spojrzenia wystarczy standardowy pakiet Python. Możesz uruchomić instancję testową na CPU lub Apple Silicon w dwóch poleceniach:

pip install "sie-server[local]"
sie-server serve

Jeśli planujesz uruchamiać ciężkie obciążenia na kartach NVIDIA GPU, od razu wybierz Docker. Deweloperzy celowo rozdzielili usługi na izolowane kontenery z powodu konfliktujących zależności systemowych. Modele OCR wymagają najnowszej biblioteki transformers, więc są dostarczane jako osobny tag.

Do wyszukiwania wektorowego uruchomienie kontenera bazowego wygląda tak:

docker run --gpus all -p 8080:8080 \
  -v sie-hf-cache:/app/.cache/huggingface \
  ghcr.io/superlinked/sie-server:latest-cuda12-default

Możesz zweryfikować działanie standardowym wywołaniem curl:

curl http://localhost:8080/v1/embeddings \
  -H 'Content-Type: application/json' \
  -d '{"model": "sentence-transformers/all-MiniLM-L6-v2", "input": "Привет, мир"}'

Przy pierwszym żądaniu serwer automatycznie pobiera wagi z Hugging Face i zapisuje je w lokalnej pamięci podręcznej, więc kolejne zapytania działają bez opóźnień związanych z pobieraniem.

Programowanie z Python SDK

Do pracy z serwerem autorzy napisali biblioteki dla Pythona i TypeScripta. SDK obsługuje wywoływanie konkretnych zadań, takich jak klasyfikacja czy ekstrakcja nazwanych encji.

Oto przykład wektoryzacji tekstu, rerankingu wyników i ekstrakcji encji w jednym kliencie:

from sie_sdk import SIEClient
from sie_sdk.types import Item

client = SIEClient("http://localhost:8080")

# Получаем эмбеддинг
embedding = client.encode("sentence-transformers/all-MiniLM-L6-v2", Item(text="Привет мир"))

# Считаем релевантность документов
scores = client.score(
    "cross-encoder/ms-marco-MiniLM-L-6-v2",
    Item(text="Что такое машинное обучение?"),
    [Item(text="ML обучается на данных."), Item(text="Сегодня солнечная погода.")],
)

# Извлекаем сущности через GLiNER
entities = client.extract(
    "urchade/gliner_multi-v2.1",
    Item(text="Тим Кук руководит компанией Apple в Купертино."),
    labels=["person", "organization", "location"],
)

Składnia jest prosta. Nie musisz pisać własnych wrapperów dla punktów końcowych HTTP ani dociągać bibliotek stron trzecich dla każdego mniejszego modelu.

Gotowe do produkcji

Wiele podobnych projektów open-source utyka na etapie wypolerowanego README do użytku lokalnego. W przypadku SIE autorzy od razu wydali narzędzia infrastrukturalne do wdrażania na Kubernetes.

Repozytorium i powiązane projekty w organizacji obejmują:

  • Helm chart sie-cluster do szybkiej instalacji.
  • Gotowe moduły Terraform dla AWS (EKS), Google Cloud (GKE) i Azure (AKS).
  • Konfiguracje KEDA do autoskalowania podów do zera.
  • Dashboardy load balancera i Grafany do zbierania metryk.

Możliwość skalowania podów do zera przydaje się w przypadku wewnętrznych usług korporacyjnych. Jeśli pracownicy nie korzystają z agenta w nocy, chmurowe GPU po prostu nie będą bezczynne.

Zastrzeżenia

Koncepcja jednego serwera inferencyjnego dla wszystkich zadań brzmi świetnie, ale nie ma idealnych rozwiązań.

Główną pułapką jest latencja zimnego startu. Gdy model zostanie wyrzucony z pamięci GPU z powodu wyrzucania LRU, następne żądanie musi czekać na przeładowanie wag z dysku. Na stosunkowo wolnej pamięci masowej dodaje to kilka sekund opóźnienia do odpowiedzi agenta.

Druga kwestia dotyczy separacji obrazów Docker. Jeśli Twój pipeline jednocześnie potrzebuje OCR opartego na LightOnOCR i szybkiej inferencji LLM na SGLang, nadal będziesz musiał uruchomić dwa różne kontenery SIE, ponieważ ich środowiska się różnią.

Czy warto wypróbować?

SIE to świetny kandydat dla zespołów budujących pipeline'y na własnym sprzęcie lub w prywatnej chmurze. Jeśli masz dość dźwigania infrastruktury sklejonej z pięciu różnych kontenerów tylko dla jednego systemu RAG, ten projekt zaoszczędzi mnóstwo czasu.

Jeśli Twoja architektura jest prosta i składa się tylko z jednego konwersacyjnego modelu bez złożonego przetwarzania dokumentów i etapów rerankingu, nie ma sensu przechodzić na SIE. Zwykły vLLM lub Ollama w zupełności wystarczy w takim scenariuszu.

Powiązane projekty