تعرف على كيفية قياس FLOPs للتعقيد الحسابي لنماذج الذكاء الاصطناعي. اكتشف كيفية حساب FLOPs لـ Ultralytics وتحسين الأداء لـ Edge AI.
FLOPs، أو عمليات النقطة العائمة، هي مقياس قياسي يستخدم لقياس التعقيد الحسابي لـ نموذج التعلم الآلي. وهي تحسب على وجه التحديد عدد العمليات الحسابية — بشكل أساسي عمليات الجمع والضرب التي تتضمن أرقامًا عشرية — التي يجب أن تقوم بها الشبكة العصبية لمعالجة مدخل واحد، مثل صورة أو جملة. في عالم التعلم العميق، تعمل FLOPs كمقياس نظري لتقدير مدى "ثقل" النموذج أو تكلفته الحسابية. يشير عدد FLOPs الأعلى عمومًا إلى أن النموذج أكثر تعقيدًا وسيتطلب مزيدًا من قوة المعالجة والطاقة للتنفيذ، في حين يشير العدد الأقل إلى بنية خفيفة الوزن مصممة لتحقيق الكفاءة.
عند تطوير تطبيقات الذكاء الاصطناعي، غالبًا ما يواجه المهندسون مفاضلة بين الدقة والسرعة. تعمل FLOPs كبديل مستقل عن الأجهزة ل زمن استدلال الاستدلال، مما يسمح للمطورين بمقارنة البنى المختلفة دون الحاجة إلى قياسها على كل جهاز ممكن. هذا المقياس ضروري لاختيار النموذج المناسب لسيناريوهات النشر المحددة. على سبيل المثال، قد يعطي الباحث الذي يجري تجارب على خوادم حوسبة سحابية قوية الأولوية للدقة على الكفاءة، باستخدام نماذج ذات FLOPs عالية. على العكس من ذلك، يجب على المهندس الذي يبني أجهزة AI متطورة إعطاء الأولوية لـ FLOPs منخفضة لضمان تشغيل التطبيق بسلاسة ضمن حدود صارمة للطاقة والحرارة.
تتجلى الآثار العملية لـ FLOPs في مختلف الصناعات التي تعتبر فيها الموارد الحاسوبية عاملاً حاسماً .
من المهم التمييز بين "FLOPs" (جمع FLOP) و "FLOPS" (بالأحرف الكبيرة). على الرغم من أنهما يبدوان متطابقين تقريبًا، إلا أنهما يقيسان أشياء مختلفة. يشير FLOPs (بالحرف الصغير 's') إلى إجمالي عدد العمليات المطلوبة من قبل النموذج — وهو مقياس ثابت للتعقيد. FLOPS (بحرف كبير) تعني عمليات النقطة العائمة في الثانية وتقيس سرعة أو قدرة أداء الأجهزة، مثل GPU. يمكنك التفكير في FLOPs على أنها المسافة التي تحتاج السيارة إلى قطعها (العمل المطلوب إنجازه)، بينما FLOPS هي السرعة القصوى للسيارة (قدرة الأجهزة على إنجاز العمل).
يمكنك بسهولة حساب التكلفة الحسابية Ultralytics باستخدام Python. وهذا مفيد بشكل خاص خلال مرحلة تحسين النموذج لضمان توافق الشبكة العصبية مع ميزانية الأجهزة الخاصة بك. يوضح المثال التالي كيفية تحميل نموذج YOLO26 وتحديد FLOPs الخاص به.
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")
لجعل النماذج أكثر قابلية للتطبيق، يستخدم الباحثون عدة تقنيات لتقليل FLOPs دون التضحية بشكل كبير بالدقة . يتضمن تقليم النموذج إزالة الوصلات الأقل أهمية في الشبكة العصبية، مما يؤدي إلى تخفيفها بشكل فعال. تقنية أخرى هي التكمية، التي تقلل من دقة الأرقام المستخدمة في الحسابات (على سبيل المثال، من 32 بت عائم إلى 8 بت صحيح). تساعد الأدوات المتاحة على Ultralytics في تبسيط عمليات التحسين هذه، مما يسهل نشر نماذج فعالة لأهداف مثل TensorRT أو OpenVINO. من خلال فهم وتحسين FLOPs، يمكن للمطورين بناء أنظمة ذكاء اصطناعي قوية ومستدامة.