在 Windows 上构建¶
在 Windows 上构建 TorchAudio 需要启用 C++ 编译器并安装构建工具和运行时依赖项。
我们使用 Microsoft Visual C++ 来编译 C++,并使用 Conda 来管理其他构建工具和运行时依赖项。
1. 安装构建工具¶
MSVC¶
请按照 https://visualstudio.microsoft.com/downloads/ 上的说明进行操作,并确保安装 C++ 开发工具。
注意
官方二进制发行版是使用 MSVC 2019 编译的。 以下部分使用了 MSVC 2019 社区版的路径。
Conda¶
请按照 https://docs.conda.io/en/latest/miniconda.html 中的说明进行操作。
2. 启动开发环境¶
在以下内容中,我们需要使用C++编译器 (cl), 以及Conda包管理器 (conda).
我们还使用Bash以获得与Linux/macOS相似的体验。
要做到这一点,需要以下三个步骤。
打开命令提示符
启用开发环境
[可选] 启动 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¶
请参考 https://pytorch.org/get-started/locally/ 获取安装 PyTorch 的最新方法。
以下命令安装 PyTorch 的夜间构建版本。
# 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 的版本时,也会安装 CUDA 工具包。
4. [可选] cuDNN¶
如果你打算构建与 CUDA 相关的功能,请安装 cuDNN。
从 https://developer.nvidia.com/cudnn 下载 CuDNN,并将文件解压到与 CUDA 工具包相同的目录中。
当使用 conda 时,目录是 ${CONDA_PREFIX}/bin, ${CONDA_PREFIX}/include, ${CONDA_PREFIX}/Lib/x64。
5. 安装外部依赖项¶
conda install cmake ninja
conda install -c conda-forge ffmpeg
6. 构建 TorchAudio¶
现在我们已经万事俱备,可以构建 TorchAudio 了。
git clone https://github.com/pytorch/audio
cd audio
# In Command Prompt
set USE_FFMPEG=1
python setup.py develop
# In Bash
USE_FFMPEG=1 python setup.py develop
注意
由于构建过程的复杂性,TorchAudio 仅支持原地构建。
要使用 pip,请使用 --no-use-pep517 选项。
USE_FFMPEG=1 pip install -v -e . --no-use-pep517
[可选] 从源代码构建 FFmpeg¶
以下部分说明了如何从源代码构建 FFmpeg 库。
Conda-forge 提供的 FFmpeg 包支持主要编解码器和 GPU 解码器,因此普通用户和开发者无需从源代码构建 FFmpeg。
如果你没有使用 Conda,那么你可以选择寻找一个预编译的二进制发行版,或者自己构建 FFmpeg。
此外,如果 torchaudio 开发人员需要更新和自定义 FFmpeg 构建的 CI,本节可能会有所帮助。
1. 安装 MSYS2¶
要以可在TorchAudio开发环境中使用的方式构建FFmpeg,我们需要为MINGW64构建本地二进制文件。为此,我们需要FFmpeg构建过程中所需的工具,例如gcc和make,这些工具能够在MINGW64环境中运行。为此,我们使用MSYS2。
FFmpeg的官方文档涉及此内容 https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
请按照 https://www.msys2.org/ 上的说明安装 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-gcc
$ 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
git 2.36.0-1
mingw-w64-x86_64-gcc-ada 11.3.0-1
mingw-w64-x86_64-gcc-fortran 11.3.0-1
mingw-w64-x86_64-gcc-libgfortran 11.3.0-1
mingw-w64-x86_64-gcc-objc 11.3.0-1
mingw-w64-x86_64-gdb 11.2-2
mingw-w64-x86_64-gdb-multiarch 11.2-2
mingw-w64-x86_64-libmangle-git 10.0.0.r14.ga08c638f8-1
mingw-w64-x86_64-make 4.3-1
mingw-w64-x86_64-pkgconf 1.8.0-2
mingw-w64-x86_64-tools-git 10.0.0.r14.ga08c638f8-1
mingw-w64-x86_64-winstorecompat-git 10.0.0.r14.ga08c638f8-1
mingw-w64-x86_64-yasm 1.3.0-4
msys2-runtime 3.4.3-5
4. 构建 FFmpeg¶
查看 FFmpeg 源代码。
git clone https://github.com/ffmpeg/ffmpeg
cd ffmpeg
git checkout <VERSION>
构建
./configure
make -j
如果构建成功,ffmpeg.exe 应该会出现在同一目录下。确保你可以运行它。
5. 验证构建¶
检查生成的 FFmpeg 二进制文件是否可以从 Conda 环境访问
现在启动一个新的命令提示符并启用TorchAudio开发环境。确保你可以运行上一步生成的ffmpeg.exe命令。
6. 使用自定义 FFmpeg 构建 TorchAudio¶
要使用这些 FFmpeg 库来构建 torchaudio,请执行以下操作;
1. 卸载由 conda 安装的 ffmpeg 包。conda uninstall ffmpeg。
2. 在构建时,将 FFMPEG_ROOT 环境变量设置为包含诸如 libavcodec 等库的目录。
# In Command Prompt
set USE_FFMPEG=1
set FFMPEG_ROOT=<FFMPEG_BUILD_DIR>
python setup.py clean develop
# In Bash
USE_FFMPEG=1 FFMPEG_ROOT=<FFMPEG_BUILD_DIR> python setup.py clean develop