Amazon SageMaker PlatoBlockchain Data Intelligence میں ہائپر پیرامیٹر آپٹیمائزیشن کا استعمال کرتے ہوئے اپنی خود کی ٹریننگ اسکرپٹس کا استعمال کریں اور خود بخود بہترین ماڈل منتخب کریں۔ عمودی تلاش۔ عی

اپنے تربیتی اسکرپٹس کا استعمال کریں اور Amazon SageMaker میں ہائپر پیرامیٹر آپٹیمائزیشن کا استعمال کرتے ہوئے خود بخود بہترین ماڈل منتخب کریں۔

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

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

حل جائزہ

ہم درج ذیل مراحل سے گزرتے ہیں:

  1. ہمارے اپنے ماڈل کو AWS کے زیر انتظام کنٹینر کے اوپر لانے کے لیے SageMaker اسکرپٹ موڈ کا استعمال کریں۔
  2. ہمارے تشخیصی میٹرک کو پرنٹ کرنے کے لیے ہماری ٹریننگ اسکرپٹ کو ریفیکٹر کریں۔
  3. CloudWatch لاگز میں میٹرک تلاش کریں۔
  4. CloudWatch سے میٹرک نکالیں۔
  5. اس تشخیصی میٹرک پر ٹیوننگ کرکے بہترین ماڈل منتخب کرنے کے لیے HPO کا استعمال کریں۔
  6. HPO کی نگرانی کریں اور بہترین تربیتی نوکری تلاش کریں۔

شرائط

اس واک تھرو کے لیے، آپ کے پاس درج ذیل شرائط ہونی چاہئیں:

AWS کے زیر انتظام کنٹینر پر حسب ضرورت الگورتھم استعمال کریں۔

کا حوالہ دیتے ہیں Amazon SageMaker اسکرپٹ موڈ کے ساتھ اپنا ماڈل لائیں۔ AWS کے زیر انتظام کنٹینر کا استعمال کرتے ہوئے SageMaker میں کسٹم ماڈل لانے پر مزید تفصیلی نظر ڈالیں۔

