【大模型推理部署】:开源大模型推理框架有哪些?

199 阅读8分钟

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

大模型经过漫长的训练,最终需要推理评估,走向实际应用。就像人一样,经过多年的学习,最终需要通过面试,走向社会工作。

严格意义上,推理引擎和推理框架是不同的,推理引擎是实际执行大模型计算的代码库,提供了推理加速的功能,如PagedAttention、Continuous Batching等。推理框架集成了推理引擎,提供了更加完善的功能,背后实际提供计算的还是推理引擎。但目前业界似乎划分的没有那么明确。

大模型推理部署是大模型走向应用的关键一环,极致优化的推理框架能够缩短延迟、降低成本。

大模型推理技术发展的比较快,目前已有许多开源的大模型推理框架,很多大模型推理框架在2023年出现。

今天给大家介绍一些目前比较主流的大模型推理工具/引擎/框架。

LMStudio、llama.cpp、Ollama、vLLM、SGLang、LMDeploy、Hugging Face TGI、TensorRT-LLM、MLC-LLM、Xinference是比较有代表性的几个。

LM Studio、Ollama属于开箱即用的工具。

llama.cpp、vLLM、SGLang、LMDeploy、Hugging Face TGI、TensorRT-LLM、MLC-LLM、Xinference是推理引擎或者框架。

可以根据应用场景和使用难易程度简单的分为三类:

不会编程的普通用户:LM Studio、Ollama

个人开发者:llama.cpp、Ollama

企业用户:vLLM、SGLang、LMDeploy、TensorRT-LLM、MLC-LLM、Hugging Face TGI、Xinference。

其中使用起来最简单的是LMStudio,提供了图像化界面,即使不会编程也可以轻松使用。

Ollama使用也比较简单,对于普通用户提供了命令行,对于开发者,提供了API。

对于需要部署到生产环境中的企业用户,vLLM、SGLang、LMDeploy、TensorRT-LLM、MLC-LLM、Hugging Face TGI、Xinference这些框架提供了更灵活、可分布式部署的服务。

01 | LM Studio

LM Studio是本地部署大模型的工具,提供了可视化的图形界面,适合没有编程经验的人使用,极大降低了大模型在本地部署的门槛,支持Windows、macOS、Linux系统。LM Studio是一个桌面应用程序,下载安装包安装后即可使用。

官方文档:

lmstudio.ai/docs/

02 | llama.cpp

llama.cpp从其名字就能看出,它是一个使用C/C++进行开发的大模型推理引擎,最初是为了实现LLaMA系列模型的本地高效推理,现在也支持其他的大模型。针对CPU进行了优化,支持低性能硬件,如在笔记本电脑和手机上部署大模型。

核心特点:

  • 通过 ARM NEON、Accelerate 和 Metal 框架进行了优化
  • 支持x86架构AVX、AVX2、AVX512 和 AMX
  • 支持1.5位、2 位、3 位、4 位、5 位、6 位和 8 位整数量化,以实现更快的推理和减少内存使用
  • 支持英伟达、AMD、摩尔线程GPU
  • 支持 Vulkan 和 SYCL 后端
  • CPU 与 GPU 混合推理,以部分加速大于总显存容量的模型

主要使用C/C++开发,所以推理速度很快。

github地址:

github.com/ggml-org/ll…

03 | Ollama

Ollama是构建在llama.cpp上的大模型本地部署工具。支持maxOS/Windows/Linux系统。它支持通过下载软件安装包,以可视化的方式安装,使用起来比较简单,可以把它看作一个软件,安装后通过命令行的方式使用。也支持Docker、python包的方式安装。

主要开发语言为Go。

github地址:

github.com/ollama/olla…

04 | vLLM

vLLM 是一个开源的大模型推理引擎,快速且易于使用。vLLM起源于论文(《Efficient Memory Management for Large Language Model Serving with PagedAttention》),论文中提出了PagedAttention。vLLM 最初由加州大学伯克利分校的Sky Computing Lab开发,如今已发展为一个由开源社区驱动的项目,吸引了来自学术界和工业界的贡献。

核心特点:

  • PagedAttention
  • Continuous Batching
  • 通过CUDA/HIP graph实现快速模型执行
  • GPTQ, AWQ, AutoRound, INT4, INT8, and FP8量化
  • 优化的 CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成
  • Speculative decoding
  • Chunked prefill

主要开发语言为python。

github地址:

github.com/vllm-projec…

05 | SGLang

SGLang最初是由斯坦福大学和加州大学伯克利分校的团队开源的,是一个高性能的大语言模型和视觉语言模型推理引擎。它旨在在各种环境中提供低延迟和高吞吐量的推理,从单个 GPU 到大型分布式集群。SGLang起源于论文《SGLang: Efficient Execution of Structured Language Model Programs》),论文中提出了RadixAttention,带来了5倍推理速度提升。

SGLang提出的零开销CPU调度(zero-overhead CPU scheduler)降低了CPU的调度开销。

