با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai.

با استفاده از رجیستری مدل Amazon SageMaker یک گردش کار MLOps بین حسابی ایجاد کنید

یک خط لوله CI/CD که به خوبی طراحی شده باشد، برای مقیاس‌بندی مؤثر گردش کار توسعه نرم‌افزار ضروری است. هنگام طراحی خطوط لوله CI/CD تولید، AWS توصیه می‌کند از چندین حساب برای جداسازی منابع، مهار تهدیدات امنیتی و ساده‌سازی صورت‌حساب استفاده کنید و خطوط لوله علم داده تفاوتی ندارند. در AWS، ما به نوآوری برای ساده‌سازی گردش کار MLOps ادامه می‌دهیم.

در این پست، برخی از ویژگی های جدیدتر اکانت متقابل را مورد بحث قرار می دهیم آمازون SageMaker که به شما امکان اشتراک گذاری و مدیریت بهتر گروه های مدل و همچنین مدیریت نسخه های مدل را می دهد. برای مثال ساختار حساب که باید دنبال شود بهترین شیوه های واحد سازمانی برای میزبانی مدل‌ها با استفاده از نقاط پایانی SageMaker در سراسر حساب‌ها، به MLOps بار کار ارکستراتور.

بررسی اجمالی راه حل

نمودار زیر معماری رجیستری مدل مشترک ما را نشان می دهد.

برخی از مواردی که در معماری قبلی باید به آنها توجه کرد:

مراحل زیر با نمودار مطابقت دارد:

  1. یک دانشمند داده، مدلی را از حساب علم داده در رجیستری مدل سرویس‌های مشترک SageMaker ثبت می‌کند. PendingManualApproval حالت. مصنوع مدل در حساب سرویس های مشترک ایجاد می شود سرویس ذخیره سازی ساده آمازون سطل (Amazon S3).
  2. پس از ثبت نسخه مدل جدید، شخصی که اختیار تأیید مدل را بر اساس معیارها دارد، باید مدل را تأیید یا رد کند.
  3. پس از تایید مدل، خط لوله CI/CD در حساب استقرار است برای استقرار فعال شد جزئیات مدل به روز شده در حساب QA و به روز رسانی مرحله به عنوان QA.
  4. پس از گذراندن مراحل آزمایش، می توانید انتخاب کنید که یک مرحله تأیید دستی در فرآیند CI/CD خود داشته باشید یا خط لوله CI/CD خود را مستقیماً مدل را برای تولید مستقر کرده و مرحله را به عنوان Prod به روز کنید.
  5. محیط تولید به مدل و کد تایید شده ارجاع می دهد، شاید این کار را انجام دهد تست A/B در تولید. در صورت ممیزی یا هر مشکلی در مدل می توانید استفاده کنید Amazon SageMaker ML Lineage Tracking. اطلاعات مربوط به مراحل یک گردش کار یادگیری ماشینی (ML) از آماده سازی داده تا استقرار مدل را ایجاد و ذخیره می کند. با اطلاعات ردیابی، می‌توانید مراحل گردش کار را بازتولید کنید، مدل و مجموعه داده را ردیابی کنید، و استانداردهای حاکمیت و ممیزی مدل را ایجاد کنید.

در طول کل فرآیند، رجیستری مدل مشترک، نسخه های مدل قدیمی را حفظ می کند. این به تیم اجازه می دهد تا تغییرات را به عقب برگرداند یا حتی میزبانی کند انواع تولید.

پیش نیازها

مطمئن شوید که پیش نیازهای زیر را دارید:

  • ساختار چند حسابی تدارک دیده شده - برای دستورالعمل، نگاه کنید بهترین روش ها برای واحدهای سازمانی با سازمان های AWS. برای اهداف این وبلاگ ما از حساب های زیر استفاده می کنیم:
    • حساب علم داده - حسابی که در آن دانشمندان داده به داده های آموزشی دسترسی دارند و مدل ها را ایجاد می کنند.
    • حساب خدمات مشترک - یک حساب مرکزی برای ذخیره سازی مصنوعات مدل (همانطور که در نمودار معماری نشان داده شده است) تا در حساب های بار کاری مختلف قابل دسترسی باشد.
    • حساب استقرار - حسابی که مسئول اعمال تغییرات در حساب های مختلف است.
    • حساب های حجم کاری – اینها معمولاً محیط های QA و prod هستند که در آن مهندسان نرم افزار قادر به ساخت برنامه های کاربردی برای مصرف مدل ML هستند.
  • یک حساب استقرار با مجوزهای مناسب – برای کسب اطلاعات بیشتر در مورد بهترین شیوه ها با ساختار OU چند حسابی، مراجعه کنید استقرار OU. این حساب وظیفه دارد تا حساب های حجم کار را به مدل مورد نظر در رجیستری مدل حساب خدمات اشتراکی نشان دهد.

