【DSW Gallery】使用EAS Python SDK完成模型部署

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 针对在线推理场景,PAI平台提供了在线预测服务PAI-EAS(Elastic Algorithm Service),支持基于异构硬件(CPU和GPU)的模型加载和数据请求的实时响应。通过PAI-EAS,您可以将模型快速部署为RESTful API,再通过HTTP请求的方式调用该服务。您可以使用EAS提供的Python SDK,来管理PAI-EAS服务。

直接使用

请打开使用EAS Python SDK完成模型部署,并点击右上角 “ 在DSW中打开” 。

image.png


概述

针对在线推理场景,PAI平台提供了在线预测服务PAI-EAS(Elastic Algorithm Service),支持基于异构硬件(CPU和GPU)的模型加载和数据请求的实时响应。通过PAI-EAS,您可以将模型快速部署为RESTful API,再通过HTTP请求的方式调用该服务。

同时,您可以使用EAS提供的命令工具和Python SDK来管理您的模型服务。本文为您介绍如何使用Python来创建服务、查看服务列表。以及,使用EAS的预测SDK,来用代码调用EAS服务。

前提条件

试用本文档介绍的内容前,请先确认您的账号满足以下条件:

  • 开通PAI-EAS(同时会拥有公共资源组),详情见:《开通及购买
  • 已获取阿里云账户的AccessKey ID和AccessKey Secret,详情请参见获取AccessKey
  • 当前使用的JupyterLab环境,安装了 eascmd,安装步骤可参考:下载并认证客户端(如果您使用PAI-DSW,初始镜像中已预置该CLI)
  • 因示例代码中用到了一些python库,请按需决定是否执行以下python包的安装命令

部署前准备工作

步骤一:安装示例需要的Python包

# !pip install tensorflow tensorflow_datasets
# !pip install opencv-python 
!pip install eas-prediction alibabacloud_eas20210701==1.1.2 --upgrade
!pip install tensorflow_datasets

步骤二:训练并产出一个模型

我们参考tensorflow的基础示例(https://www.tensorflow.org/datasets/keras_example ),来训练一个模型,以便演示EAS的使用流程。

import tensorflow as tf
import tensorflow_datasets as tfds
(ds_train, ds_test), ds_info = tfds.load(
    'mnist',
    split=['train', 'test'],
    data_dir='./cached_datasets',
    shuffle_files=True,
    as_supervised=True,
    with_info=True,
)
def normalize_img(image, label):
  """Normalizes images: `uint8` -> `float32`."""
  return tf.cast(image, tf.float32) / 255., label
ds_train = ds_train.map(
    normalize_img)
ds_train = ds_train.cache()
ds_train = ds_train.shuffle(ds_info.splits['train'].num_examples)
ds_train = ds_train.batch(128)
ds_train = ds_train.prefetch(10)
ds_test = ds_test.map(normalize_img)
ds_test = ds_test.batch(128)
ds_test = ds_test.cache()
ds_test = ds_test.prefetch(10)
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(10)
])
model.compile(
    optimizer=tf.keras.optimizers.Adam(0.001),
    loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=[tf.keras.metrics.SparseCategoricalAccuracy()],
)
model.fit(
    ds_train,
    epochs=6,
    validation_data=ds_test,
)
model.save('./eas_demo_output3')

至此,我们已经训练了一个简单的tensorflow模型,并输出到目录:./eas_demo_output3/

下一步,我们会将这个模型部署到EAS,并验证服务的正常。

部署模型到EAS(基于EAS Python SDK)

PAI-EAS提供了eascmd客户端管理工具,可以对服务进行创建、修改、切换、删除等操作,同时也提供了Python SDK供编程使用,当然它们的后端都是EAS的Open API。

步骤一:创建EAS的客户端对象

from alibabacloud_eas20210701.client import Client as eas20210701Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_eas20210701 import models as eas_20210701_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_eas20210701.models import (ListServicesRequest, CreateServiceRequest)
access_key_id = "*您的阿里云账户的Key ID*"
access_key_secret = "*您的阿里云装好的Key Secret*"
import os.path
config_path="/mnt/data/pai.config"
if os.path.isfile(config_path):
    with open(config_path) as f:
        access_key_id = f.readline().strip('\n')
        access_key_secret = f.readline().strip('\n')
config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
# 访问的域名
region = "cn-beijing"
config.endpoint = f'pai-eas.{region}.aliyuncs.com'
eas_client = eas20210701Client(config)

步骤二:准备模型文件

EAS支持从您的OSS Bucket中读取模型文件,前提是完成对PAI EAS的授权。

# 按需要拷贝模型目录到OSS上
# !mkdir /mnt/data_oss/my_model_dir
# !cp -r ./eas_demo_output3/* /mnt/data_oss/my_model_dir/

