[AWS] Deploy Tensorflow for AWS Lambda

这里提到一个概念:AWS Lambda Layers

1. 使用AWS Lambda 的“层 (Layer) ”功能实现依赖包管理

2. AWS lambda with OpenCV via Layers 上集

3. Image processing - OpenCV with AWS Lambda via Layer 下集

 

 

一、何为 '层'

现在 AWS Lambda  新增了“层( Layer )” 功能使得可以单独上传并集中管理  Lambda  的依赖包了。

可共享:可以跨 AWS 账户共享代码和依赖包,可以通过 Policy 控制只共享给某个账户,或者共享给所有账户都能分享你的代码成果。

 

  • 创建“layer” 

注意目录结构, 1) python 的要放在 python 目录下,2) 然后对 python 目录进行 zip 。

所以新建一个 python 目录,打包后的目录结构是这样的:

share_package.zip
python/test2.py

 

  注意:打包的目录结构有“规定”!要按照规定打包。

 

然后 "上传zip包" 即可,可以看到若干版本。

 

  • 引用“layer”

Lambda函数设置时,选择层,并指定对应的版本。

 

 

二、OpenCV Layer

  • 构建zip

创建一个EC2,有了纯净的开发环境。

先按照常规模式安装 opencv-python。

(1) 安装依赖以及基本packages。

sudo apt install python3-pip
sudo apt install awscli

 

(2) 安装到指定的路径,待后续打包。

~$ mkdir -p build/python/lib/python3.6/site-packages
~$ pip3 install opencv-python -t build/python/lib/python3.6/site-packages --system

安装后的文件们。

 

(3) 打包 得到 package.zip。

~/build$ sudo apt install zip
~/build$ zip -r package.zip .
~/build$ ls
package.zip python

 

  • 上传s3

建立一个s3 bucket: layers-opencv,然后上传zip到bucket上。

[可选]

加上ec2的s3可访问权限。

Roles --> EC2 --> policies (Amazons3FullAccess) --> 创建了一个 role。

 

  • 配置Layer

上传 zip 到 layer(name: opencv-layer),Layer configuration 如下。这是一个公共的layer。

 

  • 创建Function

权限设置(name: opencv-lambda),Lambda要有 “可读 from s3” 的permissions。

 

  • 添加layer到Function

点击“Add a layer”按键,添加后即可使用导入:

import cv

 

  • 实现Function

实现正常cv的编程。

 

 

 

 

 

Serverless Deep Learning with TensorFlow and AWS Lambda


实践一

Ref: https://www.youtube.com/playlist?list=PLTgRMOcmRb3N2LnfIddBi74FSt-xa_m7K

Ref: https://subscription.packtpub.com/video/big_data_and_business_intelligence/9781789618679【video book】

该链接意义不大,sqs 和 step function 可以瞧一瞧。 

 

大概的思路:讲tf的zip上传到s3,然后在lambda上指定zip的位置。

 

 

 

实践二

 

Ref: 如何利用 AWS Lambda 和 Tensorflow 部署深度学习模型

涉及以下 AWS 服务:

  1. AWS Lambda、
  2. Amazon Simple Storage Service (S3)、
  3. AWS CloudFormation、
  4. Amazon CloudWatch
  5. AWS Identity and Access Management (IAM)。

 

安装tf等,可运行如下程序:

classify_image.py
imagenet/
----classify_image_graph_def.pb
----imagenet_2012_challenge_label_map_proto.pbtxt
----imagenet_synset_to_human_label_map.txt
----LICENSE

 

 

/* implement */

 

 

 

posted @ 2020-10-14 14:11  郝壹贰叁  阅读(133)  评论(0编辑  收藏  举报