빠른 요약 - 공홈에서 다운받지 말고 직접 빌드하자
Pytorch 공식 홈페이지에서 제공하는 LibTorch 라이브러리 2.0.0 버전을 다운받아 LibTorch를 사용하고자 시도하였다.
https://pytorch.org/get-started/locally/
다운받은 zip 압축파일을 풀고 나온 libtorch
폴더를 적당한 곳에 위치시키자.
그리고 파이토치 공식 홈페이지에서 다운받은 LibTorch 라이브러리를 사용하여 파이토치 공식 문서가 설명하는대로 바이너리 파일을 빌드하고자 하면 무슨 일이 일어날까?
아래 코드는 전부 파이토치 공식 문서에 있는 것들을 수정한 것이다.
https://pytorch.org/cppdocs/installing.html
# CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(example-app)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
add_executable(example-app src/main.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)
# 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.
# mac 유저는 이 부분은 신경쓰지 않아도 된다
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)
// src/main.cpp
#include <torch/torch.h>
#include <iostream>
int main() {
// MPS Backend
torch::Tensor tensor = torch::rand({2, 3},torch::TensorOptions().device(torch::kMPS));
std::cout << tensor << std::endl;
}
- libtorch-example
⌞ CMakeLists.txt
⌞ src
⌞ main.cpp
libtorch-example
디렉토리에서 터미널로 다음 명령어를 입력하면..
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/당신이/다운받은/라이브러리/폴더를/둔/절대경로/libtorch ..
cmake --build . --config Release
빌드에 실패한다
왜냐하면 파이토치 공식 설치 페이지 에서 다운받은 놈은 x86-64로 빌드된 라이브러리이기 때문이다. arm64 빌드는 따로 제공하지 않는다. 굳이 맥북으로 파이토치를 쓰는 인간도 많이 없을텐데, 거기서 또 굳이 굳이 굳이 LibTorch를 쓰는 인간이 얼마나 적은지 새삼 알 수 있는 지표가 아닐까?
라이브러리를 직접 빌드하자.
pytorch github 레포지토리의 다음 문서를 참고해서 자신의 Apple Silicon 기기에서 직접 빌드하면 된다.
https://github.com/pytorch/pytorch/blob/master/docs/libtorch.rst
git clone -b v2.0.0 --recurse-submodule https://github.com/pytorch/pytorch.git
mkdir pytorch-build
cd pytorch-build
cmake -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch
cmake --build . --parallel 4 --target install
-b
(--branch
) option에 원하는 배포 버전 태그명을 넣자.
cmake --build
의 --parallel
option은 기기 코어수를 고려하여 적당히 설정하자.
빌드가 완료되면 pytorch-install
폴더가 생성될 것이다.
CMAKE_PREFIX_PATH
만 pytorch-install
로 바꾼 위 명령어를 다시 실행해보자.
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/빌드로/생성된/pytorch-install ..
cmake --build . --config Release
CMAKE_PREFIX_PATH
에 절대 경로를 집어넣는것을 유의하자.
빌드된 결과물을 실행해보면
일단 실행은 된다.