انتقل إلى المحتوى

دليل البدء السريع: NVIDIA Jetson مع Ultralytics YOLOv8

يوفر هذا الدليل الشامل إرشادات تفصيلية للنشر Ultralytics YOLOv8 على أجهزة NVIDIA Jetson . بالإضافة إلى ذلك ، فإنه يعرض معايير الأداء لإظهار قدرات YOLOv8 على هذه الأجهزة الصغيرة والقوية.

نفيديا جيتسون النظام البيئي

ملاحظه

تم اختبار هذا الدليل باستخدام Seeed Studio reComputer J4012 الذي يعتمد على NVIDIA Jetson Orin NX 16GB الذي يعمل بأحدث إصدار مستقر من JetPack من JP5.1.3. قد لا يكون استخدام هذا الدليل لأجهزة Jetson القديمة مثل Jetson Nano (يدعم هذا فقط حتى JP4.6.4) مضمونا للعمل. ومع ذلك ، من المتوقع أن يعمل هذا على جميع أجهزة Jetson Orin و Xavier NX و AGX Xavier التي تعمل بنظام JP5.1.3.

ما هو نفيديا جيتسون؟

NVIDIA Jetson عبارة عن سلسلة من لوحات الحوسبة المضمنة المصممة لجلب حوسبة الذكاء الاصطناعي (الذكاء الاصطناعي) المتسارعة إلى أجهزة الحافة. تم تصميم هذه الأجهزة المدمجة والقوية حول بنية وحدة معالجة الرسومات من NVIDIA وهي قادرة على تشغيل خوارزميات الذكاء الاصطناعي المعقدة ونماذج التعلم العميق مباشرة على الجهاز ، دون الحاجة إلى الاعتماد على موارد الحوسبة السحابية. غالبا ما تستخدم لوحات Jetson في الروبوتات والمركبات المستقلة والأتمتة الصناعية والتطبيقات الأخرى حيث يجب إجراء الاستدلال الذكاء الاصطناعي محليا بزمن انتقال منخفض وكفاءة عالية. بالإضافة إلى ذلك ، تعتمد هذه اللوحات على بنية ARM64 وتعمل على طاقة أقل مقارنة بأجهزة حوسبة GPU التقليدية.

مقارنة سلسلة نفيديا جيتسون

Jetson Orin هو أحدث تكرار لعائلة NVIDIA Jetson استنادا إلى بنية NVIDIA Ampere التي توفر أداء الذكاء الاصطناعي محسنا بشكل كبير مقارنة بالأجيال السابقة. قارن الجدول أدناه عددا قليلا من أجهزة Jetson في النظام البيئي.

