oLLM: Biblioteka Python umożliwia uruchamianie modeli językowych z kontekstem 100K na GPU 8 GB dzięki SSD
W świecie sztucznej inteligencji, gdzie modele językowe stają się coraz większe i bardziej wymagające, pojawiają się rozwiązania mające na celu demokratyzację dostępu do nich. oLLM, lekka biblioteka Python, to obiecujący krok w tym kierunku. Umożliwia ona uruchamianie rozbudowanych modeli językowych (LLM) z kontekstem sięgającym 100 tysięcy tokenów na pojedynczych, konsumenckich kartach graficznych wyposażonych w zaledwie 8 GB pamięci VRAM. Jak to możliwe?
Sekretem oLLM jest agresywne przenoszenie danych – wag modelu i pamięci podręcznej KV – na szybkie dyski SSD. Dzięki temu VRAM pozostaje na akceptowalnym poziomie 8–10 GB. Projekt omija przy tym kosztowną obliczeniowo kwantyzację, opierając się na formatach FP16/BF16 oraz technice FlashAttention-2. Brzmi obiecująco, ale jakie są realne możliwości i ograniczenia oLLM?
Jak to działa?
oLLM sprytnie przesyła wagi warstw bezpośrednio z dysku SSD do GPU, a pamięć podręczną KV przenosi na SSD. Opcjonalnie, niektóre warstwy mogą być również przetwarzane na CPU. Wykorzystanie FlashAttention-2 z online softmax pozwala uniknąć materializacji pełnej macierzy uwagi, a dzielenie dużych projekcji MLP na mniejsze porcje ogranicza szczytowe zużycie pamięci.
Takie podejście przesuwa wąskie gardło z VRAM na przepustowość i latencję pamięci masowej. Dlatego też projekt oLLM kładzie nacisk na wykorzystanie dysków SSD NVMe oraz technologii KvikIO/cuFile (GPUDirect Storage) dla szybkiego dostępu do danych.
Obsługiwane modele i GPU
oLLM oferuje wsparcie dla modeli takich jak Llama-3 (1B/3B/8B), GPT-OSS-20B i Qwen3-Next-80B. Biblioteka jest kompatybilna z kartami NVIDIA Ampere (RTX 30xx, A-series), Ada (RTX 40xx, L4) i Hopper. Co ciekawe, model Qwen3-Next-80B, zazwyczaj wymagający wielu kart A100/H100, dzięki oLLM może być uruchomiony offline na pojedynczym konsumenckim GPU.
Instalacja i użycie
Biblioteka oLLM jest dostępna na PyPI (pip install ollm) i posiada licencję MIT. Dodatkowo, dla szybkiego dostępu do dysku wymagana jest instalacja kvikio-cu{cuda_version}. Przykład użycia w README pokazuje konfigurację Inference(...).DiskCache(...) i generowanie tekstu za pomocą generate(...) z funkcją callback.
Oczekiwania i kompromisy
- Przepustowość: Autorzy raportują ~0.5 tokena/s dla Qwen3-Next-80B z kontekstem 50K na RTX 3060 Ti. To wystarczające dla analizy wsadowej/offline, ale nie do interaktywnej konwersacji. Latencja SSD jest dominującym czynnikiem.
- Wymagania dotyczące pamięci masowej: Długi kontekst wymaga bardzo dużych pamięci podręcznych KV, które oLLM zapisuje na SSD, aby utrzymać niski poziom VRAM.
- Realia sprzętowe: Uruchomienie Qwen3-Next-80B na konsumenckim sprzęcie jest możliwe dzięki oLLM, ale typowe zastosowania wymagają serwerów z wieloma GPU. oLLM należy traktować jako ścieżkę wykonania dla długich kontekstów i zadań offline, a nie jako zamiennik dla platform produkcyjnych takich jak vLLM/TGI.
Podsumowanie
oLLM to interesujące rozwiązanie, które pozwala na wykorzystanie dużych modeli językowych na słabszym sprzęcie. Kosztem niższej przepustowości, użytkownik zyskuje możliwość pracy z modelami 8B–20B, a nawet MoE-80B, pod warunkiem posiadania szybkiego dysku SSD o pojemności 100–200 GB i akceptacji generowania poniżej 1 tokena na sekundę. To pragmatyczne podejście do analizy dokumentów/logów offline, przeglądów zgodności lub podsumowywania dużych kontekstów.
