ibm-granite-switch-space / generated.yaml
rasa2's picture
Deploy IBM Granite Switch Space
f82cdfd verified
Raw
History Blame Contribute Delete
9.67 kB
---
# Source: pytorchjob-generator/templates/appwrapper.yaml
apiVersion: workload.codeflare.dev/v1beta2
kind: AppWrapper
metadata:
name: yair-tutorial-4dot1-3b-alora-public
namespace: security
annotations:
workload.codeflare.dev.mlbatch/pytorchGeneratorVersion: "1.1.12"
workload.codeflare.dev.appwrapper/failureGracePeriodDuration: "24h"
workload.codeflare.dev.appwrapper/retryLimit: "3"
workload.codeflare.dev.appwrapper/deletionOnFailureGracePeriodDuration: "24h"
labels:
kueue.x-k8s.io/queue-name: default-queue
spec:
components:
- template:
apiVersion: "kubeflow.org/v1"
kind: "PyTorchJob"
metadata:
name: yair-tutorial-4dot1-3b-alora-public
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
restartPolicy: Never
template:
spec:
imagePullSecrets:
- name: image-pull-secret-us
priorityClassName: default-priority
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: autopilot.ibm.com/gpuhealth
operator: NotIn
values:
- ERR
- TESTING
- EVICT
volumes:
- name: private-ssh-git-deploy-key
secret:
secretName: github-ssh-key
optional: false
- name: github-known-hosts
configMap:
name: github-known-hosts
- name: dshm
emptyDir:
medium: Memory
containers:
- name: pytorch
image: us.icr.io/cil15-shared-registry/sec-rl-neo:latest
imagePullPolicy: IfNotPresent
env:
- name: TIMESTAMP
value: "2026-05-11_17.35"
- name: NUM_PODS
value: "1"
- name: GPUS_PER_POD
value: "1"
- name: JOB_NAME
value: "yair-tutorial-4dot1-3b-alora-public"
- name: HF_HOME
value: "/workspace/.cache/huggingface"
- name: TORCH_HOME
value: "/workspace/.cache/torch"
- name: XDG_CACHE_HOME
value: "/workspace/.cache"
- name: PYTHONUNBUFFERED
value: "1"
- name: MODEL_PATH
value: "ibm-granite/granite-switch-4.1-3b-preview"
- name: VLLM_MODEL_NAME
value: "placeholder"
- name: GRANITE_SWITCH_SOURCE
value: "placeholder"
- name: GIT_SSH_COMMAND
value: "ssh -i /tmp/.ssh/keys/id_rsa -o UserKnownHostsFile=/tmp/.ssh/hosts/known_hosts -vv"
volumeMounts:
- name: private-ssh-git-deploy-key
readOnly: true
mountPath: "/tmp/.ssh/keys"
- name: github-known-hosts
mountPath: "/tmp/.ssh/hosts"
- name: dshm
mountPath: "/dev/shm"
resources:
requests:
cpu: 8
nvidia.com/gpu: 1
memory: 100Gi
nvidia.com/roce_gdr: 0
limits:
cpu: 8
nvidia.com/gpu: 1
memory: 100Gi
nvidia.com/roce_gdr: 0
command:
- sh
- -c
- |
echo "Environment variables set by the kubeflow training operator:"
echo ${MASTER_ADDR}:${MASTER_PORT}
echo "PYTHONUNBUFFERED:"${PYTHONUNBUFFERED}
echo My global rank is ${RANK} / ${WORLD_SIZE}
echo "Other injected environment variables:"
echo "NVME_MOUNT_PATH: "${NVME_MOUNT_PATH}
#
# User commands
#
nvidia-smi
echo "=== Tutorial pod (PUBLIC) for Granite Switch 4.1 3b ==="
map[echo "Model:${MODEL_PATH}"]
export VLLM_MODEL_NAME=${MODEL_PATH}
export GRANITE_SWITCH_SOURCE=${MODEL_PATH}
git clone -b main https://github.com/generative-computing/granite-switch.git
cd granite-switch
python3 -m venv .venv --system-site-packages
. .venv/bin/activate
pip install "transformers>=4.0.0,<5.0.0"
pip install nvidia-cuda-runtime-cu12
pip install -e ".[vllm]"
pip install mellea
pip install jupyter chromadb tqdm httpx python-dotenv litellm
echo "=== Starting vLLM server on port 8000 ==="
python -m vllm.entrypoints.openai.api_server --model ${MODEL_PATH} --port 8000 --host 0.0.0.0 &
echo "Waiting for vLLM to load model..."
until curl -s http://localhost:8000/v1/models > /dev/null 2>&1; do sleep 5; echo "..."; done
echo "=== vLLM ready ==="
curl -s http://localhost:8000/v1/models | python3 -m json.tool
echo "=== Starting Jupyter Lab on port 8888 ==="
cd tutorials
jupyter lab --no-browser --port=8888 --ip=0.0.0.0 --allow-root --ServerApp.token='' --ServerApp.allow_origin='*'