CV-CUDA-это проект с открытым исходным кодом, который позволяет создавать эффективные облачные масштабные приложения искусственного интеллекта (ИИ) и приложения компьютерного зрения (CV). Он использует ускорение графической обработки (GPU), чтобы помочь разработчикам создать высокоэффективные трубопроводы до и после обработки. CV-CUDA возникла как совместные усилия Nvidia и Bytedance.
Обратитесь к нашему руководству по разработчике для получения дополнительной информации об доступных операторах.
Чтобы получить локальную копию и запуск, следуйте этим шагам.
| CV-CUDA BUILD | Платформа | Версия CUDA | CUDA вычислить возможность | Аппаратные архитектуры | Nvidia Driver | Версии Python | Поддерживаемые компиляторы (сборка из источника) | Совместимость API с предварительно построенными двоичными файлами | Распределения ОС/Linux, протестированные с помощью предварительно построенных пакетов |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11,7 или позже | SM7 и позже | Вольта, Тьюринги, Ампер, Хоппер, Ада Лавелис | 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 и позже | Вольта, Тьюринги, Ампер, Хоппер, Ада Лавелис | 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 Toolkit должна работать. 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 , а исполняемые файлы (тесты и т. Д.) находятся в build-rel/bin .-DBUILD_TESTS может использоваться для отключения/включения строительства тестов (включенных по умолчанию, см. Известные ограничения).-DPYTHON_VERSIONS может использоваться для выбора версий Python для создания привязки и колес. По умолчанию будет выбрана только версия System Python3 по умолчанию.-DPUBLIC_API_COMPILERS может использоваться для выбора компиляторов, используемых для проверки совместимости с API. По умолчанию GCC-11, GCC-9, Clang-11 и Clang-12 пытаются выбрать и проверить. Известное ограничение: документация, построенная на 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 .Это будет генерировать в каталоге сборки как Debian, так и Tarballs (*.tar.xz), необходимых для интеграции в другие дистрибуты.
Для мелкозернистого выбора того, какие установщики генерируют, полный синтаксис:
cpack . -G [DEB | TXZ]Питоны колеса
По умолчанию во время сборки release привязки Python и колеса создаются для доступной версии CUDA и указанной версии Python. Колеса теперь выводятся в папку build-rel/python3/repaired_wheels (после обработки команды auditwheel repair в случае многих). Одно генерируемое колесо 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 (NOPERATION), которые служат отправной точкой для реализации новых функций.
Настройка файлов : изменяет файлы шаблонов, чтобы включить имя нового оператора, обеспечивая последовательные соглашения об именах в кодовой базе.
Интеграция Cmake : добавляет новые файлы оператора в соответствующие Cmakelists, облегчая бесшовную компиляцию и интеграцию в систему сборки.
Привязки Python : создает заглушки с оберткой 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.