من أجل التدريب على الشبكات العصبية العميقة (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 .
معلومات اضافية