mlc-llm - 使每个人都能在每个人的设备上本地开发、优化和部署 AI 模型。

Created at: 2023-04-29 09:59:25
Language: Python
License: Apache-2.0

理学硕士

项目页面 |文档 |博客 |网络法学硕士 |网络稳定扩散 |不和

MLC LLM 是一种通用解决方案,允许将任何语言模型本地部署在各种硬件后端和本机应用程序上,并为每个人提供一个高效的框架,以进一步优化自己用例的模型性能。

我们的使命是使每个人都能在每个人的设备上本地开发、优化和部署 AI 模型

一切都在本地运行,无需服务器支持,并通过手机和笔记本电脑上的本地 GPU 加速。支持的平台包括:

  • 苹果手机、苹果手机;
  • 安卓手机;
  • 苹果硅和x86 MacBook;
  • AMD、Intel 和 NVIDIA GPU,通过 Windows 和 Linux 上的 Vulkan;
  • NVIDIA GPU 通过 Windows 和 Linux 上的 CUDA;
  • 浏览器上的WebGPU(通过配套项目WebLLM)。

点击这里加入我们的不和谐服务器!

[新闻]MLC LLM现在支持7B / 13B / 70B Llama-2!

查看我们的说明页面进行试用!

什么是MLC LLM?

近年来,生成人工智能(AI)和大型语言模型(LLM)取得了显着进展,这些技术正变得越来越普遍。由于开源计划,现在可以使用开源模型开发个人AI助手。然而,LLM往往是资源密集型和计算要求高的。要创建可扩展的服务,开发人员可能需要依靠强大的集群和昂贵的硬件来运行模型推理。此外,部署LLM带来了一些挑战,例如它们不断发展的模型创新,内存约束以及对潜在优化技术的需求。

该项目的目标是开发、优化和部署 AI 模型,以便在各种设备上进行推理,不仅包括服务器级硬件,还包括用户的浏览器、笔记本电脑和移动应用程序。为了实现这一目标,我们需要解决计算设备和部署环境的多样性。一些主要挑战包括:

  • 支持不同型号的 CPU、GPU 以及潜在的其他协处理器和加速器。
  • 部署在用户设备的本机环境中,这些设备可能没有现成的 python 或其他必要的依赖项。
  • 通过仔细规划分配和积极压缩模型参数来解决内存限制。

MLC LLM 提供了一个可重复、系统和可定制的工作流程,使开发人员和人工智能系统研究人员能够以以生产力为中心、Python 优先的方法实施模型和优化。此方法支持对新模型、新想法和新编译器传递进行快速试验,然后对所需目标进行本机部署。此外,我们通过拓宽TVM后端来不断扩展LLM加速,使模型编译更加透明和高效。

MLC 如何启用通用本机部署?

我们解决方案的基石是机器学习编译 (MLC),我们利用它来高效部署 AI 模型。我们建立在开源生态系统的肩膀上,包括来自Hugging Face和Google的令牌化器,以及Llama,Vicuna,Dolly,MOSS,RWKV等开源LLM。我们的主要工作流程基于 Apache TVM Unity,这是 Apache TVM 社区中令人兴奋的持续发展。

  • 动态形状:我们将语言模型烘焙为具有本机动态形状支持的 TVM IRModule,避免了对最大长度的额外填充,并减少了计算量和内存使用量。
  • 可组合 ML 编译优化:我们执行了许多模型部署优化,例如更好的编译代码转换、融合、内存规划、库卸载和手动代码优化,可以轻松地合并为 TVM 的 IRModule 转换,作为 Python API 公开。
  • 量化:我们利用低位量化来压缩模型权重,并利用TVM的循环级TensorIR为不同的压缩编码方案快速定制代码生成。
  • 运行时:最终生成的库在本机环境中运行,TVM 运行时附带的依赖项最少,支持各种 GPU 驱动程序 API 和本机语言绑定(C、JavaScript 等)。

架构图

此外,我们还提供了一个轻量级的基于 C++ 的示例 CLI 应用程序,展示了如何包装已编译的工件和必要的预/后处理,这将有望阐明将它们嵌入本机应用程序的工作流程。

作为起点,MLC为CUDA,Vulkan和Metal生成GPU着色器。通过改进TVM编译器和运行时,可以添加更多支持,例如OpenCL,sycl,webgpu-native。MLC还支持各种CPU目标,包括通过LLVM的ARM和x86。

我们严重依赖开源生态系统,更具体地说,TVM Unity,这是TVM项目中令人兴奋的最新发展,它支持python优先的交互式MLC开发体验,使我们能够轻松地在Python中编写新的优化,并逐步将我们的应用程序带到感兴趣的环境中。我们还利用了融合量化内核、一流的动态形状支持和多样化的 GPU 后端等优化。

开始使用 MLC-LLM

请查看我们的文档以开始使用MLC-LLM的旅程。

链接

确认

该项目由来自CMU catalyst,UW SAMPL,SJTU,OctoML和MLC社区的成员发起。我们很乐意继续开发和支持开源 ML 社区。

这个项目之所以成为可能,要归功于我们肩负的开源生态系统。我们要感谢 Apache TVM 社区和 TVM Unity 工作的开发人员。开源 ML 社区成员公开了这些模型。PyTorch和Hugging Face社区使这些模型易于访问。我们要感谢Vicuna,SentencePiece,LLaMA,Alpaca,MOSS和RWKV背后的团队。我们还要感谢支持这个项目的 Vulkan、Swift、C++、Python Rust 社区。