ما هو PyTorch؟

المؤلفين

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

ما هو PyTorch؟

PyTorch هو إطار عمل للتعلم العميق مفتوح المصدر قائم على البرامج يُستخدم لبناء الشبكات العصبية، ويجمع بين مكتبة التعلم الآلي (ML) الخاصة ب Torch وواجهة برمجة تطبيقات عالية المستوى القائمة على Python. وقد جعلت مرونته وسهولة استخدامه، من بين الفوائد الأخرى، منه إطار العمل الرائد في مجال التعلم الآلي (ML) للأكاديميين والباحثين.

يدعم PyTorch مجموعة واسعة من بنى الشبكات العصبية، من خوارزميات الانحدار الخطي البسيطة إلى الشبكات العصبية التلافيفية المعقدة ونماذج المحولات التوليدية المستخدمة لمهام مثل رؤية الكمبيوتر ومعالجة اللغة الطبيعية (NLP). بناءً على لغة البرمجة Python واسعة الانتشار، وتوفير مكتبات شاملة من النماذج المُعدة مسبقًا (وحتى المُدربة مسبقًا)، يسمح PyTorch لعلماء البيانات ببناء وتشغيل شبكات التعلم العميق المتطورة مع تقليل الوقت والجهد المبذولين في كتابة الكود والهيكل الرياضي.

يسمح PyTorch أيضًا لعلماء البيانات بتشغيل واختبار أجزاء من التعليمات البرمجية في الوقت الفعلي، بدلًا من انتظار تنفيذ التعليمات البرمجية بالكامل—والذي، بالنسبة لنماذج التعلم العميق الكبيرة، يمكن أن يستغرق وقتًا طويلًا جدًا. هذا يجعل PyTorch منصة ممتازة للنماذج الأولية السريعة، كما أنه يسرّع بشكل كبير عملية تصحيح الأخطاء.

تم تطوير PyTorch في الأصل بواسطة قسم أبحاث الذكاء الاصطناعي في Facebook (الآن Meta)، وتم جعله مفتوح المصدر في عام 2017، وأصبح تحت إدارة مؤسسة PyTorch (التي هي جزء من مؤسسة Linux الأكبر) منذ عام 2022. توفر المؤسسة مساحة محايدة لمجتمع التعلم العميق للتعاون على تطوير نظام PyTorch البنائي.

في عام 2023، أصبحت IBM عضوًا رئيسيًا في مؤسسة PyTorch، بعد أن تعاونت بالفعل في مشروعين رئيسيين: تمكين تدريب أكثر كفاءة لنماذج الذكاء الاصطناعي الأساسية المرنة التي تحتوي على مليارات المعلمات وجعل نقطة التدقيق لتدريب الذكاء الاصطناعي أكثر فعالية من حيث التكلفة بشكل ملحوظ. تستخدم محفظة IBM watsonx إطار عمل PyTorch لتوفير حزمة برمجيات مؤسسية عالية الجودة لنماذج أساس الذكاء الاصطناعي، بدءًا من التدريب الشامل وحتى الضبط الدقيق للنماذج.

أحدث اتجاهات الذكاء الاصطناعي، يقدمها لك الخبراء

احصل على رؤى منسقة حول أهم أخبار الذكاء الاصطناعي وأكثرها إثارةً للاهتمام. اشترِك في خدمة رسائل Think الإخبارية الأسبوعية. راجع بيان الخصوصية لشركة IBM.

شكرًا لك! لقد اشتركت بنجاح.

سيتم تسليم اشتراكك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك هنا. راجع بيان خصوصية IBM لمزيد من المعلومات.

كيف يعمل PyTorch؟

تعمل بنية PyTorch الرياضية والبرمجية على تبسيط وتيسير إجراءات تعلم الآلة، دون تقييد تعقيد أو أداء الشبكات العصبية العميقة.

Python

Python هي لغة برمجة عامة الأغراض، عالية المستوى، تُستخدم على نطاق واسع في علم البيانات، مما يجعلها خيارًا بديهيًا لعلماء البيانات الذين يوسعون عملهم إلى نمذجة شبكات التعلم العميق بشكل فعال. يتميز بناء جملة Python البسيط بسهولة القراءة، ويتطلب وقتًا قصيرًا نسبيًا للتعلم، ويمكن تشغيله على أي نظام تشغيل، بما في ذلك Windows أو macOS أو Linux أو Unix. ظلت لغة بايثون ثاني أكثر لغات البرمجة استخدامًا على GitHub لأكثر من ثلاث سنوات، بعد أن تفوقت على Java في عام 2019. وتستمر في النمو من حيث الشعبية، مع زيادة بنسبة 22.5 بالمئة في عام 2022.1