سیاست های بین حسابی را تعریف کنید

در پیروی از اصل حداقل امتیاز، ابتدا باید سیاست‌های منابع بین حساب‌ها را به منابع سرویس‌های مشترک اضافه کنیم تا از حساب‌های دیگر دسترسی داشته باشیم.

از آنجایی که مصنوعات مدل در سطل S3 حساب خدمات مشترک ذخیره می‌شوند، حساب علم داده نیاز به دسترسی خواندن/نوشتن Amazon S3 برای ارسال مدل‌های آموزش‌دیده به Amazon S3 دارد. کد زیر این سیاست را نشان می‌دهد، اما هنوز آن را به حساب سرویس‌های مشترک اضافه نکنید:

#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:::/*'
    }]
}

حساب استقرار فقط باید به سطل S3 دسترسی خواندن داشته باشد تا بتواند از مصنوعات مدل برای استقرار در نقاط پایانی SageMaker استفاده کند. همچنین باید خط‌مشی زیر را به سطل سرویس‌های مشترک S3 پیوست کنیم:

#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:::/*'
    }]
}

ما هر دو سیاست را ترکیب می کنیم تا خط مشی نهایی زیر را بدست آوریم. پس از جایگزینی شناسه‌های حساب مناسب، این خط‌مشی را در حساب خدمات مشترک ایجاد کنید:

{
  "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:::/*"    
    }
  ]
}

برای اینکه بتواند یک مدل ایجاد شده در یک حساب دیگر را مستقر کند، کاربر باید نقشی داشته باشد که به اقدامات SageMaker دسترسی داشته باشد، مانند نقشی با AmazonSageMakerFullAccess سیاست مدیریت شده رجوع شود به یک نسخه مدل را از یک حساب دیگر مستقر کنید برای جزئیات بیشتر

ما باید گروه مدلی را تعریف کنیم که شامل نسخه های مدلی است که می خواهیم اجرا کنیم. همچنین، ما می خواهیم مجوزهایی را به حساب داده علم اعطا کنیم. این را می توان در مراحل زیر انجام داد. ما به حساب ها به شرح زیر اشاره می کنیم:

  • shared_services_account_id – اکانتی که رجیستری مدل در آن قرار دارد و ما می خواهیم مدل کجا باشد
  • data_science_account_id - حسابی که در آن آموزش خواهیم داد و بنابراین مصنوع مدل واقعی را ایجاد خواهیم کرد
  • deployment_account_id – حسابی که می خواهیم نقطه پایانی این مدل را در آن میزبانی کنیم

ابتدا باید از وجود گروه های بسته مدل اطمینان حاصل کنیم. می توانید از API های Boto3 مانند مثال زیر استفاده کنید یا می توانید از آن استفاده کنید کنسول مدیریت AWS برای ایجاد پکیج مدل رجوع شود به گروه بسته مدل ایجاد کنید برای جزئیات بیشتر این فرض می کند که 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']))

برای مجوزهای این گروه بسته مدل، می توانید یک سند JSON شبیه کد زیر ایجاد کنید. شناسه‌های حساب واقعی و نام گروه بسته مدل را با مقادیر خود جایگزین کنید.

{
  "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//*"    
    }
  ]
}

در نهایت، سیاست را در گروه بسته مدل اعمال کنید. شما نمی توانید این خط مشی را از طریق کنسول با گروه بسته مرتبط کنید. شما به SDK یا نیاز دارید رابط خط فرمان AWS دسترسی (AWS CLI). به عنوان مثال، کد زیر از 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)

