atlas-iac/services/ai-llm/gpu-seed-job.yaml

53 lines
1.8 KiB
YAML

# services/ai-llm/gpu-seed-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: ollama-gpu-seed-v2
namespace: ai
spec:
backoffLimit: 2
activeDeadlineSeconds: 7200
template:
metadata:
labels:
app: ollama-gpu-seed
spec:
automountServiceAccountToken: false
restartPolicy: Never
nodeSelector:
kubernetes.io/hostname: titan-24
containers:
- name: seed
image: ollama/ollama@sha256:2c9595c555fd70a28363489ac03bd5bf9e7c5bdf2890373c3a830ffd7252ce6d
env:
- {name: OLLAMA_HOST, value: "127.0.0.1:11434"}
- {name: OLLAMA_MODELS, value: /models}
- {name: OLLAMA_NO_CLOUD, value: "1"}
command: [/bin/bash, -ec]
args:
- |
ollama serve >/tmp/ollama.log 2>&1 &
server_pid=$!
trap 'kill "$server_pid"; wait "$server_pid" || true' EXIT
for attempt in $(seq 1 60); do
ollama list >/dev/null 2>&1 && break
sleep 1
done
ollama pull qwen2.5:14b-instruct-q4_0 >/tmp/pull.log 2>&1 || { tail -c 1000 /tmp/pull.log; exit 1; }
cd /models/manifests/registry.ollama.ai/library
sha256sum -c <<'PINS'
5449194ff8035ccb13a6409a5814de6c8f9c39f555f429e383ae0fb7137001bd qwen2.5/14b-instruct-q4_0
PINS
# Runtime mounts this cache read-only, after registry digest checks.
chmod -R a+rX /models
touch /models/.pilot-v1-ready
resources:
requests: {cpu: 500m, memory: 512Mi}
limits: {cpu: "2", memory: 2Gi}
volumeMounts:
- {name: models, mountPath: /models}
volumes:
- name: models
persistentVolumeClaim:
claimName: ollama-gpu-titan24