جيتسون AGX أورين 64 جيجابايت جيتسون أورين NX 16 جيجابايت جيتسون أورين نانو 8 جيجا جيتسون AGX كزافييه جيتسون كزافييه NX جيتسون نانو
أداء الذكاء الاصطناعي 275 قمم 100 قمم 40 قمة 32 قمم 21 قمم 472 جلوب
الجرافيك 2048 نواة لوحدة معالجة رسومات NVIDIA Ampere ذات بنية NVIDIA Ampere مع 64 Tensor نواة 1024 نواة NVIDIA Ampere العمارة GPU مع 32 Tensor النوي 1024 نواة NVIDIA Ampere العمارة GPU مع 32 Tensor النوي 512 نواة NVIDIA فولتا العمارة GPU مع 64 Tensor النوي 384 نواة NVIDIA فولتا™ العمارة GPU مع 48 Tensor النوي 128 نواة NVIDIA ماكسويل™ العمارة GPU
أقصى تردد GPU 1.3 جيجاهرتز 918 ميغاهيرتز 625 ميغاهيرتز 1377 ميجا هرتز 1100 ميغاهيرتز 921 ميجا هرتز
وحده المعالجه المركزيه 12 نواة نفيديا الذراع® اللحاء A78AE v8.2 64 بت وحدة المعالجة المركزية 3MB L2 + 6MB L3 8-core NVIDIA Arm® Cortex A78AE v8.2 64 بت وحدة المعالجة المركزية 2MB L2 + 4MB L3 6 النواة الذراع® اللحاء® A78AE v8.2 64 بت وحدة المعالجة المركزية 1.5MB L2 + 4MB L3 8-core NVIDIA Carmel Arm®v8.2 64 بت وحدة المعالجة المركزية 8 ميجابايت L2 + 4 ميجابايت L3 وحدة المعالجة المركزية NVIDIA NVIDIA Carmel® Armv8.2 سداسية النواة NVIDIA Arm®v8.2 64 بت 6 ميجابايت L2 + 4 ميجابايت L3 معالج رباعي النواة® Cortex-A57® MPCore
وحدة المعالجة المركزية ماكس التردد 2.2 جيجاهرتز 2.0 جيجاهرتز 1.5 جيجاهرتز 2.2 جيجاهرتز 1.9 جيجاهرتز 1.43 جيجا هرتز
ذاكرة 64 جيجابايت 256 بت LPDDR5 204.8 جيجابايت / ثانية 16 جيجابايت 128 بت LPDDR5 102.4 جيجابايت / ثانية 8 جيجا بايت 128 بت LPDDR5 68 جيجا بايت / ثانية 32 جيجابايت 256 بت LPDDR4x 136.5 جيجابايت / ثانية 8 جيجا بايت 128 بت LPDDR4x 59.7 جيجا بايت / ثانية 4 جيجابايت 64 بت LPDDR4 25.6 جيجابايت / ثانية "

للحصول على جدول مقارنة أكثر تفصيلا ، يرجى زيارة قسم المواصفات الفنية في صفحة NVIDIA Jetson الرسمية.

ما هو نفيديا جيت باك؟

تعد NVIDIA JetPack SDK التي تعمل على تشغيل وحدات Jetson هي الحل الأكثر شمولا وتوفر بيئة تطوير كاملة لبناء تطبيقات الذكاء الاصطناعي المتسارعة الشاملة وتقصير وقت الوصول إلى السوق. يتضمن JetPack Jetson Linux مع أداة تحميل التشغيل ، ونواة Linux ، وبيئة سطح مكتب Ubuntu ، ومجموعة كاملة من المكتبات لتسريع حوسبة GPU والوسائط المتعددة والرسومات ورؤية الكمبيوتر. يتضمن أيضا عينات ووثائق وأدوات مطور لكل من الكمبيوتر المضيف ومجموعة المطورين ، ويدعم حزم SDK ذات المستوى الأعلى مثل DeepStream لتحليلات الفيديو المتدفقة و Isaac للروبوتات و Riva الذكاء الاصطناعي المحادثة.

فلاش JetPack إلى نفيديا جيتسون

الخطوة الأولى بعد وضع يديك على جهاز NVIDIA Jetson هي وميض NVIDIA JetPack على الجهاز. هناك عدة طرق مختلفة لوميض أجهزة NVIDIA Jetson.

  1. إذا كنت تمتلك مجموعة تطوير NVIDIA رسمية مثل Jetson Orin Nano Developer Kit ، فيمكنك زيارة هذا الرابط لتنزيل صورة وإعداد بطاقة SD باستخدام JetPack لتشغيل الجهاز.
  2. إذا كنت تمتلك أي مجموعة تطوير NVIDIA أخرى ، فيمكنك زيارة هذا الرابط لفلاش JetPack إلى الجهاز باستخدام SDK Manager.
  3. إذا كنت تمتلك جهاز Seeed Studio reComputer J4012 ، فيمكنك زيارة هذا الرابط لفلاش JetPack إلى SSD المضمن.
  4. إذا كنت تمتلك أي جهاز آخر تابع لجهة خارجية يتم تشغيله بواسطة وحدة NVIDIA Jetson ، فمن المستحسن اتباع وميض سطر الأوامر من خلال زيارة هذا الرابط.

