【DSW Gallery】介绍如何在DSW中使用EAS命令行工具

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

直接使用

请打开介绍如何在DSW中使用EAS命令行工具,并点击右上角 “ 在DSW中打开” 。

image.png


概述

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

同时,您可以使用EAS提供的命令工具:eascmd,来管理PAI-EAS服务。本文为您介绍如何使用eascmd客户端上传文件、创建服务、查看服务列表。以及,使用EAS的预测SDK,来用代码调用EAS服务。

前提条件

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

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

部署前准备工作

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

# --------如果需要切换至国内pypi源请取消以下注释--------
# !pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 本示例需要 tensorflow2.6 以上版本,如果您的DSW版本低于此要求,请升级相关python库
# --------可以取消以下注释,运行并安装相应python库--------
# !pip install tensorflow tensorflow_datasets
# !pip install opencv-python 
!pip install eas-prediction

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

我们参考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, num_parallel_calls=tf.data.AUTOTUNE)
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(tf.data.AUTOTUNE)
ds_test = ds_test.map(normalize_img, num_parallel_calls=tf.data.AUTOTUNE)
ds_test = ds_test.batch(128)
ds_test = ds_test.cache()
ds_test = ds_test.prefetch(tf.data.AUTOTUNE)
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_output')

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

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

部署模型到EAS(基于eascmd)

PAI-EAS提供了eascmd客户端管理工具,可以对服务进行创建、修改、切换、删除等操作。

步骤一:认证客户端

使用eascmd客户端之前,需要下载此客户端,并完成用户认证。 关于客户端下载和认证,详细可参考:《下载并认证客户端》

假如用户使用PAI-DSW产品,实例镜像内已预置了eascmd,可补全以下命令后,运行完成认证:

# --------需要完善命令信息,并取消代码注释后再运行--------
# !eascmd64 config -i <yourAccessKeyID> -k <yourAccessKeySecret> [-e <yourEndpoint|pai-eas.cn-shanghai.aliyuncs.com>]
  • yourAccessKeyID - 阿里云账号的AccessKey ID。
  • yourAccessKeySecret - 阿里云账号的AccessKey Secret。
  • yourEndpoint - 默认的PAI-EAS服务地域为华东2(上海),如果需要将模型部署至其它地域,可以使用-e参数指定地域对应的Endpoint

步骤二:打包并上传模型

# !eascmd64 upload eas_demo_output.tar.gz --inner

步骤三:创建EAS服务

# !eascmd64 create eas_demo_service_desc.json

步骤四:查看EAS服务状态

# !eascmd64 ls

调用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', shuffle_files=False)
# Build your input pipeline
ds = ds.shuffle(1024).take(1)
target = []
for example in ds.take(3):
    image, label = example['image'], example['label']
    print(label)
    target = np.reshape(image, 784)
    plt.imshow(tf.squeeze(image))
    plt.show()
tf.Tensor(3, shape=(), dtype=int64)

36-1.png

2022-06-23 19:56:30.621935: W tensorflow/core/kernels/data/cache_dataset_ops.cc:856] The calling iterator did not fully read the dataset being cached. In order to avoid unexpected truncation of the dataset, the partially cached contents of the dataset  will be discarded. This can happen if you have an input pipeline similar to `dataset.cache().take(k).repeat()`. You should use `dataset.take(k).cache().repeat()` instead.

步骤二:进行在线预测

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

