client.models.deploy
Deploy model programmatically to your Modzy instance
client.models.deploy(self, container_image, model_name, model_version, sample_input_file=None, architecture="amd64" credentials=None, model_id=None, run_timeout=None, status_timeout=None, short_description=None, tags=[], gpu=False, long_description=None, technical_details=None, performance_summary=None, performance_metrics=None, input_details=None, output_details=None, model_picture=None)
Deploy new model or new version for existing model to your private model library.
Note: This method only supports deployment of container images stored in Docker registries that adhere to the HTTP API v2 protocol.
Parameters
Parameter | Type | Description | Example |
---|---|---|---|
container_image | str | Docker container image to be deployed. This string should represent what follows a docker pull command | 'modzy/grpc-echo-model:1.0.0' |
model_name | str | Name of model to be deployed | 'Echo Model' |
model_version | str | Version of model to be deployed | '0.0.1' |
sample_input_file | str | Path to local file to be used for sample inference | './test-input.txt' |
architecture | str | `{'amd64', 'arm64', 'arm'} If set to arm64 or arm , deploy method will expedite the deployment process and bypass some Modzy tests that are only available for models compiled for amd64 chips. | |
credentials | dict | Dictionary containing credentials if the container image is private. The keys in this dictionary must be ["user", "pass"] | Dockerhub Example :{"user": "<Dockerhub account username>", "pass": "<Dockerhub account password>"} AWS ECR Example :{"user": "<AWS Access Key ID>", "pass": "<AWS Secret Access Key>"} |
model_id | str | Model identifier if deploying a new version to a model that already exists | 'y79drwaozn' |
run_timeout | str | Timeout threshold for container run route | '60' |
status_timeout | str | Timeout threshold for container status route | '60' |
short_description | str | Short description to appear on model biography page | 'This model returns the same text passed through as input, similar to an "echo".' |
tags | List | List of tags to make model more discoverable in model library | ["Text", "Language"] |
gpu | bool | Flag for whether or not model requires GPU to run | False |
long_description | str | Description to appear on model biography page | "Long Description" |
technical_details | str | Technical details to appear on model biography page. Markdown is accepted | "Technical Details " |
performance_summary | str | Description providing model performance to appear on model biography page | "Performance Summary " |
performance_metrics | List | List of arrays describing model performance statistics | [ { "label": "Accuracy", "category": "numeric", "type": "percentage", "description": "The average of the classification accuracies across all classes.", "order": 1, "value": 0.96 } ] |
input_details | List | List of dictionaries describing details of model inputs | [ { "name": "input", "acceptedMediaTypes": "application/json", "maximumSize": 1000000, "description": "Default input data" } ] |
output_details | List | List of dictionaries describing details of model outputs | [ { "name": "results.json", "mediaType": "application/json", "maximumSize": 1000000, "description": "Default output data" } ] |
model_picture | str | Filepath to image for model card page | "path-to-image.jpg" |
Returns
{
"model_data": {
"version": "0.0.1",
"createdAt": "2022-08-16T01:10:52.821+00:00",
"updatedAt": "2022-08-16T01:10:53.498+00:00",
"inputValidationSchema": "",
"timeout": {
"status": 60000,
"run": 60000
},
"requirement": {
"requirementId": 1
},
"containerImage": {
"uploadStatus": "IN_PROGRESS",
"loadStatus": "IN_PROGRESS",
"uploadPercentage": 0,
"loadPercentage": 0,
"containerImageSize": 0,
"repositoryName": "thjg0zuntf"
},
"inputs": [
{
"name": "input",
"acceptedMediaTypes": "application/json",
"maximumSize": 1000000,
"description": "Default input data"
}
],
"outputs": [
{
"name": "results.json",
"mediaType": "application/json",
"maximumSize": 1000000,
"description": "Default output data"
}
],
"statistics": [],
"isActive": false,
"longDescription": "Long Description",
"technicalDetails": "Techincal Details",
"isAvailable": true,
"status": "partial",
"performanceSummary": "Performance summary",
"model": {
"modelId": "thjg0zuntf",
"latestVersion": "0.0.1",
"latestActiveVersion": "",
"versions": [
"0.0.1"
],
"author": "Integration",
"name": "Echo Model",
"description": "Short Description",
"permalink": "thjg0zuntf-integration-echo-model",
"features": [],
"isActive": false,
"isRecommended": false,
"isCommercial": false,
"tags": [],
"createdByEmail": "[email protected]",
"createdByFullName": "First Last",
"visibility": {
"scope": "PRIVATE"
}
},
"processing": {
"minimumParallelCapacity": 0,
"maximumParallelCapacity": 1
},
"originSidecar": false
},
"container_url": "https://modzy-instance.app.modzy.com/models/thjg0zuntf/0.0.1"
}
Examples
model_data = client.models.deploy(
container_image="modzy/grpc-echo-model:1.0.0",
model_name="Echo Model",
model_version="0.0.1",
sample_input_file="./test.txt",
run_timeout="60",
status_timeout="60",
short_description="This model returns the same text passed through as input, similar to an 'echo.'",
long_description="This model returns the same text passed through as input, similar to an 'echo.'",
technical_details="This section can include any technical information abot your model. Include information about how your model was trained, any underlying architecture details, or other pertinant information an end-user would benefit from learning.",
performance_summary="This is the performance summary."
)
Updated 9 days ago