أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker

يعد خط أنابيب CI / CD المصمم جيدًا أمرًا ضروريًا لتوسيع نطاق سير عمل تطوير البرامج بشكل فعال. عند تصميم خطوط إنتاج CI / CD ، توصي AWS بالاستفادة من حسابات متعددة لعزل الموارد ، واحتواء التهديدات الأمنية وتبسيط الفواتير ، ولا تختلف خطوط أنابيب علوم البيانات. في AWS ، نواصل الابتكار لتبسيط سير عمل MLOps.

في هذا المنشور ، نناقش بعض الميزات الجديدة عبر الحسابات لـ الأمازون SageMaker تتيح لك مشاركة مجموعات النماذج وإدارتها بشكل أفضل بالإضافة إلى إدارة إصدارات النماذج. للحصول على مثال هيكل الحساب لمتابعة أفضل ممارسات الوحدة التنظيمية لاستضافة النماذج باستخدام نقاط نهاية SageMaker عبر الحسابات ، راجع MLOps منظم عبء العمل.

حل نظرة عامة

يوضح الرسم التخطيطي التالي بنية سجل النموذج المشترك الخاصة بنا.

بعض الأشياء التي يجب ملاحظتها في العمارة السابقة:

تتوافق الخطوات التالية مع الرسم التخطيطي:

  1. يقوم عالم البيانات بتسجيل نموذج من حساب علم البيانات في سجل نموذج الخدمات المشتركة SageMaker في ملف PendingManualApproval حالة. يتم إنشاء الأداة النموذجية في حساب الخدمات المشتركة خدمة تخزين أمازون البسيطة دلو (أمازون S3).
  2. عند تسجيل إصدار نموذج جديد ، يجب على شخص لديه سلطة الموافقة على النموذج بناءً على المقاييس الموافقة على النموذج أو رفضه.
  3. بعد الموافقة على النموذج ، يكون خط أنابيب CI / CD في حساب النشر تم إطلاقه للنشر تفاصيل النموذج المحدّث في حساب ضمان الجودة وتحديث المرحلة باسم ضمان الجودة.
  4. عند اجتياز عملية الاختبار ، يمكنك إما اختيار الحصول على خطوة موافقة يدوية ضمن عملية CI / CD أو جعل خط أنابيب CI / CD الخاص بك ينشر النموذج مباشرةً للإنتاج وتحديث المرحلة كـ Prod.
  5. تشير بيئة الإنتاج إلى النموذج والكود المعتمدين ، وربما تقوم بعمل اختبار A / B في الإنتاج. في حالة وجود تدقيق أو أي مشكلة في النموذج ، يمكنك استخدام تتبع نسب Amazon SageMaker ML. يقوم بإنشاء وتخزين معلومات حول خطوات سير عمل التعلم الآلي (ML) من إعداد البيانات إلى نشر النموذج. باستخدام معلومات التتبع ، يمكنك إعادة إنتاج خطوات سير العمل ، وتتبع النموذج ونسب مجموعة البيانات ، وإنشاء معايير إدارة النموذج والتدقيق.

طوال العملية برمتها ، يحتفظ سجل النموذج المشترك بإصدارات الطراز الأقدم. هذا يسمح للفريق بالتراجع عن التغييرات ، أو حتى الاستضافة متغيرات الإنتاج.

المتطلبات الأساسية المسبقة

تأكد من توفر لديك المتطلبات الأساسية التالية:

  • هيكل متعدد الحسابات متوفر - للحصول على التعليمات ، انظر أفضل الممارسات للوحدات التنظيمية مع مؤسسات AWS. لأغراض هذه المدونة ، فإننا نستفيد من الحسابات التالية:
    • حساب علوم البيانات - حساب حيث يمكن لعلماء البيانات الوصول إلى بيانات التدريب وإنشاء النماذج.
    • حساب الخدمات المشتركة - حساب مركزي لتخزين القطع الأثرية للنموذج (كما هو موضح في الرسم التخطيطي للهندسة المعمارية) ليتم الوصول إليه عبر حسابات عبء العمل المختلفة.
    • حساب النشر - حساب مسؤول عن نشر التغييرات على الحسابات المختلفة.
    • حسابات عبء العمل - هذه هي عادة بيئات ضمان الجودة و 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 السياسة المدارة. تشير إلى قم بنشر إصدار نموذج من حساب مختلف للحصول على تفاصيل إضافية.

نحتاج إلى تحديد مجموعة النماذج التي تحتوي على إصدارات النموذج التي نريد نشرها. أيضًا ، نريد منح أذونات لحساب علوم البيانات. يمكن تحقيق ذلك في الخطوات التالية. نشير إلى الحسابات على النحو التالي:

  • معرف_الخدمات_المشتركة_الحساب - الحساب حيث يوجد نموذج التسجيل وأين نريد أن يكون النموذج
  • data_science_account_id - الحساب الذي سنقوم بالتدريب فيه وبالتالي إنشاء الأداة الفعلية للنموذج
  • نشر_حساب_المعرّف - الحساب الذي نريد استضافة نقطة النهاية لهذا النموذج

نحتاج أولاً إلى التأكد من وجود مجموعات حزم النموذج. يمكنك استخدام واجهات برمجة تطبيقات 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) لتشفير النموذج أثناء تخزينه في Amazon 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 ، ويمكن لمسؤول حسابك مساعدتك في الوصول ، إذا لم يكن لديك حق الوصول بالفعل. بالنسبة إلى هذا المنشور ، لا ننشئ أي صور Docker مخصصة بعد تدريب النموذج ، وبالتالي لا نحتاج إلى أي سياسات Amazon ECR محددة للصور.

