Request access to the EUGEN 160M research checkpoint

Access is reviewed and approved individually. Please give your email address and your LinkedIn profile and tell us what you plan to do with the checkpoint. Before approving, we may contact you on LinkedIn to confirm your identity and purpose. Hugging Face also shares your Hub username and account email with us. Your data is handled as described in Section 8 (Personal data) of the Research Use Terms.

This repository contains an intermediate training checkpoint of EUGEN 160M, shared only for non-commercial scientific research and evaluation under the EUGEN 160M Research Use Terms (LICENSE.md). Requests are reviewed manually; access may be revoked if the terms are not respected.

Log in or Sign Up to review the conditions and access this model content.

EUGEN 160M — research checkpoint (step 204,000)

This is an intermediate training checkpoint of EUGEN 160M, not a finished base model. Training is ongoing; capabilities, behaviour and results will change in later checkpoints. All results below describe this checkpoint only.

EUGEN 160M is a small language model for code, trained from scratch. It has 164.5 million parameters (the name is rounded) and runs locally — on a single consumer GPU or on an ordinary CPU.

This repository contains the checkpoint from training step 204,000 together with the complete generation stack, so that the checkpoint can be evaluated in the same way it is served:

Capability What it does
Autocomplete Completes the current line as you type
Next line Proposes the next line of code
Fill-in-the-middle (FIM) Fills a gap using the code before and after the cursor
Python → C++ translation Translates a Python function to C++; every candidate is compiled and run against tests before it is returned

Access is granted individually, for non-commercial research and evaluation only — see Research Use Terms.

Results at step 204,000

Benchmark Setting Result
HumanEval (164 tasks) one attempt per task (greedy, pass@1) 22.6%

The full evaluation — further benchmarks, comparisons with other small code models, and the training history — is published in the EUGEN 160M training report.

Speed

Generation speed for a single user, 128 new tokens, Q8_0 weights:

Hardware Tokens per second Measured
AMD Ryzen 9 9900X, CPU only, 8 threads (llama.cpp engine) 364 22 Oct 2026, earlier checkpoint of the same model¹
AMD Ryzen 9 9900X, CPU only, through the server 310 22 Oct 2026, earlier checkpoint¹
NVIDIA Quadro RTX 5000 403 22 Oct 2026, earlier checkpoint¹
NVIDIA Tesla V100S 429 22 Oct 2026, earlier checkpoint¹
Intel Core i9-9900K (iMac, macOS 15.4), CPU only, 8 threads (llama.cpp engine) 176 25 Oct 2026, this file

¹ Identical architecture and file format, so generation speed is the same.

Requirements and tested environments

Tested Minimum
Operating system Linux (Ubuntu 24.04); macOS 15.4 (Intel) Linux or macOS. Windows has not been tested.
CPU AMD Ryzen 9 9900X (Linux), Intel Core i9-9900K (macOS) 64-bit CPU, about 1 GB free RAM
GPU (optional) NVIDIA Quadro RTX 5000, NVIDIA Tesla V100S (Linux, CUDA 12) NVIDIA GPU with CUDA 12.x. Not required: CPU-only works. Apple Metal has not been tested.
Inference engine llama.cpp at commit a02c7f5 with the patch in this repository same
Stack Python 3.12 (Linux), 3.14 (macOS); aiohttp Python 3.10 or newer
Translation verifier g++ 13 with bubblewrap sandbox (Linux); Apple clang 17 with a resource-limited subprocess (macOS) a C++17 compiler; bubblewrap recommended on Linux
Disk — about 180 MB for the checkpoint and the stack

The stack has been checked to give identical outputs, field by field, to the reference deployment: 39 completion requests (inline, next line, block and fill-in-the-middle) and 3 verified translations, with only timing fields differing.

Files

File What it is
eugen-160m-step204000-q8_0.gguf the checkpoint at step 204,000, Q8_0, 169 MB
llama.cpp/eugen-tokenizer.patch tokenizer patch for llama.cpp (adds the EUGEN pre-tokenizer)
stack/server.py gateway: completion and verified translation over HTTP
stack/eugen_stack/ completion logic (fill-in-the-middle, name monitor, scope cutting, repetition guard) and the C++ translation verifier
stack/README.md full description of the stack, its settings and request fields
LICENSE.md Research Use Terms

Quick start

1. Build the inference engine

