本文介绍: 然而,当涉及到为大型语言模型(LLM)应用程序构建基础设施时,这种组合的一些缺点变得更加严重,例如 Python 的性能问题和 Docker 的冷启动问题。Docker 容器虽然高效,但有时会面临冷启动性能的挑战。在不断发展的技术世界中,由大语言模型驱动应用程序,通常被称为“LLM 应用”,已成为各种行业技术创新背后的驱动力。借助“Llama2.c”和“llama.cpp”等工具和库,WASI-NN 提供为大型模型应用程序量身定制功能,确保开发者拥有他们需要的的工具,以处理广泛的数据集和复杂的模型

在不断发展的技术世界中,由大语言模型驱动应用程序,通常被称为“LLM 应用”,已成为各种行业技术创新背后的驱动力。随着这些应用程序的普及,用户需求的大量涌入对底层基础设施的性能、安全性和可靠性提出了新的挑战。

Python 和 Docker 一直是构建机器学习应用程序的主流选择。然而,当涉及到为大型语言模型(LLM)应用程序构建基础设施时,这种组合的一些缺点变得更加严重,例如 Python 的性能问题和 Docker 的冷启动问题。本演讲重点关注为 LLM 生态构建基础设施的主要场景,并深入探讨 Python 和 Docker 组合的问题,更重要的是,为什么 Rust + WebAssembly (WASM) 优于 Python + Docker。最后我们将演示如何在 flows.network 平台上构建一个代码检查机器人

现有解决方案:Python + Docker 方法

机器学习领域,Python 几乎称王,主要得益于以下三个特点:

Docker 容器作为当今最流行的容器管理工具之一,为应用部署提供了极大的便利:

对于传统机器学习应用的开发部署,Python+Docker 模式展现了其优势。然而,在 LLM 生态的基础设施建设中,却面临着挑战。

Python + Docker 的挑战

Python 和 Docker 的优点自然也带来了一些缺点。然而,在 LLM 生态基础设施建设的过程中,这些缺陷变得更加突出,成为关键障碍。让我们看看 Python 存在的问题。

Python 的缺点

 性能瓶颈

Python 是一种解释性语言,这意味着它可能比 C++ 或 Rust 等编译语言慢。当处理需要大量计算的大型数据集或复杂模型时,这可能是一个缺点。

在图 1 中,前三行分别显示了用 Python、Java 和 C 编写的将两个 4096 x 4096 矩阵相乘的编程性能。从“运行时间(秒)”一栏的统计数可以看出,(1)Java(作为静态编程语言)比 Python(作为动态编程语言)快 10 倍;(2) C(作为非 GC 编程语言)比 Python(作为 GC 编程语言)快 50 倍。

图片

图 1 程序性能工程的加速 将两个 4096×4096 矩阵相乘。

混合编程:Python + C/C++/Rust

为了改善 Python 语言本身的性能问题,常见的做法是使用 Python 作为负责与用户交互的前端语言,同时选择 C/C++/Rust 等高性能编程语言作为后端 语言来处理繁重的计算任务。Python 生态中很多知名库都采用这种方式来满足高性能计算的需求,比如 Numpy。然而,这种混合编程方法不可避免地需要额外的工具(或库)作为“连接”两种不同编程语言的桥梁。因此,这个过程可能会带来新的问题。

 维护成本

假设我们想要“绑定” Python 和 C++ API,我们必须使用第三方库来自动化这个转换过程,例如 Pybind11。图 2 中的示例代码展示了如何使用 Pybind11 “绑定” C++ 和 Python 程序。不难看出,尽管 Pybind11 极大地简化了转换过程,但添加删除任何 C++ API 都需要对转换代码进行相应的更改,并且更改的难度与变更内容密切相关。从成本角度来看,这个过程不仅增加了开发者的学习成本,也增加了项目开发和维护成本。

图片

图片

图 2 将 C++ 和 Python“粘合”在一起。

 可移植性问题

 集成复杂性

Docker 容器的局限性

 冷启动性能

 磁盘空间消耗

  • Docker 容器有时可能非常庞大,消耗的磁盘空间达到千兆字节 (GB) 的量级。当容器包含所有必要的依赖项和运行环境时尤其如此。如此大的容器大小可能会导致存储成本增加、部署时间变慢以及管理和分发容器映像方面的挑战。

 硬件加速器支持

  • 虽然 Docker 容器可以利用硬件加速器来提高性能,但有一个问题。他们通常需要特定版本软件来确保兼容性。这意味着组织可能需要维护多个版本的容器或更新硬件加速器以满足软件要求,从而增加了复杂性和管理开销。

 可移植性问题

  • Docker 的主要卖点之一是它的可移植性。然而,这种可移植性有时取决于 CPU 架构。虽然 Docker 容器被设计为在不同环境中一致运行,但在不同 CPU 架构之间移动时可能会存在差异。这可能会给确保不同部署环境中的一致性能和行为带来挑战。

 安全依赖

