Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xây dựng quy trình MLOps nhiều tài khoản bằng sổ đăng ký mô hình Amazon SageMaker

Một quy trình CI/CD được thiết kế tốt là điều cần thiết để mở rộng quy trình phát triển phần mềm một cách hiệu quả. Khi thiết kế quy trình CI/CD sản xuất, AWS khuyên bạn nên tận dụng nhiều tài khoản để cách ly tài nguyên, ngăn chặn các mối đe dọa bảo mật và đơn giản hóa quy trình thanh toán và khoa học dữ liệu. Tại AWS, chúng tôi đang tiếp tục đổi mới để đơn giản hóa quy trình MLOps.

Trong bài đăng này, chúng tôi thảo luận về một số tính năng tài khoản chéo mới hơn để Amazon SageMaker cho phép bạn chia sẻ và quản lý tốt hơn các nhóm mô hình cũng như quản lý các phiên bản mô hình. Đối với một cấu trúc tài khoản ví dụ để làm theo thực tiễn tốt nhất của đơn vị tổ chức để lưu trữ các mô hình bằng điểm cuối SageMaker trên các tài khoản, hãy tham khảo Trình soạn thảo khối lượng công việc MLOps.

Tổng quan về giải pháp

Sơ đồ sau đây minh họa kiến ​​trúc đăng ký mô hình dùng chung của chúng tôi.

Một số điều cần lưu ý trong kiến ​​trúc trước:

Các bước sau đây tương ứng với sơ đồ:

  1. Một nhà khoa học dữ liệu đăng ký một mô hình từ tài khoản khoa học dữ liệu vào sổ đăng ký mô hình SageMaker của các dịch vụ được chia sẻ trong một PendingManualApproval tiểu bang. Phần mềm mô hình được tạo trong tài khoản dịch vụ dùng chung Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) xô.
  2. Khi đăng ký phiên bản mô hình mới, người có thẩm quyền phê duyệt mô hình dựa trên số liệu sẽ phê duyệt hoặc từ chối mô hình.
  3. Sau khi mô hình được phê duyệt, đường dẫn CI/CD trong tài khoản triển khai được được kích hoạt để triển khai chi tiết mô hình được cập nhật trong tài khoản QA và cập nhật giai đoạn dưới dạng QA.
  4. Sau khi vượt qua quy trình thử nghiệm, bạn có thể chọn thực hiện bước phê duyệt thủ công trong quy trình CI/CD của mình hoặc để quy trình CI/CD trực tiếp triển khai mô hình vào sản xuất và cập nhật giai đoạn dưới dạng Prod.
  5. Môi trường sản xuất tham khảo mô hình và mã đã được phê duyệt, có thể thực hiện một Thử nghiệm A/B trong sản xuất. Trong trường hợp kiểm tra hoặc bất kỳ vấn đề nào với mô hình, bạn có thể sử dụng Theo dõi dòng ML của Amazon SageMaker ML. Nó tạo và lưu trữ thông tin về các bước của quy trình làm việc máy học (ML) từ chuẩn bị dữ liệu đến triển khai mô hình. Với thông tin theo dõi, bạn có thể tái tạo các bước quy trình công việc, theo dõi dòng mô hình và tập dữ liệu, đồng thời thiết lập các tiêu chuẩn kiểm tra và quản trị mô hình.

Trong toàn bộ quá trình, cơ quan đăng ký mô hình dùng chung sẽ giữ lại các phiên bản mô hình cũ hơn. Điều này cho phép nhóm khôi phục các thay đổi hoặc thậm chí lưu trữ biến thể sản xuất.

Điều kiện tiên quyết

