Modely a platformy AI

Nasazení velkých jazykových modelů na Kubernetes: komplexní průvodce

mm
Přidejte Unite.AI mezi své preferované zdroje na Google
Kubernetes and gpu Large Language Models: A Complete Guide

Velké jazykové modely (LLM) jsou schopny rozumět a generovat lidský text, což je činí nepostradatelnými pro širokou škálu aplikací, jako jsou chatboti, generování obsahu a překlad jazyků.

Nicméně, nasazení LLM může být náročným úkolem kvůli jejich enormní velikosti a výpočetním požadavkům. Kubernetes, open-source kontejnerová orchestrace, poskytuje silné řešení pro nasazení a správu LLM ve velkém měřítku. V tomto technickém blogu prozkoumáme proces nasazení LLM na Kubernetes, pokrývající různé aspekty, jako jsou kontejnerizace, přidělování zdrojů a škálovatelnost.

Pochopení velkých jazykových modelů

Než se ponoříme do procesu nasazení, stručně pochopíme, co jsou velké jazykové modely a proč získávají tolik pozornosti.

Velké jazykové modely (LLM) jsou typem neuronové sítě, které jsou trénovány na obrovských množstvích textových dat. Tyto modely se učí rozumět a generovat lidský jazyk analýzou vzorců a vztahů v trénovacích datech. Některé populární příklady LLM zahrnují GPT (Generative Pre-trained Transformer), BERT (Bidirectional Encoder Representations from Transformers) a XLNet.

LLM dosáhly pozoruhodného výkonu v různých úkolech NLP, jako je generování textu, překlad jazyků a zodpovězení otázek. Nicméně, jejich enormní velikost a výpočetní požadavky představují významné výzvy pro nasazení a inferenci.

Proč Kubernetes pro nasazení LLM?

Kubernetes je open-source kontejnerová orchestrace, která automatizuje nasazení, škálování a správu kontejnerových aplikací. Poskytuje několik výhod pro nasazení LLM, včetně:

  • Škálovatelnost: Kubernetes umožňuje škálovat vaše nasazení LLM horizontálně přidáním nebo odebráním výpočetních zdrojů podle potřeby, zajišťující optimální využití zdrojů a výkon.
  • Správa zdrojů: Kubernetes umožňuje efektivní přidělování zdrojů a izolaci, zajišťující, že vaše nasazení LLM má přístup k požadovaným výpočetním, paměťovým a GPU zdrojům.
  • Vysoká dostupnost: Kubernetes poskytuje vestavěné mechanismy pro samoobnovu, automatické nasazení a zrušení nasazení, zajišťující, že vaše nasazení LLM zůstává vysoce dostupné a odolné vůči selháním.
  • Přenositelnost: Kontejnerová nasazení LLM lze snadno přesunout mezi různými prostředími, jako jsou datové centra nebo cloudové platformy, bez potřeby rozsáhlé rekonfigurace.
  • Podpora ekosystému a komunity: Kubernetes má velkou a aktivní komunitu, poskytující bohaté zdroje, knihovny a nástroje pro nasazení a správu komplexních aplikací, jako jsou LLM.

Příprava na nasazení LLM na Kubernetes:

Než nasadíte LLM na Kubernetes, je třeba zvážit několik předpokladů:

  1. Kubernetes cluster: Budete potřebovat funkční Kubernetes cluster, buď na místě nebo na cloudové platformě, jako je Amazon Elastic Kubernetes Service (EKS) , Google Kubernetes Engine (GKE) nebo Azure Kubernetes Service (AKS).
  2. Podpora GPU: LLM jsou výpočetně náročné a často vyžadují urychlení GPU pro efektivní inferenci. Ujistěte se, že váš Kubernetes cluster má přístup k GPU zdrojům, buď prostřednictvím fyzických GPU nebo cloudových instancí GPU.
  3. Registry kontejnerů: Budete potřebovat registry kontejnerů pro uložení vašich obrazů Docker LLM. Mezi oblíbené možnosti patří Docker Hub, Amazon Elastic Container Registry (ECR), Google Container Registry (GCR) nebo Azure Container Registry (ACR).
  4. Soubory modelu LLM: Získejte předtrénované soubory modelu LLM (váhy, konfigurace a tokenizátor) z příslušného zdroje nebo trénujte svůj vlastní model.
  5. Kontejnerizace: Kontejnerizujte svou aplikaci LLM pomocí Dockeru nebo podobného kontejnerového runtime. To zahrnuje vytvoření souboru Dockerfile, který balí váš kód LLM, závislosti a soubory modelu do obrazu Docker.

