취미가 좋다
[ Server ] build 본문
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 |