Skip to content

feat: enable int8 quantization/inference#10

Open
drbh wants to merge 3 commits intoantirez:mainfrom
drbh:main
Open

feat: enable int8 quantization/inference#10
drbh wants to merge 3 commits intoantirez:mainfrom
drbh:main

Conversation

@drbh
Copy link

@drbh drbh commented Feb 10, 2026

Hi @antirez thanks for working on this implementation of voxtral, its very nice to have a dependency free way to run this model!

This PR adds support for int8 quantization which reduces the model memory usage and speeds up inference by +20% on my MBP M3 (roughly 37ms -> 28ms per step)

make test comparison

bf16

make test
# === Test: batch ===
# Loading weights...
# Metal GPU: 8429.2 MB
# Model loaded.
# Audio: 960000 samples (60.0 seconds)
# Forse qualcuno ricorderà che uno dei primi video che ho fatto, probabilmente il primo short o il secondo, il terzo, su questo canale era a proposito delle arance rosse di Mr. Farmer, prodotte da questo agricoltore siciliano molto giovane, molto idealista, che io non conosco personalmente ma ho deciso praticamente di consigliarvelo per la seconda volta in forma un po'più chiara rispetto all'altra volta. Allora, tra l'altro, visto che io le arance le compro, non lo conosco e non c'è motivo di pubblicizzare i suoi prodotti e non ho alcuno sponsor in questo canale, perché faccio pubblicità gratuita alle arance? Perché credo che... Il nostro cibo sia sempre peggiore e la grande distribuzione così come ormai anche i piccoli frutta e verdura vanno a comprare la merce ai grandi mercati ortofrutticoli dove si trova qualità
# Encoder: 6392 mel -> 799 tokens (3948 ms)
# Decoder: 197 text tokens (761 steps) in 28268 ms (prefill 268 ms + 36.8 ms/step)

# PASS: batch (all 11 phrases found)

# === Test: streaming -I 0.1 ===
# Loading weights...
# Metal GPU: 8429.2 MB
# Model loaded.
# Forse qualcuno ricorderà che uno dei primi video che ho fatto, probabilmente il primo short o il secondo, il terzo, su questo canale era a proposito delle arance rosse di Mr. Farmer, prodotte da questo agricoltore siciliano molto giovane, molto idealista, che io non conosco personalmente ma ho deciso praticamente di consigliarvelo per la seconda volta in forma un po'più chiara rispetto all'altra volta. Allora, tra l'altro, visto che io le arance le compro, non lo conosco e non c'è motivo di pubblicizzare i suoi prodotti e non ho alcuno sponsor in questo canale, perché faccio pubblicità gratuita alle arance? Perché credo che... Il nostro cibo sia sempre peggiore e la grande distribuzione così come ormai anche i piccoli frutta e verdura vanno a comprare la merce ai grandi mercati ortofrutticoli dove si trova qualità
# Encoder: 6392 mel -> 799 tokens (16349 ms)
# Decoder: 197 text tokens (761 steps) in 28210 ms (prefill 98 ms + 37.0 ms/step)

# PASS: streaming -I 0.1 (all 11 phrases found)

# === Results: 2 passed, 0 failed ===

quantized

make test
# === Test: batch ===
# Loading weights...
# Metal GPU: 4061.2 MB
# Model loaded.
# Audio: 960000 samples (60.0 seconds)
# Forse qualcuno ricorderà che uno dei primi video che ho fatto, probabilmente il primo short o il secondo, il terzo, su questo canale era a proposito delle arance rosse di Mr. Farmer, prodotte da questo agricoltore siciliano molto giovane, molto idealista, che io non conosco personalmente ma ho deciso praticamente di consigliarvelo per la seconda volta in forma un po'più chiara rispetto all'altra volta. Allora, tra l'altro, visto che io le arance le compro, non lo conosco e non c'è motivo di pubblicizzare i suoi prodotti e non ho alcuno sponsor in questo canale, perché faccio pubblicità gratuita alle arance? Perché credo che... Il nostro cibo sia sempre peggiore e la grande distribuzione così come ormai anche i piccoli frutta e verdura vanno a comprare la merce ai grandi mercati ortofrutticoli dove si trova qualità
# Encoder: 6392 mel -> 799 tokens (3758 ms)
# Decoder: 197 text tokens (761 steps) in 21700 ms (prefill 454 ms + 28.0 ms/step)

# PASS: batch (all 11 phrases found)

# === Test: streaming -I 0.1 ===
# Loading weights...
# Metal GPU: 4061.2 MB
# Model loaded.
# Forse qualcuno ricorderà che uno dei primi video che ho fatto, probabilmente il primo short o il secondo, il terzo, su questo canale era a proposito delle arance rosse di Mr. Farmer, prodotte da questo agricoltore siciliano molto giovane, molto idealista, che io non conosco personalmente ma ho deciso praticamente di consigliarvelo per la seconda volta in forma un po'più chiara rispetto all'altra volta. Allora, tra l'altro, visto che io le arance le compro, non lo conosco e non c'è motivo di pubblicizzare i suoi prodotti e non ho alcuno sponsor in questo canale, perché faccio pubblicità gratuita alle arance? Perché credo che... Il nostro cibo sia sempre peggiore e la grande distribuzione così come ormai anche i piccoli frutta e verdura vanno a comprare la merce ai grandi mercati ortofrutticoli dove si trova qualità
# Encoder: 6392 mel -> 799 tokens (16390 ms)
# Decoder: 197 text tokens (761 steps) in 21732 ms (prefill 457 ms + 28.0 ms/step)

# PASS: streaming -I 0.1 (all 11 phrases found)

# === Results: 2 passed, 0 failed ===

jfk.wav comparison

bf16

./voxtral -d voxtral-model -i samples/jfk.wav
# Loading weights...
# Metal GPU: 8429.2 MB
# Model loaded.
# Audio: 176000 samples (11.0 seconds)
# And so, my fellow Americans, ask not what your country can do for you. Ask what you can do for your country.
# Encoder: 1496 mel -> 187 tokens (863 ms)
# Decoder: 26 text tokens (149 steps) in 5082 ms (prefill 628 ms + 30.1 ms/step)

quantized

./voxtral -d voxtral-model-q8 -i samples/jfk.wav
# Loading weights...
# Metal GPU: 4061.2 MB
# Model loaded.
# Audio: 176000 samples (11.0 seconds)
# And so, my fellow Americans, ask not what your country can do for you. Ask what you can do for your country.
# Encoder: 1496 mel -> 187 tokens (657 ms)
# Decoder: 26 text tokens (149 steps) in 3548 ms (prefill 436 ms + 21.0 ms/step)

notes

  • int8 is only supported on the mps backed via the changes made in voxtral_shaders.metal
  • added a new quantize_int8.c tool that quantizes the model
  • also pushed the weights to https://huggingface.co/drbh/voxtral-model-q8 and added a new download script for the pre quantized weights

please let me know if I should make any changes to this PR before it can be merged, or if these changes are not aligned with the project long term goals.

Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant