共计 3721 个字符,预计需要花费 10 分钟才能阅读完成。
基于函数计算如何实现建立一个 TensorFlow ServerlessAI 平台,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
场景介绍
基于函数计算建立一个 TensorFlow Serverless AI 推理平台。
背景知识
函数计算 Function Compute 是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能。函数计算帮助您无需管理服务器(Serverless),仅专注于函数代码就能快速搭建应用。函数计算能够弹性地伸缩,您只需要按使用量付费。优势总结:基于函数计算进行 AI 推理等 CPU 密集型的主要优势 1. 上手简单,只专注业务逻辑开发,极大提高工程开发效率。
自建方案有太多学习和配置成本,如针对不同场景,ESS 需要做各种不同的参数配置 系统环境的维护升级等。2. 免运维,函数执行级别粒度的监控和告警。
3. 毫秒级弹性扩容,保证弹性高可用,同时能覆盖延迟敏感和成本敏感类型。
4. 在 CPU 密集型的计算场景下,通过设置合理的组合计费模式,在如下场景中具有成本优势:
请求访问具有明显波峰波谷,其他时间甚至没有请求 有一定稳定的负载请求,但是有部分时间段请求量突变剧烈
场景体验
场景将介绍使用函数计算产品部署深度学习 AI 推理平台的最佳实践,基于函数计算 Function Compute。
让人工智能领域开发者可以更专注于算法模型的训练与业务逻辑的开发,将计算集群的运维工作交给函数计算,提高工作效率。
最终效果:通过上传一个猫或狗的照片,识别出这个照片里面的动物是猫还是狗。DEMO 示例效果入口:http://sz.mofangdegisn.cn。
步骤一:连接 ECS 服务器
ECS 资源地址:https://developer.aliyun.com/adc/scenario/35a73acbb9cb477e8a4a5b22021f23a9 参考文章步骤链接 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 按钮,查看预测识别结果。 函数计算具有动态伸缩的特性,根据并发请求量,自动弹性扩容出执行环境来执行环境。当预留的实例不能满足调用函数的请求时,函数计算就自动进行按需扩容实例供函数执行,此时的调用就有冷启动的过程。
看完上述内容,你们掌握基于函数计算如何实现建立一个 TensorFlow ServerlessAI 平台的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!