Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

尝试使用Serving部署手写数字识别模型,预测时出现unknown type #948

Closed
RunningMartin opened this issue Dec 31, 2020 · 5 comments
Assignees
Labels
bug Something isn't working

Comments

@RunningMartin
Copy link

系统环境:deppin v20.1
Serving环境:docker搭建

hub.baidubce.com/paddlepaddle/serving   latest          825a7fd941ac   3 weeks ago    450MB

paddle-serving版本:

paddle-serving-client (0.4.0)
paddle-serving-server (0.4.0)

paddle 版本:paddle 2.0rc
模型定义:

import paddle
from paddle import fluid
from paddle.fluid.dygraph import Linear,Conv2D,Pool2D

class MNIST(fluid.dygraph.Layer):
    def __init__(self):
        super(MNIST,self).__init__()
        # 步长是通过计算而来,O=(I-K+2P)/S+1  O为输出大小,I输入大小,K为核大型,P为padding,S为步长
        # 定义卷积层,输出通道数num_filters为5,卷积核大小filter_size为5,步长为1,padding=2,激活函数为relu
        # 输入尺寸为1*28*28,输出尺寸为28*28,个数为20
        self.conv1 = Conv2D(num_channels=1,num_filters=20,filter_size=5,stride=1,padding=2,act='relu')
        # 定义池化层,池化核pool_size=2,池化步长为2,选择最大池化方式
        # 输入尺寸为20*28*28,输出尺寸为20*14*14
        self.pool1 = Pool2D(pool_size=2,pool_stride=2,pool_type='max')
        # 定义卷积层,输出通道数num_filters为5,卷积核大小filter_size为5,步长为1,padding=2,激活函数为relu
        # 输入尺寸为20*14*14,输出尺寸为20*14*14
        self.conv2 = Conv2D(num_channels=20,num_filters=20,filter_size=5,stride=1,padding=2,act='relu')
        # 定义池化层,池化核pool_size=2,池化步长为2,选择最大池化方式
        # 输入尺寸为20*14*14,输出尺寸为20*7*7
        self.pool2 = Pool2D(pool_size=2,pool_stride=2,pool_type='max')
        
        # 修改:全链接层,输出维度为10
        # 输入维度为20*7*7
        self.fc1=Linear(input_dim=980,output_dim=10,act='softmax')
    
    @paddle.jit.to_static
    def forward(self,inputs,labels=None):
        x = self.conv1(inputs)
        x = self.pool1(x)
        x = self.conv2(x)
        x = self.pool2(x)
        # 展平
        x = fluid.layers.reshape(x,[x.shape[0],-1])
        x = self.fc1(x)
        if labels is not None:
            acc = fluid.layers.accuracy(input=x,label=labels)
            return x,acc
        return x

保存静态模型文件

paddle.static.save_inference_model()

通过paddle_serving保存模型

import paddle
import paddle_serving_client.io as serving_io
paddle.enable_static()

serving_io.inference_model_to_serving(
    './models', # 需要转换的模型文件存储路径,结构文件和参数文件都存在
    serving_server="./serving_mnist_model", # 转换后的模型文件和配置文件的存储路径
    serving_client="client_conf",  # 转换后的客户端配置文件存储路径
    model_filename='mnist_model.pdmodel', # 存储需要转换的模型Inference Program结构的文件名称,默认为__model__
    params_filename='mnist_model.pdiparams' # 存储需要转换的模型所有参数的文件名称,默认为__params__
)

启动服务

# rpc启动服务
python3 -m paddle_serving_server.serve --model /home/serving_mnist_model --thread 10 --port 9292

客户端代码

# rpc
# 客户端
from paddle_serving_client import Client
client= Client()
# 加载配置文件
client.load_client_config('/home/client_conf/serving_client_conf.prototxt')
# 链接服务器
client.connect(["127.0.0.1:9292"])

# 验证
# 测试
from PIL import Image
import matplotlib.pyplot as plt
import time
import numpy as np

# 读取一张本地的样例图片,转变成模型输入的格式
def load_image(img_path):
    # 从img_path中读取图像,并转为灰度图
    im = Image.open(img_path).convert('L')
    plt.imshow(im)
    im = im.resize((28, 28), Image.ANTIALIAS)
   # 这里如果改为(1,1,28,28),则会出现float_slot_batch为(1,1,1,28,28)
    im = np.array(im).reshape(1, 28, 28).astype(np.float32)
    # 图像归一化
    im = 1.0 - im / 255.
    im = im.astype(np.float32)
    return im

