كيف تتغلب على الخوف وتبدأ في استخدام Azure Machine Learning

أعلم أن العديد من علماء البيانات - وأنا على الأرجح أتصل بهم - هم الذين يعملون على أجهزة مع وحدات معالجة الرسومات ، المحلية أو الافتراضية ، الموجودة في السحابة ، إما من خلال Jupyter Notebook ، أو من خلال بيئة تطوير Python. عملت لمدة عامين كخبير تطوير AI / ML ، فعلت ذلك تمامًا ، أثناء إعداد البيانات على خادم أو محطة عمل عادية ، وبدأت التدريب على جهاز افتراضي باستخدام GPU في Azure.


بالطبع ، سمعنا جميعًا عن Azure Machine Learning - منصة خاصة تستند إلى مجموعة النظراء للتعلم الآلي. ومع ذلك ، بعد إلقاء نظرة فاحصة على المقالات التمهيدية ، يبدو أن Azure ML سيخلق مشاكل لك أكثر مما سيحلها. على سبيل المثال ، في المثال التدريبي المذكور أعلاه ، يتم إطلاق Azure ML training من Jupyter Notebook ، في حين يُقترح إنشاء النص التدريبي نفسه وتحريره كملف نصي في إحدى الخلايا - دون استخدام الإكمال التلقائي ، وتسليط الضوء على بناء الجملة ، وغيرها من المزايا لبيئة التطوير العادية. لهذا السبب ، لم نستخدم Azure ML على محمل الجد في عملنا لفترة طويلة.


ومع ذلك ، اكتشفت مؤخرًا طريقة للبدء في استخدام Azure ML بفعالية في عملي! تفاصيل مثيرة للاهتمام؟



السر الرئيسي هو امتداد Visual Studio Code لـ Azure ML . يتيح لك تطوير البرامج النصية التدريبية مباشرةً في VS Code ، وذلك باستخدام جميع مزايا البيئة - يمكنك تشغيل البرنامج النصي محليًا ، ثم أخذه وإرساله للتدريب في مجموعة Azure ML بنقرات قليلة من الفأرة. مريحة ، أليس كذلك؟


عند القيام بذلك ، يمكنك الحصول على الفوائد التالية من استخدام Azure ML:


  • يمكنك العمل معظم الوقت محليا على جهازك في بيئة تطوير متكاملة مريحة ، واستخدام GPU فقط لتدريب النموذج . في الوقت نفسه ، يمكن لمجموع موارد التدريب أن يتكيف تلقائيًا مع الحمل المطلوب ، ومن خلال تعيين الحد الأدنى لعدد العقد على 0 ، يمكنك بدء تشغيل الجهاز الظاهري "تلقائيًا عند الطلب" في وجود مهام التدريب.
  • يمكنك تخزين جميع نتائج التعلم في مكان واحد ، بما في ذلك المقاييس المحققة والنماذج الناتجة - ليست هناك حاجة لاختراع أي نظام أو إجراء لتخزين جميع النتائج.
  • في الوقت نفسه ، يمكن للعديد من الأشخاص العمل في مشروع واحد - يمكنهم استخدام نفس مجموعة الحوسبة ، وستصطف جميع التجارب في هذه الحالة ، ويمكنهم أيضًا مشاهدة نتائج تجارب بعضهم البعض. أحد هذه السيناريوهات هو استخدام Azure ML في تدريس Deep Learning ، عندما تقوم بدلاً من إعطاء كل طالب بجهاز افتراضي باستخدام وحدة معالجة الرسومات ، يمكنك إنشاء مجموعة واحدة يستخدمها الجميع مركزيًا. بالإضافة إلى ذلك ، يمكن أن يكون جدول النتائج العام بدقة النموذج بمثابة عنصر تنافسي جيد.
  • باستخدام Azure ML ، يمكنك بسهولة إجراء سلسلة من التجارب ، على سبيل المثال ، لتحسين المعلمات الفائقة - يمكن القيام بذلك ببضعة سطور من التعليمات البرمجية ، ليست هناك حاجة لإجراء سلسلة من التجارب يدويًا.

أتمنى أن أقنعكم بتجربة Azure ML! إليك كيفية البدء:


  • تأكد من تثبيت Visual Studio Code ، وكذلك ملحقات Azure Sign In و Azure ML
  • استنساخ المستودع https://github.com/CloudAdvocacy/AzureMLStarter - يحتوي على بعض التعليمات البرمجية التجريبية لتدريب النموذج على التعرف على الأرقام المكتوبة بخط اليد في مجموعة بيانات MNIST.
  • افتح مستودع cloned في Visual Studio Code.
  • اقرأ على!

Azure ML Workspace و Azure ML Portal


يتم تنظيم Azure ML حول مفهوم مساحة العمل - مساحة العمل. يمكن تخزين البيانات في مساحة العمل ، ويتم إرسال التجارب إليها للتدريب ، ويتم تخزين نتائج التعلم في نفس المكان - المقاييس والنماذج التي تم الحصول عليها. يمكنك معرفة ما هو موجود داخل مساحة العمل من خلال بوابة Azure ML - ومن هناك يمكنك إجراء العديد من العمليات ، من تنزيل البيانات إلى تجارب المراقبة ونشر النماذج.


يمكنك إنشاء مساحة عمل من خلال واجهة الويب Azure Portal (انظر التعليمات خطوة بخطوة ) ، أو باستخدام سطر أوامر 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 برنامج نصي 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 (إنه train_universal.py قليلاً من الإصدار المكتوب أعلاه ، ولكن ليس كثيرًا). يمكن تشغيل هذا البرنامج النصي محليًا وعلى مورد الحوسبة عن بُعد.


لتشغيله في Azure ML من VS Code ، قم بما يلي:


  1. تأكد من اتصال Azure Extension بالاشتراك الخاص بك. حدد أيقونة Azure في القائمة على اليسار. إذا لم تكن متصلاً ، فسيظهر إشعار في الركن الأيمن السفلي ( هذا الإشعار) ، من خلال النقر فوق الذي يمكنك إدخاله من خلال المتصفح. يمكنك أيضًا الضغط على Ctrl-Shift-P لاستدعاء سطر أوامر VS Code ، واكتب Azure Sign In .


  2. بعد ذلك ، في قسم Azure (أيقونة على اليسار) ، ابحث عن قسم MACHINE Learning :



Azure ML مساحة العمل في رمز VS
يجب أن ترى هنا مجموعات مختلفة من الكائنات داخل مساحة العمل: موارد الحوسبة ، التجارب ، إلخ.


  1. انتقل إلى قائمة الملفات ، وانقر بزر الماوس الأيمن على البرنامج النصي train_universal.py وحدد Azure ML: Run as train_universal.py في Azure .

Azure ML مساحة العمل في رمز VS


  1. سوف يتبع ذلك سلسلة من مربعات الحوار في منطقة سطر أوامر VS Code: أكد الاشتراك المستخدم ومساحة عمل Azure ML ، وحدد أيضًا إنشاء تجربة جديدة :

Azure ML مساحة العمل في رمز VS
Azure ML مساحة العمل في رمز VS
Azure ML مساحة العمل في رمز VS


  1. حدد إنشاء حساب جديد :


    • يُعرّف Compute مورد الحوسبة الذي سيتم التدريب عليه. يمكنك اختيار كمبيوتر محلي أو كتلة سحابة AmlCompute. أوصي بإنشاء مجموعة قابلة للتحجيم من الأجهزة STANDARD_DS3_v2 ، مع الحد الأدنى لعدد الأجهزة 0 (والحد الأقصى يمكن أن يكون 1 أو أكثر ، حسب شهيتك). يمكن القيام بذلك من خلال واجهة VS Code ، أو سابقًا من خلال ML Portal .

    Azure ML مساحة العمل في رمز VS


  2. بعد ذلك ، تحتاج إلى تحديد تكوين Compute Configuration ، الذي يحدد معلمات الحاوية التي تم إنشاؤها للتدريب ، ولا سيما جميع المكتبات اللازمة. في حالتنا ، بما أننا نستخدم Scikit Learn ، حدد SkLearn ، ثم قم ببساطة بتأكيد قائمة المكتبات المقترحة باستخدام Enter. إذا كنت تستخدم أي مكتبات إضافية ، فيجب عليك تحديدها هنا.


    Azure ML مساحة العمل في رمز VS
    Azure ML مساحة العمل في رمز VS


  3. بعد ذلك ، يتم فتح نافذة بملف JSON يصف التجربة. في ذلك ، يمكنك إصلاح بعض المعلمات - على سبيل المثال ، اسم التجربة. بعد ذلك ، انقر فوق الرابط " إرسال تجربة" مباشرة داخل هذا الملف:



