A mid-training "practice phase" that teaches small open-source LLMs how to evolve solutions.
- News
- Finch Models
- Installation
- Repository Structure
- Quickstart
- TL;DR
- Citation
- License
- Acknowledgement
- Jun 2026 Β· π¦ Dataset update β Expanded the Finch Collection with 71 additional optimization tasks (371 β 442) and 61,049 additional trajectories (156,731 β 217,780). Teacher trajectories from GPT-5.4 and Gemini-3-Flash are now also available (GPT-5.4 Β· Gemini-3-Flash).
- Jun 2026 Β· π€ Talk β Invited talk at the AiDDA Conference 2026 (Virtual), OpenEvolve Team Session.
- May 2026 Β· π Oral β EFT accepted as an Oral at the CAIS 2026 Workshop on AI Agents for Discovery in the Wild (AID-Wild), with an invited talk in the OpenEvolve Team Demo Session (San Jose, CA).
| Model | Base | π€ Hugging Face |
|---|---|---|
| Finch-2B | Qwen3.5-2B | minnesotanlp/Finch-2B |
| Finch-4B | Qwen3.5-4B | minnesotanlp/Finch-4B |
| Finch-8B | Qwen3-8B | minnesotanlp/Finch-8B |
| Finch-9B | Qwen3.5-9B | minnesotanlp/Finch-9B |
| Finch-4B-KTO | Finch-4B | minnesotanlp/Finch-4B-KTO |
| Finch-8B-KTO | Finch-8B | minnesotanlp/Finch-8B-KTO |
SkyDiscover uses uv. Install the core
framework plus the benchmark extras you need:
cd skydiscover
uv sync --extra math --extra adrs --extra frontier-cs --extra external --extra algotuneTask- and benchmark-specific setup
# Symbolic regression
uv pip install h5py
uv run python data_api.py
# Math (e.g. ErdΕs minimum-overlap) β JAX on CUDA 12
uv pip install "jax[cuda12]"
# ALE-Bench (AtCoder Heuristic Contest tasks)
git clone https://github.com/SakanaAI/ALE-Bench.git
cd ALE-Bench && uv pip install -e . && uv pip install ".[eval]" && cd ..
# Frontier-CS (competitive programming; requires Docker)
cd benchmarks/frontier-cs-eval
git clone https://github.com/FrontierCS/Frontier-CS.git
cd Frontier-CS/algorithmic && docker compose up -d # start the judge server
cd ../../../..
uv sync --extra frontier-cs
# Biology (scRNA-seq denoising)
# NOTE: the biology task needs a different numpy version that conflicts with the
# other tasks, so install it separately in its own environment.
git clone https://github.com/openproblems-bio/openproblems.git
cd openproblems && git checkout v1.0.0 && cd ..
uv sync --extra math --extra adrs --extra frontier-cs --extra external \
--extra prompt-optimization --extra algotune --extra biology
cd openproblems
git apply ../benchmarks/biology/denoising/evaluator/openproblems_api_fix.patch
cd ..Training environment (LLaMA-Factory)
conda create -n train_env -y python==3.12
conda activate train_env
conda install -c conda-forge cuda-nvcc cuda-toolkit -y
git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git
cd LlamaFactory
pip install -e .
pip install -r requirements/metrics.txt -r requirements/deepspeed.txt
pip install wandb
pip install flash-attn --no-build-isolation --no-cache-dir
# Qwen3.5 kernels
pip install "flash-linear-attention>=0.4.1" causal-conv1d --no-build-isolation
pip install tilelang liger-kernel.
βββ dataset_construction/ # Build the Finch Collection: filter & label harvested trajectories
βββ train/ # EFT (SFT) training configs
βββ skydiscover/ # Discovery framework + benchmarks
β βββ scripts/ # Trajectory collection (Qwen3.5-397B teacher via OpenEvolve)
β βββ eval_scripts/ # Evaluation: serve & run Finch across the benchmark suite
βββ openevolve/ # Vendored OpenEvolve scaffold
Each component is self-contained; see its directory for details.
# 0) Install SkyDiscover (see Installation above for benchmark extras)
cd skydiscover && uv sync && cd ..
# 1) Collect trajectories with the Qwen3.5-397B teacher (OpenEvolve scaffold)
skydiscover/scripts/run_math_openevolve.sh
# 2) Build the Finch Collection (filter + select trajectories)
bash dataset_construction/scripts/run_pipeline.sh
# 3) Train (example config; uses LLaMA-Factory-style YAML)
# llamafactory-cli train train/qwen3_5_eft_config.yaml
# 4) Evaluate: serve a Finch checkpoint, then run a benchmark
skydiscover/eval_scripts/run_vllm.sh # serve a Finch checkpoint
skydiscover/eval_scripts/run_math.sh # run a benchmarkSet provider API keys via environment variables (e.g.
OPENROUTER_API_KEY); no keys are committed to this repo.
Note
You don't have to use our evaluation code. Finch is just a mutation operator, so you can drop it into your own evolutionary search scaffold, or clone SkyDiscover and run it there. The skydiscover/eval_scripts/ here are provided only as a convenient reference setup.
State-of-the-art discovery systems put an LLM inside an evolutionary search scaffold, but the discovery know-how lives in the scaffold and every new task starts from zero. Evolution Fine-Tuning (EFT) moves that behavior into the model by turning evolutionary search trajectories into supervision.
We build the Finch Collection β 156K trajectories across 10 domains and 371 optimization tasks β and fine-tune open-source LLMs (2Bβ9B) into the Finch family. Across 22 held-out tasks, Finch models beat their base counterparts by +10.22% on average.
The collection is built in three steps:
- Seed task collection. We source 371 tasks from 10 domains, spanning mathematical discovery, competitive programming, heuristic optimization, numerical algorithm optimization, symbolic regression (physics oscillation, biological population growth, chemical reaction), GPU kernel optimization, constructive search, and biological denoising.
- Trajectory collection. We run the OpenEvolve scaffold with Qwen3.5-397B-A17B as the teacher mutation operator under two strategies β diff-based edit (exploitation) and full rewrite (exploration) β at temperature 0.7, top-p 0.95, and a 30K-token generation budget, yielding 172,997 raw trajectories.
- Filtering & labeling. We discard systematic errors, unrecoverable/breakage cases, and overlong inputs (90.6% retained β 156,731), then label each transition by its score delta.
@misc{lee2026evolutionfinetuninglearningdiscover,
title = {Evolution Fine-Tuning: Learning to Discover Across 371 Optimization Tasks},
author = {Young-Jun Lee and Seungone Kim and Minki Kang and Alistair Cheong Liang Chuen
and Zerui Chen and Seungho Han and Taehee Jung and Dongyeop Kang},
year = {2026},
eprint = {2606.29082},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2606.29082}
}The Finch Collection is released under the CC-BY 4.0 license and is intended for non-commercial academic research. The accompanying code and Finch model weights are released under the Apache 2.0 license; the vendored openevolve/ and skydiscover/ components retain their own LICENSE files.
This research was supported by the "Advanced GPU Utilization Support Program" funded by the Government of the Republic of Korea (Ministry of Science and ICT). We are grateful to the SkyDiscover team for their valuable feedback on the dataset construction process, the use of the SkyDiscover framework, and the overall direction of this research β in particular, Shu Liu, Shubham Agarwal, and Mert Cemri for their insightful comments and discussions. We also thank the OpenEvolve team, especially Ritik Vijayvergiya and Asankhaya Sharma, for their guidance on using the OpenEvolve framework and for their thoughtful comments on this work. We further thank the authors of ALE-Bench, especially Yuki Imajuku, and the AtCoder team for authorizing the public release of the evolutionary search trajectories derived from their CC BY-ND 4.0-licensed dataset. Finally, we thank Byung-Kwan Lee for valuable feedback during the early stages of this project.