لقد ساعدت هذه المرونة والبساطة في تعزيز مجتمع نشط عبر الإنترنت لمطوري Python، يتعاونون في مجموعة واسعة من مكتبات وواجهات برمجة تطبيقات Python—مثل NumPy للعمليات الرياضية، و Pandas لمعالجة البيانات، و matplotlib لتصور البيانات—والموارد التعليمية. لقد أنتج هذا المجتمع أيضًا حجمًا كبيرًا من مكتبات Pytorch التي تقلل من الرتابة والتخمين في برمجة تعلم الآلة، مما يحرر المطورين وعلماء البيانات للتركيز على الابتكار بدلاً من كتابة المهام الروتينية.

الموترات

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

في سياق التعلم الآلي، الموتر هو مصفوفة متعددة الأبعاد من الأرقام تعمل كأداة محاسبية رياضية. من الناحية اللغوي ، يعمل "الموتر" كمصطلح عام يتضمن بعض الكيانات الرياضية المألوفة:

  • العدد القياسي هو موتر ذو بُعد صفري، ويحتوي على رقم واحد.

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

  • المصفوفة عبارة عن موتر ثنائي الأبعاد، يحتوي على متجهات متعددة من نفس النوع.

  • يشار إلى الموترات ذات الأبعاد الثلاثة أو أكثر، مثل الموترات ثلاثية الأبعاد المستخدمة لتمثيل صور RGB في خوارزميات الرؤية الكمبيوتر، بشكل جماعي باسم الموترات ذات الأبعاد N.

تعمل موترات PyTorch بشكل مشابه لـ ndarrays المستخدمة في NumPy - ولكن على عكس ndarrays، التي يمكن تشغيلها فقط على وحدات المعالجة المركزية (CPUs)، يمكن تشغيل الموترات أيضًا على وحدات معالجة الرسومات (GPUs). تتيح وحدات معالجة الرسومات إمكانية إجراء العمليات الحسابية بشكل أسرع بكثير من وحدات المعالجة المركزية، وهي ميزة كبيرة بالنظر إلى الكميات الهائلة من البيانات والمعالجة المتوازية النموذجية للتعلم العميق.

بالإضافة إلى ترميز مدخلات ومخرجات النموذج، تقوم موترات PyTorch أيضًا بترميز معلمات النموذج: الأوزان والانحيازات والتدرجات التي يتم "تعلمها" في التعلم الآلي. تتيح خاصية الموترات هذه التمايز التلقائي، والتي تعد واحدة من أهم ميزات PyTorch.

الوحدات

يستخدم PyTorch الوحدات النمطية كوحدات بناء لنماذج التعلم العميق، مما يسمح ببناء سريع ومباشر للشبكات العصبية دون العمل الممل المتمثل في ترميز كل خوارزمية يدويًا.

 يمكن أن تحتوي الوحدات النمطية—وغالبا ما تحتوي—على وحدات متداخلة أخرى. وبالإضافة إلى تمكين إنشاء شبكات عصبية متعددة الطبقات أكثر تفصيلاً، يتيح ذلك أيضاً حفظ نماذج التعلم العميق المعقدة هذه بسهولة كوحدة نمطية واحدة مسماة ونقلها بين مختلف الأجهزة أو وحدات المعالجة المركزية أو وحدات معالجة الرسومات. يمكن حتى تشغيل نماذج PyTorch في بيئات غير Python ، مثل C ++، باستخدام Torchscript، مما يساعد على سد الفجوة بين نماذج البحث الأولية ونشر الإنتاج.

 بشكل عام، هناك ثلاث فئات أساسية من الوحدات النمطية المستخدمة لإنشاء نماذج التعلم العميق وتحسينها في PyTorch:

  • يتم نشر وحدات nn كطبقات من الشبكة العصبية. تحتوي حزمة torch.nn على مكتبة كبيرة من الوحدات النمطية التي تقوم بعمليات شائعة مثل الالتفافات والتجميع والانحدار. على سبيل المثال، الوحدة torch.nn.Linear(n,m) تستدعي خوارزمية الانحدار الخطي بـ n مدخل وm مخرج (يتم بعد ذلك تحديد مدخلاتها ومعلماتها الأولية في أسطر التعليمات البرمجية اللاحقة).
     

  • توفر وحدة التدرج التلقائي طريقة بسيطة لحساب التدرجات تلقائيًا، وتُستخدم لتحسين معلمات النموذج عبر الانحدار التدرجي، لأي وظيفة يتم تشغيلها داخل شبكة عصبية. إلحاق أي موتر مع requires_grad=True يشير إلى نظام التدرج التلقائي (autograd) بضرورة تتبع كل عملية على هذا الموتر، ما يُمكِّن التمايز التلقائي.
     

  • تطبق وحدات Optim خوارزميات التحسين على تلك التدرجات. يوفّر Torch.optim وحدات لأنواع مختلفة من طرق التحسين، مثل الانحدار التدرجي العشوائي (SGD) أو انتشار متوسط الجذر التربيعي (RMSprop)، لتناسب احتياجات التحسين المحددة.

