Phát triển với Docker
Kéo một hình ảnh phát triển
Đối với một môi trường phát triển nơi bạn có thể xây dựng Phục vụ TensorFlow, bạn có thể thử:
docker pull tensorflow/serving:latest-devel
Đối với môi trường phát triển nơi bạn có thể xây dựng Cung cấp TensorFlow với hỗ trợ GPU, hãy sử dụng:
docker pull tensorflow/serving:latest-devel-gpu
Xem Docker Hub tensorflow / phục vụ repo cho các phiên bản khác của hình ảnh mà bạn có thể kéo.
Ví dụ phát triển
Sau khi kéo một trong các hình ảnh Docker phát triển, bạn có thể chạy nó trong khi mở cổng gRPC (8500):
docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel
Kiểm tra môi trường phát triển
Để kiểm tra một mô hình, hãy thử từ bên trong thùng chứa:
# 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
Dockerfiles
Chúng tôi hiện đang duy trì các tệp Dockerfiles sau:
Dockerfile
, mà là một VM tối thiểu với TensorFlow phục vụ cài đặt.Dockerfile.gpu
, mà là một VM tối thiểu với TensorFlow Phục vụ với sự hỗ trợ GPU được sử dụng vớinvidia-docker
.Dockerfile.devel
, mà là một VM gọn gàng cùng với tất cả các phụ thuộc cần thiết để xây dựng TensorFlow Phục vụ.Dockerfile.devel-gpu
, mà là một VM gọn gàng cùng với tất cả các phụ thuộc cần thiết để xây dựng TensorFlow Phục vụ với sự hỗ trợ GPU.
Xây dựng vùng chứa từ Dockerfile
Nếu bạn muốn tạo hình ảnh Docker của riêng mình từ Dockerfile, bạn có thể làm như vậy bằng cách chạy lệnh xây dựng 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: Trước khi cố gắng để xây dựng một hình ảnh, đánh dấu vào Docker Hub tensorflow / phục vụ repo để đảm bảo một hình ảnh mà đáp ứng nhu cầu của bạn không tồn tại.
Xây dựng từ các nguồn tiêu tốn rất nhiều RAM. Nếu RAM là một vấn đề trên hệ thống của bạn, bạn có thể hạn chế việc sử dụng RAM bằng cách xác định --local_ram_resources=2048
khi gọi Bazel. Xem các tài liệu Bazel để biết thêm thông tin. Bạn có thể sử dụng cơ chế tương tự này để điều chỉnh các lựa chọn mà bạn đang xây dựng TensorFlow Serving. Ví dụ:
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 .
Chạy một container
Điều này giả định bạn đã xây dựng các Dockerfile.devel
container.
Để chạy vùng chứa, mở cổng gRPC (8500):
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
MẸO: Nếu bạn đang chạy một hình ảnh GPU, hãy chắc chắn để chạy bằng cách sử dụng NVIDIA runtime --runtime=nvidia
.
Từ đây, bạn có thể làm theo các hướng dẫn để thử nghiệm một môi trường phát triển .
Xây dựng một tệp nhị phân phục vụ được tối ưu hóa
Khi chạy ModelServer của TensorFlow Serving, bạn có thể nhận thấy một thông báo nhật ký giống như sau:
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
Điều này cho thấy rằng tệp nhị phân ModelServer của bạn không được tối ưu hóa hoàn toàn cho CPU mà nó đang chạy. Tùy thuộc vào kiểu máy bạn đang phục vụ, có thể không cần thiết phải tối ưu hóa thêm. Tuy nhiên, việc xây dựng một hệ nhị phân được tối ưu hóa là điều dễ hiểu.
Khi xây dựng một hình ảnh Docker từ cung cấp Dockerfile.devel
hoặc Dockerfile.devel-gpu
file, nhị phân ModelServer sẽ được xây dựng với cờ -march=native
. Điều này sẽ khiến Bazel xây dựng tệp nhị phân ModelServer với tất cả các tối ưu hóa CPU mà máy chủ lưu trữ mà bạn đang xây dựng hình ảnh Docker trên các hỗ trợ.
Để tạo hình ảnh phục vụ được tối ưu hóa hoàn toàn cho máy chủ của bạn, chỉ cần:
Sao chép dự án Cung cấp TensorFlow
git clone https://github.com/tensorflow/serving cd serving
Xây dựng hình ảnh với ModelServer được tối ưu hóa
Đối với CPU:
docker build --pull -t $USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile.devel .
Đối với GPU: `
docker build --pull -t $USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
Xây dựng hình ảnh phục vụ với hình ảnh phát triển làm cơ sở
Đối với CPU:
docker build -t $USER/tensorflow-serving \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile .
Hình ảnh Docker tối ưu hóa mới của bạn bây giờ là
$USER/tensorflow-serving
, mà bạn có thể sử dụng giống như bạn chuẩntensorflow/serving:latest
hình ảnh.Đối với 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 .
Hình ảnh Docker tối ưu hóa mới của bạn bây giờ là
$USER/tensorflow-serving-gpu
, mà bạn có thể sử dụng giống như bạn chuẩntensorflow/serving:latest-gpu
hình ảnh.