这些限制凸显了对替代解决方案的需求,例如 Rust + WebAssembly,它有望解决其中一些痛点,并为部署 LLM 应用程序提供更高效、更安全的环境。

AGI 将是由 Rust 和
WebAssembly 构建

为什么 Rust 和 WebAssembly 可以成为 AGI 的语言?

图片

Rust:AGI 时代的最佳选择

WASM 容器:更快、更轻、更安全

Shivraj Jadhav 从多个维度比较了 Docker 容器和 WASM。

图片

表 1 WASM 与 Docker

 WASI-NN 标准

除了上述优点之外,WebAssembly 针对机器学习应用的 WASI-NN 标准也是一个重要因素。

  • 主流机器学习推理引擎 WASI-NN 旨在与流行的机器学习推理引擎(如 TensorFlow、PyTorch 和 OpenVINO)无缝协作。

  • 大型语言模型的扩展 借助“Llama2.c”和“llama.cpp”等工具和库,WASI-NN 提供为大型模型应用程序量身定制功能,确保开发者拥有他们需要的的工具,以处理广泛的数据集和复杂的模型。

最新发布的 WasmEdge 0.13.5 已经支持使用 Rust 和 Wasm 运行 llama2 系列大模型,包括但不限于我们熟知的 Codellama、Mistral、OpenChat、BELLE-Llama2、Yi-34B 等等。详情请查看 llama-utils。

应用场景:代码检查代理(Agent)

在本节中,我们将演示如何使用“flows.network平台构建代码检查代理。在深入讨论具体示例之前,我们首先看一下“Agent”和“flows.network平台概念模型。

Agent 的概念模型

这是 Lilian Weng 提出的基于 LLM 的 AI Agent 的概念框架

图片

图 3 LLM 驱动的自治代理系统概述

在这个模型中,LLM 函数扮演了智能体大脑的角色,负责核心推理和决策,但它仍然需要额外的模块来启用关键能力:规划、长 / 短期记忆和工具使用。

“flows.network”平台基于与 Lilian 提出的模型类似的理念构建的。图 4 显示了其主要组件。整个平台是用 Rust 编写的,编译为 wasm 模块,并在 WasmEdge Runtime运行

图片

图 4 Flows.network 的主要组件

代码检查代理

在“flows.network”平台上,我们提供了一个代理(一个机器人模版)来帮助 GitHub 上开源项目的维护者审核 PR。将其命名为“代码检查机器人”。

代理抽象设计如图 5 所示。图中中心的红色块code-review-function 定义了核心代理函数,而红色块周围的每个虚线圆圈与直接连接到图 3 中“代理”块的对应部分相匹配

图片

图 5 Code Review Bot 抽象设计

图 6 描述了Code Review Bot的架构。除了 GitHub Service 等外部资源外,代理由 wasm 模块组成,并在 WasmEdge Runtime运行集成 wasm 模块负责通过 Web API 将 WebAssembly 函数连接到外部资源。例如,“codereview-function” wasm 模块将审核中的代码提取提示词,然后openaiintegration” wasm 模块将提示词发送到 ChatGPT 服务并等待响应最后,将评论发送到 code-review-function wasm 模块。

图片

图.6 架构代码检查机器人

图 7 显示了 Code Review Bot 的 PR 检查摘要示例。它总结了目标 PR,列出了隐藏的风险和重大改变等。这些信息可以帮助检查者将注意力集中在关键部分,节省时间。

图片

图 7 代码检查机器人 PR 审核总结示例

代码检查机器人可以在几分钟内完成部署。如果你想在自己的项目中使用它,可参考本指南。

结     论

在 AI 基础设施开发领域,虽然 Python 和 Docker 为我们提供了很好的服务,但探索和采用能够带来更好性能、安全性和效率的新技术至关重要。Rust 和 WebAssembly 的结合反映了这种演变,为开发者和组织提供了一个有吸引力的替代方案。

参考资料

flows.network: 驱动 AI 工作负载的低代码 Serverless 平台。https://flows.network/

llama-utils: 请访问 https://github.com/second-state/llama-utils

 作者简介

Sam Liu, QCon 北京 2023 演讲嘉宾,Second State 工程师,CNCF WasmEdge 维护者 & Miley Fu,CNCF 大使,WasmEdge DevRel

完整幻灯片下载
https://qcon.infoq.cn/202309/beijing/presentation/5466

原文地址:https://blog.csdn.net/richerg85/article/details/134571054

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_5341.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注