Steg-for-steg-veiledning for on-prem KI-tjenester med GPU-støtte, LLaMA- eller Llama3-modeller, REST API eller GUI-løsninger (Gradio, text-generation-webui, Flowise, Langflow) – og beste praksis.
I denne guiden viser vi hvordan du kan sette opp en robust on-premises KI-infrastruktur basert på:
talosctl./etc/hosts for interne domener.Talos er en minimal Linux-distribusjon spesifikt for Kubernetes:
# Generer Talos-konfig for cluster:
talosctl gen config my-talos-cluster https:// --output ./cluster
# Tildel config til controlplane:
talosctl apply-config --insecure --nodes \
--file ./cluster/controlplane.yaml
# Tildel config til worker:
talosctl apply-config --insecure --nodes \
--file ./cluster/worker.yaml
# Hent kubeconfig (for kubectl):
talosctl kubeconfig --nodes --force
Etterpå kan du kjøre kubectl get nodes for å bekrefte at klyngen er oppe.
Se talos.dev for detaljer om Talos-installasjon.
For å kjøre store modeller effektivt trenger du GPU-drivere og tilhørende verktøy i Kubernetes. NVIDIA GPU Operator automatisk installerer drivere, container-toolkit, m.m.:
helm repo add nvidia https://nvidia.github.io/gpu-operator
helm install --wait --generate-name nvidia/gpu-operator \
--create-namespace --namespace gpu-operator
Når operatoren er klar, kan du lage pods med resources.limits.nvidia.com/gpu: 1
og kjøre f.eks. nvidia-smi i containeren for å verifisere at GPU er tilgjengelig.
Rancher er et oversiktlig, grafisk grensesnitt for å administrere Kubernetes-klynger. Installer ved hjelp av Helm:
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm install rancher rancher-latest/rancher \
--namespace cattle-system --create-namespace \
--set hostname=rancher.ai.local
Pek DNS eller /etc/hosts mot rancher.ai.local, og gå til
http://rancher.ai.local i en nettleser. Opprett admin-bruker og vurder SSO/OIDC-oppsett.
For å eksponere tjenester via en enkel URL – f.eks. llama3api.ai.local,
flowise.ai.local osv. – trengs en Ingress-controller (Nginx eller Traefik).
Ingress-ressurser for hver av applikasjonene du ønsker å nå.LLaMA er en språkmodell fra Meta AI, og Llama3 antas å være en videreutvikling eller neste generasjon. Du kan bruke:
I Kubernetes konfigurerer du enten en Deployment med ditt favoritt-dockerimage (Flowise, webui, Gradio, etc.) og spesifiserer GPU-limits. Eksempel med Flowise:
apiVersion: apps/v1
kind: Deployment
metadata:
name: flowise
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: flowise
template:
metadata:
labels:
app: flowise
spec:
containers:
- name: flowise
image: flowiseai/flowise:latest
ports:
- containerPort: 3000
resources:
limits:
nvidia.com/gpu: 1 # be om 1 GPU
---
apiVersion: v1
kind: Service
metadata:
name: flowise-service
spec:
selector:
app: flowise
ports:
- port: 3000
targetPort: 3000
name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: flowise-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: flowise.ai.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: flowise-service
port:
name: http
Opprett DNS-oppføring for flowise.ai.local eller legg til i /etc/hosts.
Dermed kan du nå Flowise i nettleser med GPU-støtte. Andre verktøy som Langflow, text-generation-webui,
Gradio-apper, Hugging Face TGI osv. settes opp på samme måte – bare bytt Docker-image og porter.
Vil du eksponere en LLM via et REST-endepunkt? Her er et enkelt eksempel med FastAPI, Transformers og GPU-støtte:
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
app = FastAPI()
# Eksempel: Llama3 eller llama-7b-hf
model_name = "decapoda-research/llama-7b-hf"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
class Prompt(BaseModel):
text: str
@app.post("/predict")
def predict(prompt: Prompt):
inputs = tokenizer.encode(prompt.text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=50)
response_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
return {"response": response_text}
FROM python:3.9-slim
RUN pip install fastapi uvicorn transformers torch
COPY server.py /app/
WORKDIR /app
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]
Bygg og push bildet til et registry:
docker build -t your-registry/llama3-api:latest .
docker push your-registry/llama3-api:latest
apiVersion: apps/v1
kind: Deployment
metadata:
name: llama3-api
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: llama3-api
template:
metadata:
labels:
app: llama3-api
spec:
containers:
- name: llama3-api
image: your-registry/llama3-api:latest
ports:
- containerPort: 8000
resources:
limits:
nvidia.com/gpu: 1
---
apiVersion: v1
kind: Service
metadata:
name: llama3-service
spec:
selector:
app: llama3-api
ports:
- port: 80
targetPort: 8000
name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: llama3-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: llama3api.ai.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: llama3-service
port:
number: 80
Nå kan du POST http://llama3api.ai.local/predict med JSON-objekt {"text": "Hei, Llama"}
for å få svar. Bytt model_name etter behov – f.eks. for en hypotetisk Llama3 13B.
For en produksjonsklar KI-klynge er sikkerhet avgjørende:
Store modeller (f.eks. 13B, 30B eller mer) kan kreve titalls GB. For å unngå å laste dem ned hver gang:
/app/models)..cache/huggingface, men merk at containere ofte er stateless.docker save/docker load.helm pull for å ha chartene lokalt, installer dem uten nett.LLaMA- (eller “Llama3-”) modeller kan kjøres på CPU for mindre varianter (4–7B), men GPU gir stor ytelsesforbedring for større modeller (13B, 30B, 65B). Du kan ha en mix av CPU-pods for lette oppgaver og en GPU-node for tyngre.
Det finnes ikke et “one-size-fits-all”-repo som har Talos + GPU Operator + Rancher + LLaMA (eller Llama3) ferdig, men du kan:
Med disse stegene får du en komplett on-prem KI-løsning for LLaMA- eller Llama3-modeller (og andre LLM-varianter), administrert via Talos og Rancher, med GPU-akselerasjon fra GPU Operator.