--- library_name: transformers license: apache-2.0 pipeline_tag: text-generation tags: - finetuned inference: true widget: - messages: - role: system content: Je bent een behulpzame Nederlandse AI-assistent. - role: user content: Is Nederlandse wijn lekker? datasets: - yhavinga/mc4_nl_cleaned - yhavinga/nedd_wiki_news - teknium/OpenHermes-2.5 - euirim/goodwiki - philschmid/flanv2 --- # Boreas ![BoreasThe Mighty God of the North Wind](https://oldworldgods.com/wp-content/uploads/2023/10/boreas1.jpg) [Boreas-7B](https://huggingface.co/yhavinga/Boreas-7B) is een Nederlands/Engels taalmodel gebaseerd op Mistral-7B-v0.1. Het model is getraind op 10 miljard tokens aan Nederlandse en Engelse tekst. **Boreas-7B-chat** (dit model) is een verdere finetune op instructie- en chat data. * Boreas-7B vertoont overeenkomsten met [GEITje-7B](https://huggingface.co/Rijgersberg/GEITje-7B), aangezien beide modellen zijn voortgebouwd op het Mistral-7B basismodel en zijn getrained op een vergelijkbare omvang van 10 miljard tokens. * 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), * omdat het ook een fine-tune is op een chat-dataset. Edwin Rijgersberg heeft [uitgebreide documentatie](https://github.com/Rijgersberg/GEITje/blob/main/README.md) geschreven voor het gebruik van GEITje, en deze is ook van toepassing op Boreas. De voornaamste verschillen tussen Boreas en GEITje zijn: * Boreas-7B en Boreas-7B-chat zijn getraind met een context lengte van 2048 tokens, terwijl GEITje is getraind met 8192 tokens. * Boreas-7B en Boreas-7B-chat zijn getraind op een mix van Engels en Nederlands, waar GEITje alleen op voornamelijk Nederlands getraind is. * Boreas-7B-chat is getraind op een mix van chatconversaties en pre-train data. Omdat zowel GEITje als Boreas afgeleiden zijn van hetzelfde basismodel, is het mogelijk om een [merge](https://github.com/arcee-ai/mergekit) te maken. ## Gebruik met ollama Selecteer een GGUF quantisatie van [Boreas-7B-chat-v1-GGUF](https://huggingface.co/yhavinga/Boreas-7B-chat-v1-GGUF) en volg de instructies in de repository. Belangrijk: een system prompt is essentieel voor optimale model prestaties. ## Scandeval benchmark Met dank aan [Bram Vanroy](https://huggingface.co/BramVanroy) en [Dan Saattrup Nielsen](https://github.com/saattrupdan) is Boreas-7B-chat geevalueerd en geplaatst op het [Dutch NLG scandeval leaderboard](https://scandeval.com/dutch-nlg/). ![Dutch Model NLG Performance Metrics](https://huggingface.co/yhavinga/Boreas-7B-chat/resolve/main/boreas-7b-dutch-scandeval.webp) Visualisatie gegenereerd met de [Radial Plot Generator](https://huggingface.co/spaces/alexandrainst/radial-plot-generator) ## Doel Boreas Het Boreas project onderzoekt de ontwikkeling van een taalmodel dat authentiek Nederlands prefereert met behoud van meertalige capaciteiten. Zowel in de (continued) pre-training als fine-tuning (SFT) fases, wordt door mensen geschreven Nederlands gecombineerd met hoge kwaliteit Engels. Deze aanpak onderzoekt hoe continued pre-training van een meertalig model kan leiden tot natuurlijk Nederlands taalgebruik, terwijl de oorspronkelijke capaciteiten van het basismodel behouden blijven door de integratie van Engelstalig materiaal. ## Boreas-7B basismodel Het basismodel is op Mistral-7B doorgetraind op 10 miljard tokens. De dataset is samengesteld uit diverse bronnen in zowel de Nederlandse als de Engelse taal: | Datasetnaam | Aantal Tokens | Percentage Tokens (%) | |------------------------------------------------|---------------|-----------------------| | Nederlandse literatuur | 3401M | 34.01 | | Nederlandse Wikipedia | 2381M | 23.81 | | mc4_nl_cleaned (Nederlands) | 1361M | 13.61 | | Nederlands nieuws | 1361M | 13.61 | | Nederlands educatief materiaal | 136M | 1.36 | | Engelse literatuur | 340M | 3.40 | | Engelse Wikipedia (euirim/goodwiki) | 340M | 3.40 | | Engelse wis- en natuurkundeteksten | 340M | 3.40 | | Engelse instructiedataset (philschmid/flanv2) | 340M | 3.40 | De dataset compositie is gebaseerd op zowel beschikbaarheid van data als de volgende overwegingen: * Inclusie van kwalitatief hoogwaardig Nederlands taalmateriaal uit diverse bronnen. De selectie omvat literaire werken, nieuws- en Wikipedia-artikelen. * Integratie van ongeveer 5% van de oorspronkelijke dataset voor kennisbehoud. Hoewel de exacte samenstelling van de Mistral-trainingsdata onbekend is, is het aannemelijk dat deze kwalitatief hoogwaardige Engelstalige content en instructiedata bevat. Daarom is gekozen voor de toevoeging van Engelstalige literatuur, Wikipedia-artikelen en instructiedata. * Exclusie van door Large Language Models (LLMs) gegenereerde teksten in de pre-training fase. Empirische observaties suggereren dat LLM-gegenereerde content vaak lagere perplexiteit vertoont en modelspecifieke biases reproduceert. Daarom zijn datasets geselecteerd van vóór november 2022. * Inclusie van mc4_nl_cleaned - afgeleid van mC4, een multilingual versie van Common Crawl data, gefilterd op ongewenste terminologie en onderworpen aan additionele bewerkingen conform het voorschrift van de T5-auteurs. De selectie is gebaseerd op de bewezen effectiviteit van C4 in pre-training benchmarks. Empirisch onderzoek door het [Falcon project](https://ar5iv.labs.arxiv.org/html/2311.16867) toont aan dat combineren van gecureerde datasets van veronderstelde hoge kwaliteit - waaronder literaire werken, conversaties, en technische literatuur - met web-gebaseerde corpora voor de pretrain fase geen prestatieverbeteringen oplevert en dat de proportie gecureerde data negatief correleert met zero-shot prestaties. Dit project onderscheidt zich echter door een beperkte continued pre-training fase op basis van een sterk basismodel, in tegenstelling tot een complete pre-training vanaf initialisatie. Tijdens de pre-training fase zijn de brontexten `gepackt` in blokken van 2048 tokens, waarbij is gestreefd naar het samenvoegen van coherente tekstfragmenten. Korte fragmenten zijn overgeslagen. Deze methodiek beoogt minimalisatie van 'cross-sequence' ruis binnen individuele training-examples. De randomisatie van de voorbeelden is pas na deze aggregatie geïmplementeerd. ## Pre-training De pre-training van Boreas-7B is uitgevoerd met het [EasyDeL JAX framework](https://github.com/erfanzar/EasyDel) op een TPU-v4-32 op, beschikbaar gesteld door de Google TPU Research Cloud. De pre-training specificaties zijn als volgt: * Globale batch size van 192 (batch size 96 × gradient accumulation steps 2) * Flash attention met een blockgrootte van 512 tokens * Maximale sequentielengte van 2048 tokens * Datatype `bfloat16` * LION optimizer met triangulaire learning rate scheduling: * Piek learning rate: 3e-6 * Gradient clipping: 1.0 ![img_3.png](images/img_3.png) ![img_4.png](images/img_4.png) ![img_5.png](images/img_5.png) ## Boreas-7B-chat Boreas-7b-chat is een `full-finetune` van het basismodel, getraind op een mix van datasets, met een totale grootte van 4,7 miljard tokens. De dataset compositie is als volgt: | Datasetnaam | Gewicht | Percentage Tokens (%) | |-----------------------------------------------------------|---------|-----------------------| | (C) Diverse Engelse chat dataset (teknium/OpenHermes-2.5) | 200 | 45.15 | | (C) Vertaal en->nl paragrafen (romans) | 100 | 22.57 | | (C) Vertaal en->nl zinnen (romans) | 50 | 11.29 | | (P) Nederlandse wikipedia | 30 | 6.77 | | (P) Engelse wis- en natuurkunde boeken | 25 | 5.64 | | (C) Engelse instruct dataset (philschmid/flanv2) | 20 | 4.51 | | (C) Nederlandse wiki q en a | 12 | 2.71 | | (C) Nederlandse educatie q en a | 3 | 0.68 | | (P) Nederlands educatief materiaal | 2 | 0.45 | | (C) Vertaal en->nl uitdrukkingen (dictionary) | 1 | 0.23 | (C) geeft aan dat de tekst geformatteerd is voor chat, (P) is ongeformatteerde tekst (gelijk aan de pre-train fase) In contrast met het basismodel bevat de fine-tuning dataset wel synthetische content. De dataset wordt gedomineerd door `teknium/OpenHermes-2.5`, een zorgvuldig samengestelde verzameling van diverse chat en instructie datasets. Deze substantiële Engelstalige component in de training data dient twee doelen: 1. Maximalisatie van dataset diversiteit 2. Voornaamste bron van het formatteren van kennis in Engelse instructie en chat teksten. Door de inclusie van vertaal-instructies wordt taalkundige alignment beoogd tussen Engels en Nederlands. Een klein gedeelte bestaat uit synthetische chatadata, gegenereerd op basis van Nederlandstalige Wikipedia-artikelen en educatieve teksten, met als doel domein-specifieke terminologie en lokale taalconventies te bevorderen. Om authentiek Nederlands te prefereren is hoogwaardige Nederlandstalige pre-train data toegevoegd. Bij alle chat datasets is er alleen getraind op de assistant-completion tokens. ## Fine-tuning De fine-tuning van Boreas-7B-chat is uitgevoerd met het [EasyDeL JAX framework](https://github.com/erfanzar/EasyDel) op een TPU-v4-32, beschikbaar gesteld door de Google TPU Research Cloud. De fine-tuning specificaties zijn als volgt: * Globale batch size van 192 (batch size 96 × gradient accumulation steps 2) * Flash attention met een blockgrootte van 512 tokens * Maximale sequentielengte van 2048 tokens * LION optimizer met triangulaire learning rate scheduling: * Piek learning rate: 2e-6 * Gradient clipping: 1.0 NB: De training werd onderbroken door een technische storing aan het einde van de dataset epoch. Gezien de gestabiliseerde loss werd besloten de training niet te hervatten voor een nieuwe epoch. ![loss finetune](images/loss_finetune.png) ![accuracy finetune](images/accuracy_finetune.png) ![learning rate finetune](images/lr_finetune.png)