bge-m3 GGUF (F16)
BAAI/bge-m3 dense embeddings as a GGUF for llama.cpp: 1024 dimensions, 8192-token context, 100+ languages.
| file | precision | size | sha256 |
|---|---|---|---|
bge-m3-f16.gguf |
F16 | 1.16 GB | a8d0847ea726e827a3318974f04b2895f5b59481bf6441357a21f38425d0ceff |
Converted from the original FP32 checkpoint with llama.cpp b11703 convert_hf_to_gguf.py --outtype f16: a cast to F16,
no quantization. Dense output only (CLS pooling); the sparse and ColBERT heads of bge-m3 are not included.
Run
llama-server -m bge-m3-f16.gguf --embedding --pooling cls -ngl 99 -c 8192 -b 8192 -ub 8192 --port 8080
curl -s localhost:8080/v1/embeddings -H 'Content-Type: application/json' -d '{"input": ["Hello world"]}'
Docker images (llama.cpp b11703):
| image | for |
|---|---|
myllmbox/bge-m3-llamacpp:v1-nvidia |
NVIDIA, CUDA: DGX Spark / GB10 (arm64) and RTX 50xx (amd64) |
myllmbox/bge-m3-llamacpp:v1-amd |
AMD Radeon iGPU, Vulkan (amd64) |
docker run -d --gpus all -v $PWD:/models:ro -p 8080:8080 myllmbox/bge-m3-llamacpp:v1-nvidia \
-m /models/bge-m3-f16.gguf --embedding --pooling cls -ngl 99 -c 8192 -b 8192 -ub 8192 --host 0.0.0.0 --port 8080
docker run -d --device /dev/dri -v $PWD:/models:ro -p 8080:8080 myllmbox/bge-m3-llamacpp:v1-amd \
-m /models/bge-m3-f16.gguf --embedding --pooling cls -ngl 99 -c 8192 -b 8192 -ub 8192 --host 0.0.0.0 --port 8080
How to send
Keep about 4 requests in flight per server (llama-server's slots, -np, default 4), one page per request. Fewer
leaves the GPU idle between requests; more only queues.
Speed
A4-like pages of ~565 tokens, the image above, -c 8192 -b 8192 -ub 8192:
| box | image | pages/s | tokens/s | 1M pages |
|---|---|---|---|---|
| RTX 5080 (Intel host) | v1-nvidia |
61.4 | 34,700 | 4.5 h |
| DGX Spark (GB10) | v1-nvidia |
49.3 | 27,900 | 5.6 h |
| Radeon 780M iGPU (Ryzen 9 8945HS) | v1-amd |
5.2 | 2,950 | 53 h |
Requests in flight × pages per request (pages/s):
| 1 × 1 | 4 × 1 | 8 × 1 | 1 × 8 | 4 × 8 | |
|---|---|---|---|---|---|
| RTX 5080 | 36.2 | 61.4 | 57.1 | 44.5 | 60.4 |
| DGX Spark | 32.0 | 49.3 | 41.1 | 37.9 | 40.6 |
| Radeon 780M | 4.7 | 5.2 | 5.2 | 4.9 | 5.2 |
Agreement with the original
18 texts (short queries, sentences, ~600-token pages; English, Lithuanian, German, French), cosine of each text's vector against the original FP32 model (transformers, CLS, normalised):
| backend | cosine min | cosine mean | nearest neighbours |
|---|---|---|---|
| CUDA, RTX 5080 | 0.99968 | 0.99994 | identical |
| CUDA, GB10 | 0.99968 | 0.99994 | identical |
| Vulkan, Radeon 780M | 0.99954 | 0.99989 | identical |
| RTX 5080 vs GB10 | 0.99998 | 1.00000 | identical |
| CUDA vs Vulkan | 0.99962 | 0.99994 | identical |
Vectors from any of these boxes can share one index.
License: MIT, as the original model.