Strona główna / Artykuły

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.

Wydawca: REACTAPP.TOP5 min czytania1118 słów

Źródła: Serving LLMs, Hands-On — Ollama, vLLM & TGI

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.