آموزش افزایشی با Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

آموزش افزایشی با Amazon SageMaker JumpStart

در ماه دسامبر 2020 AWS در دسترس بودن عمومی Amazon SageMaker JumpStart را اعلام کرد، قابلیتی از آمازون SageMaker که به شما کمک می کند تا به سرعت و به راحتی با یادگیری ماشین (ML) شروع کنید. SageMaker JumpStart تنظیم دقیق و استقرار طیف گسترده ای از مدل های از پیش آموزش داده شده را با یک کلیک در وظایف رایج ML و همچنین مجموعه ای از راه حل های سرتاسری که مشکلات رایج تجاری را حل می کند، ارائه می دهد. این ویژگی‌ها بار سنگین را از هر مرحله از فرآیند ML حذف می‌کنند و توسعه مدل‌های با کیفیت بالا را آسان‌تر می‌کنند و زمان استقرار را کاهش می‌دهند.

تمام محتوای JumpStart قبلاً فقط از طریق در دسترس بود Amazon SageMaker Studioکه فراهم می کند رابط گرافیکی کاربر پسند برای تعامل با ویژگی اخیرا ما نیز راه اندازی را اعلام کرد آسان برای استفاده API های JumpStart به عنوان یک توسعه از SageMaker Python SDK، به شما این امکان را می دهد که به صورت برنامه نویسی مجموعه وسیعی از مدل های از پیش آموزش دیده با پشتیبانی از JumpStart را بر روی مجموعه داده های خود استقرار و تنظیم دقیق کنید. این راه‌اندازی، استفاده از قابلیت‌های JumpStart را در جریان‌های کاری کد، خطوط لوله MLOps و هر جای دیگری که از طریق SDK با SageMaker تعامل دارید، باز می‌کند.

در این پست، ما مشتاقیم اعلام کنیم که تمام مدل‌های JumpStart قابل آموزش اکنون از آموزش افزایشی پشتیبانی می‌کنند. آموزش افزایشی به شما امکان می‌دهد مدلی را که قبلاً تنظیم دقیق کرده‌اید، با استفاده از یک مجموعه داده توسعه‌یافته که شامل یک الگوی زیربنایی است که در اجرای تنظیم دقیق قبلی در نظر گرفته نشده است، آموزش دهید، که منجر به عملکرد ضعیف مدل شد. آموزش افزایشی باعث صرفه جویی در زمان و منابع می شود زیرا نیازی به آموزش مجدد مدل از ابتدا ندارید. اگر می خواهید مستقیماً به کد JumpStart API که در این پست توضیح می دهیم بروید، می توانید به نمونه دفترچه یادداشت.

نمای کلی JumpStart