Đảm bảo bạn có các điều kiện tiên quyết sau:

  • Cấu trúc nhiều tài khoản được cung cấp – Để biết hướng dẫn, xem Các phương pháp hay nhất dành cho Đơn vị tổ chức với Tổ chức AWS. Đối với mục đích của blog này, chúng tôi đang tận dụng các tài khoản sau:
    • Tài khoản khoa học dữ liệu – Tài khoản nơi các nhà khoa học dữ liệu có quyền truy cập vào dữ liệu đào tạo và tạo mô hình.
    • Tài khoản dịch vụ chia sẻ – Một tài khoản trung tâm để lưu trữ các thành phần tạo tác của mô hình (như được hiển thị trong sơ đồ kiến ​​trúc) được truy cập trên các tài khoản khối lượng công việc khác nhau.
    • Tài khoản triển khai – Một tài khoản chịu trách nhiệm triển khai các thay đổi đối với các tài khoản khác nhau.
    • tài khoản khối lượng công việc – Đây thường là các môi trường QA và prod nơi các kỹ sư phần mềm có thể xây dựng các ứng dụng để sử dụng mô hình ML.
  • Tài khoản triển khai có quyền thích hợp – Để biết thêm thông tin về các phương pháp hay nhất với cấu trúc đơn vị tổ chức nhiều tài khoản, hãy tham khảo Đơn vị tổ chức triển khai. Tài khoản này chịu trách nhiệm trỏ các tài khoản khối lượng công việc đến mô hình mong muốn trong sổ đăng ký mô hình của tài khoản dịch vụ dùng chung.

Xác định chính sách tài khoản chéo

Để tuân theo nguyên tắc đặc quyền tối thiểu, trước tiên, chúng tôi cần thêm chính sách tài nguyên nhiều tài khoản vào tài nguyên dịch vụ được chia sẻ để cấp quyền truy cập từ các tài khoản khác.

Vì các thành phần lạ của mô hình được lưu trữ trong bộ chứa S3 của tài khoản dịch vụ dùng chung, nên tài khoản khoa học dữ liệu cần quyền truy cập đọc/ghi của Amazon S3 để đẩy các mô hình đã đào tạo lên Amazon S3. Đoạn mã sau minh họa chính sách này, nhưng chưa thêm nó vào tài khoản dịch vụ dùng chung:

#Data Science account's policy to access Shared Services' S3 bucket
 {
    'Version': '2012-10-17',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': 'arn:aws:iam:::root'
        }, 
        "Action": [ 
            's3:PutObject', 
            's3:PutObjectAcl',
            's3:GetObject', 
            's3:GetObjectVersion'
        ], #read/write
        'Resource': 'arn:aws:s3:::/*'
    }]
}

Tài khoản triển khai chỉ cần được cấp quyền truy cập đọc vào bộ chứa S3 để có thể sử dụng các thành phần lạ của mô hình nhằm triển khai tới các điểm cuối SageMaker. Chúng ta cũng cần đính kèm chính sách sau vào nhóm S3 dịch vụ dùng chung:

#Deployment account's policy to access Shared Services' S3 bucket
 {
    'Version': '2012-10-17',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': 'arn:aws:iam:::root'
        },
        'Action': [ 
            's3:GetObject', 
            's3:GetObjectVersion'
        ], #read
        'Resource': 'arn:aws:s3:::/*'
    }]
}

Chúng tôi kết hợp cả hai chính sách để có được chính sách cuối cùng sau đây. Tạo chính sách này trong tài khoản dịch vụ dùng chung sau khi thay thế ID tài khoản thích hợp:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AddPerm",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam:::root"    
    },
    "Action": [
      "s3:PutObject",
      "s3:PutObjectAcl",
      "s3:GetObject",
      "s3:GetObjectVersion"    ],
    "Resource": "arn:aws:s3:::/*"  
    },
    {
      "Sid": "AddPermDeployment",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"      ], 
      "Resource": "arn:aws:s3:::/*"    
    }
  ]
}

Để có thể triển khai một mô hình được tạo trong một tài khoản khác, người dùng phải có vai trò có quyền truy cập vào các hành động của SageMaker, chẳng hạn như vai trò với AmazonSageMakerFullAccess chính sách được quản lý. tham khảo Triển khai Phiên bản mô hình từ một tài khoản khác để biết thêm chi tiết.

Chúng ta cần xác định nhóm mô hình chứa các phiên bản mô hình mà chúng ta muốn triển khai. Ngoài ra, chúng tôi muốn cấp quyền cho tài khoản khoa học dữ liệu. Điều này có thể được thực hiện trong các bước sau. Chúng tôi đề cập đến các tài khoản như sau:

  • Shared_services_account_id – Tài khoản nơi đăng ký mô hình và nơi chúng tôi muốn mô hình được
  • data_science_account_id – Tài khoản mà chúng tôi sẽ đào tạo và do đó tạo ra tạo tác mô hình thực tế
  • triển khai_tài khoản_id – Tài khoản mà chúng tôi muốn lưu trữ điểm cuối cho mô hình này

