NIM Service Chart#
Overview#
The nvidia-lipsync-h4m-service Helm chart deploys the NVIDIA LipSync NIM as a standalone inference service on Kubernetes or Red Hat OpenShift.
This chart can be deployed standalone for integration into a custom media pipeline, or as a subchart of the End-to-End Demo Chart.
Installation#
Prerequisites#
Complete all prerequisite steps (Rivermax license, image pull and model pull secrets, GPU node, Multus attachment for SMPTE ST 2110) before running helm install. For details, refer to Getting Started.
For hardware requirements per pod, refer to the Support Matrix.
If not already done, add the Helm repository and pull the chart. (For the full repository setup, refer to Pull Helm Charts.)
helm pull nim-repo/nvidia-lipsync-h4m-service --version 1.0.0
The downloaded .tgz is referenced directly in the following installation commands.
Helm Installation#
The chart includes a default values.yaml. For full SMPTE ST 2110 and NMOS override files, refer to Starter Configuration Files.
Default deployment (NMOS mode, 1080p):
Important
The default values.yaml ships with example values for cluster-specific fields such as node selector (example-gpu-node), image pull secret, network name, and scheduler. You must update these values to match your cluster before deploying.
helm install lipsync-h4m-service \
nvidia-lipsync-h4m-service-1.0.0.tgz
With inline overrides:
helm upgrade --install lipsync-h4m-service \
nvidia-lipsync-h4m-service-1.0.0.tgz \
--set nodeSelector.hostname=<gpu-node-name> \
--set image.secret=<image-pull-secret> \
--set schedulerName=<scheduler-name> \
--set network.name=<multus-net-attach-def> \
--set ngcApiKeySecret.name=<model-pull-secret>
Common --set overrides:
|
Purpose |
Default |
|---|---|---|
|
Target GPU node. |
|
|
Image pull secret ( |
|
|
Pod |
|
|
Multus |
|
|
Model pull secret ( |
|
After installation, check pod status:
kubectl get pods
On Red Hat OpenShift, replace kubectl with oc.
Example output:
NAME READY STATUS
nvidia-lipsync-nim-nmos-59cd769766-sh4c2 1/1 Running
Confirm the LipSync NIM pod shows 1/1 in the READY column before continuing.
For NMOS, refer to Chrome Remote Desktop for UI access and setup steps.
For NMOS connection order and NMOS known issues, refer to Limitations and Known Behaviors.
Deployment Modes#
The NIM service offers two modes to support media stream connections:
Aspect |
SMPTE ST 2110 |
NMOS |
|---|---|---|
Values file |
|
|
Stream discovery |
Fixed multicast IP addresses and ports in values. |
Dynamic discovery via NMOS Connection Manager. |
Use case |
Known network, fixed topology. |
Dynamic registration and connection management. |
SMPTE ST 2110 Mode#
NMOS discovery is disabled. All multicast IP addresses, ports, and session parameters must be configured explicitly. Sender output IP addresses and ports must match NIM service input IP addresses and ports, and NIM service output IP addresses and ports must match downstream receiver input IP addresses and ports.
helm upgrade --install lipsync-h4m-service \
nvidia-lipsync-h4m-service-1.0.0.tgz \
-f values-st2110.yaml
NMOS Mode#
Stream connections are managed via the NMOS Connection Manager UI. Most input and output transport parameters can be omitted from the values file—only session names and ancillary output parameters must be set. On Holoscan for Media clusters, the UI is typically opened from a browser on the cluster network; for remote graphical access, refer to Chrome Remote Desktop in Getting Started.
helm upgrade --install lipsync-h4m-service \
nvidia-lipsync-h4m-service-1.0.0.tgz \
-f values-nmos.yaml
For NMOS connection order and other known issues, refer to Limitations and Known Behaviors.
Starter Configuration Files#
Copy the appropriate configuration into values-st2110.yaml or values-nmos.yaml, adjust fields for your environment, and pass it to helm upgrade --install with -f.
For a full reference of all Helm keys and pipeline tuning parameters, refer to the Configuration Reference.
ST 2110 (Static Mode) Configuration (values-st2110.yaml)#
values-st2110.yaml (ST 2110, NMOS disabled):
enabled: true
appName: nvidia-lipsync-nim-st2110
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: true
replicas: 1
nodeSelector:
hostname: example-gpu-node
network:
name: media-a-tx-net
schedulerName: topo-aware-scheduler
image:
repository: nvcr.io/nim/nvidia/lipsync-h4m-nim
tag: "1.0.0"
secret: ngc-secret-key
ngcApiKeySecret:
name: model-download-api-key
key: NGC_API_KEY
video:
width: 1920
height: 1080
framerateNum: 30
framerateDen: 1
nmos:
enabled: false
hostname: lipsync-nim.local
description: Nvidia LipSync NIM
label: Nvidia-LipSync-NIM
service:
enabled: true
type: NodePort
port: 9010
nodePort: 32513
nim:
enabled: 1
logging:
level: 3
input:
video:
sessionName: video_in
localInterfaceName: net1
hostIp: "234.5.8.9"
hostPort: "5001"
hostNumSubnetBits: 24
audio:
sessionName: audio_in
localInterfaceName: net1
hostIp: "234.5.8.9"
hostPort: "7001"
hostNumSubnetBits: 24
ancillaryData:
enabled: false
sessionName: ancillary_data_in
localInterfaceName: net1
hostIp: "234.5.8.9"
hostPort: "8001"
hostNumSubnetBits: 24
output:
video:
sessionName: video_out
localInterfaceName: net1
hostIp: "234.5.8.9"
hostPort: "5002"
hostNumSubnetBits: 24
boundingBoxEnabled: false
model:
headMovementSpeed: 0
nimModelCache:
enabled: false
size: 10Gi
storageClassName: ""
serverLogs:
enabled: false
size: 5Gi
storageClassName: ""
NMOS Configuration (values-nmos.yaml)#
enabled: true
appName: nvidia-lipsync-nim-nmos
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: true
replicas: 1
nodeSelector:
hostname: example-gpu-node
network:
name: media-a-tx-net
schedulerName: topo-aware-scheduler
image:
repository: nvcr.io/nim/nvidia/lipsync-h4m-nim
tag: "1.0.0"
secret: ngc-secret-key
ngcApiKeySecret:
name: model-download-api-key
key: NGC_API_KEY
nmos:
enabled: true
hostname: lipsync-nim.local
description: Nvidia LipSync NIM
label: Nvidia-LipSync-NIM
service:
enabled: true
type: NodePort
port: 9010
nodePort: 32513
nim:
enabled: 1
logging:
level: 3
video:
width: 1920
height: 1080
framerateNum: 30
framerateDen: 1
audio:
pcmFormat: S24BE
samplingRate: 48000
numChannels: 1
input:
video:
sessionName: video_in
audio:
sessionName: audio_in
ancillaryData:
enabled: false
sessionName: ancillary_data_in
output:
video:
sessionName: video_out
boundingBoxEnabled: false
model:
headMovementSpeed: 0
nimModelCache:
enabled: false
size: 10Gi
storageClassName: ""
serverLogs:
enabled: false
size: 5Gi
storageClassName: ""
On Red Hat OpenShift, replace kubectl with oc. For log access, refer to Observability.
Verify and Check Logs#
helm status lipsync-h4m-service
kubectl get pods -o wide
helm get values lipsync-h4m-service
Uninstall#
helm uninstall lipsync-h4m-service
For troubleshooting and advanced configuration, refer to Advanced Usage.