Eszközök

Mesterséges intelligenciával generált szöveg

NVIDIA bemutatja az AIPerfet: skálázható LLM benchmarkolás multiprocessz klienssel

A főszereplő az NVIDIA által fejlesztett AIPerf, amely a GenAI-Perf utódjaként teljesen újragondolt benchmark eszköz nagy nyelvi modellek (LLM) inferálási teljesítményének mérésére.

NVIDIA bemutatja az AIPerfet: skálázható LLM benchmarkolás multiprocessz klienssel

AIPerf az NVIDIA új, GenAI-Perf utódjaként megírt mérőeszköze, amelyet kifejezetten nagy nyelvi modellek (LLM) szolgáltatásainak valós, terhelés-alapú mérésére terveztek. A cél: egy olyan kliens, amely képes teljesen feltölteni egy valós szervert anélkül, hogy maga a kliens válna a teljesítménykorláttá, és amely rövid konfiguráció után megbízható, reprodukálható eredményeket ad.

Mit hoz újat az AIPerf?

  • Architektúra-váltás: az AIPerf nem a GenAI-Perf által használt Perf Analyzer tetejére épül, hanem újratervezett rendszert kapott, ami lehetővé teszi a jobb skálázhatóságot. A migrációt segítő útmutató ismerteti a legfontosabb különbségeket.

  • Multiprocessz kliens: sok benchmark eszköz egyszeres folyamatban fut, aminek határát a Python GIL vagy a folyamat egyéb korlátai szabják meg. Az AIPerf több munkafolyamatot (worker process) használ a terhelés előállítására, külön rekordfeldolgozó szolgáltatások kezelik az eredményeket, és a kommunikáció ZMQ-n keresztül zajlik. Ez csökkenti annak esélyét, hogy maga a kliens legyen a szűk keresztmetszet.

  • Széles munkaterhelési támogatás: több mint 15 végponttípus támogatott (chat, responses, NIM rangsorolás, képgenerálás stb.), valamint nyilvános adatkészletek és trace-replay formátumok, például ShareGPT, Mooncake, Baseten, WEKA (AgentX). Egy eszköz elég a gyors szintetikus teszttől a rögzített produkciós forgalom újrajátszásáig.

  • Rugalmas terhelési minták: állandó, Poisson és gamma érkezési minták, hangolható burstiness, fokozatos rátanulás a párhuzamosság vagy kérés/s másodperc emelésére, valamint szintetikus eloszlások (például vLLM/SGLang range-ratio). A terhelés alakját teljes mértékben szabályozhatjuk, nem csak a mennyiséget.

Gyakorlati bemutató: szintetikus ISL/OSL-mérés vLLM-en

A bemutatóhoz a Qwen/Qwen3-0.6B modellt használjuk vLLM szerveren keresztül. A modell kifejezetten kis méretű és gyors, így egy GPU-n futtatható és gyorsan iterálható — a cél a mérési munkafolyamat bemutatása, nem a Qwen3-0.6B összehasonlítása.

Startolás (szerver)

A vLLM kép lehúzása és indítása a reasoning parser-rel aktiválva:

docker pull vllm/vllm-openai:latest
docker run --gpus all -p 8000:8000 -e HF_TOKEN vllm/vllm-openai:latest \
  --model Qwen/Qwen3-0.6B \
  --reasoning-parser qwen3 \
  --host 0.0.0.0 --port 8000

AIPerf telepítése

Központi telepítés uv-vel:

uv tool install aiperf

Virtuális környezettel:

uv venv venv
source venv/bin/activate
uv pip install aiperf

Platform-megjegyzés: aarch64 rendszereken a crick csomag forráskódként települ, és C build-toolchain-et igényel (pl. build-essential Debian/Ubuntu-n). Ha telepítés elakad ezen a csomagon, ez lehet az oka.

Első profilfuttatás

Egy egyszerű, statikus benchmark parancs példája:

aiperf profile \
  --model Qwen/Qwen3-0.6B \
  --endpoint-type chat \
  --streaming \
  --url localhost:8000 \
  --synthetic-input-tokens-mean 128 \
  --synthetic-input-tokens-stddev 0 \
  --output-tokens-mean 128 \
  --output-tokens-stddev 0 \
  --extra-inputs min_tokens:128 \
  --extra-inputs ignore_eos:true

