手把手教你用ModelArts模型部署上线&在线推理(二)【我的华为云体验之旅】

苏道 发表于 2021/11/26 15:41:27 2021/11/26
【摘要】 本文的主要目的是带想用ModelArts的同学过遍ModelArts的基础功能并部署属于你自己的模型在云上,并且能够本地通过python代码调API的方式在线推理【本文以tensorflow 1.13为例】

上一篇文章:

https://bbs.huaweicloud.com/blogs/313145

前文的教程已经将模型成功部署上了华为云,并已经已在线服务的形式运行,接下来将继续分享如何在本地用python代码调用在线服务。

本地调用在线服务

这一节来演示如何用本地调用在线服务。

获取token

想要在本地远程推理,首先需要获取token,因为请求的时候会验证token,因为不能谁都乱用你的在线服务对吧。获取token的在线方法:

https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IAM&api=KeystoneCreateUserTokenByPassword

具体填写方法:

1、region 选择在线服务上线的区域

2、methods选择password

3、domain name、name、password从右上角个人信息那里的“我的凭证”里,domain name就是账户名, name就是IAM用户名,密码就是账号密码

4、scope 里只需要填写project name即可,如果是在北京4就填写"cn-north-4",其他就填写其他

具体的官网教程:https://support.huaweicloud.com/api-modelarts/modelarts_03_0004.html

获取token.PNG

project_name.PNG


获取的token结果是下图箭头的部分,很长,我们把这个token值存为本地txt文件里【token有效期只有24h】


token.PNG


本地代码编写

先在下一个官网代码demo包:https://obs.cn-north-1.myhuaweicloud.com/apig-sdk/ApiGateway-python-sdk.zip

来源于官方:https://support.huaweicloud.com/inference-modelarts/inference-modelarts-0024.html#inference-modelarts-0024__zh-cn_topic_0283244602_section8151659179

打开demo包,文件结构如下图,主要修改main.py文件:

demo包.PNG

将main.py修改成如下,其中,token.txt是刚才获取token后写在txt文件的那个文件,url地址从在线服务中的API接口地址来,一般是长这个样子:https://xxxxxxxxxxxxx.apig.cn-north-4.huaweicloudapis.com/v1/infers/aaaa-fccc7-dddd-eeee-xxxxx的形式,如下图,请求采用post方法:

# coding=utf-8
import requests
from apig_sdk import signer

if __name__ == '__main__':
    with open('token.txt', 'r') as token_file:
        token = token_file.readline()
    X_Auth_Token = token[:-1]
    headers = {"content-type": "application/json", 'X-Auth-Token': X_Auth_Token}
    url = "https://xxxxxxxxxxxxx.apig.cn-north-4.huaweicloudapis.com/v1/infers/aaaa-fccc7-dddd-eeee-xxxxx"
    r = requests.request("POST", url, data=json_data_dumps, headers=headers, verify=False)
    resp = requests.request(r.method, r.scheme + "://" + r.host + r.uri, headers=r.headers, data=r.body)
    print(resp.status_code, resp.reason)
    print(resp.content)

在线服务详情.PNG

接着运行代码即可~。如果打印的status code =200那么说明请求没问题,值得注意的是,请求的数据需要是json的格式

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。