ڈیٹا ورژن کنٹرول اور Amazon SageMaker Experiments PlatoBlockchain Data Intelligence کے ساتھ اپنے ML تجربات کو آخر تک ٹریک کریں۔ عمودی تلاش۔ عی

ڈیٹا ورژن کنٹرول اور Amazon SageMaker تجربات کے ساتھ اپنے ML تجربات کو آخر سے آخر تک ٹریک کریں۔

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

یہ پوسٹ آپ کو ایک مثال کے ذریعے بتاتی ہے کہ کس طرح کوڈ، ڈیٹا، نمونے اور میٹرکس میں اپنے تجربات کو استعمال کرکے ٹریک کریں۔ ایمیزون سیج میکر کے تجربات اس کے ساتھ ڈیٹا ورژن کنٹرول (DVC). ہم دکھاتے ہیں کہ آپ DVC کو ساتھ ساتھ کیسے استعمال کر سکتے ہیں۔ ایمیزون سیج میکر پروسیسنگ اور تربیتی ملازمتیں ہم کیلیفورنیا ہاؤسنگ ڈیٹاسیٹ پر مختلف CatBoost ماڈلز کو تربیت دیتے ہیں۔ StatLib ذخیرہ، اور DVC کے ساتھ ڈیٹا ورژن پر نظر رکھتے ہوئے ہولڈ آؤٹ کی حکمت عملیوں کو تبدیل کریں۔ ہر انفرادی تجربے میں، ہم SageMaker تجربات کا استعمال کرتے ہوئے ان پٹ اور آؤٹ پٹ نمونے، کوڈ، اور میٹرکس کو ٹریک کرتے ہیں۔

سیج میکر کے تجربات

SageMaker Experiments مشین لرننگ (ML) تجربات کو ٹریک کرنے کے لیے AWS سروس ہے۔ دی SageMaker تجربات Python SDK اس سروس کا ایک اعلیٰ سطحی انٹرفیس ہے جو آپ کو Python کا استعمال کرتے ہوئے تجرباتی معلومات کو ٹریک کرنے میں مدد کرتا ہے۔

SageMaker Experiments کا ہدف یہ ہے کہ تجربات کو تخلیق کرنا، انہیں آزمائشوں کے ساتھ آباد کرنا، ٹریکنگ اور نسب کی معلومات شامل کرنا، اور آزمائشوں اور تجربات میں تجزیات چلانا ممکن حد تک آسان بنانا ہے۔

SageMaker تجربات پر بحث کرتے وقت، ہم مندرجہ ذیل تصورات کا حوالہ دیتے ہیں:

  • آزما کر - متعلقہ آزمائشوں کا مجموعہ۔ آپ اس تجربے میں ٹرائلز شامل کرتے ہیں جس کا آپ ایک ساتھ موازنہ کرنا چاہتے ہیں۔
  • مقدمے کی سماعت - ملٹی سٹیپ ایم ایل ورک فلو کی تفصیل۔ ورک فلو میں ہر قدم کو آزمائشی جزو کے ذریعے بیان کیا جاتا ہے۔
  • آزمائشی جزو – ML ورک فلو میں ایک قدم کی تفصیل، جیسے ڈیٹا کی صفائی، فیچر نکالنا، ماڈل ٹریننگ، یا ماڈل کی تشخیص۔
  • ٹریکر - ایک واحد آزمائشی جزو (مثال کے طور پر، پیرامیٹرز، میٹرکس، یا نمونے) کے بارے میں معلومات کو لاگ ان کرنے کے لیے ایک ازگر سیاق و سباق کا مینیجر۔

ڈیٹا ورژن کنٹرول

ڈیٹا ورژن کنٹرول (DVC) ایک نئی قسم کا ڈیٹا ورژننگ، ورک فلو، اور تجربہ مینجمنٹ سوفٹ ویئر ہے جو اس پر تیار ہوتا ہے۔ جاؤ (اگرچہ یہ اسٹینڈ کام کر سکتا ہے)۔ DVC قائم کردہ انجینئرنگ ٹول سیٹس اور ڈیٹا سائنس کی ضروریات کے درمیان فرق کو کم کرتا ہے، جس سے آپ نئے سے فائدہ اٹھا سکتے ہیں۔ خصوصیات موجودہ مہارتوں اور بصیرت کو دوبارہ استعمال کرتے ہوئے

