Deploying Solution Blueprints with Helm#

Solution Blueprints are provided as Helm Charts.

The recommended approach to deploy them is to pipe the output of helm template to kubectl apply -f -. We don’t recommend helm install, which by default uses a Secret to keep track of the related resources.

This does not work well with Enterprise clusters that often have limitations on the kinds of resources that regular users are allowed to create.

An example for command-line usage:

name="my-deployment"
namespace="my-namespace"
chart="aimsb-my-chart"
helm template $name oci://registry-1.docker.io/amdenterpriseai/$chart \
  | kubectl apply -f - -n $namespace

Using an existing deployment or external LLM#

By default, any required AIMs are deployed by the helm chart. If you already have a compatible AIM deployed, you can use that instead, and reuse resources.

To use an existing deployment or external model, set the corresponding existingService value to that endpoint. For instance, with an LLM, set the value of llm.existingService. Then, any other values you pass in the llm mapping are simply ignored, and your existing service is used instead. You should use the Kubernetes Service name, or if the service is in a different namespace, you can use the long form <SERVICENAME>.<NAMESPACE>.svc.cluster.local:<SERVICEPORT>. If needed, you can pass a whole URL.

Full example command:

name="my-deployment"
namespace="my-namespace"
chart="aimsb-my-chart"
servicename="aim-llm-my-model-123456"
helm template $name oci://registry-1.docker.io/amdenterpriseai/$chart \
  --set llm.existingService=$servicename \
  | kubectl apply -f - -n $namespace

Pulling the helm charts#

To access the helm chart, its values.yaml, and any additional override files that may be distributed alongside the chart, simply helm pull the chart. The chart is a GZIP TAR archive, with a name that includes the version that you pulled. Thus this may require interactively checking the name of TAR that you pulled.

An example pull and untar command:

chart="aimsb-my-chart"
helm pull oci://registry-1.docker.io/amdenterpriseai/$chart
# List the directory, the file will appear with a name like $chart-<version>.tgz
ls -lah .
version=1.2.3
tar -xzf $chart-$version.tgz
cd $chart

Using ephemeralStorage or different storageClasses#

The default storageClass in Solution Blueprints is mlstorage, which is the default for AMD Enterprise AI clusters. To avoid using a storageClass altogether, and fall back to ephemeral storage, override the storageClassName to null. Similarly, the storageClassName can overriden to a different one to use a different storageClass.

For example:

name="my-deployment"
namespace="my-namespace"
chart="aimsb-my-chart"
helm template $name oci://registry-1.docker.io/amdenterpriseai/$chart \
  --set llm.storage.ephemeral.storageClassName=null \
  | kubectl apply -f - -n $namespace