Skip to content

ModelQualityJobDefinition ​

The ModelQualityJobDefinition resource allows you to define and manage model quality monitoring jobs in AWS SageMaker. For more details, refer to the AWS SageMaker ModelQualityJobDefinitions documentation.

Minimal Example ​

Create a basic ModelQualityJobDefinition with required properties and common optional settings.

ts
import AWS from "alchemy/aws/control";

const modelQualityJobDefinition = await AWS.SageMaker.ModelQualityJobDefinition("basicModelQualityJob", {
  ModelQualityAppSpecification: {
    ContainerSpecifications: [{
      ImageUri: "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-model-quality-image:latest",
      Environment: {
        "MODEL_S3_PATH": "s3://my-models/model.tar.gz"
      }
    }]
  },
  ModelQualityJobInput: {
    EndpointName: "my-endpoint",
    GroundTruthS3Input: {
      S3Uri: "s3://my-groundtruth-data/",
      ContentType: "application/json"
    }
  },
  JobResources: {
    ClusterConfig: {
      InstanceType: "ml.m5.large",
      InstanceCount: 1,
      VolumeSizeInGB: 30
    }
  },
  RoleArn: "arn:aws:iam::123456789012:role/my-sagemaker-role",
  StoppingCondition: {
    MaxRuntimeInSeconds: 3600
  }
});

Advanced Configuration ​

Define a ModelQualityJobDefinition that includes advanced settings such as baseline configuration and network settings.

ts
const advancedModelQualityJobDefinition = await AWS.SageMaker.ModelQualityJobDefinition("advancedModelQualityJob", {
  ModelQualityAppSpecification: {
    ContainerSpecifications: [{
      ImageUri: "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-advanced-model-quality-image:latest",
      Environment: {
        "MODEL_S3_PATH": "s3://my-models/advanced-model.tar.gz"
      }
    }]
  },
  ModelQualityJobInput: {
    EndpointName: "my-advanced-endpoint",
    GroundTruthS3Input: {
      S3Uri: "s3://my-advanced-groundtruth-data/",
      ContentType: "application/json"
    }
  },
  JobResources: {
    ClusterConfig: {
      InstanceType: "ml.m5.xlarge",
      InstanceCount: 2,
      VolumeSizeInGB: 50
    }
  },
  RoleArn: "arn:aws:iam::123456789012:role/my-advanced-sagemaker-role",
  ModelQualityBaselineConfig: {
    BaselineS3Uri: "s3://my-baseline-data/",
    Constraints: {
      Video: {
        S3Uri: "s3://my-constraints-data/"
      }
    }
  },
  NetworkConfig: {
    EnableNetworkIsolation: true,
    VpcConfig: {
      SecurityGroupIds: ["sg-0123456789abcdef0"],
      Subnets: ["subnet-0123456789abcdef0"]
    }
  },
  Tags: [{
    Key: "Project",
    Value: "ModelQualityMonitoring"
  }],
  StoppingCondition: {
    MaxRuntimeInSeconds: 7200
  }
});

Custom Tags ​

Create a ModelQualityJobDefinition with custom tags for better resource management.

ts
const taggedModelQualityJobDefinition = await AWS.SageMaker.ModelQualityJobDefinition("taggedModelQualityJob", {
  ModelQualityAppSpecification: {
    ContainerSpecifications: [{
      ImageUri: "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-tagged-model-quality-image:latest",
      Environment: {
        "MODEL_S3_PATH": "s3://my-models/tagged-model.tar.gz"
      }
    }]
  },
  ModelQualityJobInput: {
    EndpointName: "my-tagged-endpoint",
    GroundTruthS3Input: {
      S3Uri: "s3://my-tagged-groundtruth-data/",
      ContentType: "application/json"
    }
  },
  JobResources: {
    ClusterConfig: {
      InstanceType: "ml.t3.medium",
      InstanceCount: 1,
      VolumeSizeInGB: 20
    }
  },
  RoleArn: "arn:aws:iam::123456789012:role/my-tagged-sagemaker-role",
  Tags: [{
    Key: "Environment",
    Value: "Production"
  }, {
    Key: "Owner",
    Value: "DataScienceTeam"
  }]
});