核心特点:

  • RadixAttention
  • zero-overhead CPU scheduler
  • PD分离
  • speculative decoding
  • continuous batching
  • paged attention
  • tensor/pipeline/expert/data并行
  • 结构化输出
  • chunked prefill
  • FP4/FP8/INT4/AWQ/GPTQ量化
  • multi-LoRA batching

主要开发语言为python,还使用了13.2%的Rust。

github地址:

github.com/sgl-project…

06 | TensorRT-LLM

TensorRT LLM 是由英伟达开源的推理引擎,专门为英伟达GPU设计开发的,用于优化大语言模型(LLM)的推理。它提供了最先进的优化,包括自定义注意力内核、inflight batching、paged KV caching、量化(FP8、FP4、INT4 AWQ、INT8 SmoothQuant 等)、speculative decoding等功能,以高效地在 NVIDIA GPU 上执行推理。

核心特点:

  • 自定义注意力内核(custom attention kernel)
  • inflight batching
  • paged KV caching
  • 支持FP8,FP4,INT4 AWQ,INT8 SmoothQuant等量化
  • speculative decoding

主要开发语言为C++/python。

github地址:

github.com/NVIDIA/Tens…

07 | LMDeploy

LMDeploy由上海人工智能实验室开源的大模型推理引擎,支持国产芯片。LMDeploy 通过引入关键功能,如continuous batching、blocked KV cache, dynamic split&fuse、张量并行等技术,实现了高吞吐。

LMDeploy中开发了两个推理引擎:TurboMind和PyTorch。这两个推理引擎的侧重点不同,前者具有极致优化的推理性能,而后者使用Python开发,旨在降低开发者的使用门槛。

核心特点:

  • continuous batching
  • blocked KV cache
  • dynamic split&fuse
  • 张量并行
  • 高性能的CUDA内核
  • 支持AWQ/GPTQ、SmoothQuant、KV Cache INT4/INT8量化

主要开发语言为python,还使用了21.9%的C++和14.2%的Cuda。

github地址:

github.com/InternLM/lm…

08 | Hugging Face TGI

TGI(Text Generation Inference )是Hugging Face开源的大模型推理引擎。

核心特点:

  • 支持生产环境(Open Telemetry, Prometheus metrics)
  • 张量并行
  • 使用SSE实现token流式传输
  • Continuous batching
  • FlashAttention
  • PagedAttention
  • bitsandbytes、GPTQ、EETQ、AWQ、Marlin、FP8
  • Safetensors 权重加载
  • 大模型水印
  • speculative decoding
  • 支持指定输出格式
  • 支持英伟达GPU、AMD GPU、Intel GPU,还支持亚马逊AI芯片Inferentia、Intel AI芯片Gaudi、谷歌TPU
  • 支持微调

主要开发语言为python,还使用了16.2%的Rust。

github地址:

github.com/huggingface…

09 | MLC-LLM

MLC-LLM是AI大神陈天奇开源的,是一个面向大语言模型的机器学习编译器和高性能部署引擎。该项目的使命是使每个人都能在自己的平台上本地开发、优化和部署 AI 模型。

MLC-LLM工作流

MLC-LLM支持多种GPU和操作系统:

主要开发语言为python,还使用了25.5%的C++。

github地址:

github.com/mlc-ai/mlc-…

10 | Xinference

Xorbits Inference(Xinference)是一个功能强大的分布式推理框架,支持语言、语音识别和多模态模型。

Xinference支持不同的推理引擎,用户选择模型后,Xinference 会自动选择合适的引擎。

可以通过多种方式使用Xinference:Web UI、命令行、python等。

核心特点:

  • 多引擎架构设计,支持多种推理引擎,如vLLM、SGLang、llama.cpp等
  • 推理时根据模型以及硬件资源自动选择最优的推理引擎

主要开发语言为python,还使用了10.9%的JavaScript。

github地址:

github.com/xorbitsai/i…

总结

各个大模型推理框架也在不断的更新,一些新的推理技术会逐渐支持,只是开发的快慢而已,就看谁的开源生态更繁荣了。

目前很多大模型框架已支持PagedAttention、Continuous Batching、Speculative Decoding、Chunked Prefill等特性。

LM Sdudio不需要任何编程经验就可以使用,非常适合没有编程经验的人在本地快速部署大模型。

Ollama使用起来也非常简单,不懂编程也没关系,只需要了解命令行的使用就行,适合不会编程的人、个人开发者和研究者在本地部署大模型。

TensorRT-LLM适合在英伟达GPU上部署大模型的开发者和企业,本地部署和生产环境部署都可以。

LMDeploy适合需要在国产芯片部署大模型的开发者和企业,本地部署和生产环境部署都可以。

另外,vLLM和SGLang是目前使用较多的大模型推理框架,并且在github上有较多的开发者参与项目的更新,新特性支持更快。本地部署和生产环境部署都可以。

Xinference适合企业进行生产环境的分布式部署。

llama.cpp 针对 CPU 进行了深度优化,适合个人开发者在资源有限的设备(例如树莓派、笔记本电脑、手机等)上部署大模型。

MLC-LLM的适用场景与llama.cpp类似,也适合在各种设备上本地部署大模型。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI