تدريب نماذج TensorFlow مع Azure Machine Learning Service

من أجل التدريب على الشبكات العصبية العميقة (DNN) مع TensorFlow ، يوفر Azure Machine Learning فئة من أدوات TensorFlow حددها المستخدم TensorFlow . TensorFlow تقييم TensorFlow في Azure SDK (يجب عدم الخلط بينها وبين فئة tf.estimator.Estimator ) تجعل من السهل تقديم وظائف تدريب TensorFlow للتشغيل أحادي العقدة والموزعة في موارد حساب Azure.




تدريب موقع واحد


TensorFlow التعلم باستخدام TensorFlow تقييم TensorFlow استخدام Estimator ، لذلك عليك أولاً قراءة مقالة TensorFlow وتعلم المفاهيم.


لإكمال مهمة TensorFlow ، يجب عليك إنشاء كائن TensorFlow . يجب أن تكون قد قمت بالفعل بإنشاء كائن compute_target حساب الهدف .


 from azureml.train.dnn import TensorFlow script_params = { '--batch-size': 50, '--learning-rate': 0.01, } tf_est = TensorFlow(source_directory='./my-tf-proj', script_params=script_params, compute_target=compute_target, entry_script='train.py', conda_packages=['scikit-learn'], use_gpu=True) 

حدد المعلمات التالية في مُنشئ TensorFlow.

المعلمةوصف
source_directoryدليل محلي يحتوي على جميع التعليمات البرمجية اللازمة لإكمال التدريب. يتم نسخ هذا المجلد من الكمبيوتر المحلي إلى مورد الحوسبة عن بعد.
script_paramsقاموس يحدد وسيطات سطر الأوامر entry_script للتدريب على entry_script كـ أزواج <وسيطة سطر الأوامر ، القيمة>.
compute_targetهدف الحساب عن بعد الذي سيتم تشغيل البرنامج النصي للتدريب عليه. في حالتنا ، هذه مجموعة من بيئة حوسبة تعلم الآلة Azure ( AmlCompute ).
entry_scriptالمسار إلى الملف (نسبة إلى source_directory ) من البرنامج النصي للتدريب الذي سيتم تنفيذه على مورد الحوسبة عن بعد. يجب وضع هذا الملف والملفات الإضافية التي يعتمد عليها في هذا المجلد.
conda_packagesقائمة حزم بيثون المطلوبة لتثبيت البرنامج النصي للتدريب باستخدام كوندا. في هذه الحالة ، يستخدم البرنامج النصي للتدريب sklearn لتنزيل البيانات ، لذلك يجب عليك تحديد هذه الحزمة للتثبيت. يمكن pip_packages المعلمة pip_packages في جميع حزم النقاط الضرورية.
use_gpuاضبط هذه العلامة على True لاستخدام GPU للتدريب. الافتراضي هو False .

نظرًا لأنك تعمل مع أداة تقييم TensorFlow ، ستحتوي الحاوية المستخدمة للتدريب افتراضيًا على حزمة TensorFlow والتبعيات ذات الصلة المطلوبة للتدريب في وحدة المعالجة المركزية ووحدة معالجة الرسومات.


ثم أرسل مهمة TensorFlow:


 run = exp.submit(tf_est) 

التدريب الموزع


تتيح لك أداة تقييم TensorFlow أيضًا تدريب النماذج في مجموعات وحدة المعالجة المركزية ووحدات معالجة الرسومات في الأجهزة الظاهرية Azure. يتم تقديم التدريب الموزع في TensorFlow من خلال العديد من مكالمات واجهة برمجة التطبيقات ، مع خدمة Azure Machine Learning في الخلفية التي تدير البنية التحتية وميزات التنسيق اللازمة لاستكمال أعباء العمل هذه.


تدعم Azure Machine Learning Services طريقتين للتعلم موزعتين في TensorFlow.



هوروفود


Horovod عبارة عن منصة مفتوحة المصدر قائمة على التعلم المستندة إلى الحلقة التي طورتها Uber.