في حسابات حجم العمل (QA أو prod) ، نحتاج إلى إنشاء اثنين إدارة الهوية والوصول AWS (IAM) سياسات مشابهة لما يلي. هؤلاء هم سياسات مضمنة، مما يعني أنها مضمنة في هوية IAM. هذا يعطي هذه الحسابات الوصول إلى نموذج التسجيل.

تسمح السياسة المضمنة الأولى للدور بالوصول إلى مورد Amazon 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 لتهيئة البرنامج النصي لتقييم النموذج باستخدام ملف 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
)

نحتاج أيضًا إلى إنشاء أدوات النموذج بحيث يمكن نشرها (باستخدام الحساب الآخر). لإنشاء النموذج ، نقوم بإنشاء ملف 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"),
 )

تتم إضافة الشروط إلى خط الأنابيب باستخدام أ 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 لنشر النموذج من سجل النموذج. يتم تشغيل الكود التالي في حساب النشر ويتم استخدامه لنشر النماذج المعتمدة لضمان الجودة و 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 في حساب النشر لنشر أحدث إصدار من النماذج المعتمدة لحسابات ضمان الجودة والإنتاج. بالإضافة إلى ذلك ، يمكنك ذلك عرض تاريخ نشر النماذج و بناء المشغلات in AWS كود البناء.

يمكنك توسيع نطاق المفاهيم الواردة في هذا المنشور لاستضافة النماذج بتنسيق الأمازون الحوسبة المرنة السحابية (Amazon EC2) أو خدمة أمازون مطاطا Kubernetes (Amazon EKS) ، وكذلك إنشاء خط أنابيب للاستدلال الدفعي.

لمعرفة المزيد حول امتلاك حسابات منفصلة تقوم بإنشاء نماذج ML في AWS ، راجع أفضل الممارسات للوحدات التنظيمية مع مؤسسات AWS و تحديث النماذج بأمان في الإنتاج.


حول المؤلف

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.سانديب فيرما هو مهندس نماذج أولية كبير مع AWS. إنه يستمتع بالتعمق في تحديات العملاء وبناء نماذج أولية للعملاء لتسريع الابتكار. لديه خلفية في AI / ML ، مؤسس New Knowledge ، وشغوف بشكل عام بالتكنولوجيا. في أوقات فراغه يحب السفر والتزلج مع عائلته.

ماني خانوجا  ماني خانوجا هو متخصص في الذكاء الاصطناعي وتعلم الآلة SA في Amazon Web Services (AWS). إنها تساعد العملاء على استخدام التعلم الآلي لحل تحديات أعمالهم باستخدام AWS. تقضي معظم وقتها في الغوص بعمق وتعليم العملاء مشاريع الذكاء الاصطناعي / التعلم الآلي المتعلقة برؤية الكمبيوتر ومعالجة اللغة الطبيعية والتنبؤ والتعلم الآلي على الحافة والمزيد. إنها شغوفة بـ ML at edge ، لذلك ، فقد أنشأت مختبرها الخاص مع مجموعة أدوات ذاتية القيادة وخط إنتاج لتصنيع النماذج الأولية ، حيث تقضي الكثير من وقت فراغها.

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.سوميترا فيكرام هو مطور برامج في فريق Amazon SageMaker ومقره في تشيناي ، الهند. خارج العمل ، يحب قضاء الوقت في الجري والرحلات وركوب الدراجة البخارية عبر جبال الهيمالايا.

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.سريديفي سرينيفاسان هي شركة رائدة في مجال الهندسة في AWS SageMaker. إنها متحمسة ومتحمسة لتمكين ML كمنصة تم إعدادها لتغيير الحياة اليومية. تركز حاليًا على متجر SageMaker Feature Store. تحب قضاء الوقت مع أسرتها في أوقات فراغها.

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي. روبيندر جريوال هو مهندس حلول متخصص في الذكاء الإصطناعي / ML مع AWS. يركز حاليًا على خدمة النماذج و MLOps على SageMaker. قبل توليه هذا المنصب ، عمل كمهندس لتعلم الآلة ونماذج البناء والاستضافة. خارج العمل يستمتع بلعب التنس وركوب الدراجات على المسارات الجبلية.

أنشئ سير عمل MLOps عبر الحسابات باستخدام سجل نموذج Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.فاروق صابر هو مهندس حلول متخصص في الذكاء الاصطناعي وتعلم الآلة في AWS. وهو حاصل على درجتي الدكتوراه والماجستير في الهندسة الكهربائية من جامعة تكساس في أوستن ودرجة الماجستير في علوم الكمبيوتر من معهد جورجيا للتكنولوجيا. في AWS ، يساعد العملاء على صياغة مشاكل أعمالهم وحلها في علوم البيانات والتعلم الآلي ورؤية الكمبيوتر والذكاء الاصطناعي والتحسين العددي والمجالات ذات الصلة. لديه أكثر من 16 عامًا من الخبرة في العمل وهو أيضًا عضو هيئة تدريس مساعد في جامعة تكساس في دالاس ، حيث يقوم بتدريس دورة الدراسات العليا في التعلم الآلي التطبيقي. من مقره في دالاس ، تكساس ، يحب هو وعائلته السفر والقيام برحلات طويلة على الطريق.

الطابع الزمني:

اكثر من التعلم الآلي من AWS