用docker部署tensorflow-serving:gpu時,參照官方文檔:https://tensorflow.google.cn/tfx/serving/docker
本應該是很簡單的部署,沒想到會一直出現這個錯誤:
經過github和網上的一個朋友了解到,關鍵問題可能是服務器機器的cpu比較弱(原來是我的cpu確實比較弱:我是在服務器分出來的一個虛擬機上部署的,本質是一個虛擬機,不是一個實體機。)
我的解決方式:將虛擬機更換為實體機,從服務器上直接分出一塊CPU供部署使用,然后就解決了這個問題。
疑問:從github中的那位朋友下面的描述看出,即使不更換cpu,似乎也能從別的方法來解決這個問題:我們上面的部署是直接pull 鏡像: docker pull tensorflow/serving:latest-gpu
我是通過github文檔中獲取的方法:https://github.com/tensorflow/serving/blob/master/tensorflow_serving/tools/docker/Dockerfile.gpu
不是直接拉取 tensorflow/serving:latest-gpu這個鏡像文件,而是通過Dockerfile.gpu,自己"做"一個鏡像文件,然后拉取
1.Clone the TensorFlow Serving project
git clone https://github.com/tensorflow/serving
cd serving
2.Build an image with an optimized ModelServer
For CPU: docker build --pull -t $USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile.devel .
For GPU: docker build --pull -t $USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
3.Build a serving image with the development image as a base
For CPU: docker build -t $USER/tensorflow-serving \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile .
For 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 .
# Your new optimized Docker image is now$USER/tensorflow-serving-gpu
, which you can use just as you would the standardtensorflow/serving:latest-gpu
image.
注意:Dockerfile.gpu這個文件里:要注意里面的CUDA,cuDNN,tensorRT,MODEL_NAME,BASE_PATH_MODEL等這些參數要一一對應好(在服務器上安裝好)
第2步和第3步的時間比較長,需要耐心等待一下。
然后執行:
sudo docker image ls
就可以查看到新拉取的鏡像信息:$USER/tensorflow/serving-gpu:latest 大小為2.4G左右吧(我用的是這個)
然后打開容器:
docker run --runtime=nvidia -p 8501:8501 \ --mount type=bind,\ source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,\ target=/models/half_plus_two \ -e MODEL_NAME=half_plus_two -t tensorflow/serving:latest-gpu &
注意:我標紅的鏡像要修改了,改為:$USER/tensorflow/serving-gpu:latest(每個人不一樣)
然后執行之后,顯示模型獲取成功了,但是出現了關於CUDA的一些問題,其實這個問題我到現在還沒有解決,然后哪位朋友知道了這個如何解決,能不能告訴我一下,在下方留言和我說說唄。