在大型语言模型(LLM)的世界中,有两个强大的框架用于部署和服务LLM:vLLM 和 Text Generation Interface (TGI)。这两个框架都有各自的优势,适用于不同的使用场景。在这篇博客中,我们将对这两个框架进行详细的比较。
vLLM
vLLM 是一个用于 LLM 推理和服务的高吞吐量和内存高效的库。它具有以下特点:
- 具有最先进的服务吞吐量。
- 通过 PagedAttention 高效管理注意力键和值内存。
- 对传入请求进行连续批处理。
- 支持 CUDA/HIP 图形的快速模型执行。
- 量化:GPTQ,AWQ,SqueezeLLM,FP8 KV 缓存。
- 优化的 CUDA 内核。
vLLM 也具有灵活性和易用性:
- 与流行的 Hugging Face 模型无缝集成。
- 使用各种解码算法进行高吞吐量服务,包括并行采样,波束搜索等。
- 支持分布式推理的张量并行性。
- 流式输出。
- 支持 OpenAI 兼容的 API 服务器。
- 支持 NVIDIA GPU 和 AMD GPU(实验性)。
- 支持前缀缓存(实验性)。
- 支持多 lora。
vLLM 无缝支持许多 Hugging Face 模型,包括以下架构:Aquila & Aquila2。
Text Generation Interface (TGI)
Text Generation Interface (TGI) 是一个多功能的选项,支持各种 LLMs,包括量化和微调。它适用于需要为核心模型增加多个 adapter 的场景。
比较
在选择使用哪个框架时,需要根据你的具体需求和应用场景来决定。如果你需要处理大量的 Prompt 输入,并且对推理速度有较高的要求,那么 vLLM 可能是一个更好的选择。如果你需要支持各种 LLMs,并且需要进行量化和微调,那么 TGI 可能更适合你。
在大型语言模型(LLM)的部署和服务框架方面,vLLM 和 Text Generation Interface (TGI) 是两个主流的选择。然而,是否有更好的框架取决于你的具体需求和应用场景。
根据网络上的一些讨论123,以下是一些可能的选择:
CTranslate22:如果你计划在 CPU 上运行推理,CTranslate2 可能是一个好选择
OpenLLM2:如果你打算为核心模型添加适配器并使用 HuggingFace Agents,尤其是不完全依赖 PyTorch,那么 OpenLLM 可能是一个好选择。
Ray Serve2:如果你需要稳定的 Pipeline 和灵活的部署,那么 Ray Serve 可能是一个好选择,它最适合更成熟的项目。
MLC LLM2:如果你打算在客户端(例如,在 Android 或 iPhone 平台上)本地部署 LLM,那么 MLC LLM 可能是一个好选择。
源码:
vllm:
:GitHub - vllm-project/vllm: A high-throughput and memory-efficient inference and serving engine for LLMs
text-generation-webui :
GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, AWQ, EXL2, llama.cpp (GGUF), Llama models.