HyperAI초신경

TVM 초보자부터 마스터까지 | TVM 설치하기(1부)

特色图像

한눈에 보는 콘텐츠: TVM을 설치하는 방법은 소스 코드에서 설치, Docker 이미지를 사용하여 설치, NNPACK Contrib을 사용하여 설치하는 세 가지가 있습니다. 이 문서에서는 소스 코드를 통해 TVM을 설치하는 방법에 대해 중점적으로 설명합니다.

키워드: TVM 빠른 시작 소스 코드 설치

이전 기사에서 《TVM 중국어 홈페이지가 정식 오픈했습니다!》 머신 러닝 모델 배포에 대한 가장 포괄적인 참고서가 여기에 있습니다.이 글에서는 TVM의 중요한 역할과 TVM 중국어 문서를 사용하여 머신 러닝 컴파일러를 탐색하는 방법을 소개했습니다.

다음으로, 일련의 튜토리얼을 구성하겠습니다. 이 글에서는 TVM의 학습 경로를 초보자부터 숙련자까지 자세히 설명하여 모든 개발자가 훌륭한 머신 러닝 컴파일러 엔지니어가 되기를 바랍니다!

이 기사에서는,"기초 마련"의 핵심 단계인 TVM 설치를 소개해드리겠습니다.

TVM은 세 가지 방법으로 설치할 수 있습니다.

  1. 소스에서 설치
  2. 도커 이미지
  3. NNPACK Contrib 설치

이 문서에서는 설치 튜토리얼(1부)로서 소스 코드에서 설치하는 모범 사례를 자세히 설명합니다. 최대한의 유연성을 가지고 구성하고 컴파일하세요.

소스에서 TVM을 설치하는 방법에 대한 단계별 지침

다양한 시스템에서 0에서 1까지 TVM 패키지를 빌드하고 설치하는 작업은 두 단계로 구성됩니다.

  1. C++ 코드에서 공유 라이브러리 빌드
  • 리눅스: libtvm.so
  • macOS: libtvm.dylib
  • Windows: libtvm.dll

2. 프로그래밍 언어 패키지(예: Python 패키지) 설정

TVM 소스 코드를 다운로드하려면 다음 사이트를 방문하세요.https://tvm.apache.org/download

개발자: GitHub에서 소스 코드를 받으세요

GitHub에서 소스 저장소를 복제할 때 --recursive 옵션을 사용하여 하위 모듈을 복제합니다.

git clone --recursive https://github.com/apache/tvm tvm

Windows 사용자는 Git 셸을 열고 다음 명령을 입력할 수 있습니다.

git submodule init
git submodule update

공유 라이브러리 구축

우리의 목표는 공유 라이브러리를 구축하는 것입니다.

  • 리눅스에서
    대상 라이브러리는 libtvm.so 및 libtvm_runtime.so입니다.
  • MacOS에서
    대상 라이브러리는 libtvm.dylib 및 libtvm_runtime.dylib입니다.
  • 윈도우에서
    대상 라이브러리는 libtvm.dll과 libtvm_runtime.dll입니다.

런타임 라이브러리만 빌드하는 것도 가능합니다.
https://tvm.hyper.ai/docs/how_to/deploy/

티비엠 라이브러리를 구축하기 위한 최소 요구 사항은 다음과 같습니다.

  • C++17을 지원하는 최신 C++ 컴파일러
    GCC 7.1
    클랭 5.0
    애플 클랭 9.3
    비주얼 스튜디오 2019(v16.7)
  • CMake 3.10 이상
  • 모든 기능을 활성화하려면 LLVM으로 TVM 라이브러리를 빌드하는 것이 좋습니다.
  • CUDA를 사용하려면 CUDA 툴킷 버전이 최소 8.0 이상인지 확인하세요.
    참고: 이전 CUDA 버전에서 업그레이드한 후에는 이전 버전을 삭제하고 다시 시작하세요.
  • macOS에서는 Homebrew를 설치하여 종속성의 설치 및 관리를 용이하게 할 수 있습니다.
  • Python: 버전 3.7.X+ 및 3.8.X+를 권장합니다. 버전 3.9.X+는 아직 지원되지 않습니다.

Ubuntu/Debian과 같은 Linux 운영 체제에 이러한 종속성을 설치하려면 터미널에서 다음 명령을 실행하세요.

sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

Intel 또는 M1 칩이 장착된 macOS에 필요한 종속성을 설치하려면 Homebrew를 사용하세요. Homebrew에서 지정한 설치 단계를 따라 이러한 종속성이 올바르게 설치되고 구성되었는지 확인하세요.

brew install gcc git cmake
brew install llvm
brew install python@3.8

cmake를 사용하여 라이브러리를 빌드합니다.

TVM 구성은 config.cmake를 편집하거나 명령줄에 cmake 플래그를 전달하여 수정할 수 있습니다.

  • cmake가 설치되지 않은 경우 다음 공식 웹사이트를 방문하여 최신 버전을 다운로드할 수 있습니다. https://cmake.org/download/
  • 빌드 디렉토리를 만들고 cmake/config.cmake를 복사합니다.
mkdir build
cp cmake/config.cmake build
  • 편집하다 build/config.cmake 사용자 정의 컴파일 옵션
  • macOS용 일부 Xcode 버전의 경우 LDFLAGS를 추가해야 합니다. -lc++abi, 링크 오류를 방지하기 위해
  • 할 것이다 set(USE_CUDA OFF) 변경하다 set(USE_CUDA ON) CUDA 백엔드를 활성화합니다. 빌드하려는 다른 백엔드와 라이브러리(OpenCL, RCOM, METAL, VULKAN...)에도 동일한 작업을 수행합니다.
  • 디버깅을 더 쉽게 하려면 다음을 사용하세요. set(USE_GRAPH_EXECUTOR ON) 그리고 set(USE_PROFILER ON) 내장된 그래프 실행기와 디버깅 기능을 활성화합니다.
  • IR 디버깅을 사용해야 하는 경우 다음을 설정할 수 있습니다. set(USE_RELAY_DEBUG ON), 환경 변수 TVM_LOG_DEBUG를 설정합니다.
  • TVM에는 CPU 코드 생성 도구(Codegen)에 대한 LLVM이 필요합니다. LLVM 빌드를 권장합니다.
  • LLVM으로 빌드하려면 LLVM 4.0 이상이 필요합니다. apt의 기본 LLVM 버전이 4.0보다 낮을 수 있습니다.
  • 소스에서 LLVM을 빌드하는 데는 시간이 오래 걸리므로 LLVM 다운로드 페이지에서 미리 빌드된 버전을 다운로드하는 것이 좋습니다.
    1. 특정 위치에 압축을 풀고 수정하세요 build/config.cmake 추가하려면 set(USE_LLVM /path/to/your/llvm/bin/llvm-config)
    2. 또는 직접 설정 set(USE_LLVM ON)CMake를 사용하여 사용 가능한 LLVM 버전을 검색합니다.
  • LLVM Ubuntu 일일 빌드를 사용할 수도 있습니다.
    apt-package는 llvm-config에 버전 번호를 추가합니다. 예를 들어 LLVM 버전 10을 설치한 경우 다음을 설정합니다. set(USE_LLVM llvm-config-10)
  • PyTorch 사용자 권장 설정 set(USE_LLVM "/path/to/llvm-config --link-static") 그리고 set(HIDE_PRIVATE_SYMBOLS ON) 이는 TVM과 PyTorch에서 사용하는 서로 다른 버전의 LLVM 간에 잠재적인 심볼 충돌을 방지하기 위한 것입니다.
  • 지원되는 일부 플랫폼에서는 Ccache 컴파일러 래퍼가 TVM 빌드 시간을 줄이는 데 도움이 될 수 있습니다. TVM 빌드에서 CCache를 활성화하려면:
    1. Ccache의 마스커레이드 모드. 일반적으로 Ccache 설치 과정에서 활성화됩니다. TVM이 마스커레이드에서 Ccache를 사용하도록 하려면 TVM 빌드 시스템을 구성할 때 적절한 C/C++ 컴파일러 경로를 지정하기만 하면 됩니다. 예를 들어:cmake -DCMAKE_CXX_COMPILER=/usr/lib/ccache/c++ ...
    2. Ccache는 CMake의 C++ 컴파일러 접두사입니다. TVM 빌드 시스템을 구성할 때 CMake 변수 CMAKE_CXX_COMPILER_LAUNCHER를 적절한 값으로 설정합니다. 예를 들어:cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ...
  • TVM 및 관련 라이브러리 빌드:
