Deploy Boltz2 with Helm
Boltz2 NIMs are designed to run on systems with NVIDIA GPUs. To deploy using Helm, you must have a Kubernetes cluster with appropriate GPU nodes and the GPU Operator installed.
Prerequisites
If you have not set up your NGC API key, refer to Getting Started first.
Required Components
- Configured Kubernetes cluster with GPU nodes
- NVIDIA GPU Operator installed
- Helm 3.x or later
- kubectl configured to access your cluster
- NGC API key with access to Boltz2 NIM
Download the Helm Chart
The Boltz2 NIM Helm chart is available from the NGC Catalog. Use the following command to download the chart:
Replace <version> with the desired chart version. In most cases, you should use the latest version available at:
https://catalog.ngc.nvidia.com/orgs/nim/teams/mit/helm-charts/boltz2-nim/files
Configure Helm
The following Helm options are the most important to configure for deploying Boltz2 NIM:
Core Configuration Options
-
boltz2.repository– The Boltz2 NIM container to deploy -
boltz2.tag– The version of the container -
boltz2.servicePort– The port the Kubernetes service listens on (default:8081) -
boltz2.structureOptimizedBackend– Backend for structure prediction:"trt"(default) or"torch" -
boltz2.affinityOptimizedBackend– Backend for affinity binding:"trt"(default) or"torch" -
boltz2.enableDiffusionTF32– Enable TensorFloat-32:0or1(integer; default:1) -
Storage options – Based on your cluster environment (see Storage section)
-
imagePullSecret– For NGC authentication:nameis used as the pod’s image pull secret.secretNameandsecretKeysupply the NGC API key to the container (for example,NGC_API_KEY). You can use one secret for both, or separate secrets for image pull and the API key.
-
resources– GPU and memory requirements
To view all available configuration options, run:
To examine default values:
Quick Start Deployment
1. Create NGC Secrets
Create the necessary Kubernetes secrets for NGC authentication. The chart uses a single imagePullSecret object. Its name is the secret used for pulling the image. secretName and secretKey identify the secret and key used to set the NGC API key in the container (for example, NGC_API_KEY). You can use one secret for both roles or separate secrets.
2. Create Values File
Create a file named custom-values.yaml with your configuration. Use imagePullSecret (not ngc.apiSecret or imagePullSecrets). Set name to the image pull secret name and secretName/secretKey to the secret and key that hold the NGC API key for the container.
3. Install the Chart
Deploy Boltz2 NIM using Helm:
4. Verify Deployment
Check the pod status:
View logs to monitor startup progress:
Due to large model files, pods may take several minutes to start. The NIM will download model weights on first startup if they are not already present in the persistent volume.
Storage
Proper storage configuration is critical for Boltz2 NIM deployment. The model cache can be large, and you have several options:
Persistent Volume Claims (Recommended)
Enabled with persistence.enabled: true. The chart supports the following persistence options:
Example using chart defaults:
To use the cluster default StorageClass, set storageClass: "". For production with a large model cache, increase size (e.g. 100Gi):
For multi-pod scenarios, use a storage class that supports ReadWriteMany:
Alternative Storage Options
NFS Storage
The chart does not support direct NFS volume mounts. For NFS-backed storage, use a StorageClass that provisions NFS volumes and enable persistence:
HostPath (development)
The chart’s PV template uses persistence.hostPath as the node path for the PersistentVolume (default: /data/nim). To use a different path on the node:
HostPath ties the volume to a specific node and has security implications. Prefer a StorageClass for multi-node or production use.
GPU Configuration
Single GPU Deployment
Most Boltz2 deployments use a single GPU:
GPU Selection
Use node selectors to target specific GPU types:
Or use tolerations for GPU taints:
Service Configuration
Basic Service
The default service configuration exposes the Boltz2 API. The chart provides:
service.type– Service type (default:ClusterIP). This is the only option under theservicekey.boltz2.servicePort– The port the service listens on (default:8081). To use a different port, set this under theboltz2section of your values.- Service name – Generated from the Helm release name by the chart’s templates and cannot be overridden.
Example values to change the service port:
Port Forwarding (Testing)
For local testing, use port forwarding. Use the same port as boltz2.servicePort (default 8081) on the right side of the mapping:
If you set boltz2.servicePort to a different value (e.g. 9090), use that port instead:
Test the API:
Ingress Configuration
For production deployments, configure ingress:
Advanced Configuration
Autoscaling
The chart supports horizontal pod autoscaling based on CPU utilization (GPU-based autoscaling is not supported):
If your chart version supports it, you can also set targetMemoryUtilizationPercentage for memory-based scaling.
Custom Probes
The chart configures liveness and readiness probes under probes.liveness and probes.readiness. Probe paths are fixed in the template (/v1/health/live and /v1/health/ready). There is no startupProbe or enabled/path fields. Adjust timings for large models or slow storage:
Increase initialDelaySeconds or failureThreshold if pods need more time to become ready.
Security Context
Configure pod and container security (chart defaults):
The chart uses securityContext for the container; there is no containerSecurityContext or capabilities in the default values.
Run Inference
Once deployed, you can run predictions using the API.
The host URL http://localhost:8080 below only works after you forward the Kubernetes service to your machine. Run kubectl port-forward first (see Port forwarding (Testing)), mapping a local port (here 8080) to boltz2.servicePort on the service (default 8081), for example: kubectl port-forward service/"${CHART_NAME}" 8080:8081.
For detailed API documentation, refer to Inference.
Troubleshooting
Pod Stuck in Pending
Check events:
Common issues:
- Insufficient GPU resources
- Node taints requiring tolerations
- Storage mount failures
- Image pull errors
Pod Fails to Start
View logs:
If the pod needs more time to become ready, increase probe delays or failure thresholds under probes (the chart does not support a startup probe):
Storage Issues
Verify PVC status:
Ensure storage class supports the required access mode.
GPU Access
Test GPU availability:
Uninstall
To remove the Boltz2 NIM deployment:
To also remove persistent volumes: