Ultralytics YOLO27:

تكامل Apple Core AI#

يتطلب تصدير Core AI نظام macOS 26 أو أحدث على أجهزة Apple silicon، أو Linux بمعمارية x86_64

تنشر coreai-core حزمتَي macosx_26_0_arm64 وmanylinux_2_34_x86_64، لذا يمكن إجراء التصدير على أجهزة Mac المزودة بشرائح Apple silicon وعلى Linux بمعمارية x86_64 وإصدار glibc 2.34 أو أحدث. ويعمل .aimodel المُصدَّر على iOS 27 وmacOS 27. يحمّل حزمة تطوير البرامج (SDK) لنظام iOS من Ultralytics (الإصدار 8.9.15 وما بعده) وإضافة Flutter (الإصدار 0.6.15 وما بعده) أصول .aimodel كخيار اختياري على أجهزة iOS 27؛ بينما تظل Core ML الخيار الافتراضي لهما.

إن Core AI إطار عمل جديد من Apple لتشغيل الشبكات العصبية مباشرةً على أجهزة Apple silicon. ويقدم تنسيق النماذج .aimodel، وواجهة استدلال حديثة بلغة Swift، وأدوات تحويل قائمة على PyTorch، وتجميعًا مسبقًا، وتخصيصًا للنماذج، وأدوات مخصصة لتصحيح الأخطاء وتحليل الأداء.

تصف Apple إطار Core AI بأنه الجيل التالي من تنفيذ الذكاء الاصطناعي على الجهاز، وإطار الاستدلال الذي يقوم عليه Apple Intelligence على الجهاز. وقد صُمم لبنى الشبكات العصبية الحديثة، من نماذج الرؤية المدمجة إلى النماذج التوليدية الكبيرة، ويمكنه جدولة العمل عبر CPU وGPU وApple Neural Engine (ANE).

يمثل Core AI مسار نشر جديدًا، وليس اسمًا جديدًا لـ Core ML. إذ تستخدم أطر العمل تنسيقات نماذج وأدوات تحويل وواجهات تشغيل وأنماط تكامل مختلفة مع التطبيقات.

مقارنة Core AI وCore ML#

الإمكاناتCore AICore ML
مُخرَج النموذج.aimodel.mlpackage أو .mlmodel
تصدير Ultralyticsمتاح مع format=coreaiمتاح مع format=coreml
واجهة Apple لوقت التشغيلAIModel وInferenceFunction وNDArrayMLModel، وغالبًا عبر VNCoreMLModel وVNCoreMLRequest
سير عمل التحويلتحويل PyTorch torch.export عبر coreai-torchتحويل TorchScript عبر coremltools
التركيز الأساسيالشبكات العصبية الحديثة والذكاء الاصطناعي التوليدينشر واسع النطاق للتعلم الآلي، بما يشمل النماذج العصبية وغير العصبية
تكامل الصورتُعدّ التطبيقات الموترات، أو تستخدم واصفات الصور ومخازن Core AIتكامل مباشر مع إطار Vision لتغيير حجم الصور واتجاهها وإرسال الطلبات
الأجهزةCPU وGPU وApple Neural EngineCPU وGPU وApple Neural Engine
إعداد النموذجالتخصيص عند التثبيت أو أول استخدام، مع خيار التجميع المسبقتجميع النموذج باستخدام Xcode أو على الجهاز
العمليات المخصصةعمليات خفض مخصصة لـ Core AI ونوى Metalالطبقات المخصصة في Core ML وعمليات MIL المدعومة
توفر النشرجيل جديد من أنظمة تشغيل Apple؛ وهو حاليًا إصدار تجريبيدعم واسع عبر أنظمة تشغيل Apple الحالية
حزمتا تطوير iOS وFlutter من Ultralyticsخيار اختياري على أجهزة iOS 27 والإصدارات الأحدثمدعوم بالكامل، وهو الخيار الافتراضي

يظل Core ML الخيار المناسب عندما يحتاج التطبيق إلى دعم واسع للأجهزة، أو تكامل إطار Vision، أو أنواع نماذج مثل أشجار القرار والمسارات الجدولية. وتواصل Apple دعم Core ML، وتوجّه المطورين إلى استخدامه مع أنواع النماذج غير العصبية.

آلية عمل تنسيق Core AI#