cd build
cmake ..
make -j4

닌자를 사용하면 빌드 속도를 높일 수 있습니다.

cd build
cmake .. -G Ninja
ninja

TVM의 루트 디렉토리에는 여러 단계를 자동으로 완료할 수 있는 Makefile도 있습니다. 빌드 디렉토리를 생성하고 기본값을 변경합니다. config.cmake 빌드 디렉토리에 복사하고, cmake를 실행하고, make를 실행합니다.

빌드 디렉토리는 환경 변수를 사용하여 설정할 수 있습니다. TVM_BUILD_PATH 지정하다. 만약에 TVM_BUILD_PATH 설정하지 않으면 Makefile은 TVM의 빌드 디렉토리를 사용해야 한다고 가정합니다. 의존하다 TVM_BUILD_PATH 지정된 경로는 절대 경로이거나 TVM 루트 디렉토리에 대한 상대 경로일 수 있습니다. 만약에 TVM_BUILD_PATH 공백으로 구분된 경로 목록으로 설정하면 나열된 모든 경로가 생성됩니다.

다른 빌드 디렉토리를 사용하는 경우 런타임에 환경 변수 TVM_LIBRARY_PATH를 설정하여 컴파일된 디렉토리를 가리켜야 합니다. libtvm.so 그리고 libtvm_runtime.so 위치. 설정하지 않으면 TVM은 TVM Python 모듈을 기준으로 상대적인 위치를 찾습니다. 그리고 TVM_BUILD_PATH 와는 달리, 이것은 절대 경로여야 합니다.

# 在 "build" 目录下构建
make

# 替代位置,"build_debug"
TVM_BUILD_PATH=build_debug make

# 同时构建 "build_release" 和 "build_debug"
TVM_BUILD_PATH="build_debug build_release" make

# 使用调试构建
TVM_LIBRARY_PATH=~/tvm/build_debug python3

모든 것이 잘 진행된다면 Python 패키지 설치를 확인할 수 있습니다.

Conda 환경으로 빌드하기

Conda를 사용하면 TVM을 실행하는 데 필요한 필수 종속성을 얻을 수 있습니다. Conda가 설치되지 않은 경우 다음을 참조하세요. Conda 설치 가이드 Miniconda 또는 Anaconda를 설치하세요. Conda 환경에서 다음 명령을 실행하세요.

# 用 yaml 指定的依赖创建 Conda 环境
conda env create --file conda/build-environment.yaml
# 激活所创建的环境
conda activate tvm-build

위 명령은 CMake, LLVM 등 필요한 모든 빌드 종속성을 설치합니다. 다음으로, 이전 섹션의 표준 빌드 프로세스를 실행할 수 있습니다.

Conda 환경 외부에서 컴파일된 바이너리를 사용하려면 LLVM을 정적 링크 모드로 설정하면 됩니다. set(USE_LLVM "llvm-config --link-static"). 이렇게 하면 생성된 라이브러리가 Conda 환경의 동적 LLVM 라이브러리에 의존하지 않게 됩니다.

위의 내용은 Conda를 사용하여 libtvm을 빌드하는 데 필요한 종속성을 제공하는 방법을 보여줍니다. 이미 Conda를 패키지 관리자로 사용하고 있고 TVM을 Conda 패키지로 직접 빌드하고 설치하려면 아래 지침을 따르세요.

conda build --output-folder=conda/pkg  conda/recipe
# 在启用 CUDA 的情况下运行 conda/build_cuda.sh 来构建
conda install tvm -c ./conda/pkg

Windows에서 빌드

TVM은 MSVC를 통한 CMake 빌드를 지원합니다. Visual Studio 컴파일러가 필요합니다. VS의 최소 버전은 Visual Studio Enterprise 2019입니다.

참고: GitHub Actions에 대한 전체 테스트 세부 정보는 Windows 2019 Runner를 방문하세요.

https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md

필요한 종속성을 확보하고 tvm-build 환경을 활성화하기 위해 Conda 환경을 사용하여 빌드하는 것이 공식적으로 권장됩니다.

다음 명령줄을 실행합니다.

mkdir build
cd build
cmake -A x64 -Thost=x64 ..
cd ..