Nasazení LLM na Kubernetes

Jakmile máte předpoklady na místě, můžete pokračovat v nasazení vašeho LLM na Kubernetes. Proces nasazení obvykle zahrnuje následující kroky:

Vytvoření obrazu Docker

Vytvořte obraz Docker pro vaši aplikaci LLM pomocí poskytnutého souboru Dockerfile a nahrajte ho do vašeho registru kontejnerů.

Vytvoření zdrojů Kubernetes

Definujte zdroje Kubernetes požadované pro vaše nasazení LLM, jako jsou nasazení, služby, ConfigMapy a tajemství. Tyto zdroje jsou obvykle definovány pomocí YAML nebo JSON manifestů.

Konfigurace požadavků na zdroje

Specifikujte požadavky na zdroje pro vaše nasazení LLM, včetně CPU, paměti a GPU zdrojů. To zajišťuje, že vaše nasazení má přístup k nezbytným výpočetním zdrojům pro efektivní inferenci.

Nasazení do Kubernetes

Použijte nástroj příkazového řádku kubectl nebo nástroj pro správu Kubernetes (například Kubernetes Dashboard, Rancher nebo Lens) k aplikaci manifestů Kubernetes a nasazení vaší aplikace LLM.

Monitorování a škálování

Monitorujte výkon a využití zdrojů vašeho nasazení LLM pomocí nástrojů pro monitorování Kubernetes, jako je Prometheus a Grafana. Přizpůsobte přidělování zdrojů nebo škálování vašeho nasazení podle potřeby, aby splňovalo poptávku.

Příklad nasazení

Zvažme příklad nasazení modelu GPT-3 na Kubernetes pomocí předem vytvořeného obrazu Docker z Hugging Face. Předpokládejme, že máte funkční Kubernetes cluster nastavený a nakonfigurovaný s podporou GPU.

Stažení obrazu Docker:


<p>docker pull huggingface/text-generation-inference:1.1.0</p>

Vytvoření nasazení Kubernetes:

Vytvořte soubor s názvem gpt3-deployment.yaml s následujícím obsahem:


<p>apiVersion: apps/v1
kind: Deployment
metadata:
name: gpt3-deployment
spec:
replicas: 1
selector:
matchLabels:
app: gpt3
template:
metadata:
labels:
app: gpt3
spec:
containers:
- name: gpt3
image: huggingface/text-generation-inference:1.1.0
resources:
limits:
nvidia.com/gpu: 1
env:
- name: MODEL_ID
value: gpt2
- name: NUM_SHARD
value: "1"
- name: PORT
value: "8080"
- name: QUANTIZE
value: bitsandbytes-nf4</p>

Toto nasazení specifikuje, že chcete spustit jednu repliku kontejneru gpt3 pomocí obrazu Docker huggingface/text-generation-inference:1.1.0. Nasazení také nastavuje proměnné prostředí požadované pro kontejner k načtení modelu GPT-3 a konfiguraci serveru inferencing.

Vytvoření služby Kubernetes:

Vytvořte soubor s názvem gpt3-service.yaml s následujícím obsahem:


<p>apiVersion: v1
kind: Service
metadata:
name: gpt3-service
spec:
selector:
app: gpt3
ports:
- port: 80
targetPort: 8080
type: LoadBalancer</p>

Tato služba expozuje nasazení gpt3 na portu 80 a vytváří službu LoadBalancer, aby server inferencing byl přístupný z vnějšku clusteru Kubernetes.

