도커로 개발하기
개발 이미지 가져오기
TensorFlow Serving을 구축할 수 있는 개발 환경의 경우 다음을 시도할 수 있습니다.
docker pull tensorflow/serving:latest-devel
GPU 지원으로 TensorFlow Serving을 빌드할 수 있는 개발 환경의 경우 다음을 사용하세요.
docker pull tensorflow/serving:latest-devel-gpu
도커 허브를 참조하십시오 tensorflow / 봉사의 repo 당길 수있는 이미지의 다른 버전을.
개발 사례
개발 Docker 이미지 중 하나를 가져온 후 gRPC 포트(8500)를 여는 동안 실행할 수 있습니다.
docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel
개발 환경 테스트
모델을 테스트하려면 컨테이너 내부에서 다음을 시도하세요.
# train the mnist model
python tensorflow_serving/example/mnist_saved_model.py /tmp/mnist_model
# serve the model
tensorflow_model_server --port=8500 --model_name=mnist --model_base_path=/tmp/mnist_model/ &
# test the client
python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=localhost:8500
도커파일
현재 다음 Dockerfile을 유지 관리합니다.
Dockerfile
TensorFlow와 최소한의 VM입니다, 설치 봉사.Dockerfile.gpu
TensorFlow는 GPU 지원 봉사와 최소한의 VM을하고, 함께 사용되는nvidia-docker
.Dockerfile.devel
봉사 TensorFlow 빌드에 필요한 모든 종속성과 최소한의 VM입니다.Dockerfile.devel-gpu
GPU 지원과 함께 봉사 TensorFlow 빌드에 필요한 모든 종속성과 최소한의 VM입니다.
Dockerfile에서 컨테이너 빌드
Dockerfile에서 고유한 Docker 이미지를 빌드하려면 Docker 빌드 명령을 실행하면 됩니다.
Dockerfile
:
docker build --pull -t $USER/tensorflow-serving .
Dockerfile.gpu
:
docker build --pull -t $USER/tensorflow-serving-gpu -f Dockerfile.gpu .
Dockerfile.devel
:
docker build --pull -t $USER/tensorflow-serving-devel -f Dockerfile.devel .
Dockerfile.devel-gpu
:
docker build --pull -t $USER/tensorflow-serving-devel-gpu -f Dockerfile.devel-gpu .
팁 : 이미지를 구축하기 전에, 부두 노동자 허브 확인 REPO를 제공 / tensorflow을 확인 이미 존재하지 않는 사용자의 요구를 충족하는 이미지를 만들 수 있습니다.
소스에서 빌드하면 많은 RAM이 소모됩니다. RAM은 시스템에 문제가있는 경우, 당신은 지정하여 RAM 사용을 제한 할 수 --local_ram_resources=2048
Bazel를 호출하는 동안. 참고 항목 Bazel의 문서를 자세한 내용은. 이와 동일한 메커니즘을 사용하여 TensorFlow Serving을 구축하는 데 사용하는 최적화를 조정할 수 있습니다. 예를 들어:
docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS="--copt=-mavx \
--cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 --local_ram_resources=2048" -t \
$USER/tensorflow-serving-devel -f Dockerfile.devel .
컨테이너 실행
이것은 당신이 구축 한 가정 Dockerfile.devel
컨테이너를.
gRPC 포트(8500)를 여는 컨테이너를 실행하려면:
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
TIP : 당신이 GPU 이미지를 실행하는 경우, NVIDIA 런타임 사용하여 실행해야합니다 --runtime=nvidia
.
여기에서의 지침에 따를 수 있습니다 개발 환경 테스트를 .
최적화된 제공 바이너리 빌드
TensorFlow Serving의 ModelServer를 실행할 때 다음과 같은 로그 메시지를 볼 수 있습니다.
I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:141]
Your CPU supports instructions that this TensorFlow binary was not compiled to
use: AVX2 FMA
이는 ModelServer 바이너리가 실행 중인 CPU에 대해 완전히 최적화되지 않았음을 나타냅니다. 제공하는 모델에 따라 추가 최적화가 필요하지 않을 수 있습니다. 그러나 최적화된 바이너리를 빌드하는 것은 간단합니다.
제공된에서 도커 이미지를 구축 할 때 Dockerfile.devel
또는 Dockerfile.devel-gpu
파일의 ModelServer 바이너리는 플래그와 함께 건설 될 예정 -march=native
. 이렇게 하면 지원에 Docker 이미지를 빌드하는 호스트의 모든 CPU 최적화를 사용하여 Bazel이 ModelServer 바이너리를 빌드합니다.
호스트에 완전히 최적화된 제공 이미지를 만들려면 다음을 수행하십시오.
TensorFlow Serving 프로젝트 복제
git clone https://github.com/tensorflow/serving cd serving
최적화된 ModelServer로 이미지 빌드
CPU의 경우:
docker build --pull -t $USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile.devel .
GPU의 경우: `
docker build --pull -t $USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
개발 이미지를 기반으로 서빙 이미지 빌드
CPU의 경우:
docker build -t $USER/tensorflow-serving \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile .
새 최적화 도커 이미지는 지금
$USER/tensorflow-serving
당신이 할 수있는, 사용 당신 것 표준으로tensorflow/serving:latest
이미지.GPU의 경우:
docker build -t $USER/tensorflow-serving-gpu \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.gpu .
새 최적화 도커 이미지는 지금
$USER/tensorflow-serving-gpu
수행 할 수 있습니다, 사용 당신이하고자 기준으로tensorflow/serving:latest-gpu
이미지.