CV-Cuda는 효율적인 클라우드 규모의 인공 지능 (AI) 이미징 및 컴퓨터 비전 (CV) 응용 프로그램을 구축 할 수있는 오픈 소스 프로젝트입니다. GPU (Graphics Processing Unit) 가속도를 사용하여 개발자가 매우 효율적인 사전 처리 파이프 라인을 구축 할 수 있도록 도와줍니다. CV-Cuda는 Nvidia와 Bytedance 사이의 협력 노력으로 시작되었습니다.
사용 가능한 운영자에 대한 자세한 내용은 개발자 안내서를 참조하십시오.
로컬 사본을 올리거나 실행하려면 다음 단계를 따르십시오.
| CV-Cuda 빌드 | 플랫폼 | CUDA 버전 | CUDA 컴퓨팅 기능 | 하드웨어 아키텍처 | NVIDIA 드라이버 | 파이썬 버전 | 지원되는 컴파일러 (소스에서 빌드) | 사전 빌드 바이너리와 API 호환성 | 사전 제작 된 패키지로 테스트 된 OS/Linux 배포판 |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11.7 이상 | SM7 이상 | 볼타, 튜링, 암페어, 호퍼, Ada Lovelace | R525 이상 *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | 우분투> = 20.04 wsl2/ubuntu> = 20.04 |
| x86_64_cu12 | x86_64 | 12.2 이상 | SM7 이상 | 볼타, 튜링, 암페어, 호퍼, Ada Lovelace | R525 이상 *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | 우분투> = 20.04 wsl2/ubuntu> = 20.04 |
| AARCH64_CU11 | Aarch64 | 11.4 | SM7 이상 | Jetson Agx Orin | 제트 팩 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 | 제트 팩 6.0 DP, R535 (IGX OS V0.6) | 3.10 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | 제트슨 리눅스 36.2 IGX OS v0.6 |
* 부분 빌드, 테스트 모듈 없음 (알려진 한계 참조)
** 테스트 모듈을 포함한 전체 빌드
*** 샘플은 드라이버 R535 이상이 필요하며 공식적으로 CUDA 12에서만 지원됩니다.
-DBUILD_TESTS=0 으로 빌드하십시오pip install --upgrade sphinx )가 필요하며 시스템의 기본 Python 버전 ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" 명시 적으로 구문 분석해야합니다.편의를 위해 CUDA 버전, 파이썬 버전 및 아키텍처의 다양한 조합에 대한 사전 구축 패키지를 제공합니다. 다음 단계는 이러한 사전 구축 된 패키지에서 CV-CUDA를 설치하는 방법을 설명합니다.
우리는 두 가지 주요 대안 경로를 지원합니다.
환경 요구를 충족시키는 설치 방법을 선택하십시오.
현재 CV-CUDA 릴리스의 릴리스 자산에서 컴퓨터 아키텍처, Python 및 Cuda 버전에 적합한 .whl 파일을 다운로드하십시오. 모든 CV-CUDA 릴리스의 릴리스 정보는 여기에서 찾을 수 있습니다. 다운로드되면 pip install 명령을 실행하여 파이썬 휠을 설치하십시오. 예를 들어:
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> 원하는 아키텍처입니다.
파이썬 휠은 독립형이며 C ++/CUDA 라이브러리와 파이썬 바인딩이 모두 포함됩니다.
apt 사용하여 C ++/CUDA 라이브러리 (CVCUDA-LIB*) 및 개발 헤더 (CVCUDA-DEV*)를 설치하십시오.
sudo apt install -y ./cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.deb ./cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.deb apt 사용하여 파이썬 바인딩 (cvcuda-python*)을 설치하십시오.
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파이썬 바인딩 설치 (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.shCV-Cuda를 구축하는 데 필요한 종속성을 설치하십시오.
Ubuntu> = 20.04에서 apt 사용하여 다음 패키지를 설치하십시오.
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelf11.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 에 있으며 실행 파일 (테스트 등)은 build-rel/bin 에 있습니다.-DBUILD_TESTS 옵션을 사용하여 테스트 구축을 비활성화/활성화 할 수 있습니다 (기본적으로 활성화, 알려진 제한 사항 참조).-DPYTHON_VERSIONS 옵션을 사용하여 바인딩 및 바퀴를 구축하기위한 파이썬 버전을 선택할 수 있습니다. 기본적으로 기본 시스템 Python3 버전 만 선택됩니다.-DPUBLIC_API_COMPILERS 옵션을 사용하여 공개 API 호환성을 확인하는 데 사용되는 컴파일러를 선택할 수 있습니다. 기본적으로 GCC-11, GCC-9, Clang-11 및 Clang-14가 선택되어 확인하려고합니다. 알려진 한계 : Ubuntu 20.04를 기반으로 한 문서는 최신 버전의 Sphinx ( pip install --upgrade sphinx )가 필요하며 시스템의 기본 파이썬 버전 ./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 Installers와 Tarballs (*.tar.xz) 모두 빌드 디렉토리에서 생성됩니다.
설치자가 생성 할 수있는 세분화 된 선택의 경우 전체 구문은 다음과 같습니다.
cpack . -G [DEB | TXZ]파이썬 휠
기본적으로 release 빌드 중에 사용 가능한 CUDA 버전 및 지정된 Python 버전을 위해 파이썬 바인딩 및 휠이 생성됩니다. 휠은 이제 build-rel/python3/repaired_wheels 폴더에 출력됩니다 (Manylinux의 경우 auditwheel repair 명령에 의해 처리 된 후). 단일 생성 된 파이썬 휠은 CMAKE 빌드 단계에서 지정된 모든 버전의 Python과 호환됩니다. 여기에서 build-rel 릴리스 빌드를 빌드하는 데 사용되는 빌드 디렉토리입니다.
PYPI 준수를위한 새로운 Python Wheels는 Manylinux 2014 Docker 환경 내에서 구축해야합니다. Docker 이미지는 docker/manylinux/docker_buildx.sh 스크립트를 사용하여 생성 할 수 있습니다. 이 이미지는 휠이 Manylinux 2014 및 PYPI 표준을 충족하도록합니다.
내장 휠은 여전히 pip 사용하여 설치할 수 있습니다. 예를 들어, Linux x86_64 시스템의 Cuda 12.x, Python 3.10 및 3.11 용 Python Wheel을 설치하려면 :
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 (No-Operation) 연산자 템플릿을 생성하여 새로운 기능을 구현하기위한 출발점 역할을합니다.
파일 사용자 정의 : 새 연산자 이름을 포함하도록 템플릿 파일을 수정하여 코드베이스 전체에서 일관된 이름 지정 규칙을 보장합니다.
CMAKE 통합 : 새 운영자 파일을 적절한 CMAKELIST에 추가하여 빌드 시스템에 원활한 컴파일 및 통합을 용이하게합니다.
파이썬 바인딩 : 새 연산자를위한 파이썬 래퍼 스터브를 생성하여 파이썬 환경 내에서 사용할 수 있습니다.
테스트 설정 : 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 Integration : 스크립트는 새 연산자를 포함하도록 CMakeLists.txt 파일 및 Python 모듈 파일을 업데이트하여 빌드 시스템 및 Python 인터페이스에 의해 인식되도록합니다.
테스트 프레임 워크 : 마지막으로 C ++ 및 Python 모두에 대한 테스트 파일을 설정하여 개발자는 즉시 새 운영자에 대한 테스트를 시작할 수 있습니다.
CV-Cuda는 Apache-2.0 라이센스에 따라 운영됩니다.
NVIDIA 프로그램 인 CV-CUDA는 개발 관행을 확보하기 위해 노력하고 있습니다. 자세한 내용은 보안 페이지를 읽으십시오.
CV-Cuda는 Nvidia와 Bytedance에 의해 공동으로 개발되었습니다.