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 membuat TensorFlow Serving dengan dukungan GPU, gunakan:

docker pull tensorflow/serving:latest-devel-gpu

Lihat Docker Hub tensorflow / melayani repo untuk versi lain dari gambar Anda dapat menarik.

Contoh pengembangan

Setelah menarik salah satu gambar 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 Melayani diinstal.

  • 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 dibutuhkan untuk membangun TensorFlow Melayani.

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

Membangun wadah dari Dockerfile

Jika Anda ingin membuat image Docker Anda sendiri dari Dockerfile, Anda dapat melakukannya dengan menjalankan perintah build 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 .

TIP: Sebelum mencoba untuk membangun sebuah citra, memeriksa Docker Hub tensorflow / melayani repo memastikan gambar yang memenuhi kebutuhan Anda tidak sudah ada.

Membangun dari sumber menghabiskan banyak RAM. Jika RAM adalah masalah pada sistem Anda, Anda dapat membatasi penggunaan RAM dengan menentukan --local_ram_resources=2048 sementara memohon Bazel. Lihat docs Bazel untuk informasi lebih lanjut. Anda dapat menggunakan mekanisme yang sama ini untuk mengubah pengoptimalan yang Anda gunakan untuk membuat TensorFlow Serving. Sebagai contoh:

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 Dockerfile.devel kontainer.

Untuk menjalankan container yang membuka port gRPC (8500):

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

TIP: Jika Anda menjalankan gambar GPU, pastikan untuk menjalankan 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 dijalankannya. Bergantung pada model yang Anda layani, pengoptimalan lebih lanjut mungkin tidak diperlukan. Namun, membangun biner yang dioptimalkan sangatlah mudah.

Ketika membangun citra Docker dari yang disediakan Dockerfile.devel atau Dockerfile.devel-gpu file, biner ModelServer akan dibangun dengan bendera -march=native . Ini akan menyebabkan Bazel membangun biner ModelServer dengan semua pengoptimalan CPU yang didukung oleh host yang Anda bangun image Docker.

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

  1. Mengkloning proyek Penayangan TensorFlow

    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 dasar

    • Untuk CPU:

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

      Dioptimalkan Docker gambar baru Anda sekarang $USER/tensorflow-serving , yang dapat Anda gunakan seperti yang Anda lakukan standar tensorflow/serving:latest gambar.

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

      Dioptimalkan Docker gambar baru Anda sekarang $USER/tensorflow-serving-gpu , yang dapat Anda gunakan seperti yang Anda lakukan standar tensorflow/serving:latest-gpu gambar.