Köra språkmodeller lokalt?
Eftersom Metas Llama2 modell är open source så har mängder med företag, individer och organisationer fortsätt att fin träna denna basmodell ytterligare.
Llama2 släpptes i storlekar som 7b 13b och 70b (och Llama2 Coder i 30b) (detta är alltså antalet vikter i det neurala nätverket), du kan estimera hur mycket RAM som behövs för en given modell genom att multiplicera antalet vikter med kvantiseringsnivån du väljer att använda.
Exempel
I grundutförandet används FP16 eller FP32 (alltså 16/32 bit flyttal), en byte = 8 bit så 32/8 = 4, 7*4 = 28GB (eller 16/8=2, 7*2 = 14GB för FP16) , dvs ca 28GB (FP32) eller 14GB (FP16) skulle behövas för att få plats med modellen i minne och utföra inferns i full hastighet.
För att minska kraven har tekniker används som kvantiserar vikterna och med detta kan minnesanvändningen sänkas dramatiskt, det kommer självfallet med en kostnad av precision (vilket i sig kan göra att modellen svammlar mer eller har svårare att hålla sig till ämnet).
En bra kompromiss är Q4_K_M eller Q5_K_M, vid Q4 så tar en vikt 4 bits (och det innebär att en 7GB modell i regel ligger runt 4-5GB RAM när den är i minnet).
Som nämndes tidigare så trodde man inledningsvis att storleken på nätverket var det väsentliga, det har visat sig att även små modeller kan prestera väldigt bra om de tränas länge med mycket data.
Modeller som mistral 7b (Mistral AI är ett Fransk företag som brukar kallas Frankrikes OpenAI och deras modeller har väldigt bra prestanda, även 7b modellen slår ChatGPT 3.5 på de flesta uppgifter och den ger bättre resultat än GPT-4 vissa andra) eller neural-chat (Som är Intels vidare tränade av mistral modell) som är den senaste och återsatte en ny standard för små modeller.
Så för att köra en sådan modell lokalt är det enklaste att bygga llama.cpp, (alternativt om du inte vill kompilera själv så kan du ladda ner en färdig produkt som använder llama.cpp i botten som tex Faraday (faraday.dev) eller LM Studio (lmstudio.ai)
Du behöver ladda ner modellen (enklast är att hämta en förkvantiserad version som tex TheBloke har mängder av tex
https://huggingface.co/TheBloke/neur...t-7B-v3-1-GGUF ) och placera den i mappen för modeller för respektive program, det sista och kanske mest avgörande för bra prestanda är att använda rätt prompt template.
(Vill du av någon anledning kvantisera själv så kan du använda quantize verktyget i llama.cpp, det tar bara någon minut att kvantisera en modell för den delen men det finns ingen större anledning i och med att de finns färdiga)
Prompt templaten står i regel på huggingface sidan för respektive modell, för tex neural chat är templaten
"### System:
{system_message}
### User:
{prompt}
### Assistant:"
Detta är extremt viktigt att få rätt annars kommer du få en modell som beter sig konstigt, pratar med sig själv, spårar ur totalt osv.
Om du väljer att kompilera själv så kan du tex använda följande för att starta en konversation med neural chat och få en konversation på svenska.
./main -m models/neural-chat-7b-v3-1.Q4_K_M.gguf --instruct --color -r "### User:" --in-prefix " " --in-suffix "### Assistant:" -p "### System:\n\nA chat between a user and an artificial intelligence assistant. The assistant gives helpful and detailed answers to the user's questions. You will answer in Swedish.\n\n"
(Exempel på hur modellen svarar
https://imgur.com/a/M7jpgsI )