ExLlama 概述
ExLlama:用于量化权重的内存高效 Llama 实现
ExLlama 是 Llama 的一个独立 Python/C++/CUDA 实现,专为在使用现代 GPU 上的 4 位 GPTQ 权重时实现速度和内存效率而设计。该项目旨在为 Hugging Face Transformers 实现提供更快、更节省内存的替代方案,特别是对于使用量化模型的用户。
什么是 ExLlama?
ExLlama 旨在成为 Llama 系列语言模型的高性能推理引擎。它利用 CUDA 进行 GPU 加速,并针对 4 位 GPTQ 量化权重进行了优化,使用户能够在内存有限的 GPU 上运行大型语言模型。
ExLlama 如何工作?
ExLlama 通过以下几种技术优化内存使用和推理速度:
- CUDA 实现: 利用 CUDA 实现高效的 GPU 计算。
- 量化支持: 专门为 4 位 GPTQ 量化权重设计。
- 内存效率: 与标准实现相比,减少了内存占用。
主要特性和优势:
- 高性能: 针对快速推理进行了优化。
- 内存效率: 允许在性能较低的 GPU 上运行大型模型。
- 独立实现: 无需 Hugging Face Transformers 库。
- Web UI: 包括一个简单的 Web UI,方便与模型交互(JavaScript 由 ChatGPT 编写,请注意!)。
- Docker 支持: 可以在 Docker 容器中运行,以便于部署和安全性。
如何使用 ExLlama?
安装:
- 克隆存储库:
git clone https://github.com/turboderp/exllama - 导航到目录:
cd exllama - 安装依赖项:
pip install -r requirements.txt
- 克隆存储库:
运行基准测试:
python test_benchmark_inference.py -d <path_to_model_files> -p -ppl
运行 Chatbot 示例:
python example_chatbot.py -d <path_to_model_files> -un "Jeff" -p prompt_chatbort.txt
Web UI:
- 安装其他依赖项:
pip install -r requirements-web.txt - 运行 Web UI:
python webui/app.py -d <path_to_model_files>
- 安装其他依赖项:
为什么选择 ExLlama?
ExLlama 具有以下几个优势:
- 性能: 与其他实现相比,提供更快的推理速度。
- 可访问性: 使 GPU 内存有限的用户能够运行大型语言模型。
- 灵活性: 可以通过 Python 模块集成到其他项目中。
- 易用性: 提供一个简单的 Web UI 用于与模型交互。
ExLlama 适用于哪些人?
ExLlama 适用于:
- 研究人员和开发人员使用大型语言模型。
- 使用 NVIDIA GPU 的用户(推荐 30 系列及更高版本)。
- 那些寻求内存高效和高性能推理解决方案的人。
- 任何有兴趣使用 4 位 GPTQ 量化运行 Llama 模型的人。
硬件要求:
- NVIDIA GPU(推荐 RTX 30 系列或更高版本)
- ROCm 支持在理论上可行,但未经测试
依赖项:
- Python 3.9+
- PyTorch(在 2.0.1 和 2.1.0 nightly 上测试)与 CUDA 11.8
- safetensors 0.3.2
- sentencepiece
- ninja
- flask 和 waitress(对于 Web UI)
Docker 支持:
ExLlama 可以在 Docker 容器中运行,以便于部署和安全性。Docker 镜像支持 NVIDIA GPU。
结果和基准:
ExLlama 与其他实现相比,在性能方面表现出显著的改进,尤其是在推理期间的每秒令牌数 (t/s) 方面。提供了针对不同 GPU 配置的各种 Llama 模型大小(7B、13B、33B、65B、70B)的基准。
使用示例
import torch
from exllama.model import ExLlama, ExLlamaCache, ExLlamaConfig
from exllama.tokenizer import ExLlamaTokenizer
## 初始化模型和 tokenizer
model_directory = "/path/to/your/model"
tokenizer_path = os.path.join(model_directory, "tokenizer.model")
model_config_path = os.path.join(model_directory, "config.json")
config = ExLlamaConfig(model_config_path)
config.model_path = os.path.join(model_directory, "model.safetensors")
tokenizer = ExLlamaTokenizer(tokenizer_path)
model = ExLlama(config)
cache = ExLlamaCache(model)
## 准备输入
prompt = "The quick brown fox jumps over the lazy"
input_ids = tokenizer.encode(prompt)
## 生成输出
model.forward(input_ids, cache)
token = model.sample(temperature = 0.7, top_k = 50, top_p = 0.7)
output = tokenizer.decode([token])
print(prompt + output)
兼容性和模型支持:
ExLlama 与一系列 Llama 模型兼容,包括 Llama 1 和 Llama 2。该项目不断更新以支持新模型和功能。
ExLlama 是任何希望高效运行 Llama 模型的人的强大工具。它专注于内存优化和速度,使其成为研究和实际应用的绝佳选择。
"ExLlama"的最佳替代工具
Friendli Inference 是最快的 LLM 推理引擎,针对速度和成本效益进行了优化,可在提供高吞吐量和低延迟的同时,将 GPU 成本降低 50-90%。
使用 llama.cpp 实现高效的 LLM 推理,这是一个为各种硬件优化的 C/C++ 库,支持量化、CUDA 和 GGUF 模型。 非常适合本地和云部署。
使用 Next.js, Groq, Llama-3 和 Langchain 构建一个 Perplexity 风格的 AI 问答引擎。高效获取来源、答案、图像和后续问题。
Nebius AI Studio Inference Service 提供托管开源模型,实现比专有 API 更快、更便宜、更准确的推理结果。无需 MLOps,即可无缝扩展,适用于 RAG 和生产工作负载。
ChatLLaMA 是基于 LLaMA 模型的 LoRA 训练 AI 助手,可在本地 GPU 上运行自定义个人对话。提供桌面 GUI,使用 Anthropic 的 HH 数据集训练,支持 7B、13B 和 30B 模型。
Hoody AI 通过安全仪表板提供对领先LLM如GPT-4o、Claude 3.7和Llama 3.1的匿名访问。享受多模型聊天、语音交互、文件上传以及无跟踪或个人信息要求的完整隐私。
Inweave 是一个为初创企业和扩展企业设计的 AI 驱动平台,可高效自动化工作流。通过聊天或 API 使用 GPT 和 Llama 等顶级模型部署可定制 AI 助手,实现无缝生产力提升。
Sagify 是一个开源 Python 工具,可简化 AWS SageMaker 上的机器学习管道,提供统一的 LLM 网关,实现专有和开源大型语言模型的无缝集成,提高生产力。
体验 Reflection 70B,世界领先的开源 AI 模型。它采用 Reflection-Tuning 训练,可以实时检测和纠正推理错误,非常适合复杂任务。
无需设置任何服务器,即可立即运行HuggingFace中的任何Llama模型。提供超过11,900种模型。起价为每月10美元,无限制访问。
在线体验 Reflection 70B,一款基于 Llama 70B 的开源 LLM。凭借创新的自我修正功能,性能优于 GPT-4。提供在线免费试用。
Fireworks AI 使用最先进的开源模型为生成式人工智能提供极快的推理。 免费微调和部署您自己的模型。 在全球范围内扩展 AI 工作负载。