도커로 개발하기

개발 이미지 가져오기

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 바이너리를 빌드합니다.

호스트에 완전히 최적화된 제공 이미지를 만들려면 다음을 수행하십시오.

  1. TensorFlow Serving 프로젝트 복제

    git clone https://github.com/tensorflow/serving
    cd serving
    
  2. 최적화된 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 .
      
  3. 개발 이미지를 기반으로 서빙 이미지 빌드

    • 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 이미지.