Trước tiên, chúng ta cần đảm bảo các nhóm gói mô hình tồn tại. Bạn có thể sử dụng API Boto3 như minh họa trong ví dụ sau hoặc bạn có thể sử dụng Bảng điều khiển quản lý AWS để tạo gói mô hình. tham khảo Tạo nhóm gói mô hình để biết thêm chi tiết. Điều này giả định rằng bạn đã cài đặt Boto3.

model_package_group_name = "cross-account-example-model"
sm_client = boto3.Session().client("sagemaker")

create_model_package_group_response = sm_client.create_model_package_group(
    ModelPackageGroupName=model_package_group_name,
    ModelPackageGroupDescription="Cross account model package group",
    Tags=[
          {
              'Key': 'Name',
              'Value': 'cross_account_test'
          },
      ]

)

print('ModelPackageGroup Arn : {}'.format(create_model_package_group_response['ModelPackageGroupArn']))

Đối với các quyền đối với nhóm gói mô hình này, bạn có thể tạo một tài liệu JSON giống như đoạn mã sau. Thay thế ID tài khoản thực tế và tên nhóm gói mô hình bằng các giá trị của riêng bạn.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AddPermModelPackageGroupCrossAccount",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "sagemaker:DescribeModelPackageGroup"      
        ],
      "Resource": "arn:aws:sagemaker:::model-package-group/"    
    },
    {
      "Sid": "AddPermModelPackageVersionCrossAccount",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "sagemaker:DescribeModelPackage",
        "sagemaker:ListModelPackages",
        "sagemaker:UpdateModelPackage",
        "sagemaker:CreateModelPackage",
        "sagemaker:CreateModel"      
      ],
      "Resource": "arn:aws:sagemaker:::model-package//*"    
    }
  ]
}

Cuối cùng, áp dụng chính sách cho nhóm gói mô hình. Bạn không thể liên kết chính sách này với nhóm gói thông qua bảng điều khiển. Bạn cần SDK hoặc Giao diện dòng lệnh AWS (AWS CLI) truy cập. Ví dụ: đoạn mã sau sử dụng Boto3:

# Convert the policy from JSON dict to string
model_package_group_policy = dict( )
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the new policy
sm_client = boto3.Session().client("sagemaker")
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)

Chúng tôi cũng cần một tùy chỉnh Dịch vụ quản lý khóa AWS (AWS KMS) để mã hóa mô hình trong khi lưu trữ mô hình trong Amazon S3. Điều này cần được thực hiện bằng tài khoản khoa học dữ liệu. Trên bảng điều khiển AWS KMS, điều hướng đến Xác định quyền sử dụng khóa trang. bên trong Các tài khoản AWS khác phần, chọn Thêm một tài khoản AWS khác. Nhập số tài khoản AWS cho tài khoản triển khai. Bạn sử dụng khóa KMS này cho công việc đào tạo SageMaker. Nếu bạn không chỉ định khóa KMS cho tác vụ đào tạo, thì SageMaker sẽ mặc định là khóa mã hóa phía máy chủ Amazon S3. Không thể chia sẻ hoặc sử dụng khóa mã hóa phía máy chủ Amazon S3 mặc định với một tài khoản AWS khác.

Chính sách và quyền tuân theo mẫu sau:

  • Chính sách Amazon S3 được chỉ định trong shared_services_account cấp quyền cho tài khoản khoa học dữ liệu và tài khoản triển khai
  • Chính sách khóa KMS được chỉ định trong shared_services_account cấp quyền cho tài khoản khoa học dữ liệu và tài khoản triển khai

Chúng tôi cần đảm bảo rằng tài khoản dịch vụ dùng chung và tài khoản triển khai có quyền truy cập vào hình ảnh Docker được sử dụng để đào tạo mô hình. Những hình ảnh này thường được lưu trữ trong tài khoản AWS và quản trị viên tài khoản của bạn có thể giúp bạn có quyền truy cập nếu bạn chưa có quyền truy cập. Đối với bài đăng này, chúng tôi không tạo bất kỳ hình ảnh Docker tùy chỉnh nào sau khi đào tạo mô hình và do đó, chúng tôi không cần bất kỳ chính sách Amazon ECR cụ thể nào cho hình ảnh.

