LLM's Schalen voor Productie: Een Praktische Gids

LLM-integratie via API’s

Het integreren van grote taalmodellen (LLM’s) in een codebase kan op verschillende manieren worden bereikt, maar het gebruik van een OpenAI-compatibele API wordt ten zeerste aanbevolen voor productie-implementaties. Deze aanpak biedt de flexibiliteit om zich aan te passen aan het snel evoluerende modellandschap. Modellen die slechts enkele maanden geleden als baanbrekend werden beschouwd, kunnen snel verouderd raken. De snelle ontwikkelingen in het LLM-domein vereisen een aanpak die aanpasbaar en toekomstbestendig is.

Sinds de AI-boom die begon met ChatGPT in 2022, is de API-interface van OpenAI uitgegroeid tot de de facto standaard voor het verbinden van applicaties met LLM’s. Deze standaard stelt ontwikkelaars in staat om applicaties te bouwen met behulp van beschikbare middelen, zoals beginnen met Mistral 7B in Llama.cpp op een notebook en naadloos overstappen op de API-servers van Mistral AI voor productie-implementatie. Dit elimineert de opsluiting in een enkel model, inference engine of API-provider. Het vermogen om tussen verschillende modellen en infrastructuren te schakelen, is cruciaal voor het behouden van een concurrentievoordeel en het optimaliseren van prestaties en kosten.

Cloud-based inference services bieden een kapitaaluitgave (capex)-vriendelijk middel om AI-implementaties op te schalen. Deze services elimineren de noodzaak voor hardwarebeheer en modelconfiguratie en bieden in plaats daarvan een API voor applicatie-integratie. In plaats van te investeren in dure hardware en het onderhoud ervan, kunnen bedrijven profiteren van de schaalbaarheid en flexibiliteit van cloud-oplossingen. Dit maakt het mogelijk om snel te experimenteren met nieuwe modellen en toepassingen, zonder dat er grote investeringen vooraf nodig zijn.

Naast de API-aanbiedingen van grote modelbouwers, biedt een groeiend aantal AI-infrastructuur startups inference-as-a-service voor open-weight modellen. Deze providers verschillen in hun aanpak. Sommigen, zoals SambaNova, Cerebras en Groq, maken gebruik van gespecialiseerde hardware of technieken zoals speculatieve decoding om inference te versnellen, maar bieden een kleinere selectie van modellen. Anderen, zoals Fireworks AI, ondersteunen de implementatie van custom fine-tuned modellen met behulp van Low Rank Adaptation (LoRA) adapters. De diversiteit van het AI-ecosysteem vereist grondig onderzoek voordat u zich aan een specifieke provider verbindt. Het is belangrijk om de prestaties, kosten, schaalbaarheid en ondersteuning van verschillende providers te vergelijken voordat u een beslissing neemt.

Overwegingen voor On-Premise LLM-implementatie

