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 dengannvidia-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:
Mengkloning proyek Penayangan TensorFlow
git clone https://github.com/tensorflow/serving cd serving
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 .
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 standartensorflow/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 standartensorflow/serving:latest-gpu
gambar.