سفارشی هم نیاز داریم سرویس مدیریت کلید AWS کلید (AWS KMS) برای رمزگذاری مدل در حین ذخیره آن در آمازون S3. این باید با استفاده از حساب علم داده انجام شود. در کنسول AWS KMS، به مسیر بروید مجوزهای استفاده از کلید را تعریف کنید صفحه در سایر حساب های AWS بخش، را انتخاب کنید یک حساب AWS دیگر اضافه کنید. شماره حساب AWS را برای حساب استقرار وارد کنید. شما از این کلید KMS برای کار آموزش SageMaker استفاده می کنید. اگر کلید KMS را برای کار آموزشی مشخص نکنید، SageMaker به طور پیش‌فرض کلید رمزگذاری سمت سرور Amazon S3 را انتخاب می‌کند. یک کلید رمزگذاری پیش‌فرض سمت سرور Amazon S3 را نمی‌توان با حساب AWS دیگری به اشتراک گذاشت یا از آن استفاده کرد.

خط مشی و مجوزها از این الگو پیروی می کنند:

  • خط مشی Amazon S3 مشخص شده در shared_services_account به حساب داده علم و حساب استقرار مجوز می دهد
  • خط مشی کلید KMS مشخص شده در shared_services_account به حساب داده علم و حساب استقرار مجوز می دهد

ما باید اطمینان حاصل کنیم که حساب سرویس های مشترک و حساب استقرار به تصاویر Docker که برای آموزش مدل استفاده شده است دسترسی دارند. این تصاویر عموماً در حساب‌های AWS میزبانی می‌شوند و اگر قبلاً دسترسی ندارید، سرپرست حساب شما می‌تواند به شما کمک کند تا دسترسی داشته باشید. برای این پست، پس از آموزش مدل، هیچ تصویر داکر سفارشی ایجاد نمی کنیم و بنابراین نیازی به سیاست های خاص آمازون ECR برای تصاویر نداریم.

در حساب های حجم کاری (QA یا prod)، باید دو مورد ایجاد کنیم هویت AWS و مدیریت دسترسی سیاست‌های (IAM) مشابه موارد زیر. اینها هستند سیاست های درون خطی، به این معنی که آنها در یک هویت IAM جاسازی شده اند. این به این حساب ها دسترسی به رجیستری مدل می دهد.

اولین خط مشی درون خطی به نقش اجازه می دهد تا به منبع آمازون S3 در حساب خدمات مشترک که حاوی مصنوع مدل است دسترسی داشته باشد. نام سطل S3 و مدل خود را وارد کنید:

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

دومین خط مشی درون خطی به نقشی که بعداً ایجاد می کنیم، اجازه می دهد تا از کلید KMS در حساب خدمات مشترک استفاده کند. شناسه حساب برای حساب خدمات مشترک و شناسه کلید 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}"
            ]
        }
    ]
}

در نهایت، ما نیاز داریم یک نقش IAM ایجاد کنید برای SageMaker. این نقش دارای AmazonSageMakerFullAccess خط مشی پیوست سپس این دو خط مشی درونی را به نقشی که ایجاد کردیم متصل می کنیم. اگر از یک نقش اجرایی SageMaker موجود استفاده می کنید، این دو خط مشی را به آن نقش پیوست کنید. برای دستورالعمل، مراجعه کنید ایجاد نقش ها و پیوست کردن خط مشی ها (کنسول).

اکنون که خط‌مشی‌های هر حساب را تعریف کرده‌ایم، بیایید از یک مثال برای مشاهده عملکرد آن استفاده کنیم.

با استفاده از خط لوله SageMaker یک مدل بسازید و آموزش دهید

ما ابتدا یک خط لوله SageMaker در حساب علم داده برای انجام پردازش داده ها، آموزش مدل و ارزیابی ایجاد می کنیم. ما از مجموعه داده مسکن کالیفرنیا به دست آمده از کتابخانه StatLib استفاده می کنیم. در قطعه کد زیر از یک اسکریپت پیش پردازش سفارشی استفاده می کنیم preprocess.py برای انجام برخی تبدیل ویژگی های ساده مانند مقیاس بندی ویژگی، که می تواند با استفاده از موارد زیر ایجاد شود دفتر یادداشت. این اسکریپت همچنین مجموعه داده را به مجموعه داده های آموزشی و آزمایشی تقسیم می کند.

