Berkembang dengan Docker

Menarik gambar pengembangan

Untuk lingkungan pengembangan tempat Anda dapat membuat TensorFlow Serving, Anda dapat mencoba:

docker pull tensorflow/serving:latest-devel

Untuk lingkungan pengembangan tempat Anda dapat membangun TensorFlow Serving dengan dukungan GPU, gunakan:

docker pull tensorflow/serving:latest-devel-gpu

Lihat repo tensorflow/serving Docker Hub untuk versi gambar lain yang dapat Anda tarik.

Contoh pembangunan

Setelah menarik salah satu image Docker pengembangan, Anda dapat menjalankannya sambil membuka port gRPC (8500):

docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel

Menguji lingkungan pengembangan

Untuk menguji model, dari dalam wadah coba:

# 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

File Docker

Saat ini kami memelihara Dockerfiles berikut:

  • Dockerfile , yang merupakan VM minimal dengan TensorFlow Serving terinstal.

  • Dockerfile.gpu , yang merupakan VM minimal dengan TensorFlow Melayani dengan dukungan GPU untuk digunakan dengan nvidia-docker .

  • Dockerfile.devel , yang merupakan VM minimal dengan semua dependensi yang diperlukan untuk membangun TensorFlow Serving.

  • Dockerfile.devel-gpu , yang merupakan VM minimal dengan semua dependensi yang diperlukan untuk membangun TensorFlow Serving dengan dukungan GPU.

Membangun wadah dari Dockerfile

Jika Anda ingin membuat image Docker Anda sendiri dari Dockerfile, Anda dapat melakukannya dengan menjalankan perintah Docker build:

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 .

TIPS: Sebelum mencoba membuat image, periksa repo tensorflow/serving Docker Hub untuk memastikan image yang memenuhi kebutuhan Anda belum ada.

Membangun dari sumber menghabiskan banyak RAM. Jika RAM merupakan masalah pada sistem Anda, Anda dapat membatasi penggunaan RAM dengan menentukan --local_ram_resources=2048 saat menjalankan Bazel. Lihat dokumen Bazel untuk informasi lebih lanjut. Anda dapat menggunakan mekanisme yang sama untuk menyesuaikan pengoptimalan yang Anda gunakan untuk membuat TensorFlow Serving. Misalnya:

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 .

Menjalankan wadah

Ini mengasumsikan Anda telah membangun wadah Dockerfile.devel .

Untuk menjalankan container dengan membuka port gRPC (8500):

docker run -it -p 8500:8500 $USER/tensorflow-serving-devel

TIPS: Jika Anda menjalankan image GPU, pastikan untuk menjalankannya menggunakan NVIDIA runtime --runtime=nvidia .

Dari sini, Anda dapat mengikuti petunjuk untuk menguji lingkungan pengembangan .

Membangun biner penyajian yang dioptimalkan

Saat menjalankan ModelServer TensorFlow Serving, Anda mungkin melihat pesan log yang terlihat seperti ini:

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

Ini menunjukkan bahwa biner ModelServer Anda tidak sepenuhnya dioptimalkan untuk CPU yang menjalankannya. Bergantung pada model yang Anda layani, pengoptimalan lebih lanjut mungkin tidak diperlukan. Namun, membangun biner yang dioptimalkan sangatlah mudah.

Saat membuat image Docker dari Dockerfile.devel atau Dockerfile.devel-gpu yang disediakan, biner ModelServer akan dibuat dengan flag -march=native . Hal ini akan menyebabkan Bazel membangun biner ModelServer dengan semua optimasi CPU yang didukung oleh host tempat Anda membangun image Docker.

Untuk membuat gambar penayangan yang sepenuhnya dioptimalkan untuk host Anda, cukup:

  1. Mengkloning proyek TensorFlow Serving

    git clone https://github.com/tensorflow/serving
    cd serving
    
  2. Bangun gambar dengan ModelServer yang dioptimalkan

    • Untuk CPU:

      docker build --pull -t $USER/tensorflow-serving-devel \
        -f tensorflow_serving/tools/docker/Dockerfile.devel .
      
    • Untuk GPU: `

      docker build --pull -t $USER/tensorflow-serving-devel-gpu \
        -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
      
  3. Bangun citra penyajian dengan citra pengembangan sebagai dasarnya

    • Untuk CPU:

      docker build -t $USER/tensorflow-serving \
        --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \
        -f tensorflow_serving/tools/docker/Dockerfile .
      

      Gambar Docker baru Anda yang dioptimalkan sekarang menjadi $USER/tensorflow-serving , yang dapat Anda gunakan seperti yang Anda gunakan pada gambar tensorflow/serving:latest standar.

    • Untuk 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 .
      

      Gambar Docker baru Anda yang dioptimalkan sekarang menjadi $USER/tensorflow-serving-gpu , yang dapat Anda gunakan sama seperti gambar tensorflow/serving:latest-gpu standar.