TensorFlow
TensorFlow هو إطار عمل Google مفتوح المصدر للتعلّم الآلي، يتيح تدريب النماذج ونشرها على الخوادم والمتصفحات والهواتف، وتشكّل Keras واجهته البرمجية عالية المستوى.
TensorFlow إطار عمل مفتوح المصدر لـتعلّم الآلة (ML) أطلقته Google في نوفمبر 2015 بموجب ترخيص Apache 2.0، بعدما أنشأه فريق Google Brain للأبحاث والمنتجات الداخلية. تعبّر البرامج الخاصة بـالتعلّم العميق وغيرها من الأعمال العددية عن الحسابات بعمليات على الموترات، وهي مصفوفات متعددة الأبعاد من الأعداد؛ ويفاضل TensorFlow هذه العمليات تلقائيًا، ويحوّلها إلى مخططات محسّنة، وينفذها على وحدات المعالجة المركزية ووحدات معالجة الرسومات ووحدات معالجة الموترات. يغطي نظامه المتكامل مسار عمليات تعلّم الآلة (MLOps) بأكمله، من التدريب إلى نشر النماذج: Keras لتعريف النماذج، وTensorBoard لتتبّع التجارب، وTensorFlow Serving لتقديم النماذج في بيئة الإنتاج، وTensorFlow.js للمتصفحات، وLiteRT، المعروف سابقًا باسم TensorFlow Lite، للهواتف والأجهزة المضمنة التي تشغّل الذكاء الاصطناعي الطرفي. مع TensorFlow 2.21 في مارس 2026، قالت Google إن العمل المستقبلي على TensorFlow سيركز على الأمان وإصلاح الأخطاء وتحديث التبعيات ومساهمات المجتمع، ووجّهت مشاريع الذكاء الاصطناعي التوليدي الجديدة إلى Keras 3 أو JAX أو PyTorch.
آلية عمل TensorFlow#
كان على مستخدمي TensorFlow 1.x إنشاء مخطط حسابي ثابت أولًا ثم تنفيذه في جلسة. أما TensorFlow 2.0، الذي أُطلق عام 2019، فجعل التنفيذ الفوري هو الوضع الافتراضي، فتُنفّذ العمليات مباشرةً كما في شيفرة Python العادية، مع الاحتفاظ بالمخططات لأغراض التحسين: إذ تُحوّل دالة مزينة بـ tf.function مرة واحدة لكل توقيع إدخال إلى مخطط يستطيع TensorFlow تحسينه وتجميعه باستخدام مترجم XLA وحفظه بتنسيق SavedModel لنشره من دون Python. ويسجل tf.GradientTape عمليات المرور الأمامي كي يتمكن TensorFlow من حساب التدرجات اللازمة لـالانتشار العكسي والانحدار المتدرج. ينفذ هذا البرنامج الأمرين:
import tensorflow as tf
w = tf.Variable([[1.0], [-2.0]])
x = tf.constant([[3.0, 4.0]])
@tf.function # trace the Python function into a TensorFlow graph on the first call
def loss_fn(x):
print("Tracing") # Python code runs only while tracing, not on every call
return tf.reduce_sum((x @ w) ** 2)
# Record operations on a tape to compute the gradient of the loss with respect to w
with tf.GradientTape() as tape:
loss = loss_fn(x)
gradient = tape.gradient(loss, w)
loss_fn(x) # same input shape and dtype: reuses the traced graph without printing
print(f"loss {loss.numpy()}, gradient {gradient.numpy().ravel()}")يطبع Tracing مرة واحدة ثم loss 25.0, gradient [-30. -40.]: إذ نفّذ الاستدعاء الثاني المخطط المخزّن مؤقتًا من دون تشغيل جسم Python، وتدرّج (3w₁ + 4w₂)² عند w = (1, -2) هو 2 × (-5) × (3, 4). ولأغراض التدريب الموزع، تكرّر استراتيجيات tf.distribute النموذج عبر وحدات GPU متعددة أو شرائح TPU أو آلات.
نظام TensorFlow المتكامل#
- Keras: واجهة برمجة تطبيقات عالية المستوى لتعريف الطبقات والنماذج وتدريبها باستخدام
fit. منذ TensorFlow 2.16، يؤدي تثبيت TensorFlow إلى تثبيت Keras 3، الذي يعمل أيضًا على JAX وPyTorch. - TensorBoard: لوحة معلومات لمنحنيات الخسارة والمقاييس والمدرجات التكرارية ورسوم النماذج أثناء التدريب. وتقرأ أيضًا السجلات التي تكتبها أطر عمل أخرى، بما في ذلك تشغيلات تدريب Ultralytics YOLO، ولم يعد TensorFlow 2.21 يثبّتها اعتمادًا.
- TensorFlow Serving: نظام لتقديم النماذج يحمّل نماذج SavedModel ويجيب عن طلبات التنبؤ عبر gRPC أو REST، مع إصدارات تتيح تبديل النماذج أثناء التشغيل.
- TFX: إطار عمل لخطوط أنابيب تعلّم الآلة في بيئة الإنتاج، يربط بين التحقق من البيانات والتدريب والتقييم ودفع النموذج المعتمد إلى نظام التقديم.
- TensorFlow.js: يشغّل النماذج ويدرّبها في المتصفح وفي Node.js، ما يتيح إجراء الاستدلال على جهاز المستخدم من دون إرسال البيانات إلى خادم.
- LiteRT: بيئة تشغيل Google على الجهاز لأنظمة Android وiOS وLinux المضمنة والمتحكمات الدقيقة؛ وقد أعيدت تسميتها من TensorFlow Lite في سبتمبر 2024. تشغّل نماذج
.tfliteالمحوّلة من TensorFlow أو PyTorch أو JAX، مع تسريع على وحدات GPU وNPU للهواتف المحمولة.
TensorFlow مقارنةً بـ PyTorch وJAX#
- PyTorch مقارنةً بـ TensorFlow: اعتمد PyTorch التنفيذ الفوري منذ البداية، وأضاف
torch.compileتجميع المخططات. وهو إطار العمل الافتراضي لمعظم الشيفرات البحثية الجديدة والنماذج ذات الأوزان المفتوحة، بينما تكمن قوة TensorFlow في مجموعة أدوات النشر الناضجة للخوادم والمتصفحات والأجهزة المحمولة. - JAX: مكتبة من Google بأسلوب NumPy، وتوفّر تحويلات قابلة للتركيب، و
gradللمشتقات، وjitلتجميع XLA، وvmapللتوجيه المتجهي. تدرّب Google نماذج Gemini باستخدام JAX. - Keras: واجهة برمجة تطبيقات عالية المستوى وليست محركًا مستقلًا. تعمل شيفرة Keras 3 على TensorFlow أو JAX أو PyTorch، لذا لا يربط تعريف النموذج المشروع بإطار عمل واحد.
تحويل النماذج لتشغيلها باستخدام TensorFlow#
تصل النماذج المدرّبة بأطر عمل أخرى إلى أدوات النشر في TensorFlow عبر المحوّلات: إذ تعيد onnx2tf بناء مخطط ONNX بوصفه TensorFlow SavedModel، ويلتف jax2tf حول دوال JAX ليجعلها دوال TensorFlow، بينما ينتج محوّل LiteRT Torch من Google نماذج LiteRT مباشرةً من PyTorch. تُكتب نماذج Ultralytics YOLO باستخدام PyTorch، ويستخدم وضع التصدير هذه المسارات مع YOLO26: إذ يصدّر format="saved_model" النموذج إلى ONNX ثم يحوّله باستخدام onnx2tf إلى SavedModel لاستخدامه مع TensorFlow Serving، ويجمّع format="edgetpu" نموذج INT8 لـCoral Edge TPUs، بينما يستخدم format="litert" LiteRT Torch، لذا لا يتطلب تثبيت TensorFlow. يشغّل هذا البرنامج تصدير SavedModel:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Convert through ONNX to a TensorFlow SavedModel directory
path = model.export(format="saved_model")
print(f"SavedModel: {path}")ينشئ التصدير مجلد yolo26n_saved_model، الذي يحمّله tf.saved_model.load في Python، ويمكن لـ Ultralytics YOLO نفسه تشغيله باستخدام YOLO("yolo26n_saved_model").










