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

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

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

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

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

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

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

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

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

مساحة عمل Azure ML ومدخل Azure ML

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

يمكنك إنشاء مساحة عمل من خلال واجهة الويب بوابة Azure (راجع. تعليمات خطوه بخطوه) ، أو باستخدام سطر أوامر 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 متصل باشتراكك. حدد أيقونة Azure من القائمة الموجودة على اليسار. إذا لم تكن متصلاً ، فسيظهر إشعار في الزاوية اليمنى السفلية (مثله) ، من خلال النقر عليه يمكنك الدخول من خلال المتصفح. يمكنك أيضًا النقر فوق السيطرة ، التحول ، P. لاستدعاء سطر أوامر VS Code ، واكتب Azure تسجيل الدخول.

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

كيفية التغلب على الخوف والبدء في استخدام Azure Machine Learning
هنا يجب أن ترى مجموعات مختلفة من الكائنات داخل مساحة العمل: موارد الحوسبة والتجارب وما إلى ذلك.

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

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

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

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

  1. اختر إنشاء مورد حساب جديد إنشاء حساب جديد:

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

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

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

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

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

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

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

كيفية التغلب على الخوف والبدء في استخدام Azure Machine Learning
بعد ذلك ، يمكنك دائمًا العثور عليها في القسم التجارب بوابة Azure ML، أو في المقطع تعلم الآلة Azure في قائمة التجارب:

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

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

كيفية التغلب على الخوف والبدء في استخدام Azure Machine Learning
يمكنك دائمًا العثور على نتائج المقاييس من جميع عمليات الإطلاق على Azure ML Portal ، ولا داعي لتدوينها.

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

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

ما هي الخطوة التالية؟

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

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

موارد مفيدة

لمعرفة المزيد حول Azure ML ، قد تجد دورات Microsoft Learn التالية مفيدة:

المصدر: www.habr.com

إضافة تعليق