Fontos opciók és hatásuk:

  • --synthetic-input-tokens-stddev 0 és --output-tokens-stddev 0: rögzíti az input és output tokenhosszokat pontosan 128-ra, ami reprodukálható, statikus baseline-t ad.
  • --extra-inputs min_tokens:128 és ignore_eos:true: kényszerítik a modellt, hogy ténylegesen 128 tokent generáljon, és ne álljon meg korábban, így az output tokenszám reprodukálható lesz.
  • --streaming: kötelező, ha az első tokenig eltelt időt (TTFT) és az inter-token késleltetést (ITL) mérni akarjuk; különben a szerver csak a teljes választ küldi egyszerre.

Mit látunk a kimeneten

AIPerf futása közben élő dashboard mutatja a metrikák folyamatát és eloszlásait. A futás végén a konzolra egy metrikatábla kerül, és a teljes eredmény CSV/JSON formátumban is mentődik.

Kiemelt mérőszámok (alap négy):

  • TTFT (Time to First Token): a kérés elküldésétől az első token beérkezéséig eltelt idő — elsődleges késleltetési jel interaktív esetekhez.
  • ITL (Inter-Token Latency): a generálás során egymást követő tokenek közti idő — magas ITL a dekódolási fázis problémáira utalhat.
  • Request Latency: a teljes választ adó end-to-end idő, amely a prefill és decode költségeket egyesíti.
  • Output Token Throughput: másodpercenként generált tokenek száma az összes párhuzamos kérés alatt — kapacitástervezéshez fontos jel.

Minden mérőszám százalékos eloszlásban (p25, p50, p75, p90, p95, p99), min/max/átlag/standard deviáció mellett kerül jelentésre. Ez azért fontos, mert az átlagérték jó lehet, miközben a p99 rossz mutathatja a valódi hosszú farok problémákat.

GPU-telemetria

Ha DCGM vagy pynvml elérhető, AIPerf GPU power draw-t, kihasználtságot és memóriahasználatot is gyűjt, így késleltetési kiugrást könnyebb korrelálni memória- vagy erőforrás-nyomással.

Dinamikus forgalom konfigurálása

A statikus mérést követően érdemes dinamikusabb forgatókönyveket is futtatni. Például Poisson-érkezési mintával és véletlenszerű prompthossz-eloszlással:

aiperf profile \
  --model Qwen/Qwen3-0.6B \
  --endpoint-type chat \
  --streaming \
  --url localhost:8000 \
  --request-rate 10 \
  --arrival-pattern poisson \
  --synthetic-input-tokens-mean 512 \
  --synthetic-input-tokens-stddev 128 \
  --output-tokens-mean 128 \
  --output-tokens-stddev 32 \
  --random-seed 42 \
  --request-count 200

Megjegyzések a példaparancshoz:

  • --arrival-pattern poisson és --request-rate 10: átlagosan másodpercenként 10 kérés érkezik, de a Poisson eloszlás miatt lesznek hullámok és pauzák, ami reálisabban modellezi a sorbaállást.
  • input/output token-stddev beállítások: változó prompt- és output-hosszakat hoznak létre, így a szervernek változó prefill költségekkel kell megbirkóznia.
  • --random-seed 42: reprodukálhatóvá teszi a Poisson időzítést és a hossz-drawokat.
  • --streaming továbbra is kötelező a TTFT/ITL méréséhez.

A Poisson-forgalom általában szélesebb eloszlásokat eredményez a metrikákban (például TTFT), mert több kérés versenyez egyidejűleg GPU-erőforrásért, és a prefill/decode fázisok átfedhetnek.

További lehetőségek

Az AIPerf komplexebb forgatókönyvekhez is alkalmas: több csomópontos Kubernetes telepítések, KV cache újrahasználat felmelegítése, production trace replay, prefix-szintézis, egyedi adatkészletek és sweep konfigurációk párhuzamossági szintek mentén. A dokumentáció és a repó tutorialjai a leggyorsabb belépési pontok az eszköz használatához és bővítéséhez.

Elismerések

Az AIPerf fejlesztésében az NVIDIA több külső hozzájárulóval működött együtt. Külön köszönet illeti: Loki Ravi, Dan Ferguson és Sheng Moua (AWS) a folyamatos együttműködésért és validációért; Aaron Batilo (Coreweave) a Weights & Biases exportőrért és további fejlesztésekért; Shounak Ray és Michael Feil (Baseten) a trace replay és gyorsabb trace betöltés támogatásáért; Cristian Lopez (Pinterest) a DAG benchmark-módszertan kapcsán; valamint Ben Hamm termékvezetői iránymutatásáért.

Az AIPerf forrása, dokumentációja és tutorialjai az AIPerf repóban találhatók, ahol a funkciók és hozzájárulások canonical referenciaanyagai is elérhetők.