عند إنشاء التطبيقات ، يكون اختيار الأدوات الصحيحة أمرًا بالغ الأهمية. تريد الأداء العالي ، وتطوير سهلة ، ونشر منصة متعددة السلس. تقدم الأطر الشائعة مقايضات:
ولكن إليك The Catch: معظم الأطر تفتقر إلى الدعم التعلم الآلي الأصلي (ML) دعم. هذه الفجوة موجودة لأن هذه الأطر تسبق طفرة الذكاء الاصطناعي. السؤال هو:
كيف يمكننا دمج ML بكفاءة في التطبيقات؟
حلول شائعة مثل onnx Runtime تسمح بتصدير نماذج ML لتكامل التطبيق ، ولكن لم يتم تحسينها في وحدات المعالجة المركزية أو مرنة بما يكفي للخوارزميات المعممة.
أدخل Jax ، مكتبة Python التي:
في هذه المقالة ، سنعرض لك كيفية:
jax يشبه numpy على المنشطات. تم تطويرها بواسطة Google ، وهي مكتبة منخفضة المستوى وعالية الأداء تجعل ML متاحة ولكنها قوية.
إليك مثال يقارن Numpy و Jax:
# NumPy version import numpy as np def assign_numpy(): a = np.empty(1000000) a[:] = 1 return a # JAX version import jax.numpy as jnp import jax @jax.jit def assign_jax(): a = jnp.empty(1000000) return a.at[:].set(1)
المعايير في Google Colab تكشف عن حافة أداء Jax:
هذه المرونة والسرعة تجعل Jax مثالية لبيئات الإنتاج حيث يكون الأداء مفتاحًا.
يترجم Jax رمز Python إلى HLO (محسن المستوى العالي) المواصفات ، والتي يمكن تجميعها وتنفيذها باستخدام C XLA Libraries . هذا يمكّن:
اكتب وظيفة Jax الخاصة بك وتصدير تمثيل HLO الخاص بها. على سبيل المثال:
import jax.numpy as jnp def fn(x, y, z): return jnp.dot(x, y) / z
لإنشاء HLO ، استخدم البرنامج النصي jax_to_ir.py من مستودع jax:
python jax_to_ir.py \ --fn jax_example.prog.fn \ --input_shapes '[("x", "f32[2,2]"), ("y", "f32[2,2")]' \ --constants '{"z": 2.0}' \ --ir_format HLO \ --ir_human_dest /tmp/fn_hlo.txt \ --ir_dest /tmp/fn_hlo.pb
ضع الملفات الناتجة (fn_hlo.txt و fn_hlo.pb) في دليل أصول التطبيق الخاص بك.
استنساخ مستودع jax وانتقل إلى jax/أمثلة/jax_cpp .
#ifndef MAIN_H #define MAIN_H extern "C" { int bar(int foo); } #endif
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )ترجمة مع Bazel:
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )ستجد libjax.dylib المترجمة في دليل الإخراج.
ffi للتواصل مع مكتبة C. إنشاء ملف jax.dart:
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )قم بتضمين المكتبة الديناميكية في دليل المشروع الخاص بك. اختبره مع:
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )سترى الإخراج من مكتبة C في وحدة التحكم الخاصة بك.
نقوم ببناء منصة منظمة العفو الدولية المتطورة مع رموز دردشة غير محدودة وذاكرة طويلة الأجل ، مما يضمن تفاعلات سلسة واعية للسياق تتطور مع مرور الوقت.إنه مجاني تمامًا ، ويمكنك تجربته داخل IDE الحالي أيضًا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3