رسوم الحساب الديناميكية (DCGs)

تُمثّل رسوم الحساب الديناميكية (DCGs) كيفية تمثيل نماذج التعلم العميق في PyTorch. بشكل مجرّد، تُصوّر رسوم الحساب تدفق البيانات بين العمليات المختلفة في نظام رياضي: في سياق التعلم العميق، هي أساسًا تترجم رموز الشبكة العصبية إلى مخطط انسيابي يوضح العمليات التي يتم تنفيذها في كل عقدة والاعتمادات بين الطبقات المختلفة في الشبكة—ترتيب الخطوات والتسلسلات التي تحول بيانات الإدخال إلى بيانات الإخراج.

ما يُميز رسوم الحساب الديناميكية (مثل المستخدمة في PyTorch) عن رسوم الحساب الثابتة (مثل المستخدمة في Tensorflow) هو أن رسوم الحساب الديناميكية تؤجل التحديد الدقيق للحسابات والعلاقات بينها إلى وقت التشغيل. في حين أن الرسم البياني الحسابي الثابت يتطلب تحديد بنية الشبكة العصبية بأكملها وتجميعها بالكامل من أجل تشغيلها، يمكن تكرار DCGs وتعديلها سريعًا.

هذا يجعل رسوم الحساب الديناميكية (DCGs) مفيدة بشكل خاص لتصحيح الأخطاء والنماذج الأولية، حيث يمكن تغيير أجزاء معينة من رموز النموذج أو تشغيلها بمعزل عن بعضها البعض دون الحاجة إلى إعادة تعيين النموذج بأكمله— والذي، بالنسبة لنماذج التعلم العميق الكبيرة جدا المستخدمة في رؤية الكمبيوتر المعقدة ومهام معالجة اللغة الطبيعية، يمكن أن يكون مضيعة للوقت والموارد الحسابية. تمتد فائدة هذه المرونة إلى تدريب النماذج، حيث يتم إنشاء رسوم الحساب الديناميكية بسهولة في أثناء الانتشار العكسي.

في حين أن بنيتها الثابتة يمكن أن تمكن من تحقيق كفاءة حسابية أكبر، فإن الرسوم البيانية الحسابية الثابتة تتمتع بمرونة محدودة: على سبيل المثال، بناء نموذج يستخدم عددًا متنوعًا من الطبقات اعتمادًا على بيانات الإدخال—مثل الشبكة العصبية التلافيفية (CNN) التي يمكنها معالجة صور بأحجام مختلفة—أمر صعب للغاية مع الرسوم البيانية الثابتة.

التمايز التلقائي

إحدى الطرق المستخدمة على نطاق واسع لتدريب الشبكات العصبية، وخاصة في التعلم الخاضع للإشراف، هي الانتشار العكسي. في البداية، خلال عملية التمرير الأمامي، يتم إدخال بعض البيانات (x) إلى النموذج، فينتج مخرجات (y)؛ ثم، بالانتقال عكسيًا من هذه المخرجات، تُستعمل دالة الخسارة لتقييم مدى دقة تنبؤات النموذج عند قيم x المتنوعة. من خلال اشتقاق دالة الخسارة لإيجاد مشتقتها، يمكن استخدام الانحدار التدرجي لضبط الأوزان في الشبكة العصبية، طبقة تلو الأخرى.

وحدة التدرج التلقائي (autograd) في PyTorch تُشغّل تقنية التفاضل التلقائي الخاصة بها باستخدام صيغة حسابية تسمى قاعدة السلسلة، حيث تحسب المشتقات المعقدة عن طريق تقسيمها إلى مشتقات أبسط ودمجها لاحقًا. يقوم نظام التدرج التلقائي بحساب وتسجيل التدرجات تلقائيًا لجميع العمليات المنفذة في الرسم البياني الحسابي، مما يقلل بشكل كبير من الجهد المطلوب للانتشار العكسي.

عند تشغيل نموذج تم تدريبه بالفعل، يصبح التدرج التلقائي استخدامًا غير ضروري للموارد الحسابية. عند إضافة أي عملية موتر مع requires_grad=False، سيُعلم PyTorch بالتوقف عن تتبع التدرجات.

مجموعات البيانات وأدوات تحميل البيانات