步骤三:创建EAS服务

import json
resource_config = { "instance": 1,
                     "memory": 7000,
                     "cpu": 4}
model_path = "oss://dlcyolo/dlc_demo/dsw_demo_model/"                     
service_config = {"name": "service_from_dsw",
                 "model_path": model_path,
                 "processor": "tensorflow_cpu_2.4",
                 "metadata": resource_config}
print(json.dumps(service_config))
service1 = eas_client.create_service(CreateServiceRequest(body=json.dumps(service_config))).body
print(service1)

步骤四:查看EAS服务状态

service2 = eas_client.describe_service(cluster_id='cn-beijing', service_name=service1.service_name).body
print(service2.status)

调用EAS服务进行预测

步骤一:创建测试样本

# import tensorflow.compat.v2 as tf
import tensorflow_datasets as tfds
import matplotlib.pyplot as plt
import numpy as np
# Construct a tf.data.Dataset
ds = tfds.load('mnist', split='train', data_dir='./cached_datasets',  shuffle_files=False)
# Build your input pipeline
ds = ds.shuffle(1024).take(3)
target = []
for example in ds.take(1):
    image, label = example['image'], example['label']
    print(label)
    target = np.reshape(image, 784)
    plt.imshow(tf.squeeze(image))
    plt.show()
tf.Tensor(6, shape=(), dtype=int64)

35-1.png

步骤二:进行在线预测

使用eas_prediction,调用已部署的服务。详细信息请参考公网地址调用

查看所有服务:

res = eas_client.list_services(ListServicesRequest())
for s in res.body.services:
    print(s.service_name, s.status)
mnist_first Running
mnist_first2 Stopped
service_from_dsw Running

选取一个服务做预测:

service3 = eas_client.describe_service(cluster_id='cn-beijing', service_name='service_from_dsw').body
print(service3)

构造PredictClient对象来调用服务:

from eas_prediction import PredictClient, TFRequest
import urllib
client = PredictClient(urllib.parse.urlsplit(service3.internet_endpoint).hostname,
                       service3.service_name)
client.set_token(service3.access_token)
client.init()
req = TFRequest('serving_default') # signature_name 参数:serving_default
req.add_feed('flatten_1_input', [1, 28, 28], TFRequest.DT_FLOAT, target)
resp = client.predict(req)
print((resp.response.outputs).keys)
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
7天前
|
机器学习/深度学习 调度 Python
SOFTS: 时间序列预测的最新模型以及Python使用示例
这是2024年4月《SOFTS: Efficient Multivariate Time Series Forecasting with Series-Core Fusion》中提出的新模型,采用集中策略来学习不同序列之间的交互,从而在多变量预测任务中获得最先进的性能。
29 4
|
15天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:Transformer模型
使用Python实现深度学习模型:Transformer模型
21 0
使用Python实现深度学习模型:Transformer模型
|
17天前
|
机器学习/深度学习 自然语言处理 TensorFlow
|
19天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
55 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
25天前
|
机器学习/深度学习 Python
利用Python实现一个简单的机器学习模型:线性回归详解
利用Python实现一个简单的机器学习模型:线性回归详解
38 2
|
1月前
|
API 开发工具 计算机视觉
华视 CVR-100UC 身份证读取 Python 二次开发(包含SDK下载地址)
华视 CVR-100UC 身份证读取 Python 二次开发(包含SDK下载地址)
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
图像分类模型评估之用python绘制混淆矩阵confusion_matrix_python confusion_matrix
图像分类模型评估之用python绘制混淆矩阵confusion_matrix_python confusion_matrix
|
30天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:注意力机制(Attention)
使用Python实现深度学习模型:注意力机制(Attention)
34 0
使用Python实现深度学习模型:注意力机制(Attention)
|
1月前
|
机器学习/深度学习 人工智能 算法
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
食物识别系统采用TensorFlow的ResNet50模型,训练了包含11类食物的数据集,生成高精度H5模型。系统整合Django框架,提供网页平台,用户可上传图片进行食物识别。效果图片展示成功识别各类食物。[查看演示视频、代码及安装指南](https://www.yuque.com/ziwu/yygu3z/yhd6a7vai4o9iuys?singleDoc#)。项目利用深度学习的卷积神经网络(CNN),其局部感受野和权重共享机制适于图像识别,广泛应用于医疗图像分析等领域。示例代码展示了一个使用TensorFlow训练的简单CNN模型,用于MNIST手写数字识别。
59 3
|
1月前
|
机器学习/深度学习
python-随机森林后筛选最重要变量,模型准确率、随机森林混淆矩阵结果、基尼系数排序图
python-随机森林后筛选最重要变量,模型准确率、随机森林混淆矩阵结果、基尼系数排序图

热门文章

最新文章