ڈیٹا سائنس کے تجربات کا اشتراک اور تعاون باقاعدہ گٹ فلو (کمیٹ، برانچنگ، ٹیگنگ، پل ریکویسٹ) کے ذریعے کیا جا سکتا ہے جس طرح یہ سافٹ ویئر انجینئرز کے لیے کام کرتا ہے۔ Git اور DVC کے ساتھ، ڈیٹا سائنس اور ML ٹیمیں تجربات کو ورژن بنا سکتی ہیں، بڑے ڈیٹا سیٹس کا نظم کر سکتی ہیں، اور پروجیکٹس کو دوبارہ پیدا کرنے کے قابل بنا سکتی ہیں۔

DVC میں درج ذیل خصوصیات ہیں:

  • ڈی وی سی ایک ہے۔ مفت، آزاد مصدر کمانڈ لائن آلہ.
  • ڈی وی سی گٹ ریپوزٹریز کے اوپر کام کرتا ہے اور اس کا کمانڈ لائن انٹرفیس اور بہاؤ گٹ جیسا ہے۔ DVC اسٹینڈ اکیلے بھی کام کر سکتا ہے، لیکن بغیر ورژننگ صلاحیتیں.
  • ڈیٹا ورژننگ کو بڑی فائلوں، ڈیٹاسیٹ ڈائریکٹریز، ایم ایل ماڈلز، وغیرہ کو چھوٹی فائلوں سے تبدیل کرکے فعال کیا جاتا ہے۔ میٹا فائلز (گٹ کے ساتھ ہینڈل کرنے میں آسان)۔ یہ پلیس ہولڈرز اصل ڈیٹا کی طرف اشارہ کرتے ہیں، جو سورس کوڈ مینجمنٹ سے الگ ہوتا ہے۔
  • آپ پراجیکٹ کے ڈیٹا کو اس کے کوڈ بیس سے الگ رکھنے کے لیے آن پریمیسس یا کلاؤڈ اسٹوریج کا استعمال کر سکتے ہیں۔ اس طرح ڈیٹا سائنسدان بڑے ڈیٹا سیٹس کو منتقل کر سکتے ہیں یا GPU سے تربیت یافتہ ماڈل دوسروں کے ساتھ شیئر کر سکتے ہیں۔
  • DVC ہلکا پھلکا بنا کر ڈیٹا سائنس پروجیکٹس کو دوبارہ پیدا کرنے کے قابل بناتا ہے۔ پائپ مضمر انحصاری گراف کا استعمال کرتے ہوئے، اور اس میں شامل ڈیٹا اور نمونے کو کوڈفائی کر کے۔
  • DVC پلیٹ فارم ایگنوسٹک ہے۔ یہ تمام بڑے آپریٹنگ سسٹمز (لینکس، میک او ایس، اور ونڈوز) پر چلتا ہے، اور پروگرامنگ زبانوں (پائیتھون، آر، جولیا، شیل اسکرپٹس، وغیرہ) یا ایم ایل لائبریریوں (کیرا، ٹینسر فلو، پائ ٹارچ، سکیپی، اور وغیرہ) سے آزادانہ طور پر کام کرتا ہے۔ مزید) منصوبے میں استعمال کیا جاتا ہے.
  • DVC جلدی ہے۔ انسٹال اور خاص انفراسٹرکچر کی ضرورت نہیں ہے، اور نہ ہی یہ APIs یا بیرونی خدمات پر منحصر ہے۔ یہ ایک اسٹینڈ اسٹون CLI ٹول ہے۔

سیج میکر کے تجربات اور ڈی وی سی نمونہ

مندرجہ ذیل گٹ ہب کا نمونہ دکھاتا ہے کہ سیج میکر ماحول میں ڈی وی سی کو کیسے استعمال کیا جائے۔ خاص طور پر، ہم دیکھتے ہیں کہ ڈی وی سی لائبریریوں کے ساتھ کس طرح ایک حسب ضرورت تصویر بنائی جائے جو آپ کے ڈیٹا سائنسدانوں کو ایک مستقل ترقی کا ماحول فراہم کرنے کے لیے بطور ڈیفالٹ انسٹال کریں۔ ایمیزون سیج میکر اسٹوڈیو، اور پروسیسنگ اور تربیت کے لیے SageMaker کے زیر انتظام انفراسٹرکچر کے ساتھ DVC کو کیسے چلایا جائے۔ مزید برآں، ہم دکھاتے ہیں کہ کس طرح DVC سے ڈیٹا ورژننگ کی معلومات کے ساتھ SageMaker سے باخبر رہنے کی معلومات کو بہتر بنایا جائے، اور انہیں سٹوڈیو کنسول کے اندر تصور کریں۔

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

پہلے سے نصب شدہ DVC کے ساتھ ایک حسب ضرورت اسٹوڈیو امیج بنائیں

