{"id":19380007,"url":"https://github.com/graphistry/nvidia-morpheus-mlflow-plugin","last_synced_at":"2026-02-06T09:38:57.849Z","repository":{"id":84693885,"uuid":"565966829","full_name":"graphistry/NVIDIA-morpheus-mlflow-plugin","owner":"graphistry","description":"NVIDIA morpheus mlflow plugin helm charts","archived":false,"fork":false,"pushed_at":"2023-02-15T17:36:20.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-01T07:54:16.723Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smarty","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/graphistry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-14T17:42:40.000Z","updated_at":"2022-12-05T17:44:49.000Z","dependencies_parsed_at":"2023-03-12T16:00:19.309Z","dependency_job_id":null,"html_url":"https://github.com/graphistry/NVIDIA-morpheus-mlflow-plugin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/graphistry/NVIDIA-morpheus-mlflow-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphistry%2FNVIDIA-morpheus-mlflow-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphistry%2FNVIDIA-morpheus-mlflow-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphistry%2FNVIDIA-morpheus-mlflow-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphistry%2FNVIDIA-morpheus-mlflow-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graphistry","download_url":"https://codeload.github.com/graphistry/NVIDIA-morpheus-mlflow-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphistry%2FNVIDIA-morpheus-mlflow-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29157433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T07:18:23.844Z","status":"ssl_error","status_checked_at":"2026-02-06T07:13:32.659Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T09:12:02.562Z","updated_at":"2026-02-06T09:38:57.833Z","avatar_url":"https://github.com/graphistry.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\nNVIDIA Morpheus is an open AI application framework that provides cybersecurity developers with a highly optimized AI pipeline and pre-trained AI capabilities that, for the first time, allow them to instantaneously inspect all IP traffic across their data center fabric. Bringing a new level of security to data centers, Morpheus provides dynamic protection, real-time telemetry, adaptive policies, and cyber defenses for detecting and remediating cybersecurity threats.\n\n### Setup\n\nThe Morpheus MLflow container is packaged as a [Kubernetes](https://kubernetes.io/docs/home/) (aka k8s) deployment using a [Helm](https://helm.sh/docs/) chart. NVIDIA provides installation instructions for the [NVIDIA Cloud Native Stack](https://github.com/NVIDIA/cloud-native-stack) which incorporates the setup of these platforms and tools.\n\n#### NGC API Key\n\nFirst, you will need to set up your NGC API Key to access all the Morpheus components, using the instructions from the [NGC Registry CLI User Guide](https://docs.nvidia.com/dgx/ngc-registry-cli-user-guide/index.html#topic_3).\nOnce you have created your API key, create an environment variable containing your API key for use by the commands used further in these instructions:\n\n```\nexport API_KEY=\"\u003cyour key\u003e\"\n```\n\nAfter installing the Cloud Native Stack, install and configure the NGC Registry CLI using the instructions from the [NGC Registry CLI User Guide](https://docs.nvidia.com/dgx/ngc-registry-cli-user-guide/index.html#topic_3).\n\n#### Create Namespace for Morpheus\n\nCreate a namespace and an environment variable for the namespace to organize the k8s cluster deployed via the Cloud Native Stack and logically separate Morpheus-related deployments from other projects using the following command:\n\n```\nkubectl create namespace \u003csome name\u003e\nexport NAMESPACE=\"\u003csome name\u003e\"\n```\n\n### Install Morpheus MLflow\n\nInstall the chart as follows:\n\n```\nhelm fetch https://helm.ngc.nvidia.com/nvidia/morpheus/charts/morpheus-mlflow-23.01.tgz --username='$oauthtoken' --password=$API_KEY --untar\nhelm install --set ngc.apiKey=\"$API_KEY\" \\\n --namespace $NAMESPACE \\\n mlflow1 \\\n morpheus-mlflow\n```\n\n### Chart values explained\n\nThe number of pod replicas for each deployment. Currently \"1\" is a sensible value for a standalone development environment.\n\n```\nreplicaCount: 1\n```\n\nVarious fields required to access the container images from NGC. For the public catalog images, it should be sufficient to just specify the provided username and your API_KEY.\n\n```\nngc:\n  username: \"$oauthtoken\"\n  apiKey: \"\"\n  org: \"\"\n  team: \"\"\n```\n\nThe identity of the public catalog MLflow plugin image which could be overridden for other registry locations. The withEngine field makes the MLflow plugin deployment pending of the node where the AI Engine (Triton) pod is scheduled. Since this image can be used for MLflow serving and the Triton plugin, the arguments passed are configurable. Note that changes to the volume destinations in the server arguments will likely require changes in the deployment template. Also, the Triton plugin depends on setting the MLFLOW_TRACKING_URI environment variable so ensure that value agrees with the server setting noted. The `migrate` flag runs an idempotent database upgrade of the DB specified by the `tracking_uri` value. Set this to false if for some reason you want to backup the old DB, continue using a previous version of MLflow, or perform the migration manually.\n\n```\nmlflow:\n  registry: \"nvcr.io/nvidia/morpheus\"\n  image: mlflow-triton-plugin\n  version: 1.30.0\n  args: \"mlflow server -h 0.0.0.0 --backend-store-uri sqlite:////mlflow/db/mlflow-db.sqlite --serve-artifacts --artifacts-destination /mlflow/artifacts --default-artifact-root /mlflow/artifacts\"\n  tracking_uri: \"sqlite:////mlflow/db/mlflow-db.sqlite\"\n  migrate: true\n  withEngine: false\n```\n\nA NodePort is exposed for remote access to the MLflow server.\n\n```\ndashboardPort: 30500\n```\n\nA local host path which can be used by the charts for sharing models and datasets.\n\n```\nhostCommonPath: /opt/morpheus/common\n```\n\nIThe imagePullPolicy determines whether the container runtime should retrieve an image from a registry to create the pod. Use 'Always' for development.\n\n```\nimagePullPolicy: IfNotPresent\n ```\n\nImage pull secrets provide the properly formatted credentials for accessing the container images from NGC. It essentially encodes the provided API_KEY. Note that Fleet Command deployments create these secrets automatically based on the FC org, named literally 'imagepullsecret'.\n\n ```\nimagePullSecrets:\n- name: nvidia-registrykey-secret\n# - name: imagepullsecret\n```\n\nWhen deploying to OpenShift we need to create a ServiceAccount for attaching permissions, such as the use of hostPath volumes.\n\n```\nserviceAccount:\n  create: false\n  name: morpheus\n```\n\nWhen deploying to OpenShift we need to create a ServiceAccount for attaching permissions, such as the use of hostPath volumes.\n\n```\nplatform:\n  openshift: false\n```\n\nDeployment in CSP environments such as AWS EC2 require a Load Balancer ingress.\n\n```\nloadBalancer:\n  enabled: false\n```\n\n### Install Morpheus reference models\n\nCurrently, the Morpheus reference models are included inside the SDK container image. Using the default `sdk.args` from the charts, we can put the Morpheus SDK pod into a sleep mode for copying the models to a local host path.\n\n```\nhelm install --set ngc.apiKey=\"$API_KEY\" \\\n               --namespace $NAMESPACE \\\n               helper \\\n               morpheus-sdk-client\n```\n\nShell to the **sdk-cli-helper** and copy models to `/common`, which is mapped by default to `/opt/morpheus/common` on the host and where MLflow will have access to model files.\n\n```\nkubectl -n $NAMESPACE exec sdk-cli-helper -- cp -RL /workspace/models /common\n```\n\n### Interacting with the plugin\n\nOnce the MLflow server pod is deployed, you can make use of the plugin by running a bash shell in the pod container like this:\n\n```\nkubectl exec -it deploy/mlflow -- /bin/bash\n(mlflow) root@mlflow-6cdd744679-9lb82:/mlflow#\n```\n\n### Publish reference models to MLflow\n\nThe `publish_model_to_mlflow` script is used to publish `onnx` or `tensorrt` models to MLflow.\n\n```\npython publish_model_to_mlflow.py \\\n \t--model_name ref_model_1 \\\n \t--model_file /sid-bert-onnx/1/sid-bert.onnx \\\n \t--model_config /sid-bert-onnx/config.pbtxt \\\n --flavor onnx \n\npython publish_model_to_mlflow.py \\\n \t--model_name ref_model_1 \\\n \t--model_file /sid-bert-onnx/1/sid-bert.onnx \\\n \t--model_config /sid-bert-onnx/config.pbtxt \\\n --flavor tensorrt\n```\n\n### Deploy reference models to Triton\n\n```\nmlflow deployments create -t triton --flavor onnx --name ref_model_1 -m models:/ref_model_1/1 -C \"version=1\"\n\nmlflow deployments create -t triton --flavor onnx --name ref_model_2 -m models:/ref_model_2/1 -C \"version=1\"\n```\n\n### Deployments\n\nThe following deployment functions are implemented within the plugin.\nThe plugin will deploy the associated `config.pbtxt` with the saved model version.\n\n#### Create Deployment\n\nTo create a deployment use the following command:\n\n```\nmlflow deployments create -t triton --flavor onnx --name mini_bert_onnx -m models:/mini_bert_onnx/1 -C \"version=1\"\n```\n\n#### Delete Deployment\n\n```\nmlflow deployments delete -t triton --name mini_bert_onnx/1 \n```\n\n#### Update Deployment\n\n```\nmlflow deployments update -t triton --flavor onnx --name mini_bert_onnx/1 -m models:/mini_bert_onnx/1\n```\n\n#### List Deployments\n\n```\nmlflow deployments list -t triton\n```\n\n#### Get Deployment\n\n```\nmlflow deployments get -t triton --name mini_bert_onnx\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphistry%2Fnvidia-morpheus-mlflow-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraphistry%2Fnvidia-morpheus-mlflow-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphistry%2Fnvidia-morpheus-mlflow-plugin/lists"}