File size: 11,011 Bytes
e2aaf21
964655d
e2aaf21
964655d
e2aaf21
 
 
 
 
964655d
 
 
 
 
e2aaf21
 
964655d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2aaf21
964655d
e2aaf21
964655d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2aaf21
 
964655d
e2aaf21
964655d
e2aaf21
964655d
 
 
 
 
 
e2aaf21
964655d
e2aaf21
964655d
 
 
 
e2aaf21
964655d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e2aaf21
 
964655d
e2aaf21
964655d
 
 
 
e2aaf21
964655d
 
e2aaf21
964655d
e2aaf21
964655d
 
 
 
 
 
e2aaf21
 
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
---
datasets: WiroAI/dolphin-r1-Italian
library_name: transformers
model_name: OpenR1-Qwen-7B-Italian
tags:
- generated_from_trainer
- trl
- sft
licence: license
license: apache-2.0
language:
- it
base_model:
- Qwen/Qwen2.5-7B-Instruct
---

<div align="center" style="display: flex; justify-content: center; align-items: center;">
  <img src="https://huggingface.co/WiroAI/wiroai-turkish-llm-9b/resolve/main/wiro_logo.png" width="15%" alt="Wiro AI" />
  <img src="https://upload.wikimedia.org/wikipedia/en/0/03/Flag_of_Italy.svg" width="15%" alt="Italian Flag" style="margin-left: 10px;" />
</div>
<hr>
<div align="center" style="line-height: 1;">
  <a href="https://www.wiro.ai/" target="_blank" style="margin: 2px;">
    <img alt="Homepage" src="https://huggingface.co/WiroAI/wiroai-turkish-llm-9b/resolve/main/homepage.svg" style="display: inline-block; vertical-align: middle;"/>
  </a>
  <a href="https://wiro.ai/tools?search=&categories=chat&tags=&page=0" target="_blank" style="margin: 2px;">
    <img alt="Chat" src="https://huggingface.co/WiroAI/wiroai-turkish-llm-9b/resolve/main/chat.svg" style="display: inline-block; vertical-align: middle;"/>
  </a>
  <a href="https://huggingface.co/WiroAI" target="_blank" style="margin: 2px;">
    <img alt="Hugging Face" src="https://huggingface.co/WiroAI/wiroai-turkish-llm-9b/resolve/main/huggingface.svg" style="display: inline-block; vertical-align: middle;"/>
  </a>
</div>
<div align="center" style="line-height: 1;">
  <a href="https://instagram.com/wiroai" target="_blank" style="margin: 2px;">
    <img alt="Instagram Follow" src="https://img.shields.io/badge/Instagram-wiroai-555555?logo=instagram&logoColor=white&labelColor=E4405F" style="display: inline-block; vertical-align: middle;"/>
  </a>
    <a href="https://x.com/wiroai" target="_blank" style="margin: 2px;">
    <img alt="X Follow" src="https://img.shields.io/badge/X-wiroai-555555?logo=x&logoColor=white&labelColor=000000" style="display: inline-block; vertical-align: middle;"/>
  </a>
</div>
<div align="center" style="line-height: 1;">
  <a href="https://wiro.ai/agreement/terms-of-service" style="margin: 2px;">
    <img alt="License" src="https://img.shields.io/badge/License-apache 2.0-f5de53?&color=f5de53" style="display: inline-block; vertical-align: middle;"/>
  </a>
</div>

# 🚀 OpenR1-Qwen-7B-Italian 🚀