اس میں GitHub ذخیرہ، ہم وضاحت کرتے ہیں کہ اسٹوڈیو کے لیے ایک حسب ضرورت تصویر کیسے بنائی جائے جس میں DVC پہلے سے انسٹال ہو۔ تصویر بنانے اور اسے اسٹوڈیو کے تمام صارفین کے لیے دستیاب کرنے کا فائدہ یہ ہے کہ یہ اسٹوڈیو کے صارفین کے لیے ایک مستقل ماحول بناتا ہے، جسے وہ مقامی طور پر بھی چلا سکتے ہیں۔ اگرچہ نمونہ پر مبنی ہے۔ AWS کلاؤڈ 9، آپ اپنی مقامی مشین پر کنٹینر بھی بنا سکتے ہیں جب تک کہ آپ کے پاس ڈوکر انسٹال اور چل رہا ہے۔ یہ نمونہ درج ذیل پر مبنی ہے۔ ڈاکر فائل اور Environment.yml. نتیجے میں ڈوکر امیج کو محفوظ کیا جاتا ہے۔ ایمیزون لچکدار کنٹینر رجسٹری (ایمیزون EMR) آپ کے AWS اکاؤنٹ میں۔ درج ذیل کوڈ دیکھیں:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

اب آپ کر سکتے ہیں ایک نیا اسٹوڈیو ڈومین بنائیں or موجودہ اسٹوڈیو ڈومین کو اپ ڈیٹ کریں۔ جس کی نئی تخلیق کردہ ڈوکر امیج تک رسائی ہے۔

ہم استعمال کرتے ہیں AWS کلاؤڈ ڈویلپمنٹ کٹ (AWS CDK) کے ذریعے درج ذیل وسائل بنانے کے لیے AWS کلاؤڈ فارمیشن:

  • آپ کے نئے یا موجودہ اسٹوڈیو ڈومین کے لیے صحیح اجازتوں کے ساتھ ایک SageMaker ایگزیکیوشن رول
  • ڈوکر امیج سے سیج میکر امیج اور سیج میکر امیج ورژن conda-env-dvc-kernel جسے ہم نے پہلے بنایا تھا۔
  • An AppImageConfig یہ بتاتا ہے کہ کرنل گیٹ وے کو کس طرح ترتیب دیا جانا چاہیے۔
  • ایک اسٹوڈیو صارف (data-scientist-dvc) صحیح SageMaker عمل درآمد کے کردار اور اس کے لیے دستیاب اپنی مرضی کے مطابق اسٹوڈیو امیج کے ساتھ

تفصیلی ہدایات کے لئے دیکھیں سیج میکر اسٹوڈیو سے ایک حسب ضرورت تصویر منسلک کریں۔.

لیب چلائیں۔

لیب چلانے کے لیے، درج ذیل مراحل کو مکمل کریں:

  1. اسٹوڈیو ڈومین میں، اسٹوڈیو کے لیے لانچ کریں۔ data-scientist-dvc صارف.
  2. Git آئیکن کو منتخب کریں، پھر منتخب کریں۔ ایک ذخیرہ کلون.
    ایک ذخیرہ کلون
  3. ذخیرہ کا URL درج کریں (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) اور منتخب کریں۔ کلون.ریپو بٹن کو کلون کریں۔
  4. فائل براؤزر میں، منتخب کریں۔ amazon-sagemaker-experiments-dvc-demo ذخیرہ.
  5. کھولو dvc_sagemaker_script_mode.ipynb کاپی.
  6. کے لئے اپنی مرضی کی تصویر، تصویر conda-env-dvc-kernel کا انتخاب کریں۔
  7. میں سے انتخاب کریں منتخب کریں.
    conda-env-dvc-kernel

ڈیٹا ورژننگ کے لیے DVC کو کنفیگر کریں۔

ہم ایک ذیلی ڈائرکٹری بناتے ہیں جہاں ہم ڈیٹا تیار کرتے ہیں: sagemaker-dvc-sample۔ اس ذیلی ڈائرکٹری کے اندر، ہم ایک نئی گٹ ریپوزٹری شروع کرتے ہیں اور ریموٹ کو اس ریپوزٹری پر سیٹ کرتے ہیں جس میں ہم تخلیق کرتے ہیں۔ AWS CodeCommit. مقصد یہ ہے کہ اس ذخیرہ میں ڈیٹا ٹریکنگ کے لیے DVC کنفیگریشنز اور فائلز کو ورژن میں رکھا جائے۔ تاہم، Git ذیلی پروجیکٹس کو منظم کرنے کے لیے مقامی صلاحیتیں پیش کرتا ہے، مثال کے طور پر، git submodules اور git subtrees، اور آپ اس نمونے کو بڑھا سکتے ہیں تاکہ مذکورہ بالا ٹولز میں سے کسی کو استعمال کیا جا سکے جو آپ کے ورک فلو کے مطابق ہو۔