JumpStart یک محصول چند وجهی است که دارای قابلیت های مختلفی است تا به شما کمک کند تا به سرعت با ML در SageMaker شروع کنید. در زمان نوشتن، JumpStart به شما امکان می دهد کارهای زیر را انجام دهید:

  • استقرار مدل های از پیش آموزش دیده برای کارهای رایج ML – JumpStart شما را قادر می‌سازد تا با ارائه استقرار آسان مدل‌های از پیش آموزش‌دیده‌شده در مجموعه داده‌های بزرگ و در دسترس عموم، به وظایف رایج ML بدون هیچ تلاشی برای توسعه رسیدگی کنید. جامعه تحقیقاتی ML تلاش زیادی را برای در دسترس قرار دادن اکثر مدل‌های اخیراً توسعه‌یافته در دسترس عموم برای استفاده انجام داده است. JumpStart مجموعه ای از بیش از 300 مدل را میزبانی می کند که شامل 15 کار محبوب ML مانند تشخیص اشیا، طبقه بندی متن و تولید متن است و استفاده از آنها را برای مبتدیان آسان می کند. این مدل ها از هاب های مدل محبوب مانند TensorFlow، PyTorch، Hugging Face و MXNet Hub گرفته شده اند.
  • مدل های از پیش آموزش دیده را تنظیم کنید - JumpStart به شما امکان می دهد مدل های از پیش آموزش دیده را بدون نیاز به نوشتن الگوریتم آموزشی خود تنظیم کنید. در ML، توانایی انتقال دانش آموخته شده در یک حوزه به حوزه دیگر نامیده می شود انتقال یادگیری. می‌توانید از یادگیری انتقالی برای تولید مدل‌های دقیق روی مجموعه داده‌های کوچک‌تر خود، با هزینه‌های آموزشی بسیار پایین‌تر از مواردی که در آموزش مدل اصلی دخیل هستند، استفاده کنید. JumpStart همچنین شامل الگوریتم‌های آموزشی محبوب مبتنی بر LightGBM، CatBoost، XGBoost و Scikit-learn است که می‌توانید از ابتدا برای رگرسیون جدولی و طبقه‌بندی آموزش دهید.
  • از راه حل های از پیش ساخته شده استفاده کنید – JumpStart مجموعه ای از 17 راه حل را برای موارد رایج استفاده از ML مانند پیش بینی تقاضا و برنامه های صنعتی و مالی ارائه می دهد که می توانید تنها با چند کلیک آن ها را اجرا کنید. راه‌حل‌ها برنامه‌های کاربردی ML سرتاسری هستند که خدمات مختلف AWS را برای حل یک مورد استفاده تجاری خاص با هم ترکیب می‌کنند. آنها استفاده می کنند AWS CloudFormation قالب ها و معماری های مرجع برای استقرار سریع، به این معنی که آنها کاملا قابل تنظیم هستند.
  • از نمونه های نوت بوک برای الگوریتم های SageMaker استفاده کنید – SageMaker مجموعه‌ای از الگوریتم‌های داخلی را برای کمک به دانشمندان داده و پزشکان ML ارائه می‌کند تا با آموزش و استقرار سریع مدل‌های ML شروع کنند. JumpStart نمونه نوت بوک هایی را ارائه می دهد که می توانید از آنها برای اعمال سریع این الگوریتم ها استفاده کنید.
  • ویدئوهای آموزشی و وبلاگ ها را مرور کنید – JumpStart همچنین پست‌ها و ویدیوهای وبلاگ متعددی را ارائه می‌کند که به شما می‌آموزد چگونه از قابلیت‌های مختلف در SageMaker استفاده کنید.

JumpStart تنظیمات سفارشی VPC و سرویس مدیریت کلید AWS (AWS KMS) کلیدهای رمزگذاری، بنابراین می توانید از مدل ها و راه حل های موجود به طور ایمن در محیط سازمانی خود استفاده کنید. می توانید تنظیمات امنیتی خود را در استودیو یا از طریق SageMaker Python SDK به JumpStart منتقل کنید.

طبقه بندی تصویر

طبقه بندی تصویر به طبقه بندی یک تصویر در یکی از برچسب های کلاس در مجموعه داده آموزشی اشاره دارد. می‌توانید مدل را با هر مجموعه داده‌ای شامل تصاویر متعلق به هر تعداد کلاس تنظیم کنید. مدل موجود برای تنظیم دقیق در JumpStart یک لایه طبقه بندی را به مدل استخراج کننده ویژگی مربوطه متصل می کند و پارامترهای لایه را به مقادیر تصادفی مقداردهی اولیه می کند. بعد خروجی لایه طبقه بندی بر اساس تعداد کلاس ها در داده های ورودی تعیین می شود. مرحله تنظیم دقیق، پارامترهای لایه طبقه‌بندی را تنظیم می‌کند، در حالی که پارامترهای مدل استخراج ویژگی را ثابت نگه می‌دارد، و مدل دقیق تنظیم شده را برمی‌گرداند. هدف به حداقل رساندن خطای پیش‌بینی در داده‌های ورودی است.

برای مجموعه داده ما، ورودی یک دایرکتوری است که به تعداد کلاس‌ها، زیر شاخه‌ها دارد. هر زیر شاخه باید دارای تصاویر متعلق به آن کلاس با فرمت jpg باشد. دایرکتوری ورودی باید مانند سلسله مراتب زیر باشد اگر داده های آموزشی حاوی تصاویری از دو کلاس باشد: roses و dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

نام پوشه ها، کلاس ها و نام فایل jpg. می تواند هر چیزی باشد.

