Phát triển với Docker
Kéo hình ảnh phát triển
Đối với môi trường phát triển nơi bạn có thể xây dựng Dịch 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 Dịch vụ TensorFlow có hỗ trợ GPU, hãy sử dụng:
docker pull tensorflow/serving:latest-devel-gpu
Xem kho lưu trữ tensorflow/phục vụ của Docker Hub để biết các phiên bản hình ảnh khác mà bạn có thể kéo.
Ví dụ phát triển
Sau khi lấy một trong các image 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, từ bên trong vùng chứa, hãy thử:
# 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 Dockerfiles sau:
Dockerfile
, đây là một máy ảo tối thiểu đã được cài đặt Dịch vụ TensorFlow.Dockerfile.gpu
, là một VM tối thiểu có TensorFlow Phục vụ với sự hỗ trợ GPU để sử dụng vớinvidia-docker
.Dockerfile.devel
, là một máy ảo tối thiểu có tất cả các phần phụ thuộc cần thiết để xây dựng Dịch vụ TensorFlow.Dockerfile.devel-gpu
, là một máy ảo tối thiểu có tất cả các phần phụ thuộc cần thiết để xây dựng Dịch vụ TensorFlow có hỗ trợ GPU.
Xây dựng vùng chứa từ Dockerfile
Nếu bạn muốn xây dựng 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 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 .
MẸO: Trước khi cố gắng tạo hình ảnh, hãy kiểm tra kho lưu trữ tensorflow/phục vụ của Docker Hub để đảm bảo hình ảnh đáp ứng nhu cầu của bạn chưa tồn tại.
Việc 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 chỉ định --local_ram_resources=2048
trong khi gọi Bazel. Xem 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 hoạt động tối ưu hóa mà bạn đang xây dựng Dịch vụ TensorFlow. 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 container
Điều này giả định rằng bạn đã xây dựng vùng chứa Dockerfile.devel
.
Để chạy container mở cổng gRPC (8500):
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
MẸO: Nếu bạn đang chạy hình ảnh GPU, hãy đảm bảo chạy bằng thời gian chạy NVIDIA --runtime=nvidia
.
Từ đây, bạn có thể làm theo hướng dẫn để thử nghiệm môi trường phát triển .
Xây dựng hệ nhị phân phân phát được tối ưu hóa
Khi chạy ModelServer của TensorFlow Serve, bạn có thể nhận thấy thông báo tường trình 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 nhị phân ModelServer của bạn không được tối ưu hóa hoàn toàn cho CPU đang chạy. Tùy thuộc vào mô hình bạn đang phục vụ, việc tối ưu hóa thêm có thể không cần thiết. Tuy nhiên, việc xây dựng một hệ nhị phân được tối ưu hóa rất đơn giản.
Khi xây dựng hình ảnh Docker từ các tệp Dockerfile.devel
hoặc Dockerfile.devel-gpu
được cung cấp, tệp 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 một tệp nhị phân ModelServer với tất cả các tối ưu hóa CPU mà máy chủ mà bạn đang xây dựng hình ảnh Docker 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, bạn chỉ cần:
Sao chép dự án Phục vụ 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 được tối ưu hóa mới của bạn bây giờ là
$USER/tensorflow-serving
, bạn có thể sử dụng giống như hình ảnhtensorflow/serving:latest
tiêu chuẩn.Đố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 được tối ưu hóa mới của bạn bây giờ là
$USER/tensorflow-serving-gpu
, bạn có thể sử dụng giống như hình ảnhtensorflow/serving:latest-gpu
tiêu chuẩn.