LLM 部署(1)——LLM 部署框架对比
1 Ollama
一个专注于简化大型语言模型(LLM)在本地部署和运行的开源框架。
-
简化部署:Ollama使用Docker容器技术来简化LLM的部署过程
-
捆绑模型组件:Ollama将模型权重、配置和数据捆绑到一个包中,称为Modelfile,这有助于优化设置和配置细节,包括GPU使用情况。
-
支持多种模型:Ollama支持多种大型语言模型,并允许用户根据特定需求定制和创建自己的模型。
-
跨平台支持:Ollama支持macOS和Linux平台,Windows平台。
-
命令行操作:安装完成后,用户可以通过简单的命令行操作启动和运行大型语言模型。
-
ollama 对于内存和显存资源有一定的需求。可以应用于多种场景,如聊天机器人、文本生成、问答系统等。
-
提供了简洁的API和类似ChatGPT的聊天界面
-
运行时占用资源少,适合在本地计算机上运行。
2 vLLM
vLLM 是一个基于Python的LLM推理和服务框架,旨在提升推理速度、降低显存占用,并更好地满足实际应用需求。它通过创新的PagedAttention技术、连续批处理、CUDA核心优化以及分布式推理支持,显著提高了LLM的推理性能。
-
PagedAttention技术:通过内存管理技术,PagedAttention能够将注意力机制中的键(keys)和值(values)存储在不连续的显存空间中,从而减少显存碎片,提高显存利用率。
-
连续批处理:vLLM能够连续批处理接入的请求,充分利用GPU资源,提高吞吐量。
-
CUDA核心优化:针对CUDA核心进行了优化,确保速度与效率。
-
分布式推理支持:支持分布式推理,能够在多台GPU上并行运行模型,进一步提高推理速度。
-
支持多种模型格式:包括PyTorch、TensorFlow等
-
高性能推理引擎:支持在线推理和批量推理,能够快速响应大量并发请求。
-
提供丰富的接口和输出格式,方便用户将推理结果集成到实际应用中。
部署步骤通常包括:
- 安装虚拟环境(如conda或virtualenv)
- 安装必要的依赖库(如torch、transformers等)
- 下载vLLM源码并解压到本地目录
- 配置模型参数,包括模型路径、输入输出数据类型等
- 启动vLLM服务,并指定监听端口等参数
3 LightLLM
LightLLM是一个基于Python的轻量级、高性能的LLM(大型语言模型)推理和服务器框架。它借鉴并整合了FasterTransformer、TGI、vLLM和FlashAttention等优秀开源实现。
- 三进程异步协作:LightLLM采用三进程架构,将词法化(tokenize)、模型推断和词法还原(detokenize)三大步骤解耦,通过异步协作的方式运行。提高了GPU的利用率,减少了数据传输带来的延迟。
- Nopad无填充操作:LightLLM支持Nopad无填充操作,能够更有效地处理长度差异较大的请求,避免了无效填充,从而提高了资源利用率。
- 动态批处理:系统能够动态调整请求批次的大小,以适应不同长度的输入请求
- FlashAttention集成:通过集成FlashAttention技术,LightLLM在保持高速运行的同时,还能有效降低GPU内存使用,优化推理速度。
- Token Attention:引入了一种以Token为粒度进行kv cache显存管理的特性,通过高性能的算子和高效的显存申请释放方式,有效管理模型推理过程中的显存占用,减少显存碎片化问题。
- Tensor Parallelism:支持多GPU并行计算,加速推理过程
- Int8KV Cache:扩大令牌容量,提高系统效率
4 llama.cpp
llama.cpp 旨在优化语言模型在多种硬件上的推理性能。通过优化和量化技术,提高模型在CPU、GPU等硬件上的推理速度和效率。
- 高性能推理引擎:使用C语言编写的机器学习张量库ggml,高效处理大规模的张量运算,加速模型推理。支持CPU、CUDA和OpenCL,能够在多种硬件上运行
- 模型量化工具:允许用户将原本的32位浮点数模型参数量化为16位浮点数,甚至是更低精度的8位或4位整数。
- 服务化组件:提供服务化组件,可以直接对外提供模型的API,便于用户构建自己的应用。
- 多格式支持:支持多种模型格式,包括PyTorch的.pth、huggingface的.safetensors以及llama.cpp采用的ggmlv3等。