# run inside the downloaded copy of this repository
git clone https://github.com/ggml-org/llama.cpp llama.cpp-src
cd llama.cpp-src
git checkout a02c7f58c1c335f5375bf81f174b9a58cce939af
git apply ../llama.cpp/eugen-tokenizer.patch

# CPU only (Linux and macOS)
cmake -B build -DGGML_METAL=OFF -DLLAMA_CURL=OFF -DCMAKE_BUILD_TYPE=Release
cmake --build build -j --target llama-server llama-completion

# NVIDIA GPU (CUDA, Linux)
cmake -B build-cuda -DGGML_CUDA=ON -DLLAMA_CURL=OFF -DCMAKE_BUILD_TYPE=Release
cmake --build build-cuda -j --target llama-server llama-completion

Quick check:

./build/bin/llama-completion -m ../eugen-160m-step204000-q8_0.gguf -p "def is_palindrome(s):" -n 9 --temp 0 2>/dev/null
# def is_palindrome(s):
#     return s == s[::-1]

2. Start the model server

# CPU
./build/bin/llama-server -m ../eugen-160m-step204000-q8_0.gguf \
  --override-kv qwen3.context_length=int:2048 -c 2048 --host 127.0.0.1 --port 8080

# GPU (all layers on the GPU)
./build-cuda/bin/llama-server -m ../eugen-160m-step204000-q8_0.gguf \
  --override-kv qwen3.context_length=int:2048 -c 2048 -ngl 99 -fa on --host 127.0.0.1 --port 8080

3. Start the verifier and the gateway

cd ../stack
pip install -r requirements.txt
python3 -m eugen_stack.translate.server &           # C++ verifier on 127.0.0.1:18500
python3 server.py --upstream http://127.0.0.1:8080  # gateway on 127.0.0.1:18400

Both bind to 127.0.0.1 and have no authentication; they are meant for local use.

4. Try it

# Autocomplete (rest of the line)
curl -s http://127.0.0.1:18400/v1/complete -H 'Content-Type: application/json' \
  -d '{"prompt": "def add(a, b):\n    return", "mode": "inline", "max_tokens": 16}'

# Next line
curl -s http://127.0.0.1:18400/v1/complete -H 'Content-Type: application/json' \
  -d '{"prompt": "import os\n\ndef list_files(path):\n", "mode": "next_line", "max_tokens": 64}'

# Fill-in-the-middle (code before and after the cursor)
curl -s http://127.0.0.1:18400/v1/complete -H 'Content-Type: application/json' \
  -d '{"prompt": "def mean(xs):\n    ", "suffix": "\n    return total / len(xs)\n", "mode": "inline", "max_tokens": 32}'

# Python -> C++ translation, compiled and tested before it is returned
curl -s http://127.0.0.1:18400/v1/translate_verified -H 'Content-Type: application/json' \
  -d '{"code": "def count_vowels(s: str) -> int:\n    return sum(1 for c in s if c in \"aeiou\")\n", "target": "cpp"}'

The translation response reports whether the C++ code compiled, whether it passed the tests, whether its outputs match the Python function on the generated inputs, and the measured speed-up.

Intended use

  • Research on small code models: evaluation, benchmarking, analysis of model behaviour.
  • Experiments with local code assistance, on CPU or GPU.

Out of scope

  • Commercial products or services, or any production use.
  • Redistribution of the weights or of weights derived from them.
  • Use without human review of the generated code.

Limitations

  • This is an intermediate checkpoint of a small model. It makes mistakes, including plausible-looking code that is wrong.
  • Trained mainly on Python; quality in other languages is lower. Translation is supported from Python to C++ only, and this card reports no separate benchmark for it.
  • It is a completion model, not a chat or instruction-following assistant.
  • Always run tests on generated code. The translation tool does this automatically; the other modes do not.

Access

  1. Sign in to Hugging Face and fill in the access form at the top of this page, including your email address, your LinkedIn profile and the purpose of use.
  2. Each request is reviewed by hand. Before approving, we may contact you on LinkedIn to confirm your identity and purpose.
  3. You will be notified by email when the request is approved.
  4. Access is personal. If you need access for a colleague, they should submit their own request.

Citation

@misc{cwirlej2026eugen160m,
  author       = {Jakub Ćwirlej},
  title        = {EUGEN 160M: research checkpoint at step 204,000},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/JakCwi/Eugen-160m}},
  note         = {Intermediate training checkpoint, not a finished base model}
}

Contact

Jakub Ćwirlej · jakub.cwirlej@gmail.com · https://jakubcwirlej.com

Downloads last month
-
GGUF
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support