Preskočiť na obsah

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.

Ďalšie informácie

Created by: Marek Štekláč