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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 针对在线推理场景,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-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 机器学习/深度学习 人工智能
【DSW Gallery】DSW基础使用介绍
PAI-DSW是一款云端机器学习开发IDE,为您提供交互式编程环境,适用于不同水平的开发者。本文为您介绍PAI-DSW的功能特点以及界面的基础使用。
【DSW Gallery】DSW基础使用介绍
|
7月前
|
编解码
PAI-EAS试用-ComfyUI
探索阿里云PAI平台的试用体验,试用地址在[PAI-EAS试用](https//developer.aliyun.com/topic/pai/svd?spm=a2c6h.27234800.J_6638147300.2.717259efR1C0is),提供丰富的资源,如A10服务器。
261 0
|
机器学习/深度学习 人工智能 算法
【DSW Gallery】PAI-DSW快速入门
PAI-DSW是一款为AI开发者量身定制的云端机器学习交互式开发IDE,随时随地开启Notebook快速读取数据、开发算法、训练及部署模型。本文介绍如何快速上手PAI-DSW。
【DSW Gallery】PAI-DSW快速入门
|
存储 机器学习/深度学习 人工智能
【DSW Gallery】如何在DLC训练任务中挂载OSS
阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务。本文将介绍如何使用在DLC训练任务中挂载OSS,使用读写本地文件的方式来访问OSS中的数据。
【DSW Gallery】如何在DLC训练任务中挂载OSS
|
机器学习/深度学习 人工智能 Kubernetes
【DSW Gallery】介绍如何使用命令行工具提交DLC任务
本文介绍如何使用DLC命令行工具提交任务到指定的工作空间内. 同时,会介绍如何提交预付费和后付费的DLC训练任务
【DSW Gallery】介绍如何使用命令行工具提交DLC任务
|
分布式计算 监控 PyTorch
【DSW Gallery】如何在DLC上提交ElasticBatch任务
ElasticBatch是一种分布式离线弹性批量推理作业类型, 本文将介绍ElasticBatch SDK接口以及如何在DLC上提交ElasticBatch任务。
【DSW Gallery】如何在DLC上提交ElasticBatch任务
|
机器学习/深度学习 IDE Cloud Native
【DSW Gallery】如何在DSW/DLC中使用企业版镜像服务ACR
PAI-DSW是一款云端机器学习开发IDE,为您提供交互式编程环境。用户可以使用官方镜像或者自定义镜像,创建DSW实例;进入DSW实例后,用户有root权限可以任意自定义环境(安装更新系统软件,Python包等),然后保存环境到ACR中,然后用于PAI-DLC进行分布式训练。本文将介绍如何在DSW/DLC中使用阿里云提供的容器镜像服务ACR。
【DSW Gallery】如何在DSW/DLC中使用企业版镜像服务ACR
|
存储 机器学习/深度学习 Kubernetes
【DSW Gallery】如何在DLC中进行Pytorch DDP分布式训练任务
本文基于Pytorch 1.8版本,介绍了如何使用DLC进行Pytorch DDP分布式训练任务.
【DSW Gallery】如何在DLC中进行Pytorch DDP分布式训练任务
|
文字识别 并行计算 算法
【DSW Gallery】基于EasyCV的文字识别示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以文字识别为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】基于EasyCV的文字识别示例
|
机器学习/深度学习 人工智能 并行计算
【DSW Gallery】DSW镜像使用入门
介绍DSW中如何使用官方镜像、自定义镜像、第三方镜像地址来启动服务。DSW环境进行定制修改之后还可以选择停机保存环境或者保存镜像到ACR镜像仓库。
【DSW Gallery】DSW镜像使用入门