Deploying a model from the Cloudera AI Registry using APIv2
You can use the API v2 to deploy registered models from the Cloudera AI Registry as part of your MLOps CI/CD pipeline.
The following example code shows how to deploy a model from the Cloudera AI Registry by using three APIv2 calls:
create a model, create a model build, and create a model deployment.
api_client = cmlapi.default_client()
model_body = cmlapi.CreateModelRequest(
project_id=project_id,
name="foo", # replace this with the model name
description="Foo",
disable_authentication=True,
registered_model_id="xyo2-ohbr-w0n2-dx3s" # replace this with the registered model id
)
model = api_client.create_model(model_body, project_id)
print(model)
model_build_body = cmlapi.CreateModelBuildRequest(
project_id=project_id,
model_id=model.id,
kernel="python3",
runtime_identifier='docker.repository.cloudera.com/cloudera/cdsw/ml-runtime-pbj-workbench-python3.10-standard:2023.12.1-b8', # replace this with the runtime identifier
registered_model_version_id="ar0a-z7sd-pjgb-2fn2" # replace this with the registered model id
)
model_build = api_client.create_model_build(model_build_body, project_id, model.id)
print(model_build)
while model_build.status not in ["built", "build failed"]:
print("waiting for model to build...")
time.sleep(10)
model_build = api_client.get_model_build(project_id, model.id, model_build.id)
if model_build.status == "build failed":
print("model build failed, see UI for more information")
sys.exit(1)
print("model built successfully!")
model_deployment_body = cmlapi.CreateModelDeploymentRequest(project_id=project_id, model_id=model.id, build_id=model_build.id, replicas = model_replicas)
model_deployment = api_client.create_model_deployment(model_deployment_body, project_id, model.id, model_build.id)
while model_deployment.status not in ["stopped", "failed", "deployed"]:
print("waiting for model to deploy...")
time.sleep(10)
model_deployment = api_client.get_model_deployment(project_id, model.id, model_build.id, model_deployment.id)
if model_deployment.status != "deployed":
print("model deployment failed, see UI for more information")
sys.exit(1)
print("model deployed successfully!")