يبدأ سير عمل التأليف في Core AI من نموذج PyTorch:

PyTorch model
    ↓ torch.export
ExportedProgram
    ↓ coreai-torch
Core AI program
    ↓ optimize and save
.aimodel
    ↓ specialize or compile ahead of time
Apple silicon executable

تحوّل حزمة Apple coreai-torch نموذج torch.export.ExportedProgram، وذلك بخفض عمليات PyTorch ATen إلى عمليات Core AI. ويمكن تنفيذ العمليات غير المدعومة باستخدام عملية خفض مخصصة أو نواة Metal مخصصة.

يكون .aimodel الناتج أصل نموذج غير مخصص. وعندما يُعِدّ التطبيق النموذج، يخصصه Core AI للجهاز المستهدف. ويمكن للتطبيقات إجراء ذلك عند أول استخدام، أو طلب التخصيص مسبقًا، أو تضمين نموذج مُجمّع مسبقًا لتقليل وقت التحميل الأولي.

في Swift، تحمّل التطبيقات الأصل باستخدام إطار Core AI، وتحدد دالة استدلال، وتوفر مدخلات NDArray ذات أنواع محددة، ثم تتلقى مخرجات مسماة. ويختلف ذلك عن تغليف نموذج Core ML ضمن طلب Vision، لذا يتطلب اعتماد Core AI وجود بيئة تشغيل للتطبيق مصممة لأصول .aimodel.

للاطلاع على تفاصيل التنفيذ، راجع وثائق Apple الخاصة بـ AIModel، وتخصيص النماذج والتخزين المؤقت، والتجميع المسبق.

تصدير نماذج YOLO26 إلى Core AI#

مثال
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="coreai")  # ⁨ينشئ 'yolo26n.aimodel'⁩
model.export(format="coreai", quantize=16)  # FP16 asset

# ⁨تشغيل النموذج المُصدَّر⁩
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")

للاطلاع على قائمة الوسائط كاملة، راجع وضع التصدير. يكون المخطط ثابتًا: إذ يُتتبّع عند imgsz المحدد لـ export، لذا ينبغي إجراء التنبؤ بالحجم نفسه. وتُضمَّن بيانات Ultralytics الوصفية داخل metadata.json الخاص بالأصل، لذلك تبقى أسماء الفئات والخطوة والمهمة محفوظة بعد التصدير والاستيراد.

اختيار الرأس#

مع nms=False، يصدّر YOLO26 رأسه الشامل من البداية إلى النهاية، الذي يختار عمليات الكشف داخل المخطط. لا يتضمن Core AI عملية أولية top-k، لذا يتحول هذا الاختيار إلى فرز كامل، وتُحتسب له كلفة ثابتة عند حدود تقسيم Apple Neural Engine — نحو 1.7 ms، بصرف النظر عن max_det. ويصدر التصدير باستخدام nms=None تنبؤات (1, 84, 8400) الخام بدلًا من ذلك، ويترك تنفيذ كبت القيم غير القصوى للمُتنبئ:

yolo export model=yolo26n.pt format=coreai nms=None quantize=16

على iPhone 17 Pro يعمل بنظام iOS 27.0، يبلغ زمن YOLO26n عند 640 مقدار 3.01 ms مع الرأس ضمن المخطط، و1.28 ms بدونه (FP16، مُجمَّع مسبقًا، ثلاث مجموعات متداخلة من 50 تكرارًا). ويمر كلا الخيارين عبر YOLO(...) للاستدلال. استخدم nms=False عندما يجب أن يعيد استدعاء واحد للمخطط عمليات كشف مكتملة، أو أبقِ على nms=None الافتراضي لاستخدام NMS خارجي.

على iOS 27 أو macOS 27، يحمّل التطبيق الأصل المُصدَّر ويشغّله عبر واجهة Swift لـ Core AI من Apple. تستخدم الأصول المُصدَّرة نقطة الدخول main، وتأخذ مدخلًا واحدًا من images بالشكل [batch, 3, imgsz, imgsz]، وتعيد output0 (وتعيد نماذج تجزئة المثيلات أيضًا output1):

import CoreAI

let modelURL = Bundle.main.url(forResource: "yolo26n", withExtension: "aimodel")!
let model = try await AIModel(contentsOf: modelURL)
guard let function = try model.loadFunction(named: "main") else {
    throw AppError.missingInferenceFunction
}

