การพัฒนาด้วยนักเทียบท่า

ดึงภาพการพัฒนา

สำหรับสภาพแวดล้อมการพัฒนาที่คุณสามารถสร้าง TensorFlow Serving ได้ คุณสามารถลอง:

docker pull tensorflow/serving:latest-devel

สำหรับสภาพแวดล้อมการพัฒนาที่คุณสามารถสร้าง TensorFlow Serving พร้อมรองรับ GPU ได้ ให้ใช้:

docker pull tensorflow/serving:latest-devel-gpu

ดู Docker Hub tensorflow/serving repo สำหรับรูปภาพเวอร์ชันอื่นๆ ที่คุณสามารถดึงได้

ตัวอย่างการพัฒนา

หลังจากดึงอิมเมจ Docker การพัฒนาอันใดอันหนึ่งแล้ว คุณสามารถเรียกใช้มันในขณะที่เปิดพอร์ต gRPC (8500):

docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel

การทดสอบสภาพแวดล้อมการพัฒนา

หากต้องการทดสอบโมเดล จากภายในคอนเทนเนอร์ ให้ลอง:

# 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

ขณะนี้เราดูแลรักษา Dockerfiles ต่อไปนี้:

  • Dockerfile ซึ่งเป็น VM ขั้นต่ำที่ติดตั้ง TensorFlow Serving

  • Dockerfile.gpu ซึ่งเป็น VM ขั้นต่ำพร้อม TensorFlow Serving พร้อมรองรับ GPU ที่จะใช้กับ nvidia-docker

  • Dockerfile.devel ซึ่งเป็น VM ขั้นต่ำที่มีการขึ้นต่อกันทั้งหมดที่จำเป็นในการสร้าง TensorFlow Serving

  • Dockerfile.devel-gpu ซึ่งเป็น VM ขั้นต่ำที่มีการขึ้นต่อกันทั้งหมดที่จำเป็นในการสร้าง TensorFlow Serving พร้อมการรองรับ GPU

การสร้างคอนเทนเนอร์จาก Dockerfile

หากคุณต้องการสร้างอิมเมจ Docker ของคุณเองจาก Dockerfile คุณสามารถทำได้โดยการรันคำสั่ง 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 .

เคล็ดลับ: ก่อนที่จะพยายามสร้างอิมเมจ ให้ตรวจสอบ Docker Hub tensorflow/serving repo เพื่อให้แน่ใจว่าไม่มีอิมเมจที่ตรงกับความต้องการของคุณอยู่แล้ว

การสร้างจากแหล่งที่มาใช้ RAM จำนวนมาก หาก RAM เป็นปัญหาในระบบของคุณ คุณสามารถจำกัดการใช้ RAM ได้โดยการระบุ --local_ram_resources=2048 ในขณะที่เรียกใช้ Bazel ดู เอกสาร Bazel สำหรับข้อมูลเพิ่มเติม คุณสามารถใช้กลไกเดียวกันนี้เพื่อปรับแต่งการเพิ่มประสิทธิภาพที่คุณกำลังสร้าง TensorFlow Serving ด้วย ตัวอย่างเช่น:

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 .

วิ่งคอนเทนเนอร์

นี่ถือว่าคุณได้สร้างคอนเทนเนอร์ Dockerfile.devel

หากต้องการเรียกใช้คอนเทนเนอร์ที่เปิดพอร์ต gRPC (8500):

docker run -it -p 8500:8500 $USER/tensorflow-serving-devel

เคล็ดลับ: หากคุณใช้งานอิมเมจ GPU อย่าลืมรันโดยใช้ NVIDIA runtime --runtime=nvidia

จากที่นี่ คุณสามารถปฏิบัติตามคำแนะนำใน การทดสอบสภาพแวดล้อมการพัฒนา ได้

การสร้างไบนารีการให้บริการที่ปรับให้เหมาะสม

เมื่อเรียกใช้ ModelServer ของ TensorFlow Serving คุณอาจสังเกตเห็นข้อความบันทึกที่มีลักษณะดังนี้:

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

สิ่งนี้บ่งชี้ว่าไบนารี ModelServer ของคุณไม่ได้รับการปรับให้เหมาะสมที่สุดสำหรับ CPU ที่ทำงานอยู่ อาจไม่จำเป็นต้องปรับให้เหมาะสมเพิ่มเติม ทั้งนี้ขึ้นอยู่กับรุ่นที่คุณให้บริการ อย่างไรก็ตาม การสร้างไบนารี่ที่ได้รับการปรับปรุงให้เหมาะสมนั้นตรงไปตรงมา

เมื่อสร้างอิมเมจ Docker จากไฟล์ Dockerfile.devel หรือ Dockerfile.devel-gpu ที่ให้มา ไบนารี ModelServer จะถูกสร้างขึ้นด้วยแฟล็ก -march=native สิ่งนี้จะทำให้ Bazel สร้างไบนารี ModelServer พร้อมการเพิ่มประสิทธิภาพ CPU ทั้งหมดของโฮสต์ที่คุณกำลังสร้างอิมเมจ Docker บนการรองรับ

หากต้องการสร้างรูปภาพที่ให้บริการซึ่งปรับให้เหมาะสมที่สุดสำหรับโฮสต์ของคุณ เพียง:

  1. โคลนโครงการให้บริการ TensorFlow

    git clone https://github.com/tensorflow/serving
    cd serving
    
  2. สร้างอิมเมจด้วย ModelServer ที่ปรับให้เหมาะสม

    • สำหรับซีพียู:

      docker build --pull -t $USER/tensorflow-serving-devel \
        -f tensorflow_serving/tools/docker/Dockerfile.devel .
      
    • สำหรับ GPU: `

      docker build --pull -t $USER/tensorflow-serving-devel-gpu \
        -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
      
  3. สร้างอิมเมจที่ให้บริการโดยมีอิมเมจการพัฒนาเป็นฐาน

    • สำหรับซีพียู:

      docker build -t $USER/tensorflow-serving \
        --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \
        -f tensorflow_serving/tools/docker/Dockerfile .
      

      อิมเมจ Docker ที่ปรับให้เหมาะสมใหม่ของคุณตอนนี้คือ $USER/tensorflow-serving ซึ่งคุณสามารถ ใช้ได้ เช่นเดียวกับที่คุณทำกับ tensorflow/serving:latest มาตรฐาน

    • สำหรับจีพียู:

      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 .
      

      อิมเมจ Docker ที่ปรับให้เหมาะสมใหม่ของคุณตอนนี้คือ $USER/tensorflow-serving-gpu ซึ่งคุณสามารถ ใช้ได้ เช่นเดียวกับที่คุณทำกับอิมเมจ tensorflow/serving:latest-gpu มาตรฐาน