위 명령은 빌드 디렉토리에 솔루션 파일을 생성합니다. 그런 다음 실행하세요.

cmake --build build --config Release -- /m

ROCm 지원 구축

현재 ROCm은 Linux에서만 지원되므로 모든 튜토리얼은 Linux를 기반으로 작성되었습니다.

  • set(USE_ROCM ON)을 설정하고 ROCM_PATH를 올바른 경로로 설정합니다.
  • 먼저 ROCm에서 HIP 런타임을 설치해야 합니다. 시스템에 ROCm이 설치되어 있는지 확인하세요.
  • LLVM(v6.0.1)의 최신 안정 버전과 LLD를 설치하고, 명령줄에서 ld.lld를 사용할 수 있는지 확인하세요.

Python 패키지 설치

TVM 패키지

이 섹션에서는 virtualenv나 conda와 같은 가상 환경과 패키지 관리자를 사용하여 Python 패키지와 종속성을 관리하는 방법을 소개합니다.
Python 패키지는 tvm/python에 있습니다. 설치 방법은 두 가지가 있습니다.

  • 방법 1

이 방법은 코드를 수정할 수 있는 개발자에게 적합합니다.

Python이 이 라이브러리를 어디에서 찾을지 알려주려면 PYTHONPATH 환경 변수를 설정합니다. 예를 들어, 우리가 다음과 같은 것을 가지고 있다고 가정해 보자. /path/to/tvm 디렉토리에 tvm이 복제되어 있으므로 다음을 수행할 수 있습니다. ~/.bashrc 다음 코드를 추가합니다. 이렇게 하면 설치 프로그램을 다시 호출하지 않고도 코드를 끌어와서 프로젝트를 다시 빌드할 수 있으며 변경 사항이 즉시 반영됩니다.

export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
  • 방법 2

setup.py를 통해 TVM의 Python 바인딩을 설치하세요:

# 为当前用户安装 TVM 软件包
# 注意:如果你通过 homebrew 安装了 Python,那么在安装过程中就不需要 --user
#        它将被自动安装到你的用户目录下。
#        在这种情况下,提供 --user 标志可能会在安装时引发错误。
export MACOSX_DEPLOYMENT_TARGET=10.9  # 这是 mac 所需要的,以避免与 libstdc++ 的符号冲突
cd python; python setup.py install --user; cd ..

파이썬 종속성

관리되는 로컬 환경(예: )에 설치하려는 경우 다음을 참고하세요. virtualenv, 그럼 필요 없어요 --user 심벌 마크.

  • 필요한 종속성:
pip3 install --user numpy decorator attrs
  • RPC 추적기 사용
pip3 install --user tornado
  • 자동 튜닝 모듈 사용
pip3 install --user tornado psutil xgboost cloudpickle

참고: M1 칩이 있는 Mac에서는 다음을 설치하세요. xgboost / scipy 문제가 발생할 수도 있습니다. Scipy와 xgboost를 사용하려면 openblas 등의 추가 종속성을 설치해야 합니다. 다음 명령줄을 실행하여 scipy와 xgboost를 설치하고, 필요한 종속성과 구성도 설치합니다.

brew install openblas gfortran

pip install pybind11 cython pythran

export OPENBLAS=/opt/homebrew/opt/openblas/lib/

pip install scipy --no-use-pep517

pip install xgboost

Contrib 라이브러리 설치

NNPACK Contrib 설치, 보기
https://tvm.hyper.ai/docs/install/nnpack

C++ 테스트 활성화

Google Test를 사용하면 TVM에서 C++ 테스트를 실행할 수 있습니다. Google Test를 설치하는 가장 쉬운 방법은 소스에서 설치하는 것입니다.

git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install

성공적으로 설치한 후 사용할 수 있습니다. ./tests/scripts/task_cpp_unittest.sh C++ 테스트를 빌드하고 시작하거나 직접 make cpptest 짓다.

TVM 설치 1부에 대한 튜토리얼은 여기까지입니다.2부에서는 Docker 이미지 설치와 NNPACK Contrib 설치라는 두 가지 다른 TVM 설치 방법에 대해 계속 설명하겠습니다.

모두가 계속 주의를 기울여 주시기를 바랍니다. tvm.hyper.aiTVM 중국어의 가장 뛰어난 개발에 대해 알아보세요!

-- 위에--