Kjør DeepSeek R1 lokalt – med alle sine 671 milliarder parametere

Forrige uke viste jeg hvordan man enkelt kan kjøre destillerte varianter av DeepSeek R1-modellen lokalt. En destillert modell er en komprimert versjon av en større språkmodell, der kunnskapen fra en større modell overføres til en mindre modell for å redusere ressursbruk uten å miste for mye ytelse. Disse modellene er basert på Llama- og Qwen-arkitekturene og finnes i varianter med alt fra 1,5 til 70 milliarder parametere.

Noen påpekte at dette ikke er den EKTE DeepSeek R1, og at den umulig kan kjøres lokalt uten flere hundre GB minne. Det hørtes ut som en utfordring – tenkte jeg! 😎

Første forsøk – En 1,58 bit kvantisert versjon av DeepSeek R1 671b i Ollama.cpp

Utviklerne som står bak Unsloth har laget dynamisk kvantisert DeepSeek R1, slik at man kan kjøre en modell på helt ned mot rundt 130 GB, og fremdeles nyte godt av alle 671 milliarder parametere.

En kvantisert modell lagrer parametrene i lavere presisjon (f.eks 4 bit eller 8 bit istedenfor 16 bit), for å gjøre at modellen kan ta mindre plass og kjøre raskere. Det man ofrer i nøyaktighet, skal man forhåpentligvis hente igjen på hastighet.

Jeg lastet ned filene fra denne samlingen på HuggingFace, og kjørte følgende kommando med Llama.cpp. Hvis du foretrekker å kjøre modellen med Ollama direkte, må du merge de tre gguf-filene vha Llama.cpp eller lignende først.

llama-cli.exe
  --model e:\Huggingface\DeepSeek-R1-UD-IQ1\DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf
  --cache-type-k q4_0
  --threads 16
  --prio 2
  --temp 0.6
  --ctx-size 8192
  --seed 3407
  --n-gpu-layers 6
  -no-cnv
  --prompt "<|User|>Hvem er Norges mest innflytelsesrike artist i nyere tid?<|Assistant|>"

Følgende tabell fra Unsloth viser hvilken verdi som anbefales for parameteret n-gpu-layers, som angir hvor mye av jobben som kan offloades til GPU-en.

Jeg forsøkte først med 7, som burde være riktig i følge tabellen, men måtte gå ned til 6 for at det skulle fungere.

Noe av teksten som suser forbi på skjermen når man kjører kommandoen.

Llama.cpp bruker rikelig av CPU, minne og GPU, i tillegg leser den også hele tiden fra disken der modellfilene ligger lagret (Disk 2).

Modellen gjentar spørsmålet, og er klar til å starte på resonnementet.

Resonnementet, eller tenkingen, er ganske langt – noe som også bidrar til at alt totalt sett tar en del tid. Kanskje er det også i tenkingen det mest interessante ligger?

Okay, so the user is asking who Norway's most influential artist is in recent times. First, I need to understand what they mean by "influential." Influence can be in terms of cultural impact, commercial success, international recognition, or innovation in their art form. Maybe they want to know who has made a significant impact globally or within Norway.

I should consider different genres like music, visual arts, literature, etc. Since the question is about recent times, probably focusing on artists from the last few decades. Let me think about Norwegian artists who have gained international acclaim.

In music, names like Edvard Grieg are classical, but he's from the 19th century. More recently, maybe Kygo or Alan Walker? Kygo is a DJ and producer who has done well internationally. Alan Walker, though he's originally from the UK but grew up in Norway, has had massive hits. Then there's Aurora, a singer with a strong following.

In the visual arts, maybe artists like Hilda Marie Lerche or others, but I'm not as familiar. Alternatively, maybe a band like A-ha, though they're from the 80s but still active. Their song "Take On Me" is iconic.
Wait, the user specified "nyere tid," which translates to "recent times." So perhaps the last 20-30 years. A-ha's peak was in the 80s, but they're still relevant. Kygo became prominent in the 2010s.

There's also the band Keiino, which represented Norway in Eurovision, gaining some influence. Or maybe artists like Sigrid, who's had international success.

Alternatively, in the realm of literature, authors like Karl Ove Knausgård have had significant influence. His autobiographical works are internationally acclaimed.

But the user might be referring to music artists since that's more commonly associated with "artist" in popular culture. So focusing on musicians, Kygo is a big name in electronic music, known for tropical house. He's had collaborations with major international artists.

Alan Walker's "Faded" was a global hit, but he's of mixed nationality. Aurora has a unique style and has been influential in indie pop.

