* RAM required = file size + ~2-3 GB overhead for context. For GPU offloading, VRAM required per layer ≈ file size ÷ 80 layers.
🏗️ Model Architecture
Parameter
Value
Architecture
LlamaForCausalLM
Parameters
~70.6B (71B size label)
Layers
80 (blk.0 – blk.79)
Embedding Dimension
8,192
Feed-Forward Dimension
28,672
Attention Heads
64
KV Heads (GQA)
8
Context Length
131,072 tokens
RoPE θ
500,000
RMS Norm ε
1e-05
Vocab Size
128,259 tokens
Tokenizer
BPE (gpt2 / llama-bpe)
Original Precision
BF16
Total Tensors
724
🇵🇱 About PLLuM
PLLuM (Polish Large Language Model) is a family of LLMs specialized for the Polish language, developed by the PLLuM consortium and continued under HIVE AI — an alliance of research institutions delivering digital public services for Polish public administration.
Key Features
🏆 State-of-the-art in Polish NLP tasks and Polish public administration benchmarks
📚 Largest organic Polish instruction dataset — manually authored by human experts, not distilled
🛡️ Polish preference corpus — first of its kind, with demographically diverse annotators
🔬 Instruction-tuned via SFT + preference learning + advanced alignment
🌐 Bilingual — Polish primary + English for broader generalization
💬 Chat Template
This model uses a Llama-style [INST] / [/INST] chat template:
<|begin_of_text|>[INST]<system prompt (optional)>
<user message>[/INST]<assistant response></s>[INST]<next user message>[/INST]
Jinja Template (embedded in GGUF)
jinja
1{%- if messages[0]['role'] == 'system' %}
2 {%- set system_message = messages[0]['content'] %}
3 {%- set loop_messages = messages[1:] %}
4{%- else %}
5 {%- set loop_messages = messages %}
6{%- endif %}
7{{- bos_token }}
8{%- for message in loop_messages %}
9 {%- if message['role'] == 'user' %}
10 {%- if loop.first and system_message is defined %}
11 {{- '[INST]' + system_message + '\n\n' + message['content'] + '[/INST]' }}
12 {%- else %}
13 {{- '[INST]' + message['content'] + '[/INST]' }}
14 {%- endif %}
15 {%- elif message['role'] == 'assistant' %}
16 {{- message['content'] + eos_token }}
17 {%- endif %}
18{%- endfor %}
Recommended Sampling Parameters
Parameter
Value
Temperature
0.6
Top-p
0.9
Repeat penalty
1.1
🚀 How to Use
With llama.cpp (CLI)
bash
1# Download the Q4_K_M version (~40 GB)2huggingface-cli download Mati83moni/Llama-PLLuM-70B-instruct-2512-GGUF \3 PLLuM-70B-instruct-Q4_K_M.gguf --local-dir .45# Run with llama-cli6./llama-cli \7 -m PLLuM-70B-instruct-Q4_K_M.gguf \8 -p "[INST]Napisz krótki wiersz o Krakowie.[/INST]"\9 -n 512 --temp 0.6 --top-p 0.9 --repeat-penalty 1.1\10 -ngl 999# offload all layers to GPU
With llama-server (OpenAI-compatible API)
bash
1./llama-server \2 -m PLLuM-70B-instruct-Q4_K_M.gguf \3 --host 0.0.0.0 --port 8080\4 -ngl 999 -c 409656# Then use any OpenAI client:7curl http://localhost:8080/v1/chat/completions \8 -H "Content-Type: application/json"\9 -d '{
10 "model": "pllum-70b",
11 "messages": [
12 {"role": "system", "content": "Jesteś pomocnym polskim asystentem AI."},
13 {"role": "user", "content": "Wyjaśnij czym jest uczenie maszynowe w 3 zdaniach."}
14 ],
15 "temperature": 0.6,
16 "top_p": 0.9
17 }'
With Ollama
bash
1# Create a Modelfile2cat> Modelfile <<EOF
3FROM ./PLLuM-70B-instruct-Q4_K_M.gguf
4TEMPLATE "[INST]{{ if .System }}{{ .System }}\n\n{{ end }}{{ .Prompt }}[/INST]"
5PARAMETER temperature 0.6
6PARAMETER top_p 0.9
7PARAMETER repeat_penalty 1.1
8PARAMETER stop "</s>"
9PARAMETER stop "[INST]"
10EOF1112# Create and run13ollama create pllum-70b -f Modelfile
14ollama run pllum-70b "Jak działa komputer kwantowy?"
With Python (llama-cpp-python)
python
1from llama_cpp import Llama
23llm = Llama(4 model_path="PLLuM-70B-instruct-Q4_K_M.gguf",5 n_gpu_layers=-1,# offload all layers6 n_ctx=4096,7)89output = llm.create_chat_completion(10 messages=[11{"role":"system","content":"Jesteś ekspertem od polskiego prawa."},12{"role":"user","content":"Jakie są podstawowe prawa pracownika w Polsce?"}13],14 temperature=0.6,15 top_p=0.9,16)1718print(output["choices"][0]["message"]["content"])
💻 Hardware Requirements
Minimum (Q4_K_M — CPU only)
RAM: 48+ GB
Storage: 40 GB free
Speed: ~2-5 tokens/sec on modern CPU (AVX2)
Recommended (Q4_K_M — GPU offload)
Setup
VRAM
Speed
1× A100 80GB
80 GB (full offload)
~30-40 tok/s
1× A6000 48GB
48 GB (full offload)
~20-30 tok/s
2× RTX 4090 48GB
2×24 GB (split)
~25-35 tok/s
1× RTX 4090 24GB
24 GB (partial, ~48 layers)
~10-15 tok/s
1× L4 24GB
24 GB (partial, ~48 layers)
~8-12 tok/s
For Q5_K_M
Add ~7 GB to all VRAM/RAM requirements above.
🔧 Quantization Details
Process
Download original model (30 safetensors shards, BF16)
Convert to GGUF F16 format using hf-to-gguf (output: 132 GB)
Quantize to Q4_K_M and Q5_K_M using llama-quantize
Q4_K_M / Q5_K_M: Uses mixed precision — attention value projections (attn_v) and FFN down projections (ffn_down) quantized to Q6_K (higher precision) every 3 layers for better quality retention
Output layer (output.weight): Quantized to Q6_K for both variants
Norm weights: Kept in F32 (negligible size impact)
📊 Quality Comparison Guide
Quant
Use Case
Quality Loss vs F16
Q5_K_M
Production / research / highest quality
Negligible (~0.1-0.3 perplexity)
Q4_K_M
Daily use / fast inference / constrained VRAM
Minimal (~0.3-0.5 perplexity)
💡 Recommendation: Start with Q4_K_M for most use cases. Choose Q5_K_M if you have sufficient VRAM/RAM and need maximum quality for Polish NLP tasks.