ہمارے معاملے میں SageMaker کے ساتھ CodeCommit استعمال کرنے کا سب سے بڑا فائدہ اس کے ساتھ انضمام ہے۔ AWS شناخت اور رسائی کا انتظام (IAM) توثیق اور اجازت کے لیے، مطلب کہ ہم اسناد (یا SSH کیز) کو حاصل کرنے کی ضرورت کے بغیر ڈیٹا کو آگے بڑھانے اور کھینچنے کے لیے IAM رولز کا استعمال کر سکتے ہیں۔ SageMaker کے ایگزیکیوشن رول پر مناسب اجازتیں سیٹ کرنا سٹوڈیو نوٹ بک اور SageMaker ٹریننگ اور پروسیسنگ جاب کو CodeCommit کے ساتھ محفوظ طریقے سے بات چیت کرنے کی بھی اجازت دیتا ہے۔

اگرچہ آپ CodeCommit کو کسی بھی دوسری سورس کنٹرول سروس، جیسے GitHub، Gitlab، یا Bitbucket سے بدل سکتے ہیں، آپ کو اپنے سسٹم کے لیے اسناد کو ہینڈل کرنے کے طریقے پر غور کرنے کی ضرورت ہے۔ ایک امکان یہ ہے کہ ان اسناد کو محفوظ کر لیا جائے۔ AWS سیکرٹس مینیجر اور انہیں رن ٹائم پر اسٹوڈیو نوٹ بک کے ساتھ ساتھ SageMaker پروسیسنگ اور تربیتی ملازمتوں سے حاصل کریں۔

DVC شروع کریں۔

DVC اور SageMaker کے ساتھ عمل اور تربیت کریں۔

اس سیکشن میں، ہم اپنے مسئلے سے نمٹنے کے لیے دو مختلف طریقوں کی کھوج کرتے ہیں اور یہ کہ ہم نے پہلے آپ کو دکھائے گئے اعلیٰ سطحی تصوراتی فن تعمیر کے مطابق SageMaker Experiments کا استعمال کرتے ہوئے دو ٹیسٹوں کا کیسے پتہ لگا سکتے ہیں۔

سیج میکر تجربہ مرتب کریں۔

SageMaker میں اس ٹیسٹ کو ٹریک کرنے کے لیے، ہمیں ایک تجربہ بنانے کی ضرورت ہے۔ ہمیں تجربے کے اندر آزمائش کی بھی وضاحت کرنے کی ضرورت ہے۔ سادگی کی خاطر، ہم تجربے کے لیے صرف ایک ٹرائل پر غور کرتے ہیں، لیکن آپ ایک تجربے کے اندر کئی آزمائشیں لے سکتے ہیں، مثال کے طور پر، اگر آپ مختلف الگورتھم کو جانچنا چاہتے ہیں۔

ہم نام کا ایک تجربہ بناتے ہیں۔ DEMO-sagemaker-experiments-dvc دو آزمائشوں کے ساتھ، dvc-trial-single-file اور dvc-trial-multi-files، ہر ایک ڈیٹاسیٹ کے مختلف ورژن کی نمائندگی کرتا ہے۔

آئیے تخلیق کرتے ہیں۔ DEMO-sagemaker-experiments-dvc تجربہ:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

ٹیسٹ 1: تربیت اور توثیق کے لیے واحد فائلیں بنائیں

اس سیکشن میں، ہم ایک پروسیسنگ اسکرپٹ بناتے ہیں جو خام ڈیٹا کو براہ راست حاصل کرتا ہے۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3) بطور ان پٹ؛ ٹرین، توثیق، اور ٹیسٹ ڈیٹاسیٹ بنانے کے لیے اس پر کارروائی کرتا ہے۔ اور DVC کا استعمال کرتے ہوئے نتائج کو Amazon S3 پر واپس اسٹور کرتا ہے۔ مزید برآں، ہم یہ دکھاتے ہیں کہ آپ کس طرح پروسیسنگ اور ٹریننگ جابز چلاتے وقت اور SageMaker تجربات کے ذریعے DVC کے ذریعے SageMaker کے ذریعے تیار کردہ آؤٹ پٹ آرٹفیکٹس کو ٹریک کر سکتے ہیں۔

سب سے پہلے، ہم تخلیق کرتے ہیں dvc-trial-single-file ٹرائل کریں اور اسے میں شامل کریں۔ DEMO-sagemaker-experiments-dvc تجربہ ایسا کرنے سے، ہم اس ٹیسٹ سے متعلق تمام آزمائشی اجزاء کو بامعنی انداز میں منظم رکھتے ہیں۔

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