This is a finetune of [Qwen2.5-Instruct](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) on [WiroAI/dolphin-r1-Italian](https://huggingface.co/datasets/WiroAI/dolphin-r1-Italian).

## 🟢 Overview 

- DeepSeek's distilled models sometimes reason in Chinese or English even though prompted in another language.
- Open-Source models still need improvement on relatively low-resource languages.
- A motivation to reproduce R1 and contribute to the community.

## 🟢 Training 

- We train the model on the [WiroAI/dolphin-r1-Italian](https://huggingface.co/datasets/WiroAI/dolphin-r1-Italian) for 2 epochs. We use learning rate of 1e-5 and max seq length 4096. The training follows a cosine learning rate schedule with a 10% warmup phase. 
- Training took 5 days in 8xA6000 ADA cluster.
- Normally, R1 team compares the performance of OpenR1 models to DeepSeek-Distill-Qwen-7B and OpenThinker-7B using [lighteval](https://github.com/huggingface/open-r1/tree/main?tab=readme-ov-file#evaluating-models). However, the datasets are only MATH oriented so not to conclude anything we won't disclose the default results.

You can find the training and evaluation code at: https://github.com/huggingface/open-r1/

## 🐨 Quick start

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "OpenR1-Qwen-7B-Italian"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "Trova il valore di $x$ che soddisfa l'equazione $4x+5 = 6x+7$."

messages = [
    {"role": "system", "content": "Si prega di ragionare passo dopo passo prima di rispondere."},
    {"role": "user", "content": prompt}
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=4096
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
```

```
<|begin_of_thought|>
Ok, allora devo risolvere l'equazione 4x + 5 uguale a 6x + 7 per x.
Mmm, vediamo. Ricordo dalle lezioni di algebra che quando hai un'equazione come questa, vuoi isolare la variabile su un lato.
Probabilmente significa portare tutti i termini con la x da una parte e le costanti dall'altra. Cerchiamo di ricordare i passaggi esatti.
Innanzitutto, forse posso sottrarre 4x da entrambi i lati per eliminare il 4x a sinistra. Proviamo. Se sottraggo 4x da entrambi i lati, otterrei:
4x + 5 - 4x = 6x + 7 - 4x
Semplificando entrambi i lati, il 4x e il -4x sul lato sinistro si annullano, lasciando solo 5. Sul lato destro, 6x meno 4x fa 2x. Quindi ora l'equazione è:
5 = 2x + 7\n\nOk, sembra più semplice. Ora, devo ottenere x da sola.
Il termine costante al lato destro è 7, quindi forse posso sottrarre 7 da entrambi i lati per sbarazzarmene.
Facciamolo: 5 - 7 = 2x + 7 - 7\n\nSemplificando entrambi i lati: 5 - 7 fa -2, e 7 - 7 si annulla, lasciando 2x.
Quindi ora abbiamo: -2 = 2x
Mmm, quindi 2x è uguale a -2. Per risolvere per x, dovrei dividere entrambi i lati per 2. Verifichiamo:
(-2) / 2 = (2x)/2
Che si semplifica in: -1 = x
Quindi x è uguale a -1. Vediamo se ha senso. Sostituiamo x = -1 nell'equazione originale per verificare.
Lato sinistro: 4*(-1) + 5 = -4 + 5 = 1
Lato destro: 6*(-1) + 7 = -6 + 7 = 1
Oh, entrambi i lati sono uguali a 1. Funziona! Quindi x = -1 è effettivamente la soluzione corretta.
Aspetta, ma voglio assicurarmi di non aver fatto errori nei miei passaggi. Ripercorriamo di nuovo ogni passaggio.
Equazione originale: 4x + 5 = 6x + 7
Passaggio 1: Sottrai 4x da entrambi i lati. Questo dà 5 = 2x + 7. Sembra giusto perché 4x - 4x è 0, quindi rimane 5, e 6x - 4x è 2x.
Passaggio 2: Sottrai 7 da entrambi i lati. Questo dà 5 - 7 = 2x, che è -2 = 2x. Corretto.
Passaggio 3: Dividi entrambi i lati per 2. -2 diviso per 2 è -1, quindi x = -1. Sì, torna tutto.
Un altro modo per affrontarlo potrebbe essere quello di sottrarre prima 5 da entrambi i lati invece di sottrarre 4x.
Proviamo questo metodo per confermare.\n\nPartendo da 4x + 5 = 6x + 7
Sottrai 5 da entrambi i lati: 4x = 6x + 2
Ora, sottrai 6x da entrambi i lati: 4x - 6x = 2
Che dà -2x = 2\n\nDividi entrambi i lati per -2: x = 2 / (-2) = -1
Stesso risultato. Ok, quindi sia che io sottragga prima 4x o 5, finisco comunque con x = -1. Questo mi dà più fiducia che la soluzione sia corretta.
In alternativa, potrei anche usare l'addizione di equazioni. Vediamo. Se voglio avere tutti i termini con x su un lato e le costanti sull'altro, posso riorganizzare l'equazione iniziale.
Sottrai 4x e 7 da entrambi i lati contemporaneamente.\n\nAspetta, forse no. Pensiamoci. L'idea è quella di spostare tutti i termini con x a sinistra e le costanti a destra.
Quindi partendo da 4x + 5 = 6x + 7\n\nSe sottraggo 4x da entrambi i lati, come ho fatto prima, ottengo 5 = 2x + 7.
In alternativa, se sottraggo 6x e 5 da entrambi i lati, sarebbe: 4x + 5 - 6x - 5 = 6x + 7 - 6x - 5
Semplificando il lato sinistro: (4x - 6x) + (5 - 5) = -2x + 0 = -2x
Lato destro: (6x - 6x) + (7 - 5) = 0 + 2 = 2
Quindi, -2x = 2, portando a x = -1. Stessa risposta. Quindi indipendentemente dal metodo, è coerente.
Un altro controllo: visualizziamo l'equazione. Il lato sinistro è 4x + 5, che è una linea con pendenza 4 e intercetta y a 5.
Il lato destro è 6x + 7, una linea con pendenza 6 e intercetta y a 7. L'equazione chiede dove queste due linee si intersecano.
Poiché hanno pendenze diverse, dovrebbero intersecarsi esattamente in un punto. La nostra soluzione x = -1 è dove si incrociano.
Verifichiamo con un grafico approssimativo.
A x = -1, il lato sinistro è 4*(-1) + 5 = -4 + 5 = 1. Il lato destro è 6*(-1) + 7 = -6 + 7 = 1. Quindi entrambe le linee passano per ( -1, 1 ). Ha senso.
Se le linee avessero la stessa pendenza, sarebbero parallele e non si intersecherebbero mai, ma poiché le loro pendenze sono diverse (4 contro 6), devono intersecarsi esattamente una volta.
Pertanto, x = -1 è l'unica soluzione. C'è qualche possibilità che abbia commesso un errore aritmetico? Ricontrolliamo di nuovo ogni passaggio.
Equazione originale: 4x + 5 = 6x + 7
Sottrai 4x: 5 = 2x + 7 Sottrai 7: -2 = 2x Dividi per 2: -1 = x
Tutte le operazioni sono aritmetiche semplici. Sottrarre 4x e 7, quindi dividere per 2. Nessun problema lì. In alternativa, se inserisco x = -1 nell'equazione originale, come ho fatto prima, entrambi i lati sono uguali a 1, quindi funziona.
Penso che sia completo. Non riesco a vedere errori nel mio ragionamento. Tutti i diversi metodi portano alla stessa risposta e la verifica sostituendo nell'equazione originale conferma che è corretta.
Pertanto, sono sicuro che x = -1 sia la soluzione giusta.
**Risposta finale** Il valore di \\( x \\) che soddisfa l'equazione è \\boxed{-1}.
<|end_of_thought|>

<|begin_of_solution|>
Per risolvere l'equazione (4x + 5 = 6x + 7) per (x):
1. Sottrai (4x) da entrambi i lati: [4x + 5 - 4x = 6x + 7 - 4x]
Semplificando, otteniamo: [5 = 2x + 7]
2. Sottrai 7 da entrambi i lati: [5 - 7 = 2x + 7 - 7]
Semplificando, otteniamo: [-2 = 2x]
3. Dividi entrambi i lati per 2: [-2/2 = 2x/2]
Semplificando, otteniamo: [-1 = x]
Verifica sostituendo (x = -1) nell'equazione originale:
- Lato sinistro: (4(-1) + 5 = -4 + 5 = 1)
- Lato destro: (6(-1) + 7 = -6 + 7 = 1)
Entrambi i lati sono uguali a 1, confermando che la soluzione è corretta.
<|end_of_solution|>
```


## 🟡 Evaluation

- We observed that reasoning process has slightly improved. Our model thinks more clearly in Italian compared to the DeepSeek's reasoning model.
- This model trained for experimental motives and any benchmark evaluation is appreciated. Please be aware that this model will be producing more tokens compared to normal models and will consume more VRAM during inference.
- If you are willing to evaluate this model please make sure that model will be allowed to produce enough tokens. Generate until requests that restrict the model to output less than 4000 tokens will lead to poor results.
- We believe democratized and culturally improved open-source models will be through sharing and experiments!

## 🤗 Community
- We would like to thank Huggingface Staff and everyone who contributed to the Open-R1 project!

## Citation

```none
@article{WiroAI,
  title={WiroAI/OpenR1-Qwen-7B-Italian,
  author={Abdullah Bezir, Cengiz Asmazoğlu},
  year={2025},
  url={https://huggingface.co/WiroAI/OpenR1-Qwen-7B-Italian}
}
```