详情页标题前

阿里云人工智能平台PAICaffe服务请求构造-云淘科技

详情页1

本文为您介绍如何为基于通用Processor的Caffe服务构造请求数据。

输入数据说明

PAI-EAS预置了Caffe Processor,为保证性能,其输入输出为ProtoBuf格式。

调用案例

PAI-EAS在华东2(上海)的VPC环境中部署了一个Public的测试案例,其服务名称为caffenet_serving_example,访问Token为空。您可以通过URLhttp://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/caffenet_serving_example访问该服务。具体方式如下:

  1. 获取模型信息。
    通过Caffe服务的model文件,可以查看模型每个layer的相关信息。例如该案例的model文件内容如下。

    name: "CaffeNet"
    layer {
      name: "data"
      type: "Input"
      top: "data"
      input_param {
        shape {
          dim: 10
          dim: 3
          dim: 227
          dim: 227
        }
      }
    }
    ....
    layer {
      name: "prob"
      type: "Softmax"
      bottom: "fc8"
      top: "prob"
    }

    该模型是一个经典的CaffeNet模型,type取值为Input的layer(通常为第一层layer)声明模型的输入,最后一层layer声明模型的输出。该模型的输入shape为[10, 3, 227, 227],其中第一维表示batch_size(如果单个请求只包含一张图片,则batch_size为1)。构建输入时,无论shape取值如何,都必须将输入展开成一维向量。该示例中,构建输入时,需要将输入构建为1*3*227*227的一维向量。如果服务请求中指定的shape与模型的shape不一致,则预测请求报错。

  2. 安装ProtoBuf并调用服务(以Python为例,介绍如何对Caffe服务进行调用)。
    PAI-EAS为Python预先生成了ProtoBuf包,您可以使用如下命令直接安装。

    $ pip install http://eas-data.oss-cn-shanghai.aliyuncs.com/pai_caffe_predict_proto-1.0-py2.py3-none-any.whl

    调用服务进行预测的示例代码如下。

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    import requests
    from pai_caffe_predict_proto import caffe_predict_pb2
    # build request.
    request = caffe_predict_pb2.PredictRequest()
    request.input_name.extend(['data'])
    array_proto = caffe_predict_pb2.ArrayProto()
    array_proto.shape.dim.extend([1, 3, 227, 227])
    array_proto.data.extend([1.0]*3*227*227)
    request.input_data.extend([array_proto])
    # 将ProtoBuf转换成string进行传输。
    data = request.SerializeToString()
    # 该API需要在华东2(上海)的VPC内访问。
    url = 'http://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/caffenet_serving_example'
    s = requests.Session()
    resp = s.post(url, data=data)
    if resp.status_code != 200:
        print resp.content
    else:
        response = caffe_predict_pb2.PredictResponse()
        response.ParseFromString(resp.content)
        print(response)

其它语言的调用方法

除Python外,使用其它语言客户端调用服务都需要根据.proto文件手动生成预测的请求代码文件。调用示例如下:

  1. 编写请求代码文件(例如创建caffe.proto文件),内容如下。
    syntax = "proto2";
    package caffe.eas;
    option java_package = "com.aliyun.openservices.eas.predict.proto";
    option java_outer_classname = "CaffePredictProtos";
    message ArrayShape {
      repeated int64 dim = 1 [packed = true];
    }
    message ArrayProto {
      optional ArrayShape shape = 1;
      repeated float data = 2 [packed = true];
    }
    message PredictRequest {
      repeated string input_name = 1;
      repeated ArrayProto input_data = 2;
      repeated string output_filter = 3;
    }
    message PredictResponse {
      repeated string output_name = 1;
      repeated ArrayProto output_data = 2;
    }

    其中 PredictRequest定义caffe服务的输入格式,PredictResponse定义服务的输出格式。关于ProtoBuf的详细用法请参见ProtoBuf介绍。

  2. 安装protoc。
    #/bin/bashPROTOC_ZIP=protoc-3.3.0-linux-x86_64.zipcurl -OL https://github.com/google/protobuf/releases/download/v3.3.0/$PROTOC_ZIPunzip -o $PROTOC_ZIP -d ./ bin/protocrm -f $PROTOC_ZIP
  3. 生成请求代码文件:
    • Java版本
      $ bin/protoc --java_out=./ caffe.proto

      命令执行完成后,系统会在当前目录生成com/aliyun/openservices/eas/predict/proto/CaffePredictProtos.java,在项目中导入该文件即可。

    • Python版本
      $ bin/protoc --python_out=./ caffe.proto

      命令执行完成后,系统会在当前目录生成caffe_pb2.py,通过import命令导入该文件即可。

    • C++版本
      $ bin/protoc --cpp_out=./ caffe.proto

      命令执行完成后,系统在当前目录生成caffe.pb.cc和caffe.pb.h。在代码中使用include caffe.pb.h命令,并将caffe.pb.cc添加至compile列表即可。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/164190.html

(0)
上一篇 2023年12月10日 上午6:05
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云人工智能平台PAI智能零售-云淘科技

    PAI-智能零售为您提供零售行业内的算法识别服务,包括销售柜-动销识别、陈列柜-柜面识别和陈列柜-取货识别服务,用于商品种类、商品个数的统计及商品空置的判断,并根据调用量进行收费。本文为您介绍智能零售相关计费说明及如何开通智能零售服务。 背景信息 智能零售支持的算法服务如下: 销售柜-动销识别:针对自动售卖柜的一次开关门的商品拿取过程,用智能零售服务判断拿取…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云容器服务ACK快速入门-云淘科技

    本文介绍分布式云容器平台ACK One的快速使用流程、快速使用方式和文档使用指引,帮助您快速上手ACK One。 前提条件 已开通分布式云容器平台ACK One,且授权默认角色和开通相关云产品。具体操作,请参见管理ACK One服务关联角色。 快速使用流程 ACK One的快速使用流程如下图所示。 快速使用方式ACK One包含三个主要的产品能力,包括注册集…

    2023年12月10日
  • 阿里云日志服务SLS计费概述-云淘科技

    通过阅读本文,您可以快速了解日志服务的付费方式、计费组成、计费周期等主要计费信息。 计费方式 日志服务支持按量付费和资源包两种计费方式。 按量付费:按照各个计费项实际使用量结算费用。先使用,后付费。每个月有一定的免费额度。包含按使用功能计费和按写入数据量计费两种付费模式。适用于业务用量经常有变化的场景。 资源包:预先购买资源包,在费用结算时,优先从资源包中抵…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云ECS云服务器实例状态表-云淘科技

    本文提供了您在调用API操作ECS实例时可以查看的实例状态。 实例状态 状态说明 Pending 在ECS控制台或者使用接口RunInstances创建实例后,实例的默认状态。Pending状态只出现在实例创建时刻,持续时间为秒为计时单位。 说明 如果您调用的是CreateInstance,需要您再调用StartInstance使ECS实例从Pending状…

    阿里云服务器 2023年12月9日
  • 阿里云ECS云服务器基于AIACC加速器快速实现LLaMA-7B指令微调-云淘科技

    本文基于Alpaca提供了一套LLaMA-7B模型在阿里云ECS上进行指令微调的训练方案,最终可以获得性能更贴近具体使用场景的语言模型。 背景信息 LLaMA(Large Language Model Meta AI )是Meta AI在2023年2月发布的开放使用预训练语言模型(Large Language Model, LLM),其参数量包含7B到65B…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。