Tham gia cộng đồng SIG TFX-Addons và giúp cải thiện TFX tốt hơn nữa!

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 kho lưu lượng / phân phối của Docker Hub để biết các phiên bản hình ảnh khác mà bạn có thể lấy.

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 duy trì các tệp Dockerfiles sau:

  • Dockerfile , là một máy ảo tối thiểu có cài đặt TensorFlow Serving.

  • Dockerfile.gpu , là một máy ảo tối thiểu với TensorFlow Serving với hỗ trợ GPU được sử dụng với nvidia-docker .

  • Dockerfile.devel , là một máy ảo tối thiểu với tất cả các phụ thuộc cần thiết để xây dựng Cung cấp TensorFlow.

  • Dockerfile.devel-gpu , là một máy ảo tối thiểu với tất cả các phụ thuộc cần thiết để xây dựng Cung cấp TensorFlow với 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 .

MẸO: Trước khi cố gắng tạo hình ảnh, hãy kiểm tra kho lưu lượng / phân phối của Docker Hub để đảm bảo rằng hình ảnh đáp ứng nhu cầu của bạn chưa 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à sự cố trên hệ thống của bạn, bạn có thể giới hạn mứ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 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ả sử bạn đã xây dựng vùng chứa Dockerfile.devel .

Để 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 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 để kiểm tra môi trường phát triển .

Xây dựng một tệp nhị phân phân phối tối ưu

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 hình ảnh Docker từ các Dockerfile.devel hoặc Dockerfile.devel-gpu được cung cấp, tệp nhị phân ModelServer sẽ được tạo 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:

  1. Sao chép dự án phục vụ TensorFlow

    git clone https://github.com/tensorflow/serving
    cd serving
    
  2. 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 .
      
  3. 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 hiện là $USER/tensorflow-serving , bạn có thể sử dụng hình ảnh này giống như cách bạn làm với tensorflow/serving:latest tiêu chuẩn tensorflow/serving:latest hình ảnh tensorflow/serving:latest .

    • Đố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ẩn tensorflow/serving:latest-gpu hình ảnh.