Modelservering (model serving)
Også kendt som: inference serving, modelhosting
At holde en trænet model kørende på maskiner, så andre programmer kan sende den spørgsmål via et API og få svar tilbage.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
Arbejdet med at indlæse modelvægte på egnet hardware og gøre modellen tilgængelig gennem et API, der tager imod forespørgsler, kører inferens og returnerer resultater, mens det håndterer mange brugere på én gang, fordeler belastningen og holder tjenesten oppe.
Forklaret enkelt
Som et kraftværk - konstruktionen er færdig; det daglige arbejde er at sikre strøm til hvert hjem, uanset hvor mange der tænder på samme tid.
I praksis
IT-driftsansvarlig på et dansk universitet stiller en åben model til rådighed for 30.000 studerende og ansatte gennem ét internt API; i eksamensugerne vokser køen, så hun sætter to GPU'er mere ind og begrænser længden af hvert svar.
Hvorfor det betyder noget
Det meste af, hvad en AI-tjeneste koster at køre, hvor hurtig den føles, og hvor dens data havner, afgøres her - ikke under træningen.
Teknisk uddybning
En stak til modelservering har genkendelige lag. Nederst ligger en inferensmotor, der ejer GPU'en: den indlæser vægte, håndterer KV-cachen, planlægger forespørgsler og kører optimerede kernels. Udbredte LLM-motorer er vLLM, SGLang, NVIDIA TensorRT-LLM og llama.cpp; generelle servere som NVIDIA Triton Inference Server kan huse mange modeltyper i én proces. Ovenover ligger et API-lag, meget ofte en OpenAI-kompatibel HTTP-grænseflade med server-sent events til streaming, derefter en gateway eller router, der står for autentificering, kvoter, routing mellem modeller og logning, og et orkestreringslag (fx Kubernetes med KServe), der placerer replikaer på GPU-noder og skalerer dem.
Den afgørende teknik for LLM'er er continuous batching, også kaldet planlægning på iterationsniveau, som blev introduceret med Orca-systemet (Yu m.fl., OSDI 2022). Klassisk statisk batching venter på, at en batch bliver fyldt, og holder alle pladser, indtil den længste sekvens er færdig; continuous batching optager og afslutter sekvenser i hvert decode-trin og holder dermed GPU'en beskæftiget, selv om svarlængderne varierer meget. Sammen med sidebaseret styring af KV-cachen, prefix caching, chunked prefill (opdeling af lange prompter, så de ikke blokerer igangværende decode) og speculative decoding hæver det typisk gennemløbet flere gange i forhold til naiv servering. Store installationer adskiller i stigende grad prefill og decode på separate GPU-puljer, fordi den første er compute-bound og den anden memory-bound.
Modeller, der er større end én GPU's hukommelse, deles op. Tensorparallelisme fordeler hvert lags matricer over GPU'er i en node og kræver en hurtig interconnect; pipelineparallelisme placerer på hinanden følgende lag på forskellige enheder; ekspertparallelisme fordeler eksperterne i mixture-of-experts-modeller. Kapaciteten bestemmes af hukommelsen: vægte plus KV-cache til den ønskede samtidighed og kontekstlængde skal kunne ligge der med plads til aktiveringer. Autoskalering er sværere end for tilstandsløse webtjenester, fordi en kold start indebærer at hente ti- eller hundredvis af gigabyte vægte og varme kernels op, så driften holder varme puljer, skalerer på kødybde eller KV-cache-udnyttelse frem for CPU og sætter eksplicitte grænser for kontekst- og svarlængde.
Driftshensynene rækker ud over hastighed. Det er i serveringslaget, at service level objectives håndhæves (percentiler for TTFT og TPOT, fejlrate), at modelversioner rulles ud med canaries og rulles tilbage, og at observability registrerer tokens, latens og omkostning pr. lejer. Det er også en sikkerhedsgrænse: prompter og svar er ofte personoplysninger eller fortrolige data, så logning, opbevaring, dataplacering og isolering af caches mellem lejere skal designes bevidst, og endpointet skal have rate limiting og autentificering som ethvert andet API. Modelservering adskiller sig fra træning ved at være en løbende tilgængelig, latensfølsom produktionstjeneste frem for et batchjob, og for en udbredt model kan den over levetiden koste mere, end træningen gjorde.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
Relationer
Kilder og videre læsning
Officiel dokumentation
- NVIDIA Triton Inference Server documentation · NVIDIA
Opslagsværker
- Kwon et al. (2023), Efficient Memory Management for Large Language Model Serving with PagedAttention
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…