Remek commited on
Commit
521273d
1 Parent(s): 40139be

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +137 -0
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
+