Machine Learning Model Release Definition Templates
hashistack offers a Screwdriver template that deploys immutable instances of Machine Learning models as REST API to AWS. It uses the screwdriver-template-main npm package to assist with template validation, publishing, and tagging.
This release definition contains the following templates:
All templates tag the latest versions with the latest
tag.
How to Use the Templates
Using the Template
Create a Screwdriver pipeline that uses this template with the following contents:
---
jobs:
main:
requires: [~pr, ~commit]
template: QubitPi/machine-learning-model-release-definition-template-mlflow-docker@latest
steps:
- build-ml-models: ...
secrets:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_ML_PKRVARS_HCL
- AWS_ML_TFVARS
The following Screwdriver CD - steps must be implemented:
build-ml-models
- Commands that package up MLflow Python models
The following Screwdriver Secrets needs to be defined before running this template:
-
AWS_ML_PKRVARS_HCL - A HashiCorp Packer variable values file with the following variable values:
aws_image_region = "us-east-2"
ami_name = "my-ml-ami"
instance_type = "t2.small"
ml_models_path = "/home/my-nlp-models"aws_image_region
is the image region of AWS AMIami_name
is the name of the resulting AMI that will appear when managing AMIs in the AWS console or via APIs. This can be the same across builds, because hashistack will deregister the old AMI with the same name and replace it with the current built oneinstance_type
is the recommended AWS EC2 instance type running this imageml_models_path
is the absolute path to the model directory generated by the build-ml-models step above
-
AWS_ML_TFVARS - A HashiCorp Terraform variable values file with the following variable values:
aws_ec2_region = "us-east-2"
ami_name = "my-ml-ami"
instance_type = "t2.small"
ec2_instance_name = "My Machine Learning REST Service"
ec2_security_groups = ["ML REST Service Security Group"]aws_ec2_region
is the EC2 runtime regionami_name
is the name of the published AMI; it must be the same as theami_name
in AWS_ML_PKRVARS_HCLinstance_type
is the AWS EC2 instance type used for deployed infrastructureec2_instance_name
is the deployed EC2 name as appeared in the instance list of AWS console; it can be arbitraryec2_security_groups
is the AWS Security Group name (yes, not ID, but name...)