基于函数计算 + TensorFlow 的 Serverless AI 推理

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 本文介绍了使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖、一键部署、本地调试以及压测评估, 全方位展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。

前言概述

本文介绍了使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖、一键部署、本地调试以及压测评估, 全方位展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。

1.1 DEMO 概述

image

通过上传一个猫或者狗的照片, 识别出这个照片里面的动物是猫还是狗

开通服务

免费开通函数计算, 按量付费,函数计算有很大的免费额度。

免费开通文件存储服务NAS, 按量付费

1.2 解决方案

image

如上图所示, 当多个用户通过对外提供的 url 访问推理服务时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提供足够的执行实例来响应用户的请求, 同时函数计算提供了完善的监控设施来监控您的函数运行情况。

1.3. Serverless 方案与传统自建服务方案对比

1.3.1 卓越的工程效率

自建服务 函数计算 Serverless
基础设施 需要用户采购和管理
开发效率 除了必要的业务逻辑开发,需要自己建立相同线上运行环境, 包括相关软件的安装、服务配置、安全更新等一系列问题 只需要专注业务逻辑的开发, 配合 FUN 工具一键资源编排和部署
学习上手成本 可能使用 K8S 或弹性伸缩( ESS ),需要了解更多的产品、名词和参数的意义 会编写对应的语言的函数代码即可

1.3.2 弹性伸缩免运维

自建服务 函数计算 Serverless
弹性高可用 需要自建负载均衡 (SLB),弹性伸缩,扩容缩容速度较 FC 慢 FC系统固有毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,免运维
监控报警查询 ECS 级别的 metrics 提供更细粒度的函数执行情况,每次访问函数执行的 latency 和日志等, 更加完善的报警监控机制

1.3.3 更低的成本

  • 函数计算 (FC) 固有自动伸缩和负载均衡功能,用户不需要购买负载均衡 (SLB) 和弹性伸缩。

  • 具有明显波峰波谷的用户访问场景(比如只有部分时间段有请求,其他时间甚至没有请求),选择按需付费,只需为实际使用的计算资源付费。

    对于明显波峰波谷或者稀疏调用具有低成本优势, 同时还保持了弹性能力,以后业务规模做大以后并没有技术切换成本,同时财务成本增长配合预付费也能保持平滑。

  • 部分请求持续平稳的场景下,可以配合预付费解决按需付费较高单价问题。函数计算成本优化最佳实践文档

假设有一个在线计算服务,由于是CPU 密集型计算, 因此在这里我们将平均 CPU 利用率作为核心参考指标对成本,以一个月为周期,10台 C5 ECS 的总计算力为例,总的计算量约为 30% 场景下, 各解决方案 CPU 资源利用率使用情况示意图大致如下:

image

由上图预估出如下计费模型:

  • 函数计算预付费 3CU 一个月: 246.27 元, 计算能力等价于 ECS 计算型 C5

  • ECS 计算型 C5 (2vCPU,4GB)+云盘: 包月219 元,按量: 446.4 元

  • 包月10 Mbps 的 SLB: 526.52 元(这里做了一定的流量假设), 弹性伸缩免费

  • 饱和使用下,函数计算按量付费的一台机器成本约为按量付费 C5 ECS 的2 倍

平均CPU利用率 计算费用 SLB 总计
函数计算组合付费 >=80% 738+X(246.27x3+X) <= 738+X
按峰值预留ECS <=30% 2190(10x219) 526.52 >=2716.52
弹性伸缩延迟敏感 <=50% 1314(10x219x3/5) 526.52 >= 1840.52
弹性伸缩成本敏感 <=70% 938.57 (10x219x3/7) 526.52 >= 1465.09

注:

  1. 这里假设函数逻辑没有公网公网下行流量费用, 即使有也是一致的, 这里成本比较暂不参与

  2. 延时敏感,当 CPU 利用率大于等于 50% 就需要开始进行扩容,不然更来不及应对峰值

  3. 成本敏感,当 CPU 利用率大约 80% 即开始进行扩容, 能容受一定几率的超时或者5XX

