Discover / Token & Cost Optimization

ExLlamaV2

by turboderpPython

Fast inference library for running quantized LLMs on consumer GPUs at lower cost.

Repositoryexperimental

Maturity: experimental because latest release v0.3.2 is pre 1.0. Derived from release and commit history, not a rating.

Stars
4.6k
Forks
340
Downloads / mo
Last commit
2026-03-04
License
MIT
Open issues
158

Market and trust evidence

Edition not yet matched

No exact skills.sh identity match is available for this repository. Repository adoption and freshness remain visible above; install momentum is not inferred.

Trust analysis is a screening signal, not a security warranty. Read the ranking and trust methodology.

In practice

Written by AI from this repository’s README · high confidence

Running quantized LLMs fast on a single or multi GPU desktop machine without a heavyweight serving stack.

Use it when

Use it when you want high token throughput from EXL2 or GPTQ quantized models on consumer NVIDIA GPUs, driven from Python.

Not the right pick when

Skip it for new work since the README states the project is archived and development moved to ExLlamaV3.

Capabilities

  • dynamic generator with batching and prompt caching
  • paged attention via Flash Attention 2.5.7+
  • single, batched and asyncio streamed generation
  • speculative decoding and sampling controls
  • Q4 quantized K/V cache mode
  • console chatbot example with selectable prompt formats

Requirements

  • CUDA Toolkit
  • gcc on Linux or Build Tools for Visual Studio on Windows
  • A matching PyTorch version
  • An NVIDIA GPU

Cost: Free and open source

Install

Derived from the published package name in the repository, not from a model.

Video walkthroughs

Third-party YouTube uploads matched to this tool by title, channel and repository name on 2026-08-03. Not made, reviewed or endorsed by SkillPilot. View counts and publish months are as of the match date and the month is approximate. Nothing loads from YouTube until you press play.

What the repository ships

Has testsHas docsHas examplesCI configured

Detected from the actual files in the repository root.

Latest release v0.3.2

Published 2025-07-13

No release notes provided.

Tags

README

Note

This project is archived for now. Development continues on ExLlamaV3.

ExLlamaV2

ExLlamaV2 is an inference library for running local LLMs on modern consumer GPUs.

The official and recommended backend server for ExLlamaV2 is TabbyAPI,

which provides an OpenAI-compatible API for local or remote inference, with extended features like HF model

downloading, embedding model support and support for HF Jinja2 chat templates.

See the wiki for help getting started.

New in v0.1.0+:

  • ExLlamaV2 now supports paged attention via Flash Attention 2.5.7+
  • New generator with dynamic batching, smart prompt caching, K/V cache deduplication and simplified API

alt_text

Dynamic generator

The dynamic generator supports all inference, sampling and speculative decoding features of the previous two

generators, consolidated into one API (with the exception of FP8 cache, though the Q4 cache mode is supported and

performs better anyway, see here.)

The generator is explained in detail here.

  • Single generation:

  output = generator.generate(prompt = "Hello, my name is", max_new_tokens = 200)
  • Batched generation:

    outputs = generator.generate(
        prompt = [
            "Hello, my name is",
            "Once upon a time,",
            "Large language models are",
        ],
        max_new_tokens = 200
    )
  • Streamed generation with asyncio:

    job = ExLlamaV2DynamicJobAsync(
        generator,
        input_ids = tokenizer.encode("You can lead a horse to water"),
        banned_strings = ["make it drink"],
        gen_settings = ExLlamaV2Sampler.Settings.greedy(),
        max_new_tokens = 200
    )
    async for result in job:
        text = result.get("text", "")
        print(text, end = "")

See the full, updated examples here.

Performance

Some quick tests to compare performance with ExLlama V1. There may be more performance optimizations in the future,

and speeds will vary across GPUs, with slow CPUs still being a potential bottleneck:

| Model | Mode | Size | grpsz | act | 3090Ti | 4090 |

|------------|--------------|-------|-------|-----|---------|-------------|

| Llama | GPTQ | 7B | 128 | no | 181 t/s | 205 t/s |

| Llama | GPTQ | 13B | 128 | no | 110 t/s | 114 t/s |

| Llama | GPTQ | 33B | 128 | yes | 44 t/s | 48 t/s |

| OpenLlama | GPTQ | 3B | 128 | yes | 259 t/s | 296 t/s |

| CodeLlama | EXL2 4.0 bpw | 34B | - | - | 44 t/s | 50 t/s |

| Llama2 | EXL2 3.0 bpw | 7B | - | - | 217 t/s | 257 t/s |

| Llama2 | EXL2 4.0 bpw | 7B | - | - | 185 t/s | 211 t/s |

| Llama2 | EXL2 5.0 bpw | 7B | - | - | 164 t/s | 179 t/s |