Azure ML مساحة العمل في رمز VS


  1. بعد تقديم التجربة بنجاح من خلال VS Code ، على اليمين في منطقة الإعلام ، سترى رابطًا إلى Azure ML Portal ، حيث يمكنك تتبع حالة التجربة ونتائجها.

نتيجة تجربة أزور إم إل في بوابة أزور إم إل
في وقت لاحق ، يمكنك دائمًا العثور عليها في قسم Experure Azure ML Portal ، أو في قسم Azure Machine Learning في قائمة التجارب:


Azure ML مساحة العمل في رمز VS


  1. إذا قمت بعد ذلك بإجراء بعض التصحيحات على الكود أو قمت بتغيير المعلمات ، فإن إعادة تشغيل التجربة ستكون أسرع وأسهل بكثير. بالنقر بزر الماوس الأيمن فوق الملف ، سترى عنصر قائمة جديد كرر التشغيل الأخير - ما عليك سوى تحديده وسيتم تشغيل التجربة على الفور:

Azure ML مساحة العمل في رمز VS
يمكنك دائمًا العثور على نتائج المقاييس من جميع عمليات الإطلاق على Azure ML Portal ، ليست هناك حاجة لتسجيلها.


أنت تعرف الآن أن إجراء التجارب على Azure ML سهل وغير مؤلم ، وستحصل على عدد من الفوائد الرائعة.


لكنك ربما لاحظت وجود عيوب. على سبيل المثال ، استغرق الأمر وقتًا أطول لتشغيل البرنامج النصي. بالطبع ، يستغرق الأمر وقتًا طويلاً لحزم البرنامج النصي في حاوية ونشره على الخادم. إذا تم تخفيض الكتلة في نفس الوقت إلى 0 عقد ، فسوف يستغرق الأمر وقتًا أطول لبدء تشغيل الجهاز الظاهري ، وكل هذا ملحوظ للغاية عندما نجرب مهام بسيطة مثل MNIST ، والتي يتم حلها في بضع ثوان. ومع ذلك ، في الحياة الواقعية ، عندما يستمر التدريب عدة ساعات ، أو حتى أيام أو أسابيع ، يصبح هذا الوقت الإضافي ضئيلًا ، لا سيما على خلفية الأداء العالي جدًا الذي يمكن أن توفره مجموعة الحوسبة.


ما التالي؟


آمل أنه بعد قراءة هذه المقالة ، ستتمكن من استخدام Azure ML في عملك لتشغيل البرامج النصية وإدارة موارد الحوسبة وتخزين النتائج مركزيًا. ومع ذلك ، يمكن أن يوفر لك Azure ML المزيد من الفوائد!


داخل مساحة العمل ، يمكنك تخزين البيانات ، وبالتالي إنشاء مستودع مركزي لجميع المهام الخاصة بك ، والتي يسهل الوصول إليها. بالإضافة إلى ذلك ، يمكنك تشغيل تجارب ليس من Visual Studio Code ، ولكن باستخدام API - قد يكون ذلك مفيدًا بشكل خاص إذا كنت بحاجة إلى تحسين المعلمات الفائقة وتحتاج إلى تشغيل البرنامج النصي عدة مرات باستخدام معلمات مختلفة. علاوة على ذلك ، في Azure ML ، تم تصميم تقنية Hyperdrive الخاصة ، مما يسمح لك بالقيام بمزيد من البحث المذهل وتحسين المقاييس الفوقية. سأتحدث عن هذه الميزات في مقالتي القادمة.


موارد مفيدة


للحصول على دراسة أكثر تعمقا عن Azure ML ، قد تجد دورات Microsoft Learn التالية مفيدة:


Source: https://habr.com/ru/post/ar485338/


All Articles