关于程序员:基于阿里云函数计算实现AI推理

5次阅读

共计 3467 个字符,预计需要花费 9 分钟才能阅读完成。

场景介绍

基于阿里云函数计算建设一个 TensorFlow Serverless AI 推理平台。。

背景常识

函数计算 Function Compute 是事件驱动的全托管计算服务。应用函数计算,您无需洽购与治理服务器等基础设施,只需编写并上传代码。函数计算为您筹备好计算资源,弹性地牢靠地运行工作,并提供日志查问、性能监控和报警等性能。函数计算帮忙您无需治理服务器(Serverless),仅专一于函数代码就能疾速搭建利用。函数计算可能弹性地伸缩,您只须要按使用量付费。
劣势总结:基于函数计算进行 AI 推理等 CPU 密集型的次要劣势
1. 上手简略,只专一业务逻辑开发,极大进步工程开发效率。

自建计划有太多学习和配置老本,如针对不同场景,ESS 须要做各种不同的参数配置
零碎环境的保护降级等。

  1. 免运维,函数执行级别粒度的监控和告警。

3. 毫秒级弹性扩容,保障弹性高可用,同时能笼罩提早敏感和老本敏感类型。

4. 在 CPU 密集型的计算场景下,通过设置正当的组合计费模式,在如下场景中具备老本劣势:

申请拜访具备显著波峰波谷,其余工夫甚至没有申请
有肯定稳固的负载申请,然而有局部时间段申请量渐变激烈

场景体验

场景将介绍应用函数计算产品部署深度学习 AI 推理平台的最佳实际,基于函数计算 Function Compute。

让人工智能畛域开发者能够更专一于算法模型的训练与业务逻辑的开发,将计算集群的运维工作交给函数计算,进步工作效率。

最终成果:
通过上传一个猫或狗的照片,辨认出这个照片外面的动物是猫还是狗。DEMO 示例成果入口:http://sz.mofangdegisn.cn。

步骤一:连贯 ECS 服务器

ECS 资源地址:https://developer.aliyun.com/…
参考文章步骤链接 ECS

步骤二:开明函数计算服务

在应用函数计算前,您须要在阿里云产品详情页开明服务。

步骤三:装置 Fun 工具

Fun 是一个用于反对 Serverless 利用部署的工具,能帮忙您便捷地治理函数计算、API 网关和日志服务等资源。它通过一个资源配置文件(template.yml),帮助您进行开发、构建和部署操作。
1. 将 Fun 的安装包下载到本地。请将上面的 FUN_VERSION 变量的值设置为最新版本号,最新版本号请参见 Releases。以下操作将在 ECS 服务器上安装和配置 Fun。

FUN_VERSION="v3.6.1" 
curl -o fun-linux.zip https://gosspublic.alicdn.com/fun/fun-$FUN_VERSION-linux.zip

2. 装置解压工具 unzip,并应用 unzip 将下载的 Fun 安装包解压到当前目录。

yum -y install unzip 
unzip fun-linux.zip

3. 将解压进去的可执行文件挪动到零碎门路。

mv fun-*-linux /usr/local/bin/fun

4. 配置 Fun 关联的阿里云账号和调用 SDK 的超时工夫等信息。

fun config

请参考以下信息输入您的阿里云账号 ID、AccessKeyID 和 AccessKey 密钥等信息。

  • Aliyun Account
    ID:子用户名称中 @符号前面局部就是给您调配的主账号 ID,例如 u -zftb79nc@105997185439中蕴含的账号 ID 为 105997185439
  • Aliyun Access Key ID 和 Aliyun Access Key Secret:请应用平台提供给您的子账号 AK ID 和 AK
    Secret。

  • The timeout in seconds for each SDK client
    invoking:倡议将超时工夫设置长一点(例如 10000),避免在上传部署包时产生超时中断。

正确设置如下所示:

步骤四:装置 Docker

1. 装置 Docker 的依赖库。

yum install -y yum-utils device-mapper-persistent-data lvm2

2. 增加 docker-ce 的软件源信息。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 装置 docker-ce。

yum makecache fast
yum -y install docker-ce

