File size: 4,414 Bytes
47f3f62
e8aea1c
47f3f62
 
 
 
 
852e726
47f3f62
 
 
aad730d
 
 
 
 
 
47f3f62
 
852e726
 
aad730d
 
 
 
 
852e726
6c2396c
 
8ab4058
 
 
 
 
 
 
 
 
 
c01e52b
 
852e726
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ab4058
852e726
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c01e52b
aad730d
852e726
47f3f62
 
 
 
 
 
 
 
aad730d
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
---
base_model: unsloth/Qwen3.5-9B
tags:
- text-generation-inference
- transformers
- unsloth
- qwen3_5
- agent
license: apache-2.0
language:
- en
datasets:
- armand0e/badlogicgames-pi-mono-opus-filtered
- armand0e/kimi-k2.6-claude-code-traces
- armand0e/kimi-k2.6-agent
- armand0e/minimax-m2.7-agent
- TeichAI/Claude-Opus-4.6-Reasoning-887x
---

This model was trained on the following datasets using the qwen3.6 chat template (training was done with enable_thinking and preserve_thinking set to `True`):

  - `armand0e/badlogicgames-pi-mono-opus-filtered` - Pi traces from Claude Opus (mainly 4.5)
  - `armand0e/kimi-k2.6-claude-code-traces` - Claude Code traces from kimi k2.6
  - `armand0e/kimi-k2.6-agent` - Codex traces from kimi k2.6
  - `armand0e/minimax-m2.7-agent` - Pi traces from minimax m2.7
  - `TeichAI/Claude-Opus-4.6-Reasoning-887x` (Downsampled to 200 examples, only present to stabilize chat behavior)

For now this model is just a test to make sure the `teich` package was working correctly. less than 400 examples were given to the model in this training run so expect an overall performance degradation. A much more comprehensive DeepSeek Coder will be released in the coming days once training is complete

I recommend using the following sampling parameters:

- temp: 1.0
- top_k: 20 (though higher values like 40 still seem to work and be stable with tool calling and agentic tasks)
- top_p: 0.95
- min_p: 0.00
- repeat_penalty: 1.0
- presence_penalty: 1.5

Training code:

```py
MAX_SEQ_LEN = 49152

from unsloth import FastModel
import torch

model = FastModel.get_peft_model(
    model,
    finetune_vision_layers     = False, # Turn off for just text!
    finetune_language_layers   = True,  # Should leave on!
    finetune_attention_modules = True,  # Attention good for GRPO
    finetune_mlp_modules       = True,  # Should leave on always!

    r = 64,           # Larger = higher accuracy, but might overfit
    lora_alpha = 64,  # Recommended alpha == r at least
    lora_dropout = 0,
    bias = "none",
    random_state = 3407,
)

from teich import prepare_data

train_dataset = prepare_data(
    {
        "opus-agent": {
            "source": "armand0e/badlogicgames-pi-mono-opus-filtered",
        },
        "kimi-claude": {
            "source": "armand0e/kimi-k2.6-claude-code-traces",
        },
        "kimi-codex": {
            "source": "armand0e/kimi-k2.6-agent",
        },
        "minimax-m2.7": {
            "source": "armand0e/minimax-m2.7-agent",
        },
        "chat": {
            "source": "TeichAI/Claude-Opus-4.6-Reasoning-887x",
            "max_examples": 200,
        }
    },
    tokenizer,
    split="train",
    hf_token=HF_TOKEN,
    chat_template_kwargs={"enable_thinking": True, "preserve_thinking": True},
    max_length=MAX_SEQ_LEN,
    drop_oversized_examples=True,
    trim_oversized_followups=True,
    tokenize=True,
    strict=True,
)

from trl import SFTConfig, SFTTrainer

trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=train_dataset,
    eval_dataset=None,
    args=SFTConfig(
        dataset_text_field="text",
        dataset_num_proc=1,
        max_length=MAX_SEQ_LEN,
        packing=False,
        per_device_train_batch_size=1,
        gradient_accumulation_steps=8,
        warmup_steps= 5,
        num_train_epochs=2,
        learning_rate=2e-4,
        logging_steps=1,
        save_steps=100,
        save_total_limit=3,
        optim="adamw_8bit",
        weight_decay=0.01,
        lr_scheduler_type="linear",
        output_dir=OUTPUT_DIR,
        seed=3407,
        report_to="none",
    ),
)

from teich import mask_data

trainer = mask_data(
    trainer,
    tokenizer=tokenizer,
    train_on_reasoning=True,
    train_on_final_answers=True,
    train_on_tools=True,
)
```

This tune was very data limited, but still impresses me. I encourage everyone to generate their own high quality data for their own use cases, they can all be aggregated together.

---
# Uploaded finetuned  model

- **Developed by:** armand0e
- **License:** apache-2.0
- **Finetuned from model :** unsloth/Qwen3.5-9B

This qwen3_5 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.

[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)