Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.

Amazon SageMaker মডেল রেজিস্ট্রি ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন

যেকোন সফটওয়্যার ডেভেলপমেন্ট ওয়ার্কফ্লোকে কার্যকরভাবে স্কেল করার জন্য একটি ভালভাবে ডিজাইন করা CI/CD পাইপলাইন অপরিহার্য। প্রোডাকশন CI/CD পাইপলাইন ডিজাইন করার সময়, AWS রিসোর্স বিচ্ছিন্ন করতে, নিরাপত্তার হুমকি ধারণ করতে এবং বিলিংকে সহজ করার জন্য একাধিক অ্যাকাউন্ট ব্যবহার করার সুপারিশ করে-এবং ডেটা সায়েন্স পাইপলাইনগুলি আলাদা নয়। AWS-এ, আমরা MLOps কর্মপ্রবাহকে সহজ করার জন্য উদ্ভাবন চালিয়ে যাচ্ছি।

এই পোস্টে, আমরা কিছু নতুন ক্রস-অ্যাকাউন্ট বৈশিষ্ট্য নিয়ে আলোচনা করি আমাজন সেজমেকার যা আপনাকে মডেল গোষ্ঠীগুলিকে আরও ভালভাবে ভাগ এবং পরিচালনা করার পাশাপাশি মডেল সংস্করণগুলি পরিচালনা করতে দেয়৷ অনুসরণ করার জন্য একটি উদাহরণ অ্যাকাউন্ট গঠন সাংগঠনিক ইউনিটের সর্বোত্তম অনুশীলন অ্যাকাউন্ট জুড়ে SageMaker এন্ডপয়েন্ট ব্যবহার করে মডেল হোস্ট করতে, পড়ুন MLOps ওয়ার্কলোড অর্কেস্ট্রেটর.

সমাধান ওভারভিউ

নিম্নলিখিত চিত্রটি আমাদের ভাগ করা মডেল রেজিস্ট্রি আর্কিটেকচারকে চিত্রিত করে।

পূর্ববর্তী আর্কিটেকচারে কিছু বিষয় উল্লেখ্য:

নিম্নলিখিত পদক্ষেপগুলি ডায়াগ্রামের সাথে মিলে যায়:

  1. একজন ডেটা সায়েন্টিস্ট ডেটা সায়েন্স অ্যাকাউন্ট থেকে একটি মডেলকে শেয়ার করা সেবা সেজমেকার মডেল রেজিস্ট্রিতে নিবন্ধন করেন PendingManualApproval অবস্থা. মডেল আর্টিফ্যাক্ট ভাগ করা পরিষেবা অ্যাকাউন্টে তৈরি করা হয় আমাজন সিম্পল স্টোরেজ সার্ভিস (অ্যামাজন এস 3) বালতি।
  2. একটি নতুন মডেল সংস্করণ নিবন্ধনের পরে, মেট্রিক্সের উপর ভিত্তি করে মডেলটিকে অনুমোদন করার কর্তৃত্ব সহ কাউকে মডেলটিকে অনুমোদন বা প্রত্যাখ্যান করা উচিত।
  3. মডেল অনুমোদিত হওয়ার পরে, ডিপ্লোয়মেন্ট অ্যাকাউন্টে CI/CD পাইপলাইন স্থাপন করতে ট্রিগার করেছে QA অ্যাকাউন্টে আপডেট করা মডেলের বিবরণ এবং QA হিসাবে স্টেজ আপডেট করুন।
  4. পরীক্ষার প্রক্রিয়ায় উত্তীর্ণ হওয়ার পরে, আপনি হয় আপনার CI/CD প্রক্রিয়ার মধ্যে একটি ম্যানুয়াল অনুমোদনের পদক্ষেপ বেছে নিতে পারেন অথবা আপনার CI/CD পাইপলাইনটি সরাসরি মডেলটিকে উৎপাদনে নিয়োজিত করতে পারেন এবং পর্যায়টিকে প্রোড হিসাবে আপডেট করতে পারেন।
  5. উৎপাদন পরিবেশ অনুমোদিত মডেল এবং কোড উল্লেখ করে, সম্ভবত একটি করছে উৎপাদনে A/B পরীক্ষা. একটি অডিট বা মডেল সঙ্গে কোনো সমস্যা ক্ষেত্রে, আপনি ব্যবহার করতে পারেন অ্যামাজন সেজমেকার এমএল লিনেজ ট্র্যাকিং. এটি ডেটা প্রস্তুতি থেকে মডেল স্থাপন পর্যন্ত মেশিন লার্নিং (ML) কর্মপ্রবাহের ধাপগুলি সম্পর্কে তথ্য তৈরি করে এবং সঞ্চয় করে। ট্র্যাকিং তথ্যের সাহায্যে, আপনি কর্মপ্রবাহের পদক্ষেপগুলি পুনরুত্পাদন করতে পারেন, মডেল এবং ডেটাসেট বংশ ট্র্যাক করতে পারেন এবং মডেল গভর্নেন্স এবং অডিট মান স্থাপন করতে পারেন।