ما ارائه می دهیم tf_flowers1 مجموعه داده به عنوان یک مجموعه داده پیش فرض برای تنظیم دقیق مدل. این مجموعه داده شامل تصاویری از پنج نوع گل است. مجموعه داده از دانلود شده است TensorFlow.

مرور کلی

بخش‌های زیر یک نسخه نمایشی گام به گام برای انجام طبقه‌بندی تصاویر با JumpStart، از طریق Studio UI و JumpStart API ارائه می‌کنند.

مراحل زیر را طی می کنیم:

  1. از طریق رابط کاربری Studio به JumpStart دسترسی پیدا کنید:
    1. مدل از پیش آموزش دیده را تنظیم دقیق کنید.
    2. مدل دقیق تنظیم شده را اجرا کنید.
    3. مدل تنظیم شده را به صورت تدریجی آموزش دهید و مجدداً مستقر کنید.
  2. از JumpStart به صورت برنامه نویسی با SageMaker Python SDK استفاده کنید:
    1. مدل از پیش آموزش دیده را تنظیم دقیق کنید.
    2. مدل دقیق تنظیم شده را اجرا کنید.
    3. مدل تنظیم شده را به صورت تدریجی آموزش دهید و مجدداً مستقر کنید.

از طریق رابط کاربری Studio به JumpStart دسترسی پیدا کنید

در این بخش، نحوه تنظیم دقیق و استقرار مدل‌های JumpStart را از طریق رابط کاربری Studio نشان می‌دهیم. علاوه بر این، نحوه آموزش تدریجی مدلی را که قبلاً تنظیم کرده اید، نشان می دهیم.

مدل از پیش آموزش دیده را تنظیم دقیق کنید

ویدئوی زیر به شما نشان می دهد که چگونه یک مدل طبقه بندی تصویر از پیش آموزش دیده را در JumpStart پیدا کنید و آن را به دقت تنظیم کنید. صفحه مدل حاوی اطلاعات ارزشمندی در مورد مدل، نحوه استفاده از آن، قالب داده مورد انتظار و برخی جزئیات تنظیم دقیق است.

برای اهداف نمایشی، ما مدل را با استفاده از مجموعه داده‌ای که به‌طور پیش‌فرض ارائه شده است، تنظیم می‌کنیم tf_flowers مجموعه داده، متشکل از انواع مختلف گل. تنظیم دقیق مجموعه داده های خود شامل قالب بندی صحیح داده ها (همانطور که در صفحه مدل توضیح داده شده است)، بارگذاری آن ها در سرویس ذخیره سازی ساده آمازون (Amazon S3) و تعیین مکان آن در پیکربندی منبع داده.

ما از همان مقادیر فراپارامتر تنظیم شده به طور پیش فرض استفاده می کنیم (تعداد دوره ها، نرخ یادگیری و اندازه دسته). ما همچنین از یک نمونه ml.p3.2xlarge با پشتیبانی GPU به عنوان نمونه آموزشی SageMaker خود استفاده می کنیم.

می توانید کار آموزشی خود را مستقیماً در کنسول استودیو نظارت کنید و پس از اتمام آن به شما اطلاع داده می شود.

مدل دقیق تنظیم شده را اجرا کنید

پس از تکمیل آموزش، می‌توانید مدل تنظیم‌شده را از همان صفحه‌ای که جزئیات کار آموزشی را در خود دارد، اجرا کنید. برای استقرار مدل خود، یک نوع نمونه متفاوت، ml.p2.xlarge را انتخاب می کنیم. هنوز هم شتاب GPU مورد نیاز برای تأخیر استنتاج کم، اما با قیمت پایین‌تر را فراهم می‌کند. پس از پیکربندی نمونه میزبانی SageMaker، را انتخاب کنید گسترش. ممکن است 5 تا 10 دقیقه طول بکشد تا نقطه پایان دائمی شما آماده و اجرا شود.

سپس نقطه پایانی شما عملیاتی شده و آماده پاسخگویی به درخواست‌های استنتاج است!

برای تسریع زمان شما برای استنتاج، JumpStart یک دفترچه یادداشت نمونه ارائه می دهد که به شما نشان می دهد چگونه استنتاج را در نقطه پایانی تازه مستقر شده خود اجرا کنید. انتخاب کنید نوت بوک را باز کنید زیر از Endpoint استفاده کنید از استودیو

مدل تنظیم شده را به صورت تدریجی آموزش دهید و به کار بگیرید

وقتی تنظیم دقیق کامل شد، می‌توانید مدل را بیشتر آموزش دهید تا عملکرد را افزایش دهید. این مرحله بسیار شبیه به فرآیند تنظیم دقیق اولیه است، با این تفاوت که ما از مدلی که قبلاً تنظیم دقیق شده است به عنوان نقطه شروع استفاده می کنیم. ممکن است از داده های جدید استفاده کنید، اما قالب مجموعه داده ها باید یکسان باشد (همان مجموعه ای از کلاس ها).

از JumpStart به صورت برنامه نویسی با SageMaker SDK استفاده کنید

در بخش‌های قبل، نشان دادیم که چگونه می‌توانید از JumpStart UI برای تنظیم دقیق، استقرار و آموزش تدریجی یک مدل به صورت تعاملی در چند کلیک استفاده کنید. همچنین می‌توانید با استفاده از APIهایی که در SageMaker SDK ادغام شده‌اند، از مدل‌های JumpStart استفاده کنید و به صورت برنامه‌نویسی تنظیم دقیق آن را آسان کنید. ما اکنون به یک مثال سریع می پردازیم که چگونه می توانید فرآیند قبلی را تکرار کنید. تمامی مراحل این دمو در نوت بوک های همراه موجود است مقدمه ای بر JumpStart – طبقه بندی تصاویر.

مدل از پیش آموزش دیده را تنظیم دقیق کنید

برای تنظیم دقیق یک مدل انتخاب شده، باید URI آن مدل و همچنین اسکریپت آموزشی و تصویر ظرف مورد استفاده برای آموزش را دریافت کنیم. خوشبختانه، این سه ورودی فقط به نام مدل، نسخه بستگی دارد (برای لیست مدل های موجود، نگاه کنید به جدول مدل در دسترس JumpStart) و نوع نمونه ای که می خواهید روی آن آموزش دهید. این در قطعه کد زیر نشان داده شده است:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

ما را بازیابی می کنیم model_id مطابق با همان مدلی که قبلا استفاده کردیم. ic در شناسه مربوط به طبقه بندی تصویر است.

اکنون می توانید این مدل JumpStart را با استفاده از SageMaker SDK روی مجموعه داده های سفارشی خود تنظیم کنید. ما از همان استفاده می کنیم tf_flowers مجموعه داده ای که به صورت عمومی در آمازون S3 میزبانی می شود، به راحتی بر تجزیه و تحلیل احساسات متمرکز شده است. همانطور که در بخش قبل توضیح داده شد، مجموعه داده شما باید برای تنظیم دقیق ساختاری داشته باشد. کد نمونه زیر را ببینید:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

ما همان هایپرپارامترهای پیش فرض را برای مدل انتخابی خود مانند آنچه در بخش قبل دیدیم، با استفاده از آن به دست می آوریم sagemaker.hyperparameters.retrieve_default(). سپس یک تخمین‌گر SageMaker را نمونه‌سازی می‌کنیم و روش .fit را فراخوانی می‌کنیم تا تنظیم دقیق مدل خود را آغاز کنیم و آن را از آمازون S3 URI برای داده‌های آموزشی خود ارسال کنیم. همانطور که می بینید، entry_point اسکریپت ارائه شده نامگذاری شده است transfer_learning.py (برای سایر وظایف و مدل‌ها همین‌طور است)، و کانال داده ورودی به آن منتقل می‌شود .fit باید نام برد training.

استقرار مدل دقیق تنظیم شده

هنگامی که آموزش کامل شد، می توانید مدل دقیق تنظیم شده خود را مستقر کنید. برای انجام این کار، تنها چیزی که باید به دست آوریم URI اسکریپت استنتاج (کدی که تعیین می‌کند مدل پس از استقرار چگونه برای استنتاج استفاده می‌شود) و URI تصویر ظرف استنتاج است که شامل یک سرور مدل مناسب برای میزبانی مدلی است که انتخاب کردیم. کد زیر را ببینید:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

