--- base_model: LiquidAI/LFM2.5-2.6B base_model_relation: finetune library_name: transformers pipeline_tag: text-generation language: - en license: other tags: - trl - openenv - harbor - agent - smoldataenvs - sft - opencode datasets: - FineEnvs/SmolDataEnvs-multiharness-sft thumbnail: https://huggingface.co/spaces/AdithyaSK/multi-harness-rl/resolve/main/app/public/og/og-image.png model-index: - name: LFM2.5-2.6B-opencode-SFT (main, step 1208) results: - task: type: text-generation name: Agentic data analysis dataset: type: FineEnvs/SmolDataEnvs-harbor-test name: SmolDataEnvs (250 fixed test tasks) split: test args: harness: all four metrics: - type: pass_at_1 name: Pass@1 (%) — Overall value: 47.5 - task: type: text-generation name: Agentic data analysis dataset: type: FineEnvs/SmolDataEnvs-harbor-test name: SmolDataEnvs (250 fixed test tasks) split: test args: harness: opencode metrics: - type: pass_at_1 name: Pass@1 (%) — OpenCode value: 51.6 - task: type: text-generation name: Agentic data analysis dataset: type: FineEnvs/SmolDataEnvs-harbor-test name: SmolDataEnvs (250 fixed test tasks) split: test args: harness: claude-code metrics: - type: pass_at_1 name: Pass@1 (%) — Claude Code value: 33.2 - task: type: text-generation name: Agentic data analysis dataset: type: FineEnvs/SmolDataEnvs-harbor-test name: SmolDataEnvs (250 fixed test tasks) split: test args: harness: codex metrics: - type: pass_at_1 name: Pass@1 (%) — Codex value: 46.4 - task: type: text-generation name: Agentic data analysis dataset: type: FineEnvs/SmolDataEnvs-harbor-test name: SmolDataEnvs (250 fixed test tasks) split: test args: harness: mini-swe-agent metrics: - type: pass_at_1 name: Pass@1 (%) — Mini-SWE-Agent value: 58.8 license_name: lfm1.0 license_link: LICENSE --- [![The ultimate guide to multi-harness RL](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl/resolve/main/app/public/og/og-image.png)](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl) # LFM2.5-2.6B-opencode-SFT A full fine-tune of [LiquidAI/LFM2.5-2.6B](https://huggingface.co/LiquidAI/LFM2.5-2.6B) for agentic data-analysis tasks, trained with supervised fine-tuning (TRL SFT) using **OpenCode**. This release is **step 1,208** on **`main`**, epoch 2, scoring **47.5% pass@1** across four evaluation harnesses. [Article](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl) · [Collection](https://huggingface.co/collections/FineEnvs/multi-harness-rl-6abdfaaa8d74dacd481d5212) · [Evaluation tasks](https://huggingface.co/datasets/FineEnvs/SmolDataEnvs-harbor-test) · [Training dashboard](https://huggingface.co/spaces/FineEnvs/data-agent-training-comparison-trackio) ## Training and evaluation curves [![Animated training, pass@1 and tool-use curves through step 1,208](https://huggingface.co/FineEnvs/LFM2.5-2.6B-opencode-SFT/resolve/main/assets/curves.gif?v=2)](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl) Training curves use a trailing 50-step mean (at least 10 observations). Evaluation markers show measured checkpoints; hollow markers and dotted segments indicate incomplete coverage. Faint background lines show the full recorded trajectory; colored lines reveal the measured checkpoints. The first frame shows the completed chart before replaying, so previews also contain the full curves. Tool-call savings compare tasks solved by both the base model and checkpoint, with a different matched cohort at each checkpoint. SFT evaluations were recorded at the end of each epoch only. The animation stops at this revision's step 1,208. [Static chart](https://huggingface.co/FineEnvs/LFM2.5-2.6B-opencode-SFT/resolve/main/assets/curves.png) · [Plotted data](https://huggingface.co/FineEnvs/LFM2.5-2.6B-opencode-SFT/resolve/main/assets/curves.json) · [Interactive article](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl) ## Training TRL SFT on [FineEnvs/SmolDataEnvs-multiharness-sft](https://huggingface.co/datasets/FineEnvs/SmolDataEnvs-multiharness-sft), using the OpenCode subset only. The data contains successful Qwen3.8-27B teacher rollouts collected through OpenEnv × Harbor in Daytona sandboxes. Up to three teacher attempts were allowed per task/harness; the first successful trace was retained. This run uses 4,825 assistant-turn examples from 801 successful rollouts covering 801 distinct tasks. Loss is applied only to the next assistant response; user messages, tool outputs and prior history are context. Responses are tokenized for LFM, not trained against teacher token IDs or logprobs. | Setting | Value | |---|---| | Epochs / checkpoint | 2 / 1,208 | | Learning rate / schedule | 3e-6 / constant | | Effective batch size | 8 | | Optimizer / precision | paged AdamW 8-bit / bfloat16 | | Training harnesses | OpenCode | | Objective | Completion-only supervised fine-tuning | ## Evaluation 250 fixed SmolDataEnvs test tasks (33 easy, 118 medium, 99 hard), each evaluated under four harnesses: **1,000 graded task/harness cells**. Pass@1 uses the first graded attempt per cell; infrastructure retries do not turn it into pass@k. All cells below are graded. | Harness | Correct / evaluated | Pass@1 | |---|---:|---:| | OpenCode | 129 / 250 | 51.6% | | Claude Code | 83 / 250 | 33.2% | | Codex | 116 / 250 | 46.4% | | Mini-SWE-Agent | 147 / 250 | 58.8% | | **Overall** | **475 / 1,000** | **47.5%** | Harness versions: OpenCode 1.18.31, Claude Code 2.1.270, Codex 0.154.0, Mini-SWE-Agent 2.4.6. Full scores, including difficulty breakdowns, are in [eval_results.json](eval_results.json). These are single-run results on a specific task set and harness versions. Harness mix, training exposure and compute differ across runs; the scores do not isolate a causal effect of the harness or objective. ## Load the checkpoint The repository contains full saved model weights and the saved tokenizer/chat template, not a LoRA adapter. Training used Transformers 5.14.1; use a compatible Transformers release. ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM model_id = "FineEnvs/LFM2.5-2.6B-opencode-SFT" revision = "main" tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision) model = AutoModelForCausalLM.from_pretrained( model_id, revision=revision, dtype=torch.bfloat16, device_map="auto" ) ``` Reproducing the task scores requires the agent harness and tools described in the [article](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl); a plain chat prompt is not the same evaluation. ## Related releases - [LFM2.5-2.6B-multiharness-RL](https://huggingface.co/FineEnvs/LFM2.5-2.6B-multiharness-RL) - [LFM2.5-2.6B-opencode-RL](https://huggingface.co/FineEnvs/LFM2.5-2.6B-opencode-RL) - [LFM2.5-2.6B-multiharness-SFT](https://huggingface.co/FineEnvs/LFM2.5-2.6B-multiharness-SFT) - [LFM2.5-2.6B-opencode-SFT](https://huggingface.co/FineEnvs/LFM2.5-2.6B-opencode-SFT) - [Qwen3.5-2B-multiharness-RL](https://huggingface.co/FineEnvs/Qwen3.5-2B-multiharness-RL) - [Qwen3.5-2B-opencode-RL](https://huggingface.co/FineEnvs/Qwen3.5-2B-opencode-RL) - [Qwen3.5-2B-opencode-standalone-RL](https://huggingface.co/FineEnvs/Qwen3.5-2B-opencode-standalone-RL) All models, datasets, environments and the article are linked in the [multi-harness RL collection](https://huggingface.co/collections/FineEnvs/multi-harness-rl-6abdfaaa8d74dacd481d5212). ## License and provenance Derived from [LiquidAI/LFM2.5-2.6B](https://huggingface.co/LiquidAI/LFM2.5-2.6B) under the LFM Open License v1.0. The base model's license is included unchanged in [LICENSE](LICENSE). FineEnvs modified the weights by supervised fine-tuning; this is not an official Liquid AI release. See [NOTICE](NOTICE) and [release_manifest.json](release_manifest.json) for modification notices, the pinned base revision, checkpoint identity and file checksums. Optimizer, scheduler, RNG and trainer state are excluded. ## Citation For the experiment, methodology and interpretation, cite the [main article](https://huggingface.co/spaces/AdithyaSK/multi-harness-rl): ```bibtex @misc{kolavi2026multiharnessrl, author = {Adithya S Kolavi}, title = {The ultimate guide to multi-harness RL}, year = {2026}, url = {https://huggingface.co/spaces/AdithyaSK/multi-harness-rl} } ```