পুরো প্রক্রিয়া জুড়ে, ভাগ করা মডেল রেজিস্ট্রি পুরানো মডেল সংস্করণ ধরে রাখে। এটি দলটিকে পরিবর্তনগুলি ফিরিয়ে আনতে বা এমনকি হোস্ট করতে দেয়৷ উত্পাদন বৈকল্পিক.

পূর্বশর্ত

নিশ্চিত করুন যে আপনার নিম্নলিখিত পূর্বশর্ত রয়েছে:

  • একটি প্রবিধান মাল্টি-অ্যাকাউন্ট কাঠামো - নির্দেশাবলীর জন্য, দেখুন AWS সংস্থাগুলির সাথে সাংগঠনিক ইউনিটগুলির জন্য সর্বোত্তম অনুশীলন৷. এই ব্লগের উদ্দেশ্যে আমরা নিম্নলিখিত অ্যাকাউন্টগুলি ব্যবহার করছি:
    • ডেটা সায়েন্স অ্যাকাউন্ট - একটি অ্যাকাউন্ট যেখানে ডেটা বিজ্ঞানীরা প্রশিক্ষণের ডেটা অ্যাক্সেস করতে পারে এবং মডেলগুলি তৈরি করে।
    • শেয়ার্ড সার্ভিস অ্যাকাউন্ট - বিভিন্ন কাজের চাপ অ্যাকাউন্ট জুড়ে অ্যাক্সেস করার জন্য মডেল আর্টিফ্যাক্ট (আর্কিটেকচার ডায়াগ্রামে দেখানো হয়েছে) সংরক্ষণ করার জন্য একটি কেন্দ্রীয় অ্যাকাউন্ট।
    • স্থাপনার অ্যাকাউন্ট - বিভিন্ন অ্যাকাউন্টে পরিবর্তন স্থাপনের জন্য দায়ী একটি অ্যাকাউন্ট।
    • কাজের চাপের হিসাব - এগুলি সাধারণত QA এবং প্রোড পরিবেশ যেখানে সফ্টওয়্যার ইঞ্জিনিয়াররা এমএল মডেল ব্যবহার করার জন্য অ্যাপ্লিকেশন তৈরি করতে সক্ষম হন।
  • উপযুক্ত অনুমতি সহ একটি স্থাপনার অ্যাকাউন্ট - একটি মাল্টি-অ্যাকাউন্ট OU কাঠামোর সাথে সর্বোত্তম অনুশীলন সম্পর্কে আরও তথ্যের জন্য, পড়ুন স্থাপনা OU. এই অ্যাকাউন্টটি শেয়ার করা পরিষেবা অ্যাকাউন্টের মডেল রেজিস্ট্রিতে ওয়ার্কলোড অ্যাকাউন্টগুলিকে পছন্দসই মডেলের দিকে নির্দেশ করার জন্য দায়ী৷

ক্রস-অ্যাকাউন্ট নীতি সংজ্ঞায়িত করুন

