Modely a platformy AI
Nasazení velkých jazykových modelů na Kubernetes: komplexní průvodce
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ů:
- 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).
- 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.
- 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).
- 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.
- 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
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:













