ایجاد خطوط لوله یادگیری ماشینی قوی و قابل استفاده مجدد (ML) می تواند یک فرآیند پیچیده و زمان بر باشد. توسعه دهندگان معمولاً اسکریپت های پردازشی و آموزشی خود را به صورت محلی آزمایش می کنند، اما خود خطوط لوله معمولاً در فضای ابری آزمایش می شوند. ایجاد و اجرای یک خط لوله کامل در طول آزمایش، سربار و هزینه ناخواسته را به چرخه عمر توسعه اضافه می کند. در این پست نحوه استفاده شما را به تفصیل شرح می دهیم حالت محلی Amazon SageMaker Pipelines برای اجرای خطوط لوله ML به صورت محلی برای کاهش توسعه خط لوله و زمان اجرا و در عین حال کاهش هزینه. پس از اینکه خط لوله به طور کامل به صورت محلی آزمایش شد، می توانید به راحتی آن را دوباره اجرا کنید آمازون SageMaker منابع مدیریت شده تنها با چند خط تغییر کد.
مروری بر چرخه حیات ML
یکی از محرکهای اصلی برای نوآوریها و برنامههای کاربردی جدید در ML، در دسترس بودن و مقدار داده به همراه گزینههای محاسباتی ارزانتر است. در چندین حوزه، ML ثابت کرده است که قادر به حل مسائلی است که قبلاً با کلان دادههای کلاسیک و تکنیکهای تحلیلی قابل حل نبودند، و تقاضا برای علم داده و متخصصان ML به طور پیوسته در حال افزایش است. از یک سطح بسیار بالا، چرخه حیات ML از بخش های مختلفی تشکیل شده است، اما ساخت یک مدل ML معمولاً شامل مراحل کلی زیر است:
- پاکسازی و آماده سازی داده ها (مهندسی ویژگی)
- آموزش و کوک مدل
- ارزیابی مدل
- استقرار مدل (یا تبدیل دسته ای)
در مرحله آمادهسازی داده، دادهها بارگذاری میشوند، ماساژ داده میشوند و به نوع ورودیها یا ویژگیهایی که مدل ML انتظار دارد، تبدیل میشوند. نوشتن اسکریپت ها برای تبدیل داده ها معمولاً یک فرآیند تکراری است که در آن حلقه های بازخورد سریع برای سرعت بخشیدن به توسعه مهم هستند. معمولاً هنگام آزمایش اسکریپت های مهندسی ویژگی، استفاده از مجموعه داده کامل ضروری نیست، به همین دلیل است که می توانید از ویژگی حالت محلی پردازش SageMaker. این به شما امکان می دهد تا به صورت محلی اجرا کنید و کد را به صورت مکرر با استفاده از مجموعه داده کوچکتر به روز کنید. وقتی کد نهایی آماده شد، به کار پردازش از راه دور ارسال میشود که از مجموعه داده کامل استفاده میکند و روی نمونههای مدیریتشده SageMaker اجرا میشود.
فرآیند توسعه مشابه مرحله آماده سازی داده ها برای مراحل آموزش مدل و مراحل ارزیابی مدل است. دانشمندان داده از ویژگی حالت محلی SageMaker Training برای تکرار سریع با مجموعه داده های کوچکتر به صورت محلی، قبل از استفاده از تمام داده ها در یک خوشه مدیریت شده SageMaker از نمونه های بهینه شده با ML. این امر روند توسعه را سرعت می بخشد و هزینه اجرای نمونه های ML را که توسط SageMaker در حین آزمایش مدیریت می شوند حذف می کند.
با افزایش بلوغ ML سازمان، می توانید از آن استفاده کنید خطوط لوله آمازون SageMaker برای ایجاد خطوط لوله ML که این مراحل را به هم متصل می کند و جریان های کاری پیچیده تری را ایجاد می کند که مدل های ML را پردازش، آموزش و ارزیابی می کند. SageMaker Pipelines یک سرویس کاملاً مدیریت شده برای خودکارسازی مراحل مختلف گردش کار ML، از جمله بارگذاری داده، تبدیل داده، آموزش و تنظیم مدل، و استقرار مدل است. تا همین اواخر، شما می توانستید اسکریپت های خود را به صورت محلی توسعه داده و آزمایش کنید، اما مجبور بودید خطوط لوله ML خود را در فضای ابری آزمایش کنید. این باعث شد که تکرار در جریان و شکل خطوط لوله ML فرآیندی کند و پرهزینه باشد. اکنون، با ویژگی حالت محلی اضافه شده SageMaker Pipelines، میتوانید خطوط لوله ML خود را مشابه نحوه آزمایش و تکرار روی اسکریپتهای پردازش و آموزشی خود تکرار و آزمایش کنید. میتوانید خطوط لوله خود را روی دستگاه محلی خود اجرا و آزمایش کنید، با استفاده از زیرمجموعه کوچکی از دادهها برای اعتبارسنجی نحو خط لوله و عملکردها.
خطوط لوله SageMaker
SageMaker Pipelines یک روش کاملاً خودکار برای اجرای گردشهای کاری ساده یا پیچیده ML ارائه میکند. با SageMaker Pipelines، میتوانید گردشهای کاری ML را با استفاده از Python SDK ایجاد کنید و سپس گردش کار خود را با استفاده از آن تجسم و مدیریت کنید. Amazon SageMaker Studio. با ذخیره و استفاده مجدد از مراحل گردش کاری که در SageMaker Pipelines ایجاد می کنید، تیم های علم داده شما می توانند کارآمدتر و سریعتر مقیاس شوند. همچنین میتوانید از قالبهای از پیش ساخته شده استفاده کنید که زیرساخت و ایجاد مخزن را برای ساخت، آزمایش، ثبت و استقرار مدلها در محیط ML خود خودکار میکنند. این الگوها به طور خودکار در دسترس سازمان شما هستند و با استفاده از آنها ارائه می شوند کاتالوگ خدمات AWS محصولات می باشد.
SageMaker Pipelines یکپارچهسازی و استقرار مداوم (CI/CD) را به ML میآورد، مانند حفظ برابری بین محیطهای توسعه و تولید، کنترل نسخه، آزمایش بر اساس تقاضا، و اتوماسیون سرتاسر، که به شما کمک میکند ML را در سرتاسر خود مقیاس کنید. سازمان. متخصصان DevOps میدانند که برخی از مزایای اصلی استفاده از تکنیکهای CI/CD شامل افزایش بهرهوری از طریق اجزای قابل استفاده مجدد و افزایش کیفیت از طریق آزمایش خودکار است که منجر به بازگشت سرمایه سریعتر برای اهداف تجاری شما میشود. این مزایا اکنون با استفاده از SageMaker Pipelines برای خودکارسازی آموزش، آزمایش و استقرار مدلهای ML در دسترس پزشکان MLOps است. با حالت محلی، اکنون میتوانید در حین توسعه اسکریپتها برای استفاده در خط لوله، سریعتر تکرار کنید. توجه داشته باشید که نمونههای خط لوله محلی را نمیتوان در Studio IDE مشاهده یا اجرا کرد. با این حال، گزینه های مشاهده اضافی برای خطوط لوله محلی به زودی در دسترس خواهد بود.
SageMaker SDK یک هدف کلی ارائه می دهد پیکربندی حالت محلی که به توسعه دهندگان اجازه می دهد تا پردازنده ها و برآوردگرهای پشتیبانی شده را در محیط محلی خود اجرا و آزمایش کنند. می توانید از آموزش حالت محلی با چندین تصویر فریمورک پشتیبانی شده AWS (TensorFlow، MXNet، Chainer، PyTorch و Scikit-Learn) و همچنین تصاویری که خودتان تهیه می کنید استفاده کنید.
SageMaker Pipelines که یک گراف غیر چرخه ای جهت دار (DAG) از مراحل گردش کار هماهنگ می سازد، از بسیاری از فعالیت هایی که بخشی از چرخه حیات ML هستند پشتیبانی می کند. در حالت محلی، مراحل زیر پشتیبانی می شوند:
- پردازش مراحل کار - یک تجربه مدیریت شده و ساده در SageMaker برای اجرای بارهای کاری پردازش داده، مانند مهندسی ویژگی، اعتبارسنجی داده، ارزیابی مدل و تفسیر مدل
- مراحل کار آموزش - یک فرآیند تکراری که به یک مدل می آموزد تا با ارائه نمونه هایی از مجموعه داده آموزشی، پیش بینی کند
- کارهای تنظیم فراپارامتر - روشی خودکار برای ارزیابی و انتخاب فراپارامترهایی که دقیق ترین مدل را تولید می کنند
- مراحل اجرای مشروط - مرحله ای که اجرای مشروط شاخه ها را در یک خط لوله فراهم می کند
- مرحله مدل – با استفاده از آرگومان های CreateModel، این مرحله می تواند یک مدل برای استفاده در مراحل تبدیل یا استقرار بعدی به عنوان نقطه پایانی ایجاد کند.
- تغییر مراحل شغلی - یک کار تبدیل دسته ای که پیش بینی هایی را از مجموعه داده های بزرگ ایجاد می کند و در صورت عدم نیاز به نقطه پایانی پایدار، استنتاج را اجرا می کند.
- مراحل شکست – مرحله ای که اجرای خط لوله را متوقف می کند و اجرا را به عنوان ناموفق علامت گذاری می کند
بررسی اجمالی راه حل
راه حل ما مراحل ضروری برای ایجاد و اجرای SageMaker Pipelines را در حالت محلی نشان می دهد، که به معنای استفاده از CPU، RAM و منابع دیسک محلی برای بارگیری و اجرای مراحل گردش کار است. محیط محلی شما میتواند روی لپتاپ اجرا شود، با استفاده از IDEهای محبوب مانند VSCode یا PyCharm، یا میتواند توسط SageMaker با استفاده از نمونههای نوتبوک کلاسیک میزبانی شود.
حالت محلی به دانشمندان داده اجازه می دهد تا مراحلی را که می تواند شامل کارهای پردازش، آموزش و ارزیابی باشد و کل گردش کار را به صورت محلی اجرا کند، به هم بچسبانند. پس از اتمام آزمایش به صورت محلی، میتوانید خط لوله را در یک محیط مدیریت شده SageMaker با جایگزینی مجدد اجرا کنید LocalPipelineSession
شی با PipelineSession
، که ثبات چرخه عمر ML را به ارمغان می آورد.
برای این نمونه نوت بوک، ما از یک مجموعه داده استاندارد در دسترس عموم استفاده می کنیم مجموعه داده های Abalone یادگیری ماشین UCI. هدف آموزش یک مدل ML برای تعیین سن یک حلزون آبلون از روی اندازه گیری های فیزیکی آن است. در اصل، این یک مشکل رگرسیون است.
تمام کدهای مورد نیاز برای اجرای این نمونه نوت بوک در GitHub موجود است amazon-sagemaker-examples مخزن در این نمونه نوت بوک، هر مرحله گردش کاری خط لوله به طور مستقل ایجاد می شود و سپس برای ایجاد خط لوله به هم متصل می شود. ما مراحل زیر را ایجاد می کنیم:
- مرحله پردازش (مهندسی ویژگی)
- مرحله آموزش (آموزش مدل)
- مرحله پردازش (ارزیابی مدل)
- مرحله شرط (دقت مدل)
- ایجاد مرحله مدل (مدل)
- مرحله تبدیل (تبدیل دسته ای)
- ثبت مرحله مدل (بسته مدل)
- مرحله شکست (اجرا نشد)
نمودار زیر خط لوله ما را نشان می دهد.
پیش نیازها
برای پیگیری این پست به موارد زیر نیاز دارید:
پس از ایجاد این پیش نیازها، می توانید نمونه دفترچه یادداشت را همانطور که در بخش های زیر توضیح داده شده است اجرا کنید.
خط لوله خود را بسازید
در این نمونه نوت بوک استفاده می کنیم حالت اسکریپت SageMaker برای اکثر فرآیندهای ML، به این معنی که ما کد واقعی پایتون (اسکریپتها) را برای انجام فعالیت و ارسال یک مرجع به این کد ارائه میکنیم. حالت اسکریپت انعطاف پذیری زیادی را برای کنترل رفتار در پردازش SageMaker فراهم می کند و به شما امکان می دهد کد خود را سفارشی کنید و در عین حال از ظروف از پیش ساخته شده SageMaker مانند XGBoost یا Scikit-Learn استفاده کنید. کد سفارشی در یک فایل اسکریپت پایتون با استفاده از سلول هایی که با دستور جادویی شروع می شوند، نوشته می شود %%writefile
، مانند موارد زیر:
%%writefile code/evaluation.py
فعال کننده اصلی حالت محلی است LocalPipelineSession
شی، که از Python SDK نمونه سازی شده است. بخش های کد زیر نحوه ایجاد خط لوله SageMaker را در حالت محلی نشان می دهد. اگرچه میتوانید یک مسیر داده محلی را برای بسیاری از مراحل خط لوله محلی پیکربندی کنید، اما Amazon S3 مکان پیشفرض برای ذخیره خروجی داده توسط تبدیل است. جدید LocalPipelineSession
در بسیاری از فراخوانی های API گردش کار SageMaker که در این پست توضیح داده شده است، شی به Python SDK ارسال می شود. توجه داشته باشید که می توانید از local_pipeline_session
متغیر برای بازیابی ارجاع به سطل پیش فرض S3 و نام منطقه فعلی.
قبل از ایجاد مراحل جداگانه خط لوله، برخی از پارامترهای مورد استفاده توسط خط لوله را تنظیم می کنیم. برخی از این پارامترها رشتهای هستند، در حالی که برخی دیگر بهعنوان انواع خاص شمارششده توسط SDK ایجاد میشوند. تایپ شمارش شده تضمین می کند که تنظیمات معتبر برای خط لوله ارائه شده است، مانند این مورد، که به خط لوله ارسال می شود. ConditionLessThanOrEqualTo
پائین تر گام بردارید:
mse_threshold = ParameterFloat(name="MseThreshold", default_value=7.0)
برای ایجاد یک مرحله پردازش داده، که در اینجا برای انجام مهندسی ویژگی استفاده می شود، از آن استفاده می کنیم SKLearnProcessor
برای بارگذاری و تبدیل مجموعه داده عبور می کنیم local_pipeline_session
متغیر سازنده کلاس، که به مرحله گردش کار دستور می دهد در حالت محلی اجرا شود:
سپس، اولین مرحله خط لوله واقعی خود را ایجاد می کنیم، a ProcessingStep
شی، همانطور که از SageMaker SDK وارد شده است. آرگومان های پردازنده از یک فراخوانی برگردانده می شوند SKLearnProcessor
متد run(). این مرحله گردش کار با سایر مراحل به سمت انتهای نوت بوک ترکیب می شود تا ترتیب عملیات در خط لوله را نشان دهد.
در مرحله بعد، ما کدی را برای ایجاد یک مرحله آموزشی با استفاده از SageMaker SDK ابتدا ارائه می کنیم. همین را پاس می کنیم local_pipeline_session
متغیر به تخمینگر، به نام xgb_train، به عنوان sagemaker_session
بحث و جدل. از آنجایی که می خواهیم یک مدل XGBoost را آموزش دهیم، باید یک URI تصویر معتبر با تعیین پارامترهای زیر، از جمله چارچوب و چندین پارامتر نسخه تولید کنیم:
برای مثال میتوانیم به صورت اختیاری روشهای تخمینگر اضافی را فراخوانی کنیم set_hyperparameters()
، برای ارائه تنظیمات هایپرپارامتر برای کار آموزشی. اکنون که تخمینگر را پیکربندی کردهایم، آماده ایجاد مرحله آموزشی واقعی هستیم. یک بار دیگر، ما وارد می کنیم TrainingStep
کلاس از کتابخانه SageMaker SDK:
در مرحله بعد، مرحله پردازش دیگری را برای انجام ارزیابی مدل ایجاد می کنیم. این کار با ایجاد a انجام می شود ScriptProcessor
نمونه و عبور از local_pipeline_session
شی به عنوان پارامتر:
برای فعال کردن استقرار مدل آموزش دیده، یا به a نقطه پایان بلادرنگ SageMaker یا برای تبدیل دسته ای، باید a ایجاد کنیم Model
با ارسال مصنوعات مدل، URI تصویر مناسب، و در صورت تمایل کد استنتاج سفارشی ما، موضوع را ارسال کنید. سپس این را پاس می کنیم Model
اعتراض به a ModelStep
، که به خط لوله محلی اضافه می شود. کد زیر را ببینید:
بعد، یک مرحله تبدیل دسته ای ایجاد می کنیم که در آن مجموعه ای از بردارهای ویژگی را ارسال می کنیم و استنتاج را انجام می دهیم. ابتدا باید a را ایجاد کنیم Transformer
اعتراض کنید و عبور دهید local_pipeline_session
پارامتر به آن سپس یک را ایجاد می کنیم TransformStep
، آرگومان های مورد نیاز را ارسال کنید و این را به تعریف خط لوله اضافه کنید:
در نهایت، میخواهیم یک شرط شاخه را به گردش کار اضافه کنیم تا فقط در صورتی که نتایج ارزیابی مدل با معیارهای ما مطابقت داشته باشد، تبدیل دستهای را اجرا کنیم. ما می توانیم این شرط را با اضافه کردن a نشان دهیم ConditionStep
با یک نوع شرایط خاص، مانند ConditionLessThanOrEqualTo
. سپس مراحل دو شاخه را بر می شمریم و اساساً شاخه های if/else یا true/false خط لوله را تعریف می کنیم. if_steps ارائه شده در ConditionStep
(step_create_model, step_transform) هر زمان که شرط ارزیابی شود اجرا می شوند True
.
نمودار زیر این شاخه شرطی و مراحل if/else مرتبط را نشان می دهد. تنها یک شعبه بر اساس نتیجه مرحله ارزیابی مدل در مقایسه با مرحله شرط اجرا می شود.
اکنون که تمام مراحل خود را تعریف کردهایم، و نمونههای کلاس اصلی ایجاد شدهاند، میتوانیم آنها را در یک خط لوله ترکیب کنیم. ما برخی از پارامترها را ارائه میدهیم و با فهرست کردن مراحل به ترتیب دلخواه، ترتیب عملکرد را به طور اساسی تعریف میکنیم. توجه داشته باشید که TransformStep
در اینجا نشان داده نمی شود زیرا هدف مرحله شرطی است و به عنوان آرگومان گام به آن ارائه شده است ConditionalStep
قبلا
برای اجرای خط لوله، باید دو روش را فراخوانی کنید: pipeline.upsert()
، که خط لوله را در سرویس اصلی آپلود می کند و pipeline.start()
، که شروع به اجرای خط لوله می کند. میتوانید از روشهای مختلف دیگری برای بررسی وضعیت اجرا، فهرست کردن مراحل خط لوله و موارد دیگر استفاده کنید. از آنجا که ما از جلسه خط لوله حالت محلی استفاده کردیم، این مراحل همه به صورت محلی روی پردازنده شما اجرا می شوند. خروجی سلول در زیر روش شروع، خروجی خط لوله را نشان می دهد:
شما باید یک پیام در پایین خروجی سلول مشابه زیر مشاهده کنید:
Pipeline execution d8c3e172-089e-4e7a-ad6d-6d76caf987b7 SUCCEEDED
به منابع مدیریت شده برگردید
پس از اینکه تأیید کردیم که خط لوله بدون خطا اجرا می شود و از جریان و شکل خط لوله راضی بودیم، می توانیم خط لوله را دوباره ایجاد کنیم اما با منابع مدیریت شده SageMaker و آن را دوباره اجرا کنیم. تنها تغییر مورد نیاز استفاده از PipelineSession
شی به جای LocalPipelineSession
:
از جانب Sagemaker.workflow.pipeline_context وارد کردن LocalPipelineSessionfrom sagemaker.workflow.pipeline_context import PipelineSession
local_pipeline_session = LocalPipelineSession()pipeline_session = PipelineSession()
این به سرویس اطلاع می دهد که هر مرحله را که به این شی جلسه ارجاع می دهد در منابع مدیریت شده SageMaker اجرا کند. با توجه به تغییر کوچک، ما فقط تغییرات کد مورد نیاز را در سلول کد زیر نشان می دهیم، اما همان تغییر باید در هر سلول با استفاده از local_pipeline_session
هدف - شی. با این حال، تغییرات در همه سلولها یکسان است، زیرا ما فقط آن را جایگزین میکنیم local_pipeline_session
شی با pipeline_session
هدف - شی.
پس از اینکه شیء جلسه محلی در همه جا جایگزین شد، خط لوله را دوباره ایجاد می کنیم و آن را با منابع مدیریت شده SageMaker اجرا می کنیم:
پاک کردن
اگر می خواهید محیط Studio را مرتب نگه دارید، می توانید از روش های زیر برای حذف خط لوله SageMaker و مدل استفاده کنید. کد کامل را می توانید در نمونه پیدا کنید دفتر یادداشت.
نتیجه
تا همین اواخر، میتوانستید از ویژگی حالت محلی SageMaker Processing و SageMaker Training برای تکرار اسکریپتهای پردازشی و آموزشی خود به صورت محلی، قبل از اجرای آنها بر روی تمام دادهها با منابع مدیریت شده SageMaker استفاده کنید. با ویژگی جدید حالت محلی SageMaker Pipelines، پزشکان ML اکنون میتوانند در هنگام تکرار در خطوط لوله ML خود از روش مشابهی استفاده کنند و جریانهای کاری مختلف ML را به هم بچسبانند. وقتی خط لوله آماده تولید است، اجرای آن با منابع مدیریت شده SageMaker فقط به چند خط تغییر کد نیاز دارد. این امر زمان اجرای خط لوله را در حین توسعه کاهش می دهد و منجر به توسعه سریع خط لوله با چرخه های توسعه سریع تر می شود و در عین حال هزینه منابع مدیریت شده SageMaker را کاهش می دهد.
برای کسب اطلاعات بیشتر، بازدید خطوط لوله آمازون SageMaker or از SageMaker Pipelines برای اجرای محلی مشاغل خود استفاده کنید.
درباره نویسندگان
پل هارگیس تلاش های خود را بر یادگیری ماشین در چندین شرکت از جمله AWS، Amazon و Hortonworks متمرکز کرده است. او از ساخت راهحلهای فنآوری و آموزش به مردم لذت میبرد که چگونه از آن بهترین استفاده را ببرند. قبل از نقشش در AWS، او معمار اصلی صادرات و توسعه آمازون بود و به amazon.com کمک کرد تا تجربه خریداران بینالمللی را بهبود بخشد. پل دوست دارد به مشتریان کمک کند تا ابتکارات یادگیری ماشینی خود را برای حل مشکلات دنیای واقعی گسترش دهند.
نخل نیکلاس یک معمار راه حل در AWS در استکهلم، سوئد است، جایی که به مشتریان در سراسر شمال اروپا کمک می کند تا در فضای ابری موفق شوند. او به خصوص به فناوریهای بدون سرور همراه با اینترنت اشیا و یادگیری ماشین علاقه دارد. خارج از محل کار، نیکلاس یک اسکی باز و اسنوبورد پرشور و همچنین یک دیگ بخار تخم مرغ است.
کریت تاداکا یک معمار ML Solutions است که در تیم SageMaker Service SA کار می کند. قبل از پیوستن به AWS، کریت در استارتآپهای هوش مصنوعی در مراحل اولیه کار میکرد و پس از آن مدتی مشاوره در نقشهای مختلف در تحقیقات هوش مصنوعی، MLOps و رهبری فنی داشت.
- پیشرفته (300)
- AI
- آی هنر
- مولد هنر ai
- ربات ai
- AIML
- آمازون SageMaker
- Amazon SageMaker Autopilot
- هوش مصنوعی
- گواهی هوش مصنوعی
- هوش مصنوعی در بانکداری
- ربات هوش مصنوعی
- ربات های هوش مصنوعی
- نرم افزار هوش مصنوعی
- آموزش ماشین AWS
- بلاکچین
- کنفرانس بلاک چین ai
- coingenius
- هوش مصنوعی محاوره ای
- کنفرانس کریپتو ai
- دل-ه
- یادگیری عمیق
- گوگل ai
- فراگیری ماشین
- افلاطون
- افلاطون آی
- هوش داده افلاطون
- بازی افلاطون
- PlatoData
- بازی پلاتو
- مقیاس Ai
- نحو
- نحوه فنی
- زفیرنت