上表中, 其中函数计算组合付费中的 X 为按需付费的成本价,假设按需付费的计算量占整个计算量的 10%,假设 CPU 利用率为100%, 对应上表,那么需要 3 台 ECS 的计算能力即可。因此 FC 按量付费的成本 X = 3x446.4x10%x2 = 267.84 ( FC 按量付费是按量 ECS 的2倍),这个时候函数计算组合付费总计 1005.8 元。 在这个模型预估里面, 只要 FC 按量付费占整个计算量小于 20%, 即使不考虑 SLB, 单纯考虑计算成本, 都是有一定优势的。

1.3.4. 小结

基于函数计算进行 AI 推理等 CPU 密集型的主要优势:

  1. 上手简单, 只专注业务逻辑开发, 极大提高工程开发效率。

    • 自建方案有太多学习和配置成本,如针对不同场景,ESS 需要做各种不同的参数配置
    • 系统环境的维护升级等
  2. 免运维,函数执行级别粒度的监控和告警。

  3. 毫秒级弹性扩容,保证弹性高可用,同时能覆盖延迟敏感和成本敏感类型。

  4. 在 CPU 密集型的计算场景下, 通过设置合理的组合计费模式, 在如下场景中具有成本优势:

    • 请求访问具有明显波峰波谷, 其他时间甚至没有请求
    • 有一定稳定的负载请求, 但是有部分时间段请求量突变剧烈

打包代码ZIP包和部署函数

开通服务

免费开通函数计算, 按量付费,函数计算有很大的免费额度。

免费开通文件存储服务NAS, 按量付费

2.1 安装第三方包到本地并上传到NAS

2.1.1 安装最新的Fun

说明:后续关于安装依赖包和部署函数的具体操作也可以参考 [FUN 操作简明视频教程]作为辅助。

2.1.2 Clone 工程 & Fun 一键安装第三方库到本地

  • git clone https://github.com/awesome-fc/cat-dog-classify.git
  • 可选操作: 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息
  • 执行 fun install -v, fun 会根据 Funfile 中定义的逻辑安装相关的依赖包

    image

      root@66fb3ad27a4c: ls .fun/nas/auto-default/classify
      model  python
      root@66fb3ad27a4c: du -sm .fun
      697     .fun
    

    根据 Funfile 的定义:

    • 将第三方库下载到 .fun/nas/auto-default/classify/python 目录下

    • 本地 model 目录移到 .fun/nas/auto-default/model 目录下

    安装完成后,从这里我们看出, 函数计算引用的代码包解压之后已经达到了 670 M, 远超过 50M 代码包限制, 解决方案是 NAS 详情可以参考: 挂载NAS访问,幸运的是 FUN 工具一键解决了 nas 的配置和文件上传问题。

2.1.3. 将下载的依赖的第三方代码包上传到 NAS

fun nas init
fun nas info
fun nas sync
fun nas ls nas://classify:/mnt/auto/

依次执行这些命令,就将本地中的 .fun/nas/auto-default 中的第三方代码包和模型文件传到 NAS 中, 依次看下这几个命令的做了什么事情:

  • fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas

  • fun nas info: 可以查看本地 NAS 的目录位置, 对于此工程是 $(pwd)/.fun/nas/auto-default/classify

  • fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/classify)上传到 NAS 中的 classify 目录

  • fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS

登录 NAS 控制台 https://nas.console.aliyun.com 和 VPC 控制台 https://vpc.console.aliyun.com
可以观察到在指定的 region 上有 NAS 和 相应的 vpc 创建成功

2.2 本地调试函数

在 template.yml 中, 指定了这个函数是 http 类型的函数, 所以根据 fun 的提示:

Tips for next step
======================
* Invoke Event Function: fun local invoke
* Invoke Http Function: fun local start
* Build Http Function: fun build
* Deploy Resources: fun deploy

