Problem – Collection Creation Failure During Canary Deployment on AMD MI210 Nodes
During a rolling canary deployment of a new AI model on a Kubernetes cluster that contains AMD Instinct MI210 accelerators, pods repeatedly terminate with the following error:
[2026-06-27 10:12:34] ERROR: Failed to create collection: ROCm runtime version 5.5 does not match driver version 5.6
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1505, in __call__
return self.forward(*input, **kwargs)
RuntimeError: ROCm version mismatch, expected 5.6, got 5.5
The failure occurs during the TensorFlow/PyTorch model initialization phase, before any training steps are issued. The canary rollout is aborted and the cluster reverts to the previous stable version.
Root Cause – Mismatched ROCm Runtime and Driver Versions
The ROCm software stack consists of three tightly coupled layers:
- Kernel driver – installed on the host OS, provides low‑level access to the GPU.
- ROCm runtime libraries (hip, rocr, hsa, etc.) – packaged in a container image or host library path.
- AI framework binaries (TensorFlow, PyTorch, Horovod) – compiled against a specific ROCm runtime version.
According to the AMD ROCm Installation Guide (Ubuntu) and the ROCm Runtime Release Notes, MI210 requires a minimum runtime of 5.6; driver version 5.6 is the only supported driver for that runtime. The canary deployment used a container image built from the rocm/pytorch:5.5 base, while the node operating system had been upgraded to ROCm driver 5.6 as documented in the MI210 Hardware Reference Manual. This version drift caused the runtime inside the container (5.5) to be unable to locate the matching libamdhip64.so symbols expected by the driver, leading to the “Failed to create collection” error.
Community reports (GitHub issue #842, AMD/rocm-device-plugin #127) describe the same pattern: container runtime version lower than the host driver triggers hipErrorInvalidDeviceFunction and collection creation failures.
Investigation and Debugging
1. Verify node driver version
$ /opt/rocm/bin/rocminfo | grep "ROCm driver version"
ROCm driver version: 5.6.0
2. Inspect container ROCm runtime
$ docker run --rm rocm/pytorch:5.5 rocm-smi --showversion
ROCm Runtime Version: 5.5.0
3. Examine pod events for device‑plugin registration failures
$ kubectl describe pod ai-canary-5d9f8
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedCreate 2m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = device plugin registration failed: ROCm runtime version incompatibility
4. Correlate logs from the AI framework
2026-06-27 10:12:34.123456 [tensorflow] ERROR: ROCm error: Unable to load libamdhip64.so – version mismatch
2026-06-27 10:12:34.124001 [tensorflow] INFO: expected: 5.6, found: 5.5
5. Check the ROCm version matrix for MI210
| GPU | Minimum ROCm Runtime | Supported Driver |
|---|---|---|
| Instinct MI210 | 5.6 | 5.6+ |
| Instinct MI100 | 5.4 | 5.4+ |
Resolution – Align ROCm Versions Across Host and Container
Option A: Upgrade Container Runtime to Match Host Driver (recommended)
Rebuild the AI workload image using the ROCm 5.6 base image.
# Dockerfile (before)
FROM rocm/pytorch:5.5
# ... install model code ...
# Dockerfile (after)
FROM rocm/pytorch:5.6
# ... install model code ...
Re‑push the image and update the canary Deployment manifest to reference the new tag.
Option B: Downgrade Host Driver (only if container cannot be rebuilt)
Install ROCm driver 5.5 on the MI210 nodes. This is generally discouraged because MI210 is not officially supported on driver 5.5 per the Installation Guide.
# On each node
sudo apt-get purge rocm-dkms
sudo apt-get install rocm-dkms=5.5.0-1
sudo reboot
3. Update the Kubernetes GPU Operator configuration
The GPU Operator must be told which runtime image to use. Patch the ClusterPolicy (or gpu-operator-config) to set runtimeVersion: "5.6".
apiVersion: gpu-operator.k8s.io/v1
kind: ClusterPolicy
metadata:
name: gpu-operator
spec:
rocm:
driver:
version: "5.6"
runtime:
version: "5.6"
Apply the updated policy and allow the operator to restart the device plugin DaemonSet.
Validation – Confirm Successful Collection Creation
- Deploy the updated canary and watch pod status:
$ kubectl rollout status deployment/ai-model-canary
deployment "ai-model-canary" successfully rolled out
- Check pod logs for absence of the previous error:
2026-06-27 10:14:12.001234 [tensorflow] INFO: ROCm runtime version 5.6 detected – proceeding with collection creation
2026-06-27 10:14:12.015678 [tensorflow] INFO: Model initialization complete
- Validate GPU health via
rocm-smiinside the pod:
$ kubectl exec -it ai-canary-5d9f8 -- rocm-smi
GPU 0: MI210 [0x7390] Temperature: 45C Utilization: 0% Power: 0W
Metrics collected by Prometheus should show no increase in gpu_collection_failure_total counters.
Prevention – Operational Guardrails
- Version Pinning: Store the exact ROCm runtime tag (e.g.,
rocm/pytorch:5.6.0) in CI pipelines and enforce the same tag in theClusterPolicy. - Automated Compatibility Checks: Add a pre‑deployment script that extracts the node driver version via
rocminfoand compares it to the container’sROCM_VERSIONenvironment variable. - Continuous Monitoring: Alert on any pod event containing “ROCm runtime version incompatibility” or on a rise in
hipErrorInvalidDeviceFunctionmetrics. - Canary Isolation: Run canary pods on a dedicated node pool with a known driver/runtime pair to avoid cross‑pollution with older workloads.
- Documentation Sync: Keep the ROCm version matrix from the official Installation Guide in an internal knowledge base and review it whenever the driver or base images are upgraded.
FAQ – Related Questions
Why does the error only appear during a canary rollout and not in the stable version?
The stable version was built with ROCm 5.6 runtime, matching the node driver. The canary image was still using the older 5.5 base, exposing the mismatch only when the new pods were scheduled.
Can I use the
rocm/rocm-coreimage instead of the framework‑specific image?
Yes, but you must still compile the AI framework against the same ROCm version. Mixing a 5.5rocm-corewith a 5.6 driver will produce the same collection creation failure.
What log pattern should I grep for to quickly detect this issue?
Search forFailed to create collectionorROCm version mismatchin pod logs, and for the Kubernetes eventDevice plugin registration failed: ROCm runtime version incompatibility.
Is downgrading the driver ever a safe option?
MI210 is only officially supported from ROCm 5.6 onward. Downgrading to 5.5 may work temporarily but is unsupported and can cause subtle stability problems.
How do I verify the exact ROCm runtime version inside a running container?
Executecat /opt/rocm/.info/versionor runhipcc --version. The output should match the driver version reported byrocminfoon the host.
Related Topic Hub: GPU Infrastructure Troubleshooting Hub