مرحبا يا هبر! أقدم إليكم ترجمة المقال
"لماذا قد تكون سويفت هي الشيء الكبير التالي في التعلم العميق" بقلم ماكس بيتشونكين ، الذي أثار اهتمامي ، والذي يناقش فيه المؤلف اللغة التي سيتم بها التدريب العميق في السنوات القادمة.
إذا كنت تقوم بتدريب متعمق ، فعلى الأرجح يجب أن تبدأ في تعلم Swift
دخول
إذا كنت تقوم بالبرمجة ، فعلى الأرجح عندما تسمع Swift ، فكرت في تطوير التطبيقات على iOS و MacOS. إذا كنت تدرب بشكل متعمق ، فمن المفترض أن تكون قد سمعت عن
Swift لـ Tensorflow (S4TF). ثم قد تتساءل: "لماذا قامت Google بإنشاء إصدار من TensorFlow لـ Swift؟ بعد كل شيء ، هناك بالفعل إصدارات لبيثون و C ++ ، إذن لماذا لغة أخرى؟ " في هذا المنشور ، سأحاول الإجابة على هذا السؤال وأذكر الأسباب التي تجعلك تراقب عن كثب S4TF ، وكذلك لغة Swift نفسها. لن أحاول إجراء تحليل مفصل ، سأحاول فقط وصف الصورة الكبيرة مع الكثير من الروابط ، إذا كنت مهتمًا ، يمكنك الحفر بشكل أعمق.
سويفت لديه دعم قوي جدا
تم إنشاء Swift بواسطة
كريس لوتنر عندما كان يعمل في شركة Apple. يعمل كريس الآن مع
Google Brain (أحد أفضل فرق أبحاث الذكاء الاصطناعي في العالم). إن حقيقة أن مبتكر لغة Swift يعمل الآن في المختبر ، الذي يشارك في التدريب المتعمق ، يتحدث عن مدى خطورة هذا المشروع.
منذ بعض الوقت ، أدرك الأشخاص في Google أنه حتى لو كانت Python ولغة رائعة ، فلا يزال هناك الكثير من القيود التي يصعب التغلب عليها. كانت هناك حاجة إلى لغة جديدة لـ TensorFlow ، وبعد الكثير من المداولات ، تم اختيار Swift كمرشح. لن أخوض في التفاصيل هنا ، لكن
هنا وثيقة تصف عيوب بايثون ، بالإضافة إلى اللغات الأخرى التي تم النظر فيها وكيف تضافرت جميعها في سويفت.
Swift for TensorFlow هو أكثر بكثير من مجرد مكتبة
Swift for TensorFlow ليس فقط TF بالنسبة إلى لغة أخرى. هذا هو في الأساس فرع آخر (بمعنى
بوابة ) للغة سويفت نفسها. هذا يعني أن S4TF ليس مكتبة ؛ إنها لغة ذات قواعدها الخاصة ، مع وظائفها المدمجة التي تدعم جميع الوظائف التي تتطلبها TensorFlow. على سبيل المثال ، لدى S4TF نظام قوي جدًا
للتمييز التلقائي : إنه أحد الأشياء الأساسية في التعلم العميق ، وهو ضروري لحساب التدرجات. قارن هذا مع Python ، حيث التمايز التلقائي ليس هو المكون الرئيسي للغة. تم دمج بعض الميزات التي تم تطويرها في الأصل كجزء من S4TF لاحقًا في لغة Swift نفسها.
سريع سريع
عندما اكتشفت لأول مرة أن سويفت هو أسرع من جيم ، لقد دهشت. كنت أعرف أن C تم تحسينه بدرجة كبيرة وتم السماح له بتحقيق سرعة عالية جدًا ، ولكن هذا كان بسبب إدارة الذاكرة الصغيرة ، وبالتالي واجهت C مشاكل في أمان الذاكرة. بالإضافة إلى ذلك ، C ليست سهلة التعلم.
يعمل Swift الآن
بسرعة C في العمليات الحسابية العددية ، ولا يواجه أي مشكلة في أمان الذاكرة ، وهو أسهل بكثير في التعلم. مترجم LLVM من Swift قوي للغاية وله تحسين فعال للغاية ، وسوف يوفر سرعة رمز سريعة للغاية.
يمكنك استخدام Python و C و C ++ في Swift
نظرًا لأن Swift للتعلم الآلي في مرحلة مبكرة جدًا من تطورها ، لم يتم إنشاء العديد من مكتبات MO. يجب ألا تقلق كثيرًا بشأن هذا لأن Swift لديه
توافق Python المذهل مع Python. يمكنك ببساطة استيراد أي مكتبة بيثون إلى سويفت ، وأنها تعمل. يمكنك أيضًا استيراد مكتبات C و C ++ إلى Swift (تحتاج إلى C ++ للتأكد من أن ملفات الرأس مكتوبة بلغة C خالصة ، بدون وظائف C ++).
لتلخيص ، إذا كنت بحاجة إلى وظائف محددة ، ولكن لم يتم تنفيذها بعد في Swift ، يمكنك استيراد حزم Python أو C أو C ++ المناسبة.
! مثير للإعجاب
سويفت يمكن أن تذهب منخفضة جدا
إذا كنت تستخدم TensorFlow ، فمن المحتمل أنك فعلت ذلك مع حزمة Python. تحت الغطاء ، يستخدم إصدار Python من مكتبة TensorFlow رمز C بمستوى منخفض جدًا. لذلك عندما تقوم باستدعاء وظيفة في TensorFlow ، فإنك تستخدم في بعض المستويات كود C ، وهذا يعني أن هناك حد لمدى إمكانية التحقق من الكود المصدر. على سبيل المثال ، إذا كنت تريد أن ترى كيف يتم تنفيذ التلفيفات ، فلن ترى رمز Python لأنه يتم تطبيقه في C.
سويفت مختلف. ودعا كريس لوتنر سويفت "
السكر النحوي لل LLVM [لغة التجميع]". هذا يعني ، في الواقع ، أن Swift يعمل بشكل مباشر تقريبًا مع الأجهزة ، وبين عدم وجود سطور أخرى من التعليمات البرمجية المكتوبة في C. وهذا يعني أيضًا أن Swift سريع جدًا ، كما هو موضح أعلاه. كل هذا يؤدي إلى حقيقة أنك ، كمطور ، يمكنك التحقق من الكود على المستويين المرتفع والمنخفض للغاية ، دون الحاجة إلى استخدام C.
ما التالي؟
يعد Swift مجرد جزء واحد من ابتكارات التعلم المتعمقة التي تحدث في Google. هناك مكون آخر مرتبط بشدة أيضًا:
MLIR ، وهو ما يعني التمثيل المتوسط متعدد المستويات. سوف يكون MLIR بنية أساسية مجمعة موحدة تتيح لك كتابة التعليمات البرمجية في Swift (أو أي لغة أخرى) وتجميعها على أي أجهزة داعمة. يوجد الآن العديد من المجمعين للمعدات المستهدفة المختلفة ، ولكن MLIR قادر على تغيير هذا ، فهو لن يسمح بإعادة استخدام الرمز فحسب ، بل أيضًا كتابة مكونات برنامج التحويل البرمجي ذي المستوى المنخفض الخاص بك. كما سيسمح للباحثين باستخدام التعلم الآلي لتحسين الخوارزميات منخفضة المستوى.
بينما يعمل MLIR كمترجم للتعلم الآلي ، فإننا نرى أيضًا إمكانية استخدام طرق التعلم الآلي في المجمعين. هذا مهم بشكل خاص لأن عدد المهندسين الذين يطورون مكتبات رقمية لا ينمو بالسرعة التي يتنوع بها الطرز أو الأجهزة للتعلم الآلي.
تخيل استخدام التعلم العميق لتحسين الخوارزميات ذات المستوى المنخفض لتقسيم الذاكرة إلى بيانات (
Halide تحاول حل مشكلة مماثلة). وهذه ليست سوى البداية ، نحن ننتظر العديد من التطبيقات الإبداعية الأخرى باستخدام التعلم الآلي في المجمعين.
النتائج
إذا كنت تعمل في مجال التعلم العميق ، فربما يجب عليك البدء في تعلم Swift. هذا سيجلب العديد من المزايا على بيثون. تستثمر Google بجدية في جعل Swift المكون الرئيسي لبنية TensorFlow ML الخاصة بها ، وعلى الأرجح ستصبح Swift لغة تعلم متعمقة. إذا كنت بدأت بالفعل في التعلم واستخدام Swift ، فسوف يمنحك هذا ميزة رائدة.