واحد فائل ورژن بنانے کے لیے SageMaker پروسیسنگ جاب میں DVC استعمال کریں۔

اس سیکشن میں، ہم ایک پروسیسنگ اسکرپٹ بناتے ہیں جو سیج میکر کی منظم ڈیٹا لوڈنگ کی صلاحیت کا استعمال کرتے ہوئے خام ڈیٹا کو براہ راست Amazon S3 سے ان پٹ کے طور پر حاصل کرتا ہے۔ ٹرین، توثیق، اور ٹیسٹ ڈیٹاسیٹ بنانے کے لیے اس پر کارروائی کرتا ہے۔ اور DVC کا استعمال کرتے ہوئے نتائج کو Amazon S3 پر واپس اسٹور کرتا ہے۔ یہ سمجھنا بہت ضروری ہے کہ ایمیزون S3 میں ڈیٹا اسٹور کرنے کے لیے DVC کا استعمال کرتے وقت (یا Amazon S3 سے ڈیٹا کھینچتے ہیں)، ہم SageMaker کے زیر انتظام ڈیٹا لوڈ کرنے کی صلاحیتوں سے محروم ہو رہے ہیں، جو ممکنہ طور پر ہماری پروسیسنگ اور تربیتی ملازمتوں کی کارکردگی اور اخراجات پر اثر انداز ہو سکتی ہے۔ خاص طور پر جب بہت بڑے ڈیٹاسیٹس کے ساتھ کام کر رہے ہوں۔ مختلف SageMaker مقامی ان پٹ موڈ کی صلاحیتوں کے بارے میں مزید معلومات کے لیے، رجوع کریں۔ ٹریننگ ڈیٹا تک رسائی حاصل کریں۔.

آخر میں، SageMaker تجربات کے ذریعے پروسیسنگ جابز چلاتے وقت ہم DVC ٹریکنگ کی صلاحیتوں کو SageMaker سے باخبر رکھنے کی صلاحیتوں کے ساتھ یکجا کرتے ہیں۔

پروسیسنگ اسکرپٹ Git ریپوزٹری کے ایڈریس اور اس برانچ کی توقع کرتی ہے جسے ہم ماحولیاتی متغیرات کے ذریعے پاس کردہ DVC میٹا ڈیٹا کو ذخیرہ کرنے کے لیے بنانا چاہتے ہیں۔ ڈیٹاسیٹس خود DVC کے ذریعہ Amazon S3 میں محفوظ ہیں۔ اگرچہ ماحولیاتی متغیرات خود بخود SageMaker تجربات میں ٹریک کیے جاتے ہیں اور آزمائشی اجزاء کے پیرامیٹرز میں نظر آتے ہیں، لیکن ہم آزمائشی اجزاء کو مزید معلومات کے ساتھ بہتر بنانا چاہتے ہیں، جو پھر ٹریکر آبجیکٹ کا استعمال کرتے ہوئے اسٹوڈیو UI میں تصور کے لیے دستیاب ہو جاتے ہیں۔ ہمارے معاملے میں، آزمائشی اجزاء کے پیرامیٹرز میں درج ذیل شامل ہیں:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

پری پروسیسنگ اسکرپٹ گٹ ریپوزٹری کو کلون کرتی ہے۔ ٹرین، توثیق، اور ٹیسٹ ڈیٹاسیٹ تیار کرتا ہے؛ اور اسے DVC کا استعمال کرتے ہوئے مطابقت پذیر بناتا ہے۔ جیسا کہ پہلے ذکر کیا گیا ہے، DVC استعمال کرتے وقت، ہم مقامی SageMaker ڈیٹا لوڈ کرنے کی صلاحیتوں سے فائدہ نہیں اٹھا سکتے۔ کارکردگی کے جرمانے کے علاوہ جو ہم بڑے ڈیٹا سیٹس پر برداشت کر سکتے ہیں، ہم آؤٹ پٹ آرٹفیکٹس کے لیے خودکار ٹریکنگ کی صلاحیتوں سے بھی محروم ہو جاتے ہیں۔ تاہم، ٹریکر اور DVC Python API کی بدولت، ہم ان کوتاہیوں کی تلافی کر سکتے ہیں، رن ٹائم پر ایسی معلومات کو بازیافت کر سکتے ہیں، اور تھوڑی محنت کے ساتھ اسے آزمائشی جزو میں محفوظ کر سکتے ہیں۔ ایسا کرنے سے اضافی قدر ان پٹ اور آؤٹ پٹ نمونے کو ایک ہی نظر میں رکھنا ہے جو اس مخصوص پروسیسنگ کام سے تعلق رکھتے ہیں۔