let outputs = try await function.run(inputs: ["images": imageTensor])

على خلاف سير العمل الحالي لـ Core ML وVision، يتولى مسار Core AI في حزمة تطوير iOS من Ultralytics معالجة letterbox المسبقة وإنشاء NDArray، ويقرأ بيانات Ultralytics الوصفية نفسها من metadata.json الخاص بالأصل، ويعيد استخدام مفككات مخرجات Core ML. ويُحمَّل عند تمرير التطبيق مسار .aimodel أو عنوان URL من نوع .aimodel.zip. وتوفر Apple تفاصيل الواجهة الحالية في وثائق إطار Core AI، وأمثلة عملية للنماذج في مستودع نماذج Core AI.

الأداء المقاس#

استدلال شامل على صورة واحدة لصادرات YOLO26n FP16 (quantize=16) بصيغتَي Core ML وCore AI باستخدام الرأس الخام الافتراضي (nms=None) على جهاز Mac mini مزوّد بشريحة Apple M4 (4 أنوية CPU للأداء و6 أنوية للكفاءة، ووحدة GPU ذات 10 أنوية، ومحرك Neural Engine ذي 16 نواة)، وذاكرة سعتها 16 GB ونظام macOS 27.0، باستخدام ultralytics 8.4.168، وcoremltools 9.0 للاستدلال باستخدام Core ML، وcoreai-torch 0.4.3 مع coreai-core 1.0.0b3 للاستدلال باستخدام Core AI على Python 3.13. تعرض كل خلية الوقت الإجمالي (المعالجة المسبقة + الاستدلال + المعالجة اللاحقة)، مع تفصيل الوقت لكل مرحلة أسفلها.

النموذجالمهمةالحجم
(بكسل)
CPU في Core ML
CPU_ONLY
(ms)
CPU في Core ML مع تفضيل ANE
CPU_AND_NE
(ms)
CPU في Core AI
cpu_only()
(ms)
CPU في Core AI مع تفضيل ANE
neural_engine()
(ms)
YOLO26nالكشف64014.4
0.6 / 13.4 / 0.4
7.6
0.6 / 6.7 / 0.4
16.8
0.6 / 15.9 / 0.3
2.8
0.6 / 2.0 / 0.2
YOLO26n-segالتجزئة64018.7
0.6 / 16.5 / 1.5
9.2
0.6 / 7.1 / 1.5
25.3
0.6 / 23.2 / 1.5
5.1
0.6 / 3.1 / 1.4
YOLO26n-semدلالي64033.9
1.3 / 32.2 / 0.4
73.7
1.4 / 71.9 / 0.4
47.1
1.2 / 38.5 / 7.4
18.7
1.2 / 11.1 / 6.4
YOLO26n-depthالعمق64036.8
0.8 / 35.5 / 0.5
12.1
0.9 / 10.7 / 0.5
40.2
0.8 / 39.0 / 0.5
7.5
0.7 / 6.3 / 0.5
YOLO26n-clsالتصنيف2243.8
1.9 / 1.8 / 0.0
3.3
1.9 / 1.4 / 0.0
3.0
1.9 / 1.0 / 0.0
2.4
1.9 / 0.6 / 0.0
YOLO26n-poseالوضعية64015.5
0.6 / 14.6 / 0.3
7.0
0.6 / 6.2 / 0.3
17.8
0.5 / 17.0 / 0.3
2.7
0.5 / 2.0 / 0.2
YOLO26n-obbOBB64032.7
1.3 / 31.1 / 0.2
16.9
1.5 / 15.2 / 0.2
37.2
1.1 / 35.9 / 0.2
5.7
1.3 / 4.3 / 0.1
  • قيم السرعة هي زمن استجابة دفعة من الصور المفردة: متوسط 15 استدعاءً لـpredict بعد 3 استدعاءات للإحماء على bus.jpg عبر واجهة Python البرمجية لـUltralytics، مع تشغيل كل نموذج ووحدة حوسبة في عملية جديدة. وتناوب ترتيب CPU/المسرّع بين المهام ضمن جولة متسلسلة واحدة. تُحمَّل صفوف Core ML باستخدام coremltools.ComputeUnit.CPU_ONLY أو CPU_AND_NE؛ أما صفوف Core AI فتُخصَّص باستخدام SpecializationOptions.cpu_only() أو SpecializationOptions.from_preferred_compute_unit_kind(ComputeUnitKind.neural_engine())، فيما يتحكم كل إطار عمل في تحديد موضع العمليات النهائي.
  • أعادت مهام الكشف والتجزئة والتصنيف وتقدير الوضع وOBB التنبؤات نفسها بالتنسيقين على كل وحدة حوسبة. ويعمل النموذج الدلالي Core ML FP16 ببطء أكبر عند تفضيل Neural Engine مقارنةً باستخدام CPU وحده على هذا الجهاز Mac، كما تستغرق المعالجة اللاحقة الدلالية في Core AI من 6.4 إلى 7.4 ms، مقابل 0.4 ms في Core ML.
  • قارن النتائج على جهاز iPhone 17 Pro في تكامل CoreML.