Maybe considering impact on streaming, social media presence, awards. Kygo has won awards, played major festivals, and has a strong following.

Alternatively, looking at the impact within Norway's own culture. Perhaps someone like Kari Bremnes, a singer with a long career, but maybe not as internationally influential.

I should also consider how the artist's influence is measured. Sales, chart performance, innovation, inspiration to others. Kygo popularized a certain style of electronic music, blending tropical elements.

Alternatively, in the hip-hop scene, artists like Kamelen or Lars Monsen might be influential locally, but not sure about international impact.

So, putting this together, Kygo seems to have a strong case for being the most influential Norwegian artist recently due to his international success, chart performance, and impact on music trends.

But wait, Alan Walker's "Faded" was a massive hit, but he's British-Norwegian. Maybe the user considers him Norwegian enough.

Alternatively, Aurora's unique voice and artistic style have earned her a dedicated fanbase. She's been around since 2014, gaining traction.

Also, the band Dimmu Borgir in metal might be influential in their genre, but perhaps not as mainstream.

I think the key is to balance international recognition and impact within the arts. Kygo's work in electronic music has reached global audiences, and he's Norwegian. So he might be the answer.

But to verify, maybe check some sources. Kygo (Kyrre Gørvell-Dahll) has been influential in the EDM scene, won awards, and his music has been streamed billions of times. He's collaborated with artists like Selena Gomez, promoting Norwegian talent.

Alternatively, someone like Morten Harket from A-ha, but again, their peak was earlier.

Another angle: Edvard Munch's influence as an artist, but he's from an earlier era.

In terms of recent times, say post-2000, Kygo is a strong candidate. So the answer would be Kygo, explaining his influence in electronic music, global reach, and contributions to the genre.

Og til slutt kom konklusjonen.

Norges mest innflytelsesrike artist i nyere tid er Kygo (Kyrre Gørvell-Dahll). 
Han har gjort en stor internasjonal innvending innen elektronisk musikk, spesielt med sin særegne blanding av tropisk house og pop-melodier. Kygo har oppnådd global suksess med låter som "It's Not You" og "Firestone," og har samarbeidet med store internasjonale navn som Selena Gomez og Avicii. Hans musikk har vært streamet milliarder av ganger, og han har vunnet flere musikkpriser, inkludert prestisjetilde Billboard Music Awards.
Kygo har også bidratt til å skape en nye bølge av norske kunstnere som oppnår internasjonal eksponering. Hans arbeid har ikke bare påvirket musikkindustrien, men også bidratt til å sette Norge på kartet innen moderne musikk.

Til slutt kan vi oppsummere: Den kvantiserte modellen genererte 0,19 tokens/s – nesten fire ganger raskere enn den fulle modellen, godt hjulpet av mindre filstørrelse og litt GPU-bistand. Totalt tok det ca 1 time og 40 minutter å svare på det samme spørsmål.

Oppdatering: Etter å ha innsett at llama.cpp og den kvantiserte modellen ikke trengte så mye minne, deaktiverte jeg det virtuelle minnet og hastigheten økte fra 0,19 tokens/s til 0,39 tokens/s.

Andre forsøk – DeepSeek R1 671b i Ollama

Ollamas modellbibliotek ser ut til å inneholde en full versjon av DeepSeek R1, med alle 671 milliarder parametre – den bør vel være ekte nok?

Nei, faktisk ikke! Dette er en 4 bit kvanitisert versjon av modllen. Ser du det står «4Q_K_M» på skjermbildet over? Det tok litt tid før jeg oppdaget det.

Med Ollama installert på hjemme-PC-en var det bare å rydde plass til 404GB, og kjøre følgende kommando mens jeg hentet meg en kaffekopp.

ollama run deepseek-r1:671b

Ok, det ble flere kaffekopper før nedlastingen var i mål.

Men til slutt var nedlastingen ferdig og spenningen steg ... før denne meldingen dukket opp!

Etter en kjapp tur innom en nettsjappe som selger ulike typer minne, kunne jeg konkludere at hovedkortet mitt uansett ikke støttet slike mengder RAM. Men, det finnes vel alternativer?

Windows har jo mulighet for virtuelt minne, så du kan bytte diskplass i virtuelt (og ganske tregt) minne. Jeg tenkte 450 GB ekstra minne, i tillegg til mine 32 GB vanlig RAM, burde være tilstrekkelig.

NB. Vær oppmerksom på at SSD-disker har et begrenset antall skriveoperasjoner per minnecelle før de slites ut. Unngå overdreven bruk av virtuelt minne, hvis du er bekymret for dette.