مکمل پری پروسیسنگ Python اسکرپٹ میں دستیاب ہے۔ GitHub repo.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMaker ہمیں اپنی پروسیسنگ اسکرپٹ کو AWS کے زیر انتظام کنٹینر امیجز پر چلانے کا امکان فراہم کرتا ہے جو AWS انفراسٹرکچر پر چلنے کے لیے موزوں ہیں۔ اگر ہمارے اسکرپٹ کو اضافی انحصار کی ضرورت ہے، تو ہم فراہم کر سکتے ہیں a requirements.txt فائل جب ہم پروسیسنگ کا کام شروع کرتے ہیں، سیج میکر استعمال کرتا ہے۔ pip-install ان تمام لائبریریوں کو انسٹال کرنے کے لیے جن کی ہمیں ضرورت ہے (مثال کے طور پر، DVC سے متعلقہ لائبریریاں)۔ اگر آپ کو کنٹینرز پر نصب تمام لائبریریوں کا سخت کنٹرول رکھنے کی ضرورت ہے، تو آپ SageMaker میں اپنا کنٹینر لا سکتے ہیں، مثال کے طور پر پروسیسنگ اور تربیت.

ہمارے سیج میکر پروسیسنگ کام کو چلانے کے لیے اب ہمارے پاس تمام اجزاء موجود ہیں:

  • ایک پروسیسنگ اسکرپٹ جو کئی دلائل پر کارروائی کر سکتا ہے (--train-test-split-ratio) اور دو ماحولیاتی متغیرات (DVC_REPO_URL اور DVC_BRANCH)
  • A requiremets.txt سنچکا
  • ایک Git ذخیرہ (CodeCommit میں)
  • ایک سیج میکر تجربہ اور آزمائش
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

اس کے بعد ہم اس کے ساتھ پروسیسنگ کا کام چلاتے ہیں۔ preprocessing-experiment.py سکرپٹ، experiment_config, dvc_repo_url، اور dvc_branch ہم نے پہلے بیان کیا.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

پروسیسنگ کے کام کو مکمل ہونے میں تقریباً 5 منٹ لگتے ہیں۔ اب آپ سنگل فائل ڈیٹاسیٹ کے لیے آزمائشی تفصیلات دیکھ سکتے ہیں۔

مندرجہ ذیل اسکرین شاٹ دکھاتا ہے کہ آپ اسٹوڈیو میں ذخیرہ شدہ معلومات کہاں سے حاصل کر سکتے ہیں۔ کے لیے اقدار کو نوٹ کریں۔ dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL، اور data_commit_hash پر پیرامیٹر ٹیب.

سیج میکر تجربات کے پیرامیٹرز کا ٹیب

پر ان پٹ اور آؤٹ پٹ کی تفصیلات بھی نوٹ کریں۔ Artifacts ٹیب.

سیج میکر تجرباتی نمونے کا ٹیب

ایک تخمینہ ساز بنائیں اور ماڈل کو سنگل فائل ڈیٹا ورژن کے ساتھ فٹ کریں۔

SageMaker ٹریننگ جاب کے اندر DVC انضمام کو استعمال کرنے کے لیے، ہم ایک پاس کرتے ہیں۔ dvc_repo_url اور dvc_branch ماحولیاتی متغیر کے طور پر جب آپ تخمینہ کرنے والا آبجیکٹ بناتے ہیں۔

ہم پر تربیت dvc-trial-single-file سب سے پہلے شاخ.

DVC کے ساتھ ڈیٹا کھینچتے وقت، ہم درج ذیل ڈیٹاسیٹ ڈھانچہ استعمال کرتے ہیں:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

اب ہم استعمال کرتے ہوئے ایک Scit-learn Estimator بناتے ہیں۔ SageMaker Python SDK. یہ ہمیں مندرجہ ذیل کی وضاحت کرنے کی اجازت دیتا ہے:

  • Python سورس فائل کا راستہ، جسے ٹریننگ کے انٹری پوائنٹ کے طور پر چلایا جانا چاہیے۔
  • IAM رول جو Amazon S3 اور CodeCommit ڈیٹا تک رسائی اور SageMaker فنکشنز کو چلانے کی اجازتوں کو کنٹرول کرتا ہے۔
  • لغات کی ایک فہرست جو تربیتی ملازمتوں کا جائزہ لینے کے لیے استعمال ہونے والے میٹرکس کی وضاحت کرتی ہے۔
  • تربیتی مثالوں کی تعداد اور قسم۔ ہم ایک ml.m5.large مثال استعمال کرتے ہیں۔
  • ہائپر پیرامیٹرز جو تربیت کے لیے استعمال ہوتے ہیں۔
  • تربیتی کام کے دوران استعمال کرنے کے لیے ماحولیاتی متغیرات۔ ہم استعمال کرتے ہیں DVC_REPO_URL, DVC_BRANCH، اور USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

