Instructions to use emese-tech/patak with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use emese-tech/patak with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="emese-tech/patak") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("emese-tech/patak") model = AutoModelForCausalLM.from_pretrained("emese-tech/patak", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use emese-tech/patak with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "emese-tech/patak" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "emese-tech/patak", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/emese-tech/patak
- SGLang
How to use emese-tech/patak with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "emese-tech/patak" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "emese-tech/patak", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "emese-tech/patak" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "emese-tech/patak", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use emese-tech/patak with Docker Model Runner:
docker model run hf.co/emese-tech/patak
Emese-Patak (9.15B)
Patak ("stream") is the balanced, desktop-class tier of the Emese Hungarian model family — EuroLLM-9B continued-pretrained on Hungarian, instruction-tuned, and DPO-aligned. This is the family's best-benchmarked model.
| Parameters | 9.15B |
| Base | EuroLLM-9B |
| Architecture | LLaMA-style (RoPE θ=1,000,000, GQA 32Q/8KV, SwiGLU, RMSNorm) |
| Hidden / layers / heads | 4096 / 42 / 32 (8 KV heads) |
| Vocabulary | 128,000 (EuroLLM multilingual SentencePiece) |
| Max context length | 32,768 tokens (EuroLLM-9B's native max_position_embeddings) |
| Precision | bfloat16 (this repo); MLX q8 also available (patak-mlx/) |
| License | Apache-2.0 |
Formats in this release
| Folder | Format | Size | Notes |
|---|---|---|---|
patak/ (this repo) |
bf16, standard HF safetensors |
~17 GB | loads directly with transformers and mlx_lm; dequantized from the q8-native training chain (near-lossless, see Training) |
patak-mlx/ |
MLX q8 | ~9.1 GB | mlx_lm-only, the native training/serving precision for this model |
Usage (transformers)
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tok = AutoTokenizer.from_pretrained("emese-tech/patak")
model = AutoModelForCausalLM.from_pretrained("emese-tech/patak", dtype=torch.bfloat16, device_map="auto")
msgs = [{"role": "user", "content": "Mi Magyarország fővárosa?"}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
ids = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**ids, max_new_tokens=256, do_sample=True, temperature=0.2, eos_token_id=[2, 4])
print(tok.decode(out[0][ids.input_ids.shape[1]:], skip_special_tokens=True))
Usage (MLX)
from mlx_lm import load, generate
from mlx_lm.sample_utils import make_sampler
model, tok = load("emese-tech/patak-mlx") # q8
p = tok.apply_chat_template([{"role": "user", "content": "Mi Magyarország fővárosa?"}],
tokenize=False, add_generation_prompt=True)
print(generate(model, tok, prompt=p, max_tokens=256, sampler=make_sampler(temp=0.2)))
Decode: temperature 0.2, no repetition penalty, eos {2, 4} (</s> and <|im_end|> — omitting
id 4 causes non-stopping generation), ChatML template. For multi-turn conversations, always pass the
full history, not just the latest message.
Training
- CPT — light continued pretraining of EuroLLM-9B on the Emese Hungarian corpus: 5.1M tokens over
5,000 iterations (val loss 1.857). This is a known-light budget relative to the ~3.7B-token corpus
available on disk (
corpus/cpt/README.md) — a deeper CPT pass is a documented candidate for a future release (seeinstruct/V16_PATAK_CPT.md), but was not required to reach this release's benchmark result. - SFT — 1 epoch (4,914 iterations) on the
instruct_v18bcorpus (4,914 rows: persona, safety, code + code-debug, hedging/anti-confabulation, multi-step reasoning, compound constraints, multi-turn refinement, anti-repetition). LoRA rank 16 / scale 32, dropout 0.1, lr 1.5e-5, gradient-checkpointed, all 42 layers +lm_headtrained. - DPO — 120 iterations of DPO-lite ("alfa") on 36 hand-written preference pairs (persona identity-defense + anti-repetition), fixing residual persona/anti-repetition/honesty-calibration issues the SFT pass alone left behind. LoRA rank 16 / scale 32, lr 5e-6, trained on top of the quantized (q8) SFT model — this repo's bf16 weights are dequantized from that q8-native chain, which this project's own testing found near-lossless (MLX bf16 and q8 score within 1 point of each other on full benchmark runs).
Benchmarks
| Ultimate Bench (0-250) | BlindSpot Bench (0-376) | |
|---|---|---|
| This release (DPO alfa) | 218/250 (87%) — family all-time record | 302/376 |
Safety: 100% refusal rate. Weak points: multi-turn refinement (revising an answer under a new constraint), occasional factual confabulation on obscure names/dates.
emese-bench v1 (500 pts, consolidated Ultimate+BlindSpot, MLX q8): 413/500 (83%) — by far the
family's strongest result on the new unified benchmark. Near-perfect on longform, reading, code,
safety, honesty, and English; the only real weak spots are multi-step math, spatial estimation, and
code-debugging. See emese-bench/results/patak-mlx.md for the full category breakdown and
emese-bench/README.md for the benchmark's design.
Limitations
- Can hallucinate specific facts (dates, attributions) — verify critical details.
- Multi-turn refinement is a known weak spot relative to single-turn quality.
- Hungarian-first; other-language quality inherited from EuroLLM-9B.
- Do not convert this model to GGUF without re-validating first — this project's own testing found a
consistent ~14-27 point Ultimate Bench regression when serving via llama.cpp/GGUF, regardless of source
precision or quantization level, root-caused to llama.cpp's inference path itself (not this repo's
weights). Use the
transformers/mlx_lmpaths above.
- Downloads last month
- 357
Model tree for emese-tech/patak
Base model
utter-project/EuroLLM-9B