يمكن أن يكون العمل مع مجموعات البيانات الكبيرة المطلوبة لتدريب نماذج التعلُّم العميق معقداً ومتطلباً من الناحية الحسابية. يوفّر PyTorch اثنين من أساسيات البيانات، مجموعات البيانات وأدوات تحميل البيانات، لتسهيل تحميل البيانات وجعل التعليمات البرمجية أكثر سهولة في القراءة.

  • torch.utils.data.Dataset يخزن عينات البيانات والتصنيفات المقابلة لها
  • يلف torch.utils.data.data.Dataloader كائن قابل للتكرار— كائن يمكن تشغيله—حول مجموعة البيانات لتمكين الوصول السهل إلى العينات
Mixture of Experts | 28 أغسطس، الحلقة 70

فك تشفير الذكاء الاصطناعي: تقرير إخباري أسبوعي

انضمّ إلى نخبة من المهندسين والباحثين وقادة المنتجات وغيرهم من الخبراء وهم يقدّمون أحدث الأخبار والرؤى حول الذكاء الاصطناعي، بعيدًا عن الضجيج الإعلامي.

نظام PyTorch البنائي

تُكمّل الميزات الأساسية لـ PyTorch نظام بنائي قوي من الأدوات والمكتبات والإضافات التي طورها أعضاء مجتمع PyTorch. يتوفر العديد من المكتبات الإضافية مفتوحة المصدر، التي تحتوي على وحدات نمطية محددة الغرض، وشبكات عصبية مهيأة مسبقًا وحتى نماذج مدربة مسبقًا، لتكملة مكتبة torch المثبتة مسبقًا.

Torchvision

Torchvision مجموعة أدوات تحتوي على وحدات وبنى شبكية ومجموعات بيانات لمختلف مهام تصنيف الصور وكشف الأجسام وتجزئة الصور.

استكشف Torchvision
TorchText

يوفّر TorchText الموارد مثل مجموعة البيانات، والتحويلات الأساسية لمعالجة النصوص، والنماذج المدرّبة مسبقًا لاستخدامها في معالجة اللغات الطبيعية.

اكتشف TorchText
تبادل الشبكة العصبية المفتوحة

يضمن تبادل الشبكات العصبية المفتوح (ONNX) قابلية التشغيل البيني بين أطر الذكاء الاصطناعي، مما يسمح للمستخدمين بنقل نماذج PyTorch الخاصة بهم بسهولة إلى منصات أخرى.

استكشف ONNX
الدروس التعليمية

تتوفر العديد من البرامج التعليمية المفيدة في PyTorch.org. على سبيل المثال، يعلم هذا الدرس التعليمي المتوسط أساسيات التعلم العميق بالتعزيز من خلال تدريب ذكاء اصطناعي على لعب لعبة فيديو.

استكشف دروس PyTorch التعليمية

تثبيت وتشغيل PyTorch

يمكن تثبيت وتشغيل PyTorch بتكوينات مختلفة على الأنظمة المحلية والمنصات السحابية.

يتطلب تشغيل PyTorch محليًا تثبيت Python، باستخدام مدير الحزم Anaconda، أو Homebrew، أو موقع Python الإلكتروني.

يمكن تثبيت PyTorch محليًا عبر Anaconda باستخدام الأمر conda install pytorch torchvision -c pytorch، أو عبر pip باستخدام الأمر pip3 install torch torchvision. يوصى باستخدام Anaconda، لأنه يوفر جميع تبعيات PyTorch (بما في ذلك Python) في تثبيت واحد محميّ.2

يمكن تشغيل PyTorch أيضًا على المنصات السحابية، بما في ذلك Amazon Web Service، و Google Cloud، و Microsoft Azure.

يُنصح (ولكن ليس إلزاميًا) بالعمل مع وحدات معالجة الرسوميات NVIDIA للاستفادة من دعم PyTorch لـ CUDA (بنية الحوسبة الموحدة للأجهزة)، الذي يقدم تدريبًا وأداءً أسرع بشكل ملحوظ مقارنة بما يمكن أن توفره وحدات المعالجة المركزية.

حلول ذات صلة
IBM watsonx.ai

تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي بسرعة أكبر وببيانات أقل.

اكتشف watsonx.ai
حلول الذكاء الاصطناعي

استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.

استكشف حلول الذكاء الاصطناعي
الاستشارات والخدمات المتعلقة بالذكاء الاصطناعي

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

استكشف خدمات الذكاء الاصطناعي
اتخِذ الخطوة التالية

احصل على وصول شامل إلى القدرات التي تغطي دورة حياة تطوير الذكاء الاصطناعي. تمكَّن من إنتاج حلول ذكاء اصطناعي قوية بفضل الواجهات سهلة الاستخدام وعمليات سير العمل السلسة وإمكانية الوصول إلى واجهات برمجة التطبيقات ومجموعات تطوير البرامج القياسية في الصناعة.

استكشف watsonx.ai احجز عرضًا توضيحيًا مباشرًا