Redian新闻
>
AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

公众号新闻

作者 | Tim Anderson
译者 | 赵晓磊
策划 | Tina

最近 AWS Re:Invent 大会的一场演讲表明,Rust 和 Severless 简直是绝配——在成本方面,Rust 的优势可能比 Python 高出好几倍。

Lambda 函数和巨大的运行时环境是一对糟糕的组合(注:这里指 JAVA 和 Python 这类编程语言,相比 Rust 对运行时环境有更高的要求)——因为比起原生代码,它不仅冷启动速度更慢,对内存的需求也会更高。但另一方面,许多开发者在使用 Java 和 Python 时会比使用 Rust 这种系统语言时的开发效率更高。

在 re:Invent 大会演讲中,来自以色列特拉维夫的云咨询公司 CloudEX 的工程师主管 Efi Merdler-Kravitz 解释道:你并不需要用 Rust 对 Python Lambda 函数进行彻底的重构。他举了一个例子:一个使用 python 编写的,列出 S3 的存储桶的 Lambda 函数。事实证明,AWS 的 Python SDK Boto3 模块十分臃肿,仅需要使用 Rust 替换掉原本依赖的 Boto3 函数,即使其它代码依然使用 Python,也能在成本和性能方面获得巨大提升。

使用 Rust 替换 Python 代码的关键是 PyO3,它提供了将 Rust 的代码嵌入到 Python 中的能力。Rust 代码中的属性(Attributes)将暴露为像是标准的 Python 接口一样的函数。

在 Merdler-Kravitz 展示的例子中,使用 Rust 替换一部分 Python 代码的结果是,冷启动速度提升了三倍,同时内存需求也大大降低。使用 1GB 内存时,Rust 和 Boto3 具有相似的性能表现,但当内存降至 256MB 时,使用 Rust 优化的版本仍然表现良好,而纯 Python 版本则无法实现同样的效果。(注:在演讲中,Merdler-Kravitz 还强调了 Rust 在 256MB 内存下的性能表现,与 Python 在 1GB 内存下的性能表现基本相同,这意味着通过 Rust 进行优化后,内存需求可以降低到之前的 1/4。)

Lambda 中使用 Rust 的成本收益:re:Invent 中的一个展示案例 

减少所需的计算资源意味着成本更低,尤其是在 serverless 平台上(注:AWS Lambda 根据请求数量,执行代码的持续时间以及你为函数分配的内存量来计费)。Merdler-Kravitz 声称:“Rust 比 Python 平均便宜 2/3 到 3/4。”

在 re:Invent 期间,AWS 宣布其 Rust SDK 现已准备好投入生产环境使用。早在去年 11 月,这家云巨头就将基于“最小容器镜像(minimal container image)”的 Amazon Linux 2023 支持添加到了 Lambda 中。它表示,该支持的一个关键应用场景是“当使用需要原生编译的语言时,例如 Go 或 Rust。”

此外,还有一个为 AWS Lambda 提供的实验性的 Rust 运行时环境,可以简化使用 Rust 开发 Lambda 函数的操作,并包含了支持 Lambda 事件、Lambda 扩展和 Lambda 运行时 API 的 crates。有一个名为 Cargo Lambda 的项目与此相关,该项目支持在本地使用 Lambda 模拟器进行开发和测试,以及在 Windows 或 macOS 上开发时,将代码编译构建为 Linux 的可执行文件,无论开发者自己的 PC 是使用的 ARM64 还是 x86-64 都可以完成相应的编译构建。使用 Rust 构建 Lambda 函数的官方文档可在 此处 查阅。

实验性代码不适用于生产环境,因此 Rust 在 Lambda 方面的应用还处于早期阶段,但看起来潜在收益或许相当可观。

