PyTorch

مشروع PyTorch هو حزمة Python التي توفر حساب الموتر المسرع لوحدة معالجة الرسومات ووظائف عالية المستوى لبناء شبكات التعلم العميق. للحصول على تفاصيل الترخيص، راجع مستند ترخيص PyTorch على GitHub.

لمراقبة نماذج PyTorch وتصحيحها، ضع في اعتبارك استخدام TensorBoard.

يتم تضمين PyTorch في وقت تشغيل Databricks التعلم الآلي. إذا كنت تستخدم وقت تشغيل Databricks، فشاهد تثبيت PyTorch للحصول على إرشادات حول تثبيت PyTorch.

إشعار

هذا ليس دليلا شاملا ل PyTorch. لمزيد من المعلومات، راجع موقع PyTorch على الويب.

عقدة واحدة والتدريب الموزع

لاختبار وترحيل مهام سير العمل أحادية الجهاز، استخدم نظام مجموعة عقدة واحدة.

للحصول على خيارات التدريب الموزعة للتعلم العميق، راجع التدريب الموزع.

مثال لدفتر الملاحظات

دفتر ملاحظات PyTorch

الحصول على دفتر الملاحظات

تثبيت PyTorch

وقت تشغيل Databricks ل ML

يتضمن وقت تشغيل Databricks التعلم الآلي PyTorch حتى تتمكن من إنشاء نظام المجموعة والبدء في استخدام PyTorch. للحصول على إصدار PyTorch المثبت في إصدار Databricks Runtime ML الذي تستخدمه، راجع ملاحظات الإصدار.

وقت تشغيل Databricks

توصي Databricks باستخدام PyTorch المضمن في Databricks Runtime التعلم الآلي. ومع ذلك، إذا كان يجب عليك استخدام وقت تشغيل Databricks القياسي، يمكن تثبيت PyTorch كمكتبة Databricks PyPI. يوضح المثال التالي كيفية تثبيت PyTorch 1.5.0:

  • على مجموعات GPU، قم بتثبيت pytorch و torchvision عن طريق تحديد ما يلي:

    • torch==1.5.0
    • torchvision==0.6.0
  • على مجموعات وحدة المعالجة المركزية، قم بتثبيت pytorch واستخدام torchvision ملفات عجلة Python التالية:

    https://download.pytorch.org/whl/cpu/torch-1.5.0%2Bcpu-cp37-cp37m-linux_x86_64.whl
    
    https://download.pytorch.org/whl/cpu/torchvision-0.6.0%2Bcpu-cp37-cp37m-linux_x86_64.whl
    

الأخطاء واستكشاف الأخطاء وإصلاحها ل PyTorch الموزع

تصف الأقسام التالية رسائل الخطأ الشائعة وإرشادات استكشاف الأخطاء وإصلاحها للفئات: PyTorch DataParallel أو PyTorch DistributedDataParallel. من المحتمل أن يتم حل معظم هذه الأخطاء باستخدام TorchDistributor، والذي يتوفر على Databricks Runtime ML 13.0 وما فوق. ومع ذلك، إذا TorchDistributor لم يكن حلا قابلا للتطبيق، يتم أيضا توفير الحلول الموصى بها داخل كل قسم.

فيما يلي مثال على كيفية استخدام TorchDistributor:


from pyspark.ml.torch.distributor import TorchDistributor

def train_fn(learning_rate):
        # ...

num_processes=2
distributor = TorchDistributor(num_processes=num_processes, local_mode=True)

distributor.run(train_fn, 1e-3)

process 0 terminated with exit code 1

يحدث هذا الخطأ عند استخدام دفاتر الملاحظات، بغض النظر عن البيئة: Databricks، والجهاز المحلي، وما إلى ذلك. لتجنب هذا الخطأ، استخدم torch.multiprocessing.start_processes مع start_method=fork بدلا من torch.multiprocessing.spawn.

على سبيل المثال:

import torch

def train_fn(rank, learning_rate):
    # required setup, e.g. setup(rank)
        # ...

num_processes = 2
torch.multiprocessing.start_processes(train_fn, args=(1e-3,), nprocs=num_processes, start_method="fork")

The server socket has failed to bind to [::]:{PORT NUMBER} (errno: 98 - Address already in use).

يظهر هذا الخطأ عند إعادة تشغيل التدريب الموزع بعد مقاطعة الخلية أثناء حدوث التدريب.

لحل المشكلة، أعد تشغيل نظام المجموعة. إذا لم يحل ذلك المشكلة، فقد يكون هناك خطأ في التعليمات البرمجية لوظيفة التدريب.

يمكنك الخوض في مشكلات إضافية مع CUDA نظرا لأن start_method=”fork” CUDA غير متوافق. قد يؤدي استخدام أي .cuda أوامر في أي خلية إلى حدوث حالات فشل. لتجنب هذه الأخطاء، أضف الفحص التالي قبل استدعاء torch.multiprocessing.start_method:

if torch.cuda.is_initialized():
    raise Exception("CUDA was initialized; distributed training will fail.") # or something similar