在 Windows 上構建¶
要在 Windows 上構建 TorchAudio,我們需要啟用 C++ 編譯器並安裝構建工具和執行時依賴項。
我們使用 Microsoft Visual C++ 進行 C++ 編譯,使用 Conda 管理其他構建工具和執行時依賴項。
1. 安裝構建工具¶
MSVC¶
請按照 https://visualstudio.microsoft.com/downloads/ 上的說明進行操作,並確保安裝 C++ 開發工具。
注意
官方二進位制分發版使用 MSVC 2019 編譯。以下部分使用了 MSVC 2019 Community Edition 的路徑。
Conda¶
請按照 https://docs.conda.io/en/latest/miniconda.html 上的說明進行操作。
2. 啟動開發環境¶
接下來,我們需要使用 C++ 編譯器 (cl`) 和 Conda 包管理器 (conda`). 為了獲得與 Linux/macOS 類似的使用體驗,我們還使用 Bash。
為此,需要執行以下三個步驟。
開啟命令提示符
啟用開發者環境
[可選] 啟動 bash
已知以下組合可行。
啟動 Anaconda3 命令提示符。
請確保
conda命令可以識別。
執行以下命令啟用開發工具。
我們需要使用 MSVC x64 工具集進行編譯。要啟用該工具集,可以使用
vcvarsall.bat或vcvars64.bat檔案,這些檔案位於 Visual Studio 安裝資料夾的VC\Auxiliary\Build\` 下。更多資訊請參見 https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line?view=msvc-160#use-vcvarsallbat-to-set-a-64-bit-hosted-build-architecturecall "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
請確保
cl命令可以識別。
[可選] 使用以下命令啟動 bash。
如果您想要與 Linux/macOS 相似的使用者體驗,可以啟動 Bash。但請注意,在 Bash 環境中,檔案路徑與原生 Windows 風格不同,並且
torchaudio.datasets模組無法工作。Miniconda3\Library\bin\bash.exe
3. 安裝 PyTorch¶
有關安裝 PyTorch 的最新方法,請參考 https://pytorch.com.tw/get-started/locally/。
以下命令安裝 PyTorch 的 nightly build 版本。
# CPU-only
conda install pytorch cpuonly -c pytorch-nightly
# With CUDA support
conda install pytorch pytorch-cuda=11.7 -c pytorch-nightly -c nvidia
安裝 CUDA-enabled 版本時,也會安裝 CUDA toolkit。
4. [可選] cuDNN¶
如果您打算構建與 CUDA 相關的功能,請安裝 cuDNN。
從 https://developer.nvidia.com/cudnn 下載 CuDNN,並將檔案解壓到與 CUDA toolkit 相同的目錄中。
使用 conda 時,目錄是 ${CONDA_PREFIX}/bin`、${CONDA_PREFIX}/include`、${CONDA_PREFIX}/Lib/x64。
5. 安裝外部依賴項¶
conda install cmake ninja
6. 構建 TorchAudio¶
現在我們已經準備就緒,可以構建 TorchAudio 了。
git clone https://github.com/pytorch/audio
cd audio
# In Command Prompt
python setup.py develop
# In Bash
python setup.py develop
注意
由於構建過程的複雜性,TorchAudio 僅支援原地構建 (in-place build)。要使用 pip`,請使用 --no-use-pep517 選項。
pip install -v -e . --no-use-pep517
[可選] 使用自定義 FFmpeg 構建 TorchAudio¶
預設情況下,torchaudio 嘗試構建支援多種 FFmpeg 版本的 FFmpeg 擴充套件。此過程使用為特定 CPU 架構(如 x86_64`) 編譯的預構建 FFmpeg 庫。
如果您的 CPU 不同,則構建過程可能會失敗。作為解決方法,可以停用 FFmpeg 整合(透過設定環境變數 USE_FFMPEG=0`)或切換到單版本 FFmpeg 擴充套件。
要構建單版本 FFmpeg 擴充套件,使用者必須提供 FFmpeg 二進位制檔案並在構建環境中可用。為此,請安裝 FFmpeg 並設定 FFMPEG_ROOT 環境變數來指定 FFmpeg 的位置。
conda install -c conda-forge ffmpeg
FFMPEG_ROOT=${CONDA_PREFIX}/Library python setup.py develop
[可選] 從原始碼構建 FFmpeg¶
以下部分說明了從原始碼構建 FFmpeg 庫的一種方法。
Conda-forge 的 FFmpeg 包支援主要的編解碼器和 GPU 解碼器,因此普通使用者和開發者無需從原始碼構建 FFmpeg。
如果您不使用 Conda,則可以查詢預構建的二進位制分發版或自行構建 FFmpeg。
此外,如果 torchaudio 開發者需要更新和自定義 FFmpeg 構建的 CI,本節可能會有所幫助。
1. 安裝 MSYS2¶
為了以一種可以在 TorchAudio 開發環境中使用的方構建 FFmpeg,我們需要構建 MINGW64` 原生的二進位制檔案。為此,我們需要 FFmpeg 構建過程所需的工具,例如在 MINGW64` 環境中工作的 pkg-config 和 make`。為此,我們使用 MSYS2。
FFmpeg 的官方文件提到了這一點 https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
請按照 https://www.msys2.org/ 上的說明安裝 MSYS2。
注意
在 CI 環境中,通常可以使用 Chocolatery 來安裝 MSYS2。
2. 啟動 MSYS2¶
使用快捷方式啟動 MSYS2 (MINGW64)。
注意
MSYS2 中的 Bash 環境與 Conda 環境相容性不佳,因此請勿在 MSYS2 環境的 ~/.bashrc 中新增 Conda 初始化指令碼。(即 C:\msys2\home\USER\.bashrc`) 相反,將其新增到 C:\Users\USER\.bashrc` 中。)
3. 安裝構建工具¶
$ pacman -S mingw-w64-x86_64-make
$ pacman -S mingw-w64-x86_64-yasm
安裝後,您應該擁有類似於以下的軟體包;
$ pacman -Qe
base 2020.12-1
base-devel 2022.01-2
filesystem 2023.01-2
mingw-w64-x86_64-make 4.3-1
mingw-w64-x86_64-pkgconf 1.8.0-2
mingw-w64-x86_64-yasm 1.3.0-4
msys2-runtime 3.4.3-5
4. 構建 FFmpeg¶
git clone https://github.com/ffmpeg/ffmpeg
cd ffmpeg
git checkout <VERSION>
檢出 FFmpeg 原始碼。
./configure --toolchain=msvc
make -j
構建
如果構建成功,應該在同一目錄中找到 ffmpeg.exe。請確保您可以執行它。
5. 驗證構建¶
檢查生成的 FFmpeg 二進位制檔案可以從 Conda 環境訪問