4. 启动 Docker 服务。

systemctl start docker

步骤五:创立 NAS 文件系统挂载点

1. 登录 NAS 控制台。
2. 抉择文件系统 > 文件系统列表。
3. 在左上角抉择云资源所在地区。

4. 找到体验页面左侧资源信息栏中的 NAS 文件系统 ID 对应的文件系统,单击更多 > 增加挂载点。
5. 在增加挂载点页面,配置如下参数。

6. 查看挂载点地址,如下图。

步骤六:下载我的项目代码

1. 装置 Git 工具并应用 Git 克隆我的项目代码到本地。

yum -y install git
git clone https://github.com/awesome-fc/cat-dog-classify.git

2. 编辑我的项目中 FUN 的部署模板文件 template.yml,批改日志服务项目名称和 NAS 存储挂载配置。
a. 应用 vim 关上模板文件。

cd cat-dog-classify
vim template.yml

b. 输出以下命令全局替换日志服务项目名称。

:%s/log-ai-pro/log-ai-test/g

命令中 log-ai-test 为批改后的项目名称,您能够替换为您的自定义项目名称。

c. 批改 NAS 挂载配置。默认 auto 形式将会主动创立 NAS 文件系统,这里咱们批改填写为平台预创立好的 NAS 文件系统的信息。

      VpcConfig:
        VpcId: 'vpc-uf6u8*****zf1r4'
        VSwitchIds: ['vsw-uf6******038fy']
        SecurityGroupId: 'sg-uf6e******w6qz'
      NasConfig:
        UserId: 10003
        GroupId: 10003
        MountPoints:
          - ServerAddr: '33****u83.cn-shanghai.nas.aliyuncs.com:/'
            MountDir: '/mnt/auto'

批改的参数阐明如下:

  • VpcConfig 中的 VpcId、VSwitchId 和 SecurityGroupId 信息请到 ECS 控制台的实例详情页查看。
  • ServerAddr 的值批改为步骤三中的挂载点地址。

批改后如下图所示:

步骤七:将依赖文件上传到 NAS

1. 执行以下命令初始化 NAS。

fun nas init

2. 查看本地 NAS 的目录地位。

fun nas info

命令输入如下所示:

3. 执行以下命令装置相干依赖。

fun install -v

命令执行胜利后果如下所示。


该命令将依据 Funfile 文件中的定义:

  • 将依赖下载到.fun/nas/auto-default/classify/python 目录中。
  • 将 model 中的模型文件拷贝到.fun/nas/auto-default/classify/model/ 目录中。

4. 将本地 NAS 目录同步到阿里云 NAS 存储中。

fun nas sync

命令执行后果如下所示。

阐明 同步的文件有 700M 左右,内容较多,同步工夫约 40 分钟左右,请急躁期待。

5. 查看文件是否上传到近程 NAS 目录。

fun nas ls nas://classify:/mnt/auto/

步骤九:部署到函数计算平台

执行以下操作将函数部署到函数计算平台:

fun deploy -y

执行后果如下图所示,图中 19176540-18576685985*.test.functioncompute.com 为函数计算平台调配的长期域名,有效期 10 天,每天有 1000 次的调用限度。

如果部署时呈现如下错误信息。

问题起因:模板配置文件中定义的日志项目名称已存在。
解决办法:请批改 template.yml 文件中日志项目名称。

步骤九:测试预测服务

1. 部署实现后,期待 30 秒钟左右,在浏览器关上长期域名,如下图所示。

如果拜访页面时呈现相似上面引入模块谬误。

问题起因:因为网络问题,NAS 同步内容不残缺。
解决办法:请从新执行命令 fun nas sync。

2. 上传一张猫或狗的图片。

3. 单击 Predict 按钮,查看预测辨认后果。

函数计算具备动静伸缩的个性,依据并发申请量,主动弹性扩容出执行环境来执行环境。当预留的实例不能满足调用函数的申请时,函数计算就主动进行按需扩容实例供函数执行,此时的调用就有冷启动的过程。应用预留模式能够打消冷启动毛刺问题,详情请参见预留实例。

正文完
 0