Franse AI-start-up Mistral introduceert AI-model met 12 miljard parameters

Mistral heeft een nieuw AI-model geïntroduceerd: Mistral NeMo. Het taalmodel beschikt over 12 miljard parameters en kan maximaal 128.000 tokens per keer verwerken. Volgens de Franse AI-start-up presteert NeMo goed in elf verschillende talen.

NeMo maakt volgens Mistral gebruik van een nieuwe tokenizer, genaamd Tekken. Deze software verdeelt de tekstprompts in kleinere stukjes zodat het AI-model ze kan analyseren. Tekken zou ongeveer 30 procent efficiënter zijn in vergelijking met de SentencePiece-tokenizer die in voorgaande AI-modellen van het bedrijf is gebruikt. De Franse start-up claimt dat NeMo uitgebreid is gefinetuned en dat er sprake was van een geavanceerde 'uitlijningsfase'. Mede hierdoor, en het maximaal aantal van 128.000 tokens, zou het AI-model nog beter in staat zijn om nauwgezette instructies op te volgen, wisselende gesprekken te voeren en code te genereren. Ter vergelijking: de meeste AI-modellen van Mistral kunnen met maximaal 32.000 tokens per keer overweg. Dat blijkt uit een overzichtspagina van het bedrijf.

Mistral schrijft dat NeMo 'sterk' is in het Engels, Frans, Duits, Spaans, Italiaans, Portugees, Chinees, Japans, Koreaans, Arabisch en Hindi. Het taalmodel zou echter wel op meer dan 100 talen getraind zijn. Het nieuwe AI-model werd in samenwerking met Nvidia ontwikkeld en is opensource gemaakt onder een Apache 2.0-licentie.

Door Jay Stout

Redacteur

22-07-2024 • 15:37

35

Reacties (35)

35
35
21
6
0
7
Wijzig sortering
Ter vergelijking Gpt-4o heeft ook een context window van 128.000 tokens. GPT-3.5-turbo 16.385 tokens. En naar verluid heeft GPT-4 ongeveer 1,8 biljoen parameters.

Je kan hier (voor OpenAI/ChatGPT) testen hoeveel tokens een tekst oplevert. De tekst van dit artikel (1371 karakters) komt op 407 tokens.
Er zijn ook al 1M tokens versies van diverse modellen, waaronder GPT-4. Maar alleen beschikbaar voor enterprise. Ook wel logisch want de kosten hakken er ook echt in, het kost meerdere euro's per aanroep dan! Het komt door het extreem toenemende geheugengebruik bij hogere contexts. Ik begreep dat je bij Gemini voor een 1M context iets van 7$ per aanroep kwijt bent.

Er wordt in de AI community vaak geroepen dat je straks geen RAG(*) meer nodig hebt als de context groot genoeg wordt, maar als het geheugengebruik en dus de kosten zo hoog blijven dan gaat dat natuurlijk niet op.

*) RAG = Retrieval Augmented Generation, een slimme manier om de juiste informatie mee te leveren in je prompt zodat je daar zo efficient mogelijk mee om kan gaan

[Reactie gewijzigd door Llopigat op 22 juli 2024 16:20]

Heb je bij een RAG niet gewoon meer vertraging? Zitten in een RAG niet gewoon tokenized versies van informatie, die je met een near-by algoritme matched?

Een vorm van VRAM naar RAM verplaatsen als het ware, dus relatief veel trager?

Gaat het bij een NPU niet anders dan bij een ouderwetse (2000-serie en ouder NVIDIA) videokaarten?

[Reactie gewijzigd door djwice op 22 juli 2024 17:31]

Ja natuurlijk heb je meer vertraging. Want je hebt een extra stap. Maar het is wel een optie (of zelfs een noodzaak) als je meer informatie moet verwerken dan je (bruikbare) context window.
Ik heb in m'n bios de optie aangezet dat de videokaart ook het RAM mag gebruiken zodat ik toch grotere modellen of context kan gebruiken.