ہم تخمینہ لگانے والے کے موزوں طریقہ کو تجربہ_config کے ساتھ کہتے ہیں جس کی وضاحت ہم نے پہلے تربیت شروع کرنے کے لیے کی تھی۔

%%time
estimator.fit(experiment_config=experiment_config)

تربیتی کام کو مکمل ہونے میں تقریباً 5 منٹ لگتے ہیں۔ لاگ ان لائنوں کو دکھاتے ہیں، جو DVC کی طرف سے کھینچی گئی فائلوں کی نشاندہی کرتے ہیں:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

ٹیسٹ 2: تربیت اور توثیق کے لیے متعدد فائلیں بنائیں

ہم ایک نیا بناتے ہیں۔ dvc-trial-multi-files ٹرائل کریں اور اسے موجودہ میں شامل کریں۔ DEMO-sagemaker-experiments-dvc تجربہ

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

پہلے پروسیسنگ اسکرپٹ سے مختلف، اب ہم تربیت اور توثیق کے لیے اصل ڈیٹاسیٹ سے متعدد فائلیں بناتے ہیں اور DVC میٹا ڈیٹا کو ایک مختلف برانچ میں اسٹور کرتے ہیں۔

آپ دوسری پری پروسیسنگ ازگر کی اسکرپٹ کو آن کر سکتے ہیں۔ GitHub کے.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

پروسیسنگ کے کام کو مکمل ہونے میں تقریباً 5 منٹ لگتے ہیں۔ اب آپ ملٹی فائل ڈیٹاسیٹ کے لیے آزمائشی تفصیلات دیکھ سکتے ہیں۔

مندرجہ ذیل اسکرین شاٹس دکھاتے ہیں کہ آپ SageMaker Experiments میں ذخیرہ شدہ معلومات کہاں سے حاصل کر سکتے ہیں۔ آزمائشی اجزاء اسٹوڈیو UI کے اندر سیکشن۔ کے لیے اقدار کو نوٹ کریں۔ dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL، اور data_commit_hash پر پیرامیٹر ٹیب.

سیج میکر ملٹی فائلز تجربات کے پیرامیٹرز ٹیب

آپ ان پٹ اور آؤٹ پٹ کی تفصیلات کا بھی جائزہ لے سکتے ہیں۔ Artifacts ٹیب.

سیج میکر ملٹی فائلوں کے تجرباتی نمونے کا ٹیب

اب ہم پر تربیت کرتے ہیں dvc-trial-multi-files شاخ DVC کے ساتھ ڈیٹا کھینچتے وقت، ہم درج ذیل ڈیٹاسیٹ ڈھانچہ استعمال کرتے ہیں:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

جیسا کہ ہم نے پہلے کیا تھا، ہم آزمائشی نام کے ساتھ ایک نیا Scikit-learn Estimator بناتے ہیں۔ dvc-trial-multi-files اور تربیتی کام شروع کریں۔

%%time

estimator.fit(experiment_config=experiment_config)

تربیتی کام کو مکمل ہونے میں تقریباً 5 منٹ لگتے ہیں۔ ٹریننگ جاب لاگ آؤٹ پٹ پر نوٹ بک میں، آپ وہ لائنیں دیکھ سکتے ہیں، جو DVC کی طرف سے کھینچی گئی فائلوں کی نشاندہی کرتی ہیں:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

SageMaker میں اپنے ماڈل کی میزبانی کریں۔

اپنے ML ماڈل کو تربیت دینے کے بعد، آپ SageMaker کا استعمال کرتے ہوئے اسے تعینات کر سکتے ہیں۔ ایک مستقل، ریئل ٹائم اینڈ پوائنٹ کو تعینات کرنے کے لیے جو ایک وقت میں ایک پیشین گوئی کرتا ہے، ہم استعمال کرتے ہیں۔ سیج میکر ریئل ٹائم ہوسٹنگ سروسز.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

سب سے پہلے، ہمیں اسٹوڈیو میں ڈویلپمنٹ نوٹ بک پر مقامی طور پر تازہ ترین ٹیسٹ ڈیٹاسیٹ ملتا ہے۔ اس مقصد کے لیے ہم استعمال کر سکتے ہیں۔ dvc.api.read() SageMaker پروسیسنگ جاب کے ذریعے ایمیزون S3 میں محفوظ کردہ خام ڈیٹا کو لوڈ کرنے کے لیے۔

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