ما ایجاد می کنیم SKLearnProcessor شیء برای اجرای این اسکریپت پیش پردازش. در خط لوله SageMaker، ما یک مرحله پردازش ایجاد می کنیم (ProcessingStep) برای اجرای کد پردازش با استفاده از SKLearnProcessor. این کد پردازش زمانی فراخوانی می شود که خط لوله SageMaker مقداردهی اولیه شود. کد ایجاد SKLearnProcessor و ProcessingStep در کد زیر نشان داده شده اند. توجه داشته باشید که تمامی کدهای این قسمت در اکانت علم داده اجرا می شود.

# 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",
)

ما به یک کلید KMS سفارشی برای رمزگذاری مدل در حین ذخیره آن در Amazon S3 نیاز داریم. کد زیر را ببینید:

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

برای آموزش مدل، یک شی برآوردگر TensorFlow ایجاد می کنیم. شناسه کلید KMS را به همراه اسکریپت آموزشی خود به آن ارسال می کنیم train.py، نوع نمونه آموزشی و تعداد. ما همچنین یک را ایجاد می کنیم TrainingStep به خط لوله ما اضافه شود و تخمینگر TensorFlow را به آن اضافه کنید. کد زیر را ببینید:

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",
        ),
    },
)

علاوه بر آموزش، ما نیاز به ارزیابی مدل داریم که برای آن از میانگین مربعات خطا (MSE) به عنوان معیار در این مثال استفاده می کنیم. را نوت بوک قبلی نیز تولید می کند evaluate.py، که برای ارزیابی مدل خود با استفاده از MSE استفاده می کنیم. ما همچنین یک را ایجاد می کنیم ProcessingStep برای مقداردهی اولیه اسکریپت ارزیابی مدل با استفاده از a SKLearnProcessor هدف - شی. کد زیر این مرحله را ایجاد می کند:

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],
)

پس از ارزیابی مدل، در صورتی که عملکرد مدل مطابق با الزامات باشد، به مرحله ای نیز نیاز داریم تا مدل خود را در رجیستری مدل ثبت کنیم. این در کد زیر با استفاده از نشان داده شده است RegisterModel گام. در اینجا باید پکیج مدلی را که در حساب سرویس های اشتراکی اعلام کرده بودیم، مشخص کنیم. منطقه، حساب و بسته مدل را با مقادیر خود جایگزین کنید. نام مدل استفاده شده در اینجا این است modeltest، اما می توانید از هر نام دلخواه خود استفاده کنید.

# 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
)

همچنین باید مصنوعات مدل را ایجاد کنیم تا بتوان آن را مستقر کرد (با استفاده از حساب دیگر). برای ایجاد مدل، a ایجاد می کنیم CreateModelStep، همانطور که در کد زیر نشان داده شده است:

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"),
 )

افزودن شرایط به خط لوله با a انجام می شود ConditionStep. در این حالت، تنها در صورتی می خواهیم نسخه مدل جدید را در رجیستری مدل ثبت کنیم که مدل جدید دارای یک شرط دقت باشد. کد زیر را ببینید:

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],
)

در نهایت، ما می خواهیم تمام مراحل خط لوله را به گونه ای هماهنگ کنیم که خط لوله بتواند مقداردهی اولیه شود:

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],
)

یک نسخه مدل را از یک حساب دیگر مستقر کنید

اکنون که مدل در حساب خدمات مشترک ثبت شده است، باید با استفاده از خط لوله CI/CD در حساب استقرار، در حساب های حجم کاری خود مستقر شویم. ما قبلاً نقش و خط مشی را در مرحله قبلی پیکربندی کرده ایم. ما از بسته مدل ARN برای استقرار مدل از رجیستری مدل استفاده می کنیم. کد زیر در حساب استقرار اجرا می شود و برای استقرار مدل های تایید شده در QA و prod استفاده می شود:

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')

نتیجه

در این پست، نحوه تنظیم خط‌مشی‌های مورد نیاز برای راه‌اندازی چند حساب برای ML را بر اساس اصل حداقل امتیاز نشان دادیم. سپس روند ساخت و آموزش مدل ها را در حساب علم داده نشان دادیم. در نهایت، ما از خط لوله CI/CD در حساب استقرار برای استقرار آخرین نسخه مدل‌های تایید شده در حساب‌های QA و تولید استفاده کردیم. علاوه بر این، شما می توانید مشاهده تاریخچه استقرار مدل ها و ایجاد محرک ها in AWS CodeBuild.