Maar zo happy wordt je er niet van, het is super veel trager dan VRAM alleen.
Ik heb zelf RAG nooit echt goed zien werken. Uiteindelijk heb je dan gewoon te maken met dezelfde wispelturigheid en wellicht compleet verkeerde output of contextvergaring. Geheugen zal simpelweg veel goedkoper moeten worden, en het concept van RAG verder uitgebouwd. Op dit moment is de waarde vrijwel nul.
Mja, ik heb zelf nooit LLM's echt consequent goed zien werken. Ik zie het niet zozeer een probleem met RAG maar meer met de techniek, die mensen inzetten voor allerlei doeleinden waar die niet voor bedoeld is. Vooral Microsoft heeft er nu een handje van het overal in te proppen. Maar alles werkt maar half en zoals bij LLM's gebruikelijk zeer inconsequent.

Maar wat ik zie als het voordeel van RAG is dat je het kan laten werken met accurate informatie, die van de laatste minuut, zonder dat je het hele model (of een laag daar bovenop, zoals met LoRa) hoeft te hertrainen. Ook kan je op die manier zorgen dat het model de rechten van de gebruiker respecteert.

Maar de zwakke punten blijven omdat die gewoon inherent zijn in LLM's. Ik vind het mooie techniek maar het wordt weer zoals bij alle hypes veel te breed ingezet voor dingen waar het totaal niet geschikt voor is.

[Reactie gewijzigd door Llopigat op 22 juli 2024 18:52]

Bij mij werd een thread eruit gegooid vanmiddag omdat die te lang werd in 4o.

Die context was wel handig.
En naar heeft GPT-4 ongeveer 1,8 biljoen parameters.
De long of de short scale? Ik vemoed de laatste.
Hoe dan ook, bij gelijke performance zou ‘mistral’ dus efficiënter zijn?
Mistral is cool enzo maar kan tweakers of all places misschien proberen te vermijden mee te gaan het verwateren van de term "opensource"? Dit is een model waarvan alleen de weights —het minst inzichtelijke element— gedeeld zijn onder een Apache 2.0 licentie. Er is geen source code, geen trainingsdata, geen heldere specificatie van de architectuur, en alleen een blogpost als documentatie.

Het gerenommeerde Open Source Initiative heeft ook verklaard dat alleen verzameling weights onder een Apache licentie de naam opensource niet verdient. Zie hier ook wat Nature schrijft: https://www.nature.com/articles/d41586-024-02012-5
Source code: https://github.com/NVIDIA/NeMo

Wat betreft training data, ik denk niet dat we dat kunnen verwachten van partijen.

Ik ben het op zich wel met je eens dat 'open source' voor model weights niet helemaal klopt, maar aan de andere kant is het wel echt enorm waardevol om het te hebben. Dat je het model zo zelf kunt gebruiken voor alle doeleinden die je wil is wel echt een behoorlijk verschil met andere modellen. Je kunt de modellen ook aanpassen met finetuning en training. Ik vind dat wel echt iets waardevols dat een naam verdient. Persoonlijk kan ik leven met 'open source weights', maar misschien zou een andere naam beter zijn. Gewoon 'open weights' ofzo?
Op de website van Mistral staat dat al zo, daar geven ze per model aan of de weights open zijn ("Available Open-weight"), zie https://docs.mistral.ai/getting-started/models/
Ik zie op de Mistral site een chat https://chat.mistral.ai/chat/

Maar er word geen woord gerept over limits voor die chat, kan ook niets terug vinden in de FAQ. Is dit dan alleen om te testen? Le Chat zelf weet ook de rate limits niet.

Heb er even mee gespeeld, het schrijft een stukje sneller dan gpt4o en het antwoord wat het gaf was ook beter. Mijn standaard vraag is: write me a wrapper for consuming a wcf api. it needs to have a connect method take takes in credentials and disposes of the client afterwards. Het gaf een nette class die precies deed wat ik had gevraagd https://chat.mistral.ai/c...f2-4867-a5ea-a3eb35f97510. gpt4o wil nog wel eens dingen erbij zetten die niet nodig zijn.

[Reactie gewijzigd door Lamah op 22 juli 2024 16:39]

Cool, dat betekent dus dat hij een grotere scope kan mee nemen, dus meer dingen aan elkaar kan relateren.

Bijvoorbeeld grotere stukken code mee nemen om functies en classes aan elkaar te relateren.

En Codestral Mamba is zelfs 256k tokens zie ik, cool! @JayStout

[Reactie gewijzigd door djwice op 22 juli 2024 15:50]

