• 文档 >
  • 安装 PyTorch 的 C++ 发行版
快捷方式

安装 PyTorch 的 C++ 发行版

我们提供所有头文件、库和 CMake 配置文件的二进制发行版,这些文件需要依赖 PyTorch。我们称此发行版为LibTorch,您可以在我们的网站上下载包含最新 LibTorch 发行版的 ZIP 存档。下面是一个编写最小应用程序的示例,该应用程序依赖于 LibTorch 并使用torch::Tensor类,该类随 PyTorch C++ API 提供。

最小示例

第一步是通过上面的链接下载 LibTorch ZIP 存档。例如

wget https://download.pytorch.org/libtorch/nightly/cpu/libtorch-shared-with-deps-latest.zip
unzip libtorch-shared-with-deps-latest.zip

请注意,上面的链接是 CPU 专用的 libtorch。如果您想下载支持 GPU 的 libtorch,请在https://pytorch.ac.cn上的链接选择器中找到正确的链接

如果您是 Windows 开发人员,并且不想使用 CMake,则可以跳到 Visual Studio 扩展部分。

接下来,我们可以编写一个最小的 CMake 构建配置来开发一个依赖于 LibTorch 的小型应用程序。CMake 不是使用 LibTorch 的硬性要求,但它是推荐和经过认可的构建系统,并且将在将来得到很好的支持。最基本的 CMakeLists.txt 文件可能如下所示

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(example-app)

find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 17)

# The following code block is suggested to be used on Windows.
# According to https://github.com/pytorch/pytorch/issues/25457,
# the DLLs need to be copied to avoid memory errors.
if (MSVC)
  file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
  add_custom_command(TARGET example-app
                     POST_BUILD
                     COMMAND ${CMAKE_COMMAND} -E copy_if_different
                     ${TORCH_DLLS}
                     $<TARGET_FILE_DIR:example-app>)
endif (MSVC)

我们示例的实现将创建一个新的 torch::Tensor 并打印它

#include <torch/torch.h>
#include <iostream>

int main() {
  torch::Tensor tensor = torch::rand({2, 3});
  std::cout << tensor << std::endl;
}

虽然您可以包含更多细粒度的头文件来仅访问 PyTorch C++ API 的部分内容,但包含 torch/torch.h 是包含其大部分功能的最可靠方法。

最后一步是构建应用程序。为此,假设我们的示例目录结构如下

example-app/
  CMakeLists.txt
  example-app.cpp

我们现在可以运行以下命令从 example-app/ 文件夹中构建应用程序

mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch ..
cmake --build . --config Release

其中 /absolute/path/to/libtorch 应该是解压缩的 LibTorch 发行版的绝对 (!) 路径。如果 PyTorch 是通过 conda 或 pip 安装的,则可以使用 torch.utils.cmake_prefix_path 变量查询 CMAKE_PREFIX_PATH。在这种情况下,CMake 配置步骤如下所示

cmake -DCMAKE_PREFIX_PATH=`python3 -c 'import torch;print(torch.utils.cmake_prefix_path)'` ..

如果一切顺利,它将看起来像这样

root@4b5a67132e81:/example-app# mkdir build
root@4b5a67132e81:/example-app# cd build
root@4b5a67132e81:/example-app/build# cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /example-app/build
root@4b5a67132e81:/example-app/build# cmake --build . --config Release
Scanning dependencies of target example-app
[ 50%] Building CXX object CMakeFiles/example-app.dir/example-app.cpp.o
[100%] Linking CXX executable example-app
[100%] Built target example-app

执行位于 build 文件夹中的生成的 example-app 二进制文件现在应该会愉快地打印张量(确切的输出取决于随机性)

root@4b5a67132e81:/example-app/build# ./example-app
0.2063  0.6593  0.0866
0.0796  0.5841  0.1569
[ Variable[CPUFloatType]{2,3} ]

提示

在 Windows 上,调试和发布构建在 ABI 上不兼容。如果您计划以调试模式构建项目,请尝试 LibTorch 的调试版本。此外,请确保您在上面的 cmake --build . 行中指定了正确的配置。

系统要求

为了确保顺利安装和使用 LibTorch,请确保您的系统满足以下要求

  1. GLIBC 版本:

  • cxx11 ABI 版本需要 GLIBC 2.29 或更高版本

  • cxx11 之前的 ABI 版本需要 GLIBC 2.17 或更高版本

  1. GCC 版本:

  • cxx11 和 cxx11 之前的 ABI 版本需要 GCC 9 或更高版本

Visual Studio 扩展

LibTorch 项目模板 可以帮助 Windows 开发人员设置所有 libtorch 项目设置和链接选项以进行调试和发布。它易于使用,您可以查看演示视频。唯一的先决条件是在https://pytorch.ac.cn上下载 libtorch

支持

如果您在安装和最小使用指南中遇到任何问题,请使用我们的论坛GitHub 问题与我们联系。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得解答

查看资源