start = time.time()
# 定义预测过程
img_path = '/home/example_6.jpg'
tensor_img = load_image(img_path)
# 名称可以修改serving_server_conf.prototxt中的alias_name
results = client.predict(
    feed={"generated_tensor_0": tensor_img}, 
    fetch=["save_infer_model/scale_0.tmp_0","save_infer_model/scale_1.tmp_0"]
)
#取概率最大的标签作为预测输出
# lab = np.argsort(results.numpy())
# print("本次预测的数字是: ", lab[0][-1])

print(f"耗时:{time.time()-start}")

服务器端报错:

E1231 05:12:56.182905  1325 analysis_predictor.cc:402] unknown type, only support float32, int64 and int32 now.

客户端报错:

W1231 05:12:56.273334  1269 predictor.hpp:129] inference call failed, message: [E112]1/1 channels failed, fail_limit=1 [C0][E1014]Got EOF of fd=25 [email protected]:9292@36402 [R1][E111]Fail to connect [email protected]:9292: Connection refused [R2][E112]Fail to select server from list://127.0.0.1:9292 lb=la
E1231 05:12:56.273932  1269 general_model.cpp:361] failed call predictor with req: insts { tensor_array { float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0.49803919 float_data: 0.86666667 float_data: 0.20392156 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.25490195 float_data: 0.89411765 float_data: 0.85490197 float_data: 0.39607841 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0.054901958 float_data: 0.90980393 float_data: 0.54901958 float_data: 0.015686274 float_data: 0.02352941 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.46274507 float_data: 0.88235295 float_data: 0.086274505 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0.90980393 float_data: 0.54117644 float_data: 0.011764705 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0.039215684 float_data: 0.96470588 float_data: 0.34509802 float_data: 0.0039215684 float_data: 0.0039215684 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.32156861 float_data: 0.95686275 float_data: 0.078431368 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.72941172 float_data: 0.92156863 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.015686274 float_data: 0.81960785 float_data: 0.63921571 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0.0039215684 float_data: 0.011764705 float_data: 0 float_data: 0.25098038 float_data: 0.5960784 float_data: 0.58431375 float_data: 0.54117644 float_data: 0.28235292 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.090196073 float_data: 1 float_data: 0.36078429 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0.015686274 float_data: 0.56470585 float_data: 0.99215686 float_data: 0.86666667 float_data: 0.827451 float_data: 0.69411767 float_data: 0.94117647 float_data: 0.28235292 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.10588235 float_data: 0.98431373 float_data: 0.26274508 float_data: 0 float_data: 0 float_data: 0 float_data: 0.015686274 float_data: 0.63137257 float_data: 0.99215686 float_data: 0.40784311 float_data: 0.02352941 float_data: 0.011764705 float_data: 0.0039215684 float_data: 0.31372547 float_data: 0.86274511 float_data: 0.062745094 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.2235294 float_data: 1 float_data: 0.058823526 float_data: 0 float_data: 0.015686274 float_data: 0 float_data: 0.59215689 float_data: 0.89019608 float_data: 0.25882351 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0.039215684 float_data: 0.89803922 float_data: 0.09803921 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.30196077 float_data: 0.99215686 float_data: 0.047058821 float_data: 0.0078431368 float_data: 0 float_data: 0.10980392 float_data: 0.89019608 float_data: 0.26274508 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0.78431374 float_data: 0.33725488 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.28627449 float_data: 0.99215686 float_data: 0.18039215 float_data: 0 float_data: 0.0039215684 float_data: 0.44313723 float_data: 0.98431373 float_data: 0.027450979 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0.0039215684 float_data: 0.76078433 float_data: 0.39607841 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.058823526 float_data: 0.89411765 float_data: 0.56470585 float_data: 0.015686274 float_data: 0 float_data: 0.23921567 float_data: 1 float_data: 0.27058822 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0.0039215684 float_data: 0 float_data: 0.02352941 float_data: 0.82352942 float_data: 0.32549018 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.8 float_data: 0.90980393 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0.1607843 float_data: 0.99215686 float_data: 0.29019606 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0.4470588 float_data: 0.89803922 float_data: 0.062745094 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.34901959 float_data: 0.972549 float_data: 0.56862748 float_data: 0 float_data: 0.0078431368 float_data: 0.60392153 float_data: 0.89019608 float_data: 0.50196075 float_data: 0.49803919 float_data: 0.47058821 float_data: 0.25490195 float_data: 0.36078429 float_data: 0.97647059 float_data: 0.25490195 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0.66666663 float_data: 0.98431373 float_data: 0.52549016 float_data: 0.094117641 float_data: 0.019607842 float_data: 0.31372547 float_data: 0.39607841 float_data: 0.38823527 float_data: 0.43137252 float_data: 0.55686271 float_data: 0.74901962 float_data: 0.19999999 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.011764705 float_data: 0.5333333 float_data: 0.99215686 float_data: 0.86666667 float_data: 0.55686271 float_data: 0.45490193 float_data: 0.46274507 float_data: 0.74901962 float_data: 0.99215686 float_data: 0.72549021 float_data: 0.18431371 float_data: 0.0078431368 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.015686274 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0.20392156 float_data: 0.56470585 float_data: 0.8 float_data: 0.95686275 float_data: 0.69019604 float_data: 0.50588238 float_data: 0.26666665 float_data: 0.011764705 float_data: 0.0039215684 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0.0078431368 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0 float_data: 0 float_data: 0.0078431368 float_data: 0 float_data: 0.0078431368 float_data: 0.0039215684 float_data: 0 float_data: 0 float_data: 0.0039215684 float_data: 0 float_data: 0.011764705 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 float_data: 0 elem_type: 1 shape: 1 shape: 1 shape: 28 shape: 28 } } fetch_var_names: "save_infer_model/scale_0.tmp_0" fetch_var_names: "save_infer_model/scale_1.tmp_0" log_id: 0
@github-actions
Copy link