| Llama2 | EXL2 2.5 bpw | 70B | - | - | 33 t/s | 38 t/s |

| TinyLlama | EXL2 3.0 bpw | 1.1B | - | - | 656 t/s | 770 t/s |

| TinyLlama | EXL2 4.0 bpw | 1.1B | - | - | 602 t/s | 700 t/s |

How to

To install from the repo you'll need the CUDA Toolkit and either gcc on Linux or (Build Tools for) Visual Studio

on Windows). Also make sure you have an appropriate version of PyTorch, then run:


git clone https://github.com/turboderp/exllamav2
cd exllamav2
pip install -r requirements.txt
pip install .

python test_inference.py -m <path_to_model> -p "Once upon a time,"
# Append the '--gpu_split auto' flag for multi-GPU inference

A simple console chatbot is included. Run it with:


python examples/chat.py -m <path_to_model> -mode llama -gs auto

The -mode argument chooses the prompt format to use. raw will produce a simple chatlog-style chat that works with base

models and various other finetunes. Run with -modes for a list of all available prompt formats. You can also provide

a custom system prompt with -sp.

Integration and APIs

  • TabbyAPI is a FastAPI-based server that provides an OpenAI-style web API

compatible with SillyTavern and other frontends.

  • ExUI is a simple, standalone single-user web UI that serves an ExLlamaV2 instance

directly with chat and notebook modes.

and exllamav2_HF loaders.

  • lollms-webui supports ExLlamaV2 through the exllamav2 binding.

Installation

Method 1: Install from source

To install the current dev version, clone the repo and run the setup script:


git clone https://github.com/turboderp/exllamav2
cd exllamav2
pip install -r requirements.txt
pip install .

By default this will also compile and install the Torch C++ extension (exllamav2_ext) that the library relies on.

You can skip this step by setting the EXLLAMA_NOCOMPILE environment variable:


EXLLAMA_NOCOMPILE= pip install .

This will install the "JIT version" of the package, i.e. it will install the Python components without building the

C++ extension in the process. Instead, the extension will be built the first time the library is used, then cached in

~/.cache/torch_extensions for subsequent use.

Method 2: Install from release (with prebuilt extension)

Releases are available here, with prebuilt wheels that contain the extension binaries. Make sure to grab

the right version, matching your platform, Python version (cp) and CUDA version. Crucially, you must also match

the prebuilt wheel with your PyTorch version, since the Torch C++ extension ABI breaks with every new version of

PyTorch.

Either download an appropriate wheel or install directly from the appropriate URL:


pip install https://github.com/turboderp/exllamav2/releases/download/v0.0.12/exllamav2-0.0.12+cu121-cp311-cp311-linux_x86_64.whl

The py3-none-any.whl version is the JIT version which will build the extension on first launch. The .tar.gz file

can also be installed this way, and it will build the extension while installing.

Method 3: Install from PyPI

A PyPI package is available as well. This is the same as the JIT version (see above). It can be installed with:


pip install exllamav2

EXL2 quantization

ExLlamaV2 supports the same 4-bit GPTQ models as V1, but also a new "EXL2" format. EXL2 is based on the same

optimization method as GPTQ and supports 2, 3, 4, 5, 6 and 8-bit quantization. The format allows for mixing quantization

levels within a model to achieve any average bitrate between 2 and 8 bits per weight.

Moreover, it's possible to apply multiple quantization levels to each linear layer, producing something akin to sparse

quantization wherein more important weights (columns) are quantized with more bits. The same remapping trick that lets

ExLlama work efficiently with act-order models allows this mixing of formats to happen with little to no impact on

performance.

Parameter selection is done automatically by quantizing each matrix multiple times, measuring the quantization

error (with respect to the chosen calibration data) for each of a number of possible settings, per layer. Finally, a

combination is chosen that minimizes the maximum quantization error over the entire model while meeting a target

average bitrate.

In my tests, this scheme allows Llama2 70B to run on a single 24 GB GPU with a 2048-token context, producing coherent

and mostly stable output with 2.55 bits per weight. 13B models run at 2.65 bits within 8 GB of VRAM, although currently

none of them uses GQA which effectively limits the context size to 2048. In either case it's unlikely that the model

will fit alongside a desktop environment. For now.

chat_screenshot

chat_screenshot

Conversion

A script is provided to quantize models. Converting large models can be somewhat slow, so be warned. The conversion

script and its options are explained in detail here

Evaluation

A number of evaluaion scripts are provided. See here for details.

Community

A test community is provided at https://discord.gg/NSFwVuCjRq

Quanting service free of charge is provided at #bot test. The computation is generiously provided by the Bloke powered by Lambda labs.

HuggingFace repos

  • I've uploaded a few EXL2-quantized models to Hugging Face to play around with, here.
  • LoneStriker provides a large number of EXL2 models on Hugging Face.

Related tools