ন্যূনতম বিশেষাধিকারের নীতি অনুসরণ করার ক্ষেত্রে, প্রথমে আমাদের অন্যান্য অ্যাকাউন্ট থেকে অ্যাক্সেস মঞ্জুর করার জন্য শেয়ার করা পরিষেবার সংস্থানগুলিতে ক্রস-অ্যাকাউন্ট রিসোর্স নীতিগুলি যোগ করতে হবে।

যেহেতু মডেল আর্টিফ্যাক্টগুলি ভাগ করা পরিষেবা অ্যাকাউন্টের S3 বালতিতে সংরক্ষণ করা হয়, তাই ডেটা সায়েন্স অ্যাকাউন্টের অ্যামাজন 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 বালতিতে পড়ার অ্যাক্সেস মঞ্জুর করতে হবে, যাতে এটি 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:::/*"    
    }
  ]
}

একটি ভিন্ন অ্যাকাউন্টে তৈরি একটি মডেল স্থাপন করতে সক্ষম হওয়ার জন্য, ব্যবহারকারীর অবশ্যই একটি ভূমিকা থাকতে হবে যাতে সেজমেকার অ্যাকশনগুলিতে অ্যাক্সেস থাকে, যেমন একটি ভূমিকা সহ AmazonSageMakerFullAccess পরিচালিত নীতি। নির্দেশ করে একটি ভিন্ন অ্যাকাউন্ট থেকে একটি মডেল সংস্করণ স্থাপন করুন অতিরিক্ত বিশদ জন্য।

আমরা মোতায়েন করতে চাই এমন মডেল সংস্করণ ধারণ করে এমন মডেল গ্রুপকে আমাদের সংজ্ঞায়িত করতে হবে। এছাড়াও, আমরা ডেটা সায়েন্স অ্যাকাউন্টে অনুমতি দিতে চাই। এটি নিম্নলিখিত ধাপে সম্পন্ন করা যেতে পারে। আমরা নিম্নলিখিত হিসাবে অ্যাকাউন্টগুলি উল্লেখ করি:

  • শেয়ার করা_পরিষেবা_অ্যাকাউন্ট_আইডি - যে অ্যাকাউন্টে মডেল রেজিস্ট্রি এবং যেখানে আমরা মডেলটি হতে চাই
  • data_science_account_id - যে অ্যাকাউন্টে আমরা প্রশিক্ষণ দেব এবং সেইজন্য প্রকৃত মডেল আর্টিফ্যাক্ট তৈরি করব
  • deployment_account_id - যে অ্যাকাউন্টে আমরা এই মডেলের জন্য শেষ পয়েন্ট হোস্ট করতে চাই

প্রথমে আমাদের মডেল প্যাকেজ গ্রুপ বিদ্যমান আছে তা নিশ্চিত করতে হবে। আপনি নিম্নলিখিত উদাহরণ হিসাবে Boto3 API ব্যবহার করতে পারেন, অথবা আপনি ব্যবহার করতে পারেন এডাব্লুএস ম্যানেজমেন্ট কনসোল মডেল প্যাকেজ তৈরি করতে। নির্দেশ করে মডেল প্যাকেজ গ্রুপ তৈরি করুন আরো বিস্তারিত জানার জন্য. এটি অনুমান করে যে আপনি 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 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 অ্যাকাউন্ট নম্বর লিখুন। আপনি SageMaker প্রশিক্ষণ কাজের জন্য এই KMS কী ব্যবহার করুন। আপনি প্রশিক্ষণ কাজের জন্য একটি KMS কী নির্দিষ্ট না করলে, সেজমেকার ডিফল্ট একটি Amazon S3 সার্ভার-সাইড এনক্রিপশন কী। একটি ডিফল্ট Amazon S3 সার্ভার-সাইড এনক্রিপশন কী অন্য AWS অ্যাকাউন্টের সাথে শেয়ার করা বা ব্যবহার করা যাবে না।

নীতি এবং অনুমতি এই প্যাটার্ন অনুসরণ করে:

  • Amazon S3 নীতিতে উল্লেখ করা হয়েছে shared_services_account ডেটা সায়েন্স অ্যাকাউন্ট এবং ডিপ্লয়মেন্ট অ্যাকাউন্টে অনুমতি দেয়
  • KMS কী নীতিতে উল্লেখ করা হয়েছে shared_services_account ডেটা সায়েন্স অ্যাকাউন্ট এবং ডিপ্লয়মেন্ট অ্যাকাউন্টে অনুমতি দেয়

আমাদের নিশ্চিত করতে হবে যে ভাগ করা পরিষেবা অ্যাকাউন্ট এবং স্থাপনার অ্যাকাউন্টের ডকার চিত্রগুলিতে অ্যাক্সেস রয়েছে যা মডেল প্রশিক্ষণের জন্য ব্যবহৃত হয়েছিল। এই ছবিগুলি সাধারণত AWS অ্যাকাউন্টগুলিতে হোস্ট করা হয়, এবং আপনার অ্যাকাউন্টের প্রশাসক আপনাকে অ্যাক্সেস পেতে সাহায্য করতে পারেন, যদি আপনার ইতিমধ্যে অ্যাক্সেস না থাকে। এই পোস্টের জন্য, আমরা মডেলটিকে প্রশিক্ষণ দেওয়ার পরে কোনও কাস্টম ডকার ছবি তৈরি করি না এবং সেইজন্য আমাদের চিত্রগুলির জন্য কোনও নির্দিষ্ট অ্যামাজন ইসিআর নীতির প্রয়োজন নেই।

কাজের চাপ অ্যাকাউন্টে (QA বা prod), আমাদের দুটি তৈরি করতে হবে এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (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 ভূমিকা তৈরি করুন সেজমেকারের জন্য। এই ভূমিকা আছে AmazonSageMakerFullAccess নীতি সংযুক্ত। তারপরে আমরা এই দুটি ইনলাইন নীতিকে আমাদের তৈরি করা ভূমিকার সাথে সংযুক্ত করি। আপনি যদি একটি বিদ্যমান সেজমেকার এক্সিকিউশন ভূমিকা ব্যবহার করেন, তাহলে সেই ভূমিকার সাথে এই দুটি নীতি সংযুক্ত করুন। নির্দেশাবলীর জন্য, পড়ুন ভূমিকা তৈরি করা এবং নীতিগুলি সংযুক্ত করা (কনসোল).

এখন যেহেতু আমরা প্রতিটি অ্যাকাউন্টের নীতিগুলি সংজ্ঞায়িত করেছি, আসুন এটিকে কার্যকরভাবে দেখতে একটি উদাহরণ ব্যবহার করি৷

SageMaker পাইপলাইন ব্যবহার করে একটি মডেল তৈরি করুন এবং প্রশিক্ষণ দিন

আমরা প্রথমে ডেটা প্রক্রিয়াকরণ, মডেল প্রশিক্ষণ এবং মূল্যায়নের জন্য ডেটা সায়েন্স অ্যাকাউন্টে একটি সেজমেকার পাইপলাইন তৈরি করি। আমরা StatLib লাইব্রেরি থেকে প্রাপ্ত ক্যালিফোর্নিয়া হাউজিং ডেটাসেট ব্যবহার করি। নিম্নলিখিত কোড স্নিপেটে, আমরা একটি কাস্টম প্রিপ্রসেসিং স্ক্রিপ্ট ব্যবহার করি preprocess.py কিছু সাধারণ বৈশিষ্ট্য রূপান্তর যেমন বৈশিষ্ট্য স্কেলিং, যা নিম্নলিখিত ব্যবহার করে তৈরি করা যেতে পারে সঞ্চালন করতে নোটবই. এই স্ক্রিপ্টটি প্রশিক্ষণ এবং পরীক্ষার ডেটাসেটে ডেটাসেটকে বিভক্ত করে।

আমরা একটি তৈরি SKLearnProcessor এই প্রিপ্রসেসিং স্ক্রিপ্ট চালানোর জন্য অবজেক্ট। সেজমেকার পাইপলাইনে, আমরা একটি প্রক্রিয়াকরণ ধাপ তৈরি করি (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",
)

Amazon S3 এ সংরক্ষণ করার সময় মডেলটিকে এনক্রিপ্ট করার জন্য আমাদের একটি কাস্টম KMS কী প্রয়োজন৷ নিম্নলিখিত কোড দেখুন:

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

মডেলটি প্রশিক্ষণের জন্য, আমরা একটি টেনসরফ্লো অনুমানকারী বস্তু তৈরি করি। আমরা এটিকে আমাদের প্রশিক্ষণ স্ক্রিপ্ট সহ 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-এর জন্য একটি মাল্টি-অ্যাকাউন্ট সেটআপের জন্য প্রয়োজনীয় নীতিগুলি কীভাবে ন্যূনতম বিশেষাধিকারের নীতির উপর ভিত্তি করে সেট আপ করতে হয়৷ তারপরে আমরা ডেটা সায়েন্স অ্যাকাউন্টে মডেলগুলি তৈরি এবং প্রশিক্ষণের প্রক্রিয়া দেখিয়েছি। অবশেষে, আমরা QA এবং উত্পাদন অ্যাকাউন্টে অনুমোদিত মডেলের সর্বশেষ সংস্করণ স্থাপন করতে স্থাপনার অ্যাকাউন্টে CI/CD পাইপলাইন ব্যবহার করেছি। উপরন্তু, আপনি পারেন মডেলের স্থাপনার ইতিহাস দেখুন এবং ট্রিগার তৈরি করুন in এডাব্লুএস কোডবিল্ড.

আপনি মডেল হোস্ট করতে এই পোস্টে ধারণা স্কেল করতে পারেন অ্যামাজন ইলাস্টিক কম্পিউট ক্লাউড (Amazon EC2) বা অ্যামাজন ইলাস্টিক কুবারনেটস পরিষেবা (Amazon EKS), সেইসাথে একটি ব্যাচ ইনফারেন্স পাইপলাইন তৈরি করুন।

AWS-এ ML মডেল তৈরি করে এমন আলাদা অ্যাকাউন্ট থাকার বিষয়ে আরও জানতে দেখুন AWS সংস্থাগুলির সাথে সাংগঠনিক ইউনিটগুলির জন্য সর্বোত্তম অনুশীলন৷ এবং নিরাপদে উত্পাদন মডেল আপডেট.


লেখক সম্পর্কে

Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.সন্দীপ ভার্মা AWS সহ একজন সিনিয়র প্রোটোটাইপিং আর্কিটেক্ট। তিনি গ্রাহকদের চ্যালেঞ্জের গভীরে ডুব দেওয়া এবং উদ্ভাবনকে ত্বরান্বিত করার জন্য গ্রাহকদের জন্য প্রোটোটাইপ তৈরি করা উপভোগ করেন। তার AI/ML-এ একটি পটভূমি রয়েছে, নতুন জ্ঞানের প্রতিষ্ঠাতা এবং সাধারণত প্রযুক্তি সম্পর্কে উত্সাহী। তার অবসর সময়ে, তিনি তার পরিবারের সাথে ভ্রমণ এবং স্কিইং পছন্দ করেন।

মণি খানুজা  মণি খানুজা আমাজন ওয়েব সার্ভিসেস (এডাব্লুএস) এর একটি কৃত্রিম বুদ্ধিমত্তা এবং মেশিন লার্নিং বিশেষজ্ঞ এসএ। তিনি মেশিন লার্নিং ব্যবহার করে গ্রাহকদের AWS ব্যবহার করে তাদের ব্যবসায়ের চ্যালেঞ্জগুলি সমাধান করতে সহায়তা করেন solve তিনি কম্পিউটারের দৃষ্টিভঙ্গি, প্রাকৃতিক ভাষা প্রসেসিং, পূর্বাভাস, প্রান্তে এমএল এবং আরও অনেক কিছুতে গভীরভাবে ডাইভিং এবং গ্রাহকদের প্রশিক্ষণ দিতে ব্যয় করেন। তিনি প্রান্তে এমএল সম্পর্কে উত্সাহী, তাই, তিনি স্ব-ড্রাইভিং কিট এবং প্রোটোটাইপ উত্পাদন উত্পাদন লাইন দিয়ে নিজের ল্যাব তৈরি করেছেন, যেখানে তিনি তার বেশিরভাগ সময় ব্যয় করেন।

Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.সৌমিত্র বিক্রম অ্যামাজন সেজমেকার দলের একজন সফ্টওয়্যার বিকাশকারী এবং ভারতের চেন্নাইতে অবস্থিত। কাজের বাইরে, তিনি হিমালয়ের মধ্য দিয়ে দৌড়ানো, ট্রেকিং এবং মোটর সাইকেল চালাতে সময় কাটাতে পছন্দ করেন।

Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.শ্রীদেবী শ্রীনিবাসন AWS SageMaker-এর একজন প্রকৌশলী নেতা। তিনি MLকে একটি প্ল্যাটফর্ম হিসাবে সক্রিয় করার বিষয়ে উত্সাহী এবং উত্তেজিত যেটি প্রতিদিনের জীবনকে পরিবর্তন করতে সেট করা হয়েছে। তিনি বর্তমানে সেজমেকার ফিচার স্টোরে ফোকাস করছেন। তার অবসর সময়ে, তিনি তার পরিবারের সাথে সময় কাটাতে পছন্দ করেন।

Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ. রুপিন্দর গ্রেওয়াল AWS সহ একজন Sr Ai/ML বিশেষজ্ঞ সমাধান স্থপতি। তিনি বর্তমানে সেজমেকারে মডেল এবং এমএলওপ পরিবেশন করার দিকে মনোনিবেশ করেন। এই ভূমিকার আগে তিনি মেশিন লার্নিং ইঞ্জিনিয়ার বিল্ডিং এবং হোস্টিং মডেল হিসাবে কাজ করেছেন। কাজের বাইরে সে টেনিস খেলা এবং পাহাড়ের পথে বাইক চালানো উপভোগ করে।

Amazon SageMaker মডেল রেজিস্ট্রি PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে একটি ক্রস-অ্যাকাউন্ট MLOps ওয়ার্কফ্লো তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.ফারুক সাবির AWS-এর একজন সিনিয়র আর্টিফিশিয়াল ইন্টেলিজেন্স এবং মেশিন লার্নিং স্পেশালিস্ট সলিউশন আর্কিটেক্ট। তিনি অস্টিনের ইউনিভার্সিটি অফ টেক্সাস থেকে ইলেক্ট্রিক্যাল ইঞ্জিনিয়ারিংয়ে পিএইচডি এবং এমএস ডিগ্রি এবং জর্জিয়া ইনস্টিটিউট অফ টেকনোলজি থেকে কম্পিউটার সায়েন্সে এমএস ডিগ্রি অর্জন করেছেন। AWS-এ, তিনি গ্রাহকদের ডেটা সায়েন্স, মেশিন লার্নিং, কম্পিউটার ভিশন, কৃত্রিম বুদ্ধিমত্তা, সংখ্যাসূচক অপ্টিমাইজেশান এবং সম্পর্কিত ডোমেনে তাদের ব্যবসায়িক সমস্যাগুলি তৈরি করতে এবং সমাধান করতে সহায়তা করেন। তার 16 বছরেরও বেশি কাজের অভিজ্ঞতা রয়েছে এবং তিনি ডালাসের টেক্সাস বিশ্ববিদ্যালয়ের একজন অনুষদ সদস্য, যেখানে তিনি ফলিত মেশিন লার্নিং-এর উপর স্নাতক কোর্স পড়ান। ডালাস, টেক্সাসে অবস্থিত, তিনি এবং তার পরিবার ভ্রমণ করতে এবং দীর্ঘ সড়ক ভ্রমণ করতে পছন্দ করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

ক্রমাগত সিস্টেমগুলি Amazon CodeWhisperer এর সাথে সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের ভবিষ্যতকে আকার দেয় আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1879500
সময় স্ট্যাম্প: আগস্ট 23, 2023