Praktyczne wdrażanie modeli LLM: Ollama, vLLM i TGI
Warstwa obsługi, która przekształca pliki modeli w API LLM: Ollama do pracy lokalnej, vLLM i Hugging Face TGI dla GPU, oraz to, czego brakuje zwykłym transformatorom.
Serwery obsługujące: warstwa pod „po prostu wywołaj model”
Często wywoływałeś modele — zazwyczaj za pośrednictwem Ollamy. Ten przewodnik dotyczy serwera inferencji: ładowa on wagi modelu, zarządza pamięcią GPU, grupuje zadania i przesyła tokeny, dzięki czemu wielu klientów może korzystać z jednej API. Trzy nazwy, które będziesz często słyszeć to: Ollama, vLLM oraz TGI (Text Generation Inference).
Eksperymenty z Ollamą działają dobrze na procesorze laptopa. vLLM i TGI wymagają GPU — jeśli go nie masz, możesz użyć Colab lub Kaggle. Traktuj to jak ćwiczenie praktyczne: uruchamiaj poszczególne elementy i wykonywaj zadania.
Dlaczego zwykłe transformers nie są serwerem
Ładowanie modelu i wywołanie metody .generate() działa przy jednej wolnej prośbie. Przy dużej obciążeniu system zawodzi: brak ciągłego grupowania zapytań, słabe planowanie pamięci oraz niewygodne transmisje dla wielu użytkowników. Silniki serwowania istnieją po to, by przekształcić „plik modelu” w „API”.
Ollama — przede wszystkim lokalne rozwiązanie
Zainstaluj, pobierz, uruchom i skorzystaj z API HTTP:
ollama pull llama3.2
ollama serve # usually already running; serves on http://localhost:11434
from openai import OpenAI # pip install openai
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama") # key is ignored locally
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)
Można go używać do nauki zapytań i tworzenia aplikacji bez kluczy chmurowych. Należy znać jego ograniczenia, gdy potrzebne jest planowanie na skalę całej floty urządzeń.
vLLM — serwowanie na GPU z obsługą grupowania zapytań
W środowisku opartym na GPU:
pip install vllm
vllm serve meta-llama/Llama-3.1-8B-Instruct # OpenAI-compatible server on :8000
Kluczowe są punkty dostępu kompatybilne z OpenAI oraz ciągłe grupowanie zapytań. Należy śledzić zużycie pamięci GPU oraz ustawienia dotyczące maksymalnego kontekstu.
TGI — stack serwowania od Hugging Face
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 --ipc=host \
vllm/vllm-openai:latest \
--model meta-llama/Llama-3.1-8B-Instruct
TGI koncentruje się na serwowaniu modeli Hugging Face w warunkach produkcyjnych, wykorzystując transmisje strumieniowe oraz mechanizmy śledzenia. Porównaj opóźnienia i złożoność operacyjną w porównaniu z vLLM dla swoich modeli.
Model mentalny side-by-side
client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy") # ← base_url changed
resp = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct", # ← model changed
messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)
- Ollama: DX i iteracje lokalne
- vLLM: tokeni/sekundę na kartach NVIDIA przy równoczesnym wykorzystaniu zasobów
- TGI: serwowanie treści skoncentrowane na HF
Pora na Ciebie
docker run --gpus all --shm-size 1g -p 8080:80 \
-v ~/.cache/huggingface:/data \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id meta-llama/Llama-3.1-8B-Instruct
Przesyłaj ten sam prompt do każdego serwera, zapisz czas odpowiedzi oraz liczbę tokenów na sekundę, a następnie określ, który silnik nadaje się do Twojego następnego projektu — demonstracja na laptopie, wewnętrzna karta graficzna czy API wielu użytkowników.
Zrób proces wdrażania prostym: użyj narzędzi do kompozycji, sprawdzaj stan systemu i miej jedno miejsce do rotacji modeli. To właśnie prostota pozwala narzędziom wewnętrznym funkcjonować przy rzeczywistych harmonogramach pracy.
Zrób proces wdrażania prostym: użyj narzędzi do kompozycji, sprawdzaj stan systemu i miej jedno miejsce do rotacji modeli. To właśnie prostota pozwala narzędziom wewnętrznym funkcjonować przy rzeczywistych harmonogramach pracy.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrol health oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrolerów stanu oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrolerów stanu oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.
Zrób proces wdrażania monotonnym: użyj compose up, kontrolerów stanu oraz jednego miejsca do rotacji modeli. To właśnie monotonia pozwala narzędziom wewnętrznym przetrwać kontakt z rzeczywistymi harmonogramami dyżurów.