בנה זרימת עבודה של 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 בחשבון הפריסה הוא מופעל לפריסה את פרטי הדגם המעודכנים בחשבון 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 כדי לדחוף מודלים מאומנים לאמזון 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 bucket, כדי שיוכל להשתמש בחפצי המודל כדי לפרוס לנקודות קצה של 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 – החשבון שבו נתאמן ולכן ניצור את חפץ הדגם בפועל
  • 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, ומנהל החשבון שלך יכול לעזור לך לקבל גישה, אם אין לך עדיין גישה. עבור פוסט זה, אנו לא יוצרים תמונות 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 לבצע טרנספורמציה פשוטה של ​​תכונה כגון קנה מידה של תכונה, שניתן ליצור באמצעות הפעולות הבאות מחברה. סקריפט זה גם מפצל את מערך הנתונים למערכי נתונים להדרכה ובדיקה.

אנו יוצרים a 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 מותאם אישית כדי להצפין את הדגם בזמן אחסונו באמזון 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 כדי לפרוס את המודל ממרשם המודלים. הקוד הבא פועל בחשבון הפריסה ומשמש לפריסת מודלים מאושרים ל-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.

אתה יכול להתאים את המושגים בפוסט הזה כדי לארח בהם דגמים ענן מחשוב אלסטי של אמזון (אמזון EC2) או שירות קוברנט של אמזון (Amazon EKS), כמו גם לבנות צינור מסקנות אצווה.

למידע נוסף על קיום חשבונות נפרדים הבונים מודלים של ML ב-AWS, ראה שיטות עבודה מומלצות ליחידות ארגוניות עם ארגוני AWS ו עדכון בטוח של דגמים בייצור.


על הכותבים

בנה זרימת עבודה של MLOps חוצה חשבונות באמצעות רישום המודל של Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.סנדיפ ורמה הוא אדריכל אב טיפוס האב עם AWS. הוא נהנה לצלול לעומק אתגרי הלקוחות ולבנות אבות טיפוס ללקוחות כדי להאיץ את החדשנות. יש לו רקע ב-AI/ML, מייסד New Knowledge, ובאופן כללי נלהב מטכנולוגיה. בזמנו הפנוי הוא אוהב לטייל ולעשות סקי עם משפחתו.

מני חנוג'ה  מני חנוג'ה הינה מומחית לבינה מלאכותית ולמידת מכונה SA ב- Amazon Web Services (AWS). היא עוזרת ללקוחות המשתמשים בלימוד מכונה כדי לפתור את האתגרים העסקיים שלהם באמצעות ה- AWS. היא מבלה את רוב זמנה בצלילה עמוקה ובהוראת לקוחות בפרויקטים של AI / ML הקשורים בראייה ממוחשבת, עיבוד שפה טבעית, חיזוי, ML בקצה ועוד. היא נלהבת מ- ML בקצה, ולכן יצרה מעבדה משלה עם ערכת נהיגה עצמית ופס ייצור של אב-טיפוס, שם היא מבלה הרבה מזמנה הפנוי.

בנה זרימת עבודה של MLOps חוצה חשבונות באמצעות רישום המודל של Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.סומיטרה ויקראם הוא מפתח תוכנה בצוות אמזון SageMaker ובסיסו בצ'נאי, הודו. מחוץ לעבודה, הוא אוהב לבלות זמן בריצה, טרקים ורכיבה על אופניים בהרי ההימלאיה.

בנה זרימת עבודה של MLOps חוצה חשבונות באמצעות רישום המודל של Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.Sreedevi Srinivasan הוא מוביל הנדסי ב-AWS SageMaker. היא נלהבת ונרגשת לאפשר ML כפלטפורמה שאמורה לשנות את חיי היומיום. כיום היא מתמקדת בחנות התכונות של SageMaker. בזמנה הפנוי היא אוהבת לבלות עם משפחתה.

בנה זרימת עבודה של MLOps חוצה חשבונות באמצעות רישום המודל של Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי. רופנדר גרוואל הוא אדריכל פתרונות מומחה Sr Ai/ML עם AWS. כיום הוא מתמקד בהגשת דגמים ו-MLOps ב- SageMaker. לפני תפקיד זה עבד כמהנדס למידת מכונה בבניית ואירוח מודלים. מחוץ לעבודה הוא נהנה לשחק טניס ולרכוב על אופניים בשבילי הרים.

בנה זרימת עבודה של MLOps חוצה חשבונות באמצעות רישום המודל של Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.פארוק סאביר הוא ארכיטקט פתרונות בכיר בבינה מלאכותית ולמידת מכונה ב-AWS. הוא בעל תואר דוקטור ותואר שני בהנדסת חשמל מאוניברסיטת טקסס באוסטין ותואר שני במדעי המחשב מהמכון הטכנולוגי של ג'ורג'יה. ב-AWS הוא עוזר ללקוחות לגבש ולפתור את הבעיות העסקיות שלהם במדעי הנתונים, למידת מכונה, ראייה ממוחשבת, בינה מלאכותית, אופטימיזציה מספרית ותחומים קשורים. יש לו למעלה מ-16 שנות ניסיון בעבודה והוא גם חבר סגל נלווה באוניברסיטת טקסס בדאלאס, שם הוא מלמד קורס לתואר שני בנושא למידת מכונה יישומית. ממוקם בדאלאס, טקסס, הוא ומשפחתו אוהבים לטייל ולעשות נסיעות ארוכות.

בול זמן:

עוד מ למידת מכונות AWS