#!/usr/bin/env python
from eas_prediction import PredictClient, TFRequest
# http://1848217*********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/kears_model
client = PredictClient('http://1157703270994901.cn-shanghai.pai-eas.aliyuncs.com', 'dsw_deploy_model_sample_1')
#  注意上面的client = PredictClient()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
client.set_token('MjNiNzJmNWRlYjdkNjgxYjY1YTNkMGY4NDhhNjNmMjI5ZjhjM2E0MQ==')
#  Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
client.init()
req = TFRequest('serving_default') # signature_name 参数:serving_default
req.add_feed('flatten_input', [1, 28, 28], TFRequest.DT_FLOAT, target)
resp = client.predict(req)
print((resp.response.outputs).keys)
<bound method Mapping.keys of {'dense_1': dtype: DT_FLOAT
array_shape {
  dim: 1
  dim: 10
}
float_val: -2063.09912109375
float_val: 125.97838592529297
float_val: -99.17234802246094
float_val: 956.5430908203125
float_val: -1272.6309814453125
float_val: -2213.461181640625
float_val: -2570.403076171875
float_val: 1942.651611328125
float_val: -1032.1619873046875
float_val: -217.21417236328125
}>
相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
Web App开发 测试技术
使用Selenium模拟鼠标滚动操作的技巧
本文介绍了使用Selenium进行Web自动化测试时如何模拟鼠标滚动操作。模拟滚动对于处理动态加载的内容至关重要。通过`ActionChains`类,可以实现向下滑动1000像素的操作。示例代码展示了如何结合滚动来截取长页面的完整图片。总结来说,Selenium的`ActionChains`使得模拟用户行为,如滚动,变得简单,便于执行自动化任务。
|
2月前
|
弹性计算 人工智能 关系型数据库
阿里云轻量应用服务器38元和9.9元1个月、199元1年抢不到怎么办?抢购策略与备选方案参考
2026年阿里云推出轻量应用服务器抢购活动,2核2G配置38元/年,2核4G配置9.9元/月或199元/年,每日限量抢购。新用户需完成实名认证才有抢购资格。为提高抢购成功率,用户需确保新用户身份、提前入场等待、利用每天两次抢购机会,并提前充值。若抢购失败,可选择新用户专属优惠价、长效特惠云服务器ECS或其他高配置服务器作为备选方案,满足不同需求且价格实惠。
|
安全 数据库 Windows
解决Windows云服务器带宽和CPU利用率高的问题
本文针对Windows Server 2019 ×64系统,介绍如何排查云服务器带宽和CPU利用率过高的问题。通过任务管理器、性能监视器等工具定位高资源占用的进程,并根据进程是否正常采取相应措施。对于正常进程,建议优化或升级配置;对于异常进程,建议关闭进程并进行系统备份或还原。详细步骤包括使用“perfmon -res”查看资源使用情况,结合PID查找具体进程,分析处理后台任务、杀毒软件及应用程序的影响。
893 1
|
存储 Java 关系型数据库
LDAP: error code 32 - No Such Object
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
520 14
|
安全 Java 开发工具
掌握安卓应用开发:从基础到高级的全面指南
本文旨在为读者提供一个详尽的指南,帮助他们掌握安卓应用开发的基础知识及高级技巧。从环境搭建到项目实践,逐步深入讲解安卓开发的各个环节。无论是对于刚入门的初学者还是希望进一步提升的开发者,本文都将提供实用的建议和示例代码,帮助你快速上手并提升技能。
|
网络协议 安全 Linux
Linux 防火墙解锁规则与 `firewall-cmd` 教程
【8月更文挑战第20天】
2465 0
|
存储 中间件 测试技术
gRPC(六)进阶:拦截器 interceptor
拦截器本质上就是一个特定类型的函数,所以实现拦截器只需要实现对应类型方法(方法签名相同)即可。
1627 1
gRPC(六)进阶:拦截器 interceptor
|
C# 图形学
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
1052 0
|
存储 弹性计算 安全
阿里云ECS实例规格族详解ecs.xlarge
阿里云服务器ECS分为多种实例规则,常见的有计算型c、通用型g和内存型r等,large代表vCPU核数,re内存增强、se代表存储增强、ne代表网络增强等,阿里云百科分享阿里云服务器ECS实例命名规则及举例说明:
1910 0
阿里云ECS实例规格族详解ecs.xlarge

热门文章

最新文章