Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عی

Amazon SageMaker ماڈل رجسٹری کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں

کسی بھی سافٹ ویئر ڈویلپمنٹ ورک فلو کو مؤثر طریقے سے پیمانہ کرنے کے لیے ایک اچھی طرح سے ڈیزائن کردہ CI/CD پائپ لائن ضروری ہے۔ پروڈکشن CI/CD پائپ لائنز کو ڈیزائن کرتے وقت، AWS وسائل کو الگ تھلگ کرنے، سیکیورٹی کے خطرات پر مشتمل اور بلنگ کو آسان بنانے کے لیے متعدد اکاؤنٹس کا فائدہ اٹھانے کی تجویز کرتا ہے- اور ڈیٹا سائنس پائپ لائنز اس سے مختلف نہیں ہیں۔ AWS میں، ہم MLOps ورک فلو کو آسان بنانے کے لیے اختراعات جاری رکھے ہوئے ہیں۔

اس پوسٹ میں، ہم کراس اکاؤنٹ کی کچھ نئی خصوصیات پر تبادلہ خیال کرتے ہیں۔ ایمیزون سیج میکر جو آپ کو ماڈل گروپس کو بہتر طریقے سے شیئر کرنے اور ان کا نظم کرنے کے ساتھ ساتھ ماڈل ورژن کا نظم کرنے کی اجازت دیتا ہے۔ مثال کے طور پر اکاؤنٹ کے ڈھانچے کی پیروی کرنا ہے۔ تنظیمی یونٹ کے بہترین طریقے تمام اکاؤنٹس میں SageMaker اینڈ پوائنٹس کا استعمال کرتے ہوئے ماڈلز کی میزبانی کرنے کے لیے، رجوع کریں۔ MLOps ورک لوڈ آرکیسٹریٹر.

حل جائزہ

درج ذیل خاکہ ہمارے مشترکہ ماڈل رجسٹری فن تعمیر کو واضح کرتا ہے۔

پچھلے فن تعمیر میں نوٹ کرنے کے لئے کچھ چیزیں:

درج ذیل اقدامات خاکہ کے مطابق ہیں:

  1. ایک ڈیٹا سائنسدان ڈیٹا سائنس اکاؤنٹ سے ایک ماڈل کو مشترکہ خدمات SageMaker ماڈل رجسٹری میں رجسٹر کرتا ہے۔ PendingManualApproval حالت. ماڈل آرٹفیکٹ مشترکہ خدمات کے اکاؤنٹ میں بنایا گیا ہے۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3) بالٹی۔
  2. نئے ماڈل ورژن کی رجسٹریشن پر، میٹرکس کی بنیاد پر ماڈل کو منظور کرنے کا اختیار رکھنے والے شخص کو ماڈل کو منظور یا مسترد کرنا چاہیے۔
  3. ماڈل کی منظوری کے بعد، تعیناتی اکاؤنٹ میں CI/CD پائپ لائن ہے۔ تعینات کرنے کے لئے متحرک کیا QA اکاؤنٹ میں ماڈل کی تازہ ترین تفصیلات اور QA کے طور پر مرحلے کو اپ ڈیٹ کریں۔
  4. ٹیسٹنگ کے عمل کو پاس کرنے پر، آپ یا تو اپنے CI/CD عمل کے اندر دستی منظوری کے مرحلے کا انتخاب کر سکتے ہیں یا اپنی CI/CD پائپ لائن کو براہ راست ماڈل کو پروڈکشن کے لیے تعینات کر سکتے ہیں اور اسٹیج کو پروڈ کے طور پر اپ ڈیٹ کر سکتے ہیں۔
  5. پیداواری ماحول منظور شدہ ماڈل اور کوڈ کا حوالہ دیتا ہے، شاید ایک کر رہا ہو۔ پیداوار میں A/B ٹیسٹ. آڈٹ یا ماڈل کے ساتھ کسی بھی مسئلے کی صورت میں، آپ استعمال کر سکتے ہیں۔ ایمیزون سیج میکر ایم ایل لائنیج ٹریکنگ. یہ ڈیٹا کی تیاری سے لے کر ماڈل کی تعیناتی تک مشین لرننگ (ML) ورک فلو کے مراحل کے بارے میں معلومات تخلیق اور ذخیرہ کرتا ہے۔ ٹریکنگ کی معلومات کے ساتھ، آپ ورک فلو کے مراحل کو دوبارہ تیار کر سکتے ہیں، ماڈل اور ڈیٹاسیٹ نسب کو ٹریک کر سکتے ہیں، اور ماڈل گورننس اور آڈٹ کے معیارات قائم کر سکتے ہیں۔