پس از چند دقیقه، مدل ما مستقر می شود و می توانیم پیش بینی هایی را در زمان واقعی از آن دریافت کنیم!

در مرحله بعد، نقطه پایانی را فراخوانی می کنیم تا پیش بینی کنیم که چه نوع گلی در تصویر مثال وجود دارد. ما استفاده می کنیم query_endpoint و parse_response توابع کمکی، که در همراه تعریف شده است دفتر یادداشت.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

مدل تنظیم شده را به صورت تدریجی آموزش دهید و مجدداً مستقر کنید

ما می‌توانیم با آموزش بیشتر یک مدل تنظیم‌شده روی تصاویر جدید، عملکرد آن را افزایش دهیم. برای این کار می‌توانید از هر تعداد تصویر جدید یا قدیمی استفاده کنید، اما قالب مجموعه داده‌ها باید ثابت بماند (همان مجموعه کلاس‌ها). مرحله آموزش افزایشی مشابه فرآیند تنظیم دقیق است، با یک تفاوت مهم: در تنظیم اولیه با یک مدل از قبل آموزش دیده شروع می کنیم، در حالی که در آموزش افزایشی با یک مدل تنظیم دقیق موجود شروع می کنیم. کد زیر را ببینید:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

وقتی آموزش کامل شد، می‌توانیم از همان مراحلی که در بخش قبل توضیح داده شد برای استقرار مدل استفاده کنیم.

نتیجه

JumpStart یک قابلیت در SageMaker است که به شما اجازه می دهد تا به سرعت با ML شروع کنید. JumpStart از مدل‌های از پیش آموزش‌دیده منبع باز برای حل مشکلات رایج ML مانند طبقه‌بندی تصویر، تشخیص اشیا، طبقه‌بندی متن، طبقه‌بندی جفت جمله و پاسخ‌گویی به سؤال استفاده می‌کند.

در این پست، ما به شما نشان دادیم که چگونه یک مدل طبقه بندی تصویر از پیش آموزش دیده را تنظیم و به کار ببرید. ما همچنین نحوه آموزش تدریجی یک مدل تنظیم شده برای طبقه بندی تصاویر را نشان دادیم. با JumpStart می توانید به راحتی این فرآیند را بدون نیاز به کدنویسی انجام دهید. راه حل را به تنهایی امتحان کنید و در نظرات به ما اطلاع دهید که چگونه پیش می رود. برای کسب اطلاعات بیشتر در مورد JumpStart، ویدیوی AWS re:Invent 2020 را بررسی کنید با Amazon SageMaker JumpStart در عرض چند دقیقه با ML شروع کنید.

منابع

  1. تیم تنسورفلو، 2019

درباره نویسنده

آموزش افزایشی با Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.دکتر ویوک مدان یک دانشمند کاربردی با تیم آمازون SageMaker JumpStart است. دکترا گرفت. از دانشگاه ایلینویز در Urbana-Champaign و پژوهشگر پست دکتری در جورجیا تک بود. او یک محقق فعال در یادگیری ماشین و طراحی الگوریتم است و مقالاتی در کنفرانس های EMNLP، ICLR، COLT، FOCS و SODA منتشر کرده است.

آموزش افزایشی با Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.ژائو مورا یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون است. او بیشتر بر موارد استفاده از NLP و کمک به مشتریان برای بهینه سازی آموزش و استقرار مدل یادگیری عمیق متمرکز است. او همچنین یکی از حامیان فعال راه حل های ML با کد پایین و سخت افزار تخصصی ML است.

آموزش افزایشی با Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.دکتر آشیش ختان دانشمند ارشد کاربردی با Amazon SageMaker JumpStart و الگوریتم های داخلی آمازون SageMaker و به توسعه الگوریتم های یادگیری ماشین کمک می کند. او یک محقق فعال در یادگیری ماشین و استنتاج آماری است و مقالات زیادی در کنفرانس های NeurIPS، ICML، ICLR، JMLR، ACL و EMNLP منتشر کرده است.

تمبر زمان:

بیشتر از آموزش ماشین AWS