Ja, alleen voor thuisgebruik is 128k tokens in de praktijk eigenlijk niet te doen. NeMo past wel in een 16GB kaart met een beetje quantisatie (of 24GB met wat minder) maar niet met de volledige 128k context. Want de context doet het geheugengebruik echt exploderen. Daar is nog een hoop optimalisatie te behalen.

Zelfs met de 128k versie van llama3-8b met 4 bit quantisatie (4,7GB geheugen nodig voor het model) kom ik op mijn 16GB kaart in mijn AI server niet hoger dan iets van 32k context, daarna zit het geheugen echt vol en moet hij het gewone RAM geheugen gaan gebruiken, en dan wordt het te traag. NeMo is groter dan dat dus ik denk dat ik met de daadwerkelijk bruikbare context nog iets lager ga uitkomen.

En thuisgebruik is juist het voordeel van dit soort modellen, want als je toch al in de cloud gaat werken, kan je net zo goed gpt-4o pakken met veel meer parameters.

Maar ik ben benieuwd naar NeMo. Hij staat nog steeds niet op de site van ollama. Zodra hij er is ga ik hem natuurlijk uitgebreid proberen.

[Reactie gewijzigd door Llopigat op 22 juli 2024 16:20]

je kan de kv cache ook quantizen ;)) -ctv en -ctk q8_0 llama.cpp
Oh ik gebruik geen llama.cpp maar ollama. Ik gebruik natuurlijk al quantised modellen (meestal 8_0) maar ik wist niet dat je je context ook kon quantisen.

Maar heeft dat echt heel veel effect op de context grootte die je kan behalen? In ollama heb ik gene opties gevonden hiervoor. Dit is wel interessant, ik wist niet dat hier een mogelijkheid voor was. Maar hoeveel voordeel behaal je hiermee? Kan je dan ook echt de 128k van bijv. llama3-128k of phi3 gebruiken op een 16GB kaart?

q8_0 is wel de maximale quantisatie die ik gebruik. Ollama heeft als standaard q4_0 maar ik vind het kwaliteitsverlies wel erg duidelijk aan het worden dan.

[Reactie gewijzigd door Llopigat op 22 juli 2024 17:31]

Ik test regelmatig de kwaliteit van probleem oplossen van o.a. Claude (Mistral), ChatGPT, Copilot en Gemini.
Alleen Gemini doet het uitstekend en meestal foutloos. Sterker nog, ik was zojuist echt onder de indruk van de aanpak en het resultaat van Gemini. Nou is een complex raadsel niet alles zeggend, maar toch...

Het probleem:
Here's a riddle for you to solve. This is a hard one so break it down and do a step by step analysis before you answer. Also give me the bash code for this puzzle.

A 5 legged spider climbs a tree to join 3 adult spiders (one of the three spiders was born with 6 legs only) and two baby spiders, one with and one without legs. On its way up the spider is attacked by a small bird and loses a leg while in the meantime one of the three spiders gives birth to another baby spider that unfortunately is blown away by the wind. Finally the single spider joins his buddies. How many legs do they have altogether?
Einde

Copilot maakt er echt een potje van, ronduit slecht zelfs.

Probeer maar uit, dit is iig de oplossing van Gemini:

Initial state:
3 adult spiders: 2 with 8 legs, 1 with 6 legs = 22 legs
2 baby spiders: 1 with 8 legs, 1 with 0 legs = 8 legs
1 climbing spider: 5 legs

Events:
Climbing spider loses a leg: Now has 4 legs.
One adult spider gives birth to a baby spider with 8 legs.
This baby spider is blown away. This event doesn't change the total number of legs.
Climbing spider joins the group, becoming an adult with 4 legs.
Final state:

4 adult spiders: 2 with 8 legs, 1 with 6 legs, 1 with 4 legs = 26 legs
2 baby spiders: 1 with 8 legs, 1 with 0 legs = 8 legs

Bash:
#!/bin/bash

adult_spiders=3
adult_legs=22
baby_spiders=2
baby_legs=8
climbing_spider_legs=5

climbing_spider_legs=$((climbing_spider_legs - 1))
adult_spiders=$((adult_spiders + 1))
adult_legs=$((adult_legs + climbing_spider_legs))

total_legs=$((adult_legs + baby_legs))

echo "Total legs: $total_legs"

Solution
The correct total number of legs is 34.