Nasazení do Kubernetes:

Použijte nástroj příkazového řádku kubectl k aplikaci manifestů Kubernetes:


<p>kubectl apply -f gpt3-deployment.yaml
kubectl apply -f gpt3-service.yaml</p>

Monitorování nasazení:

Monitorujte průběh nasazení pomocí následujících příkazů:


<p>kubectl get pods
kubectl logs </p>

Jakmile je pod spuštěn a protokoly indikují, že model je načten a připraven, můžete získat externí IP adresu služby LoadBalancer:


kubectl get service gpt3-service

Testování nasazení:

Nyní můžete odesílat požadavky na server inferencing pomocí externí IP adresy a portu získaných z předchozího kroku. Například pomocí curl:


<p>curl -X POST \
http://:80/generate \
-H 'Content-Type: application/json' \
-d '{"inputs": "The quick brown fox", "parameters": {"max_new_tokens": 50}}'</p>

Tento příkaz odesílá požadavek na generování textu na server inferencing GPT-3, aby pokračoval v promptu “The quick brown fox” až do 50 dalších tokenů.

Pokročilá témata, o kterých byste měli vědět

Kubernetes logo LLM GPU

Zatímco výše uvedený příklad demonstruje základní nasazení LLM na Kubernetes, existují několik pokročilých témat a úvah, které je třeba prozkoumat:

1. Automatické škálování

Kubernetes podporuje horizontální a vertikální automatické škálování, které může být prospěšné pro nasazení LLM kvůli jejich proměnlivým výpočetním požadavkům. Horizontální automatické škálování umožňuje automaticky škálovat počet replik (podů) na základě metrik, jako je využití CPU nebo paměti. Vertikální automatické škálování umožňuje dynamicky upravovat požadavky na zdroje a limity pro vaše kontejnery.

Chcete-li povolit automatické škálování, můžete použít Kubernetes Horizontal Pod Autoscaler (HPA) a Vertical Pod Autoscaler (VPA). Tyto komponenty monitorují vaše nasazení a automaticky škálovat zdroje na základě předdefinovaných pravidel a prahů.

2. Plánování a sdílení GPU

V scénářích, kde jsou nasazeny multiple LLM nebo jiné GPU-intenzivní úlohy na stejném clusteru Kubernetes, se efektivní plánování a sdílení GPU stává kritickým. Kubernetes poskytuje několik mechanismů, aby zajistil spravedlivé a efektivní využití GPU, jako jsou pluginy zařízení GPU, selektory uzlů a limity zdrojů.

Můžete také využít pokročilé techniky plánování GPU, jako je NVIDIA Multi-Instance GPU (MIG) (NVDA ) nebo AMD Memory Pool Remapping (MPR), aby virtualizovat GPU a sdílet je mezi několika úlohami.

3. Paralelismus modelu a shardování

Některé LLM, zejména ty s miliardami nebo biliony parametrů, nemusí být schopny zcela zapadnout do paměti jediného GPU nebo dokonce jediného uzlu. V takových případech můžete použít techniky paralelismu modelu a shardování, aby distribuovat model přes několik GPU nebo uzlů.

Paralelismus modelu zahrnuje rozdělení architektury modelu na různé komponenty (například encoder, decoder) a distribuci jich přes několik zařízení. Shardování naopak zahrnuje rozdělení parametrů modelu a distribuci jich přes několik zařízení nebo uzlů.

Kubernetes poskytuje mechanismy, jako jsou StatefulSets a Custom Resource Definitions (CRDs), pro správu a orchestraci distribuovaných nasazení LLM s paralelismem modelu a shardováním.

4. Jemné ladění a kontinuální učení

V mnoha případech mohou být předtrénované LLM potřebovat jemné ladění nebo kontinuální učení na doménově specifických datech, aby se zlepšil jejich výkon pro konkrétní úkoly nebo domény. Kubernetes může usnadnit tento proces, poskytující škálovatelnou a odolnou platformu pro běh úloh jemného ladění nebo kontinuálního učení.

