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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 针对在线推理场景,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+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
|
12天前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
150 2
|
25天前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
|
4月前
|
存储 机器学习/深度学习 人工智能
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
171 58
|
2月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
|
2月前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
|
4月前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
202 11
200行python代码实现从Bigram模型到LLM
|
5月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
328 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
5月前
|
API 开发工具 网络架构
【Azure Service Bus】使用Python SDK创建Service Bus Namespace资源(中国区)
本文介绍了如何使用Python SDK创建Azure Service Bus Namespace资源。首先,通过Microsoft Entra ID注册应用获取Client ID、Client Secret和Tenant ID,完成中国区Azure认证。接着,初始化ServiceBusManagementClient对象,并调用`begin_create_or_update`方法创建资源。
112 29
|
5月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
2912 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型

热门文章

最新文章

推荐镜像

更多