การพัฒนาด้วยนักเทียบท่า
ดึงภาพการพัฒนา
สำหรับสภาพแวดล้อมการพัฒนาที่คุณสามารถสร้าง 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 ServingDockerfile.gpu
ซึ่งเป็น VM ขั้นต่ำที่มี TensorFlow Serving พร้อมรองรับ GPU ที่จะใช้กับnvidia-docker
Dockerfile.devel
ซึ่งเป็น VM ขั้นต่ำที่มีการขึ้นต่อกันทั้งหมดที่จำเป็นในการสร้าง TensorFlow ServingDockerfile.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 บนการรองรับ
หากต้องการสร้างรูปภาพที่ให้บริการซึ่งปรับให้เหมาะสมที่สุดสำหรับโฮสต์ของคุณ เพียง:
โคลนโครงการให้บริการ TensorFlow
git clone https://github.com/tensorflow/serving cd serving
สร้างอิมเมจด้วย 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 .
สร้างอิมเมจที่ให้บริการโดยมีอิมเมจการพัฒนาเป็นฐาน
สำหรับซีพียู:
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
มาตรฐาน