We are releasing
MiniCPM5-2B
, the second model in the
MiniCPM5
series, following
MiniCPM5-1B
. It is a dense 2B Transformer that scales up the same training recipe, built for on-device, local deployment, and resource-constrained scenarios, reaching 2B-class open-source SOTA.
🏆
2B-class open-source SOTA
: compared with strong open-source models of similar size, MiniCPM5-2B achieves SOTA performance within this comparison set. It remains competitive with 4B-class models overall, while showing its advantages over models of comparable size in coding, mathematics, long-context understanding, tool use, and agentic tasks.
⚠️ PLEASE READ THIS BEFORE USING THESE EXPERIMENTAL VERSIONS! ⚠️
An area of personal interest is finding ways to optimize the inference performance of LLMs when deployed in resource-constrained environments like commodity hardware, desktops, laptops, mobiles, edge devices, etc. There are many approaches to accomplish this, including architecture simplification and knowledge distillation, but my focus has been primarily on quantization and pruning.
The method to produce these experimental versions involves using a custom version of
llama-imatrix
to generate an imatrix that includes tensor statistics, and a custom version of
llama-quantize
, which computes a per-tensor quantization error, to automatically select the lowest error quantization recipe that achieves a global target bits‑per‑weight (bpw). More details on the implementation and test results
here
There are two pull requests (
#14891
&
#15550
) to merge these changes back into the core llama.cpp project. This may or may not ever happen so, until then, the modified versions will be available on
GitHub
.
For testing and comparison, I use models produced by
Bartowski
(see credits below) and
Unsloth
(
Daniel and Michael Han
do some really interesting stuff!) but when they don't provide versions of the required model, tests and comparisons are against standard quantization obtained by simply running
llama-quantize
with no further optimizations.
All experimental versions were generated using an appropriate imatrix created from datasets available at
eaddario/imatrix-calibration
. In
llama.cpp
, an imatrix is a calibration file derived from running representative text through the model and collecting activation statistics. It is used to weight quantization error so that error in more “important” directions (as estimated from activations) is penalized more heavily.
The process to generate these models is roughly as follows:
Quantize the baseline model targeting a bpw average (e.g.
llama-quantize --target-bpw 4.5678 --state-file --imatrix imatrix.gguf baseline-model-F16.gguf 12
)
Calculate Perplexity, KL Divergence, ARC (Easy+Challenge), GPQA-Diamond, HellaSwag, MMLU-Redux, Truthful QA and WinoGrande scores for each quantized model
Keep version with the best 𝜌PPL and μKLD scores
Repeat until all desired quants are created
Misconceptions about BF16 to F16 Conversion
A common concern when converting BFloat16 (
BF16
) models to Float16 (F16) is the potential for accuracy loss. Specifically:
Weight Clipping (Overflow): Clipping, or overflow, is often feared but only occurs if a model's weights exceed the range of ±65,503. This is a relatively rare issue in practice.
Subnormal Zeroing (Underflow): A more frequent occurrence is underflow, where weights smaller than approximately 5.96x10⁻⁸ are converted to zero.
Crucially, when the F16 model is subsequently used for quantization, the resulting degradation in metrics like Perplexity (
PPL
) or Kullback–Leibler Divergence (
KLD
) is minimal. Any variations are typically restricted to the hundreds or thousandths decimal places compared to the BF16 model.
However, considering that weight clipping presents a more substantial risk to model integrity, every BF16 base model undergoes validation prior to the conversion process. Consequently, no models hosted in this repository exhibit performance degradation due to overflow clipping.
While BF16 offers precision benefits, performance remains a key factor.
Conversion Speed: Tests, such as timing
convert_hf_to_gguf.py
, show a notable performance difference, with conversion to BF16 being 15–30% slower than to F16.
Inference Speed: A less pronounced but still present difference (3–6%) is observed during inference. Although native BF support has been introduced by many chip manufacturers, the slower performance
may
stem from the entire software and hardware stack (firmware, libraries, etc.) not being fully optimized yet.
The choice to prioritize F16 over BF16 is driven by a focus on maximizing performance in specific deployment environments. My primary objective is not large-scale quantization production, a domain where others like
Bartowski
and
Unsloth
excel at, but rather optimizing inference performance for resource-constrained environments. Since BF16 support is not yet widespread in areas like mobile, edge, and embedded devices, using F16 ensures broader compatibility and easier optimization for these use cases.
Advantages and disadvantages of the global target bits‑per‑weight quantization process
Advantages
Target arbitrary size models
When specifying
--target-bpw 4.5678
for instance, the algorithm will produce a model (nearly) exactly of that size, which is very useful for maximizing VRAM usage. In a system with 24GB VRAM and a 70B model, standard quants might produce a 16.8GB file (too small, quality left on table) or a 24.1GB file (won't fit). This approach can generate a 23.85GB file to utilize the hardware fully.
Data-driven mixed precision often can improve quality at fixed size
Instead of using hardcoded heuristics (e.g. make
attn_v
Q5_K for a 70B model), that may be sub‑optimal for a given architecture or size, the quantization mix is determined by the actual error sensitivity of the specific model's weights. This, in practice, often yields a better quality/size trade-off, especially in aggressive quantization scenarios (1.5 to 3.5 bpw), or for unusual architectures.
Please note
:
llama.cpp
’s heuristics have been tuned across many models and are highly optimized; although the target bpw method produces better quality often (>75% based on tests with 130 models from 11 different families), it can also lose in surprising cases.
Allows better like-for-like comparisons between models and families
Standard
llama.cpp
quantization uses hardcoded rules like:
"use Q4_K_M, except bump some tensors up/down, except fall back if incompatible, except keep some tensors unquantized..."
and for that reason, two different models quantized with the same Q4_K_M type can end up with very different bpw (e.g. 4.75 and 4.30).
All things being equal, the performance of a model is usually proportional to its overall bpw size; models with a higher bpw tend to perform better than lower bpw models. Since model A has simply been given more bits, it will typically perform better (lower perplexity, better eval scores, etc.) even if the underlying quantization method is identical. That makes comparing the performance not a controlled experiment, because the comparison is between models with different effective compression ratios.
--target-bpw
tries to address that by making the experiment more controlled: each model gets quantized to land on (approximately) the same global byte budget, so that the models' performance differences are more attributable to architecture/training differences, quantization error behaviour at the same compression ratio, optimizer’s allocation decisions, etc.
Disadvantages
Quantization process is significantly slower than standard
This approach can take 5x-10x longer as it quantizes a sample of most tensors into 15 different formats, dequantizes them back to floats, computes error diffs, and selects the best size/error option that fits the global bpw budget.
However, the
--state-file
option will save/use the above-mentioned computations so that future quantizations, for the same model, can be generated at normal speed. It also allows to interrupt the computation process and resume it at a later time.
The optimization target is only a proxy for the model's performance quality
The process minimizes a per-tensor estimated error computed from sampled rows, not actual perplexity or divergence of output distributions (a future version may address this). Since errors interact nonlinearly across layers, there are no guarantees it will select the best possible quantization recipe subject to the bpw size constraint.
An imatrix with activations data is required for best results
Activation data is required to compute the bias factor (i.e. the systematic error projected onto activation directions). If the imatrix file does not contain activation data, the
--target-bpw
option will refuse to run.
Models
Bits per weight, size, perplexity and KL Divergence scores
Perplexity
:
one of the key metrics used in NLP evaluation. It measures the quality of a language model by evaluating how well it predicts the next token given a particular sequence of words. A PPL of
1
indicates an exact match between predicted and actual, whereas values greater than one indicate a degree of "surprise" the generated token differs from the expected.
Kullback–Leibler (KL) Divergence
:
a statistical measure of how much a probability distribution differs from another. When quantizing models (or altering the original tensors in any way for that matter), the closest we can preserve the weights' probability distribution to the original model the better, thus the closest to
0
the better.
AI2 Reasoning Challenge (ARC)
:
a benchmark to evaluate the ability of AI models to answer complex science questions that require logical reasoning beyond pattern matching.
GPQA-Diamond
:
a challenging dataset of 448 multiple-choice questions written by domain experts in biology, physics, and chemistry.
HellaSwag
:
the Harder Endings, Longer contexts, and Low-shot Activities for Situations With Adversarial Generations (bit of a mouthful!) is a benchmark designed to test commonsense natural language inference. It requires the model to predict the most likely ending of a sentence.
MMLU
:
the Massive Multitask Language Understanding evaluates LLMs’ general knowledge and problem-solving abilities across 57 subjects, including elementary mathematics, US history, computer science, and law.
Truthful QA
:
evaluates how well LLMs generate truthful responses to questions. It identifies whether AI models can avoid generating false or misleading information, particularly in areas where human knowledge is prone to misconceptions.
Winogrande
:
based on the
Winograd Schema Challenge
, is a natural language understanding task requiring models to resolve ambiguities in sentences involving pronoun references.
Credits
LLaMa C++
has a large and vibrant community of
contributors
(~1,600 last time I checked) that actively maintain and extend its functionality, adding new models and architectures almost as fast as they appear. Considering the breakneck speed at which the AI/ML field is advancing, this alone is a remarkable feat!
While I'm grateful to all contributors, I want to recognise three in particular:
Colin Kealty
(Bartowski), for the many contributions and for being one of the best sources of high quality quantized models available on Hugging Face
Georgi Gerganov
for his amazing work with
llama.cpp
and the
ggml/gguf
libraries
Iwan Kawrakow
for being one of the key authors behind the many quantization algorithms and the imatrix functionality.
Runs of eaddario MiniCPM5-2B-GGUF on huggingface.co
1.3K
Total runs
315
24-hour runs
396
3-day runs
439
7-day runs
1.3K
30-day runs
More Information About MiniCPM5-2B-GGUF huggingface.co Model
MiniCPM5-2B-GGUF huggingface.co is an AI model on huggingface.co that provides MiniCPM5-2B-GGUF's model effect (), which can be used instantly with this eaddario MiniCPM5-2B-GGUF model. huggingface.co supports a free trial of the MiniCPM5-2B-GGUF model, and also provides paid use of the MiniCPM5-2B-GGUF. Support call MiniCPM5-2B-GGUF model through api, including Node.js, Python, http.
MiniCPM5-2B-GGUF huggingface.co is an online trial and call api platform, which integrates MiniCPM5-2B-GGUF's modeling effects, including api services, and provides a free online trial of MiniCPM5-2B-GGUF, you can try MiniCPM5-2B-GGUF online for free by clicking the link below.
eaddario MiniCPM5-2B-GGUF online free url in huggingface.co:
MiniCPM5-2B-GGUF is an open source model from GitHub that offers a free installation service, and any user can find MiniCPM5-2B-GGUF on GitHub to install. At the same time, huggingface.co provides the effect of MiniCPM5-2B-GGUF install, users can directly use MiniCPM5-2B-GGUF installed effect in huggingface.co for debugging and trial. It also supports api for free installation.