SkillAgentSearch skills...

GEITje

GEITje 7B: een groot open Nederlands taalmodel

Install / Use

/learn @Rijgersberg/GEITje
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

🐐 GEITje 7B: een groot open Nederlands taalmodel

📄 English README | 🤖️ GEITje-chat-v2 demo

[!CAUTION] ⚠️ Op dringend verzoek van Stichting BREIN is GEITje vanaf heden niet meer beschikbaar. ⚠️

Alle model files (de gewichten) en checkpoints zijn verwijderd uit mijn HuggingFace repos. Zie mijn blogpost voor een toelichting.

GEITje is een Nederlandstalig groot open taalmodel met 7 miljard parameters, gebaseerd op Mistral 7B. Het is (verder) getraind op 10 miljard tokens aan Nederlandstalige tekst. Daardoor heeft het beter Nederlands geleerd, en meer kennis over Nederlandse onderwerpen.

Update 18 december 2023: GEITje-7B-chat-v2 vrijgegeven, getraind op flink meer vertaalde chatgesprekken.<br> Update 4 februari 2024: Bram Vanroy heeft GEITJE-7B-ultra gemaakt: een superieure chatbot, getraind op meer chatdata met behulp van DPO.

DALL·E 3: "Create a logo for a Dutch large language model's Github readme. Incorporate a cute baby goat painting a Dutch landscape."

📜 Licentie

GEITje is open source onder de Apache 2.0-licentie. Dit betekent dat je GEITje – in tegenstelling tot bijvoorbeeld ChatGPT – helemaal zelf kunt draaien, op je eigen infrastructuur en met elke (vertrouwelijke) data die je maar wilt. Je kunt de code of het model ook zelf aanpassen of verder trainen.

🙋🏻‍♂️ Auteur

GEITje is een hobby-project van Edwin Rijgersberg. Heb je iets gaafs gemaakt met GEITje? Ik hoor het graag! Stuur me een mail of een bericht op Twitter of Mastodon. Of open een issue hier op GitHub natuurlijk.

Meer achtergrond over de totstandkoming van GEITje kan je vinden op mijn blog: GoingDutch.ai.

🤖 Model

Mistral – Basismodel

GEITje is gebaseerd op Mistral 7B. Dat is een groot open taalmodel met 7 miljard parameters, getraind door Mistral AI. Volgens Mistral AI presteert het 7B-model beter dan Llama 2 13B op alle (Engelstalige) benchmarks waarop ze getest hebben. Mistral 7B is vrijgegeven onder de Apache 2.0 open source licentie.

GEITje – Doorgetraind op Nederlandstalige teksten

GEITje is gemaakt door Mistral 7B door te trainen op maar liefst 10 miljard tokens aan Nederlandstalige tekst uit het Nederlandse Gigacorpus en het MADLAD-400 webcrawling-corpus. Het is een zogenaamde full-parameter finetune: uitgevoerd op alle parameters. Het is dus geen PEFT of LoRA-finetune. Net als Mistral heeft GEITje een context length van 8.192 tokens.

GEITje-chat en GEITje-ultra – Gefinetuned voor dialogen

Als demonstratie voor de mogelijkheden voor chat-toepassingen van GEITje zijn er ook twee chat-varianten van GEITje gefinetuned: GEITje-chat en GEITje-chat-v2. Ze kunnen instructies opvolgen, vragen beantwoorden en dialogen houden over allerlei onderwerpen. GEITje-ultra is een geavanceerdere chatbot, getraind op meer data en geoptimaliseerd voor dialogen met Direct Preference Optimization.

Varianten

| Model | Parameters | Type | Link naar 🤗 Hugging Face Models | Gebaseerd op | |----------------------------------------------------------------------------------------------|------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------| | GEITje | 7B | foundation | GEITje-7B | Mistral-7B-v0.1 | | GEITje-chat | 7B | chat SFT | GEITje-7B-chat | GEITje-7B️ | | | 7B | chat SFT | GEITje-7B-chat-v2 | GEITje-7B️ | | GEITje-ultra*<br><small>*gecreëerd door Bram Vanroy</small> | 7B | chat SFT + DPO | BramVanroy/GEITje-7B-ultra | GEITje-7B️ |

