libtorch_cpu arm64 build
ARM64용 LibTorch v2.0.0 CPU-only 빌드 튜토리얼. Amazon Linux 2023에서 의존성 설치, cmake 구성, Lite Interpreter 최적화와 XNNPACK/QNNPACK 활성화, 배포 구조 정리.
아마존 리눅스 2023 aarch64에서 LibTorch v2.0.0을 CPU-only + Lite Interpreter로 빌드한 기록이다. 배포 zip(libtorch-shared-with-deps-…)과 동일한 레이아웃은 cmake --install로 만든다.
대상 환경
- OS: Amazon Linux 2023 (aarch64)
- 인스턴스: c6g, c7g 권장
- c6g: Graviton2, Arm Neoverse N1
- c7g: Graviton3, 더 높은 단일·다중 스레드 성능
- 메모리 16GB 이상, 스왑 8–16GB 확보 권장
버전 고정
- PyTorch/LibTorch: v2.0.0
- Python: 3.8–3.11 중 하나. 여기서는 3.9 사용
빌드 로그(명령)
산출물 구조
DCMAKE_INSTALL_PREFIX="$PWD/out/libtorch"로 설치되며 다음과 같이 정리된다.
기존 CMake 프로젝트는 CMAKE_PREFIX_PATH=/abs/path/to/out/libtorch 지정 후 find_package(Torch REQUIRED)로 그대로 쓴다.
옵션 해설(요지)
DBUILD_PYTHON=OFF
파이썬 패키지 생략. C++ 배포 전용.
DBUILD_LITE_INTERPRETER=ON
모바일 러ntime 경량화. 첫 호출 지연 및 메모리 사용 축소.
DUSE_CUDA/ROCM/MPS/NCCL/DISTRIBUTED=OFF
GPU·분산 비활성. CPU-only 보장.
DUSE_XNNPACK=ON -DUSE_QNNPACK=ON
Arm용 연산 최적화 활성. Android와 유사한 실행 특성.
DUSE_MKLDNN=OFF
Intel oneDNN 비활성. Arm 환경에서 불필요.
DUSE_OPENMP=ON
멀티스레딩 사용.
DBUILD_SHARED_LIBS=ON
공유 라이브러리로 배포.
DCMAKE_INSTALL_RPATH='$ORIGIN/../lib'
실행 시 상대 경로로 lib/를 찾게 함. 배포 편리.
메모
- 첫 추론 지연을 줄이려면 TorchScript +
optimize_for_mobile+ channels_last로 모델을 사전 최적화한 후 사용하면 효과가 크다.
ninja -C build install만으로 배포 zip과 유사한libtorch/레이아웃을 재현한다.
- c7g가 c6g 대비 지연·처리량 모두 유리했다. 예산 허용 시 c7g를 기본값으로 삼는다.