In situaties waarin cloud-based benaderingen niet haalbaar zijn vanwege privacy-, regelgevings- of reeds bestaande infrastructuurbeperkingen (bijv. een bedrijf heeft al geïnvesteerd in GPU-servers), wordt on-premise implementatie noodzakelijk. Dit kan verschillende uitdagingen opleveren. Enkele veelvoorkomende vragen die opkomen zijn:

  • Modelselectie: Het juiste model hangt af van de specifieke use case. Een model dat is ontworpen voor een klantenservicechatbot heeft andere vereisten dan een model dat wordt gebruikt voor retrieval-augmented generation (RAG) of als een code-assistent. Het wordt aanbevolen om tijd door te brengen met API-providers om een model te identificeren dat aan de behoeften voldoet. De keuze van het model heeft een directe invloed op de prestaties, kosten en nauwkeurigheid van de toepassing. Daarom is het cruciaal om de verschillende modellen grondig te evalueren en te vergelijken voordat u een beslissing neemt.
  • Hardwarevereisten: Het bepalen van de benodigde hardware is cruciaal, aangezien GPU’s duur zijn en moeilijk te verkrijgen kunnen zijn. Het model zelf kan inzicht geven in de hardware die nodig is om het uit te voeren. Grotere modellen vereisen meer hardware. Een ruwe schatting van het minimale GPU-geheugen kan worden berekend door het aantal parameters (in miljarden) te vermenigvuldigen met 2 GB voor modellen die zijn getraind met 16-bits precisie. Voor 8-bits modellen is 1 GB per miljard parameters nodig. Modelcompressietechnieken zoals kwantisatie kunnen dit reduceren tot 512 MB per miljard parameters. Dit is een ondergrens. Er is extra geheugen nodig om het model aan meerdere gebruikers tegelijk te bedienen vanwege de key-value cache, die fungeert als het kortetermijngeheugen van het model. De ondersteuningsmatrix van Nvidia biedt begeleiding bij de GPU’s die nodig zijn om verschillende modellen uit te voeren. Het is belangrijk om te onthouden dat deze schattingen slechts een startpunt zijn en dat de werkelijke hardwarevereisten kunnen variëren, afhankelijk van de specifieke use case en de gewenste prestaties.
  • Redundantie: Naast het afstemmen van hardware op het model, moet redundantie worden overwogen. Een enkele GPU-node is kwetsbaar voor uitval, dus het implementeren van twee of meer systemen voor failover en load balancing is belangrijk. Redundantie zorgt voor een continue beschikbaarheid van de LLM-toepassing, zelfs in het geval van hardwareproblemen. Dit is cruciaal voor bedrijfskritische toepassingen waar downtime onacceptabel is.
  • Implementatiemethoden: LLM’s kunnen worden geïmplementeerd en bediend in productie met behulp van verschillende methoden: bare metal met load balancers, virtuele machines of containers in Docker of Kubernetes. Kubernetes vereenvoudigt grootschalige implementaties door het automatiseren van containercreatie, netwerken en load balancing. De keuze van de implementatiemethode hangt af van de specifieke behoeften en vereisten van de organisatie. Bare metal biedt de beste prestaties, maar vereist meer beheer. Virtuele machines bieden meer flexibiliteit, maar kunnen iets minder prestaties leveren. Containers bieden de beste schaalbaarheid en draagbaarheid, maar vereisen een containerorkestratieplatform zoals Kubernetes.

Kubernetes voor LLM-implementatie

Kubernetes abstraheert veel van de complexiteit die gepaard gaat met grootschalige implementaties door het automatiseren van containercreatie, netwerken en load balancing. Veel bedrijven hebben Kubernetes al geadopteerd en begrijpen het. Nvidia, Hugging Face en anderen geven de voorkeur aan containerized omgevingen met Nvidia Inference Microservices (NIMs) en Hugging Face Generative AI Services (HUGS), die vooraf zijn geconfigureerd voor veelvoorkomende workloads en implementaties. Kubernetes is een krachtig platform voor het beheren van containerized applicaties en biedt een breed scala aan functies en tools om LLM-implementaties te vereenvoudigen en te automatiseren.

Kubernetes biedt functies zoals automatische schaling, zelfherstel, load balancing en rolling updates, waardoor het een ideale keuze is voor het hosten van LLM-applicaties in productie. De containerisatie van LLM-modellen en hun afhankelijkheden maakt het mogelijk om ze consistent te implementeren in verschillende omgevingen, van ontwikkelings- tot productieomgevingen. Het gebruik van Kubernetes maakt het ook mogelijk om LLM-applicaties eenvoudig te schalen om aan de vraag te voldoen, zonder dat er handmatige interventie nodig is.

Nvidia Inference Microservices (NIMs) en Hugging Face Generative AI Services (HUGS) zijn tools die zijn ontworpen om de implementatie van LLM’s in Kubernetes te vereenvoudigen. NIMs bieden geoptimaliseerde containers voor Nvidia GPU’s, terwijl HUGS een reeks tools en services biedt voor het implementeren en beheren van LLM’s. Beide tools zijn ontworpen om het leven van LLM-ontwikkelaars en -operators gemakkelijker te maken.

Het gebruik van Kubernetes, gecombineerd met tools zoals NIMs en HUGS, maakt het mogelijk om LLM-applicaties efficiënt en betrouwbaar te implementeren en te beheren op grote schaal. Dit is cruciaal voor organisaties die LLM’s willen gebruiken om hun bedrijf te transformeren.

Inference Engines