Thank you for your careful review and corrections!

[Reactie gewijzigd door blackSP op 23 juli 2024 11:29]

Copilot komt ook op 34 uit
Let’s break down the riddle step by step:

Initial spiders and their legs:
1 spider with 5 legs.
3 adult spiders, one of which has 6 legs (the other two have 8 legs each).
2 baby spiders, one with legs and one without legs.
Calculate the total legs of the initial spiders:
The 5-legged spider: 5 legs
The 3 adult spiders: (8 + 8 + 6 = 22) legs
The 2 baby spiders: (8 + 0 = 8) legs
Total legs initially: (5 + 22 + 8 = 35) legs
Events that happen:
The 5-legged spider loses a leg: (5 - 1 = 4) legs
One of the adult spiders gives birth to a baby spider, but the baby spider is blown away by the wind (so it doesn’t affect the total count).
Final calculation:
The 5-legged spider now has 4 legs.
The 3 adult spiders still have 22 legs.
The 2 baby spiders still have 8 legs.
Total legs finally: (4 + 22 + 8 = 34) legs
So, the total number of legs they have altogether is 34.

Here is the bash code to calculate this:
[code]
#!/bin/bash

# Initial legs count
legs_spider=5
legs_adult_spiders=$((8 + 8 + 6))
legs_baby_spiders=$((8 + 0))

# Total initial legs
total_legs=$((legs_spider + legs_adult_spiders + legs_baby_spiders))

# Events
legs_spider=$((legs_spider - 1)) # Spider loses a leg

# Final total legs
total_legs=$((legs_spider + legs_adult_spiders + legs_baby_spiders))

echo "Total number of legs: $total_legs"
[/code]
This script will output the total number of legs as 34.
Waarom ben je hier zo van onder de indruk? ChatGPT en Claude geven eveneens het juiste antwoord, met werkende code in bash. Dat Gemini ook het juiste antwoord geeft, is imho dan niet zo indrukwekkend. Wat is er volgens jou dan beter aan Gemini?

Werk zelf met ChatGPT en Claude, en heb Gemini nooit gebruikt en kan het dus niet vergelijken.
Ik heb ze alle 3 gebruikt en vind Claude 3.5 eigenlijk het beste, alleen jammer dat de limieten in de chat zo scherp zijn. Daarna GPT-4o en Gemini als laatste. Gemini blinkte uit in creatieve teksten totdat ik Claude tegenkwam, die had dat ook plus de betere code generatie.
Geen van de andere modellen gaven bij mij de juiste uitkomst. Copilot na een aantal correcties wel maar met de verkeerde logica. Claude had een correcte opbouw maar kwam telkens op 32 uit.

Ik doe beroepshalve regelmatig vergelijkingen, o.a. programeren, deductie, samenvatten met telkens wisselende resultaten voor elk van de modellen. Ook Gemini is niet structureel goed maar 'riddles' gaan, bij mij, gemiddeld behoorlijk goed sinds een paar maanden.

Onder de indruk? Nee niet echt. Dat ben ik pas als we AGI realiseren.
Copilot is gewoon ChatGPT. Als er verschil in output zit dan komt dat door verschillende instellingen zoals system prompt of temperatuur.
Interessant raadsel, knap dat een mogelijke oplossing gevonden wordt, maar die oplossing is niet perse de (enige) juiste.
Zo wordt van 2 spinnen het aantal poten expliciet genoemd(0 en 5) en van 4 spinnen niet. Het is een aanname dat de volwassen spin die met 6 poten is geboren die nog alle 6 heeft en het is een aanname dat de babyspin met poten er 8 heeft. De 2 andere volwassenen spinnen zijn niet geboren met 6 poten, maar we weten niet met hoeveel wel en hoeveel ze nu hebben.
Veel spinnen kunnen weer poten laten aangroeien.

Het is geen onredelijke aanname dat ongespecificeerd betekent 8 poten geboren en 0 verloren en 0 hergroeid, maar het blijft een aanname.

Ik zou aan de query toevoegen "wat zijn de aannames"

[Reactie gewijzigd door bewerkers op 22 juli 2024 16:36]

Wat knap dat jij het beter kan dan Gemini!

Om dan toch te reageren: alle spinachtigen hebben van nature 8 poten, dus daarvan uitgaan is geen aanname. Het is juist de bedoeling dat dit soort modellen redeneren zoals de meeste van ons dat doen, namelijk zonder altijd de wijsneus te willen uithangen.
Beter lezen.
De aaname dat spinachtigen van nature 8 poten hebben is een juiste aanname. En die trek ik ook niet in twijfel. Ik ben onde de indruk dat Gemini deze kennis heeft, want het staat niet in de invoer. Echter verwacht ik dan ook dat Gemini weet dat poten kunnen aangroeien en daar op zijn minst een kanttekening bij maakt.
Het raadsel spreekt over spinnen die met een afwijkend aantal poten hebben bij geboorte en ook poten verloren tijdens hun leven. Echter wordt bij niet alle spinnen het aantal poten bij geboorte verteld en ook niet het aantal verloren poten.

Als je 1 wiel van een auto haalt hoeveel wielen heb je over? Telt het reservewiel mee? Hoeveel wielen had de auto ervoor? Een auto heeft standaard 3-6 wielen plus een eventueel reservewiel. Dus het antwoord kan tussen de 0 en de 6 liggen.

Ik laat zien dat er gaten in het raadsel zitten. Als programmeur moet ik op dit soort details letten. Ik waardeer het label wijsneus dan ook niet.
LLMs hebben moeite met logica en rekenen en kunnen dus moeilijk met dit soort details overweg. Niet onbelangrijk.

Verder communiceren Claude en ChatPGT wèl een deel van de aannames.

[Reactie gewijzigd door bewerkers op 22 juli 2024 18:56]

Claude doet het volgens mij ook goed.
Let's break this riddle down step by step:

1. Initial setup:
- 1 spider with 5 legs climbing
- 3 adult spiders (one with 6 legs, two with 8 legs each)
- 2 baby spiders (one with legs, one without)

2. Events during the climb:
- The climbing spider loses a leg (now has 4 legs)
- One adult spider gives birth to a baby, but it's blown away

3. Final situation:
- 1 spider with 4 legs (the climber)
- 3 adult spiders (one with 6 legs, two with 8 legs each)
- 2 baby spiders (one with legs, one without)

Now, let's count the legs:
- Climber spider: 4 legs
- Adult spider 1: 6 legs
- Adult spider 2: 8 legs
- Adult spider 3: 8 legs
- Baby spider 1 (with legs): Assuming it has 8 legs like a normal spider
- Baby spider 2 (without legs): 0 legs

Total legs: 4 + 6 + 8 + 8 + 8 + 0 = 34 legs

Therefore, they have 34 legs altogether.

Now, here's a Bash script that calculates this:

```bash
#!/bin/bash

# Initialize variables
climber_legs=4
adult_spider1_legs=6
adult_spider2_legs=8
adult_spider3_legs=8
baby_spider1_legs=8
baby_spider2_legs=0

# Calculate total legs
total_legs=$((climber_legs + adult_spider1_legs + adult_spider2_legs + adult_spider3_legs + baby_spider1_legs + baby_spider2_legs))

# Print result
echo "The spiders have $total_legs legs altogether."
```

This script defines variables for each spider's legs and then adds them up to get the total. Finally, it prints the result.

Would you like me to explain or break down the code?
ChatGPT 4o doet het ook goed (ChatGPT 4o mini niet, die haalt maar 26 poten, ChatGPT 4 heeft ook het juiste antwoord maar veel trager en maakt als een bash script een bijna zuivere echo “total legs is 34”). En naar goede gewoonte veel comments in het script:

Let's break down the riddle step by step:

1. **Initial Legs of the Climbing Spider**:
- The 5-legged spider starts climbing the tree.

2. **Legs of the Adult Spiders**:
- There are 3 adult spiders:
- Two normal adult spiders with 8 legs each.
- One adult spider with only 6 legs.

3. **Legs of the Baby Spiders**:
- Two baby spiders:
- One baby spider with legs (assumed normal baby spider with 8 legs).
- One baby spider without legs (0 legs).

4. **Spider Loses a Leg**:
- The 5-legged spider is attacked by a bird and loses one leg, so it now has 4 legs.

5. **New Baby Spider**:
- One of the three adult spiders gives birth to another baby spider, which is blown away by the wind. This spider doesn’t count as it’s not present anymore.