Trong các tài khoản khối lượng công việc (QA hoặc prod), chúng ta cần tạo hai tài khoản Quản lý truy cập và nhận dạng AWS (IAM) các chính sách tương tự như sau. đó là chính sách nội tuyến, có nghĩa là chúng được nhúng trong danh tính IAM. Điều này cho phép các tài khoản này truy cập vào sổ đăng ký mô hình.

Chính sách nội tuyến đầu tiên cho phép một vai trò truy cập vào tài nguyên Amazon S3 trong tài khoản dịch vụ dùng chung có chứa thành phần phần mềm mô hình. Cung cấp tên của bộ chứa S3 và kiểu máy của bạn:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::/sagemaker//output/model.tar.gz"
        }
    ]
}

Chính sách nội tuyến thứ hai cho phép một vai trò mà chúng tôi tạo sau này sử dụng khóa KMS trong tài khoản dịch vụ dùng chung. Chỉ định ID tài khoản cho tài khoản dịch vụ dùng chung và ID khóa KMS:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1::key/{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
            ]
        }
    ]
}

Cuối cùng, chúng ta cần tạo vai trò IAM cho SageMaker. Vai trò này có AmazonSageMakerFullAccess chính sách kèm theo. Sau đó, chúng tôi đính kèm hai chính sách nội tuyến này với vai trò mà chúng tôi đã tạo. Nếu bạn đang sử dụng vai trò thực thi SageMaker hiện có, hãy đính kèm hai chính sách này với vai trò đó. Để biết hướng dẫn, hãy tham khảo Tạo vai trò và đính kèm chính sách (bảng điều khiển).

Bây giờ chúng ta đã xác định các chính sách của từng tài khoản, hãy sử dụng một ví dụ để xem nó hoạt động như thế nào.

Xây dựng và đào tạo một mô hình bằng cách sử dụng đường dẫn SageMaker

Trước tiên, chúng tôi tạo một quy trình SageMaker trong tài khoản khoa học dữ liệu để tiến hành xử lý dữ liệu, đào tạo mô hình và đánh giá. Chúng tôi sử dụng bộ dữ liệu nhà ở California thu được từ thư viện StatLib. Trong đoạn mã sau, chúng tôi sử dụng tập lệnh tiền xử lý tùy chỉnh preprocess.py để thực hiện một số chuyển đổi tính năng đơn giản, chẳng hạn như chia tỷ lệ tính năng, có thể được tạo bằng cách sử dụng sau máy tính xách tay. Tập lệnh này cũng chia tập dữ liệu thành tập dữ liệu huấn luyện và kiểm tra.

Chúng tôi tạo ra một SKLearnProcessor đối tượng để chạy tập lệnh tiền xử lý này. Trong quy trình SageMaker, chúng tôi tạo một bước xử lý (ProcessingStep) để chạy mã xử lý bằng cách sử dụng SKLearnProcessor. Mã xử lý này được gọi khi đường dẫn SageMaker được khởi tạo. Mã tạo ra các SKLearnProcessorProcessingStep được hiển thị trong đoạn mã sau. Lưu ý rằng tất cả mã trong phần này được chạy trong tài khoản khoa học dữ liệu.

# Useful SageMaker variables - Create a Pipeline session which will lazy init resources
session = PipelineSession()

framework_version = "0.23-1"

# Create SKlearn processor object,
# The object contains information about what instance type to use, the IAM role to use etc.
# A managed processor comes with a preconfigured container, so only specifying version is required.
sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    role=role,
    instance_type=processing_instance_type,
    instance_count=1,
    base_job_name="tf2-california-housing-processing-job",
    sagemaker_session=session
)

# Use the sklearn_processor in a SageMaker pipelines ProcessingStep
step_preprocess_data = ProcessingStep(
    name="Preprocess-California-Housing-Data",
    processor=sklearn_processor,
    inputs=[
        ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test"),
    ],
    code="preprocess.py",
)

Chúng tôi cần một khóa KMS tùy chỉnh để mã hóa mô hình trong khi lưu trữ mô hình đó vào Amazon S3. Xem đoạn mã sau:

kms_client = boto3.client('kms')
response = kms_client.describe_key(
    KeyId='alias/sagemaker/outkey',
)
key_id = response['KeyMetadata']['KeyId']

