适合所有人的 PyTorch 教程的 C++ 实现
操作系统(编译器)LibTorch | 2.3.0 |
---|---|
macOS(clang 11、12、13) | |
Linux(海湾合作委员会 9、10、11) | |
Windows(MSVC 2019、2022) |
该存储库提供了 C++ 教程代码,供深度学习研究人员学习 PyTorch (即第 1 至第 3 节)
Python教程:https://github.com/yunjey/pytorch-tutorial
注意:交互式教程当前在LibTorch Nightly 版本上运行。
因此,有些教程在使用夜间版本时可能会中断。
conda create --name pytorch-cpp
conda activate pytorch-cpp
conda install xeus-cling notebook -c conda-forge
git clone https://github.com/prabhuomkar/pytorch-cpp.git
cd pytorch-cpp
cmake -B build # <options>
Windows 用户注意事项:
Libtorch 仅支持 64 位 Windows,需要指定 x64 生成器。对于 Visual Studio,可以通过将-A x64
附加到上述命令来完成。
一些有用的选项:
选项 | 默认 | 描述 |
---|---|---|
-D CUDA_V=(11.8|12.1|none) | none | 下载 CUDA 版本的 LibTorch( none = 下载 CPU 版本)。 |
-D LIBTORCH_DOWNLOAD_BUILD_TYPE=(Release|Debug) | Release | 确定要下载的 libtorch 构建类型版本(仅在Windows上相关)。 |
-D DOWNLOAD_DATASETS=(OFF|ON) | ON | 在构建过程中下载所需的数据集(仅当它们不存在于pytorch-cpp/data 中时)。 |
-D CREATE_SCRIPTMODULES=(OFF|ON) | OFF | 在构建过程中为预先学习的模型/权重创建所有必需的脚本模块文件。需要安装 python3 以及 pytorch 和 torchvision。 |
-D CMAKE_PREFIX_PATH=path/to/libtorch/share/cmake/Torch | <empty> | 跳过 LibTorch 的下载并使用您自己的本地版本(请参阅要求)。 |
-D CMAKE_BUILD_TYPE=(Release|Debug|...) | <empty> | 确定单配置生成器的 CMake 构建类型(请参阅 CMake 文档)。 |
cmake -B build
-D CMAKE_BUILD_TYPE=Release
-D CMAKE_PREFIX_PATH=/path/to/libtorch/share/cmake/Torch
-D CREATE_SCRIPTMODULES=ON
cmake -B build
-A x64
-D CUDA_V=11.8
Windows (Visual Studio) 用户注意事项:
CMake 脚本下载 LibTorch 的Release版本,因此必须将--config Release
附加到构建命令中。
数据集下载和脚本模块创建如何工作:
DOWNLOAD_DATASETS
为ON
,您选择构建的教程所需的数据集将下载到pytorch-cpp/data
(如果它们尚不存在)。CREATE_SCRIPTMODULES
为ON
,您选择构建的教程所需的预学习模型/权重的脚本模块文件将在相应教程源文件夹的model
文件夹中创建(如果它们尚不存在)。 要构建所有教程,请使用
cmake --build build
您可以选择仅构建basics
、 intermediate
、 advanced
或popular
类别之一的教程。例如,如果您只对basics
教程感兴趣:
cmake --build build --target basics
# In general: cmake --build build --target {category}
您还可以选择仅构建一个教程。例如仅构建语言模型教程:
cmake --build build --target language-model
# In general: cmake --build build --target {tutorial-name}
笔记:
目标参数是教程的文件夹名称,所有下划线都替换为连字符。
给 CMake 版本 >= 3.15 用户的提示:
您可以指定多个目标,并用空格分隔,例如:cmake --build build --target language-model image-captioning
build/tutorials
中的教程目录。例如,假设您位于pytorch-cpp
目录中并想要更改为 pytorch 基础教程文件夹: cd build/tutorials/basics/pytorch_basics
# In general: cd build/tutorials/{basics|intermediate|advanced|popular/blitz}/{tutorial_name}
pytorch_basics
-> 可执行文件名称: pytorch-basics
(或 Windows 上的pytorch-basics.exe
))。例如,要运行 pytorch 基础教程:./pytorch-basics
# In general: ./{tutorial-name}
. pytorch-basics.exe
# In general: .{tutorial-name}.exe
在 Docker Hub 上查找最新和以前版本的映像。
您可以使用提供的Dockerfile
和docker-compose.yml
文件在 Docker 容器中构建并运行教程(在 CPU 上):
docker-compose build --build-arg USER_ID= $( id -u ) --build-arg GROUP_ID= $( id -g )
笔记:
当您运行 Docker 容器时,主机存储库目录将作为卷安装在 Docker 容器中,以便缓存构建和下载的依赖项文件,以便在容器重新启动时无需重建或重新下载所有内容。为了获得正确的文件权限,在 Linux 上构建映像时需要提供用户和组 ID 作为构建参数。
docker-compose run --rm pytorch-cpp
build/tutorials
文件夹中以交互模式启动bash
。basics
、 intermediate
、 advanced
、 popular
): docker-compose run --rm pytorch-cpp {category}
docker-compose run --rm pytorch-cpp pytorch-basics
# In general: docker-compose run --rm pytorch-cpp {tutorial-name}
该存储库已获得 MIT 许可,如许可证中所示。