می توانید مفاهیم موجود در این پست را برای میزبانی مدل ها در مقیاس بندی کنید ابر محاسبه الاستیک آمازون (Amazon EC2) یا سرویس الاستیک کوبرنتز آمازون (Amazon EKS)، و همچنین ساخت یک خط لوله استنتاج دسته ای.

برای کسب اطلاعات بیشتر در مورد داشتن حساب‌های جداگانه که مدل‌های ML را در AWS می‌سازند، رجوع کنید بهترین روش ها برای واحدهای سازمانی با سازمان های AWS و به روز رسانی ایمن مدل ها در تولید.


درباره نویسنده

با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai.ساندیپ ورما یک معمار نمونه اولیه با AWS است. او از غواصی عمیق در چالش های مشتری و ساختن نمونه های اولیه برای مشتریان برای سرعت بخشیدن به نوآوری لذت می برد. او پیشینه ای در AI/ML، بنیانگذار New Knowledge، و عموماً علاقه مند به فناوری دارد. او در اوقات فراغت خود عاشق سفر و اسکی با خانواده است.

مانی خانوجه  مانی خانوجه یک متخصص هوش مصنوعی و یادگیری ماشین SA در خدمات وب آمازون (AWS) است. او به مشتریانی که از یادگیری ماشینی استفاده می کنند کمک می کند تا چالش های تجاری خود را با استفاده از AWS حل کنند. او بیشتر وقت خود را صرف غواصی عمیق و آموزش به مشتریان در پروژه های AI/ML مرتبط با بینایی کامپیوتر، پردازش زبان طبیعی، پیش بینی، ML در لبه و غیره می کند. او علاقه زیادی به ML در لبه دارد، بنابراین، او آزمایشگاه خود را با کیت خودران و خط تولید تولید نمونه اولیه ایجاد کرده است، جایی که زمان آزاد خود را در آن سپری می کند.

با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai.ساومیترا ویکرام یک توسعه دهنده نرم افزار در تیم آمازون SageMaker است و در چنای، هند مستقر است. خارج از محل کار، او عاشق دویدن، پیاده روی و موتور سواری در هیمالیا است.

با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai.سریدوی سرینیواسان یک رهبر مهندسی در AWS SageMaker است. او در مورد فعال کردن ML به عنوان پلتفرمی که قرار است زندگی روزمره را متحول کند، مشتاق و هیجان زده است. او در حال حاضر بر روی فروشگاه ویژگی SageMaker تمرکز دارد. او در اوقات فراغت خود دوست دارد با خانواده خود وقت بگذراند.

با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai. روپیند گروال یک معمار راه حل های تخصصی Sr Ai/ML با AWS است. او در حال حاضر روی ارائه مدل ها و MLO ها در SageMaker تمرکز دارد. قبل از این نقش، او به عنوان مهندس یادگیری ماشین، مدل‌های ساخت و میزبانی کار کرده است. خارج از محل کار او از بازی تنیس و دوچرخه سواری در مسیرهای کوهستانی لذت می برد.

با استفاده از رجیستری مدل Amazon SageMaker، یک گردش کار MLOps متقابل حسابی ایجاد کنید. جستجوی عمودی Ai.فاروق صابر یک معمار ارشد راه حل های متخصص هوش مصنوعی و یادگیری ماشین در AWS است. او دارای مدرک دکتری و کارشناسی ارشد در مهندسی برق از دانشگاه تگزاس در آستین و کارشناسی ارشد در علوم کامپیوتر از موسسه فناوری جورجیا است. او در AWS به مشتریان کمک می کند تا مشکلات تجاری خود را در علم داده، یادگیری ماشین، بینایی کامپیوتر، هوش مصنوعی، بهینه سازی عددی و حوزه های مرتبط فرموله و حل کنند. او بیش از 16 سال تجربه کاری دارد و همچنین یکی از اعضای هیئت علمی دانشگاه تگزاس در دالاس است، جایی که یک دوره تحصیلات تکمیلی در مورد یادگیری ماشین کاربردی تدریس می کند. او و خانواده اش که در دالاس، تگزاس مستقر هستند، عاشق سفر و سفرهای طولانی جاده ای هستند.

تمبر زمان:

بیشتر از آموزش ماشین AWS