Pripojenie klientov kompatibilných s OpenAI API¶
vLLM poskytuje HTTP API kompatibilné s OpenAI API. Vďaka tomu môžu rôzne aplikácie, skripty a nástroje používať model spustený na GPU uzle clustra Perun bez potreby osobitnej integrácie pre každého klienta.
Keďže server vLLM počúva na výpočtovom uzle, klienti k nemu musia pristupovať prostredníctvom SSH tunela. Tunel presmeruje lokálny port na klientskom počítači na API port výpočtového uzla.
Parametre pripojenia¶
Na vytvorenie pripojenia sú potrebné tieto údaje:
| Parameter | Opis |
|---|---|
NODE |
Výpočtový uzol, na ktorom beží server vLLM |
SERVER_PORT |
Port používaný serverom vLLM |
LOCAL_PORT |
Lokálny port používaný SSH tunelom |
API_KEY |
API kľúč nastavený pri spustení vLLM |
SERVED_MODEL |
Názov modelu sprístupnený serverom vLLM |
Názov výpočtového uzla a port servera sú uložené v metadátovom súbore, ktorý sa vytvorí pri spustení SLURM úlohy s vLLM.
Klient sa pripája k nasledujúcemu lokálnemu API endpointu:
http://127.0.0.1:LOCAL_PORT/v1
Vytvorenie SSH tunela¶
Najskôr načítajte konfiguráciu a zistite, ktorá SLURM úloha s vLLM práve beží.
Otvorenie SSH tunela
# Načítanie konfigurácie klienta.
source ~/llm/config.env
# Zadanie ID SLURM úlohy, v ktorej beží vLLM.
JOBID=<SLURM_JOB_ID>
JOB_FILE="$HOME/llm/run/${JOBID}.job"
# Overenie, či úloha stále beží.
squeue -h -j "$JOBID" -o "%T"
# Načítanie údajov o pripojení z metadát úlohy.
NODE=$(sed -n 's/^NODE=//p' "$JOB_FILE")
SERVER_PORT=$(sed -n 's/^SERVER_PORT=//p' "$JOB_FILE")
# Výber voľného lokálneho portu.
LOCAL_PORT=9999
# Otvorenie SSH tunela.
ssh -o ExitOnForwardFailure=yes \
-o ServerAliveInterval=60 \
-N -L "127.0.0.1:${LOCAL_PORT}:127.0.0.1:${SERVER_PORT}" \
"$NODE"
Príkaz SSH zostáva aktívny počas celej doby, keď je tunel otvorený. Tento terminál preto nechajte spustený počas celej práce s klientom.
Ak je lokálny port už obsadený, môžete zvoliť iný. Nemusí sa zhodovať s portom servera.
Testovanie pripojenia¶
Pred konfiguráciou aplikácie overte, či je API dostupné.
Kontrola dostupných modelov
# Načítanie API kľúča.
source ~/llm/config.env
# Dotaz na endpoint vLLM so zoznamom modelov cez SSH tunel.
curl -sS http://127.0.0.1:9999/v1/models \
-H "Authorization: Bearer ${API_KEY}"
Úspešná odpoveď obsahuje informácie o modeli poskytovanom serverom vLLM. Ak požiadavka zlyhá, skontrolujte, či SLURM úloha stále beží, SSH tunel je aktívny a API kľúč je správny.
Použitie Python klienta¶
Oficiálny Python SDK knižnice OpenAI dokáže komunikovať s vLLM po zmene základnej URL adresy API a nastavení príslušného API kľúča.
Ak klientská knižnica ešte nie je nainštalovaná, nainštalujte ju:
pip install openai
Nasledujúci príklad možno použiť v Python skripte alebo Jupyter notebooku.
Python klient
import os
from openai import OpenAI
# Konfigurácia klienta kompatibilného s OpenAI API.
client = OpenAI(
base_url="http://127.0.0.1:9999/v1",
api_key=os.environ["API_KEY"],
)
# Odoslanie požiadavky na vytvorenie odpovede v chate.
response = client.chat.completions.create(
model=os.environ["SERVED_MODEL"],
messages=[
{
"role": "user",
"content": "Summarise this log file.",
}
],
)
# Výpis vygenerovanej odpovede.
print(response.choices[0].message.content)
Skontrolujte, či sú premenné prostredia dostupné procesu Python.
Môžete ich načítať z config.env ešte pred spustením Pythonu:
source ~/llm/config.env
python script.py
Použitie iných klientov¶
Rovnaké parametre pripojenia môže použiť každá aplikácia podporujúca OpenAI API. V konfigurácii klienta nastavte:
- Základná URL:
http://127.0.0.1:LOCAL_PORT/v1 - API kľúč: hodnota premennej
API_KEY - Model: hodnota premennej
SERVED_MODEL
Presný spôsob konfigurácie závisí od konkrétnej aplikácie. Niektorí klienti prijímajú tieto hodnoty prostredníctvom premenných prostredia, iné vyžadujú konfiguračný súbor alebo argumenty príkazového riadka.
API podporuje štandardné endpointy kompatibilné s OpenAI API vrátane Chat Completions a Completions. Dostupné funkcie závisia aj od použitého modelu a jeho schopností.
Ukončenie pripojenia¶
Po skončení práce ukončite SSH tunel stlačením Ctrl+C v termináli,
v ktorom beží príkaz SSH.
Server vLLM bude pokračovať v činnosti až do ukončenia alebo zrušenia príslušnej SLURM úlohy. Zatvorenie SSH tunela server nezastaví.
Dôležité upozornenia¶
- SLURM úloha musí zostať aktívna počas celého používania API klientom.
- SSH tunel musí zostať otvorený počas celej relácie klienta.
- Viacerí klienti môžu používať ten istý server vLLM, ak má dostatočnú kapacitu.
- Rôzni klienti môžu pri pripájaní k tomu istému serveru používať odlišné lokálne porty.
- API port vLLM nevystavujte priamo do externých sietí. Používajte SSH tunel a chráňte API kľúč.
- API kľúč overuje požiadavky na chránených API endpointoch, ale nezabezpečuje všetky endpointy sprístupnené serverom vLLM.