البرمجة

تشغيل TensorFlow على عنقود AWS

لتشغيل TensorFlow على عنقود AWS (AWS cluster)، يمكنك استخدام TensorFlow’s tf.train.ClusterSpec لتعريف عنقود (cluster) الخاص بك واستخدام tf.train.Server للتواصل بين أجزاء العنقود. لتحديد أجزاء محددة من العنقود لتنفيذ الكود، يمكنك استخدام tf.device و tf.train.replica_device_setter لتحديد الأجهزة المستخدمة.

في البداية، يجب عليك تعريف ClusterSpec الذي يحتوي على المعلومات اللازمة لتحديد العناصر في العنقود، مثل عناوين IP والمنافذ لكل جهاز. يمكنك القيام بذلك بمثل هذا:

python
cluster_spec = { "master": ["master_ip:port"], "worker": ["worker1_ip:port", "worker2_ip:port", "worker3_ip:port", "worker4_ip:port", "worker5_ip:port"] }

ثم، يمكنك استخدام tf.train.ClusterSpec لتعريف Server والتحقق من دور كل جهاز في العنقود:

python
cluster = tf.train.ClusterSpec(cluster_spec) server = tf.train.Server(cluster, job_name="worker", task_index=task_index)

حيث task_index هو المؤشر لجهاز العمل الحالي في العنقود. بعد ذلك، يمكنك استخدام tf.device لتحديد الأجهزة التي تريد تشغيل الكود عليها، مثل:

python
with tf.device("/job:worker/task:0/gpu:0"): # Your TensorFlow code here

يجب أن يكون “worker” و “task:0” محددًا بناءً على دور الجهاز في العنقود والمؤشر المحدد له. إذا كنت تريد تشغيل الكود على جميع الأجهزة، يمكنك استخدام tf.train.replica_device_setter بدلاً من tf.device:

python
with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % task_index, cluster=cluster)): # Your TensorFlow code here

هذا يضمن تشغيل الكود على الجهاز الصحيح في العنقود المعرف بواسطة task_index.

المزيد من المعلومات

بالتأكيد! بعد تعريف ClusterSpec وإنشاء Server، يمكنك تشغيل تدريبات TensorFlow الموزعة باستخدام tf.train.Supervisor، الذي يدير التدريب والمزامنة بين العمليات في العنقود. يمكنك استخدامه مع الكود التالي:

python
with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % task_index, cluster=cluster)): global_step = tf.train.get_or_create_global_step() # Define your model and loss here # ... hooks = [tf.train.StopAtStepHook(last_step=1000000)] with tf.train.MonitoredTrainingSession(master=server.target, is_chief=(task_index == 0), hooks=hooks) as mon_sess: while not mon_sess.should_stop(): # Training loop # ...

في هذا المثال، tf.train.MonitoredTrainingSession يتيح لك إدارة التدريب والتزامن بين العمليات في العنقود. وتُستخدم الهدف server.target للتواصل مع Server الخاص بك، وis_chief يحدد ما إذا كان الجهاز هو الجهاز الرئيسي في العنقود.

يجب عليك تعديل الكود بناءً على تكوين ClusterSpec الخاص بك وأرقام المهام (tasks) والأجهزة التي تريد تشغيل الكود عليها في العنقود.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!