Text Generation
Transformers
Safetensors
Hungarian
llama
hungarian
emese
eurollm
instruct
chatml
conversational
text-generation-inference
Instructions to use emese-tech/folyo with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use emese-tech/folyo with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="emese-tech/folyo") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("emese-tech/folyo") model = AutoModelForCausalLM.from_pretrained("emese-tech/folyo", 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=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use emese-tech/folyo with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "emese-tech/folyo" # 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/folyo", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/emese-tech/folyo
- SGLang
How to use emese-tech/folyo 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/folyo" \ --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/folyo", "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/folyo" \ --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/folyo", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use emese-tech/folyo with Docker Model Runner:
docker model run hf.co/emese-tech/folyo
File size: 5,681 Bytes
d849f2d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ---
language:
- hu
license: apache-2.0
library_name: transformers
base_model: utter-project/EuroLLM-22B
pipeline_tag: text-generation
tags:
- hungarian
- emese
- eurollm
- instruct
- chatml
---
# Emese-Folyó (22B)
**Folyó** ("river") is the flagship, server-class tier of the [Emese](https://emese.tech) Hungarian model
family — [EuroLLM-22B](https://huggingface.co/utter-project/EuroLLM-22B) continued-pretrained on
Hungarian, instruction-tuned, and DPO-aligned.
| | |
|---|---|
| **Parameters** | 22B |
| **Base** | EuroLLM-22B |
| **Architecture** | LLaMA-style (RoPE θ=1,000,000, GQA 48Q/8KV, SwiGLU, RMSNorm) |
| **Hidden / layers / heads** | 6144 / 54 / 48 (8 KV heads) |
| **Vocabulary** | 128,000 (EuroLLM multilingual SentencePiece) |
| **Max context length** | **32,768 tokens** (EuroLLM-22B's native `max_position_embeddings`) |
| **Precision** | bfloat16 (this repo, dequantized for `transformers` compatibility); MLX q8 also available (`folyo-mlx/`) |
| **License** | Apache-2.0 |
## Formats in this release
| Folder | Format | Size | Notes |
|---|---|---|---|
| `folyo/` (this repo) | bf16, standard HF `safetensors` | ~42 GB | loads directly with `transformers` **and** `mlx_lm`; dequantized from the q8-native training chain (near-lossless) |
| `folyo-mlx/` | MLX q8 | ~22 GB | `mlx_lm`-only, the native training/serving precision for this model |
## Usage (transformers)
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tok = AutoTokenizer.from_pretrained("emese-tech/folyo")
model = AutoModelForCausalLM.from_pretrained("emese-tech/folyo", 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)
```python
from mlx_lm import load, generate
from mlx_lm.sample_utils import make_sampler
model, tok = load("emese-tech/folyo-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** — q8-native continued pretraining of EuroLLM-22B on the Emese Hungarian corpus: **~6M tokens
over 6,000 iterations**, LoRA rank 64, then fused and **requantized to q8** (rather than kept in bf16)
to avoid a q4→bf16 fuse-precision mismatch discovered earlier in this project's history. The resulting
q8-native CPT base (`eurollm-22b-cpt-v2-q8`) is what every downstream SFT/DPO stage built on.
- **SFT** — 1 epoch (4,914 iterations) on the `instruct_v18b` corpus (4,914 rows: persona, safety, code +
code-debug, hedging/anti-confabulation, multi-step reasoning, compound constraints, multi-turn
refinement, anti-repetition — same corpus as Patak/Csermely). LoRA rank 16 / scale 16, dropout 0.1,
lr 5e-6, bottom 14 of 54 layers frozen (`num_layers: 40`). Checkpoint-swept across the run; **iteration
3,600 (not the final iteration) was selected** as the best-behaving checkpoint.
- **DPO** — 120 iterations of DPO-lite ("alfa") on 36 hand-written preference pairs (persona
identity-defense + anti-repetition — same pair bank as Patak/Csermely). LoRA rank 16 / scale 16,
lr 2e-6 — the lowest DPO learning rate in the family, since this checkpoint was already the peak-swept
best and had the least margin to spare.
## Benchmarks
| | Ultimate Bench (0-250) | BlindSpot Bench (0-376) |
|---|---|---|
| **This release (DPO alfa)** | 211/250 (84%) | **310/376** — family-best BlindSpot score |
**emese-bench v1 (500 pts, consolidated Ultimate+BlindSpot, MLX q8): 410/500 (82%)** — the current
unified reference benchmark going forward, just behind Patak (413/500) and far ahead of Csermely
(211/500). Near-perfect on safety, safety_edge, honesty_calibration, persona_selfaware, reading,
translation, and code-writing, with no repetition loops or stop-token leakage anywhere in the
transcript. Weakest on multi-step math, logic puzzles, and two confidently-fabricated Hungarian
scientist biographies; the standout chat-session finding is a perfect 10/10 on both in-context memory
recall and roleplay (best in the family so far), offset by a surprising 1/10 on the English-chat
session — the model answered every turn in Hungarian despite the user writing in English. See
`emese-bench/results/folyo-mlx.md` and `emese-bench/README.md` for full category-level detail.
## Limitations
- Can hallucinate specific facts (dates, attributions) — verify critical details.
- Hungarian-first; other-language quality inherited from EuroLLM-22B.
- Large — 42 GB bf16 / 22 GB q8; needs a machine with enough RAM/VRAM for practical serving.
- **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 (tested on Patak,
same architecture family), regardless of source precision or quantization level, root-caused to
llama.cpp's inference path itself. Use the `transformers`/`mlx_lm` paths above.
|