本文较长,建议点赞收藏。更多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是一个桌面应用程序,下载安装包安装后即可使用。
官方文档:
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地址:
03 | Ollama
Ollama是构建在llama.cpp上的大模型本地部署工具。支持maxOS/Windows/Linux系统。它支持通过下载软件安装包,以可视化的方式安装,使用起来比较简单,可以把它看作一个软件,安装后通过命令行的方式使用。也支持Docker、python包的方式安装。
主要开发语言为Go。
github地址:
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地址:
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地址:
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地址:
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地址:
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地址:
09 | MLC-LLM
MLC-LLM是AI大神陈天奇开源的,是一个面向大语言模型的机器学习编译器和高性能部署引擎。该项目的使命是使每个人都能在自己的平台上本地开发、优化和部署 AI 模型。
MLC-LLM工作流
MLC-LLM支持多种GPU和操作系统:
主要开发语言为python,还使用了25.5%的C++。
github地址:
10 | Xinference
Xorbits Inference(Xinference)是一个功能强大的分布式推理框架,支持语言、语音识别和多模态模型。
Xinference支持不同的推理引擎,用户选择模型后,Xinference 会自动选择合适的引擎。
可以通过多种方式使用Xinference:Web UI、命令行、python等。
核心特点:
- 多引擎架构设计,支持多种推理引擎,如vLLM、SGLang、llama.cpp等
- 推理时根据模型以及硬件资源自动选择最优的推理引擎
主要开发语言为python,还使用了10.9%的JavaScript。
github地址:
总结
各个大模型推理框架也在不断的更新,一些新的推理技术会逐渐支持,只是开发的快慢而已,就看谁的开源生态更繁荣了。
目前很多大模型框架已支持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。