Deploy NeMo Evaluator Using Parent Helm Chart#

You can deploy the NeMo Evaluator microservice using the parent Helm chart, which manages all required dependencies automatically. This is the recommended approach for most users.

By default, this deployment enables only the Evaluator and Data Store microservices, which are the minimal required dependencies for Evaluator. All other microservices are explicitly disabled.

Why Use the Parent Chart?

  • Dependency Management: The parent chart ensures all required services are installed and networked correctly.

  • Simplicity: One command, one values file, minimal manual configuration.

  • Support: This is the officially supported and tested deployment method.

Prerequisites#

Dependencies

  • Kubernetes cluster with Helm installed

  • NVIDIA GPU Cloud (NGC) API key for pulling images

    • Create an NGC API key following the instructions at Generating NGC API Keys. You need the NGC API Key to fetch Docker images required by the NeMo microservices platform.

  • (Optional) External services if not using the chart-provided dependencies:

    • NIM: Used for model inference.

    • Milvus: Used for Retriever and RAG evaluations.

Kubernetes

  • Create the Kubernetes namespace where you want to install the platform if it does not already exist.

    kubectl create namespace <NAMESPACE>
    
  • Create NGC Image pull credentials. This includes:

    • A generic secret containing your NGC API key, referenced by existingSecret

    • An image pull secret, referenced by existingImagePullSecret


Download the Parent Helm Chart#

Export the NGC API Key into your shell environment using the following command:

export NGC_API_KEY=<your-ngc-api-key>

Add the NeMo Microservices Helm Chart helm repo.

helm repo add nmp https://helm.ngc.nvidia.com/nvidia/nemo-microservices \
   --username='$oauthtoken' \
   --password=$NGC_API_KEY
helm repo update

Prepare Your Values File#

Create a values-evaluator-only.yaml file to enable only the Evaluator and its required dependencies. For more advanced scenarios (for example, enabling Milvus, Argo, Ingress), see the advanced example below.

tags:
  platform: false
  evaluator: true
tags:
  platform: false
  evaluator: true

evaluator:
  milvus:
    enabled: true
    standalone:
      persistence:
        enabled: true
        persistentVolumeClaim:
          size: 50Gi
          storageClass: "standard"
ingress:
  enabled: true

If you want to use external services for any dependency, set its enabled value to false and provide the appropriate external endpoint in your values file.

Install with Helm#

Run the following command to install the platform with your custom values file. Replace <NAMESPACE> and <release-name> as appropriate. An example release name can be nemo.

helm --namespace <NAMESPACE> install <release-name> \
  nmp/nemo-microservices-helm-chart \
  -f values-evaluator-only.yaml

Service Endpoints#

After deploying the services with Helm, port-forward the following services to be available:

  • Evaluator API: http://localhost:8080

    • This is the main endpoint for interacting with the Evaluator microservice.

    • Port-forward the Evaluator service. Replace <NAMESPACE> and <release-name> as appropriate.

      kubectl -n <NAMESPACE> \
        port-forward \
        service/<release-name>-evaluator \
        8080:7331
      
  • Nemo Data Store HuggingFace Endpoint: http://localhost:3000/v1/hf

    • The Data Store exposes a HuggingFace-compatible API at this endpoint.

    • You can set the HF_ENDPOINT environment variable to this URL if needed for integration or testing.

    • Port-forward the Evaluator service. Replace <NAMESPACE> and <release-name> as appropriate.

      kubectl -n <NAMESPACE> \
        port-forward \
        service/<release-name>-data-store \
        3000:3000
      

Verify the deployment:

curl http://localhost:7331/health
{"status":"healthy"}

Troubleshooting#

Secret Ownership/Label Errors#

If you encounter an error like:

Error: INSTALLATION FAILED: Unable to continue with install: Secret "nvcrimagepullsecret" in namespace "default" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "nemo-platform"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "default"
  • Make sure you have set existingSecret and existingImagePullSecret in your values file as shown above.

  • Do not let Helm try to create or import secrets you created manually.

ImagePullBackOff or manifest unknown#

If pods fail to start and you encounter events like:

Failed to pull image "nvcr.io/nvidia/nemo-microservices/evaluator:${parent_helm_chart_latest_version}": Error response from daemon: manifest for nvcr.io/nvidia/nemo-microservices/evaluator:${parent_helm_chart_latest_version} not found: manifest unknown: manifest unknown
  • Check that the image tag exists in NGC.

  • Override the image tag in your values file if needed.

    evaluator:
      image:
        tag: "${parent_helm_chart_latest_version}"  # Change to a valid tag if needed
    
  • Ensure your image pull secret is correct and referenced properly.