Docker ile Geliştirme
Bir geliştirme görüntüsünün çekilmesi
TensorFlow Hizmetini oluşturabileceğiniz bir geliştirme ortamı için şunları deneyebilirsiniz:
docker pull tensorflow/serving:latest-devel
GPU desteğiyle TensorFlow Hizmetini oluşturabileceğiniz bir geliştirme ortamı için şunu kullanın:
docker pull tensorflow/serving:latest-devel-gpu
Çekebileceğiniz diğer görüntü sürümleri için Docker Hub tensor akışı/sunum deposuna bakın.
Geliştirme örneği
Geliştirme Docker görüntülerinden birini çektikten sonra, bunu gRPC bağlantı noktasını (8500) açarken çalıştırabilirsiniz:
docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel
Geliştirme ortamını test etme
Bir modeli test etmek için kabın içinden şunları deneyin:
# 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
Docker dosyaları
Şu anda aşağıdaki Docker dosyalarının bakımını yapıyoruz:
TensorFlow Serving'in yüklü olduğu minimal bir VM olan
Dockerfile
.nvidia-docker
ile kullanılmak üzere GPU desteğine sahip TensorFlow Hizmetine sahip minimal bir VM olanDockerfile.gpu
.TensorFlow Hizmetini oluşturmak için gereken tüm bağımlılıklara sahip minimum bir VM olan
Dockerfile.devel
.GPU desteğiyle TensorFlow Sunumu oluşturmak için gereken tüm bağımlılıklara sahip minimum bir VM olan
Dockerfile.devel-gpu
.
Dockerfile'dan konteyner oluşturma
Bir Docker dosyasından kendi Docker görüntünüzü oluşturmak istiyorsanız bunu Docker build komutunu çalıştırarak yapabilirsiniz:
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 .
İPUCU: Bir görüntü oluşturmaya çalışmadan önce, ihtiyaçlarınızı karşılayan bir görüntünün halihazırda mevcut olmadığından emin olmak için Docker Hub tensor akışını/sunum deposunu kontrol edin.
Kaynaklardan derlemek çok fazla RAM tüketir. Sisteminizde RAM sorunu varsa Bazel'i çağırırken --local_ram_resources=2048
belirterek RAM kullanımını sınırlayabilirsiniz. Daha fazla bilgi için Bazel belgelerine bakın. TensorFlow Hizmetini oluşturduğunuz optimizasyonlarda ince ayar yapmak için aynı mekanizmayı kullanabilirsiniz. Örneğin:
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 .
Bir konteyneri çalıştırma
Bu, Dockerfile.devel
kapsayıcısını oluşturduğunuzu varsayar.
GRPC bağlantı noktasını (8500) açan kapsayıcıyı çalıştırmak için:
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
İPUCU: Bir GPU görüntüsü çalıştırıyorsanız, NVIDIA runtime --runtime=nvidia
komutunu kullanarak çalıştırdığınızdan emin olun.
Buradan bir geliştirme ortamını test etmeye yönelik talimatları takip edebilirsiniz.
Optimize edilmiş bir sunum ikili programı oluşturma
TensorFlow Serving'in ModelServer'ını çalıştırırken şuna benzeyen bir günlük mesajı görebilirsiniz:
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
Bu, ModelServer ikili dosyanızın üzerinde çalıştığı CPU için tam olarak optimize edilmediğini gösterir. Sunduğunuz modele bağlı olarak daha fazla optimizasyon gerekli olmayabilir. Ancak optimize edilmiş bir ikili dosya oluşturmak basittir.
Sağlanan Dockerfile.devel
veya Dockerfile.devel-gpu
dosyalarından bir Docker görüntüsü oluştururken, ModelServer ikili dosyası -march=native
bayrağıyla oluşturulacaktır. Bu, Bazel'in, Docker görüntüsünü oluşturduğunuz ana bilgisayarın desteklediği tüm CPU optimizasyonlarını içeren bir ModelServer ikili dosyası oluşturmasına neden olacaktır.
Barındırıcınız için tamamen optimize edilmiş bir sunum görüntüsü oluşturmak için şunları yapmanız yeterlidir:
TensorFlow Serving projesini klonlayın
git clone https://github.com/tensorflow/serving cd serving
Optimize edilmiş bir ModelServer ile bir görüntü oluşturun
CPU için:
docker build --pull -t $USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile.devel .
GPU için: `
docker build --pull -t $USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
Geliştirme görselini temel alarak bir sunum görseli oluşturun
CPU için:
docker build -t $USER/tensorflow-serving \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile .
Optimize edilmiş yeni Docker görüntünüz artık
$USER/tensorflow-serving
oldu ve bunu standarttensorflow/serving:latest
görüntüsünde olduğu gibi kullanabilirsiniz .GPU için:
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 .
Optimize edilmiş yeni Docker görüntünüz artık
$USER/tensorflow-serving-gpu
oldu ve bunu standarttensorflow/serving:latest-gpu
görüntüsünde olduğu gibi kullanabilirsiniz .