مزايا Core AI#

يقدم Core AI عدة مزايا واعدة لنشر Ultralytics مستقبلًا:

  • مسار تصدير حديث لـ PyTorch: يبدأ التحويل من torch.export، مع الحفاظ على مخطط PyTorch أكثر تعبيرًا من سير عمل التتبع الذي تستخدمه العديد من أدوات التصدير الحالية.
  • تحكم دقيق في وقت التشغيل: يمكن للتطبيقات إدارة التخصيص وذاكرات النماذج المجمّعة ودوال الاستدلال والذاكرة وتوزيع الحوسبة.
  • دعم متقدم للنماذج: صُمم التنفيذ ذو الحالة، والأشكال الديناميكية، وتعدد الدوال في مُخرَج واحد، ونوى Metal المخصصة لبنى الرؤية الحديثة والبنى التوليدية.
  • أدوات مخصصة للمطورين: يمكن لمصحح أخطاء Core AI فحص المخططات وقيم الموترات، وتتبعها وصولًا إلى شيفرة Python الأصلية. ويوفر Xcode وInstruments تحليلًا لأداء وقت التشغيل.
  • إمكانات النسخ الصفري: يتيح Core AI التحكم في التخزين والمخازن المؤقتة بهدف تقليل النسخ بين أعباء عمل الكاميرا والرسومات والاستدلال.
  • تحسين لـ Apple silicon: يتيح تخصيص الجهاز لـ Apple تحسين النموذج ليتلاءم مع CPU وGPU وNeural Engine المتاحة على الجهاز المحدد.
  • ضغط مرن: تدعم أدوات Core AI Optimization من Apple التكميم وتحويل الأوزان إلى لوحات ألوان والتقليم، بما يشمل تنسيقات الأوزان منخفضة البتات.

قد تكون هذه الإمكانات مفيدة على وجه الخصوص لنماذج YOLO المستقبلية ذات التنفيذ الديناميكي أو المكونات متعددة الوسائط الأكبر حجمًا أو العمليات المخصصة التي لا تتوافق بسلاسة مع عمليات Core ML الحالية.

العيوب والقيود الحالية#

