from sagemaker import get_execution_role
from sagemaker import Session
import tensorflow as tf
import keras,sagemaker
from sagemaker.tensorflow.model import TensorFlowModel ###2.0以上版本
role = get_execution_role()
sess = Session()
tf_framework_version = tf.__version__
print(tf.__version__)
print(keras.__version__)
print(sagemaker.__version__)
建立模型:这里需要注意的是framework_version,必须是整数,如果是2.3.4之类的部署的时候回报错,那个错误我忘记截图了,我这用的2.6,model_data是模型位置。
sm_model = TensorFlowModel(model_data='s3://sagemaker-ap-northeast-1-499396867125/local_model2/model.tar.gz',
framework_version='2.6.0',role=role)
部署模型:instance_type 是EC2的型号,按需设置。initial_instance_count 个数。
正常的大约在10-15分钟内就会完事。endpoint_name 可以指定节点名称,不写就会给你随机一个。
%%time
instance_type = 'ml.c5.xlarge'
uncompiled_predictor = sm_model.deploy(initial_instance_count=1,instance_type=instance_type)
TIP:deploy 中有序列化和反序列的配置serializer和deserializer可以按需配置。详细可以在api里查看
Use Version 2.x of the SageMaker Python SDK — sagemaker 2.77.0 documentation
完成后 打印
uncompiled_predictor.endpoint_name 可以查看节点名称。
首先是数据处理,模型编写的时候怎么处理的,调用的还是怎么处理,例如我这里是这样的:
test_path ="test.jpg"
image = cv2.imread(test_path)
image = cv2.resize(image,(image_size,image_size),0,0,cv2.INTER_LINEAR)
image = image.astype(np.float32)
image_array = np.multiply(image,1./255.)
x_batch = image_array.reshape(1,image_size,image_size,3)
x_batch.shape
(1, 64, 64, 3)
首先部署完成后,uncompiled_predictor可以直接传参narray,返回结果。
res=uncompiled_predictor.predict(x_batch)
print(res)
##结果:{'predictions': [[0.94271487, 0.0572850853]]}
然后打开终端节点:
可以看到刚刚部署的终端节点
我们可以直接调用终端节点,这调用终端节点传参就比较奇怪了因为不能直接传入narray
传入会报错:"{"error": "Unsupported Media Type: application/x-npy"}",我目前也不知道咋解决,可能是序列化的问题,有知道的望告知,多谢。
所以我这只能已json的形式传入,也可以。
至于返回结果的json格式,可以修改成自定义的,你也可以改成不是json的。
结果不一样是因为我换了张图片,换成猫的了。
runtime = boto3.Session().client(service_name="runtime.sagemaker")
image = Image.open(test_path)
image = image.resize([image_size, image_size])
image = np.multiply(image,1./255.)
x_train = image.reshape(1,image_size,image_size,3)
input1 = {'instances': x_train.tolist()}
response = runtime.invoke_endpoint(EndpointName=uncompiled_predictor.endpoint_name,
ContentType='application/json', Body=json.dumps(input1))
result = response["Body"].read()
result = json.loads(result)
print(result)
###结果{'predictions': [[0.0799172819, 0.920082748]]}
至此sagemaker部署节点并调用基本是完事了 ,但是里面有很多问题,比如:
1.invoke_endpoint函数调用传参问题,虽然结果没错但是很别扭
2.序列化问题
3.好像是图片大小不能超过5M,这是我在一个国外博客看到的,不知道是不是真的。
4.还有inference.py
:
5.还有各种坑。
等以后在研究把。
给大家推荐一个网址,上面讲了一部分内容,挺好的,还有#799Serving a Tensorflow model fails with ConnectionClosedError · Issue #831 · aws/sagemaker-python-sdk · GitHub
#参数恢复
self.sess=tf.Session()
saver = tf.train.import_meta_graph(os.path.join(model_fullpath,'model.ckpt-7.meta'))
module_file = tf.train.latest_checkpoint(model_fullpath)
saver.restore(self.sess, module_file)
variable_names = [v.name for v in tf.trainabl
使用AWS SageMaker的机器学习部署
代码和相关文件
该存储库包含用于使用AWS SageMaker部署ML模型的代码和相关文件。 该存储库包含许多用于各种编码练习,微型项目和项目文件的教程笔记本,这些笔记本将用于补充Nanodegree的课程。
是最简单的笔记本电脑,它向您介绍SageMaker生态系统以及一切如何协同工作。 所使用的数据已经是干净的表格格式,因此无需执行其他处理。 使用批处理变换方法测试拟合模型。
执行与低级笔记本相同的分析,而不是使用低级api。 结果,它有点冗长,但是,它具有更灵活的优点。 即使您仅使用其中一种方法,也要了解每种方法是一个好主意。
是同名“批量转换”笔记本上的一种变体。 它没有使用批处理转换来测试模型,而是先部署然后将测试数据发送到已部署的端点。
也是上述“批处理转换”笔记本的变体。 这次使用低级api,再次部署模型并将测试
with tf.name_scope('input'):
bottleneck_input = tf.placeholder_with_default(
bottleneck_tensor,
shape=[batch_size, bottleneck_tensor_size],
name='Mul')
TensorFlow查看pb数据库里面的输入节点和输出节点:
import tensorflow as tf
import os
model_dir = './tmp/'
model_name =
前端代码部署到docker 介绍 (Introduction)
Deploying a model with AWS SageMaker is a great way to allow users or customers to interact with it. While you can use the many algorithms and models that come with Sag...
系统模型建立的几个步骤AWS (or Amazon) SageMaker is a fully managed service that provides the ability to build, train, tune, deploy, and manage large-scale machine learning (ML) models quickly.AWS(或Amazon)SageMak...
当算法工程师在本地使用TensorFlow深度学习框架训练好模型后,会创建模型服务器供应用程序调用实现在线推理。由于部署本身存在一定的复杂性,他们需要考虑如何安装TensorFlow Serving相关的依赖,如何实现模型服务的高可用、请求负载均衡、A/B测试、自动伸缩机制等。Amazon SageMaker可以帮助用户快速创建多台模型服务器进行负载均衡,利用云上多可用区的方式实现高可用,并且在请求量变化时可以根据用户配置的策略进行自动扩展或收缩。
将大规模的机器学习系统投入生产,建立一个漂亮的流线化功能库,这已经成为我一个新痴迷的技术点。
我最近开始了一系列关于学习和教学如何做到这一点的三部分教程,以实现不同的机器学习工作流程。本文假设了机器学习模型的基本知识,并重点介绍了如何在生产中建立工作流和部署。
在本系列的第一部分中,我们将在Amazon Sagemaker上设置此功能。我们将使用sklearn的波士顿住房数据集。
机器学习生命周期
让我们花点时
IDE: SageMaker Studio
Console: SageMaker Notebook Instances
Command line & SDK: AWS CLI, boto3, & SageMaker Python SDK
3rd party integrations: Kubeflow & Kubernetes operators
使用方法详细说明:
IDE: SageMaker Studio
Sagemaker Stuio
Sagemaker学习
1. 使用boto3对S3操作
学sagemaker前先学习一下boto3库。因为使用Sagemaker要配合S3服务,使用这里 先学习boto3对S3服务的控制。
import boto3
指定使用AWS上哪种服务
#获取s3服务资源对象(相比client对象拥有更高级的抽象调用)
s3 = boto3.resource('s3',region_name=region)
#获取S3客户端对象(原生)
s3_client = boto3.client('s3',region_
Artificial intelligence (AI) and machine learning (ML) are gaining momentum in the healthcare industry, especially in healthcare imaging. The Amazon SageMaker approach to ML presents promising potenti...
深度学习在图像处理、语音识别、自然语言处理领域的应用取得了巨大成功,但是它通常在功能强大的服务器端进行运算。如果智能手机通过网络远程连接服务器,也可以利用深度学习技术,但这样可能会很慢,而且只有在设备处于良好的网络连接环境下才行,这就需要把深度学习模型迁移到智能终端。
由于智能终端 CPU 和内存资源有限,为了提高运算性能和内存利用率,需要对服务器端的模型进行量化处理并支持低精度
亚马逊的sagemaker 提供了模型训练到部署的全流程支持,下面这个例子是其参考手册的入门例子,记录一下整体流程,具体代码操作可以查看其手册。1 创建Amazon账号,建立IAM 用户(identify and access management)2 建立 S3 bucket (Amazon simple storage service ) 用于存放训练数据和调优后的模型代码/模型工件(mode...
使用AWS SageMaker的机器学习部署
代码和相关文件
该存储库包含用于使用AWS SageMaker部署ML模型的代码和相关文件。 该存储库包含许多用于各种编码练习,微型项目和项目文件的教程笔记本,这些笔记本将用于补充Nanodegree的课程。
是最简单的笔记本电脑,它向您介绍SageMaker生态系统以及一切如何协同工作。 所使用的数据已经是干净的表格格式,因此无需进行其他处理。 使用批处理变换方法测试拟合模型。
执行与低级笔记本相同的分析,而不是使用低级api。 结果,它有点冗长,但是,它具有更灵活的优点。 即使您仅使用其中一种方法,也要了解每种方法是一个好主意。
是同名“批量转换”笔记本上的一种变体。 它没有使用批处理转换来测试模型,而是先部署然后将测试数据发送到已部署的端点。
也是上述“批处理转换”笔记本的变体。 这次使用低级api,再次部署模型并将测试