اخلاء مسؤولية | DISCLAIMER
JAX عبارة عن مكتبة Python بها وظائف NumPy تُستخدم لقطع العمليات البسيطة في نمذجة التعلم الآلي
يمكن أن يحدث التمايز التلقائي فرقًا كبيرًا في نجاح نموذج التعلم العميق ، مما يقلل من وقت التطوير للتكرار على النماذج والتجارب. في وقت سابق ، كان على المبرمجين تصميم التدرجات الخاصة بهم مما يجعل النموذج عرضة للأخطاء بصرف النظر عن استهلاك الكثير من الوقت والذي ثبت بمرور الوقت أنه كارثي. لتتبع التدرجات عبر الشبكة العصبية ، يتم استخدام مكتبات مثل TensorFlow و PyTorch. تساعد هذه المكتبات في تطوير الوظائف العادية ، ولكن لتطوير نموذج يقع خارج نطاق اختصاصها ، فهذه ليست كافية. Autograd هي مكتبة واحدة مخصصة للتمييز التلقائي بين كود Python و NumPy الأصلي. يمكن لـ JAX ، الإصدار المرتجل من Autograd ، الجمع بين تسريع الأجهزة والتمايز التلقائي مع XLA (الجبر الخطي المعجل) ، وهو مترجم خاص بالمجال للجبر الخطي يمكنه تسريع نماذج تدفق الموتر. باختصار ، JAX هي مكتبة Python مع وظائف NumPy المستخدمة لقطع عمليات التعلم الآلي التافهة.
لماذا يجب عليك استخدام JAX؟
بصرف النظر عن دعم التمايز التلقائي ، الذي يحمل في المقام الأول موهبة التعلم العميق ، يمكن لـ JAX تحسين السرعة بشكل كبير ، وهي الوظيفة الوحيدة التي تجعل JAX عزيزًا على العديد من المطورين.
نظرًا لأن عمليات JAX تعتمد على XLA ، فمن الممكن التجميع بمعدل أسرع من المعتاد ، أي حوالي 7.3 مرة أسرع مع التدريب العادي ، وسرعة متسارعة تبلغ 12 مرة على المدى الطويل. تساعد ميزة تجميع JIT (Just In Time) الخاصة بـ JAX ، بشكل أكبر في تحسين سرعتها ، عن طريق إضافة أداة تزيين بسيطة. تساعد JAX المطورين بشكل كبير في تقليل التكرار من خلال التوجيه. تشتمل عملية التعلم الآلي على العديد من التكرارات ، حيث يتم استخدام وظيفة واحدة لنمذجة عدد كبير من مجموعات البيانات. يسمح التحويل التلقائي الذي تقدمه JAX عبر تحويل vmap بتوازي البيانات باستخدام تحويل pmap. عادة ، يعتبر JAX إطار عمل بديل للتعلم العميق ، ومع ذلك ، فإن تطبيقاته تتجاوز وظائف المكتبة. Flax و haiku و elegy هي المكتبات التي تم إنشاؤها فوق JAX لعمليات التعلم العميق. على وجه الخصوص ، يقوم Hessians بتحسين الترتيب الأعلى ، وهو أمر JAX جيد في الحوسبة ، كل ذلك بسبب XLA.
JXA مقابل Numpy:
نظرًا لأن JXA متوافق بشكل كبير مع وحدات معالجة الرسومات ، فإنه يتمتع بتوافق متأصل مع وحدات المعالجة المركزية ، على عكس Numpy المتوافق فقط مع وحدات المعالجة المركزية. يحتوي JAX على واجهة برمجة تطبيقات مشابهة لـ Numpy وبالتالي يمكنه ترجمة التعليمات البرمجية تلقائيًا مباشرة على مسرعات مثل GPUs و TPU ، مما يجعل العملية سلسة. وهذا يعني أن التعليمات البرمجية المكتوبة في بناء جملة Numpy يمكن تشغيلها على كل من وحدات المعالجة المركزية ووحدات معالجة الرسومات بدون أي خلل. على الرغم من وجود هياكل متخصصة ، فإن JAX يجلس في مستوى أقل مع مستوى تحكم أقل من التعلم العميق ، مما يجعله بديلاً مثاليًا لـ NumPy ، وبسبب هيكله المعدني العاري ، يمكن استخدامه لجميع أنواع التطوير إلى جانب التعلم العميق . بشكل عام ، يمكن اعتبار JAX إصدارًا معززًا من Numpy لأداء الوظائف المذكورة أعلاه ، مع معالجة إصدار JAX غير المترابط على أنه Jax.numPy ، و JAX غير مكتمل تقريبًا باستثناء أنه يمكن لـ JAX تشغيل تعليمات برمجية على المسرعات.