دليل البدء السريع: NVIDIA Jetson مع Ultralytics YOLO26#
يقدم هذا الدليل الشامل شرحًا تفصيليًا لنشر Ultralytics YOLO26 على أجهزة NVIDIA Jetson. كما يعرض معايير أداء توضح إمكانات YOLO26 على هذه الأجهزة الصغيرة والقوية.
حدّثنا هذا الدليل ليشمل أحدث NVIDIA Jetson AGX Thor Developer Kit، الذي يوفر قدرة حوسبة للذكاء الاصطناعي تصل إلى 2070 FP4 TFLOPS وذاكرة بسعة 128 GB، مع إمكانية ضبط الطاقة بين 40 W و130 W. ويوفر قدرة حوسبة للذكاء الاصطناعي تزيد على NVIDIA Jetson AGX Orin بمقدار 7.5 أضعاف، وكفاءةً في استهلاك الطاقة أفضل بمقدار 3.5 أضعاف، لتشغيل أشهر نماذج الذكاء الاصطناعي بسلاسة.
شاهد: كيفية استخدام Ultralytics YOLO26 على أجهزة NVIDIA Jetson

اختُبر هذا الدليل باستخدام NVIDIA Jetson AGX Thor Developer Kit (Jetson T5000) وNVIDIA Jetson AGX Orin Developer Kit (64GB) اللذين يعملان بأحدث إصدار مستقر من JetPack 7.2، وباستخدام NVIDIA Jetson Orin Nano Super Developer Kit الذي يعمل بإصدار JetPack JP6.1، وباستخدام Seeed Studio reComputer J4012 المبني على NVIDIA Jetson Orin NX 16GB والذي يعمل بإصدار JetPack JP6.0/ JP5.1.3، وباستخدام Seeed Studio reComputer J1020 v2 المبني على NVIDIA Jetson Nano 4GB والذي يعمل بإصدار JetPack JP4.6.1. ومن المتوقع أن يعمل على مجموعة أجهزة NVIDIA Jetson بأكملها، بما فيها الأجهزة الأحدث والقديمة.
ما هي NVIDIA Jetson؟#
NVIDIA Jetson هي سلسلة من لوحات الحوسبة المضمنة المصممة لتوفير حوسبة الذكاء الاصطناعي (AI) المسرّعة للأجهزة الطرفية. صُممت هذه الأجهزة المدمجة والقوية بالاستناد إلى بنية GPU من NVIDIA، ويمكنها تشغيل خوارزميات الذكاء الاصطناعي المعقدة ونماذج التعلم العميق مباشرةً على الجهاز، دون الاعتماد على موارد الحوسبة السحابية. تُستخدم لوحات Jetson كثيرًا في الروبوتات والمركبات ذاتية القيادة والأتمتة الصناعية وغيرها من التطبيقات التي تتطلب إجراء استدلال الذكاء الاصطناعي محليًا بزمن استجابة منخفض وكفاءة عالية. إضافةً إلى ذلك، تستند هذه اللوحات إلى بنية ARM64 وتعمل باستهلاك طاقة أقل مقارنةً بأجهزة الحوسبة التقليدية المزودة بـ GPU.
مقارنة بين سلسلة NVIDIA Jetson#
يُعد NVIDIA Jetson AGX Thor أحدث إصدار من عائلة NVIDIA Jetson، ويستند إلى بنية NVIDIA Blackwell التي تحقق تحسنًا كبيرًا في أداء الذكاء الاصطناعي مقارنةً بالأجيال السابقة. يقارن الجدول أدناه عددًا من أجهزة Jetson ضمن المنظومة.
| Jetson AGX Thor (T5000) | Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano Super | Jetson AGX Xavier | Jetson Xavier NX | Jetson Nano | |
|---|---|---|---|---|---|---|---|
| أداء الذكاء الاصطناعي | 2070 TFLOPS | 275 TOPS | 100 TOPS | 67 TOPS | 32 TOPS | 21 TOPS | 472 GFLOPS |
| GPU | GPU ببنية NVIDIA Blackwell، يضم 2560 نواة و96 نواة Tensor | GPU ببنية NVIDIA Ampere، يضم 2048 نواة و64 نواة Tensor | GPU ببنية NVIDIA Ampere، يضم 1024 نواة و32 نواة Tensor | GPU ببنية NVIDIA Ampere، يضم 1024 نواة و32 نواة Tensor | GPU ببنية NVIDIA Volta، يضم 512 نواة و64 نواة Tensor | GPU ببنية NVIDIA Volta™، يضم 384 نواة و48 نواة Tensor | GPU ببنية NVIDIA Maxwell™، يضم 128 نواة |
| أقصى تردد لـ GPU | 1.57 GHz | 1.3 GHz | 918 MHz | 1020 MHz | 1377 MHz | 1100 MHz | 921MHz |
| CPU | CPU Arm® Neoverse®-V3AE 64-bit، بـ 14 نواة، وذاكرة L2 بسعة 1MB وذاكرة L3 بسعة 16MB | CPU NVIDIA Arm® Cortex A78AE v8.2 64-bit، بـ 12 نواة، وذاكرة L2 بسعة 3MB وذاكرة L3 بسعة 6MB | CPU NVIDIA Arm® Cortex A78AE v8.2 64-bit، بـ 8 نوى، وذاكرة L2 بسعة 2MB وذاكرة L3 بسعة 4MB | CPU Arm® Cortex®-A78AE v8.2، 64 بت، سداسي النوى، ذاكرة L2 بسعة 1.5MB وذاكرة L3 بسعة 4MB | CPU NVIDIA Carmel Arm®v8.2، 64 بت، ثماني النوى، ذاكرة L2 بسعة 8MB وذاكرة L3 بسعة 4MB | CPU NVIDIA Carmel Arm®v8.2، 64 بت، سداسي النوى، ذاكرة L2 بسعة 6MB وذاكرة L3 بسعة 4MB | معالج رباعي النوى Arm® Cortex®-A57 MPCore |
| أقصى تردد لـ CPU | 2.6 GHz | 2.2 GHz | 2.0 GHz | 1.7 GHz | 2.2 GHz | 1.9 GHz | 1.43GHz |
| الذاكرة | 128GB LPDDR5X، ناقل 256-bit، بسرعة 273GB/s | 64GB LPDDR5، ناقل 256-bit، بسرعة 204.8GB/s | 16GB LPDDR5، ناقل 128-bit، بسرعة 102.4GB/s | 8GB LPDDR5، ناقل 128-bit، بسرعة 102 GB/s | 32GB LPDDR4x، ناقل 256-bit، بسرعة 136.5GB/s | 8GB LPDDR4x، ناقل 128-bit، بسرعة 59.7GB/s | 4GB LPDDR4، ناقل 64-bit، بسرعة 25.6GB/s |
للاطلاع على جدول مقارنة أكثر تفصيلاً، يُرجى زيارة قسم مقارنة المواصفات في صفحة NVIDIA Jetson الرسمية.
ما NVIDIA JetPack؟#
يُعد NVIDIA JetPack SDK، الذي يشغّل وحدات Jetson، الحل الأكثر شمولاً؛ إذ يوفر بيئة تطوير متكاملة لإنشاء تطبيقات AI مُسرّعة من البداية إلى النهاية، ويساعد على تقصير وقت الوصول إلى السوق. يتضمن JetPack نظام Jetson Linux مع محمّل الإقلاع ونواة Linux وبيئة سطح المكتب Ubuntu ومجموعة متكاملة من المكتبات لتسريع الحوسبة على GPU والوسائط المتعددة والرسوميات والرؤية الحاسوبية. كما يتضمن أمثلة ووثائق وأدوات للمطورين لكل من الحاسوب المضيف ومجموعة التطوير، ويدعم SDKs ذات المستوى الأعلى مثل DeepStream لتحليلات الفيديو المتدفق، وIsaac للروبوتات، وRiva للذكاء الاصطناعي الحواري.
تثبيت JetPack على NVIDIA Jetson#
تتمثل الخطوة الأولى بعد الحصول على جهاز NVIDIA Jetson في تثبيت NVIDIA JetPack عليه. توجد عدة طرق مختلفة لتثبيت البرامج على أجهزة NVIDIA Jetson.
- لتثبيت JetPack 7.2 على مجموعة تطوير Jetson AGX Thor أو AGX Orin أو Orin Nano الرسمية، نزّل ملف Jetson ISO الموحّد، واكتبه على محرك أقراص USB محمول، واتبع دليل البدء السريع الخاص بالجهاز لكل من AGX Thor أو AGX Orin أو Orin Nano. ابتداءً من JetPack 7.2، لم يعد Orin Nano يستخدم صورة بطاقة SD قابلة للتنزيل؛ إذ يثبّت ملف ISO عبر USB نظام Jetson Linux على بطاقة microSD أو SSD من نوع NVMe في الجهاز.
- إذا كنت تستخدم JetPack 6 عمداً على مجموعة تطوير Jetson Orin Nano، فاتبع تعليمات التحديث إلى JetPack 6.x وتعليمات بطاقة SD من NVIDIA.
- إذا كنت تملك أي مجموعة تطوير NVIDIA أخرى، فيمكنك تثبيت JetPack على الجهاز باستخدام SDK Manager.
- إذا كنت تملك جهاز Seeed Studio reComputer J4012، فيمكنك تثبيت JetPack على SSD المرفق، وإذا كنت تملك جهاز Seeed Studio reComputer J1020 v2، فيمكنك تثبيت JetPack على eMMC/ SSD.
- إذا كنت تملك جهازاً آخر من جهة خارجية يعمل بوحدة NVIDIA Jetson، فيُوصى باتباع طريقة التثبيت عبر سطر الأوامر.
بالنسبة إلى الطرق 1 و4 و5 أعلاه، بعد تثبيت النظام وتشغيل الجهاز، أدخل الأمر "sudo apt update && sudo apt install nvidia-jetpack -y" في طرفية الجهاز لتثبيت بقية مكونات JetPack المطلوبة.
دعم JetPack حسب جهاز Jetson#
يوضح الجدول أدناه إصدارات NVIDIA JetPack المدعومة على أجهزة NVIDIA Jetson المختلفة.
| JetPack 4 | JetPack 5 | JetPack 6 | JetPack 7 | |
|---|---|---|---|---|
| Jetson Nano | ✅ | ❌ | ❌ | ❌ |
| Jetson TX2 | ✅ | ❌ | ❌ | ❌ |
| Jetson Xavier NX | ✅ | ✅ | ❌ | ❌ |
| Jetson AGX Xavier | ✅ | ✅ | ❌ | ❌ |
| Jetson AGX Orin | ❌ | ✅ | ✅ | ✅ |
| Jetson Orin NX | ❌ | ✅ | ✅ | ✅ |
| Jetson Orin Nano | ❌ | ✅ | ✅ | ✅ |
| Jetson AGX Thor | ❌ | ❌ | ❌ | ✅ |
البدء السريع باستخدام Docker#
أسرع طريقة لبدء استخدام Ultralytics YOLO26 على NVIDIA Jetson هي تشغيل صور Docker مُنشأة مسبقاً لأجهزة Jetson. راجع الجدول أعلاه واختر إصدار JetPack وفقاً لجهاز Jetson الذي تملكه.
t=ultralytics/ultralytics:latest-jetson-jetpack4
sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $tتستخدم الصورة latest-nvidia-arm64 إصدار NVIDIA PyTorch 26.08، بما في ذلك CUDA 13.4 وTensorRT 11.2. تدرج NVIDIA إصدار JetPack 7.1 لـ PyTorch في جدول التوافق، لكن TensorRT 11.2.1 لا يدعم JetPack، بما في ذلك Thor. استخدم هذه الصورة لأحمال عمل PyTorch فقط على مضيف مدعوم. لتصدير TensorRT على Jetson، استخدم التثبيت الأصلي الموضح أدناه مع إصدار TensorRT 10.x الذي يدعمه إصدار JetPack لديك. يتطلب JetPack 7.2 على Thor أو Orin التحقق من الحاوية بشكل منفصل. أعد بناء المحركات لتناسب GPU المستهدف وإصدار TensorRT.
بالنسبة إلى صور JetPack 4 و5 و6، تابع إلى استخدام TensorRT على NVIDIA Jetson. صورة JetPack 7.1 أعلاه مخصصة لأحمال عمل PyTorch فقط.
ابدأ بالتثبيت الأصلي#
لإجراء تثبيت أصلي من دون Docker، يُرجى اتباع الخطوات أدناه.
التشغيل على JetPack 7.2#
تثبيت حزمة Ultralytics#
سنثبّت هنا حزمة Ultralytics على Jetson. تُثبّت تبعيات التصدير تلقائياً عند تصدير نموذج للمرة الأولى، لذا لا نحتاج هنا إلا إلى الحزمة الأساسية. سنركز بشكل أساسي على تصدير NVIDIA TensorRT، لأن TensorRT يضمن الاستفادة من أقصى أداء لأجهزة Jetson.
-
حدّث قائمة الحزم، وثبّت pip، ثم رقِّه إلى أحدث إصدار
sudo apt update sudo apt install python3-pip -y pip install -U pip -
ثبّت حزمة pip المسماة
ultralyticspip install ultralytics -
أعِد تشغيل الجهاز
sudo reboot
تثبيت PyTorch وTorchvision#
سيؤدي تثبيت ultralytics أعلاه إلى تثبيت Torch وTorchvision. لكن هاتين الحزمتين المثبتتين عبر pip غير متوافقتين مع أجهزة JetPack 7.2 التي تستخدم CUDA 13. لذلك، يجب تثبيتهما يدوياً.
ثبّت torch وtorchvision وفقاً لـ JP7.2
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130ثبّت onnxruntime-gpu#
استخدم حزمة ONNX Runtime GPU wheel متوافقة مع إصدارات JetPack وPython وCUDA لديك. تتضمن إصدارات PyPI الحالية حزم ARM64 wheels، لكنها لا تحل محل الحزم الخاصة بالجهاز في كل إصدارات JetPack.
سننزّل هنا onnxruntime-gpu 1.24.0 ونثبّته مع دعم Python3.12.
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.24.0-cp312-cp312-linux_aarch64.whlالتشغيل على JetPack 6.1#
تثبيت حزمة Ultralytics#
سنثبّت هنا حزمة Ultralytics على Jetson. تُثبّت تبعيات التصدير تلقائياً عند تصدير نموذج للمرة الأولى، لذا لا نحتاج هنا إلا إلى الحزمة الأساسية. سنركز بشكل أساسي على تصدير NVIDIA TensorRT، لأن TensorRT يضمن الاستفادة من أقصى أداء لأجهزة Jetson.
-
حدّث قائمة الحزم، وثبّت pip، ثم رقِّه إلى أحدث إصدار
sudo apt update sudo apt install python3-pip -y pip install -U pip -
ثبّت حزمة pip المسماة
ultralyticspip install ultralytics -
أعِد تشغيل الجهاز
sudo reboot
تثبيت PyTorch وTorchvision#
سيؤدي تثبيت ultralytics أعلاه إلى تثبيت Torch وTorchvision. لكن هاتين الحزمتين المثبتتين عبر pip غير متوافقتين مع منصة Jetson، التي تعتمد على بنية ARM64. لذلك، يجب تثبيت حزمة PyTorch pip wheel مُنشأة مسبقاً يدوياً، ثم تجميع Torchvision من المصدر أو تثبيته منه.
ثبّت torch 2.10.0 وtorchvision 0.25.0 وفقاً لـ JP6.1
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.10.0-cp310-cp310-linux_aarch64.whl
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.25.0-cp310-cp310-linux_aarch64.whlانتقل إلى صفحة PyTorch لأجهزة Jetson للوصول إلى إصدارات PyTorch المختلفة المتوافقة مع إصدارات JetPack المتعددة. للاطلاع على قائمة أكثر تفصيلاً بتوافق PyTorch وTorchvision، راجع صفحة توافق PyTorch وTorchvision.
ثبّت cuDSS لإصلاح مشكلة تبعية مع torch 2.10.0
wget https://developer.download.nvidia.com/compute/cudss/0.7.1/local_installers/cudss-local-tegra-repo-ubuntu2204-0.7.1_0.7.1-1_arm64.deb
sudo dpkg -i cudss-local-tegra-repo-ubuntu2204-0.7.1_0.7.1-1_arm64.deb
sudo cp /var/cudss-local-tegra-repo-ubuntu2204-0.7.1/cudss-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudssثبّت onnxruntime-gpu#
استخدم حزمة ONNX Runtime GPU wheel متوافقة مع إصدارات JetPack وPython وCUDA لديك. تتضمن إصدارات PyPI الحالية حزم ARM64 wheels، لكنها لا تحل محل الحزم الخاصة بالجهاز في كل إصدارات JetPack.
يمكنك العثور على جميع حزم onnxruntime-gpu المتاحة، مرتبة حسب إصدار JetPack وإصدار Python وتفاصيل التوافق الأخرى، في مصفوفة توافق ONNX Runtime في Jetson Zoo.
بالنسبة إلى JetPack 6 مع دعم Python 3.10، يمكنك تثبيت onnxruntime-gpu 1.23.0:
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.23.0-cp310-cp310-linux_aarch64.whlبدلاً من ذلك، بالنسبة إلى onnxruntime-gpu 1.20.0:
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.20.0-cp310-cp310-linux_aarch64.whlالتشغيل على JetPack 5.1.2#
تثبيت حزمة Ultralytics#
سنثبّت هنا حزمة Ultralytics على Jetson. تُثبّت تبعيات التصدير تلقائياً عند تصدير نموذج للمرة الأولى، لذا لا نحتاج هنا إلا إلى الحزمة الأساسية. سنركز بشكل أساسي على تصدير NVIDIA TensorRT، لأن TensorRT يضمن الاستفادة من أقصى أداء لأجهزة Jetson.
-
حدّث قائمة الحزم، وثبّت pip، ثم رقِّه إلى أحدث إصدار
sudo apt update sudo apt install python3-pip -y pip install -U pip -
ثبّت حزمة pip المسماة
ultralyticspip install ultralytics -
أعِد تشغيل الجهاز
sudo reboot
تثبيت PyTorch وTorchvision#
سيؤدي تثبيت ultralytics أعلاه إلى تثبيت Torch وTorchvision. لكن هاتين الحزمتين المثبتتين عبر pip غير متوافقتين مع منصة Jetson، التي تعتمد على بنية ARM64. لذلك، يجب تثبيت حزمة PyTorch pip wheel مُنشأة مسبقاً يدوياً، ثم تجميع Torchvision من المصدر أو تثبيته منه.
-
أزِل تثبيت PyTorch وTorchvision المثبتين حالياً
pip uninstall torch torchvision -
ثبّت
torch 2.1.0وtorchvision 0.16.2وفقاً لـ JP5.1.2pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.16.2+c6f3977-cp38-cp38-linux_aarch64.whl
انتقل إلى صفحة PyTorch لأجهزة Jetson للوصول إلى إصدارات PyTorch المختلفة المتوافقة مع إصدارات JetPack المتعددة. للاطلاع على قائمة أكثر تفصيلاً بتوافق PyTorch وTorchvision، راجع صفحة توافق PyTorch وTorchvision.
ثبّت onnxruntime-gpu#
استخدم حزمة ONNX Runtime GPU wheel متوافقة مع إصدارات JetPack وPython وCUDA لديك. تتضمن إصدارات PyPI الحالية حزم ARM64 wheels، لكنها لا تحل محل الحزم الخاصة بالجهاز في كل إصدارات JetPack.
يمكنك العثور على جميع حزم onnxruntime-gpu المتاحة، مرتبة حسب إصدار JetPack وإصدار Python وتفاصيل التوافق الأخرى، في مصفوفة توافق ONNX Runtime في Jetson Zoo. سننزّل هنا onnxruntime-gpu 1.17.0 ونثبّته مع دعم Python3.8.
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whlسيعيد onnxruntime-gpu إصدار NumPy تلقائياً إلى أحدث إصدار. لذلك، نحتاج إلى إعادة تثبيت NumPy بالإصدار 1.23.5 لإصلاح المشكلة، وذلك بتنفيذ الأمر التالي:
pip install numpy==1.23.5
استخدام TensorRT على NVIDIA Jetson#
من بين جميع تنسيقات تصدير النماذج التي يدعمها Ultralytics، يوفر TensorRT أعلى أداء للاستدلال على أجهزة NVIDIA Jetson، لذا فهو خيارنا الموصى به أولاً لعمليات النشر على Jetson. قبل التصدير، ثبّت روابط PyTorch الخاصة بـ TensorRT المتاحة لإصدار JetPack لديك، وتحقق منها باستخدام python3 -c "import tensorrt; print(tensorrt.__version__)". أبقِ على إصدار التشغيل المدعوم TensorRT 10.x في JetPack 6/7؛ ولا تستبدله بـ TensorRT 11.2.1. للاطلاع على تعليمات الإعداد والاستخدام المتقدم، راجع دليل تكامل TensorRT المخصص.
يمكنك أيضاً التصدير من المتصفح دون إعداد بيئة البناء محلياً. في علامة تبويب تصدير النماذج في منصة Ultralytics، اختر TensorRT وجهاز Jetson المستهدف. يجري التحقق من خيارات Thor على أجهزة Thor فعلية. تنتج خيارات Orin الستة حالياً محركات مرشحة مبنية على AGX-Orin؛ لذا تحقّق من صلاحيتها على طراز Orin المستهدف قبل النشر.
يُنشئ TensorRT المحرك ويضبطه على GPU المستخدم في بنائه. طابق بنية GPU المستهدف وبيئة تشغيل TensorRT/CUDA، وتحقّق من كل محرك تم تنزيله على جهاز النشر. لا يضمن تطابق البنية بين طرازات Orin إمكانية النقل تلقائياً، كما ينبغي إجراء معايرة INT8 على الجهاز المستهدف للحصول على أفضل النتائج.
تحويل النموذج إلى TensorRT وتشغيل الاستدلال#
يُحوَّل نموذج YOLO26n بصيغة PyTorch إلى TensorRT لتشغيل الاستدلال باستخدام النموذج المُصدَّر.
from ultralytics import YOLO
# تحميل نموذج YOLO26n بصيغة PyTorch
model = YOLO("yolo26n.pt")
# تصدير النموذج إلى TensorRT
model.export(format="engine") # ينشئ 'yolo26n.engine'
# تحميل نموذج TensorRT المُصدَّر
trt_model = YOLO("yolo26n.engine")
# تنفيذ الاستدلال
results = trt_model("https://ultralytics.com/images/bus.jpg")انتقل إلى صفحة التصدير للاطلاع على الوسائط الإضافية عند تصدير النماذج إلى تنسيقات نماذج مختلفة
استخدام مُسرّع التعلم العميق من NVIDIA (DLA)#
مُسرّع التعلم العميق من NVIDIA (DLA) مكوّن عتادي متخصص مدمج في أجهزة NVIDIA Jetson، يرفع كفاءة استدلال التعلم العميق من حيث استهلاك الطاقة والأداء. ومن خلال نقل المهام من GPU وتوفير موارده للعمليات الأشد تطلباً، يتيح DLA تشغيل النماذج باستهلاك أقل للطاقة مع الحفاظ على معدل نقل عالٍ، ما يجعله مثالياً للأنظمة المضمنة وتطبيقات AI الآنية.
تدرج NVIDIA الإصدار TensorRT 10.7 بوصفه آخر إصدار يتضمن دعم DLA؛ إذ لا تدعم الإصدارات TensorRT 11.0 و11.1 و11.2 تقنية DLA. استخدم إصدار TensorRT الداعم لـ DLA والمتوافق مع إصدار JetPack لديك. لا يدعم TensorRT 11.2.1 نظام JetPack، بما في ذلك عمليات التصدير التي تستخدم GPU فقط.
أجهزة Jetson التالية مزودة بعتاد DLA:
| جهاز Jetson | أنوية DLA | أقصى تردد لـ DLA |
|---|---|---|
| سلسلة Jetson AGX Orin | 2 | 1.6 GHz |
| Jetson Orin NX 16GB | 2 | 614 MHz |
| Jetson Orin NX 8GB | 1 | 614 MHz |
| سلسلة Jetson AGX Xavier | 2 | 1.4 GHz |
| سلسلة Jetson Xavier NX | 2 | 1.1 GHz |
from ultralytics import YOLO
# تحميل نموذج YOLO26n بصيغة PyTorch
model = YOLO("yolo26n.pt")
# تصدير النموذج إلى TensorRT مع تفعيل DLA (يعمل مع FP16 أو INT8 فقط)
model.export(format="engine", device="dla:0", quantize=16) # تشير dla:0 أو dla:1 إلى أنوية DLA
# تحميل نموذج TensorRT المُصدَّر
trt_model = YOLO("yolo26n.engine")
# تنفيذ الاستدلال
results = trt_model("https://ultralytics.com/images/bus.jpg")عند استخدام عمليات التصدير إلى DLA، قد لا تكون بعض الطبقات مدعومة للتشغيل على DLA، لذا ستعود إلى GPU لتنفيذها. وقد يؤدي هذا الرجوع إلى إضافة زمن انتقال والتأثير في أداء الاستدلال الإجمالي. لذلك، لم يُصمَّم DLA أساساً لتقليل زمن الاستدلال مقارنةً بتشغيل TensorRT بالكامل على GPU. بل تتمثل غايته الأساسية في زيادة معدل النقل وتحسين كفاءة استهلاك الطاقة.
مقاييس أداء YOLO26 على NVIDIA Jetson#
أجرى فريق Ultralytics اختبارات أداء YOLO26 باستخدام 11 تنسيقاً مختلفاً للنماذج، لقياس السرعة والدقة: PyTorch وTorchScript وONNX وOpenVINO وTensorRT وTF SavedModel وTF GraphDef وTF Lite وMNN وNCNN وExecuTorch. أُجريت الاختبارات على مجموعة تطوير NVIDIA Jetson AGX Thor، ومجموعة تطوير NVIDIA Jetson AGX Orin (64GB)، ومجموعة تطوير NVIDIA Jetson Orin Nano Super، وجهاز Seeed Studio reComputer J4012 المزود بجهاز Jetson Orin NX 16GB، بدقة FP32 وبحجم صورة إدخال افتراضي قدره 640.
مخططات المقارنة#
على الرغم من أن جميع عمليات تصدير النماذج تعمل على NVIDIA Jetson، فقد أدرجنا PyTorch وTorchScript وTensorRT فقط في مخطط المقارنة أدناه، لأنها تستفيد من GPU في Jetson ويُضمن معها تحقيق أفضل النتائج. أما عمليات التصدير الأخرى فتستخدم CPU فقط، ولا تضاهي أداء التنسيقات الثلاثة المذكورة أعلاه. يمكنك الاطلاع على مقاييس أداء جميع عمليات التصدير في القسم الذي يلي هذا المخطط.
مجموعة أدوات المطورين NVIDIA Jetson AGX Thor#
مجموعة أدوات المطورين NVIDIA Jetson AGX Orin (64GB)#
مجموعة أدوات المطورين NVIDIA Jetson Orin Nano Super#
NVIDIA Jetson Orin NX 16GB#
جداول المقارنة التفصيلية#
يعرض الجدول أدناه نتائج الاختبارات المعيارية لخمسة نماذج مختلفة (YOLO26n وYOLO26s وYOLO26m وYOLO26l وYOLO26x) عبر 11 تنسيقًا مختلفًا (PyTorch وTorchScript وONNX وOpenVINO وTensorRT وTF SavedModel وTF GraphDef وTF Lite وMNN وNCNN وExecuTorch)، موضحًا الحالة والحجم ومقياس mAP50-95(B) ووقت الاستدلال لكل تركيبة.
مجموعة أدوات المطورين NVIDIA Jetson AGX Thor#
| التنسيق | الحالة | الحجم على القرص (MB) | mAP50-95(B) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4798 | 7.39 |
| TorchScript | ✅ | 9.8 | 0.4789 | 4.21 |
| ONNX | ✅ | 9.5 | 0.4767 | 6.58 |
| OpenVINO | ✅ | 10.1 | 0.4794 | 17.50 |
| TensorRT (FP32) | ✅ | 13.9 | 0.4791 | 1.90 |
| TensorRT (FP16) | ✅ | 7.6 | 0.4797 | 1.39 |
| TensorRT (INT8) | ✅ | 6.5 | 0.4273 | 1.52 |
| TF SavedModel | ✅ | 25.7 | 0.4764 | 47.24 |
| TF GraphDef | ✅ | 9.5 | 0.4764 | 45.98 |
| TF Lite | ✅ | 9.9 | 0.4764 | 182.04 |
| MNN | ✅ | 9.4 | 0.4784 | 21.83 |
أُجريت الاختبارات المعيارية باستخدام Ultralytics 8.4.7
لا يشمل وقت الاستدلال المعالجة المسبقة أو اللاحقة.
مجموعة أدوات المطورين NVIDIA Jetson AGX Orin (64GB)#
| التنسيق | الحالة | الحجم على القرص (MB) | mAP50-95(B) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4790 | 11.58 |
| TorchScript | ✅ | 9.8 | 0.4770 | 4.60 |
| ONNX | ✅ | 9.5 | 0.4770 | 9.87 |
| OpenVINO | ✅ | 9.6 | 0.4820 | 28.80 |
| TensorRT (FP32) | ✅ | 11.5 | 0.4770 | 4.18 |
| TensorRT (FP16) | ✅ | 7.9 | 0.4789 | 2.62 |
| TensorRT (INT8) | ✅ | 5.4 | 0.4640 | 2.30 |
| TF SavedModel | ✅ | 24.6 | 0.4760 | 71.10 |
| TF GraphDef | ✅ | 9.5 | 0.4760 | 70.02 |
| TF Lite | ✅ | 9.9 | 0.4760 | 227.94 |
| MNN | ✅ | 9.4 | 0.4760 | 32.46 |
| NCNN | ✅ | 9.3 | 0.4810 | 29.93 |
أُجريت الاختبارات المعيارية باستخدام Ultralytics 8.4.32
لا يشمل وقت الاستدلال المعالجة المسبقة أو اللاحقة.
مجموعة أدوات المطورين NVIDIA Jetson Orin Nano Super#
| التنسيق | الحالة | الحجم على القرص (MB) | mAP50-95(B) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4790 | 15.60 |
| TorchScript | ✅ | 9.8 | 0.4770 | 12.60 |
| ONNX | ✅ | 9.5 | 0.4760 | 15.76 |
| OpenVINO | ✅ | 9.6 | 0.4820 | 56.23 |
| TensorRT (FP32) | ✅ | 11.3 | 0.4770 | 7.53 |
| TensorRT (FP16) | ✅ | 8.1 | 0.4800 | 4.57 |
| TensorRT (INT8) | ✅ | 5.3 | 0.4490 | 3.80 |
| TF SavedModel | ✅ | 24.6 | 0.4760 | 118.33 |
| TF GraphDef | ✅ | 9.5 | 0.4760 | 116.30 |
| TF Lite | ✅ | 9.9 | 0.4760 | 286.00 |
| MNN | ✅ | 9.4 | 0.4760 | 68.77 |
| NCNN | ✅ | 9.3 | 0.4810 | 47.50 |
أُجريت الاختبارات المعيارية باستخدام Ultralytics 8.4.33
لا يشمل وقت الاستدلال المعالجة المسبقة أو اللاحقة.
NVIDIA Jetson Orin NX 16GB#
| التنسيق | الحالة | الحجم على القرص (MB) | mAP50-95(B) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4799 | 13.90 |
| TorchScript | ✅ | 9.8 | 0.4787 | 11.60 |
| ONNX | ✅ | 9.5 | 0.4763 | 14.18 |
| OpenVINO | ✅ | 9.6 | 0.4819 | 40.19 |
| TensorRT (FP32) | ✅ | 11.4 | 0.4770 | 7.01 |
| TensorRT (FP16) | ✅ | 8.0 | 0.4789 | 4.13 |
| TensorRT (INT8) | ✅ | 5.5 | 0.4489 | 3.49 |
| TF SavedModel | ✅ | 24.6 | 0.4764 | 92.34 |
| TF GraphDef | ✅ | 9.5 | 0.4764 | 92.06 |
| TF Lite | ✅ | 9.9 | 0.4764 | 254.43 |
| MNN | ✅ | 9.4 | 0.4760 | 48.55 |
| NCNN | ✅ | 9.3 | 0.4805 | 34.31 |
أُجريت الاختبارات المعيارية باستخدام Ultralytics 8.4.33
لا يشمل وقت الاستدلال المعالجة المسبقة أو اللاحقة.
استكشف المزيد من جهود الاختبارات المعيارية التي أجرتها Seeed Studio على إصدارات مختلفة من أجهزة NVIDIA Jetson.
إعادة إنتاج نتائجنا#
لإعادة إنتاج اختبارات Ultralytics المعيارية أعلاه على جميع التنسيقات المصدّرة، شغّل هذا الرمز:
from ultralytics import YOLO
# تحميل نموذج YOLO26n بصيغة PyTorch
model = YOLO("yolo26n.pt")
# اختبر سرعة YOLO26n ودقته على مجموعة البيانات COCO128 بجميع تنسيقات التصدير
results = model.benchmark(data="coco128.yaml", imgsz=640)لاحظ أن نتائج الاختبارات المعيارية قد تختلف بحسب تكوين الأجهزة والبرامج الدقيق للنظام، وكذلك بحسب الحمل الحالي على النظام عند تشغيل الاختبارات. للحصول على نتائج موثوقة قدر الإمكان، استخدم مجموعة بيانات تحتوي على عدد كبير من الصور، مثل data='coco.yaml' (5000 صورة تحقق).
أفضل الممارسات عند استخدام NVIDIA Jetson#
عند استخدام NVIDIA Jetson، يُستحسن اتباع بعض أفضل الممارسات لتمكين NVIDIA Jetson من تحقيق أقصى أداء عند تشغيل YOLO26.
-
تفعيل وضع الطاقة القصوى
يضمن تفعيل وضع الطاقة القصوى على Jetson تشغيل جميع أنوية CPU وGPU.
sudo nvpmodel -m 0 -
تفعيل ساعات Jetson
يضمن تفعيل ساعات Jetson تشغيل جميع أنوية CPU وGPU بأقصى تردد لها.
sudo jetson_clocks -
تثبيت تطبيق Jetson Stats
يمكننا استخدام تطبيق jetson stats لمراقبة درجات حرارة مكونات النظام والتحقق من تفاصيل أخرى للنظام، مثل عرض استخدام CPU وGPU وRAM، وتغيير أوضاع الطاقة، وضبط الساعات على الحد الأقصى، والتحقق من معلومات JetPack.
sudo apt update sudo pip install jetson-stats sudo reboot jtop
نصائح لتحسين استخدام الذاكرة على NVIDIA Jetson#
غالبًا ما تكون الذاكرة المتاحة هي العامل المحدِّد في أجهزة Jetson، ولا سيما الطُرز ذات الذاكرة الأقل مثل Jetson Orin Nano (8 GB) أو Orin NX 8 GB. التغييرات العملية منخفضة المخاطر الموضحة أدناه يمكن أن تحرر مجتمعةً عدة مئات من الميغابايتات، وتتيح تشغيل نماذج YOLO أكبر أو دعم أعباء عمل متوازية إضافية. للاطلاع على معالجة شاملة، راجع مدونة NVIDIA حول زيادة كفاءة الذاكرة إلى أقصى حد على Jetson.
1. التبديل إلى الإقلاع دون واجهة رسومية#
إذا كان Jetson متصلًا عبر SSH أو يعمل كجهاز إنتاجي دون شاشة متصلة، فإن التخلص من بيئة سطح المكتب وخادم العرض قد يوفر ما يصل إلى 865 MB من RAM:
sudo systemctl set-default multi-user.target
sudo rebootلاستعادة سطح المكتب لاحقًا:
sudo systemctl set-default graphical.target
sudo reboot2. تعطيل خدمات النظام غير المستخدمة#
تستهلك خدمات الخلفية غير الأساسية (Bluetooth ومديرو الاتصال وخدمات الأجهزة غير المستخدمة) نحو 32 MB مجتمعةً. اعرض الخدمات النشطة وعطّل كل ما لا يتطلبه النشر لديك:
# List running services
systemctl list-units --type=service --state=running
# Disable a service
sudo systemctl disable SERVICE_NAME3. تحليل استخدام الذاكرة#
قبل التحسين، حدّد العمليات التي تستهلك RAM فعليًا. يرتب procrank العمليات حسب PSS (الحجم النسبي للمجموعة)، الذي يعكس مساحة الذاكرة الحقيقية لكل عملية بدقة أكبر من RSS (الحجم المقيم للمجموعة، أي إجمالي صفحات RAM الفعلية التي ربطتها عملية ما، بما في ذلك الصفحات المشتركة مع عمليات أخرى):
git clone https://github.com/csimmonds/procrank_linux.git
cd procrank_linux && make
sudo ./procrankلعرض تخصيصات GPU وNvMap (مسار CUDA/الفيديو) لكل عملية:
sudo cat /sys/kernel/debug/nvmap/iovmm/clients4. تشغيل الاستدلال دون شاشة في بيئة الإنتاج#
في مسارات الاستدلال التي لا تتطلب معاينة مباشرة، يمكن أن يؤدي تعطيل المكونات المرتبطة بالعرض (Tiler وOSD وDisplaySink) إلى توفير 200+ MB من المسار وحده. عند استخدام Ultralytics YOLO، عطّل العارض واكتب النتائج على القرص بدلًا من ذلك:
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
# يمنع show=False فتح أي نافذة عرض؛ ويكتب save=True المخرجات المشروحة على القرص
results = model.predict(source="video.mp4", show=False, save=True)الأثر التراكمي#
| التحسين | الذاكرة المقدّر توفيرها |
|---|---|
| تعطيل واجهة سطح المكتب الرسومية | ~865 MB |
| تعطيل خدمات نظام التشغيل غير المستخدمة | ~32 MB |
| مسار استدلال دون شاشة | ~200+ MB |
| الإجمالي (تحسينات سهلة) | ~1 GB+ |
يكون الجمع بين هذه التغييرات مفيدًا للغاية، لا سيما عند استهداف نماذج TensorRT INT8 على الأجهزة محدودة الذاكرة؛ إذ قد يحدد ذلك إمكانية ملاءمة نموذج أكبر في الذاكرة من عدمها.
الخطوات التالية#
للمزيد من التعلّم والدعم، راجع وثائق Ultralytics YOLO26.
الأسئلة الشائعة#
إن نشر Ultralytics YOLO26 على أجهزة NVIDIA Jetson عملية مباشرة. أولًا، ثبّت NVIDIA JetPack SDK على جهاز Jetson. ثم استخدم إما صورة Docker جاهزة للإعداد السريع، أو ثبّت الحزم المطلوبة يدويًا. تجد الخطوات التفصيلية لكل أسلوب في قسمي البدء السريع باستخدام Docker والبدء بالتثبيت الأصلي.
خضعت نماذج YOLO26 لاختبارات معيارية على أجهزة NVIDIA Jetson مختلفة، وأظهرت تحسينات كبيرة في الأداء. فعلى سبيل المثال، يوفّر تنسيق TensorRT أفضل أداء للاستدلال. ويعرض الجدول في قسم جداول المقارنة التفصيلية نظرة شاملة على مقاييس الأداء، مثل mAP50-95 ووقت الاستدلال، عبر تنسيقات النماذج المختلفة.
يوصى بشدة باستخدام TensorRT لنشر نماذج YOLO26 على NVIDIA Jetson نظرًا إلى أدائه الأمثل. فهو يسرّع الاستدلال بالاستفادة من إمكانات GPU في Jetson، ما يضمن أقصى كفاءة وسرعة. تعرّف على المزيد حول التحويل إلى TensorRT وتشغيل الاستدلال في قسم استخدام TensorRT على NVIDIA Jetson.
لتثبيت PyTorch وTorchvision على NVIDIA Jetson، أزل أولًا أي إصدارات موجودة ربما ثُبّتت عبر pip. ثم ثبّت يدويًا إصدارات PyTorch وTorchvision المتوافقة مع بنية ARM64 في Jetson. تجد تعليمات تفصيلية لهذه العملية في قسم تثبيت PyTorch وTorchvision.
لتحقيق أقصى أداء على NVIDIA Jetson مع YOLO26، اتبع أفضل الممارسات التالية:
- فعّل وضع الطاقة القصوى للاستفادة من جميع أنوية CPU وGPU.
- فعّل ساعات Jetson لتشغيل جميع الأنوية بأقصى تردد لها.
- ثبّت تطبيق Jetson Stats لمراقبة مقاييس النظام.
للاطلاع على الأوامر والتفاصيل الإضافية، راجع قسم أفضل الممارسات عند استخدام NVIDIA Jetson.
غالبًا ما تكون RAM المتاحة عنق الزجاجة في أجهزة Jetson ذات الذاكرة الأقل. إليك ثلاث خطوات سهلة يمكنها مجتمعةً تحرير أكثر من 1 GB:
- التبديل إلى الإقلاع دون واجهة رسومية (
sudo systemctl set-default multi-user.target) للتخلص من واجهة سطح المكتب الرسومية (توفير ~865 MB). - تعطيل الخدمات غير المستخدمة مثل Bluetooth أو مديري الاتصال (توفير ~32 MB).
- تشغيل الاستدلال دون شاشة عبر تعيين
show=Falseفي استدعاء YOLOpredict، ما يجنب تخصيص ذاكرة لمسار العرض (توفير ~200+ MB).
استخدم
procrankلتحليل استخدام RAM لكل عملية، وsudo cat /sys/kernel/debug/nvmap/iovmm/clientsلفحص تخصيصات GPU. راجع قسم نصائح تحسين الذاكرة للاطلاع على التفاصيل الكاملة.- التبديل إلى الإقلاع دون واجهة رسومية (
يتضمن TensorRT 10.3.0 المرفق مع JetPack 6 مشكلة معروفة تمنع إنشاء محركات INT8 الخالية من NMS (
nms=False). عندما تكتشف Ultralytics هذا التوافق، تختار تلقائيًا الرأس one-to-many لضمان نجاح التصدير.لاستعادة إمكانية تصدير INT8 الخالي من NMS، حدّث TensorRT إلى إصدار أحدث (مثل 10.7.0 أو أحدث):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/arm64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get install -y tensorrtبعد التحديث، أعد تشغيل التصدير. لمزيد من التفاصيل، راجع مشكلة GitHub رقم 23841.