Để đào tạo mô hình, chúng tôi tạo một đối tượng ước tính TensorFlow. Chúng tôi chuyển cho nó ID khóa KMS cùng với tập lệnh đào tạo của chúng tôi train.py, loại phiên bản đào tạo và số lượng. Chúng tôi cũng tạo ra một TrainingStep sẽ được thêm vào quy trình của chúng tôi và thêm công cụ ước tính TensorFlow vào quy trình đó. Xem đoạn mã sau:

model_path = f"s3://{bucket}/{prefix}/model/"

hyperparameters = {"epochs": training_epochs}
tensorflow_version = "2.4.1"
python_version = "py37"

tf2_estimator = TensorFlow(
    source_dir="code",
    entry_point="train.py",
    instance_type=training_instance_type,
    instance_count=1,
    framework_version=tensorflow_version,
    role=role,
    base_job_name="tf2-california-housing-train",
    output_path=model_path,
    output_kms_key=key_id,
    hyperparameters=hyperparameters,
    py_version=python_version,
    sagemaker_session=session
)

# Use the tf2_estimator in a SageMaker pipelines ProcessingStep.
# NOTE how the input to the training job directly references the output of the previous step.
step_train_model = TrainingStep(
    name="Train-California-Housing-Model",
    estimator=tf2_estimator,
    inputs={
        "train": TrainingInput(
            s3_data=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "test": TrainingInput(
            s3_data=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "test"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    },
)

Ngoài việc đào tạo, chúng tôi cần tiến hành đánh giá mô hình, trong đó chúng tôi sử dụng lỗi bình phương trung bình (MSE) làm chỉ số trong ví dụ này. Các sổ ghi chép trước đó cũng tạo ra evaluate.py, mà chúng tôi sử dụng để đánh giá mô hình của mình bằng MSE. Chúng tôi cũng tạo ra một ProcessingStep để khởi tạo tập lệnh đánh giá mô hình bằng cách sử dụng SKLearnProcessor sự vật. Đoạn mã sau tạo bước này:

from sagemaker.workflow.properties import PropertyFile

# Create SKLearnProcessor object.
# The object contains information about what container to use, what instance type etc.
evaluate_model_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=1,
    base_job_name="tf2-california-housing-evaluate",
    role=role,
    sagemaker_session=session
)

# Create a PropertyFile
# A PropertyFile is used to be able to reference outputs from a processing step, for instance to use in a condition step.
# For more information, visit https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html
evaluation_report = PropertyFile(
    name="EvaluationReport", output_name="evaluation", path="evaluation.json"
)

# Use the evaluate_model_processor in a SageMaker pipelines ProcessingStep.
step_evaluate_model = ProcessingStep(
    name="Evaluate-California-Housing-Model",
    processor=evaluate_model_processor,
    inputs=[
        ProcessingInput(
            source=step_train_model.properties.ModelArtifacts.S3ModelArtifacts,
            destination="/opt/ml/processing/model",
        ),
        ProcessingInput(
            source=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "test"
            ].S3Output.S3Uri,
            destination="/opt/ml/processing/test",
        ),
    ],
    outputs=[
        ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
    ],
    code="evaluate.py",
    property_files=[evaluation_report],
)

Sau khi đánh giá mô hình, chúng tôi cũng cần một bước để đăng ký mô hình của mình với cơ quan đăng ký mô hình, nếu hiệu suất của mô hình đáp ứng các yêu cầu. Điều này được thể hiện trong đoạn mã sau bằng cách sử dụng RegisterModel bươc. Ở đây, chúng tôi cần chỉ định gói mô hình mà chúng tôi đã khai báo trong tài khoản dịch vụ dùng chung. Thay thế gói Khu vực, tài khoản và kiểu máy bằng các giá trị của bạn. Tên mô hình được sử dụng ở đây là modeltest, nhưng bạn có thể sử dụng bất kỳ tên nào bạn chọn.

# Create ModelMetrics object using the evaluation report from the evaluation step
# A ModelMetrics object contains metrics captured from a model.
model_metrics = ModelMetrics(
    model_statistics=MetricsSource(
        s3_uri=evaluation_s3_uri,
        content_type="application/json",
    )
)

# Create a RegisterModel step, which registers the model with SageMaker Model Registry.
model = Model(
    image_uri=tf2_estimator.training_image_uri(),
    model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
    source_dir=tf2_estimator.source_dir,
    entry_point=tf2_estimator.entry_point,
    role=role_arn,
    sagemaker_session=session
)