(注:Merdler-Kravitz 在演讲中总共介绍了 3 种使用场景,除了本文中介绍的利用将 Rust 代码嵌入到 Python 中的方式对现有代码中性能表现较差的部分进行重构和使用 AWS Lambda 提供的 Rust runntime client 在本地从零开始创建一个 Rust 项目的两个场景外,还介绍了使用 Rust 编写 Lambda 扩展的场景,通过扩展的方式将与业务核心逻辑无关但又必要的部分,如监控指标和日志上报等功能抽离出来,与业务核心逻辑进行异步处理,实现降低响应延迟的效果。并对三种场景下,Rust 版本和原版本的成本和性能都做了详尽的对比,得出了如下结论:场景一的方案适用于已经运行的程序中存在明显性能瓶颈,全部重构又有较大的风险和成本,这时寻找到其中运行较慢的小段代码并使用 Rust 进行重构在成本和性能方面都会带来明显受益;场景二依然在实验阶段,虽然可以在性能和成本方面带来极大受益,但当前还不推荐直接用于生产环境;场景三在成本方面不会有明显收益,在热启动时可以优化响应的延迟,但在冷启动时延迟会比不使用扩展时更高。)

原文链接

Rust in AWS Lambda: a magic ingredient to reduce cost and increase performance?(https://devclass.com/2023/12/21/rust-in-aws-lambda-a-magic-ingredient-to-reduce-cost-and-increase-performance/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

谷歌新年大裁员,引硅谷裁员潮!OpenAI正式推出GPT Store,但第一批应用已被像素级抄袭;腾讯服务器深夜崩溃 | Q资讯

纯向量数据库和向量插件都有局限,那未来发展有其他方向吗?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

钉钉抢做“中国版 GPT Store”

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
视觉Mamba来了:速度提升2.8倍,内存能省87%计算需求降为1%! 清华大学首次提出「二值化光谱重建算法」,代码全开源|NeurIPS 2023Ruffle 2023回顾——Rust实现的开源Flash Player模拟器联手 OpenAI 最强竞对展开生成式 AI 反击战:亚马逊云科技将 S3 写入速度提升 10 倍、推出全新三层技术栈微信小游戏在PC上有多猛?时长是手游3.9倍、ARPU 2倍、付费率2.4倍LLM生成延迟降低50%!DeepSpeed团队发布FastGen:动态SplitFuse技术,提升2.3倍有效吞吐量Linus Torvalds:Linux 内核中的 Rust、AI 和疲劳的维护者 | Linux 中国快餐式的情欲爆火!清华提出LCM火了!让实时文字生成图像速度提升5-10倍,浏览超百万!冷启动越来越难,新品牌如何才能闪亮登场?《吉林省留守儿童和困境儿童关爱服务质量提升三年行动实施方案》实时文生图速度提升5-10倍,清华LCM/LCM-LoRA爆火,浏览超百万、下载超20万Hyena成下一代Transformer?StripedHyena-7B开源:最高128k输入,训练速度提升50%微软组建新团队,帮助用Rust重写核心Windows库世界排名再提升三位!咀外文嚼汉字(293)药草; 香草;“巴吉尔”,“罗勒”龙行龘(dá)龘(dá)!这些三叠字怎么念?向微软“复仇”!支持OpenAI、Copilot 的Zed编辑器要干掉VS Code:Rust+少插件,速度贼快今日Arxiv最热NLP大模型论文:清华大学让大语言模型自动并行自回归解码,速度提升高达4倍!dá àn jiē xiǎo 🥳龙行龘(dá)龘(dá)!2024 新版 Win11 要来了!16GB 内存需求引热议龙行龘(dá)龘(dá)!2024央视春晚宣布→网络规模、训练学习速度提升,清华团队在大规模光电智能计算方向取得进展中原信托内部晋升三位高管6049 血壮山河 卢沟桥之变 18硬核观察 #1191 Linux 中的 Rust 支持继续成熟随记Rufus 4.4发布,开源USB启动盘制作工具突发!澳洲街头不断有人流血倒下,持刀男子在澳CBD、内城区疯狂作案,3小时4人被当街捅伤!身在海外,要注意这些...今日arXiv最热NLP大模型论文:伯克利&DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!深夜突发!持刀男子在墨尔本CBD、内城区疯狂作案!3小时4人被当街捅伤,1人重伤!身在海外,要注意这些...台湾“蓝白”合谈成了,开创台湾新纪元!首创pix2emb范式!NUS清华联合发布NExT-Chat:对话/检测/分割全能多模态大模型Python + Docker 还是 Rust + WebAssembly?这并不难选
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。