Skip to main content

Tutorials

Hands-on tutorials for learning HAMi by doing. Each lab is a step-by-step exercise with real, captured outputs: you build a cluster, install HAMi, and verify GPU partitioning behavior yourself.

Concepts

Background knowledge that the labs build on.

Labs

Lab 1: Online Installation of HAMiBeginner

Build a GPU Kubernetes cluster from scratch on a cloud VM and install HAMi.

about 60 minutes
Lab 2: Local Fake GPU SetupBeginner

Learn the HAMi control plane on a laptop, no GPU required.

about 30 minutes
Lab 3: GPU Partitioning with HAMiIntermediate

Run multiple Pods on one GPU with enforced VRAM and compute limits.

about 30 minutes
Lab 4: GPU Slicing with Dynamic Resource AllocationAdvanced

The same outcome through Kubernetes-native Dynamic Resource Allocation (experimental).

about 45 minutes
Lab 5: Fake-GPU Scheduling with nvml-mockIntermediate

Simulate 8 A100 GPUs with HAMi scheduling features, no real GPU needed.

about 40 minutes
Lab 6: Run vLLM on HAMi GPU SharesIntermediate

Install HAMi on a GPU cluster and schedule vLLM inference services with GPU partitioning.

about 45 minutes
Lab 7: GPU Isolation on k3s Without the GPU OperatorIntermediate

Share one non-MIG GPU between Pods on single-node k3s and prove HAMi-core enforces the memory cap.

about 45 minutes
Lab 8: Volcano vGPU with Gang Scheduling and QueuesAdvanced

Share one GPU with Volcano vGPU, then verify Gang scheduling and queue-level vGPU limits.

about 60 minutes
Lab 9: Queue HAMi vGPU Workloads with KueueAdvanced

Enforce vGPU count, memory, and compute quotas for HAMi workloads before Pods reach the scheduler.

about 60 minutes
Lab 10: GPU Topology-Aware Scheduling on Fake GPUsIntermediate

Simulate an asymmetric PCIe topology and verify HAMi's topology-aware scheduler avoids a poorly-connected GPU for multi-GPU requests and picks it for single-GPU requests, no real GPU required.

about 45 minutes
Lab 11: KServe Inference with HAMi DRA GPU SharingAdvanced

Deploy a KServe Standard vLLM service and run two Predictor replicas on one NVIDIA GPU through native HAMi DRA claims.

about 90 minutes
Lab 12: Verify KAI Scheduler and HAMi Memory Isolation on GKEAdvanced

Deploy KAI Scheduler and kai-resource-isolator on GKE, adapt the COS/CDI runtime path, and prove per-Pod GPU memory isolation with CUDA allocations.

about 90 minutes
Lab 13: Soft-Slicing Ascend 310P3 vNPU with Volcano and HAMi-coreAdvanced

Build Volcano and the ascend-device-plugin from source on an aarch64 Ascend server, enable hami-vnpu-core soft slicing, and verify memory isolation, binpack card sharing, and per-container metrics.

about 120 minutes
Lab 14: Composable GPU Scheduling Policies on GKEIntermediate

Install HAMi v2.10.0 on a GKE node with four Tesla T4s and observe spread, binpack, mutex, and the composed mutex,binpack chain through allocation annotations and scheduler logs.

about 60 minutes

Each lab lists its own prerequisites.

  • Labs 3 and 4 continue from the cluster Lab 1 builds, so a single session covers all three.
  • Lab 2 runs on any laptop with no GPU required.
  • Lab 7 brings up its own single-node k3s cluster on a rented GPU VM, without the GPU Operator.
  • Lab 8 requires an existing Volcano GPU cluster and validates Volcano vGPU, Gang scheduling, and queue-level limits.
  • Lab 9 uses Kueue admission control to enforce HAMi vGPU count, memory, and compute quotas.
  • Lab 11 builds a complete KServe Standard inference stack and runs two vLLM replicas on one GPU through native HAMi DRA claims.
  • Lab 12 deploys KAI Scheduler and HAMi-core on GKE 1.35/COS/CDI and proves the memory ceiling with CUDA allocations.
  • Lab 13 builds Volcano and the ascend-device-plugin from source on an Ascend 310P3 ARM server and verifies hami-vnpu-core soft slicing, binpack card sharing, and per-container metrics.
  • Lab 14 installs HAMi v2.10.0 on a four-T4 GKE node and observes the composable gpu-scheduler-policy chains (spread, binpack, mutex, mutex,binpack) through allocation annotations and scheduler logs.
CNCFHAMi is a CNCF Incubating project