model_registry_args = model.register(
    content_types=['text/csv'],
    response_types=['application/json'],
    inference_instances=['ml.t2.medium', 'ml.m5.xlarge'],
    transform_instances=['ml.m5.xlarge'],
    model_package_group_name=model_package_group_name,
    approval_status='PendingManualApproval',
    model_metrics=model_metrics
)

 step_register_model= ModelStep(
    name='RegisterModel',
    step_args=model_registry_args
)

Chúng tôi cũng cần tạo các tạo phẩm mô hình để có thể triển khai nó (sử dụng tài khoản khác). Để tạo mô hình, chúng ta tạo một CreateModelStep, như được hiển thị trong đoạn mã sau:

from sagemaker.inputs import CreateModelInput 
from sagemaker.workflow.model_step import ModelStep 
step_create_model = ModelStep( 
    name="Create-California-Housing-Model", 
    step_args=model.create(instance_type="ml.m5.large",accelerator_type="ml.eia1.medium"),
 )

Thêm điều kiện vào đường ống được thực hiện với một ConditionStep. Trong trường hợp này, chúng tôi chỉ muốn đăng ký phiên bản mô hình mới với cơ quan đăng ký mô hình nếu mô hình mới đáp ứng điều kiện về độ chính xác. Xem đoạn mã sau:

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import (
    ConditionStep,
    JsonGet,
)

# Create accuracy condition to ensure the model meets performance requirements.
# Models with a test accuracy lower than the condition will not be registered with the model registry.
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step=step_evaluate_model,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value",
    ),
    right=accuracy_mse_threshold,
)

# Create a SageMaker Pipelines ConditionStep, using the preceding condition.
# Enter the steps to perform if the condition returns True / False.
step_cond = ConditionStep(
    name="MSE-Lower-Than-Threshold-Condition",
    conditions=[cond_lte],
    if_steps=[step_register_model, step_create_model],
    else_steps=[step_higher_mse_send_email_lambda],
)

Cuối cùng, chúng tôi muốn sắp xếp tất cả các bước quy trình để quy trình có thể được khởi tạo:

from sagemaker.workflow.pipeline import Pipeline

# Create a SageMaker Pipeline.
# Each parameter for the pipeline must be set as a parameter explicitly when the pipeline is created.
# Also pass in each of the preceding steps.
# Note that the order of execution is determined from each step's dependencies on other steps,
# not on the order they are passed in.
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_type,
        training_instance_type,
        input_data,
        training_epochs,
        accuracy_mse_threshold,
        endpoint_instance_type,
    ],
    steps=[step_preprocess_data, step_train_model, step_evaluate_model, step_cond],
)

Triển khai phiên bản mô hình từ một tài khoản khác

Giờ đây, mô hình đã được đăng ký trong tài khoản dịch vụ dùng chung, chúng ta cần triển khai vào các tài khoản khối lượng công việc của mình bằng cách sử dụng đường dẫn CI/CD trong tài khoản triển khai. Chúng tôi đã định cấu hình vai trò và chính sách ở bước trước. Chúng tôi sử dụng gói mô hình ARN để triển khai mô hình từ sổ đăng ký mô hình. Đoạn mã sau chạy trong tài khoản triển khai và được sử dụng để triển khai các mô hình đã được phê duyệt cho QA và sản phẩm:

from sagemaker import ModelPackage
from time import gmtime, strftime

sagemaker_session = sagemaker.Session(boto_session=sess)

model_package_arn = 'arn:aws:sagemaker:::/modeltest/version_number'
model = ModelPackage(role=role, 
                     model_package_arn=model_package_arn, 
                     sagemaker_session=sagemaker_session)
model.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge')

Kết luận

Trong bài đăng này, chúng tôi đã trình bày cách thiết lập các chính sách cần thiết để thiết lập nhiều tài khoản cho ML dựa trên nguyên tắc đặc quyền tối thiểu. Sau đó, chúng tôi trình bày quy trình xây dựng và huấn luyện các mô hình trong tài khoản khoa học dữ liệu. Cuối cùng, chúng tôi đã sử dụng quy trình CI/CD trong tài khoản triển khai để triển khai phiên bản mới nhất của các mô hình đã được phê duyệt cho các tài khoản QA và sản xuất. Ngoài ra, bạn có thể xem lịch sử triển khai của các mô hìnhxây dựng trình kích hoạt in Xây dựng mã AWS.

