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

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

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

سويفت

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

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

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

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

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

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

لماذا سويفت ل TensorFlow؟

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

أحد البدائيات الأساسية في التعلم الآلي هو التحسين القائم على التدرج: مشتقات وظائف الحوسبة لتحسين المعلمات. باستخدام Swift for TensorFlow، يمكنك بسهولة التمييز بين الوظائف باستخدام عوامل التشغيل التفاضلية مثل gradient(of:) أو التفريق فيما يتعلق بنموذج كامل عن طريق استدعاء الأسلوب 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 لـ 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!