پھر ہم پانڈوں کا استعمال کرتے ہوئے ڈیٹا تیار کرتے ہیں، ایک ٹیسٹ CSV فائل لوڈ کرتے ہیں، اور کال کرتے ہیں۔ predictor.predict ڈیٹا کے ساتھ پہلے بنائے گئے SageMaker اینڈ پوائنٹ کو طلب کرنے اور پیشین گوئیاں حاصل کرنے کے لیے۔

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

اختتامی نقطہ کو حذف کریں۔

آپ کو اختتامی نقطوں کو حذف کر دینا چاہیے جب وہ مزید استعمال میں نہ ہوں، کیونکہ ان کا بل تعیناتی کے وقت کے مطابق ہوتا ہے (مزید معلومات کے لیے، دیکھیں ایمیزون سیج میکر قیمتوں کا تعین)۔ غیر متوقع اخراجات سے بچنے کے لیے اینڈ پوائنٹ کو حذف کرنا یقینی بنائیں۔

predictor.delete_endpoint()

صاف کرو

اپنے بنائے ہوئے تمام وسائل کو ہٹانے سے پہلے، یقینی بنائیں کہ تمام ایپس کو حذف کر دیا گیا ہے۔ data-scientist-dvc صارف، بشمول تمام KernelGateway ایپس، نیز ڈیفالٹ JupiterServer ایپ۔

پھر آپ درج ذیل کمانڈ کو چلا کر AWS CDK اسٹیک کو تباہ کر سکتے ہیں۔

cdk destroy

اگر آپ نے موجودہ ڈومین استعمال کیا ہے تو درج ذیل کمانڈز کو بھی چلائیں:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

نتیجہ

اس پوسٹ میں، آپ نے DVC کے ساتھ مل کر SageMaker Experiments اور SageMaker پروسیسنگ اور تربیتی ملازمتوں کا استعمال کرتے ہوئے کوڈ، ڈیٹا، نمونے اور میٹرکس میں اپنے تجربات کو کیسے ٹریک کرنا ہے اس کی ایک مثال کو دیکھا۔ ہم نے DVC پر مشتمل ایک Docker امیج بنائی، جو اسٹوڈیو کے لیے ترقیاتی نوٹ بک کے طور پر درکار تھی، اور دکھایا کہ آپ DVC کے ساتھ پروسیسنگ اور تربیتی ملازمتوں کو کس طرح استعمال کر سکتے ہیں۔ ہم نے ڈیٹا کے دو ورژن تیار کیے اور اسے Git کے ساتھ منظم کرنے کے لیے DVC کا استعمال کیا۔ پھر آپ نے شیشے کے ایک پین میں پیرامیٹرز، آرٹفیکٹس اور میٹرکس کا متحد نظریہ رکھنے کے لیے ڈیٹا کے دو ورژن کے ساتھ پروسیسنگ اور ٹریننگ کو ٹریک کرنے کے لیے SageMaker تجربات کا استعمال کیا۔ آخر میں، آپ نے ماڈل کو SageMaker اینڈ پوائنٹ پر تعینات کیا اور SageMaker اینڈ پوائنٹ کو طلب کرنے اور پیشین گوئیاں حاصل کرنے کے لیے دوسرے ڈیٹاسیٹ ورژن سے ٹیسٹنگ ڈیٹاسیٹ کا استعمال کیا۔

اگلے مرحلے کے طور پر، آپ موجودہ نوٹ بک کو بڑھا سکتے ہیں اور اپنی خصوصیت کی انجینئرنگ حکمت عملی متعارف کروا سکتے ہیں اور اپنے تجربات کو چلانے کے لیے DVC اور SageMaker استعمال کر سکتے ہیں۔ چلو تعمیر کرتے ہیں!

مزید پڑھنے کے لیے درج ذیل وسائل سے رجوع کریں:


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

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

ایتان سیلاایتان سیلا ایمیزون ویب سروسز کے ساتھ مشین لرننگ اسپیشلسٹ سولیوشن آرکیٹیکٹ ہے۔ وہ AWS صارفین کے ساتھ رہنمائی اور تکنیکی مدد فراہم کرنے کے لیے کام کرتا ہے، AWS پر مشین لرننگ سلوشنز بنانے اور چلانے میں ان کی مدد کرتا ہے۔ اپنے فارغ وقت میں، Eitan جاگنگ اور جدید ترین مشین لرننگ آرٹیکلز پڑھنے سے لطف اندوز ہوتا ہے۔

ٹائم اسٹیمپ:

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