Bạn có thể chia tỷ lệ các khái niệm trong bài đăng này để lưu trữ các mô hình trong Đám mây điện toán đàn hồi Amazon (Amazon EC2) hoặc Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS), cũng như xây dựng quy trình suy luận hàng loạt.

Để tìm hiểu thêm về việc có các tài khoản riêng biệt để xây dựng các mô hình ML trong AWS, hãy xem Các phương pháp hay nhất dành cho Đơn vị tổ chức với Tổ chức AWSCập nhật mô hình một cách an toàn trong sản xuất.


Về các tác giả

Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Sandeep Verma là Kiến trúc sư tạo mẫu cấp cao của AWS. Anh ấy thích tìm hiểu sâu về những thách thức của khách hàng và xây dựng nguyên mẫu cho khách hàng để tăng tốc đổi mới. Anh ấy có kiến ​​thức nền tảng về AI/ML, người sáng lập Kiến thức mới và nói chung là đam mê công nghệ. Khi rảnh rỗi, anh ấy thích đi du lịch và trượt tuyết cùng gia đình.

Mani Khanuja  Mani Khanuja là Chuyên gia Trí tuệ Nhân tạo và Học máy SA tại Amazon Web Services (AWS). Cô ấy giúp khách hàng sử dụng máy học để giải quyết các thách thức kinh doanh của họ bằng AWS. Cô dành phần lớn thời gian của mình để đi sâu và dạy khách hàng về các dự án AI / ML liên quan đến thị giác máy tính, xử lý ngôn ngữ tự nhiên, dự báo, ML ở rìa và hơn thế nữa. Cô ấy rất đam mê ML, do đó, cô ấy đã tạo ra phòng thí nghiệm của riêng mình với bộ dụng cụ tự lái và dây chuyền sản xuất nguyên mẫu, nơi cô ấy dành nhiều thời gian rảnh rỗi của mình.

Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Saumitra Vikram là Nhà phát triển phần mềm trong nhóm Amazon SageMaker và có trụ sở tại Chennai, Ấn Độ. Ngoài công việc, anh ấy thích dành thời gian chạy bộ, leo núi và đạp xe qua dãy Himalaya.

Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Sreedevi Srinivasan là một nhà lãnh đạo kỹ thuật trong AWS SageMaker. Cô ấy đam mê và hào hứng về việc kích hoạt ML như một nền tảng được thiết lập để thay đổi cuộc sống hàng ngày. Cô ấy hiện đang tập trung vào Cửa hàng tính năng SageMaker. Khi rảnh rỗi, cô thích dành thời gian cho gia đình.

Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Rupinder Grewal là Kiến trúc sư Giải pháp Chuyên gia Sr Ai / ML của AWS. Anh ấy hiện đang tập trung vào việc phục vụ người mẫu và MLOps trên SageMaker. Trước khi đảm nhiệm vai trò này, anh ấy đã từng làm việc với tư cách là Kỹ sư máy học xây dựng và lưu trữ các mô hình. Ngoài giờ làm việc, anh ấy thích chơi tennis và đạp xe trên những con đường mòn trên núi.

Xây dựng quy trình làm việc MLOps nhiều tài khoản bằng cách sử dụng sổ đăng ký mô hình Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Farooq Sabir là Kiến trúc sư giải pháp chuyên gia trí tuệ nhân tạo và học máy cao cấp tại AWS. Ông có bằng Tiến sĩ và Thạc sĩ về Kỹ thuật Điện của Đại học Texas ở Austin và bằng Thạc sĩ Khoa học Máy tính của Viện Công nghệ Georgia. Tại AWS, anh giúp khách hàng hình thành và giải quyết các vấn đề kinh doanh của họ trong khoa học dữ liệu, máy học, thị giác máy tính, trí tuệ nhân tạo, tối ưu hóa số học và các lĩnh vực liên quan. Anh ấy có hơn 16 năm kinh nghiệm làm việc và cũng là giảng viên trợ giảng tại Đại học Texas ở Dallas, nơi anh ấy giảng dạy một khóa học sau đại học về Học máy ứng dụng. Có trụ sở tại Dallas, Texas, anh và gia đình thích đi du lịch và thực hiện những chuyến đi đường dài.

Dấu thời gian:

Thêm từ Học máy AWS