چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

من بسیاری از دانشمندان داده را می شناسم - و شاید من یکی از آنها باشم - که روی ماشین های GPU، محلی یا مجازی، واقع در فضای ابری، یا از طریق یک نوت بوک Jupyter یا از طریق نوعی محیط توسعه Python کار می کنند. به مدت 2 سال به عنوان یک توسعه دهنده خبره در AI/ML کار کردم، دقیقاً این کار را انجام دادم، در حالی که داده ها را روی یک سرور معمولی یا ایستگاه کاری آماده می کردم و آموزش را روی یک ماشین مجازی با یک GPU در Azure اجرا می کردم.

البته همه ما در مورد آن شنیده ایم آموزش ماشین لاجوردی - یک پلتفرم ابری ویژه برای یادگیری ماشینی. با این حال، پس از اولین نگاه به مقالات مقدماتی، به نظر می رسد که Azure ML بیش از آنکه حل کند برای شما مشکل ایجاد می کند. به عنوان مثال، در مثال آموزشی ذکر شده در بالا، آموزش Azure ML از Jupyter Notebook راه اندازی شده است، در حالی که خود اسکریپت آموزشی پیشنهاد می شود به عنوان یک فایل متنی در یکی از سلول ها ایجاد و ویرایش شود - بدون استفاده از تکمیل خودکار، برجسته سازی نحو و موارد دیگر. مزایای یک محیط توسعه عادی به همین دلیل مدت ها بود که از Azure ML در کار خود به طور جدی استفاده نمی کردیم.

با این حال، اخیراً راهی برای شروع استفاده مؤثر از Azure ML در کار خود کشف کردم! به جزئیات علاقه دارید؟

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

راز اصلی این است پسوند Visual Studio Code برای Azure ML. این به شما امکان می‌دهد تا اسکریپت‌های آموزشی را مستقیماً در VS Code توسعه دهید و از مزایای کامل محیط استفاده کنید - و حتی می‌توانید یک اسکریپت را به صورت محلی اجرا کنید و سپس آن را به سادگی با چند کلیک برای آموزش در یک کلاستر Azure ML ارسال کنید. راحت است، اینطور نیست؟

با انجام این کار، مزایای زیر را از استفاده از Azure ML دریافت خواهید کرد:

  • شما می توانید بیشتر اوقات به صورت محلی روی دستگاه خود در یک IDE مناسب کار کنید و از GPU فقط برای آموزش مدل استفاده کنید. در عین حال، مجموعه منابع آموزشی می تواند به طور خودکار با بار مورد نیاز تنظیم شود و با تنظیم حداقل تعداد گره ها بر روی 0، می توانید در صورت وجود وظایف آموزشی، ماشین مجازی را به صورت خودکار "در صورت تقاضا" راه اندازی کنید.
  • شما می توانید تمام نتایج یادگیری را در یک مکان ذخیره کنید، از جمله معیارهای به دست آمده و مدل های حاصل - نیازی به ارائه نوعی سیستم یا سفارش برای ذخیره همه نتایج نیست.
  • در این مورد، چند نفر می توانند روی یک پروژه کار کنند - آنها می توانند از یک خوشه محاسباتی استفاده کنند، همه آزمایش ها در صف قرار می گیرند و همچنین می توانند نتایج آزمایش های یکدیگر را ببینند. یکی از این سناریوها این است استفاده از Azure ML در آموزش یادگیری عمیق، که در آن به جای اینکه به هر دانش آموز یک ماشین مجازی با GPU بدهید، می توانید یک خوشه ایجاد کنید که به صورت مرکزی توسط همه استفاده شود. علاوه بر این، یک جدول کلی از نتایج با دقت مدل می تواند به عنوان یک عنصر رقابتی خوب عمل کند.
  • با استفاده از Azure ML، می توانید به راحتی یک سری آزمایش را اجرا کنید، به عنوان مثال. بهینه سازی هایپرپارامتر - این کار را می توان با چند خط کد انجام داد؛ نیازی به انجام یک سری آزمایش به صورت دستی نیست.

امیدوارم شما را متقاعد کرده باشم که Azure ML را امتحان کنید! در اینجا نحوه شروع به کار آمده است:

Azure ML Workspace و Azure ML Portal

