Sinds de lancering van de ChatGPT-chatbot hebben we verschillende mogelijkheden van generatieve AI onderzocht, in het bijzonder large language models (LLM’s). Dit omvat het gebruik van LLM’s voor het genereren van code en de implementatie van question answering systemen. Tot nu toe hebben we voornamelijk het meest populaire propriëtaire model gebruikt: OpenAI GPT3/4 (ChatGPT). Deze modellen zijn eenvoudig te gebruiken en hun mogelijkheden zijn indrukwekkend. Het gebrek aan transparantie en de gebruiksbeperkingen die inherent zijn aan propriëtaire modellen hebben de afgelopen maanden echter geleid tot de snelle ontwikkeling van opensource-alternatieven.
Het artikel behandelt twee hoofdonderwerpen. Ten eerste onderzoeken we open source large language models, waarbij we kijken naar hun implementatie op lokale machines, hun gebruiksgemak en de kwaliteit van hun resultaten in vergelijking met propriëtaire modellen. Daarna worden de verschillende manieren onderzocht om de prestaties van deze modellen op specifieke taken te verbeteren.
Voordelen van het gebruik van open source large language models
- Transparantie. Details over de trainingsgegevens, kenmerken en architectuur van propriëtaire modellen worden vaak geheim gehouden. Dit maakt het moeilijk om problemen met betrekking tot bias en verkeerde informatie in de trainingsgegevens te identificeren en op te lossen. Open source modellen bieden daarentegen meer transparantie, omdat alle informatie openbaar beschikbaar is. Dit maakt het gemakkelijker om problemen te identificeren en op te lossen.
- Vertrouwelijkheid. Vertrouwelijkheid is een belangrijke factor en de belangrijkste reden waarom we open source modellen onderzoeken. Gevoelige en vertrouwelijke gegevens kunnen lokaal worden behandeld met open source modellen, waardoor het risico op gegevensinbreuken en ongeoorloofd gebruik wordt vermeden. Dit risico is daarentegen groter bij het gebruik van propriëtaire modellen die in de cloud worden gehost. Open source modellen bieden daarom een veiligere oplossing voor het verwerken van vertrouwelijke gegevens, op voorwaarde dat je voldoende hardware hebt om ze te hosten.
- Kostprijs. Propriëtaire modellen zijn duur op grote schaal en hun beschikbaarheid kan niet altijd gegarandeerd worden. Open source modellen zijn daarentegen gratis, waardoor ze toegankelijker zijn. Het is echter belangrijk op te merken dat het inzetten van open source-modellen op lokale insfrastructuur extra kosten met zich meebrengt waarmee rekening moet worden gehouden.
- Aanpasbaarheid. Open source LLM’s zijn flexibeler en kunnen gemakkelijk worden aangepast aan de specifieke behoeften van een bepaald gebruiksdomein.
Overzicht van open source large language models
Een van de eerste voorbeelden van open source large language models (LLM’s) is het BLOOM-model. Het doel van BLOOM is om LLM’s te democratiseren door een taalmodel aan te bieden dat equivalent is aan GPT-3, dat meertalig, transparant en toegankelijk is voor de onderzoeksgemeenschap. De implementatie van BLOOM blijft echter moeilijk omdat hiervoor zware infrastructuur nodig is.
Vervolgens werden andere, veel ‘lichtere’ modellen ontwikkeld. Aangezien de situatie snel evolueert, is het onmogelijk om in dit artikel een volledige lijst of relevante beoordeling van al deze modellen op te stellen. Het Hugging Face platform is echter een goede referentie voor toegang tot deze modellen en de bijbehorende informatie. Bij de keuze van een model is het belangrijk om de trainingsvoorwaarden (dataset, inbegrepen moderatie, enz.), de gebruiksvoorwaarden (voor onderzoek of commerciële doeleinden) en de specifieke kenmerken (talen en toepassingsgebieden, oriëntatie op instructies of chat) te controleren. Hier zijn enkele van de populairste modellen:
- Llama 2 is een reeks modellen van verschillende grootte (7b-70b) ontwikkeld door Meta en gereproduceerd in verschillende vormen: Alpaca (alleen voor onderzoeksdoeleinden) en Vicuna. Er is ook een specifieke versie van Llama 2 voor het genereren van code.
- Phi-2 is een compact model (2.7b) van Microsoft voor experimenten en onderzoek.
- Falcon is een meertalig model dat onlangs de eerste plaats behaalde in Hugging Face’s open LLM ranglijst. Dit model is groter dan Llama 2 (40b-180b) en vereist daarom aanzienlijke middelen om te draaien.
- Mistral is een klein (7b) maar zeer krachtig meertalig model. Het Franse bedrijf Mistral AI heeft onlangs een nieuw model uitgebracht, Mixtral 8X7B, dat GPT-3.5 kan evenaren. Dit bevestigt de trend in open source om kleinere, meer betaalbare modellen te ontwikkelen zonder aan prestaties in te boeten.
- En MPT tenslotte, ontwikkeld door Mozaic ML, is primair bedoeld voor commercieel gebruik.
Een LLM lokaal implementeren en gebruiken
Een model lokaal uitvoeren kan complex zijn. Gelukkig zijn er tools waarmee je modellen kunt benaderen via een API.Dit zijn enkele van de meest populaire frameworks:
- Llama.ccp is een inferentie-engine die speciaal is ontworpen om Llama 2-modellen en andere compatibele modellen (GGML-formaat) uit te voeren op beperkte hardwarebronnen. Llama.cpp is echter een command line tool en heeft geen gebruikersinterface.
- OLlama is een eenvoudig te gebruiken service. De toepassing wordt gestart vanaf een command line in een Linux-terminal en de gebruiker kan dan interageren met het model.
- LMStudio en GPT4All zijn toepassingen met een gebruiksvriendelijke interface voor een gebruikerservaring à la ChatGPT.
- We moeten ook het PrivateGPT project vermelden, dat handig is voor het gebruik van lokale modellen om gevoelige documenten in disconnected mode te ondervragen.
Dankzij de hierboven beschreven tools kunnen open source modellen op dezelfde manier worden aangeroepen als OpenAI modellen vanuit Python bibliotheken zoals LangChain.
from langchain.llms import OLlama
from langchain.embeddings import OLlamaEmbeddings
llm = OLlama(base_url='http://localhost:11434',
model='Llama2_7b_fine-tuned',
temperature=0)
embeddings = OLlamaEmbeddings(base_url='http://localhost:11434',
model='Llama2_7b_fine-tuned')
LLM’s verfijnen (finetuning)
LLM’s zijn krachtig en zeer veelzijdig, maar ze zijn vaak niet erg nauwkeurig als ze worden gebruikt voor een specifieke taak of domein met zijn eigen taal en concepten.
Er zijn verschillende manieren om een groot taalmodel te verbeteren. De eerste en eenvoudigste is om de prompt aan te passen (prompt engineering, few-shot learning), maar dit is niet altijd voldoende. Een ander alternatief is finetuning, op voorwaarde dat je toegang hebt tot de modellen en hun parameters. Deze methode bestaat uit het trainen van de laatste lagen om een bestaand model voor een specifieke taak te verfijnen met behulp van een aangepaste gegevensset voor het domein/de taak in kwestie. Het voordeel van finetuning is dat je, door te beginnen met een bestaand model, veel minder gegevens (en middelen) nodig hebt voor de training: Dit is het principe van transfer learning.
We hebben een finetuning-experiment uitgevoerd op een open source LLM om de resultaten van een vraag-en-antwoordsysteem te verbeteren door het te trainen op gegevens die specifiek zijn voor de socialezekerheidssector. De voornaamste stappen van dit experiment zijn:
- Trainingsgegevens voorbereiden. De trainingsvoorbeelden bestaan uit een reeks vragen/antwoorden op het gebied van sociale zekerheid, waarbij de vragen gedeeltelijk zijn gegenereerd met het GPT-4-model. Deze fase is de moeilijkste en meest tijdrovende, omdat er veel gegevens moeten worden verzameld en opgeschoond.
- Basismodel selecteren. We hebben verschillende open source modellen getest, maar gezien de computermiddelen die we tot onze beschikking hadden, bleek het Llama 2-7b model het meest effectief in termen van nauwkeurigheid en snelheid.
- Het model verfijnen. De Python-bibliotheek “transformers” ontwikkeld door Hugging Face is een goed hulpmiddel voor het verfijnen van LLM’s, maar vereist een minimum aan vaardigheid om te gebruiken. Voor ons experiment hebben we ervoor gekozen om het H2O LLMstudio platform te gebruiken. Dit is een ‘no-code’ platform waar hyperparameters en training worden geconfigureerd via een gebruikersinterface.
- Evaluatie van het verfijnde model. Op basis van ons finetuningexperiment konden we aantonen dat het mogelijk was om de prestaties van een ‘light’ open source model te verbeteren op een zeer specifieke taak met zeer weinig gegevens (+28%). Deze prestaties waren echter lager dan die verkregen met het GPT-4 model.
Tot slot kan modelaanpassing ook worden bereikt door instructiegebaseerde finetuning. Deze meer geavanceerde finetuningmethode is vergelijkbaar met de hierboven beschreven methode. In feite wordt het model geleerd om instructies op te volgen door expliciete instructies toe te voegen aan de trainingsgegevens. Dit maakt het mogelijk om het model op een veelzijdige manier te verfijnen, d.w.z. om het in staat te stellen om verschillende taken nauwkeurig uit te voeren.
Conclusie
Open source large language models bieden meer transparantie, vertrouwelijkheid en aanpasbaarheid dan propriëtaire modellen. Het feit dat ze gratis zijn is een bijkomend voordeel, maar de kosten voor inferentie en onderhoud mogen niet over het hoofd gezien worden. Deze voordelen maken ze een logisch en aantrekkelijk alternatief voor veel toepassingen. Er is echter nog werk aan de winkel om deze open source taalmodellen echt competitief te maken, vooral voor complexe taken zoals redeneren (reasoning). Desondanks evolueert de ontwikkeling van open source snel en wordt de prestatiekloof met betaalde modellen kleiner. Deze modellen zijn zeker nodig voor specifieke toepassingen waarbij lokaal met vertrouwelijke gegevens moet worden gewerkt. Het is mogelijk om finetuning te gebruiken om hun gebrek aan precisie in specifieke taken te compenseren, op voorwaarde dat de relevante gegevens beschikbaar zijn.
_________________________
Ce post est une contribution individuelle de Katy Fokou, spécialisée en intelligence artificielle chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.
Leave a Reply