취미가 좋다

[ Server ] build 본문

Data Engineer/triton inference server

[ Server ] build

benlee73 2021. 6. 28. 20:52

https://github.com/triton-inference-server/server/blob/main/docs/build.md

 

Building Triton

이 글은 어떻게 triton 서버를 빌드하는 지 설명한다.

build.py 를 사용하여 ubuntu 20.04, Jetpack 4.x, Windows 10 위에서 빌드할 수 있다.

 

Building for Unbuntu 20.04

Building with Docker

triton을 빌드하는 가장 쉬운 방법은 도커를 사용하는 방법이다.

빌드 결과로 나오는 도커 이미지는 tritonserver 라는 이름을 갖는다.

이 이미지는 /opt/tritonserver/bin 에 있는 tritonserver 실행파일과, /opt/tritonserver/lib 에 있는 공유 라이브러리를 포함한다.

 

가장 먼저 빌드를 원하는 release의 tirton-inference-server/server repo branch를 확인하는 것이다.

그리고 아래의 코드로 build.py 를 실행한다.

 

build.py scripts 는 도커로 빌드할 때, 아래의 과정을 수행한다.

 

  • NGC(Nvidia Gpu Cloud)에서 적절한 <xx.yy>-py3-min 이미지를 가져온다. 여기서 min 이미지는 CUDA, cuDNN, TensorRT, 이외 triton을 빌드하기 위한 여러 dependencies를 포함하는 minimal/base 이미지이다. (여기서 min image란 위에서 받은 최대한 작도록 필요한 것만 들어있는 이미지가 아닐까)
  • min image 에 추가적인 build dependencies를 더해서 tritonserver_buildbase 라는 도커 이미지를 생성한다.
  • triton을 빌드하기 위해서 tritonserver_buildbase 이미지 내에서 build.py 를 실행시킨다. 그 결과로 triton artifacts 를 포함하는tritonserver_build 이미지가 생성된다.
  • 적절한 라이브러리, 실행 가능 파일, tritonserver_build 의 artifacts 를 추출하여 tritonserver 도커 이미지를 생성한다.

 

요약하자면, min 이미지 → tritonserver_buildbase → tritonserver_build → tritonserver

단계로 이미지가 생성된다.

 

기본적으로, build.py 는 triton 의 optional feature를 실행하지 않으므로, 직접 명시해야한다.

아래의 코드는 모든 기능, backends, repository agents 를 모두 빌드한다.

$ ./build.py --cmake-dir=<path/to/repo>/build \
	    --build-dir=/tmp/citritonbuild \
            --enable-logging \
            --enable-stats \
            --enable-tracing \
            --enable-metrics \
            --enable-gpu-metrics \
            --enable-gpu \
            --filesystem=gcs \
            --filesystem=azure_storage \
            --filesystem=s3 \
            --endpoint=http \
            --endpoint=grpc \
            --repo-tag=common:<container tag> \
            --repo-tag=core:<container tag> \
            --repo-tag=backend:<container tag> \
            --repo-tag=thirdparty:<container tag> \
            --backend=ensemble \
            --backend=tensorrt \
            --backend=identity:<container tag> \
            --backend=repeat:<container tag> \
            --backend=square:<container tag> \
            --backend=onnxruntime:<container tag> \
            --backend=pytorch:<container tag> \
            --backend=tensorflow1:<container tag> \
            --backend=tensorflow2:<container tag> \
            --backend=openvino:<container tag> \
            --backend=python:<container tag> \
            --backend=dali:<container tag> \
            --backend=fil:<container tag> \
            --repoagent=checksum:<container tag>

 

만약 master/main branch 에서 빌드했다면, <container tag> 는 기본적으로 "main"으로 설정된다.

만약 release branch 에서 빌드했다면, <container tag> 는 branch name으로 설정된다.

 

'Data Engineer > triton inference server' 카테고리의 다른 글

[ Server ] Quickstart  (0) 2021.06.29
[ Server ] Inference protocols  (0) 2021.06.28
[ Server ] Model Analyzer  (0) 2021.06.28
Triton Inference Server Backend  (0) 2021.06.24
[ Server ] Trace  (0) 2021.06.24
Comments