Message that will be displayed on users' first issue

@RunningMartin
Copy link
Author

我查看了Client.predict第353行代码,

        if self.all_numpy_input:
            res = self.client_handle_.numpy_predict(
                float_slot_batch, float_feed_names, float_shape,
                float_lod_slot_batch, int_slot_batch, int_feed_names, int_shape,
                int_lod_slot_batch, fetch_names, result_batch_handle, self.pid,
                log_id)

这里的float_slot_batch的信息为:

In [1]: float_slot_batch[0][0].dtype
Out[1]: dtype('float32')

In [2]: float_slot_batch[0][0].shape
Out[2]: (1, 1, 28, 28)

请问是我哪里有问题呢?

@TeslaZhao TeslaZhao added the bug Something isn't working label Jan 5, 2021
@yeyupiaoling
Copy link
Contributor

我的也出现了类似的问题

/usr/local/lib/python3.6/site-packages/paddle_serving_server_gpu/serving-gpu-trt-0.4.0/serving -enable_model_toolkit -inferservice_path workdir_0 -inferservice_file infer_service.prototxt -max_concurrency 0 -num_threads 2 -port 12000 -reload_interval_s 10 -resource_path workdir_0 -resource_file resource.prototxt -workflow_path workdir_0 -workflow_file workflow.prototxt -bthread_concurrency 2 -gpuid 0 -max_body_size 67108864 
/usr/local/lib/python3.6/site-packages/paddle_serving_server_gpu/serving-gpu-trt-0.4.0/serving: error while loading shared libraries: libnvinfer.so.6: cannot open shared object file: No such file or directory
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0105 02:52:25.787256  4976 naming_service_thread.cpp:209] brpc::policy::ListNamingService("127.0.0.1:12000,"): added 1
(1, 3, 224, 224)
W0105 02:52:25.798858  4976 predictor.hpp:129] inference call failed, message: [E112]1/1 channels failed, fail_limit=1 [C0][E111]Fail to connect [email protected]:12000: Connection refused [R1][E112]Fail to select server from list://127.0.0.1:12000, lb=la [R2][E112]Fail to select server from list://127.0.0.1:12000, lb=la
E0105 02:52:25.885640  4976 general_model.cpp:361] failed call predictor with req: insts { tensor_array { float_data: 1.3

@TeslaZhao
Copy link
Collaborator

你好,v0.4.0版本支持paddle 1.8.5预测,正在开发支持paddle 2.0的v0.4.1版本,预计同Paddle 2.0同步发布。

@hymanzhu1983
Copy link

请问v0.4.0不支持paddle2.0rc1吗? v0.4.1什么时候发布?

@paddle-bot paddle-bot bot closed this as completed Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants