Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language:
|
3 |
+
- pl
|
4 |
+
- en
|
5 |
+
pipeline_tag: text-generation
|
6 |
+
---
|
7 |
+
|
8 |
+
## Llama-3-8B-Omnibus-1-PL-v01-GGUF
|
9 |
+
|
10 |
+
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:
|
11 |
+
|
12 |
+
#### LM Studio
|
13 |
+
Wersja minimum 0.2.20 - koniecznie wybierz format promptu Llama 3 (!) (opcja Preset)
|
14 |
+
|
15 |
+
#### ollama
|
16 |
+
Wersja 0.1.32. Konfiguracja ollama plik Modelfile
|
17 |
+
|
18 |
+
```
|
19 |
+
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"
|
20 |
+
```
|
21 |
+
|
22 |
+
|
23 |
+
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).
|
24 |
+
|
25 |
+
<img src="Llama-3-8B-PL-small.jpg" width="420" />
|
26 |
+
|
27 |
+
Uwaga!
|
28 |
+
* 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.)
|
29 |
+
* Udostępniłem go spontanicznie by użytkownicy mogli go używać i sprawdzać jakość Llama 3 ale w kontekście języka polskiego.
|
30 |
+
* 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.
|
31 |
+
|
32 |
+
### Sposób kodowania nazwy modelu
|
33 |
+
* Nazwa modelu bazowego: Llama-3-8B
|
34 |
+
* Nazwa datasetu: Omnibus-1
|
35 |
+
* Wersja językowa: PL (polska)
|
36 |
+
* Wersja modelu: v01
|
37 |
+
|
38 |
+
### Dataset
|
39 |
+
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.)
|
40 |
+
|
41 |
+
### Użycie Llama-3-8B-Omnibus-1-PL-v01 z biblioteką Transformers
|
42 |
+
|
43 |
+
Poniższy kod używa bibliotekę Transformers:
|
44 |
+
|
45 |
+
```python
|
46 |
+
import transformers
|
47 |
+
import torch
|
48 |
+
|
49 |
+
model_id = "Remek/Llama-3-8B-Omnibus-1-PL-v01"
|
50 |
+
|
51 |
+
pipeline = transformers.pipeline(
|
52 |
+
"text-generation",
|
53 |
+
model=model_id,
|
54 |
+
model_kwargs={"torch_dtype": torch.bfloat16},
|
55 |
+
device="auto",
|
56 |
+
)
|
57 |
+
|
58 |
+
messages = [
|
59 |
+
{"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."},
|
60 |
+
{"role": "user", "content": "Napisz czym jest Warszawa?"},
|
61 |
+
]
|
62 |
+
|
63 |
+
prompt = pipeline.tokenizer.apply_chat_template(
|
64 |
+
messages,
|
65 |
+
tokenize=False,
|
66 |
+
add_generation_prompt=True
|
67 |
+
)
|
68 |
+
|
69 |
+
terminators = [
|
70 |
+
pipeline.tokenizer.eos_token_id,
|
71 |
+
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
|
72 |
+
]
|
73 |
+
|
74 |
+
outputs = pipeline(
|
75 |
+
prompt,
|
76 |
+
max_new_tokens=256,
|
77 |
+
eos_token_id=terminators,
|
78 |
+
do_sample=True,
|
79 |
+
temperature=0.6,
|
80 |
+
top_p=0.9,
|
81 |
+
)
|
82 |
+
print(outputs[0]["generated_text"][len(prompt):])
|
83 |
+
```
|
84 |
+
|
85 |
+
Przykładowa odpowiedź:
|
86 |
+
|
87 |
+
> 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|>
|
88 |
+
|
89 |
+
|
90 |
+
### Szablon konwersacji
|
91 |
+
Szablon konwersacji to oryginalna wersja Llama3
|
92 |
+
|
93 |
+
```
|
94 |
+
<|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|>
|
95 |
+
{System}
|
96 |
+
<|eot_id|>
|
97 |
+
<|start_header_id|>user<|end_header_id|>
|
98 |
+
{User}
|
99 |
+
<|eot_id|><|start_header_id|>assistant<|end_header_id|>
|
100 |
+
{Assistant}
|
101 |
+
```
|
102 |
+
|
103 |
+
### Wersje quantized
|
104 |
+
Wersje poddane quantyzacji są dostępne w repozytorium:
|
105 |
+
* Llama-3-8B-Omnibus-1-PL-v01-GGUF - przetestowane w LM Studio (wybierz szablon - Llama3)
|
106 |
+
|
107 |
+
*
|
108 |
+
| Version | Model card |
|
109 |
+
| ------- | -------------------------------------------------------------------- |
|
110 |
+
| GGUF | [🤗 HuggingFace](https://huggingface.co/Remek/Llama-3-8B-Omnibus-1-PL-v01-GGUF) |
|
111 |
+
|
112 |
+
|
113 |
+
### Trening
|
114 |
+
Poniżej szczegóły hiperparametrów treningu:
|
115 |
+
* learning_rate: 2e-05
|
116 |
+
* train_batch_size: 8
|
117 |
+
* eval_batch_size: 8
|
118 |
+
* seed: 42
|
119 |
+
* distributed_type: single-GPU (Nvidia A6000 Ada)
|
120 |
+
* num_devices: 1
|
121 |
+
* gradient_accumulation_steps: 4
|
122 |
+
* optimizer: adamw_8bit
|
123 |
+
* lr_scheduler_type: linear
|
124 |
+
* lr_scheduler_warmup_steps: 5
|
125 |
+
* num_epochs: 1
|
126 |
+
* QLoRa - 4bit: rank 64, alpha 128
|
127 |
+
|
128 |
+
#### Unsloth
|
129 |
+
|
130 |
+
<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/made with unsloth.png" width="200px" align="center" />
|
131 |
+
|
132 |
+
[Unsloth](https://unsloth.ai), narzędzie dzięki któremu powstał ten model.
|
133 |
+
|
134 |
+
|
135 |
+
### Licencja
|
136 |
+
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).
|
137 |
+
|