File size: 6,835 Bytes
521273d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
language:
- pl
- en
pipeline_tag: text-generation
---

## Llama-3-8B-Omnibus-1-PL-v01-GGUF

To repozytorum zawiera konwersj臋 modeli Llama-3-8B-Omnibus-1-PL-v01 do formatu GGUF - Q8_0 oraz Q4_K_M. Przetestowana zosta艂a w dw贸ch 艣rodowiskach uruchomieniowych:

#### LM Studio 
Wersja minimum 0.2.20 - koniecznie wybierz format promptu Llama 3 (!) (opcja Preset)

#### ollama
Wersja 0.1.32. Konfiguracja ollama plik Modelfile

```
FROM ./Llama-3-Omnibus-PL-v01.Q4_K_M.gguf TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|> {{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|> {{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|> {{ .Response }}<|eot_id|>""" PARAMETER stop "<|start_header_id|>" PARAMETER stop "<|end_header_id|>" PARAMETER stop "<|eot_id|>" PARAMETER stop "<|reserved_special_token"
```


Repozytorium zawiera model Meta Llama-3-8B-Omnibus-1-PL-v01 w wersji polskoj臋zycznej. Model posta艂 na podstawie finetuningu modelu bazowego Llama-3-8B. Wykorzystano do tego dataset instrukcji Omnibus-1-PL (stworzy艂em go na w艂asne potrzeby przeprowadzania eksperymen贸w finetuningu modeli w j臋zyku polskim). Szczeg贸艂y parametr贸w treningu w sekcji Trening. Celem tego eksperymentu by艂o sprawdzenie czy mo偶na nam贸wi膰 Llama-3-8B do p艂ynnego rozmawiania w j臋zyku polskim (oryginalny model instrukcyjny 8B ma z tym problem - woli zdecydowanie bardziej rozmawia膰 po angielsku).

<img src="Llama-3-8B-PL-small.jpg" width="420" />

Uwaga! 
* Model b臋dzie dalej rozwijany poniewa偶 eksperymentuj臋 z a. kolejnymi wersjami datasetu, b. model jest 艣wietn膮 baz膮 do testowania r贸偶nych technik finetunowania (LoRA, QLoRA; DPO, ORPO itd.)
* Udost臋pni艂em go spontanicznie by u偶ytkownicy mogli go u偶ywa膰 i sprawdza膰 jako艣膰 Llama 3 ale w kontek艣cie j臋zyka polskiego.
* Po informacji, 偶e baza by艂a trenowana na 15T token贸w (tylko 5% nie angielskich) uzna艂em, 偶e to 艣wietna baza do finetuningu. By膰 mo偶e lekkie dotrenowanie modelu za pomoc膮 contingued-pretraining da jeszcze wi臋kszy uzysk. 

### Spos贸b kodowania nazwy modelu
* Nazwa modelu bazowego: Llama-3-8B
* Nazwa datasetu: Omnibus-1
* Wersja j臋zykowa: PL (polska)
* Wersja modelu: v01

### Dataset
Omnibus-1 to zbi贸r polskich instrukcji (100% kontekstu Polskiego - fakty, osoby, miejsca osadzone w Polsce), kt贸ry zosta艂 w 100% syntetycznie wygenerowany. Zawiera on instrukcje z kategorii - matematyka, umiej臋tno艣膰 pisania, dialogi, tematy medyczne, zagadki logiczne, t艂umaczenia itd. Powsta艂 on w ramach moich prac zwi膮zanych z badaniem jako艣ci modeli w kontek艣cie j臋zyka polskiego. Pozwala on na finetuning modelu i sprawdzenie podatno艣ci modelu do m贸wienia w naszym rodzimym j臋zyku. Dataset zawiera obecnie 75.000 instrukcji. B臋dzie ca艂y czas udoskonalony i by膰 mo偶e w przysz艂o艣ci udost臋pniony (jak uznam, 偶e ju偶 jest wtstarczaj膮co pe艂en i obejmuje szerokie spektrum tematyki i umiej臋tno艣ci). Dataset jest w 100% generowany za pomoc膮 innych LLM (GPT3.5, GPT4, Mixtral itd.) 

### U偶ycie Llama-3-8B-Omnibus-1-PL-v01 z bibliotek膮 Transformers

