yhavinga commited on
Commit
b339efa
1 Parent(s): a77830e

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +117 -162
README.md CHANGED
@@ -3,207 +3,162 @@ library_name: transformers
3
  license: apache-2.0
4
  pipeline_tag: text-generation
5
  tags:
6
- - finetuned
7
  inference: true
8
  widget:
9
- - messages:
10
- - role: system
11
- content: Je bent een behulpzame Nederlandse AI-assistent.
12
- - role: user
13
- content: Is Nederlandse wijn lekker?
 
 
 
 
 
 
14
  ---
15
 
16
- # Model Card for Model ID
17
 
18
- <!-- Provide a quick summary of what the model is/does. -->
19
 
 
20
 
 
 
 
21
 
22
- ## Model Details
 
 
 
23
 
24
- ### Model Description
 
25
 
26
- <!-- Provide a longer summary of what this model is. -->
27
 
28
- This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
 
29
 
30
- - **Developed by:** [More Information Needed]
31
- - **Funded by [optional]:** [More Information Needed]
32
- - **Shared by [optional]:** [More Information Needed]
33
- - **Model type:** [More Information Needed]
34
- - **Language(s) (NLP):** [More Information Needed]
35
- - **License:** [More Information Needed]
36
- - **Finetuned from model [optional]:** [More Information Needed]
37
 
38
- ### Model Sources [optional]
 
 
 
 
 
39
 
40
- <!-- Provide the basic links for the model. -->
41
 
42
- - **Repository:** [More Information Needed]
43
- - **Paper [optional]:** [More Information Needed]
44
- - **Demo [optional]:** [More Information Needed]
 
45
 
46
- ## Uses
47
 
48
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
49
 
50
- ### Direct Use
51
 
52
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
 
 
53
 
54
- [More Information Needed]
55
 
56
- ### Downstream Use [optional]
57
 
58
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
59
 
60
- [More Information Needed]
 
 
 
 
 
 
 
 
 
 
61
 
62
- ### Out-of-Scope Use
63
 
64
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- [More Information Needed]
 
 
67
 
68
- ## Bias, Risks, and Limitations
69
 
70
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
 
 
 
 
 
71
 
72
- [More Information Needed]
73
 
74
- ### Recommendations
75
 
76
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
77
 
78
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
79
 
80
- ## How to Get Started with the Model
81
 
82
- Use the code below to get started with the model.
83
 
84
- [More Information Needed]
 
85
 
86
- ## Training Details
87
 
88
- ### Training Data
 
 
 
 
 
 
 
 
 
 
 
89
 
90
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
91
 
92
- [More Information Needed]
 
 
93
 
94
- ### Training Procedure
 
 
 
 
95
 
96
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
 
 
 
 
 
97
 
98
- #### Preprocessing [optional]
99
-
100
- [More Information Needed]
101
-
102
-
103
- #### Training Hyperparameters
104
-
105
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
106
-
107
- #### Speeds, Sizes, Times [optional]
108
-
109
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
110
-
111
- [More Information Needed]
112
-
113
- ## Evaluation
114
-
115
- <!-- This section describes the evaluation protocols and provides the results. -->
116
-
117
- ### Testing Data, Factors & Metrics
118
-
119
- #### Testing Data
120
-
121
- <!-- This should link to a Dataset Card if possible. -->
122
-
123
- [More Information Needed]
124
-
125
- #### Factors
126
-
127
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
128
-
129
- [More Information Needed]
130
-
131
- #### Metrics
132
-
133
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
134
-
135
- [More Information Needed]
136
-
137
- ### Results
138
-
139
- [More Information Needed]
140
-
141
- #### Summary
142
-
143
-
144
-
145
- ## Model Examination [optional]
146
-
147
- <!-- Relevant interpretability work for the model goes here -->
148
-
149
- [More Information Needed]
150
-
151
- ## Environmental Impact
152
-
153
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
154
-
155
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
156
-
157
- - **Hardware Type:** [More Information Needed]
158
- - **Hours used:** [More Information Needed]
159
- - **Cloud Provider:** [More Information Needed]
160
- - **Compute Region:** [More Information Needed]
161
- - **Carbon Emitted:** [More Information Needed]
162
-
163
- ## Technical Specifications [optional]
164
-
165
- ### Model Architecture and Objective
166
-
167
- [More Information Needed]
168
-
169
- ### Compute Infrastructure
170
-
171
- [More Information Needed]
172
-
173
- #### Hardware
174
-
175
- [More Information Needed]
176
-
177
- #### Software
178
-
179
- [More Information Needed]
180
-
181
- ## Citation [optional]
182
-
183
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
184
-
185
- **BibTeX:**
186
-
187
- [More Information Needed]
188
-
189
- **APA:**
190
-
191
- [More Information Needed]
192
-
193
- ## Glossary [optional]
194
-
195
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
196
-
197
- [More Information Needed]
198
-
199
- ## More Information [optional]
200
-
201
- [More Information Needed]
202
-
203
- ## Model Card Authors [optional]
204
-
205
- [More Information Needed]
206
-
207
- ## Model Card Contact
208
-
209
- [More Information Needed]
 
3
  license: apache-2.0
4
  pipeline_tag: text-generation
5
  tags:
6
+ - finetuned
7
  inference: true
8
  widget:
9
+ - messages:
10
+ - role: system
11
+ content: Je bent een behulpzame Nederlandse AI-assistent.
12
+ - role: user
13
+ content: Is Nederlandse wijn lekker?
14
+ datasets:
15
+ - yhavinga/mc4_nl_cleaned
16
+ - yhavinga/nedd_wiki_news
17
+ - teknium/OpenHermes-2.5
18
+ - euirim/goodwiki
19
+ - philschmid/flanv2
20
  ---
21
 
22
+ # Boreas
23
 
24
+ **NB: 20240430 model card is WIP - evaluations / example generations to be added**
25
 
26
+ ![BoreasThe Mighty God of the North Wind](https://oldworldgods.com/wp-content/uploads/2023/10/boreas1.jpg)
27
 
28
+ Boreas-7B is een Nederlands/Engels taalmodel gebaseerd op Mistral-7B.
29
+ Het is getraind op 10 miljard tokens aan Nederlandse en Engelse tekst.
30
+ Boreas-7B-chat is verder getraind op instructie- en chat data.
31
 
32
+ * Boreas-7B is vergelijkbaar met [GEITje-7B](https://huggingface.co/Rijgersberg/GEITje-7B) in die zin dat
33
+ het ook een model is dat verder getraind is op Mistral-7B, met een evenzogrote hoeveelheid tokens (10B).
34
+ * Boreas-7B-chat is vergelijkbaar met [GEITje-7B-chat](https://huggingface.co/Rijgersberg/GEITje-7B-chat) en [GEITJE-7B-ultra-sft](https://huggingface.co/BramVanroy/GEITje-7B-ultra-sft), in die zin dat het ook een
35
+ fine-tune is op een chat dataset.
36
 
37
+ Edwin Rijgersberg heeft [uitgebreide documentatie](https://github.com/Rijgersberg/GEITje/blob/main/README.md) geschreven voor het gebruik van GEITje,
38
+ en deze is ook van toepassing op Boreas.
39
 
40
+ De voornaamste verschillen tussen Boreas en GEITje zijn:
41
 
42
+ * Boreas is getraind met een context lengte van 2048 tokens, GEITje met 8192 tokens.
43
+ * Boreas is getraind op een mix van Engels en Nederlands, waar GEITje alleen op voornamelijk Nederlands getraind is.
44
 
45
+ ## Doel Boreas
 
 
 
 
 
 
46
 
47
+ Creatie van een taalmodel dat wat betreft het Nederlandse gedeelte, niet getraind is op teksten gegeneerd door
48
+ een LLM. Dus geen Nederlandse chats gegeneerd door een LLM, en ook geen datasets die vertaald zijn uit het Engels door een LLM.
49
+ Er is niet streng gefilterd op LLM-gegenereerde tekst, maar dit is wel een aandachtspunt geweest bij het samenstellen van de datasets.
50
+ Bij het finetunen van Boreas-chat zijn toch 3% van de tokens Nederlandse chats gegeneerd door een LLM.
51
+ Dit is een kleine dataset die gemaakt is op basis van Nederlandse bronteksten, en een steekproef heeft uitgewezen
52
+ dat deze data van een goede kwaliteit is.
53
 
54
+ Het uiteindelijke chat model is getraind op een mix van voornamelijk:
55
 
56
+ 1. Openhermes-2.5: grote, diverse Engelse chat dataset (~45%)
57
+ 2. Een engels naar nederlands vertaal dataset (~34%)
58
+ 3. Pre-train data: verder met Wiki en boeken (~12%)
59
+ 4. Nederlandse wiki en boeken q en a (~3%)
60
 
61
+ Het Boreas model kan dus beschouwd worden als een test voor knowledge transfer van Engels naar Nederlands.
62
 
 
63
 
64
+ ## Gebruik met ollama
65
 
66
+ Kies een GGUF quant van [Boreas-7B-chat-v1-GGUF](https://huggingface.co/yhavinga/Boreas-7B-chat-v1-GGUF)
67
+ en volg de instructies daar.
68
+ Belangrijk: gebruik een system prompt, anders zijn de resultaten matig.
69
 
70
+ ## Boreas-7B basismodel
71
 
72
+ Het basismodel is op Mistral-7B doorgetraind op 10 miljard tokens.
73
 
74
+ De dataset is samengesteld uit verschillende bronnen in zowel Nederlands en Engels:
75
 
76
+ | Datasetnaam | Aantal Tokens | Percentage Tokens (%) |
77
+ |------------------------------------------------|---------------|-----------------------|
78
+ | Nederlandse romans | 3401M | 34.01 |
79
+ | Nederlandse Wikipedia | 2381M | 23.81 |
80
+ | mc4_nl_cleaned (Nederlands) | 1361M | 13.61 |
81
+ | Nederlands nieuws | 1361M | 13.61 |
82
+ | Nederlandse schoolboeken | 136M | 1.36 |
83
+ | Engelse romans | 340M | 3.40 |
84
+ | Engelse Wikipedia (euirim/goodwiki) | 340M | 3.40 |
85
+ | Engelse wiskunde- en natuurkundeboeken | 340M | 3.40 |
86
+ | Engelse instructiedataset (philschmid/flanv2) | 340M | 3.40 |
87
 
88
+ De keuze voor deze mix is gebaseerd op zowel beschikbaarheid van data als de volgende overwegingen:
89
 
90
+ * Veel Nederlands van hoge kwaliteit, teksten primair in het Nederlands geschreven door mensen. Hieruit volgt de keuze
91
+ voor romans, Wikipedia en nieuwsartikelen, maar bijvoorbeeld uitsluiten van forum-/twitterberichten en wetteksten.
92
+ * Erin mixen van de originele dataset voor ~5%, om ervoor te zorgen dat een model haar originele kennis niet verliest.
93
+ Het is niet bekend op welke data Mistral getraind is, maar het is aannemelijk dat er kwalitatief goed Engels en ook instructiedata in verwerkt is. Daarom is voor de ~3% aan Engelse boeken, Wikipedia en ook instructiedata gekozen.
94
+ * Zoveel mogelijk uitsluiten van door LLM's gegenereerde teksten in de pre-train fase. Bij veel datasets, vooral Nederlands, valt me op dat
95
+ de vertalingen of generaties van een slechte kwaliteit zijn. Daarom is gekozen voor datasets waarvan de brondata
96
+ pre ChatGPT tijdperk zijn, (dus voor November 2022).
97
+ * mc4_nl_cleaned - de bron van deze dataset is mC4 - deduplicated data van Common
98
+ Crawl, en gefiltered op bad-words en andere bewerkingen volgens het recept van de T5 auteurs voor de Engelse C4 dataset. In diverse ablations blijkt C4 een goede pre-train dataset, daarom is mc4_nl_cleaned ook voor dit model gebruikt.
99
+ * Er is geen sourcecode in gemixt - ik verwacht niet dat een 7B model ooit code kan genereren dat bruikbaar is.
100
+ Misschien helpt het bij logisch redeneer-puzzels, maar ook daarvoor verwacht ik dat een 7B model dit nooit zo goed
101
+ zal kunnen of generaliseren als grotere modellen.
102
 
103
+ Bij het pre-trainen zijn de brontexten gepackt in blokken van 2048 tokens. Hierbij is waar mogelijk geprobeerd om alleen
104
+ teksten te packen die bij elkaar passen. Ook worden kleine fragmenten weggegooid, zodat we
105
+ bijvoorbeeld nooit een fragment krijgen dat begint met een paar tokens van het einde van een wikipedia artikel, om daarna met een ander wikipedia artikel te beginnen. Dit is gedaan om 'cross sequence' ruis binnen 1 example zoveel mogelijk te voorkomen. Pas na packing zijn de examples geshuffled.
106
 
107
+ ## Pre-training
108
 
109
+ Boreas was pre-trained with the [EasyDeL JAX framework](https://github.com/erfanzar/EasyDel) on a tpu-v4-32
110
+ kindly supplied by the Google [TPU Research Cloud](https://sites.research.google/trc/about/).
111
+ Batch size 96
112
+ Using flash attention, block size of 512
113
+ Max sequence length of 2048
114
+ LION optimizer, triangle learning rate schedule with max lr 3e-6, gradient clipping to 1.0
115
 
116
+ ![img_3.png](images/img_3.png)
117
 
118
+ ![img_4.png](images/img_4.png)
119
 
120
+ ![img_5.png](images/img_5.png)
121
 
122
+ Meer info [https://wandb.ai/yepster/EasyDeL-MistralBoreas/runs/ozw55qaq/workspace?nw=nwuseryepster](WandB Boreas 7B pre-train)
123
 
 
124
 
125
+ ## Boreas-7B-chat
126
 
127
+ Het chat LLM model is net als het basismodel getraind op een mix van datasets, met een grootte van 4.7B tokens.
128
+ Het is een full finetune, dus geen LoRA finetune.
129
 
130
+ De volgende datasets zijn gemixt:
131
 
132
+ | Datasetnaam | Gewicht | Percentage Tokens (%) |
133
+ |-----------------------------------------------------------|---------|-----------------------|
134
+ | (C) Diverse Engelse chat dataset (teknium/OpenHermes-2.5) | 200 | 45.15 |
135
+ | (C) Vertaal en->nl paragrafen (romans) | 100 | 22.57 |
136
+ | (C) Vertaal en->nl zinnen (romans) | 50 | 11.29 |
137
+ | (P) Nederlandse wikipedia | 30 | 6.77 |
138
+ | (P) Engelse wiskunde en natuurkunde boeken | 25 | 5.64 |
139
+ | (C) Engelse instruct dataset (philschmid/flanv2) | 20 | 4.51 |
140
+ | (C) Nederlandse wiki q en a | 12 | 2.71 |
141
+ | (C) Nederlandse schoolboeken q en a | 3 | 0.68 |
142
+ | (P) Nederlandse schoolboeken | 2 | 0.45 |
143
+ | (C) Vertaal en->nl uitdrukkingen (dictionary) | 1 | 0.23 |
144
 
145
+ (C) geeft aan dat de tekst geformatteerd is voor chat, (P) is ongeformatteerde tekst (gelijk aan de pre-train fase)
146
 
147
+ Het grootste gedeelte bestaat uit `teknium/OpenHermes-2.5` - wat op zichzelf ook weer een amalgamaat van diverse
148
+ gefilterde chat/instruct datasets is. Deze dataset bevat wel programmacode data, wat ertoe resulteert dat Boreas-7B-chat
149
+ wel in staat is om simpele programmavragen te beantwoorden.
150
 
151
+ De reden om zoveel Engels in de dataset te mixen, is met name om de diversiteit in de dataset zo hoog mogelijk te
152
+ krijgen, en omdat ik verwacht dat er een behoorlijke mate van cross language en naar nl knowledge transfer mogelijk is.
153
+ Het omgekeerde is zeker waar: als een fine-tune dataset niet divers is, zal het model door zijn fine-tuning niet in
154
+ staat zijn om zijn originele kunde uit te voeren. Een van de eerste Mistral finetunes die ik gemaakt heb was gefinetuned
155
+ op alleen en->nl vertalen. Dat model kon uiteindelijk niets anders meer dan vertalen naar Nederlands.
156
 
157
+ In tegenstelling tot het basismodel is het chat model _wel_ getrained op LLM-gegenereerde teksten - hierbij zijn de volgende
158
+ overwegingen van toepassing: Bij de Nederlandse gegenereerde chats heb ik wederom geprobeerd om zoveel mogelijk origineel
159
+ Nederlands taalgebruik te 'guiden' door alleen vragen en antwoorden te genereren op basis van teksten die origineel in
160
+ het Nederlands geschreven zijn door een persoon. Dit zijn de Nederlandse wiki q en a en Nederlandse schoolboeken q en a
161
+ chat datasets. Hierdoor wordt er zoveel mogelijk voor gezorgd dat bij bijvoorbeeld educatie-achtige q en a, de in onze
162
+ regio gebruikelijke termen en eenheden voorkomen in de chat database, tenminste voor de Nederlandstalige chats.
163
 
164
+ Bij alle chat datasets is er alleen getraind op de assistant-completion tokens.