لتشغيل تدريب TensorFlow الموزع باستخدام منصة Horovod ، قم بإنشاء كائن TensorFlow على النحو التالي:


 from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, process_count_per_node=1, distributed_backend='mpi', use_gpu=True) 

يعرض الرمز أعلاه الخيارات الجديدة التالية في مُنشئ TensorFlow.

المعلمةوصفالقيمة الافتراضية
node_countعدد العقد المطلوب استخدامها لمهمة التدريب.1
process_count_per_nodeعدد العمليات (أو أدوار العمل) التي تعمل على كل عقدة.1
distributed_backendجانب الخادم لتشغيل التعلم الموزع ، الذي توفره أداة تقييم MPI. لإجراء تدريب متوازي أو موزع (على سبيل المثال ، node_count > 1 أو process_count_per_node > 1 ، أو كليهما) باستخدام MPI (و Horovod) ، اضبط distributed_backend='mpi' يستخدم Azure Machine Learning تطبيق MPI Open MPI .None

في المثال أعلاه ، سيتم تنفيذ التدريب الموزع مع أدوار عمل - دور عمل واحد لكل عقدة.


سيتم تثبيت Horovod وتوابعها تلقائيًا ، بحيث يمكنك استيرادها ببساطة إلى train.py للتدريب على النحو التالي:


 import tensorflow as tf import horovod 

أخيرًا ، أرسل عملك TensorFlow:


 run = exp.submit(tf_est) 

خادم المعلمة


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


قم بإنشاء كائن TensorFlow:


 from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, worker_count=2, parameter_server_count=1, distributed_backend='ps', use_gpu=True) 

انتبه إلى المعلمات التالية في مُنشئ TensorFlow في الكود أعلاه.

المعلمةوصفالقيمة الافتراضية
worker_countعدد أدوار العمل.1
parameter_server_countعدد خوادم المعلمات.1
distributed_backendجزء الخادم الذي سيتم استخدامه في التدريب الموزع ، ولإجراء التدريب الموزع باستخدام خادم المعلمة ، عيّن القيمة distributed_backend='ps' .None

ملاحظات على TF_CONFIG


ستحتاج أيضًا إلى عناوين شبكة نظام المجموعة ومنافذ tf.train.ClusterSpec ، لذلك تقوم خدمة Azure Machine Learning تلقائيًا بتعيين TF_CONFIG البيئة TF_CONFIG .


TF_CONFIG البيئة TF_CONFIG عبارة عن سلسلة JSON. التالي متغير مثال لخادم المعلمة.


 TF_CONFIG='{ "cluster": { "ps": ["host0:2222", "host1:2222"], "worker": ["host2:2222", "host3:2222", "host4:2222"], }, "task": {"type": "ps", "index": 0}, "environment": "cloud" }' 

إذا كنت تستخدم tf.estimator TensorFlow API عالي المستوى ، tf.estimator هذا المتغير TF_CONFIG ويشكل مواصفات نظام المجموعة.


إذا كنت تستخدم واجهة برمجة تطبيقات منخفضة المستوى للتدريب ، فأنت بحاجة إلى تحليل المتغير TF_CONFIG وإنشاء tf.train.ClusterSpec في رمز التدريب. في هذا المثال ، يتم تنفيذ هذه الإجراءات في برنامج نصي للتدريب كما يلي:


 import os, json import tensorflow as tf tf_config = os.environ.get('TF_CONFIG') if not tf_config or tf_config == "": raise ValueError("TF_CONFIG not found.") tf_config_json = json.loads(tf_config) cluster_spec = tf.train.ClusterSpec(cluster) 

بعد الانتهاء من البرنامج النصي للتدريب وإنشاء كائن TensorFlow ، أرسل مهمة التدريب:


 run = exp.submit(tf_est) 

أمثلة


بالنسبة إلى دفاتر التعلم العميقة الموزعة ، راجع مستودع جيثب



تعرف على كيفية تشغيل أجهزة الكمبيوتر المحمولة من خلال اتباع الإرشادات الموجودة في مقالة حول كيفية تعلم هذه الخدمة باستخدام دفاتر Jupyter .


معلومات اضافية


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


All Articles