安裝 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.dev.org.tw 上的連結選擇器中找到正確的連結
如果您是 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
二進位檔現在應該會愉快地列印 tensor(確切的輸出可能會因隨機性而異)
root@4b5a67132e81:/example-app/build# ./example-app
0.2063 0.6593 0.0866
0.0796 0.5841 0.1569
[ Variable[CPUFloatType]{2,3} ]
提示
在 Windows 上,偵錯 (debug) 版本和發行 (release) 版本不具有 ABI 相容性。 如果您計劃在偵錯模式下建置您的專案,請嘗試偵錯版本的 LibTorch。 此外,請確保您在上面的 cmake --build .
行中指定正確的配置。
系統需求¶
為了確保 LibTorch 的順利安裝和使用,請確保您的系統符合以下要求
GLIBC 版本:
GLIBC 2.29 或更新版本,適用於 cxx11 ABI 版本
GLIBC 2.17 或更新版本,適用於 pre-cxx11 ABI 版本
GCC 版本:
GCC 9 或更新版本,適用於 cxx11 和 pre-cxx11 ABI 版本
Visual Studio 擴充功能¶
LibTorch 專案範本 可以幫助 Windows 開發者設定所有 libtorch 專案設定,以及偵錯和發佈版本的連結選項。它很容易使用,您可以觀看示範影片。唯一的前提是從 https://pytorch.dev.org.tw 下載 libtorch。
支援¶
如果您在使用此安裝和最小使用指南時遇到任何問題,請使用我們的論壇或GitHub Issues與我們聯繫。