CV-CUDA هو مشروع مفتوح المصدر يمكّن من بناء تطبيقات التصوير الاصطناعية على نطاق السحابة (AI) ورؤية الكمبيوتر (CV). يستخدم تسريع وحدة معالجة الرسومات (GPU) لمساعدة المطورين على بناء خطوط أنابيب ذات كفاءة عالية قبل المعالجة. نشأت CV-CUDA كجهد تعاوني بين NVIDIA و BYTEDANCE.
ارجع إلى دليل المطورين لدينا لمزيد من المعلومات حول المشغلين المتاحة.
للحصول على نسخة محلية وتشغيل اتبع هذه الخطوات.
| CV-CUDA بناء | منصة | إصدار CUDA | CUDA القدرة على حساب | بنيات الأجهزة | سائق نفيديا | إصدارات بيثون | المترجمون المدعومون (بناء من المصدر) | توافق API مع الثنائيات المسبقة | تم اختبار توزيعات OS/Linux مع حزم بدين |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_CU11 | x86_64 | 11.7 أو في وقت لاحق | SM7 وبعد ذلك | Volta ، Turing ، Ampere ، Hopper ، Ada Lovelace | R525 أو أحدث *** | 3.8 ، 3.9 ، 3.10 ، 3.11 | GCC> = 9* GCC> = 11 ** | GCC> = 9 | Ubuntu> = 20.04 WSL2/Ubuntu> = 20.04 |
| x86_64_CU12 | x86_64 | 12.2 أو أحدث | SM7 وبعد ذلك | Volta ، Turing ، Ampere ، Hopper ، Ada Lovelace | R525 أو أحدث *** | 3.8 ، 3.9 ، 3.10 ، 3.11 | GCC> = 9* GCC> = 11 ** | GCC> = 9 | Ubuntu> = 20.04 WSL2/Ubuntu> = 20.04 |
| AARCH64_CU11 | AARCH64 | 11.4 | SM7 وبعد ذلك | Jetson Agx Orin | Jetpack 5.1 | 3.8 | GCC> = 9* GCC> = 11 ** | GCC> = 9 | Jetson Linux 35.x |
| AARCH64_CU12 | AARCH64 | 12.2 | SM7 وبعد ذلك | Jetson Agx Orin ، IGX Orin + AMPERE RTX6000 ، IGX ORIN + ADA RTX6000 | Jetpack 6.0 DP ، R535 (IGX OS V0.6) | 3.10 | GCC> = 9* GCC> = 11 ** | GCC> = 9 | Jetson Linux 36.2 IGX OS V0.6 |
* بناء جزئي ، لا توجد وحدة اختبار (انظر القيود المعروفة)
** البناء الكامل ، بما في ذلك وحدة الاختبار
*** تتطلب عينات السائق R535 أو أحدث للتشغيل ولا يتم دعمها رسميًا إلا مع CUDA 12.
-DBUILD_TESTS=0pip install --upgrade sphinx ) بالإضافة إلى تحليل Python الافتراضي للنظام ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"للراحة ، نقدم حزمًا تم إنشاؤها مسبقًا لمجموعات مختلفة من إصدارات CUDA وإصدارات Python والبنية هنا. تصف الخطوات التالية كيفية تثبيت CV-CUDA من مثل هذه الحزم المدمجة مسبقًا.
نحن ندعم مسارين بديلان رئيسيان:
اختر طريقة التثبيت التي تلبي احتياجات البيئة الخاصة بك.
قم بتنزيل ملف .whl المناسب لهندسة الكمبيوتر الخاصة بك ، إصدار Python و CUDA من أصول إصدار إصدار CV-CUDA الحالي. يمكن العثور على معلومات إطلاق جميع إصدارات CV-CUDA هنا. بمجرد التنزيل ، قم بتنفيذ أمر pip install لتثبيت عجلة Python. على سبيل المثال:
pip install cvcuda_ < cu_ver > - < x.x.x > -cp < py_ver > -cp < py_ver > -linux_ < arch > .whl حيث يكون <cu_ver> إصدار CUDA المطلوب ، <xxx> هو إصدار إصدار CV-CUDA ، <py_ver> هو إصدار Python المطلوب و <arch> هي البنية المطلوبة.
يرجى ملاحظة أن عجلات Python قائمة بذاتها ، وتشمل كل من مكتبات C ++/CUDA وربط Python.
تثبيت مكتبات C ++/CUDA (CVCUDA-LIB*) ورؤوس التطوير (CVCUDA-DEV*) باستخدام apt :
sudo apt install -y ./cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.deb ./cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.deb تثبيت روابط Python (CVCUDA-PYTHON*) باستخدام apt :
sudo apt install -y ./cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.deb حيث <cu_ver> هو إصدار CUDA المطلوب ، <py_ver> هو إصدار Python المطلوب و <arch> هو البنية المطلوبة.
تثبيت مكتبات C ++/CUDA (CVCUDA-LIB*) ورؤوس التطوير (CVCUDA-DEV*):
tar -xvf cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.tar.xz
tar -xvf cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.tar.xzتثبيت روابط Python (cvcuda-python*)
tar -xvf cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.tar.xz حيث <cu_ver> هو إصدار CUDA المطلوب ، <py_ver> هو إصدار Python المطلوب و <arch> هو البنية المطلوبة.
اتبع هذه التعليمات لبناء CV-CUDA من المصدر:
تثبيت التبعيات اللازمة لإعداد المستودع:
على Ubuntu> = 20.04 ، قم بتثبيت الحزم التالية باستخدام apt :
sudo apt install -y git git-lfsاستنساخ المستودع
git clone https://github.com/CVCUDA/CV-CUDA.git على افتراض أن المستودع تم استنساخه في ~/cvcuda ، يجب تكوينه بشكل صحيح عن طريق تشغيل البرنامج النصي init_repo.sh مرة واحدة فقط.
cd ~ /cvcuda
./init_repo.shتثبيت التبعيات المطلوبة لبناء CV-CUDA:
على Ubuntu> = 20.04 ، قم بتثبيت الحزم التالية باستخدام apt :
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelfيجب أن تعمل أي إصدار من مجموعة أدوات 11.x أو 12.x CUDA. تم اختبار CV-CUDA مع 11.7 و 12.2 ، وهكذا يوصى بهذه الإصدارات.
sudo apt install -y cuda-11-7
# or
sudo apt install -y cuda-12-2بناء المشروع:
ci/build.sh [release | debug] [output build tree path] [-DBUILD_TESTS = 1 | 0] [-DPYTHON_VERSIONS = ' 3.8;3.9;3.10;3.11 ' ] [-DPUBLIC_API_COMPILERS = ' gcc-9;gcc-11;clang-11;clang-14 ' ]build-rel لبناء الإصدار ، build-deb للتصحيح.build-rel/lib و Executables (الاختبارات ، إلخ ...) في build-rel/bin .-DBUILD_TESTS لتعطيل/تمكين بناء الاختبارات (ممكّن بشكل افتراضي ، انظر القيود المعروفة).-DPYTHON_VERSIONS لتحديد إصدارات Python لإنشاء الارتباطات والعجلات لـ. بشكل افتراضي ، سيتم اختيار إصدار Python3 الافتراضي فقط.-DPUBLIC_API_COMPILERS لتحديد المترجمين المستخدمة للتحقق من توافق API العام. بشكل افتراضي ، يتم تحديد وتحقيق تحديد GCC-11 و GCC-9 و CLANG-11 و CLANG-14. القيود المعروفة: يحتاج الوثائق المبنية على Ubuntu 20.04 إلى إصدار محدث من sphinx ( pip install --upgrade sphinx ) بالإضافة إلى تحليل python الافتراضي للنظام ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"
تثبيت التبعيات المطلوبة لبناء الوثائق:
على Ubuntu ، قم بتثبيت الحزم التالية باستخدام apt و pip :
sudo apt install -y doxygen graphviz python3 python3-pip sphinx
python3 -m pip install breathe recommonmark graphviz sphinx-rtd-themeبناء الوثائق:
ci/build_docs.sh [build folder]مجلد البناء الافتراضي هو "بناء".
للحصول على تعليمات حول كيفية إنشاء عينات من المصدر وتشغيلها ، راجع وثائق العينات.
تثبيت التبعيات المطلوبة لتشغيل الاختبارات:
على Ubuntu> = 20.04 ، قم بتثبيت الحزم التالية باستخدام apt و pip :
sudo apt install -y python3 python3-pip
python3 -m pip install pytest torch numpy==1.26 الاختبارات في <buildtree>/bin . يمكنك تشغيل البرنامج النصي أدناه لتشغيل جميع الاختبارات في وقت واحد. فيما يلي مثال عند إنشاء شجرة البناء في build-rel :
build-rel/bin/run_tests.shمثبتات الحزم
يمكن إنشاء مثبتات باستخدام الأمر CPACK التالي بمجرد أن تنجح المشروع بنجاح:
cd build-rel
cpack .سيؤدي ذلك إلى توليد في دليل البناء على حد سواء مثبتات دبيان وكرات القطران (*.tar.xz) ، اللازمة للتكامل في التوزيعات الأخرى.
للاختيار الدقيق للحبيبات لما يجب إنشاؤه ، فإن بناء الجملة الكامل هو:
cpack . -G [DEB | TXZ]عجلات بيثون
بشكل افتراضي ، أثناء بناء release ، يتم إنشاء روابط وعجلات Python لإصدار CUDA المتاح وإصدار (إصدار) Python المحدد. يتم الآن إخراج العجلات إلى مجلد build-rel/python3/repaired_wheels (بعد معالجته بواسطة أمر auditwheel repair في حالة ManyLinux). تتوافق عجلة Python المولدة المنفردة مع جميع إصدارات Python المحددة أثناء خطوة بناء CMake. هنا ، build-rel هو دليل البناء المستخدم لبناء بناء الإصدار.
يجب بناء عجلات Python الجديدة للامتثال PYPI في بيئة Docker لعام 2014. يمكن إنشاء صور Docker باستخدام البرنامج النصي docker/manylinux/docker_buildx.sh . تضمن هذه الصور أن العجلات تلتقي معايير ManyLinux 2014 و PYPI.
لا يزال من الممكن تثبيت العجلات المصممة باستخدام pip . على سبيل المثال ، لتثبيت عجلة Python المصممة لـ CUDA 12.x ، Python 3.10 و 3.11 على أنظمة Linux X86_64:
pip install cvcuda_cu12- < x.x.x > -cp310.cp311-cp310.cp311-linux_x86_64.whlCV-CUDA هو مشروع مفتوح المصدر. كجزء من مجتمع المصدر المفتوح ، نحن ملتزمون بدورة التعلم والتحسين وتحديث هذا المجتمع الذي يجعل هذا المجتمع يزدهر. ومع ذلك ، فإن CV-CUDA ليست جاهزة بعد للمساهمات الخارجية.
لفهم عملية المساهمة في CV-CUDA ، راجع صفحتنا المساهمة. لفهم التزامنا بمجتمع المصادر المفتوحة ، وتوفير بيئة تدعم وتحترم جهود جميع المساهمين ، يرجى قراءة مدونة قواعد سلوكنا.
يعد برنامج mkop.sh أداة قوية لإنشاء سقالة للمشغلين الجدد في مكتبة CV-CUDA. إنه يعمل على أتمتة عدة مهام ، وضمان الاتساق وتوفير الوقت.
mkop.sh :إنشاء كوب المشغل : يولد قوالب المشغل NO-OP (عدم التشغيل) ، والتي تعمل كنقطة انطلاق لتنفيذ وظائف جديدة.
تخصيص الملفات : يعدل ملفات القالب لتضمين اسم المشغل الجديد ، مما يضمن اتفاقيات التسمية المتسقة عبر قاعدة الكود.
تكامل CMAKE : يضيف ملفات المشغل الجديدة إلى cmakelists المناسبة ، مما يسهل التجميع السلس والتكامل في نظام الإنشاء.
Bython Bindings : يقوم بإنشاء كبوتات غلاف Python للمشغل الجديد ، مما يسمح باستخدامه في بيئات Python.
إعداد الاختبار : يقوم بإنشاء ملفات اختبار لكل من C ++ و Python ، مما يتيح التطوير الفوري لاختبارات الوحدة للمشغل الجديد.
mkop.sh : قم بتشغيل البرنامج النصي باستخدام اسم المشغل المطلوب. يفترض البرنامج النصي أنه يقع في ~/cvcuda/tools/mkop .
./mkop.sh [Operator Name]إذا تم تشغيل البرنامج النصي من موقع مختلف ، فوفر المسار إلى دليل جذر CV-CUDA.
./mkop.sh [Operator Name] [CV-CUDA root]ملاحظة : يتم أسر الحرف الأول من اسم المشغل الجديد عند الحاجة لمطابقة بقية هياكل الملف.
الإعداد الأولي : يبدأ البرنامج النصي عن طريق صحة الإدخال وإعداد المتغيرات اللازمة. ثم يستفيد من الحرف الأول من اسم المشغل للالتزام بتسمية الاتفاقيات.
تعديل القالب : يقوم بمعالجة ملفات القالب المختلفة ( Public.h ، PrivateImpl.cpp ، إلخ) ، واستبدال العناصر النائبة باسم المشغل الجديد. يتضمن ذلك ضبط رؤوس الملفات ومساحات الأسماء وتوقيعات الوظائف.
تكامل Cmake و Python : يقوم البرنامج النصي بتحديث ملفات CMakeLists.txt وملفات الوحدة النمطية Python لتشمل المشغل الجديد ، مما يضمن التعرف عليه بواسطة نظام البناء وواجهة Python.
إطار الاختبار : أخيرًا ، يقوم بإعداد ملفات الاختبار لكل من C ++ و Python ، مما يسمح للمطورين بالبدء على الفور في كتابة اختبارات المشغل الجديد.
تعمل CV-CUDA بموجب ترخيص Apache-2.0.
CV-CUDA ، كبرنامج NVIDIA ، ملتزم بتأمين ممارسات التطوير. يرجى قراءة صفحة الأمان الخاصة بنا لمعرفة المزيد.
تم تطوير CV-CUDA بشكل مشترك بواسطة NVIDIA و BYTEDANCE.