SuperAPI AI 工具集

exllama

ExLlama 是一个用于 4 位 GPTQ 量化权重的独立 Python/C++/CUDA 实现,基于 Llama 架构,重写了 Hugging Face Transformers 的 Llama 实现,旨在现代 GPU 上实现快速且内存高效的推理。项目由 turboderp 开发,目前仍在进行中。支持 30 系列及更新的 NVIDIA GPU(如 RTX 4090、RTX 3090-Ti),对 Pascal 或更旧 GPU 性能不佳,建议使用 AutoGPTQ 或 GPTQ-for-LLaMa。需要 Python 3.9+、PyTorch 2.0.1 或 2.1.0、safetensors 0.3.2。还提供了简单的 Web UI,支持多机器人模式,并可通过 Docker 容器隔离运行(仅支持 NVIDIA GPU)。ExLlamaV2 已初步发布。

访问官网

工具介绍

ExLlama 是一个针对 4 位 GPTQ 量化权重的 Llama 模型推理实现,采用 Python、C++ 和 CUDA 编写,作为 Hugging Face Transformers 中 Llama 实现的更节省内存的重写版本。该项目旨在在现代 GPU 上提供快速且内存高效的推理。

用途

ExLlama 主要用于运行经过 GPTQ 4 位量化的 Llama 系列模型,适用于需要在消费级 GPU 上高效推理大语言模型的场景。它通过优化内存使用和计算速度,使得在有限显存下运行较大模型成为可能。

主要能力

  • 支持 4 位 GPTQ 量化权重,显著降低显存占用。
  • 针对 NVIDIA 30 系列及更新 GPU(如 RTX 4090、RTX 3090-Ti)优化,提供高性能推理。
  • 提供独立的 Python 模块,便于集成到其他项目。
  • 包含简单的 Web UI,支持多机器人模式,会话默认存储在 ~/exllama_sessions/ 目录。
  • 支持分片模型(sharded models),可处理多个 .safetensors 文件。
  • 提供 Docker 支持,可在隔离容器中运行 Web UI(仅限 NVIDIA GPU),支持 rootless 模式。
  • 已初步发布 ExLlamaV2,功能有所改进。

使用方式

环境要求

  • Python 3.9 或更高版本。
  • PyTorch 2.0.1 或 2.1.0(nightly),配合 cu118。
  • safetensors 0.3.2。
  • 仅 Web UI 需要额外依赖(Linux/WSL 或 Windows 前置条件)。

Windows 安装(非 WSL)

  1. 安装 MSVC 2022(Visual Studio 2022 IDE 或 Build Tools for Visual Studio 2022,确保勾选“使用 C++ 的桌面开发”)。
  2. 安装合适版本的 PyTorch,选择 CUDA 版本(稳定版 2.0.1 也可)。
  3. 安装 CUDA Toolkit(11.7 或 11.8 均可,需与 PyTorch 的 Compute Platform 版本匹配)。
  4. 为获得最佳性能,启用硬件加速 GPU 调度。

克隆与运行

  • 克隆仓库,安装依赖,运行基准测试。
  • CUDA 扩展在运行时加载,无需单独安装。首次运行时会编译并缓存到 ~/.cache/torch_extensions/,可能需要一些时间。
  • 提供聊天机器人示例。

Web UI

  • 可通过简单 Web UI 使用,支持多机器人模式。
  • 会话默认存储在 ~/exllama_sessions/,可通过 -sd 更改位置。
  • 可通过 Docker 容器隔离运行,需使用 NVIDIA Container Toolkit,推荐 rootless 模式。
  • 使用 docker compose 构建镜像:设置 .env 文件中的 MODEL_PATH 和 SESSIONS_PATH 变量,然后运行 docker compose 命令。也可手动构建。
  • 默认容器内服务以非 root 用户运行,会更改绑定挂载目录的所有权,可通过设置 RUN_UID=0 禁用。
  • Web UI 可通过 http://localhost:5000 访问。
  • 配置可在 docker-compose.yml 中查看,并通过 docker-compose.override.yml 修改。

适用场景

  • 在本地 GPU 上运行 4 位量化的 Llama 模型进行推理和对话。
  • 需要低显存占用、高推理速度的场景。
  • 集成到其他 Python 项目中。
  • 通过 Web UI 进行交互式对话,支持多机器人。
  • 在 Docker 环境中部署以增强安全性和易部署性。

限制

  • 项目仍在进行中,可能不完善。
  • 仅支持 30 系列及更新的 NVIDIA GPU,Pascal 或更旧 GPU 性能不佳,建议使用 AutoGPTQ 或 GPTQ-for-LLaMa。
  • ROCm(AMD GPU)理论上支持(通过 HIP),但作者没有 AMD 设备进行测试或优化。
  • 无法在不发生 OOM 的情况下达到完整序列长度。
  • 显存使用受 PyTorch 内部开销影响,难以精确预测,建议在 24 GB GPU 上优化模型显存占用至 20 GB 左右。
  • 困惑度(Perplexity)测量仅用于验证模型工作,数据集为 WikiText 的小样本,分数不可与其他 Llama 基准直接比较。
  • Docker 镜像目前仅支持 NVIDIA GPU。
  • 模型支持列表和更新日志:2023-01-09 添加 rope_theta 参数支持 CodeLlama(部分),2023-08-09 支持分片模型,2023-08-12 初步发布 ExLlamaV2。
  • 官方确认可用的模型列表在仓库中提供。

分类

根据其用途,ExLlama 属于 AI 开发平台(ai-frameworks),因为它是用于模型推理的框架/实现。