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)
"تم إنهاء العملية 0 برمز الخروج 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")
"فشل ربط مأخذ توصيل الخادم ب [::]:{PORT NUMBER} (errno: 98 - العنوان قيد الاستخدام بالفعل)."
يظهر هذا الخطأ عند إعادة تشغيل التدريب الموزع بعد مقاطعة الخلية أثناء التدريب.
لإصلاح المشكلة، أعد تشغيل نظام المجموعة. إذا لم تحل إعادة التشغيل المشكلة، فقد يكون هناك خطأ في التعليمات البرمجية لوظيفة التدريب.
أخطاء CUDA ذات الصلة
يمكنك الخوض في مشكلات إضافية مع 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