执行 fun local start, 本地就会启动一个 http server 来模拟函数的执行, 然后我们 client 端可以使用 postman, curl 或者浏览器, 比如对于本例:

image

image

2.3 部署函数到FC平台

本地调试OK 后,我们接下来将函数部署到云平台:

  1. 通过以下操作将函数部署到云平台:

    • 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可,有两处地方需要更改

      image

    • 执行 fun deploy

  2. 登录控制台 https://fc.console.aliyun.com,可以看到 service 和 函数已经创建成功, 并且 service 也已经正确配置。

  3. 通过浏览器打开 Fun 临时生成的域名, 比如本例中的 12720569-1986114430573743.test.functioncompute.com

    当然您再这里也可以修改yml中域名的设置, 不使用 Auto, 而使用您已有的域名, 中国国内的域名需要备案, 海外的则不需要

至此,就完成了一个 AI 推理的部署操作,在这里,我们发现第一次打开页面访问函数的时候,执行环境实例冷启动时间非常长, 如果是一个在线AI推理服务,对响应时间非常敏感,冷启动引起的毛刺对于这种类型的服务是不可接受的,下一小节我们讲解如何利用函数计算的预留模式来消除冷启动带来的负面影响。

使用预留模式消除冷启动毛刺

函数计算具有动态伸缩的特性, 根据并发请求量,自动弹性扩容出执行环境来执行环境,在这个典型的深度学习示例中,import keras 消耗的时间很长 , 在我们设置的 1 G 规格的函数中, 并发访问的时候耗时10s左右, 有时甚至20s+

start = time.time()
from keras.models import model_from_json
print("import keras time = ", time.time()-start)

3.1 函数计算设置预留

[预留操作简明视频教程]

一次压测结果

image
image

从上面图中我们可以看出,当函数执行的请求到来时,优先被调度到预留的实例中被执行, 这个时候是没有冷启动的,所以请求是没有毛刺的, 后面随着测试的压力不断增大(峰值TPS 达到 1184), 预留的实例不能满足调用函数的请求, 这个时候函数计算就自动进行按需扩容实例供函数执行,此时的调用就有冷启动的过程, 从上面我们可以看出,函数的最大 latency 时间甚至达到了 32s,如果这个web AP是延时敏感的,这个 latency 是不可接受的。

总结

  • 函数计算具有快速自动伸缩扩容能力
  • 预留模式很好地解决了冷启动中的毛刺问题
  • 开发简单易上手,只需要关注具体的代码逻辑, Fun 工具助您一键式部署运用
  • 函数计算具有很好监控设施, 您可以可视化观察您函数运行情况, 执行时间、内存等信息