Azure ML حول این مفهوم سازماندهی شده است منطقه کار - فضای کار داده‌ها را می‌توان در فضای کاری ذخیره کرد، آزمایش‌های آموزشی را می‌توان به آن ارسال کرد، و نتایج آموزش - معیارها و مدل‌های حاصل - نیز در آنجا ذخیره می‌شوند. می توانید با استفاده از آنچه در داخل فضای کاری وجود دارد، مشاهده کنید پورتال Azure ML - و از آنجا می توانید عملیات زیادی را انجام دهید، از بارگذاری داده ها گرفته تا نظارت بر آزمایش ها و استقرار مدل ها.

شما می توانید یک فضای کاری از طریق رابط وب ایجاد کنید پورتال لاجوردی (مراجعه کنید. دستورالعمل های گام به گام، یا با استفاده از خط فرمان Azure CLI (دستورالعمل):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

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

اسکریپت آموزشی برای MNIST

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

یک اسکریپت در مخزن ما وجود دارد train_local.py، که ساده ترین مدل رگرسیون خطی را با استفاده از کتابخانه SkLearn آموزش می دهد. البته، من درک می کنم که این بهترین راه برای حل مشکل نیست - ما از آن به عنوان مثال، به عنوان ساده ترین، استفاده می کنیم.

اسکریپت ابتدا داده های MNIST را از OpenML دانلود می کند و سپس از کلاس استفاده می کند LogisticRegression برای آموزش مدل، و سپس دقت حاصل را چاپ می کند:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Overall accuracy:', acc)

شما می توانید اسکریپت را روی رایانه خود اجرا کنید و در عرض چند ثانیه به نتیجه خواهید رسید.

اجرای اسکریپت در Azure ML

اگر اسکریپت آموزشی را از طریق Azure ML اجرا کنیم، دو مزیت اصلی خواهیم داشت:

  • اجرای آموزش بر روی یک منبع محاسباتی دلخواه، که معمولاً از یک رایانه محلی مولدتر است. در این حالت، Azure ML خود مراقبت می کند که اسکریپت ما را با تمام فایل های دایرکتوری فعلی در یک داکر کانتینر بسته بندی کند، وابستگی های مورد نیاز را نصب کند و آن را برای اجرا ارسال کند.
  • نتایج را در یک رجیستری در یک فضای کاری Azure ML بنویسید. برای استفاده از این ویژگی، باید چند خط کد به اسکریپت خود اضافه کنیم تا دقت حاصل را ثبت کنیم:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

نسخه مربوط به اسکریپت نامیده می شود train_universal.py (کمی حیله‌گرتر از آنچه در بالا توضیح داده شد طراحی شده است، اما نه خیلی). این اسکریپت می تواند هم به صورت محلی و هم بر روی یک منبع محاسباتی از راه دور اجرا شود.

برای اجرای آن در Azure ML از VS Code، باید موارد زیر را انجام دهید:

  1. مطمئن شوید که Azure Extension به اشتراک شما متصل است. نماد Azure را از منوی سمت چپ انتخاب کنید. اگر متصل نباشید، یک اعلان در گوشه سمت راست پایین ظاهر می شود (مثل این)، با کلیک بر روی آن می توانید از طریق مرورگر وارد شوید. همچنین می توانید کلیک کنید Ctrl-Shift-P برای باز کردن خط فرمان VS Code، و تایپ کنید ورود به سیستم Azure.

  2. پس از آن، در بخش Azure (نماد سمت چپ)، بخش را پیدا کنید فراگیری ماشین:

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
در اینجا باید گروه های مختلفی از اشیاء را در داخل فضای کاری مشاهده کنید: منابع محاسباتی، آزمایش ها و غیره.

  1. به لیست فایل ها بروید، روی اسکریپت کلیک راست کنید train_universal.py و انتخاب کنید Azure ML: به عنوان آزمایش در Azure اجرا شود.

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  1. به دنبال آن یک سری گفتگو در ناحیه خط فرمان VS Code دنبال می شود: اشتراک و فضای کاری Azure ML خود را تأیید کنید و انتخاب کنید. آزمایش جدید ایجاد کنید:

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  1. برای ایجاد یک منبع محاسباتی جدید انتخاب کنید محاسبه جدید ایجاد کنید:

    • محاسبه منبع محاسباتی را تعیین می کند که آموزش روی آن انجام می شود. می توانید یک کامپیوتر محلی یا خوشه ابری AmlCompute را انتخاب کنید. من توصیه می کنم یک خوشه مقیاس پذیر از ماشین ها ایجاد کنید STANDARD_DS3_v2، با حداقل تعداد دستگاه 0 (و حداکثر می تواند 1 یا بیشتر باشد، بسته به اشتهای شما). این را می توان از طریق رابط VS Code یا قبلاً از طریق آن انجام داد پورتال ام ال.

    چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  2. بعد باید یک پیکربندی را انتخاب کنید پیکربندی محاسبه، که پارامترهای ظرف ایجاد شده برای آموزش، به ویژه، تمام کتابخانه های لازم را تعریف می کند. در مورد ما، چون از Scikit Learn استفاده می کنیم، انتخاب می کنیم SkLearnو سپس لیست پیشنهادی کتابخانه ها را با فشار دادن Enter تأیید کنید. اگر از کتابخانه های اضافی استفاده می کنید، باید در اینجا مشخص شوند.

    چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
    چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  3. پس از این، پنجره ای با یک فایل JSON باز می شود که آزمایش را توصیف می کند. می توانید برخی از پارامترها را در آن اصلاح کنید، به عنوان مثال، نام آزمایش. پس از آن روی لینک کلیک کنید آزمایش را ارسال کنید درست در داخل این فایل:

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  1. پس از ارسال موفقیت آمیز آزمایش از طریق کد VS، در قسمت اعلان در سمت راست پیوندی به آن خواهید دید پورتال Azure ML، جایی که می توانید وضعیت و نتایج آزمایش را ردیابی کنید.

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
پس از آن، همیشه می توانید آن را در بخش پیدا کنید آزمایش پورتال Azure ML، یا در بخش آموزش ماشین لاجوردی در لیست آزمایشات:

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم

  1. اگر متعاقباً تصحیحاتی در کد انجام دادید یا پارامترها را تغییر دادید، اجرای مجدد آزمایش بسیار سریعتر و آسان تر خواهد بود. با کلیک راست بر روی فایل، آیتم جدیدی از منو را مشاهده خواهید کرد آخرین اجرا را تکرار کنید - فقط آن را انتخاب کنید و آزمایش بلافاصله راه اندازی می شود:

چگونه بر ترس غلبه کنیم و از یادگیری ماشینی Azure استفاده کنیم
همیشه می‌توانید نتایج معیارهای همه اجراها را در پورتال Azure ML پیدا کنید؛ نیازی به ثبت آنها نیست.

اکنون می‌دانید که اجرای آزمایش‌ها با استفاده از Azure ML آسان، بدون درد است و مزایای هیجان‌انگیزی دارد.

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

گام بعدی چیست؟

امیدوارم پس از خواندن این مقاله، بتوانید و از Azure ML در کار خود برای اجرای اسکریپت ها، مدیریت منابع محاسباتی و ذخیره سازی مرکزی نتایج استفاده کنید. با این حال، Azure ML می تواند مزایای بیشتری به شما بدهد!

شما می توانید داده ها را در یک فضای کاری ذخیره کنید، در نتیجه یک مخزن متمرکز برای تمام وظایف خود ایجاد کنید که دسترسی به آن آسان باشد. علاوه بر این، می‌توانید آزمایش‌ها را با استفاده از API به‌جای کد ویژوال استودیو اجرا کنید - این می‌تواند به‌ویژه در صورت نیاز به بهینه‌سازی هایپرپارامتر و نیاز به اجرای چندین بار اسکریپت با پارامترهای مختلف مفید باشد. علاوه بر این، فناوری خاصی در Azure ML تعبیه شده است هایپر درایو، که امکان جستجوی پیچیده تر و بهینه سازی هایپرپارامترها را فراهم می کند. در پست بعدی در مورد این احتمالات صحبت خواهم کرد.

منابع مفید

برای کسب اطلاعات بیشتر در مورد Azure ML، ممکن است دوره‌های آموزشی Microsoft Learn مفید باشند:

منبع: www.habr.com

اضافه کردن نظر