Er zijn verschillende inference engines beschikbaar voor het uitvoeren van modellen, waaronder Ollama en Llama.cpp, die compatibel zijn met een breed scala aan hardware. Voor het schalen van modellen worden vaak libraries zoals vLLM, TensorRT LLM, SGLang en PyTorch gebruikt. Deze gids richt zich op het implementeren van modellen met behulp van vLLM, omdat het een brede selectie populaire modellen ondersteunt en brede ondersteuning en compatibiliteit biedt voor Nvidia, AMD en andere hardware. De keuze van de inference engine heeft een grote invloed op de prestaties, schaalbaarheid en kosten van de LLM-toepassing. Het is daarom belangrijk om de verschillende inference engines grondig te evalueren en te vergelijken voordat u een beslissing neemt.

Ollama en Llama.cpp zijn populaire opties voor het uitvoeren van LLM’s op een enkele machine, maar ze zijn niet ontworpen voor grootschalige implementaties. vLLM, TensorRT LLM, SGLang en PyTorch zijn meer geschikt voor het schalen van LLM’s naar meerdere machines. vLLM is een populaire keuze omdat het een breed scala aan modellen ondersteunt en compatibel is met verschillende hardwareplatforms. TensorRT LLM is een geoptimaliseerde inference engine voor Nvidia GPU’s. SGLang is een taal voor het beschrijven van LLM-applicaties. PyTorch is een populaire deep learning framework dat kan worden gebruikt voor het implementeren van LLM’s.

De keuze van de inference engine hangt af van de specifieke behoeften en vereisten van de organisatie. Factoren die in overweging moeten worden genomen zijn onder meer de grootte en complexiteit van het model, de beschikbare hardware, de gewenste prestaties en de budgetbeperkingen.

De Kubernetes-omgeving voorbereiden

Het instellen van een Kubernetes-omgeving om met GPU’s te werken, vereist extra drivers en afhankelijkheden in vergelijking met een typische Kubernetes-setup. Het installatieproces zal verschillen voor AMD- en Nvidia-hardware. Het correct configureren van de Kubernetes-omgeving voor GPU’s is cruciaal voor het bereiken van optimale prestaties en stabiliteit.

Deze gids gebruikt K3S in een single-node configuratie. De basisstappen zijn vergelijkbaar met multi-node omgevingen, maar afhankelijkheden moeten op elke GPU-worker node worden voldaan en opslagconfiguratie vereist mogelijk aanpassingen. K3S is een lichtgewicht Kubernetes-distributie die ideaal is voor edge computing en resource-constrained omgevingen. Het kan echter ook worden gebruikt voor het implementeren van LLM’s in productieomgevingen.

Het doel is om een solide basis te leggen voor het implementeren van inference-workloads op een productie-vriendelijke manier. De volgende vereisten zijn vereist:

  • Een server of workstation met ten minste één ondersteunde AMD- of Nvidia-GPU-kaart
  • Een verse installatie van Ubuntu 24.04 LTS

Nvidia-afhankelijkheden

Het instellen van een Nvidia-accelerated K3S-omgeving vereist het installeren van CUDA Drivers Fabric Manager en Headless server drivers. Installeer Nvidia’s server utilities voor het debuggen van driver problemen. Het correct installeren van de Nvidia-drivers en hulpprogramma’s is essentieel voor het inschakelen van GPU-acceleratie in de Kubernetes-omgeving. De CUDA Drivers Fabric Manager en Headless server drivers zijn nodig om de GPU’s te laten werken met Kubernetes. De server utilities kunnen worden gebruikt om eventuele driverproblemen te diagnosticeren en op te lossen.

Het is belangrijk om de nieuwste versies van de Nvidia-drivers en hulpprogramma’s te installeren om de beste prestaties en stabiliteit te garanderen. Het is ook belangrijk om de compatibiliteit van de drivers en hulpprogramma’s met de Kubernetes-versie en de gebruikte LLM-modellen te controleren.

Eenmaal geïnstalleerd, is het belangrijk om de drivers te configureren voor gebruik met Kubernetes. Dit omvat het configureren van de Nvidia Container Toolkit, waarmee containers toegang hebben tot de GPU’s. De Nvidia Container Toolkit biedt een set tools en bibliotheken waarmee containers toegang hebben tot de GPU’s zonder dat er speciale privileges nodig zijn.

Door de juiste drivers en hulpprogramma’s te installeren en te configureren, kan een Nvidia-accelerated K3S-omgeving worden ingesteld die is geoptimaliseerd voor het uitvoeren van LLM-workloads.