ہم استعمال کرتے ہیں MNIST ڈیٹاسیٹ اس مثال کے لئے. MNIST ہاتھ سے لکھے ہندسوں کی درجہ بندی کے لیے وسیع پیمانے پر استعمال ہونے والا ڈیٹاسیٹ ہے، جس میں ہاتھ سے لکھے ہندسوں کی 70,000 لیبل والی 28×28 پکسل گرے اسکیل تصاویر شامل ہیں۔ ڈیٹاسیٹ کو 60,000 ٹریننگ امیجز اور 10,000 ٹیسٹ امیجز میں تقسیم کیا گیا ہے، جس میں 10 کلاسز ہیں (ہر ہندسے کے لیے ایک)۔

  1. اپنی نوٹ بک مثال کھولیں اور ڈاؤن لوڈ کرنے کے لیے درج ذیل کمانڈ کو چلائیں۔ mnist.py فائل:
    !wget https://raw.githubusercontent.com/aws/amazon-sagemaker-examples/main/hyperparameter_tuning/pytorch_mnist/mnist.py

    اس سے پہلے کہ ہم ڈیٹا حاصل کریں اور ذخیرہ کریں، آئیے ایک سیج میکر سیشن بنائیں۔ ہمیں تربیت اور ماڈل ڈیٹا کے لیے استعمال کرنے کے لیے S3 بالٹی اور سابقہ ​​بھی بتانا چاہیے۔ یہ اسی علاقے کے اندر ہونا چاہیے جس میں نوٹ بک مثال، تربیت اور ہوسٹنگ ہے۔ درج ذیل کوڈ استعمال کرتا ہے۔ پہلے سے طے شدہ بالٹی اگر یہ پہلے سے موجود ہے، یا اگر نہیں ہے تو نیا بناتا ہے۔ ہمیں آپ کے ڈیٹا تک تربیت اور میزبانی کی رسائی دینے کے لیے IAM رول ARN کو بھی شامل کرنا چاہیے۔ ہم استعمال کرتے ہیں get_execution_role() IAM رول حاصل کرنے کے لیے جو آپ نے اپنی نوٹ بک مثال کے لیے بنایا ہے۔

  2. درج ذیل کوڈ کے ساتھ ایک سیشن بنائیں:
    import sagemaker
    from sagemaker.tuner import (
    IntegerParameter,
    CategoricalParameter,
    ContinuousParameter,
    HyperparameterTuner,
    )
    session = sagemaker.Session()
    bucket = session.default_bucket()
    prefix = "sagemaker/DEMO-custom-hpo"
    role = sagemaker.get_execution_role()

  3. اب آئیے ڈیٹا حاصل کریں، اسے اپنے مقامی فولڈر میں اسٹور کریں۔ /data، اور اسے Amazon S3 پر اپ لوڈ کریں:
    from torchvision.datasets import MNIST
    from torchvision import transforms
    MNIST.mirrors = ["https://sagemaker-sample-files.s3.amazonaws.com/datasets/image/MNIST/"]
    MNIST(
    "data",
    download=True,
    transform=transforms.Compose(
    [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
    ),
    )
    inputs = session.upload_data(path="data", bucket=bucket, key_prefix=prefix)

    اب ہم PyTorch ٹریننگ جاب ترتیب دینے کے لیے ایک تخمینہ ساز بنا سکتے ہیں۔ ہم یہاں اصل تربیتی کوڈ پر توجہ نہیں دیتے ہیں (mnist.py) بڑی تفصیل میں۔ آئیے دیکھتے ہیں کہ ہم تربیتی کام کو شروع کرنے کے لیے اس ٹریننگ اسکرپٹ کو کس طرح آسانی سے استعمال کر سکتے ہیں۔

  4. درج ذیل کوڈ میں، ہم ایک انٹری پوائنٹ اسکرپٹ شامل کرتے ہیں جسے mnist.py کہتے ہیں جس میں ہمارا حسب ضرورت ٹریننگ کوڈ ہوتا ہے:
    from sagemaker.pytorch import PyTorch
    estimator = PyTorch(
    entry_point="mnist.py",
    role=role,
    py_version="py3",
    framework_version="1.8.0",
    instance_count=1,
    instance_type="ml.c5.2xlarge",
    hyperparameters={"epochs": 5},
    )

  5. اس بات کو یقینی بنانے کے لیے کہ اس تربیتی جاب کو درست طریقے سے ترتیب دیا گیا ہے، ورکنگ ٹریننگ کوڈ کے ساتھ، ہم اسے Amazon S3 پر اپ لوڈ کیے گئے ڈیٹا میں فٹ کر کے تربیتی کام شروع کر سکتے ہیں۔ سیج میکر یقینی بناتا ہے کہ ہمارا ڈیٹا مقامی فائل سسٹم میں دستیاب ہے، لہذا ہماری ٹریننگ اسکرپٹ صرف ڈسک سے ڈیٹا کو پڑھ سکتی ہے:
    estimator.fit({"training": inputs})

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

ہر ایک ہائپر پیرامیٹر کے لیے جسے ہم بہتر بنانا چاہتے ہیں، ہمیں درج ذیل کی وضاحت کرنی ہوگی۔

  • ایک نام
  • ایک قسم (پیرامیٹر یا تو عددی، مسلسل، یا دوٹوک ہو سکتے ہیں)
  • دریافت کرنے کے لیے قدروں کی ایک رینج
  • اسکیلنگ کی قسم (لکیری، لوگارتھمک، ریورس لوگارتھمک، یا آٹو)؛ یہ ہمیں کنٹرول کرنے دیتا ہے کہ ایک مخصوص پیرامیٹر رینج کو کیسے تلاش کیا جائے گا۔

ہمیں اس میٹرک کی بھی وضاحت کرنی چاہیے جس کے لیے ہم اصلاح کر رہے ہیں۔ یہ کوئی بھی عددی قدر ہو سکتی ہے جب تک کہ یہ ٹریننگ لاگ میں نظر آتی ہے اور آپ اسے نکالنے کے لیے ایک ریگولر ایکسپریشن پاس کر سکتے ہیں۔

اگر ہم mnist.py میں لائن 181 کو دیکھتے ہیں، تو ہم دیکھ سکتے ہیں کہ ہم لاگر پر کیسے پرنٹ کرتے ہیں:

logger.info(
"Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)n".format(
test_loss, correct, len(test_loader.dataset), 100.0 * correct / len(test_loader.dataset)
)

درحقیقت، ہم اس آؤٹ پٹ کو اس ٹریننگ جاب کے لاگز میں دیکھ سکتے ہیں جو ہم نے ابھی چلائی تھی۔ لاگ گروپ کھول کر /aws/sagemaker/TrainingJobs CloudWatch کنسول پر، ہمارے پاس لاگ ایونٹ شروع ہونا چاہیے۔ pytorch-training- اس کے بعد ٹائم اسٹیمپ اور تیار کردہ نام۔

درج ذیل اسکرین شاٹ اس لاگ کو نمایاں کرتا ہے جس کی ہم تلاش کر رہے ہیں۔

آئیے اب اپنی ہائپر پیرامیٹر ٹیوننگ جاب بنانا شروع کرتے ہیں۔

  1. جیسا کہ ذکر کیا گیا ہے، ہمیں سب سے پہلے ہائپر پیرامیٹر کے بارے میں کچھ معلومات کی وضاحت کرنی چاہیے، آبجیکٹ کے تحت اس طرح:
    hyperparameter_ranges = {
    "lr": ContinuousParameter(0.001, 0.1),
    "batch-size": CategoricalParameter([32, 64, 128, 256, 512]),
    }

    یہاں ہم نے اپنے دو ہائپر پیرامیٹرز کی وضاحت کی۔ سیکھنے کی شرح (lr) 0.001 اور 0.1 کی حد میں ایک مسلسل پیرامیٹر ہے (اس لیے ایک مسلسل قدر)۔ بیچ کا سائز (بیچ سائز) سابقہ ​​مجرد اقدار کے ساتھ ایک واضح پیرامیٹر ہے۔

    اگلا، ہم مقصدی میٹرک کی وضاحت کرتے ہیں جسے ہم ٹیون کرنا چاہتے ہیں اور اس کی تعریف۔ اس میں ٹریننگ جاب کے کلاؤڈ واچ لاگز سے اس میٹرک کو نکالنے کے لیے درکار ریگولر ایکسپریشن (regex) شامل ہے جسے ہم نے پہلے دیکھا تھا۔ ہم ایک وضاحتی نام اوسط ٹیسٹ نقصان اور مقصد کی قسم کو Minimize کے طور پر بھی بتاتے ہیں، لہذا ہائپر پیرامیٹر ٹیوننگ بہترین ہائپر پیرامیٹر ترتیب کی تلاش کے دوران مقصدی میٹرک کو کم سے کم کرنے کی کوشش کرتی ہے۔

  2. درج ذیل کوڈ کے ساتھ میٹرک کی وضاحت کریں:
    metric_definitions = [{"Name": "average test loss", "Regex": "Test set: Average loss: ([0-9.]+)"}]
    objective_metric_name = "average test loss"
    objective_type = "Minimize"

    اب ہم اپنا بنانے کے لیے تیار ہیں۔ HyperparameterTuner چیز. معروضی میٹرک نام، قسم اور تعریف کے علاوہ، ہم پاس کرتے ہیں۔ hyperparameter_ranges آبجیکٹ اور تخمینہ لگانے والا جو ہم نے پہلے بنایا تھا۔ ہم ان ملازمتوں کی تعداد بھی بتاتے ہیں جن کو ہم مجموعی طور پر چلانا چاہتے ہیں، اس تعداد کے ساتھ جو متوازی چلنا چاہیے۔ ہم نے ملازمتوں کی زیادہ سے زیادہ تعداد کو 9 کے طور پر منتخب کیا ہے، لیکن آپ عام طور پر بہترین کارکردگی کے لیے بہت زیادہ تعداد (جیسے 50) کا انتخاب کریں گے۔

  3. بنائیں HyperparameterTuner مندرجہ ذیل کوڈ کے ساتھ اعتراض:
    tuner = HyperparameterTuner(
    estimator,
    objective_metric_name,
    hyperparameter_ranges,
    metric_definitions,
    max_jobs=9,
    max_parallel_jobs=3,
    objective_type=objective_type,
    )

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

Bayesian آپٹیمائزیشن کے ساتھ، ہائپر پیرامیٹر ٹیوننگ کو a کے طور پر سمجھا جاتا ہے۔ رجعت مسئلہ اس رجعت کے مسئلے کو حل کرنے کے لیے، یہ اندازہ لگاتا ہے کہ کون سے ہائپر پیرامیٹر کے امتزاج سے بہترین نتائج حاصل ہوں گے، اور ان اقدار کو جانچنے کے لیے تربیتی ملازمتیں چلاتے ہیں۔ یہ جانچنے کے لیے ہائپر پیرامیٹر اقدار کے اگلے سیٹ کو منتخب کرنے کے لیے رجعت کا استعمال کرتا ہے۔ یہاں ایک واضح استحصال/تجارتی تجارت ہے جسے تلاش کی حکمت عملی یہاں بناتی ہے۔ یہ مجموعے کے قریب ہائپر پیرامیٹر اقدار کا انتخاب کر سکتا ہے جس کے نتیجے میں کارکردگی کو بتدریج بہتر بنانے کے لیے بہترین سابقہ ​​تربیتی کام حاصل ہوا۔ یا، یہ قدروں کی ایک نئی رینج کو آزمانے اور دریافت کرنے کے لیے قدروں کا انتخاب کر سکتا ہے جو ابھی تک اچھی طرح سے سمجھ میں نہیں آئی ہیں۔

تاہم، آپ تلاش کی دیگر حکمت عملیوں کی وضاحت کر سکتے ہیں۔ SageMaker میں درج ذیل حکمت عملیوں کی حمایت کی جاتی ہے:

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

جیسا کہ اس میں وضاحت کی گئی ہے، آپ اپنا الگورتھم لانے کا بھی جائزہ لے سکتے ہیں۔ Amazon SageMaker پر اپنا ہائیپرپیرامیٹر آپٹیمائزیشن الگورتھم لائیں۔.

  1. اس کے بعد ہم ٹیونر آبجیکٹ پر ہی ٹریننگ شروع کرتے ہیں (اندازہ لگانے والا نہیں)، کال کرتے ہیں۔ .fit() اور ہماری ٹرین اور ٹیسٹ ڈیٹاسیٹ تک S3 کے راستے سے گزرنا:
    tuner.fit({"training": inputs})

اس کے بعد ہم سیج میکر کنسول پر اپنی ٹیوننگ جاب کی پیشرفت کی پیروی کر سکتے ہیں۔ ہائپر پیرامیٹر ٹیوننگ جابز صفحہ ٹیوننگ جاب ہر انفرادی ٹریننگ رن اور اس سے منسلک کمپیوٹ کو ترتیب دے کر بنیادی کمپیوٹ وسائل کو گھماتی ہے۔

پھر ان تمام انفرادی تربیتی ملازمتوں کو دیکھنا آسان ہے جو مکمل ہو چکی ہیں یا جاری ہیں، ان کے متعلقہ مقصدی میٹرک ویلیو کے ساتھ۔ مندرجہ ذیل اسکرین شاٹ میں، ہم دیکھ سکتے ہیں کہ تربیتی ملازمتوں کی پہلی کھیپ مکمل ہو چکی ہے، جس میں ہمارے بیان کردہ کے مطابق کل تین ہیں max_parallel_jobs 3 کی قدر۔ مکمل ہونے پر، ہم بہترین تربیتی جاب تلاش کر سکتے ہیں- جو اوسط ٹیسٹ کے نقصان کو کم کرتا ہے- بہترین تربیتی کام ٹیب.

تربیتی ملازمتوں کی فہرست کا اسکرین شاٹ

صاف کرو

مستقبل کے چارجز سے بچنے کے لیے، اپنے شروع کردہ وسائل کو حذف کریں۔ یہ S3 بالٹی، IAM رول، اور SageMaker نوٹ بک مثال ہیں۔

نتیجہ

اس پوسٹ میں، ہم نے اس بات پر تبادلہ خیال کیا کہ ہم کس طرح اپنے ماڈل کو SageMaker میں لا سکتے ہیں، اور پھر بہترین تربیتی کام کو منتخب کرنے کے لیے خودکار ہائپر پیرامیٹر آپٹیمائزیشن کا استعمال کریں۔ ہم نے یہ دیکھنے کے لیے مشہور MNIST ڈیٹاسیٹ کا استعمال کیا کہ ہم کس طرح ایک حسب ضرورت مقصدی میٹرک کی وضاحت کر سکتے ہیں جس کے لیے HPO جاب کو بہتر بنانا چاہیے۔ CloudWatch سے اس مقصدی میٹرک کو نکال کر، اور مختلف ہائپر پیرامیٹر ویلیوز کو بتا کر، ہم آسانی سے HPO جاب کو لانچ اور مانیٹر کر سکتے ہیں۔

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


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

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

ٹائم اسٹیمپ:

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