Nytt forsøk, og stigende spenning … før ny feilmelding!

Denne gangen var det Ollama som forsøker å dytte mer kinesisk språkmodell inn i GPUens minne, enn det er plass til. Etter en runde på internettet ser det ut til at dette ikke er et ukjent problem, men løsningen er å la GPU-en hvile, og la CPU-en gjøre all jobben.

Ollama bruker en såkalt «Modelfile» som inneholder konfigurasjon for modellen og hvordan den skal brukes. Når du tar i bruk modeller direkte fra Ollama sitt modell-bibliotek, forholder du deg normalt ikke til disse filene, slik du må dersom du selv laster ned modeller fra Huggingface eller lignende.

Jeg kjører følgende kommando for å vise eksisterende konfigurasjon for DeepSeek R1.

ollama show --modelfile deepseek-r1:671b

Jeg legger deretter til følgende linje, i det som listes ut, og lagrer det hele i en ny fil med navn Modelfile.

PARAMETER num_gpu 0

Og oppretter ny modell-konfigurasjon med følgende kommando, der siste parameter er mitt navn på modellen som nå skal kjøres helt uten GPU-bruk.

ollama create deepseek-r1-671b-nogpu

Nok en gang stiger spenningen, og jeg skriver med skjelvende fingre og stigende puls, inn følgende kommando.

ollama run --verbose deepseek-r1-671b-nogpu

Plutselig skjer det! Ingen feilmelding, men det kommer tokens! Riktignok er hastigheten slik at dersom man er kjapp nok, rekker man nesten å hente en kopp kaffe mellom hver oppdatering på skjermen – men det skjer noe! En språkmodell på høyde med det beste fra OpenAI, med alle sine 671 milliarder parametere, kjører på min tre år gamle PC med 32 GB (ekte) RAM!

I utgangspunktet er det ikke så rart at det går litt sakte, men hvis man husker at jeg både måtte ofre ytelse ved å bruke harddisken som minne og la GPU-en se på det hele fra på fra sidelinjen.

Så hvor bra svarer den? Jeg har tidligere opplevd at de destillerte variantene av DeepSeek ikke er like gode på norsk språk som vi har blitt vant til fra ChatGPT, men nå er DeepSeek helt på høyden.

Jeg stilte samme spørsmål til både ChatGPT (01 + 4o) og DeepSeek R1 671b.

Jeg er ikke spesielt opptatt av musikk, men for meg virker svaret å være rimelig fornuftig. Hvorfor modellen ikke finner det nødvendig å dele resonneringen sin med meg («think»-taggen er tom) aner jeg ikke.

Så hvor lang tid tok det? Ganske lang tid! Med 0,05 tokens/s – altså 20 sekunder per token – tok det nesten fire timer å få svar på spørsmålet mitt om hvem som er Norges mest innflytelsesrike musiker i nyere tid.

Mens modellen tenkte seg om, var både CPU, minne og disken (den som ble brukt som virtuelt minne) fullt opptatt.

Etter at jeg også har tenkt meg litt om, tenker jeg egentlig at det kanskje er helt greit å vente litt? Kanskje det kan være fornuftig at vi ikke spør språkmodeller om alt mulig rart, absolutt hele tiden? Kanskje vi burde tenke oss om selv først, og ha tid til å vente på et svar.

Dette minner kanskje om hvordan datamaskiner ble brukt på 1960-tallet, da maskinene var store og tilgjengeligheten var svært begrenset. Du forberedte programmet ditt på en bunke hullkort, som en operatør lastet inn i maskinen når det var din tur, og resultatet kunne du (hvis du var heldig) plukke opp neste dag, hvis det ikke var en feil i programmet ditt.

ChatGPT 4o svarer omtrent det samme som DeepSeek, men trekker frem Highasakite og Susanne Sundfør istedenfor Jo Nesbø, Dagny og Girl in red.

Det minst gode svaret, etter min vurdering, kom fra ChatGPT 01 (modellen med «advanced reasoning»). Her var det (nesten) bare A-ha og Morten Harket som gjaldt.

Det var det – det er slett ikke umulig å kjøre ulike kvantiserte varianter av DeepSeek R1 lokalt, med alle 671 milliarder parametrene – bare du ikke har det alt for travelt!

Hvis du vil gjøre et forsøk på å kjøre den ikke-kvantiserte DeepSeek R1, finner du modellen på Hugging Face. Fortell meg i så fall gjerne hvor mange tokens/sekund (eller sekund per token) du oppnår!

For min del er 7 timer per prompt mer enn nok, ikke ikke har jeg mer diskplass å avse til virtuelt minne heller 😄