6. **Total Legs Calculation**:
- Let's now calculate the total number of legs:
- 2 normal adult spiders: \(2 \times 8 = 16\)
- 1 adult spider with 6 legs: \(6\)
- 1 baby spider with 8 legs: \(8\)
- 1 baby spider with 0 legs: \(0\)
- 1 spider that lost a leg and now has 4 legs: \(4\)

Adding these up:
\[
16 + 6 + 8 + 0 + 4 = 34
\]

So, the total number of legs altogether is \(34\).

### Bash Code to Solve the Puzzle

```bash
#!/bin/bash

# Legs of the two normal adult spiders
legs_normal_adults=$((2 * 8))

# Legs of the adult spider with 6 legs
legs_adult_six=6

# Legs of the baby spider with legs (assuming normal baby spider legs)
legs_baby_with_legs=8

# Legs of the baby spider without legs
legs_baby_without_legs=0

# Legs of the spider that lost one leg
legs_spider_lost_leg=4

# Total number of legs
total_legs=$((legs_normal_adults + legs_adult_six + legs_baby_with_legs + legs_baby_without_legs + legs_spider_lost_leg))

echo "Total number of legs: $total_legs"
```

Running this script will output the total number of legs:

```bash
Total number of legs: 34
```

[Reactie gewijzigd door TPar op 22 juli 2024 17:38]

Dit is wel bijzonder, maar ik heb alle AI's geprobeerd (ChatGPT, Mistral, Claude AI en CoPilot). Allemaal zeggen ze 34 poten, behalve juist Gemini. Die geeft als enige 36 poten.
Leuke test, Perplexity lost het ook goed op: https://www.perplexity.ai...ol-XMA50M8QQPWNkKw_V7AzRA

Answer
Let's break this riddle down step by step:
Initial situation:
  • 1 spider with 5 legs climbing the tree
  • 3 adult spiders already on the tree (one with 6 legs, two with 8 legs each)
  • 2 baby spiders (one with legs, one without)
Events during the climb:
  • The climbing spider loses a leg (now has 4 legs)
  • One adult spider gives birth to a baby spider
  • The newborn baby spider is blown away by the wind
Final situation:
  • 1 spider with 4 legs (the one that climbed up)
  • 3 adult spiders (one with 6 legs, two with 8 legs each)
  • 2 baby spiders (one with legs, one without)
Now, let's count the legs:
  • Climbing spider: 4 legs
  • Adult spider 1: 6 legs
  • Adult spider 2: 8 legs
  • Adult spider 3: 8 legs
  • Baby spider with legs: Let's assume it has 8 legs (standard for spiders)
  • Baby spider without legs: 0 legs
Total legs = 4 + 6 + 8 + 8 + 8 + 0 = 34 legs
Therefore, they have 34 legs altogether.
Here's a bash script that calculates this:
[code]#!/bin/bash

# Initialize variables
climbing_spider=5
adult_spider1=6
adult_spider2=8
adult_spider3=8
baby_spider1=8
baby_spider2=0

# Simulate the climbing spider losing a leg
climbing_spider=$((climbing_spider - 1))

# Calculate total legs
total_legs=$((climbing_spider + adult_spider1 + adult_spider2 + adult_spider3 + baby_spider1 + baby_spider2))

# Print the result
echo "The spiders have $total_legs legs altogether."[/code]

You can save this script to a file (e.g., spider_legs.sh), make it executable with chmod +x spider_legs.sh, and then run it with ./spider_legs.sh. The script will output the total number of legs.
En nu ben ik benieuwd wanneer de GEITje fork hiervan komt :)
Ik zie hem helaas nog niet bij Ollama staan onder de libraries. Als hij uitkomt ga ik hem even testen, gezien het aantal parameters past hij dus prima in het videogeheugen van mijn kaart (7900XTX).
Hoop dat dit weer een stuk beter presteerd dan Llama3 of Zephyr (welk als basis de oude Mistral heeft).
Ja ik ben ook al een paar dagen aan het refreshen :)

7900XTX is wel heel mooi spul <3 Ik heb hier ook AMD, maar dan de Radeon Pro VII. Hoop dat ik met die 16GB nog net uit ga kunnen met dit model.
Iemand is daar blijkbaar fan van Tekken.

Op dit item kan niet meer gereageerd worden.