Error response:/usr/bin/tf_serving_entrypoint.sh: line 3: 6 Illegal instruction (core dumped) ...


用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 standard tensorflow/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的一些問題,其實這個問題我到現在還沒有解決,然后哪位朋友知道了這個如何解決,能不能告訴我一下,在下方留言和我說說唄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM