mlflow-triton-control
MLflow deployment target for models that already exist in a Triton S3 model repository. Install this Python package in the environment running the MLflow CLI or Python API. Triton Control creates the Kubernetes deployment and resolves the selected user-owned S3 profile.
python -m build
python -m pip install dist/mlflow_triton_control-*.whl
mlflow deployments help -t triton-control
How MLflow finds the plugin
mlflow deployments create is a command provided by MLflow. This package
registers the deployment target through its Python package metadata:
[project.entry-points."mlflow.deployments"]
triton-control = "mlflow_triton_control.deployment_client"
For --target triton-control://triton-control:8000, MLflow looks up the
triton-control entry point among installed packages, loads this module, and
calls TritonControlDeploymentClient.create_deployment(). That class inherits
from MLflow's BaseDeploymentClient and sends the deployment request to the
Triton Control API. MLflow reads entry-point metadata; it does not search
through every package's source files. The package must be installed in the
same Python environment as the mlflow CLI.
Log a Triton model in MLflow
Like NVIDIA's Triton MLflow plugin, this package provides a triton model
flavor for a complete Triton model directory. The directory must contain at
least one numbered version; config.pbtxt may be included at
its root. The MLflow Model contains an MLmodel file with a triton flavor
entry and a copy of the entire directory under model/.
from mlflow_triton_control import triton
model_info = triton.log_model(
triton_model_path="/tmp/model-repository/iris_classifier",
name="triton-model",
registered_model_name="iris-serving",
)
print(model_info.registered_model_version)
triton.load_model("models:/iris-serving/1") downloads the registered model
and returns the local Triton model directory. Omit registered_model_name to
save a model without creating a Registry version. This API is in the plugin
package, not in MLflow's mlflow.triton namespace.
The current deployment client still accepts an already-published s3:// Triton
repository URI. Deploying directly from models:/... and copying that version
to the selected S3 profile are separate planned changes. The current Iris
workflow therefore continues to use the S3 URI.
Argo Workflows
Submit the workflow through Triton Control's authenticated Argo proxy. Mark the deployment template with these Workflow annotations:
metadata:
name: train-iris
annotations:
triton-control.ai/mlflow-deploy-template: deploy
triton-control.ai/mlflow-deployment-name: iris-classifier
triton-control.ai/mlflow-s3-profile-name: workflow-training
The backend resolves the profile name and its linked Argo artifact repository
for the submitting user. It sets spec.artifactRepositoryRef and injects
TRITON_CONTROL_TOKEN, TRITON_CONTROL_S3_PROFILE_ID, and
TRITON_CONTROL_S3_BUCKET into the named script or container template.
Use the injected ID with -C s3_profile_id="$TRITON_CONTROL_S3_PROFILE_ID".
The token is valid for 60 minutes and limited
to the specified deployment and S3 profile. The Workflow receives a five-minute
completion TTL unless it already defines one, and the Secret receives a
Workflow owner reference for garbage collection.
The opted-in Workflow must have a fixed metadata.name and run in the Triton
Control namespace. Direct submissions to Argo bypass this token injection.
Metadata
Release files for mlflow-triton-control 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mlflow_triton_control-0.2.0.tar.gz | 11.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mlflow_triton_control-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.6 kB
Release files / mlflow_triton_control-0.2.0.tar.gz
| Download URL | mlflow_triton_control-0.2.0.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b6a65172c1d2360bb96d4884387297aa928d69ba7bd6f86a03bb3182521e7928
|
|
BLAKE2b-256 checksum How to use checksums |
8f428d9458a50103a3b026a65234c3488d8e7a03b945558025e5f6783ee2f232
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mlflow_triton_control-0.2.0-py3-none-any.whl
| Download URL | mlflow_triton_control-0.2.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5b9eadb831f6883e22fa95bbb5efbd6d6936b4030e0d6ee727f43d336fcb4c2c
|
|
BLAKE2b-256 checksum How to use checksums |
3e1a3dd3e687320aa36fc0e0bfb81fc09d949a3e9024d99642b2659300138179
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for mlflow-triton-control 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.