🚀 Toepassing

Demo

Chat met GEITje-chat-v2 in de demo op 🤗 Hugging Face Spaces. GEITje-chat Hugging Face Space screenshot

🤗 Transformers

GEITje is het beste te gebruiken met 🤗 Hugging Face Transformers.

from transformers import pipeline, Conversation


chatbot = pipeline(task='conversational', model='Rijgersberg/GEITje-7B-chat-v2',
                   device_map='auto')

print(chatbot(
    Conversation('Welk woord hoort er niet in dit rijtje thuis: "auto, vliegtuig, geitje, bus"?')
))
# Conversation id: 602cfe35-614d-4df1-bdb5-2e29038f1d04
# user: Welk woord hoort er niet in dit rijtje thuis: "auto, vliegtuig, geitje, bus"?
# assistant: "Geitje" is het woord dat niet in dit rijtje thuishoort. Het rijtje bestaat uit allemaal vervoersmiddelen.

Of, als je liever meer controle hebt:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer


device = 'cuda' if torch.cuda.is_available() else 'cpu'

model_name = 'Rijgersberg/GEITje-7B-chat-v2'
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16,
                                             low_cpu_mem_usage=True, use_flash_attention_2=True,
                                             device_map=device)
tokenizer = AutoTokenizer.from_pretrained(model_name)

def generate(conversation, temperature=0.2, top_k=50, max_new_tokens=1_000):
    tokenized = tokenizer.apply_chat_template(conversation, add_generation_prompt=True,
                                              return_tensors='pt').to(device)
    outputs = model.generate(tokenized, do_sample=True, temperature=temperature,
                             top_k=top_k, max_new_tokens=max_new_tokens)

    return tokenizer.decode(outputs[0], skip_special_tokens=True)

conversation = [
    {
        'role': 'user',
        'content': 'Welk woord hoort er niet in dit rijtje thuis: "auto, vliegtuig, geitje, bus"?'
    }
]
print(generate(conversation))
# <|user|>
# Welk woord hoort er niet in dit rijtje thuis: "auto, vliegtuig, geitje, bus"? 
# <|assistant|>
# Het woord dat niet op zijn plaats staat is 'geit'. Een geit zou niet tussen een lijst van vervoersmiddelen moeten staan. Het past beter bij een boerderijthema of dierenlijst.

LM Studio

Je kunt GEITje ook gebruiken met LM Studio.

  1. Gebruik de ingebouwde zoekfunctie om een model te downloaden, bijvoorbeeld Rijgersberg/GEITje-7B-chat-v2-gguf.
  2. Gebruik de Zephyr-preset voor de correcte instellingen.
  3. Zet de temperature rond de 0.2 voor de beste gebruikservaring.

LM Studio screenshot

Ollama

GEITje werkt ook met Ollama.

  1. Download een gguf-variant van GEITje, bijvoorbeeld GEITje-7B-chat-v2.gguf.
  2. Kopieer de Modelfile uit deze repo.
  3. Maak er een Ollama-model van: $ ollama create GEITje-7B-chat-v2 -f Modelfile.
  4. Draai het model in Ollama:
$ ollama run GEITje-7B-chat-v2
>>> Vraagje: welk woord hoort er niet in dit rijtje thuis: "auto, vliegtuig, geit, bus"?
Geit hoort niet in het rijtje thuis. De andere drie zijn voertuigen.

Veiligheid en inzet in productie

GEITje is een foundation model. Het model is getraind om teksten af te maken en is niet geoptimaliseerd voor dialoogtoepassingen.

Om GEITje zelf toe te passen kan je het finetunen op je eigen dataset. Als je het inzet in productie, zorg er dan voor dat je voldoende guardrails in je trainingsset hebt om het model veilig toe te passen.

In de chat-dataset van GEITje-chat zitten ook enkele voorbeelden van chatconversaties waar de assistent weigert te antwoorden, maar het model heeft geen geavanceerde alignment ondergaan. Het is daarom

Related Skills

View on GitHub
GitHub Stars130
CategoryDevelopment
Updated8d ago
Forks4

Languages

Python

Security Score

95/100

Audited on Mar 26, 2026

No findings