image

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
智创 AI 新视界 -- 提升 AI 推理速度的高级方法(16 - 2)
本文深度聚焦提升 AI 推理速度,全面阐述模型压缩(低秩分解、参数量化)、硬件加速(GPU、TPU)及推理算法优化(剪枝感知推理、动态批处理)。结合图像识别等多领域案例与丰富代码示例,以生动形象且专业严谨的方式,为 AI 从业者提供极具价值的技术指南,助力突破 AI 推理速度瓶颈,实现系统性能跃升。
|
2月前
|
人工智能 负载均衡 安全
云上AI推理平台全掌握 (3):服务接入与全球调度
阿里云人工智能平台 PAI 平台推出的全球化的服务接入矩阵,为 LLM 服务量身打造了专业且灵活的服务接入方案,正重新定义 AI 服务的高可用接入标准——从单地域 VPC 安全隔离到跨洲际毫秒级调度,让客户的推理服务在任何网络环境下都能实现「接入即最优」。
|
3月前
|
机器学习/深度学习 人工智能 文字识别
UGPhysics:本科物理推理评估基准发布,助力AI+Physics交叉研究
近年来,人工智能快速发展,大语言模型(LLM)在数学、代码等领域展现出强大的推理和生成能力,正在被广泛应用于各种场景。
108 0
|
5月前
|
人工智能 自然语言处理 运维
让AI读懂K线图!ChatTS-14B:字节开源的时间序列理解和推理大模型,自然语言提问秒解趋势密码!
ChatTS-14B是字节跳动开源的时间序列专用大模型,基于Qwen2.5-14B微调优化,通过合成数据对齐技术显著提升分析能力,支持自然语言交互完成预测推理等复杂任务。
913 1
让AI读懂K线图!ChatTS-14B:字节开源的时间序列理解和推理大模型,自然语言提问秒解趋势密码!
|
4月前
|
存储 人工智能 关系型数据库
4年10亿美金,Neon用Serverless PG证明:AI需要的不是“大”,而是“隐形”
AnalyticDB PostgreSQL 版基于Neon架构隆重推出满足 AI 时代应用开发需求的Serverless版本,并且在这之上搭载了结构化分析、向量检索、BM25全文检索和图检索,通过一套引擎满足 AI 应用丰富的数据诉求,支持MCP和OpenAI协议,为企业全面拥抱 AI 配备了数据存储、分析和应用的 “关键” 能力,帮助企业火箭式启动跑赢时代。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
面向认知智能的AI推理体系:理论基础与工程实践
本文深入探讨了AI推理从“感知智能”迈向“认知智能”的理论框架与技术突破。文章分析了符号推理、神经推理及混合推理的优劣势,指出了多跳推理、因果推理和可解释性等挑战。同时,结合大语言模型、ReAct架构和知识增强推理等前沿技术,展示了AI推理在代码实现中的应用。未来,认知图谱、推理驱动的智能体、边缘推理优化及人机协同将成为重要方向,推动AI向通用人工智能(AGI)迈进。
438 60
面向认知智能的AI推理体系:理论基础与工程实践
|
2月前
|
人工智能 运维 Serverless
GPU 降成本免运维,睿观 AI 助手选择函数计算
从跨境电商 ERP 到“睿观 AI 助手”,阿里云函数计算的支持下,深圳三态股份利用 AI 技术快速完成专利、商标、版权等多维度的侵权风险全面扫描。结合函数计算实现弹性算力支持,降低成本并提升效率,实现业务的快速发展。
|
3月前
|
人工智能 监控 测试技术
云上AI推理平台全掌握 (1):PAI-EAS LLM服务一键压测
在AI技术飞速发展的今天,大语言模型(LLM)、多模态模型等前沿技术正深刻改变行业格局。推理服务是大模型从“实验室突破”走向“产业级应用”的必要环节,需直面高并发流量洪峰、低延时响应诉求、异构硬件优化适配、成本精准控制等复杂挑战。 阿里云人工智能平台 PAI 致力于为用户提供全栈式、高可用的推理服务能力。在本系列技术专题中,我们将围绕分布式推理架构、Serverless 弹性资源全球调度、压测调优和服务可观测等关键技术方向,展现 PAI 平台在推理服务侧的产品能力,助力企业和开发者在 AI 时代抢占先机,让我们一起探索云上 AI 推理的无限可能,释放大模型的真正价值!
|
4月前
|
人工智能 运维 安全
阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
海牙湾(G-Town)是一家以“供应链+场景+技术+AI”为核心驱动力的科技公司,致力于为各行业提供数字化转型解决方案。通过采用阿里云Serverless架构,解决了弹性能力不足、资源浪费与运维低效的问题。SAE全托管特性降低了技术复杂度,并计划进一步探索Serverless与AI结合,推动智能数字化发展。海牙湾业务覆盖金融、美妆、能源等领域,与多家知名企业建立战略合作,持续优化用户体验和供应链决策能力,保障信息安全并创造可量化的商业价值。未来,公司将深化云原生技术应用,助力更多行业实现高效数字化转型。
349 19

热门文章

最新文章

相关产品

  • 函数计算