ملاحظه

بالنسبة للطريقتين 3 و 4 أعلاه ، بعد وميض النظام وتشغيل الجهاز ، يرجى إدخال "sudo apt update && sudo apt install nvidia-jetpack -y" على طرف الجهاز لتثبيت جميع مكونات JetPack المتبقية المطلوبة.

الإعداد Ultralytics

هناك طريقتان لإعداد الحزمة Ultralytics على NVIDIA Jetson لبناء مشروعك التالي في مجال الرؤية الحاسوبية. يمكنك استخدام أي منهما.

ابدأ مع عامل ميناء

أسرع طريقة للبدء مع Ultralytics YOLOv8 على NVIDIA Jetson هو تشغيل مع صورة عامل ميناء مسبقة الصنع ل Jetson.

قم بتنفيذ الأمر أدناه لسحب حاوية Docker وتشغيلها على Jetson. يستند هذا الأمر إلى صورة L4t-pytorch docker التي تحتوي على PyTorch و Torchvision في بيئة Python3.

t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

بعد الانتهاء من ذلك، انتقل إلى قسم استخدام TensorRT على NVIDIA Jetson.

ابدأ بدون عامل ميناء

أقام Ultralytics حزمة

سنقوم هنا بتثبيت حزمة ultralyics على Jetson مع تبعيات اختيارية حتى نتمكن من تصدير ملف PyTorch نماذج لتنسيقات مختلفة أخرى. سنركز بشكل أساسي على نفيديا TensorRT الصادرات لأن TensoRT سوف تتأكد من أنه يمكننا الحصول على أقصى أداء من أجهزة Jetson.

  1. تحديث قائمة الحزم وتثبيت النقطة والترقية إلى الأحدث

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. أقام ultralytics حزمة النقطة مع التبعيات الاختيارية

    pip install ultralytics[export]
    
  3. أعد تشغيل الجهاز

    sudo reboot
    

أقام PyTorch و Torchvision

ما سبق ultralytics سيتم تثبيت التثبيت Torch و Torchvision. ومع ذلك ، فإن حزم 2 المثبتة عبر النقطة غير متوافقة للتشغيل على منصة Jetson التي تعتمد على بنية ARM64. لذلك ، نحتاج إلى تثبيت يدويا مسبق الصنع PyTorch عجلة نقطة وتجميع / تثبيت Torchvision من المصدر.

  1. إلغاء التثبيت مثبت حاليا PyTorch و Torchvision

    pip uninstall torch torchvision
    
  2. أقام PyTorch 2.1.0 وفقا ل JP5.1.3

    sudo apt-get install -y libopenblas-base libopenmpi-dev
    wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    
  3. تثبيت Torchvision v0.16.2 وفقا ل PyTorch الإصدار 2.1.0

    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user
    

قم بزيارة صفحةPyTorch لصفحة Jetson للوصول إلى جميع الإصدارات المختلفة من PyTorch لإصدارات JetPack المختلفة. للاطلاع على قائمة أكثر تفصيلاً على PyTorch ، توافق Torchvision، قم بزيارة صفحة التوافقPyTorch وتوافق Torchvision.

أقام onnxruntime-gpu

ال Onnxruntime-gpu الحزمة المستضافة في PyPI لا تحتوي على aarch64 ثنائيات لـ Jetson. لذلك نحن بحاجة إلى تثبيت هذه الحزمة يدوياً. هذه الحزمة مطلوبة لبعض الصادرات.

كل شيء مختلف onnxruntime-gpu يتم سرد الحزم التي تتوافق مع إصدارات JetPack و Python المختلفة هنا. ومع ذلك، سنقوم هنا بتنزيل وتثبيت onnxruntime-gpu 1.17.0 مع Python3.8 دعم JetPack الذي نستخدمه في هذا الدليل.

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 على نفيديا جيتسون