لا يُعد Core AI حاليًا بديلًا لمسار Core ML المستخدم في الإنتاج:

  • الحاجة إلى أنظمة تشغيل جديدة: يستهدف إطار العمل المتاح للجمهور جيل iOS 27 وmacOS 27، بينما يدعم Core ML قاعدة تثبيت أوسع بكثير.
  • برمجيات تجريبية: لا يزال إطار Core AI من Apple وبعض أجزاء سلسلة أدوات Python أولية، وقد تتغير قبل إصداراتها المستقرة.
  • بيئة تصدير أضيق: يتطلب coreai-torch حاليًا Python من الإصدار 3.11 إلى 3.14، إلى جانب إصدارات حديثة من PyTorch، وهو نطاق أضيق بكثير من نطاق إصدارات Python وPyTorch التي تدعمها Ultralytics.
  • منصات التصدير المحدودة: تنشر coreai-core حزمتَي macosx_26_0_arm64 وmanylinux_2_34_x86_64 فقط، لذا يتطلب format=coreai جهاز Mac مزودًا بشرائح Apple silicon يعمل بنظام macOS 26 أو أحدث، أو Linux بمعمارية x86_64 وإصدار glibc 2.34 أو أحدث (مثل Ubuntu 22.04 أو أحدث). ويتطلب تشغيل .aimodel عتاد Apple أيضًا.
  • خيار اختياري في حزم تطوير Ultralytics، وليس الخيار الافتراضي: على iPhone 17 Pro، تُظهر المقارنة على الجهاز أن أداء Core AI يماثل Core ML في المسار الكامل ولا يتفوق عليه، مع بطء الاستدلال الدلالي واستدلال العمق والاستدلال المعتمد على CPU فقط، كما أن تنزيل أصول FP16 يستغرق نحو ضعف حجم التنزيل؛ لذا تُبقي حزمة تطوير iOS وإضافة Flutter على Core ML بوصفه الخيار الافتراضي.
  • استخدم الرأس الخام مع حزم تطوير SDK: مع nms=False، يستغرق YOLO26n على Core AI نحو ضعف الوقت الذي يستغرقه على Core ML (3.06 مقابل 1.53 ms في إحدى جولات المقارنة)، كما لا يُرجع نموذج الوضعية الشامل من البداية إلى النهاية بصيغة FP16 أي عمليات كشف ضمن التوزيع الافتراضي لـ Core AI على iOS 27.0 (apple/coreai-torch#115). ويتجنب الرأس الخام (nms=None، وهو الخيار الافتراضي) المشكلتين، وتنفذ حزم تطوير SDK عملية NMS بلغة Swift. راجع اختيار الرأس.
  • لا يتوفر وقت تشغيل لمحاكي iOS: لا تتضمن حزمة SDK لمحاكي iOS Core AI.
  • يتطلب الأمر ترحيل التطبيق: لا يمكن استخدام .aimodel بديلًا مباشرًا عن .mlpackage؛ إذ يتطلب تحميل النموذج والمعالجة المسبقة واستدعاءات الاستدلال والتعامل مع البيانات الوصفية وفك ترميز المخرجات تنفيذًا لـ Core AI خارج حزم تطوير Ultralytics SDK، التي توفر هذا التنفيذ.
  • أدلة إنتاج محدودة: ينبغي التحقق من الأداء واستهلاك الطاقة ووقت التخصيص عند التشغيل الأول والدقة والضغط عبر مصفوفة مهام YOLO والأجهزة المدعومة.
  • لا يتوفر مسار NMS: يمكن لـ Core ML تضمين مرحلة NMS لنماذج كشف YOLO القديمة. وتُصدّر Core AI افتراضيًا تنبؤات خامًا واحدًا إلى متعدد؛ استخدم nms=False للرأس الخالي من NMS في YOLO26. ولا يدعم النظام NMS المضمّن (nms=True) ولا dynamic=True. ولا تتضمن coreai-torch عملية خفض لـ torchvision::nms، لذا تبقى NMS على المضيف.
  • حجم إدخال ثابت: يُتتبّع المخطط المُصدَّر عند قيمة واحدة من imgsz، ولا يدعم الأشكال الديناميكية؛ لذا ينبغي إجراء التنبؤ بالحجم الذي صُدِّر به.
  • قد تتوقف الأصول بصيغة FP16 أثناء التحميل: يتعذر على بعض أصول .aimodel بصيغة FP16 تحميل برنامج Apple Neural Engine الخاص بها، ويُطلق MPSGraph عندها خطأ تأكيد فاشلًا، ما ينهي العملية بدلًا من الرجوع إلى خيار بديل. يحدث ذلك داخل بيئة تشغيل Apple قبل تنفيذ أي شيفرة من Ultralytics، بينما يُحمَّل الأصل نفسه عند تخصيصه لـ CPU فقط. استخدم FP32 كخيار بديل إذا حدث ذلك؛ أما أصول SDK بصيغة FP16 التي جرى التحقق منها على iPhone 17 Pro (كل نماذج nano، ومهمة detect بكل أحجامها، وأكبر نموذج لكل مهمة) فقد حُمِّلت دون توقف.

أي تنسيق من Apple ينبغي استخدامه؟#

استخدم Core ML اليوم عندما تحتاج إلى:

  • النشر على أنظمة تشغيل Apple الحالية والأقدم
  • المسار الافتراضي لحزمة تطوير iOS أو Flutter من Ultralytics
  • معالجة الصور باستخدام إطار Vision
  • نشر YOLO بصيغتي FP16 وINT8 بعد اختباره
  • تضمين NMS لنماذج الكشف القديمة المتوافقة

قيّم Core AI إذا أمكنك اشتراط iOS 27 أو macOS 27 وكنت تحتاج إلى:

  • أحدث بيئة تشغيل للشبكات العصبية على أجهزة Apple
  • إدارة صريحة للتخصيص والتخزين المؤقت
  • تنفيذ متقدم للنماذج الديناميكية أو ذات الحالة
  • عمليات Core AI مخصصة أو نوى Metal
  • تصحيح مفصل لأخطاء مخططات Core AI وتحليل أداء وقت التشغيل

من المتوقع أن يتعايش Core ML وCore AI خلال انتقال التطبيقات. ولا يؤدي دعم Core AI فورًا إلى إلغاء الحاجة إلى Core ML، لأن أهداف النشر وعقود التطبيقات تختلف بينهما.

خارطة طريق Ultralytics#

تم تنفيذ هدف التصدير المخصص coreai: يغطي التصدير والتحقق العددي نماذج مهام YOLO26 المدعومة، ويُنفذان باستمرار ضمن CI في Ultralytics على macOS 26، كما يُقاس زمن استجابة FP16 على الجهاز. وتشمل الخطوات المتبقية قبل بلوغ Core AI مستوى التكافؤ مع مسار Core ML ما يلي:

  1. سد فجوة زمن الاستجابة للرأس الشامل من البداية إلى النهاية على Apple Neural Engine (apple/coreai-torch#66)، ومعالجة مشكلات الصحة التشغيلية في Neural Engine (apple/coreai-torch#115، #116).
  2. أصول Core AI بصيغة INT8 وباستخدام الألوان المحددة؛ أما أصول SDK فهي بصيغة FP16، ويبلغ حجم تنزيلها نحو ضعفي حجم تنزيل أصول Core ML بصيغة INT8.
  3. إصدارات مستقرة من إطار Apple وأدوات التحويل (جيل iOS 27 وmacOS 27 حاليًا في المرحلة التجريبية).
  4. معايير قياس الذاكرة والطاقة والتخصيص على مصفوفة الأجهزة المدعومة.

تحمّل حزمة تطوير iOS وإضافة Flutter من Ultralytics Core AI كخيار اختياري على iOS 27 والإصدارات الأحدث؛ ويظل Core ML الخيار الافتراضي والموصى به لتغطية الإصدارات الأقدم من iOS 27. تابع خارطة طريق Ultralytics وملاحظات الإصدارات لمعرفة العناصر المتبقية.

موارد إضافية#

الأسئلة الشائعة#

  • نعم. أجرِ التصدير باستخدام model.export(format="coreai") أو yolo export format=coreai على جهاز Mac مزود بشرائح Apple silicon ويعمل بنظام macOS 26 أو أحدث، أو على Linux بمعمارية x86_64 وإصدار glibc 2.34 أو أحدث؛ إذ يعمل .aimodel المُصدَّر على iOS 27 وmacOS 27. وتحمّله حزم تطوير البرامج (SDKs) لنظامي iOS وFlutter من Ultralytics كخيار اختياري على أجهزة iOS 27. للمسار الافتراضي لهما، ولأنظمة التشغيل الأقدم من هذا الجيل، صدّر ملفات Core ML .mlpackage باستخدام format="coreml".

  • ليس في الوقت الحالي. يُعد Core AI المسار الأحدث من Apple للشبكات العصبية الحديثة، بينما يظل Core ML مدعومًا ويوفر توافقًا أوسع مع أنظمة التشغيل، وتكاملًا مع Vision، ودعمًا للنماذج غير العصبية.

  • لا. يحتوي كل منهما على تمثيل مختلف للنموذج، ويُحمَّل كل منهما باستخدام إطار عمل مختلف. يجب أن يبدأ التحويل من النموذج المصدر باستخدام سلسلة أدوات Apple المناسبة.

  • من المتوقع أن يتعايش التكامل الأولي مع Core ML. وأي قرار مستقبلي بالاستبدال يعتمد على مدى اعتماد أنظمة التشغيل، واستقرار الأدوات، والأداء على الجهاز.

المساهمون

التعليقات