作者 | 管锡鹏
BentoML 是一个开源的大语言模型(LLM) AI 应用的开发框架和部署工具,致力于为开发者提供最简单的构建大语言模型 AI 应用的能力,其开源产品已经支持全球数千家企业和组织的核心 AI 应用 。
当 BentoML 在 Serverless 环境中部署模型时 , 其中一个主要挑战是冷启动慢,尤其在部署大型语言模型时更为明显 。由于这些模型体积庞大,启动和初始化过程耗时很长 。此外,由于 Image Registry 的带宽较小,会让大体积的 Container Image 进一步加剧冷启动缓慢的问题 。为了解决这一问题,BentoML 引入了 JuiceFS 。
JuiceFS 的 POSIX 兼容性和数据分块使我们能够按需读取数据,读取性能接近 S3 能提供的性能 的上限,有效解决了大型模型在 Serverless 环境中冷启动缓慢的问题 。使用 JuiceFS 后 , 模型加载速度由原来的 20 多分钟缩短至几分钟 。在实施 JuiceFS 的过程中,我们发现实际模型文件的读取速度与预期基准测试速度存在差异 。通过一系列优化措施,如改进数据缓存策略和优化读取算法,我们成功解决了这些挑战 。在本文中,我们将详细介绍我们面临的挑战、解决方案及相关优化 。
1BentoML 简介以及 Bento 的架构
在介绍模型部署环节的工作之前,首先需要对 BentoML 是什么以及它的架构做一个简要的介绍 。
BentoML 是一个高度集成的开发框架,采用简单易用的方式,支持以开发单体应用的方式进行开发 , 同时以分布式应用的形式进行部署 。这意味着开发者可以用很低的学习成本来快速开发一个高效利用硬件资源的大语言模型 AI 应用 。BentoML 还支持多种框架训练出来的模型,包括 PyTorch、TensorFlow 等常用 ML 框架 。起初,BentoML 主要服务于传统 AI 模型,但随着大型语言模型的兴起,如 GPT 的应用,BentoML 也能够服务于大语言模型 。
BentoML 产生的制品称为 Bento,Bento 的角色类似于 Container Image,是用于 AI 应用部署的最基本单位,一个 Bento 可以轻松部署在不同的环境中 , 比如 Docker、EC2、AWS Lambda、AWS SageMaker、Kafka、Spark、Kube.NETes 。
一个 Bento 包含了业务代码、模型文件、静态文件,同时我们抽象出来了 API Server 和 Runner 的概念,API Server 是流量的入口 , 主要承载一些 I/O 密集型的任务,Runner 通常是执行模型的推理工作,主要承载一些 GPU/CPU 密集型的任务,从而可以将一个 AI 应用中不同硬件资源需求的任务进行轻松解耦 。
文章插图
Bento Architecture
Bento ArchitectureBentoCloud 是一个使 Bento 可以部署在云上的平台,一般开发任务分为三个阶段:
文章插图
BentoCloud Architecture
- 第一阶段:开发阶段
- 第二阶段:集成阶段
- 第三阶段:部署阶段,也是本文的重点内容
文章插图
yatai-serverless Architecture
2Serverless 平台部署大模型的挑战
- 挑战 1:冷启动慢
- 挑战 2:数据一致性问题
- 挑战 3:数据安全性问题
推荐阅读
- Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
- 如何基于Docker镜像逆向生成Dockerfile
- 一文解析如何基于 LangChain 构建 LLM 应用程序
- cdr中的裁剪工具应该咋使用,cdr图框精确裁剪后看不到内容
- cdr如何才能画梯形
- 木质地板如何保养与清洁 木质地板怎么清洁
- 花卉丹顶红如何养殖 丹顶红花怎么养殖
- 种植牙有使用年限吗多少岁 种植牙有使用年限吗
- 华为手机如何去掉设置里的红点,华为手机如何取消图标上红点数字
- ai画笔工具怎么让点自动连接,ai镜像工具应该咋滴才可以使用