الرد على دعوة الحضور لحضور حدث TensorFlow Everywhere المحلي اليوم!
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

Swift لـ TensorFlow (في وضع الأرشيف)

كانت Swift for TensorFlow تجربة في منصة الجيل التالي للتعلم الآلي ، حيث تضمنت أحدث الأبحاث عبر التعلم الآلي والمترجمات والبرمجة القابلة للتفاضل وتصميم الأنظمة وما بعده. تم أرشفته في فبراير 2021. وتشمل بعض الإنجازات الهامة من هذا المشروع ما يلي:

لن يتلقى هذا الموقع المزيد من التحديثات. سيستمر الوصول إلى وثائق API والتنزيلات الثنائية بالإضافة إلى تسجيلات اجتماع Open Design Review .

سويفت

Swift هي لغة برمجة للأغراض العامة مفتوحة المصدر ، ولها قاعدة مستخدمين كبيرة ومتنامية. لقد اخترنا Swift لأنه يحتوي على عملية تصميم لغة مفتوحة ولأسباب فنية محددة مفصلة في مستند " لماذا Swift لـ TensorFlow ". نفترض أن معظم القراء ليسوا على دراية بها ، لذلك سنتطرق بإيجاز إلى بعض الأشياء الإضافية المهمة حولها هنا.

بدأ تطوير Swift في عام 2010 ، وكان يهدف إلى الجمع بين أفضل الممارسات في تصميم لغة البرمجة معًا في نظام واحد بدلاً من محاولة التجديد الأكاديمي أو نشر منهجيات البرمجة دينياً. نتيجة لذلك ، فهي تدعم تطوير النماذج المتعددة (على سبيل المثال الوظيفية ، OOP ، العامة ، الإجرائية ، إلخ) كلها في نظام واحد ، وتجلب العديد من المفاهيم المعروفة من اللغات الأكاديمية (مثل مطابقة الأنماط وأنواع البيانات الجبرية وفئات الكتابة) في المقدمة. بدلاً من تشجيع المطورين بشدة على إعادة كتابة جميع التعليمات البرمجية الخاصة بهم في Swift ، فإنه يركز بشكل عملي على إمكانية التشغيل البيني مع لغات أخرى ، على سبيل المثال ، السماح لك باستيراد ملفات رأس C مباشرةً واستخدامها بدون FFI و (الآن) القدرة على استخدام Python APIs بدون أغلفة .

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

الجانب الأخير ذو الصلة في تصميم Swift هو أن الكثير من لغة Swift يتم تنفيذه بالفعل في مكتبته القياسية. الأنواع "المدمجة" مثل Int و Bool هي في الواقع مجرد بنيات محددة في المكتبة القياسية التي تلتف الأنواع والعمليات السحرية. على هذا النحو ، نمزح أحيانًا أن Swift هو مجرد "سكر نحوي لـ LLVM".

هناك الكثير من الأشياء الرائعة حول Swift والكثير من المحتوى المتاح عبر الإنترنت. إذا كنت مهتمًا بمعرفة المزيد حول المفاهيم العامة لبرمجة Swift ، فإليك بعض الروابط للبدء:

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

لماذا Swift for TensorFlow؟

Swift for TensorFlow هي طريقة جديدة لتطوير نماذج التعلم الآلي. يمنحك قوة TensorFlow المدمجة مباشرة في لغة برمجة Swift . نعتقد أن نماذج التعلم الآلي مهمة جدًا لدرجة أنها تستحق دعمًا من الدرجة الأولى للمترجم واللغة .

من البدائل الأساسية في التعلم الآلي التحسين القائم على التدرج: مشتقات وظائف الحوسبة لتحسين المعلمات. باستخدام Swift for TensorFlow ، يمكنك بسهولة التمييز بين الوظائف باستخدام عوامل التشغيل التفاضلية مثل gradient(of:) اللوني gradient(of:) ، أو التفريق فيما يتعلق بنموذج كامل عن طريق استدعاء gradient(in:) الأسلوب gradient(in:) . لا تتوفر واجهات برمجة تطبيقات التمايز هذه فقط للمفاهيم المتعلقة Tensor - فهي معممة لجميع الأنواع التي تتوافق مع بروتوكول Differentiable ، بما في ذلك متجهات Float و Double و SIMD وهياكل البيانات الخاصة بك.

// Custom differentiable type.
struct Model: Differentiable {
    var w: Float
    var b: Float
    func applied(to input: Float) -> Float {
        return w * input + b
    }
}

// Differentiate using `gradient(at:_:in:)`.
let model = Model(w: 4, b: 3)
let input: Float = 2
let (𝛁model, 𝛁input) = gradient(at: model, input) { model, input in
    model.applied(to: input)
}

print(𝛁model) // Model.TangentVector(w: 2.0, b: 1.0)
print(𝛁input) // 4.0

بالإضافة إلى المشتقات ، يأتي مشروع Swift for TensorFlow مع سلسلة أدوات متطورة لجعل المستخدمين أكثر إنتاجية. يمكنك تشغيل Swift بشكل تفاعلي في دفتر Jupyter ، والحصول على اقتراحات الإكمال التلقائي المفيدة لمساعدتك في استكشاف سطح API الهائل لمكتبة التعلم العميق الحديثة. يمكنك البدء مباشرة في متصفحك في ثوان !

يعد الترحيل إلى Swift for TensorFlow أمرًا سهلاً حقًا بفضل تكامل Python القوي في Swift. يمكنك ترحيل كود Python تدريجيًا (أو الاستمرار في استخدام مكتبات Python المفضلة لديك) ، لأنه يمكنك بسهولة استدعاء مكتبة Python المفضلة لديك باستخدام بناء جملة مألوف:

import TensorFlow
import Python

let np = Python.import("numpy")

let array = np.arange(100).reshape(10, 10)  // Create a 10x10 numpy array.
let tensor = Tensor<Float>(numpy: array)  // Seamless integration!