پورے عمل کے دوران، مشترکہ ماڈل رجسٹری پرانے ماڈل ورژن کو برقرار رکھتی ہے۔ یہ ٹیم کو تبدیلیوں کو واپس لینے، یا میزبانی کرنے کی اجازت دیتا ہے۔ پیداوار کی مختلف حالتیں.

شرائط

یقینی بنائیں کہ آپ کے پاس درج ذیل شرائط ہیں:

  • ایک فراہم کردہ ملٹی اکاؤنٹ ڈھانچہ - ہدایات کے لیے، دیکھیں AWS تنظیموں کے ساتھ تنظیمی اکائیوں کے لیے بہترین طرز عمل. اس بلاگ کے مقاصد کے لیے ہم درج ذیل اکاؤنٹس کا فائدہ اٹھا رہے ہیں:
    • ڈیٹا سائنس اکاؤنٹ - ایک ایسا اکاؤنٹ جہاں ڈیٹا سائنسدانوں کو تربیتی ڈیٹا تک رسائی حاصل ہوتی ہے اور وہ ماڈل بناتے ہیں۔
    • مشترکہ خدمات کا اکاؤنٹ - ماڈل نمونے (جیسا کہ فن تعمیر کے خاکے میں دکھایا گیا ہے) کو ذخیرہ کرنے کے لیے ایک مرکزی اکاؤنٹ جس تک مختلف ورک بوجھ اکاؤنٹس تک رسائی حاصل کی جائے۔
    • تعیناتی اکاؤنٹ - ایک اکاؤنٹ جو مختلف اکاؤنٹس میں تبدیلیاں کرنے کا ذمہ دار ہے۔
    • ورک لوڈ اکاؤنٹس - یہ عام طور پر QA اور پروڈ ماحول ہوتے ہیں جہاں سافٹ ویئر انجینئرز 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:::/*'
    }]
}

ہم مندرجہ ذیل حتمی پالیسی حاصل کرنے کے لیے دونوں پالیسیوں کو یکجا کرتے ہیں۔ مناسب اکاؤنٹ IDs کو تبدیل کرنے کے بعد مشترکہ خدمات کے اکاؤنٹ میں یہ پالیسی بنائیں:

{
  "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 منظم پالیسی. کا حوالہ دیتے ہیں ایک مختلف اکاؤنٹ سے ایک ماڈل ورژن تعینات کریں۔ مزید تفصیلات کے لئے.

ہمیں ماڈل گروپ کی وضاحت کرنے کی ضرورت ہے جس میں وہ ماڈل ورژن ہوں جو ہم تعینات کرنا چاہتے ہیں۔ نیز، ہم ڈیٹا سائنس اکاؤنٹ کو اجازت دینا چاہتے ہیں۔ یہ مندرجہ ذیل مراحل میں پورا کیا جا سکتا ہے۔ ہم مندرجہ ذیل اکاؤنٹس کا حوالہ دیتے ہیں:

  • مشترکہ_خدمات_اکاؤنٹ_آئی ڈی - وہ اکاؤنٹ جہاں ماڈل رجسٹری ہے اور جہاں ہم چاہتے ہیں کہ ماڈل ہو۔
  • ڈیٹا_سائنس_اکاؤنٹ_آئی ڈی - وہ اکاؤنٹ جہاں ہم تربیت حاصل کریں گے اور اس وجہ سے اصل نمونہ تیار کریں گے۔
  • deployment_account_id - وہ اکاؤنٹ جہاں ہم اس ماڈل کے اختتامی نقطہ کی میزبانی کرنا چاہتے ہیں۔

سب سے پہلے ہمیں یہ یقینی بنانا ہوگا کہ ماڈل پیکیج گروپ موجود ہیں۔ آپ Boto3 APIs استعمال کر سکتے ہیں جیسا کہ درج ذیل مثال میں دکھایا گیا ہے، یا آپ استعمال کر سکتے ہیں۔ 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 دستاویز بنا سکتے ہیں۔ اصل اکاؤنٹ IDs اور ماڈل پیکیج گروپ کے نام کو اپنی اقدار سے بدل دیں۔

{
  "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 شناخت میں سرایت کر رہے ہیں۔ یہ ان اکاؤنٹس کو ماڈل رجسٹری تک رسائی فراہم کرتا ہے۔

پہلی ان لائن پالیسی ایک کردار کو مشترکہ خدمات کے اکاؤنٹ میں Amazon S3 وسائل تک رسائی کی اجازت دیتی ہے جس میں ماڈل آرٹفیکٹ ہوتا ہے۔ S3 بالٹی کا نام اور اپنے ماڈل فراہم کریں:

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

دوسری ان لائن پالیسی ایک کردار کی اجازت دیتی ہے، جسے ہم بعد میں تخلیق کرتے ہیں، مشترکہ سروسز اکاؤنٹ میں KMS کلید استعمال کرنے کی اجازت دیتی ہے۔ مشترکہ خدمات کے اکاؤنٹ اور KMS کلیدی ID کے لیے اکاؤنٹ ID کی وضاحت کریں:

{
    "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 کردار بنائیں سیج میکر کے لئے۔ یہ کردار ہے AmazonSageMakerFullAccess پالیسی منسلک. پھر ہم ان دو ان لائن پالیسیوں کو اپنے بنائے ہوئے کردار سے منسلک کرتے ہیں۔ اگر آپ ایک موجودہ SageMaker ایگزیکیوشن رول استعمال کر رہے ہیں، تو ان دو پالیسیوں کو اس رول سے منسلک کریں۔ ہدایات کے لیے، رجوع کریں۔ کردار بنانا اور پالیسیاں منسلک کرنا (کنسول).

اب جب کہ ہم نے ہر اکاؤنٹ کی پالیسیوں کی وضاحت کر دی ہے، آئیے اسے عملی شکل میں دیکھنے کے لیے ایک مثال استعمال کریں۔

SageMaker پائپ لائن کا استعمال کرتے ہوئے ایک ماڈل بنائیں اور تربیت دیں۔

ہم سب سے پہلے ڈیٹا پروسیسنگ، ماڈل ٹریننگ، اور تشخیص کے لیے ڈیٹا سائنس اکاؤنٹ میں SageMaker پائپ لائن بناتے ہیں۔ ہم StatLib لائبریری سے حاصل کردہ کیلیفورنیا ہاؤسنگ ڈیٹاسیٹ استعمال کرتے ہیں۔ درج ذیل کوڈ کے ٹکڑوں میں، ہم ایک حسب ضرورت پری پروسیسنگ اسکرپٹ استعمال کرتے ہیں۔ preprocess.py کچھ آسان فیچر ٹرانسفارمیشن جیسے فیچر اسکیلنگ کو انجام دینے کے لیے، جو درج ذیل کا استعمال کرتے ہوئے تیار کیا جا سکتا ہے۔ نوٹ بک. یہ اسکرپٹ ڈیٹاسیٹ کو ٹریننگ اور ٹیسٹ ڈیٹاسیٹ میں بھی تقسیم کرتا ہے۔

ہم بناتے ہیں a SKLearnProcessor اس پری پروسیسنگ اسکرپٹ کو چلانے پر اعتراض کریں۔ SageMaker پائپ لائن میں، ہم ایک پروسیسنگ مرحلہ بناتے ہیں (ProcessingStep) کا استعمال کرتے ہوئے پروسیسنگ کوڈ کو چلانے کے لیے SKLearnProcessor. اس پروسیسنگ کوڈ کو اس وقت کہا جاتا ہے جب سیج میکر پائپ لائن شروع کی جاتی ہے۔ کوڈ تخلیق کرتا ہے۔ 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",
)

ہمیں ایمیزون S3 میں اسٹور کرتے وقت ماڈل کو انکرپٹ کرنے کے لیے ایک حسب ضرورت KMS کلید کی ضرورت ہے۔ درج ذیل کوڈ دیکھیں:

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

ماڈل کو تربیت دینے کے لیے، ہم ایک TensorFlow تخمینہ لگانے والا آبجیکٹ بناتے ہیں۔ ہم اسے اپنی ٹریننگ اسکرپٹ کے ساتھ KMS کلیدی ID پاس کرتے ہیں۔ 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
)

ہمیں ماڈل نمونے بنانے کی بھی ضرورت ہے تاکہ اسے تعینات کیا جا سکے (دوسرے اکاؤنٹ کا استعمال کرتے ہوئے)۔ ماڈل بنانے کے لیے، ہم ایک بناتے ہیں۔ 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 کوڈ بلڈ۔.

آپ ماڈلز کی میزبانی کے لیے اس پوسٹ میں تصورات کی پیمائش کر سکتے ہیں۔ ایمیزون لچکدار کمپیوٹ کلاؤڈ (ایمیزون ای سی 2) یا ایمیزون لچکدار کبیرنیٹس سروس (ایمیزون ای کے ایس) کے ساتھ ساتھ ایک بیچ انفرنس پائپ لائن تیار کریں۔

علیحدہ اکاؤنٹس رکھنے کے بارے میں مزید جاننے کے لیے جو AWS میں ML ماڈل بناتے ہیں، دیکھیں AWS تنظیموں کے ساتھ تنظیمی اکائیوں کے لیے بہترین طرز عمل اور پروڈکشن میں ماڈلز کو محفوظ طریقے سے اپ ڈیٹ کریں۔.


مصنفین کے بارے میں

Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عیسندیپ ورما AWS کے ساتھ ایک سینئر پروٹو ٹائپنگ آرکیٹیکٹ ہے۔ اسے صارفین کے چیلنجوں میں گہرائی میں غوطہ لگانے اور صارفین کے لیے اختراع کو تیز کرنے کے لیے پروٹو ٹائپ بنانے کا لطف آتا ہے۔ اس کا پس منظر AI/ML میں ہے، نیو نالج کے بانی، اور عام طور پر ٹیک کے بارے میں پرجوش ہیں۔ اپنے فارغ وقت میں، وہ اپنے خاندان کے ساتھ سفر اور اسکیئنگ سے محبت کرتا ہے۔

مانی خانوجا  مانی خانوجا Amazon Web Services (AWS) میں مصنوعی ذہانت اور مشین لرننگ کے ماہر SA ہیں۔ وہ مشین لرننگ استعمال کرنے والے صارفین کو AWS کا استعمال کرتے ہوئے اپنے کاروباری چیلنجوں کو حل کرنے میں مدد کرتی ہے۔ وہ اپنا زیادہ تر وقت گہرائی میں غوطہ لگانے اور صارفین کو کمپیوٹر وژن، قدرتی زبان کی پروسیسنگ، پیشن گوئی، ML at the edge، اور بہت کچھ سے متعلق AI/ML پروجیکٹس پر پڑھانے میں صرف کرتی ہے۔ وہ ML at edge کے بارے میں پرجوش ہے، اس لیے، اس نے سیلف ڈرائیونگ کٹ اور پروٹو ٹائپ مینوفیکچرنگ پروڈکشن لائن کے ساتھ اپنی لیب بنائی ہے، جہاں وہ اپنا بہت سا فارغ وقت گزارتی ہے۔

Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عیسومترا وکرم ایمیزون سیج میکر ٹیم میں ایک سافٹ ویئر ڈویلپر ہے اور چنئی، انڈیا میں مقیم ہے۔ کام سے باہر، وہ ہمالیہ کے ذریعے دوڑنا، ٹریکنگ اور موٹر بائیک چلانا پسند کرتا ہے۔

Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عیسری دیوی سری نواسن AWS SageMaker میں انجینئرنگ لیڈر ہے۔ وہ ML کو ایک ایسے پلیٹ فارم کے طور پر فعال کرنے کے بارے میں پرجوش اور پرجوش ہے جو ہر روز کی زندگیوں کو تبدیل کرنے کے لیے تیار ہے۔ وہ فی الحال سیج میکر فیچر اسٹور پر فوکس کرتی ہے۔ اپنے فارغ وقت میں وہ اپنے خاندان کے ساتھ وقت گزارنا پسند کرتی ہے۔

Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عی روپندر گریوال AWS کے ساتھ ایک Sr Ai/ML ماہر حل آرکیٹیکٹ ہے۔ وہ فی الحال SageMaker پر ماڈلز اور MLOps کی خدمت پر توجہ مرکوز کرتا ہے۔ اس کردار سے پہلے وہ مشین لرننگ انجینئر بلڈنگ اور ہوسٹنگ ماڈل کے طور پر کام کر چکے ہیں۔ کام کے علاوہ وہ ٹینس کھیلنا اور پہاڑی پگڈنڈیوں پر بائیک چلانا پسند کرتا ہے۔

Amazon SageMaker ماڈل رجسٹری PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے کراس اکاؤنٹ MLOps ورک فلو بنائیں۔ عمودی تلاش۔ عیفاروق صابر AWS میں ایک سینئر مصنوعی ذہانت اور مشین لرننگ اسپیشلسٹ سولیوشن آرکیٹیکٹ ہیں۔ انہوں نے آسٹن کی یونیورسٹی آف ٹیکساس سے الیکٹریکل انجینئرنگ میں پی ایچ ڈی اور ایم ایس کی ڈگریاں اور جارجیا انسٹی ٹیوٹ آف ٹیکنالوجی سے کمپیوٹر سائنس میں ایم ایس کی ڈگریاں حاصل کیں۔ AWS میں، وہ صارفین کو ڈیٹا سائنس، مشین لرننگ، کمپیوٹر ویژن، مصنوعی ذہانت، عددی اصلاح اور متعلقہ ڈومینز میں ان کے کاروباری مسائل کی تشکیل اور حل کرنے میں مدد کرتا ہے۔ اس کے پاس 16 سال سے زیادہ کام کا تجربہ ہے اور وہ ڈیلاس کی یونیورسٹی آف ٹیکساس میں منسلک فیکلٹی ممبر بھی ہے، جہاں وہ اپلائیڈ مشین لرننگ پر گریجویٹ کورس پڑھاتا ہے۔ ڈیلاس، ٹیکساس میں مقیم، وہ اور اس کا خاندان سفر کرنا اور طویل سڑک کے سفر کرنا پسند کرتے ہیں۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