Můžete využít rámce pro zpracování dávkového zpracování Kubernetes, jako je Apache Spark nebo Kubeflow, pro běh distribuovaných úloh jemného ladění nebo trénování na vašich modelech LLM. Kromě toho můžete integrovat vaše jemně laděné nebo kontinuálně trénované modely s vašimi nasazeními inferencing pomocí mechanismů Kubernetes, jako jsou aktualizace rolí nebo nasazení modro-zelené.

5. Monitorování a pozorovatelnost

Monitorování a pozorovatelnost jsou kritické aspekty každého nasazení, včetně nasazení LLM na Kubernetes. Kubernetes poskytuje vestavěná řešení pro monitorování, jako je Prometheus a integrace s populárními platformami pro pozorovatelnost, jako je Grafana, Elasticsearch a Jaeger.

Můžete monitorovat různé metriky související s vašimi nasazeními LLM, jako je využití CPU a paměti, využití GPU, latence inferencing a propustnost. Kromě toho můžete shromažďovat a analyzovat protokoly aplikací a stopy, aby získat přehled o chování a výkonu vašich modelů LLM.

6. Bezpečnost a dodržování předpisů

V závislosti na vašem použití a citlivosti dat, která jsou zapojena, můžete potřebovat zvážit bezpečnost a dodržování předpisů při nasazení LLM na Kubernetes. Kubernetes poskytuje několik funkcí a integrací, aby zvýšil bezpečnost, jako jsou zásady sítě, role-based přístupový kontrolní systém (RBAC), správa tajemství a integrace s externími bezpečnostními řešeními, jako je HashiCorp Vault (HCP ) nebo AWS Secrets Manager.

Kromě toho, pokud nasazujete LLM v regulovaných odvětvích nebo zpracováváte citlivá data, můžete potřebovat zajistit dodržování relevantních standardů a předpisů, jako je GDPR, HIPAA nebo PCI-DSS.

7. Vícecloudová a hybridní nasazení

Zatímco tento blog se zaměřuje na nasazení LLM na jednom clusteru Kubernetes, můžete potřebovat zvážit vícecloudová nebo hybridní nasazení v některých scénářích. Kubernetes poskytuje konzistentní platformu pro nasazení a správu aplikací napříč různými cloudovými poskytovateli a na místních datových centrech.

Můžete využít nástroje pro federaci Kubernetes nebo víceclusterovou správu, jako je KubeFed nebo GKE Hub, pro správu a orchestraci nasazení LLM napříč několika clustery Kubernetes, které pokrývají různé cloudové poskytovatele nebo hybridní prostředí.

Tyto pokročilé téma zdůrazňují flexibilitu a škálovatelnost Kubernetes pro nasazení a správu LLM.

Závěr

Nasazení velkých jazykových modelů (LLM) na Kubernetes nabízí řadu výhod, včetně škálovatelnosti, správy zdrojů, vysoké dostupnosti a přenositelnosti. Sledováním kroků popsáných v tomto technickém blogu můžete kontejnerizovat svou aplikaci LLM, definovat požadované zdroje Kubernetes a nasadit ji do clusteru Kubernetes.

Nicméně, nasazení LLM na Kubernetes je pouze první krok. Jakmile vaše aplikace roste a vaše požadavky se vyvíjejí, můžete potřebovat prozkoumat pokročilá témata, jako je automatické škálování, plánování GPU, paralelismus modelu, jemné ladění, monitorování, bezpečnost a vícecloudová nasazení.

Kubernetes poskytuje robustní a extenzivní platformu pro nasazení a správu LLM, umožňující vám vytvářet spolehlivé, škálovatelné a zabezpečené aplikace.

Já pět let se ponořím do fascinujícího světa strojového učení a hlubokého učení. Mé vášně a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství, se zvláštním zaměřením na AI/ML. Mé pokračující zvědavosti mě také přivedly k přirozenému jazykovému zpracování, oblasti, kterou jsem ochoten prozkoumat dále.