من بين جميع تنسيقات تصدير النموذج التي يدعمها Ultralytics, TensorRT يقدم أفضل أداء للاستدلال عند العمل مع أجهزة NVIDIA Jetson وتوصيتنا هي استخدام TensorRT مع جيتسون. لدينا أيضا وثيقة مفصلة عن TensorRT هنا.

تحويل النموذج إلى TensorRT وتشغيل الاستدلال

ال YOLOv8n نموذج في PyTorch يتم تحويل التنسيق إلى TensorRT لتشغيل الاستدلال مع النموذج المصدر.

مثل

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Export the model
model.export(format='engine')  # creates 'yolov8n.engine'

# Load the exported TensorRT model
trt_model = YOLO('yolov8n.engine')

# Run inference
results = trt_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'

# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

ملاحظه

قم بزيارة صفحة التصدير للوصول إلى الوسائط الإضافية عند تصدير النماذج إلى تنسيقات نماذج مختلفة

نفيديا جيتسون أورين YOLOv8 المعايير

YOLOv8 TF تم تشغيل المعايير من قبل فريق Ultralytics على 10 نماذج مختلفة لقياس السرعة والدقة: PyTorch و TorchScript و ONNX و OpenVINO و TensorRT و TF SavedModel و TF Graphdef و 0 لايت و PaddlePaddle و NCNN. تم تشغيل الاختبارات المعيارية على جهاز Seeed Studio reComputer J4012 المدعوم بجهاز Jetson Orin NX سعة 16 جيجابايت بدقة FP32 مع حجم إدخال افتراضي للصور يبلغ 640.

رسم بياني للمقارنة

على الرغم من أن جميع عمليات تصدير النماذج تعمل مع NVIDIA Jetson، فقد قمنا بتضمين PyTorch و TorchScript و TensorRT فقط في مخطط المقارنة أدناه لأنها تستخدم وحدة معالجة الرسومات على Jetson وهي مضمونة لتحقيق أفضل النتائج. جميع عمليات التصدير الأخرى تستخدم وحدة المعالجة المركزية فقط والأداء ليس جيدًا مثل الثلاثة المذكورة أعلاه. يمكنك العثور على معايير لجميع الصادرات في القسم بعد هذا الرسم البياني.

نفيديا جيتسون النظام البيئي

جدول المقارنة التفصيلي

يمثل الجدول أدناه النتائج المعيارية لخمسة نماذج مختلفة (YOLOv8n ، YOLOv8s ، ، YOLOv8m ، YOLOv8l ، YOLOv8x) عبر عشرة نماذج مختلفة (PyTorch ، TorchScript ، ONNX ، OpenVINO ، TensorRT ، TF SavedModel ، TF Graphdef ، TF لايت، PaddlePaddle ، NCNN)، مع إعطائنا الحالة والحجم ومقياس mAP50-95(B) وزمن الاستدلال لكل مجموعة.

اداء

تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 6.2 0.6381 14.3
TorchScript 12.4 0.6117 13.3
ONNX 12.2 0.6092 70.6
OpenVINO 12.3 0.6092 104.2
TensorRT 13.6 0.6117 8.9
TF SavedModel 30.6 0.6092 141.74
TF GraphDef 12.3 0.6092 199.93
TF لايت 12.3 0.6092 349.18
PaddlePaddle 24.4 0.6030 555
NCNN 12.2 0.6092 32
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 21.5 0.6967 18
TorchScript 43.0 0.7136 23.81
ONNX 42.8 0.7136 185.55
OpenVINO 42.9 0.7136 243.97
TensorRT 44.0 0.7136 14.82
TF SavedModel 107 0.7136 260.03
TF GraphDef 42.8 0.7136 423.4
TF لايت 42.8 0.7136 1046.64
PaddlePaddle 85.5 0.7140 1464
NCNN 42.7 0.7200 63
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 49.7 0.7370 36.4
TorchScript 99.2 0.7285 53.58
ONNX 99 0.7280 452.09
OpenVINO 99.1 0.7280 544.36
TensorRT 100.3 0.7285 33.21
TF SavedModel 247.5 0.7280 543.65
TF GraphDef 99 0.7280 906.63
TF لايت 99 0.7280 2758.08
PaddlePaddle 197.9 0.7280 3678
NCNN 98.9 0.7260 135
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 83.7 0.7768 61.3
TorchScript 167.2 0.7554 87.9
ONNX 166.8 0.7551 852.29
OpenVINO 167 0.7551 1012.6
TensorRT 168.4 0.7554 51.23
TF SavedModel 417.2 0.7551 990.45
TF GraphDef 166.9 0.7551 1649.86
TF لايت 166.9 0.7551 5652.37
PaddlePaddle 333.6 0.7551 7114.67
NCNN 166.8 0.7685 231.9
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 130.5 0.7759 93
TorchScript 260.7 0.7472 135.1
ONNX 260.4 0.7479 1296.13
OpenVINO 260.6 0.7479 1502.15
TensorRT 261.8 0.7469 84.53
TF SavedModel 651.1 0.7479 1451.76
TF GraphDef 260.5 0.7479 4029.36
TF لايت 260.4 0.7479 8772.86
PaddlePaddle 520.8 0.7479 10619.53
NCNN 260.4 0.7646 376.38

قم بزيارة هذا الرابط لاستكشاف المزيد من جهود قياس الأداء من قبل Seeed Studio الذي يعمل على إصدارات مختلفة من أجهزة NVIDIA Jetson.

إعادة إنتاج نتائجنا

لإعادة إنتاج ما سبق Ultralytics تقوم المعايير في جميع تنسيقات التصدير بتشغيل هذا الرمز:

مثل

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data='coco8.yaml', imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

لاحظ أن نتائج القياس قد تختلف بناء على التكوين الدقيق للأجهزة والبرامج للنظام ، بالإضافة إلى عبء العمل الحالي للنظام في وقت تشغيل المعايير. للحصول على النتائج الأكثر موثوقية ، استخدم مجموعة بيانات تحتوي على عدد كبير من الصور ، أي data='coco8.yaml' (4 val images), ordata='coco.yaml'' (5000 صورة فال).

أفضل الممارسات عند استخدام NVIDIA Jetson

عند استخدام NVIDIA Jetson ، هناك بعض أفضل الممارسات التي يجب اتباعها من أجل تمكين أقصى أداء على تشغيل NVIDIA Jetson YOLOv8.

  1. تمكين وضع الطاقة MAX

    سيؤدي تمكين وضع الطاقة MAX على Jetson إلى التأكد من تشغيل جميع نوى وحدة المعالجة المركزية ووحدة معالجة الرسومات.

    sudo nvpmodel -m 0
    
  2. تمكين ساعات جيتسون

    سيؤدي تمكين Jetson Clocks إلى التأكد من تسجيل جميع نوى وحدة المعالجة المركزية ووحدة معالجة الرسومات بأقصى تردد لها.

    sudo jetson_clocks
    
  3. تثبيت تطبيق إحصائيات جيتسون

    يمكننا استخدام تطبيق Jetson stats لمراقبة درجات حرارة مكونات النظام والتحقق من تفاصيل النظام الأخرى مثل عرض وحدة المعالجة المركزية ووحدة معالجة الرسومات واستخدام ذاكرة الوصول العشوائي وتغيير أوضاع الطاقة وضبطها على الساعات القصوى والتحقق من معلومات JetPack

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop
    

احصائيات جيتسون

الخطوات التالية

تهانينا على الإعداد الناجح YOLOv8 على نفيديا جيتسون الخاص بك! لمزيد من التعلم والدعم ، قم بزيارة المزيد من الدليل على Ultralytics YOLOv8 المستندات!



تم الإنشاء 2024-04-02، تم التحديث 2024-05-08
المؤلفون: برهان-Q (2)، لاكشانثاد (2)، جلين-جوتشر (2)

التعليقات