CV-CUDA es un proyecto de código abierto que permite crear aplicaciones eficientes de inteligencia artificial (IA) de inteligencia artificial (IA) y visión por computadora (CV). Utiliza la aceleración de la Unidad de Procesamiento de Gráficos (GPU) para ayudar a los desarrolladores a construir tuberías de preprocesamiento y postprocesamiento altamente eficientes. CV-CUDA se originó como un esfuerzo de colaboración entre Nvidia y Byteedance.
Consulte nuestra Guía de desarrolladores para obtener más información sobre los operadores disponibles.
Para obtener una copia local en ejecución, siga estos pasos.
| Construcción de cv-cuda | Plataforma | Versión CUDA | Capacidad de cómputo CUDA | Arquitecturas de hardware | Controlador nvidia | Versiones de Python | Compiladores compatibles (compilación desde la fuente) | Compatibilidad de API con binarios preconstruidos | Distribuciones de OS/Linux probadas con paquetes preconstruidos |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11.7 o posterior | SM7 y más tarde | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 o posterior *** | 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 o posterior | SM7 y más tarde | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 o posterior *** | 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 y más tarde | Jetson Agx Orin | Jetpack 5.1 | 3.8 | GCC> = 9* GCC> = 11 ** | GCC> = 9 | Jetson Linux 35.x |
| aarch64_cu12 | Aarch64 | 12.2 | SM7 y más tarde | 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 |
* Construcción parcial, sin módulo de prueba (ver limitaciones conocidas)
** Construcción completa, incluido el módulo de prueba
*** Las muestras requieren que el conductor R535 o posterior se ejecute y solo se admiten oficialmente con CUDA 12.
-DBUILD_TESTS=0pip install --upgrade sphinx ), así como explícitamente analizando la versión Python predeterminada del sistema ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .Por conveniencia, proporcionamos paquetes preconstruidos para varias combinaciones de versiones CUDA, versiones de Python y arquitecturas aquí. Los siguientes pasos describen cómo instalar CV-Cuda desde tales paquetes preconstruidos.
Apoyamos dos vías alternativas principales:
Elija el método de instalación que satisfaga sus necesidades de entorno.
Descargue el archivo .WHL apropiado para su versión de arquitectura de computadora, Python y Cuda a partir de los activos de lanzamiento de la versión actual de CV-CUDA. La información de liberación de todas las versiones CV-CUDA se puede encontrar aquí. Una vez descargado, ejecute el comando pip install para instalar la rueda Python. Por ejemplo:
pip install cvcuda_ < cu_ver > - < x.x.x > -cp < py_ver > -cp < py_ver > -linux_ < arch > .whl Donde <cu_ver> es la versión CUDA deseada, <xxx> es la versión de lanzamiento CV-CUDA, <py_ver> es la versión de Python deseada y <arch> es la arquitectura deseada.
Tenga en cuenta que las ruedas de Python son independientes, incluyen las bibliotecas C ++/CUDA y las enlaces de Python.
Instale las bibliotecas C ++/CUDA (CVCUDA-LIB*) y los encabezados de desarrollo (CVCUDA-DEV*) usando 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 Instale los enlaces de Python (cvcuda-python*) usando apt :
sudo apt install -y ./cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.deb Donde <cu_ver> es la versión CUDA deseada, <py_ver> es la versión de Python deseada y <arch> es la arquitectura deseada.
Instale las bibliotecas C ++/CUDA (CVCUDA-LIB*) y los encabezados de desarrollo (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.xzInstalar enlaces de Python (Cvcuda-Python*)
tar -xvf cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.tar.xz Donde <cu_ver> es la versión CUDA deseada, <py_ver> es la versión de Python deseada y <arch> es la arquitectura deseada.
Siga estas instrucciones para construir CV-CUDA a partir de la fuente:
Instale las dependencias necesarias para configurar el repositorio:
En Ubuntu> = 20.04, instale los siguientes paquetes usando apt :
sudo apt install -y git git-lfsClonar el repositorio
git clone https://github.com/CVCUDA/CV-CUDA.git Suponiendo que el repositorio fue clonado en ~/cvcuda , debe configurarse correctamente ejecutando el script init_repo.sh solo una vez.
cd ~ /cvcuda
./init_repo.shInstale las dependencias necesarias para construir CV-CUDA:
En Ubuntu> = 20.04, instale los siguientes paquetes usando apt :
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelfCualquier versión del kit de herramientas CUDA 11.X o 12.X debería funcionar. CV-CUDA se probó con 11.7 y 12.2, estas versiones se recomiendan.
sudo apt install -y cuda-11-7
# or
sudo apt install -y cuda-12-2Construye el proyecto:
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 para las compilaciones de lanzamiento y build-deb para la depuración.build-rel/lib y ejecutables (pruebas, etc.) están en build-rel/bin .-DBUILD_TESTS se puede usar para deshabilitar/habilitar la construcción de las pruebas (habilitadas de forma predeterminada, ver limitaciones conocidas).-DPYTHON_VERSIONS se puede usar para seleccionar versiones de Python para construir enlaces y ruedas para. Por defecto, solo se seleccionará la versión Python3 del sistema predeterminada.-DPUBLIC_API_COMPILERS se puede usar para seleccionar los compiladores utilizados para verificar la compatibilidad pública de API. Por defecto, se intenta seleccionar y verificar GCC-11, GCC-9, Clang-11 y Clang-14. Limitación conocida: la documentación basada en Ubuntu 20.04 necesita una versión actualizada de Sphinx ( pip install --upgrade sphinx ), así como para analizar explícitamente la versión Python predeterminada del sistema ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .
Instale las dependencias necesarias para construir la documentación:
En Ubuntu, instale los siguientes paquetes con apt y pip :
sudo apt install -y doxygen graphviz python3 python3-pip sphinx
python3 -m pip install breathe recommonmark graphviz sphinx-rtd-themeCree la documentación:
ci/build_docs.sh [build folder]La carpeta de compilación predeterminada es 'construcción'.
Para obtener instrucciones sobre cómo construir muestras de la fuente y ejecutarlas, consulte la documentación de las muestras.
Instale las dependencias requeridas para ejecutar las pruebas:
En Ubuntu> = 20.04, instale los siguientes paquetes usando apt y pip :
sudo apt install -y python3 python3-pip
python3 -m pip install pytest torch numpy==1.26 Las pruebas están en <buildtree>/bin . Puede ejecutar el script a continuación para ejecutar todas las pruebas a la vez. Aquí hay un ejemplo cuando Build Tree se crea en build-rel :
build-rel/bin/run_tests.shInstaladores de paquetes
Los instaladores se pueden generar utilizando el siguiente comando CPACK una vez que haya creado con éxito el proyecto:
cd build-rel
cpack .Esto se generará en el directorio de compilación, tanto instaladores de Debian como tarballs (*.tar.xz), necesarios para la integración en otras distribuciones.
Para una elección de grano fino de qué instaladores generar, la sintaxis completa es:
cpack . -G [DEB | TXZ]Ruedas de pitón
De manera predeterminada, durante la construcción release , los enlaces y las ruedas de Python se crean para la versión CUDA disponible y las versiones (s) de Python especificadas. Las ruedas ahora se emiten a la carpeta build-rel/python3/repaired_wheels (después de ser procesada por el comando auditwheel repair en el caso de ManyLinux). La sola rueda de pitón generada es compatible con todas las versiones de Python especificadas durante el paso de construcción de CMake. Aquí, build-rel es el directorio de compilación utilizado para construir la versión de lanzamiento.
Las nuevas ruedas de Python para el cumplimiento de PYPI deben construirse dentro del entorno Docker de ManyLinux 2014. Las imágenes de Docker se pueden generar utilizando el script docker/manylinux/docker_buildx.sh . Estas imágenes aseguran que las ruedas cumplan con los estándares de ManyLinux 2014 y Pypi.
Las ruedas construidas todavía se pueden instalar usando pip . Por ejemplo, para instalar la rueda Python construida para CUDA 12.X, Python 3.10 y 3.11 en sistemas Linux x86_64:
pip install cvcuda_cu12- < x.x.x > -cp310.cp311-cp310.cp311-linux_x86_64.whlCV-CUDA es un proyecto de código abierto. Como parte de la comunidad de código abierto, estamos comprometidos con el ciclo de aprendizaje, mejora y actualización que hace que esta comunidad prospere. Sin embargo, CV-CUDA aún no está listo para contribuciones externas.
Para comprender el proceso para contribuir con CV-CUDA, consulte nuestra página contribuyente. Para comprender nuestro compromiso con la comunidad de código abierto y proporcionar un entorno que respalde y respete los esfuerzos de todos los contribuyentes, lea nuestro código de conducta.
El script mkop.sh es una herramienta poderosa para crear un andamio para los nuevos operadores en la biblioteca CV-CUDA. Automatiza varias tareas, asegurando la consistencia y el ahorro de tiempo.
mkop.sh :Creación de stub de operador : genera plantillas de operador NO-OP (sin operación), que sirven como punto de partida para implementar nuevas funcionalidades.
Personalización de archivos : modifica los archivos de plantilla para incluir el nombre del nuevo operador, asegurando convenciones de nombres consistentes en la base de código.
Integración de CMake : agrega los nuevos archivos de operador a las CMAKELists apropiadas, facilitando la compilación e integración perfecta en el sistema de compilación.
Python Bindings : Crea Python Wrapper Stubs para el nuevo operador, lo que permite que se use dentro de los entornos de Python.
Configuración de prueba : genera archivos de prueba para C ++ y Python, lo que permite el desarrollo inmediato de las pruebas unitarias para el nuevo operador.
mkop.sh : Ejecute el script con el nombre del operador deseado. El script asume que está ubicado en ~/cvcuda/tools/mkop .
./mkop.sh [Operator Name]Si el script se ejecuta desde una ubicación diferente, proporcione la ruta al directorio raíz CV-CUDA.
./mkop.sh [Operator Name] [CV-CUDA root]Nota : La primera letra del nuevo nombre del operador está en cautividad donde sea necesario para que coincida con el resto de las estructuras del archivo.
Configuración inicial : el script comienza validando la entrada y configurando las variables necesarias. Luego capitaliza la primera letra del nombre del operador para adherirse a las convenciones de nombres.
Modificación de la plantilla : procesa varios archivos de plantilla ( Public.h , PrivateImpl.cpp , etc.), reemplazando a los marcadores de posición con el nombre del nuevo operador. Esto incluye ajustar los encabezados de archivos, espacios de nombres y firmas de funciones.
Integración de CMake y Python : el script actualiza los archivos CMakeLists.txt y los archivos del módulo Python para incluir el nuevo operador, asegurando que sea reconocido por el sistema de compilación y la interfaz Python.
Marco de prueba : finalmente, configura archivos de prueba para C ++ y Python, lo que permite a los desarrolladores comenzar inmediatamente a escribir pruebas para el nuevo operador.
CV-CUDA opera bajo la licencia Apache-2.0.
CV-CUDA, como programa NVIDIA, se compromete a asegurar las prácticas de desarrollo. Lea nuestra página de seguridad para obtener más información.
CV-CUDA se desarrolla conjuntamente por NVIDIA y bytedance.