CV-CUDAは、クラウドスケールの効率的な人工知能(AI)イメージングおよびコンピュータービジョン(CV)アプリケーションの構築を可能にするオープンソースプロジェクトです。グラフィックプロセシングユニット(GPU)アクセラレーションを使用して、開発者が非常に効率的な前後の処理パイプラインを構築するのに役立ちます。 CV-CUDAは、Nvidiaとbytedanceの間の共同作業として生まれました。
利用可能なオペレーターの詳細については、開発者ガイドを参照してください。
地元のコピーを稼働させるには、これらの手順に従ってください。
| CV-CUDAビルド | プラットフォーム | CUDAバージョン | CUDA計算機能 | ハードウェアアーキテクチャ | Nvidiaドライバー | Pythonバージョン | サポートされているコンパイラ(ソースからのビルド) | 事前に構築されたバイナリとの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=0でビルドしてくださいpip install --upgrade sphinx )の最新バージョンが必要です。また、システムのデフォルトのPythonバージョン./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"明示的に解析する必要があります。便利なため、CUDAバージョン、Pythonバージョン、アーキテクチャのさまざまな組み合わせに事前に構築されたパッケージを提供しています。次の手順では、このような事前に構築されたパッケージからCV-CUDAをインストールする方法について説明します。
2つの主要な代替経路をサポートしています。
環境のニーズを満たすインストール方法を選択してください。
現在のCV-CUDAリリースのリリースアセットから、コンピュータアーキテクチャ、Python、CUDAバージョンの適切な.whlファイルをダウンロードします。すべての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バインディングの両方が含まれていることに注意してください。
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を使用して、pythonバインディング(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.xzPython Bindings(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スクリプトを1回だけ実行して適切に構成する必要があります。
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オプションを使用して、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 .これにより、ビルドディレクトリで、DebianインストーラーとTarballs(*.tar.xz)の両方が生成され、他のディストリビューションに統合されます。
インストーラーを生成するもののきめの細かい選択については、完全な構文は次のとおりです。
cpack . -G [DEB | TXZ]Pythonホイール
デフォルトでは、 releaseビルド中に、利用可能なCUDAバージョンと指定されたPythonバージョン用にPythonバインディングとホイールが作成されます。ホイールはbuild-rel/python3/repaired_wheelsフォルダーに出力されるようになりました(ManyLinuxの場合、 auditwheel repairコマンドによって処理された後)。シングル生成されたPythonホイールは、Cmakeビルドステップ中に指定されたすべてのバージョンのPythonと互換性があります。ここでは、 build-relリリースビルドのビルドに使用されるビルドディレクトリです。
Pypiコンプライアンス用の新しいPythonホイールは、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ホイールをインストールするには:
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(operation)オペレーターテンプレートを生成します。これは、新しい機能を実装するための出発点として機能します。
ファイルのカスタマイズ:テンプレートファイルを変更して、新しいオペレーターの名前を含め、コードベース全体で一貫した命名規則を確保します。
CMAKE統合:新しいオペレータファイルを適切なcmakelistに追加し、ビルドシステムへのシームレスなコンパイルと統合を促進します。
Python 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ライセンスの下で運営されています。
NVIDIAプログラムとしてのCV-CUDAは、開発慣行の確保に取り組んでいます。詳細については、セキュリティページをお読みください。
CV-CUDAは、Nvidiaとbytedanceによって共同で開発されています。