Poni偶szy kod u偶ywa bibliotek臋 Transformers:

```python
import transformers
import torch

model_id = "Remek/Llama-3-8B-Omnibus-1-PL-v01"

pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="auto",
)

messages = [
    {"role": "system", "content": "You are a helpful, smart, kind, and efficient AI assistant. You always fulfill the user's requests to the best of your ability."},
    {"role": "user", "content": "Napisz czym jest Warszawa?"},
]

prompt = pipeline.tokenizer.apply_chat_template(
		messages, 
		tokenize=False, 
		add_generation_prompt=True
)

terminators = [
    pipeline.tokenizer.eos_token_id,
    pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = pipeline(
    prompt,
    max_new_tokens=256,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
```

Przyk艂adowa odpowied藕:

> Warszawa to stolica Polski, po艂o偶ona na terenie Mazowsza. Jest to najwi臋ksze miasto w Polsce pod wzgl臋dem liczby mieszka艅c贸w oraz powierzchni. Warszawa jest r贸wnie偶 siedzib膮 rz膮du, parlamentu, prezydenta, s膮du najwy偶szego oraz wielu innych instytucji pa艅stwowych i mi臋dzynarodowych. Miasto jest znane z wielu zabytk贸w, takich jak Stare Miasto, Zamek Kr贸lewski, Pa艂ac Kultury i Nauki, a tak偶e z nowoczesnych atrakcji, takich jak Centrum Nauki Kopernik czy Centrum Nauki i Sztuki. Warszawa jest r贸wnie偶 wa偶nym centrum kulturalnym, gospodarczym i naukowym. Miasto jest r贸wnie偶 siedzib膮 wielu firm mi臋dzynarodowych i polskich przedsi臋biorstw. Warszawa jest miastem, kt贸re 艂膮czy w sobie przesz艂o艣膰 z nowoczesno艣ci膮, oferuj膮c mieszka艅com i turystom szeroki zakres mo偶liwo艣ci. Miasto jest r贸wnie偶 znane z wielu festiwali i wydarze艅 kulturalnych, kt贸re przyci膮gaj膮 miliony turyst贸w z ca艂ego 艣wiata. Warszawa to miasto pe艂ne 偶ycia, kultury, historii i nowoczesno艣ci, kt贸re zdecydowanie zas艂uguje na uwag臋. <|im_end|>


### Szablon konwersacji 
Szablon konwersacji to oryginalna wersja Llama3

```
<|start_header_id|>You are a helpful, smart, kind, and efficient AI assistant. You always fulfill the user's requests to the best of your ability.<|end_header_id|>
{System}
<|eot_id|>
<|start_header_id|>user<|end_header_id|>
{User}
<|eot_id|><|start_header_id|>assistant<|end_header_id|>
{Assistant}
```

### Wersje quantized
Wersje poddane quantyzacji s膮 dost臋pne w repozytorium:
* Llama-3-8B-Omnibus-1-PL-v01-GGUF - przetestowane w LM Studio (wybierz szablon - Llama3)

* 
| Version | Model card                                                           |
| ------- | -------------------------------------------------------------------- |
| GGUF    | [馃 HuggingFace](https://huggingface.co./Remek/Llama-3-8B-Omnibus-1-PL-v01-GGUF) |


### Trening
Poni偶ej szczeg贸艂y hiperparametr贸w treningu:
* learning_rate: 2e-05
* train_batch_size: 8
* eval_batch_size: 8
* seed: 42
* distributed_type: single-GPU (Nvidia A6000 Ada)
* num_devices: 1
* gradient_accumulation_steps: 4
* optimizer: adamw_8bit
* lr_scheduler_type: linear
* lr_scheduler_warmup_steps: 5
* num_epochs: 1
* QLoRa - 4bit: rank 64, alpha 128

#### Unsloth

<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/made with unsloth.png" width="200px" align="center" />

[Unsloth](https://unsloth.ai), narz臋dzie dzi臋ki kt贸remu powsta艂 ten model.


### Licencja
Licencja na zasadzie nie do komercyjnego u偶ycia (ze wzgl臋du na dataset - generowany syntetycznie za pomoc膮 modeli GPT4, GPT3.5) oraz licencja Llama3 (prosz臋 o zapoznanie si臋 ze szczeg贸艂ami licencji).