En hurtig, matematisk forankret språkmodell med 3 milliarder parametere for tolkning av nordiske ikke-kvotepliktige klimagassutslippsdata. Bygget gjennom Knowledge Distillation fra en 32B-lærermodell, forankret i verifisert offentlig statistikk for å garantere faktamessig nøyaktighet.
CorpusAI CO2-utslippsmodellen er et anvendt forskningsprosjekt som utforsker skjæringspunktet mellom destillasjon av store språkmodeller, domenespesifikk forankring og utrulling på edge-maskinvare for miljødataanalyse. Prosjektet adresserer et kritisk gap i det nordiske klimarapporteringsøkosystemet: behovet for raske, nøyaktige og tolkbare AI-systemer som kan prosessere ikke-kvotepliktige utslippsdata (Non-ETS) fra nasjonale statistikkbyråer.
Kjerneinnovasjonen er en tretrinns metodikk:
Knowledge Distillation (32B → 3B) komprimerer resonnementevnene til en stor lærermodell inn i en kompakt elevmodell optimalisert for CPU-inferens. Ankerdata fra verifiserte offentlige kilder (SSB, Miljødirektoratet, Naturvårdsverket) injiseres under trening for å eliminere hallusinasjoner og sikre at alle utdata er sporbare til «Ground Truth»-statistikk. Den resulterende modellen kjører på standard AMD EPYC-maskinvare via Ollama, og oppnår responstider på under ett sekund uten GPU-krav.
Denne spesifikasjonen dokumenterer den fullstendige systems engineering-livssyklusen: fra dataforberedelse og modelltrening gjennom kvalitetsporter og produksjonsutrulling. Den fungerer som det tekniske fundamentet for avhandlingskomponenten som adresserer forskningsspørsmålet: «Hvordan kan Knowledge Distillation og dataforankringsteknikker muliggjøre nøyaktig, hallusinasjonsfri LLM-inferens for miljørapportering på ressursbegrenset maskinvare?»
Systemarkitekturen følger et trinnvis destillasjonspipeline-mønster, der hver komponent er frakoblet og uavhengig verifiserbar — et sentralt systems engineering-prinsipp som muliggjør inkrementell validering. Arkitekturen består av fire primære delsystemer:
Lærermodellen med 32 milliarder parametere kjører på Hippo/Viper GPU-klusteret (RTX 5090). Den prosesserer ankerdata og genererer Chain-of-Thought (CoT) resonnementpar som danner treningskorpuset for elevmodellen. Lærerens rolle er å demonstrere hvordan man tenker om utslippsdata — ikke bare hva svaret er.
Elevmodellen med 3 milliarder parametere er utrullingsmålet. Trent via LoRA-finjustering på lærerens destillerte utdata og forankret i verifisert statistikk, oppnår den nær lærernivå nøyaktighet med 10× raskere inferenshastighet. Kvantisert til Q8_0 GGUF for ren CPU-utrulling på S4-serveren (AMD EPYC).
Ankerlaget er systemets «Ground Truth»-garanti. Råutslippsdata fra SSB (Statistisk sentralbyrå), Miljødirektoratet og Naturvårdsverket lagres i en normalisert MariaDB-tabell og transformeres til faktaark på naturlig språk under trening. Dette sikrer null hallusinasjoner på faktaspørsmål.
Ved inferenstidspunktet utfører et Retrieval-Augmented Generation (RAG)-lag hybridsøk på tvers av Qdrant-vektorembeddinger og MariaDB-strukturerte data. Hentede tekstbiter og ankerdatafakta injiseres i promptkonteksten, slik at 3B-eleven kan gi siterte, verifiserbare svar.
Fase 1 av pipelinen fokuserer på å konvertere strukturerte utslippsdata til treningsklare formater. Dette er en totrinns prosess: Ankerdataekstraksjon og Lærerresonnementgenerering.
Rårader fra nordic_emissions_raw-tabellen ekstraheres og transformeres til lesbare ankerstrenger. Denne transformasjonen er deterministisk — hvert faktaark tilsvarer 1:1 en databaserad, noe som sikrer full sporbarhet.
Kildeformat (MariaDB-rad):
Ankerstreng (utdata):
Hver ankerstreng bærer metadata som kobler tilbake til kilderadens ID og den opprinnelige statistikktabellen. Dette muliggjør etterkontroll: enhver modellutdata kan spores tilbake gjennom ankerstrengen til den eksakte databaseraden og offentlige publikasjonen den stammer fra.
32B-lærermodellen prosesserer hver ankerstreng og genererer strukturerte Chain-of-Thought (CoT) treningspar. Disse parene lærer elevmodellen hvordan man resonnerer om utslippsdata — ikke bare å memorere fakta.
Inndataprompt til læreren:
Utdata (JSONL-treningspar):
<think>-blokken er kritisk: den eksponerer lærerens matematiske resonnement (prosentberegninger, grunnlinjesammenligninger, referanser til regulatoriske rammeverk) slik at elevmodellen lærer å replisere denne analytiske prosessen, ikke bare den endelige teksten.
Treningsfasen («Raffineringskjøringen») bruker Unsloth på Hippo GPU-serveren for å maksimere gjennomstrømningen på RTX 5090. Datasettet er nøye balansert for å produsere en modell som er både nøyaktig og robust.
Treningsdatasettet er strukturert som et balansert JSONL-korpus med tre distinkte partyper, der hver tjener en spesifikk pedagogisk funksjon:
| Partype | Andel | Eksempel S → S | Formål |
|---|---|---|---|
| Ankerdirekte | 30% |
«Hva var Oslos 2024-transportutslipp?» → «1,2M tonn» | Eksakt faktahenting fra Ground Truth-data |
| Resonnement (CoT) | 50% |
«Sammenlign avfallsutslipp i Oslo og Stockholm» → <think>-blokk + resultat |
Flertrinns matematisk og analytisk resonnering |
| Negativ / robusthet | 20% |
«Hva er utslippene for Mars?» → «Datasettet inneholder ikke planetariske data utenfor Norden» | Grensehåndheving; lærer modellen å avvise spørsmål utenfor domenet |
Bruker Unsloth på Hippo-serveren for å maksimere treningsgjennomstrømning på RTX 5090 (32GB VRAM). LoRA-konfigurasjonen prioriterer høy-tetthets adaptervekter for å bevare matematisk resonneringspresisjon under destillasjon.
| Parameter | Verdi | Begrunnelse |
|---|---|---|
LoRA Rank (r) |
64 |
Høy tetthet nødvendig for bevaring av matematisk logikk over destillasjonsgrensen |
LoRA Alpha (α) |
128 |
Alpha/Rank-forhold på 2,0 balanserer adapterinnflytelse mot basismodellkunnskap |
| Målmoduler | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
Full attention + MLP-målretting sikrer modifisering av resonnementsbaner |
| Læringsrate | 1 × 10-4 |
Cosinusplan med oppvarming; forhindrer katastrofal glemming av basisevner |
| Kontekstlengde | 4 096 tokens |
Tilstrekkelig for CoT-blokker + ankerkontekst; større vinduer forringer treningshastigheten |
| Batchstørrelse | 4 (gradientakkumulering: 8) |
Effektiv batchstørrelse 32; passer innenfor 32GB VRAM-budsjett med Unsloth-optimaliseringer |
| Epoker | 3 |
Domenespesifikke data drar nytte av flere gjennomganger; overfitting overvåkes via evalueringstap |
| Vektregularisering | 0,01 |
Lett regularisering for å forhindre overfitting på små spesialiserte datasett |
| Kvantisering (trening) | 4-bit (NF4) |
QLoRA-tilnærming: basismodell i 4-bit, adaptere i float16 for presisjon |
Modellen må bestå tre «Blue Note»-kvalitetsporter før utrulling. Disse portene er utformet som sekvensielle verifikasjonstrinn — inspirert av systems engineering V&V-metodikk (Verifikasjon og Validering) — der hver port tester et progressivt høyere nivå av systemkapabilitet.
<think>-blokken for korrekte matematiske operasjoner. Når modellen hevder en «Total», er det faktisk summen av de refererte «Sektorene»? Når den beregner en prosentendring, er regnestykket korrekt?
KVALITETSPORTENES TILORDNING TIL SYSTEMS ENGINEERING V-MODELLEN
Fase 4 transformerer de trente LoRA-adapterne til et produksjonsklart inferenssystem. Pipelinen er designet for deterministisk reproduserbarhet: hvert trinn er skriptet, versjonskontrollert og produserer bitidentiske utdata fra identiske inndataverdier.
LoRA-adaptere slås sammen med basis Qwen 2.5-Coder-3B-modellen ved hjelp av Unsloths merge-verktøy. Den sammenslåtte modellen konverteres deretter til GGUF-format og kvantiseres til Q8_0 (8-bits kvantisering). Q8_0 er valgt fremfor Q4_K_M for denne brukssaken fordi matematisk presisjon er avgjørende — den marginale hastighetsgevinsten ved 4-bits kvantisering rettferdiggjør ikke risikoen for numeriske avrundingsartefakter i utslippsberegninger.
Den utrullede modellen kjører via Ollama på Server 4 (AMD EPYC, 64 kjerner). Ved spørringstidspunktet sikrer en totrinns promptrutingsprosess nøyaktighet:
Trinn 1: Hybridsøk henter relevante tekstbiter fra Qdrant (semantisk likhet) og MariaDB (strukturert spørring) basert på brukerens spørsmål.
Trinn 2: 3B-modellen tolker de hentede tekstbitene sammen med injiserte ankerdatafakta for å produsere et endelig, sitert svar. Hver påstand er sporbar til en kilderad.
To kritiske flaskehalser er identifisert under innledende prototyping. Begge krever avbøtende tiltak før utrulling for å sikre produksjonspålitelighet.
Nordiske tegn (å, ø, æ, ä, ö) i kildedata kan produsere HTML-entitetsartefakter (å, ø) ved skraping fra nettbaserte statistikkgrensesnitt. Hvis disse artefaktene vedvarer i treningsdataene, kan 3B-modellen lære å reprodusere dem i utdata — og generere svar som «Miljødirektoratet» i stedet for «Miljødirektoratet».
Avbøtende tiltak: «Hex Scrub»-forbehandlingsskriptet må kjøres på alle kildedata før læreren genererer treningspar. Dette skriptet normaliserer alle HTML-entiteter til deres UTF-8-ekvivalenter og validerer tegnsettskonsistens på tvers av hele nordic_emissions_raw-tabellen.
På S4-serveren (AMD EPYC, ren CPU-inferens) vokser Key-Value-cachen lineært med kontekstlengden. Ved full 4 096 tokens treningskontekst forringes inferenslatensen betydelig ettersom KV-cachen bruker tilgjengelig RAM-båndbredde. EPYCs minnesubsystem, selv om det har rikelig kapasitet, kan ikke matche GPU HBM-båndbredde for tilfeldige tilgangsmønstre typiske for transformer-attention.
Avbøtende tiltak: Produksjonsinferenskontekst er begrenset til 2 000 tokens. RAG-laget forfiltrerer hentede tekstbiter for å holde seg innenfor dette budsjettet. Denne begrensningen er akseptabel fordi 3B-modellens primære funksjon er tolkning av forhåndshentede data, ikke åpen generering. 2K-kontekstvinduet har god plass til: systemprompt (~200 tokens) + hentede tekstbiter (~800 tokens) + ankerfakta (~400 tokens) + genereringsrom (~600 tokens).
Dette prosjektet er utviklet innenfor rammen av en Master of Science i Innovasjon og teknologiledelse med spesialisering i Systems Engineering. Spesifikasjonen er bevisst tilordnet etablerte SE-metodikker:
De tre kvalitetsportene (seksjon 5) implementerer direkte INCOSEs SE Handbook-verifiseringskategorier: Inspeksjon (Matematikktesten — automatisert numerisk verifisering), Analyse (Logikktesten — matematisk konsistenskontroll) og Demonstrasjon (Vibe-testen — ekspertpanelevaluering). Hver port har eksplisitte bestått/ikke-bestått-kriterier, som sikrer kravenes sporbarhet fra interessentbehov til testresultater.
Prosjektets livssyklus følger V-modellmønsteret: venstre side (dekomponering) tilordner domenekrav → systemdesign → komponentspesifikasjoner, mens høyre side (integrasjon) tilordner enhetsverifisering (Port 01) via systemvalidering (Port 02) til akseptansetesting (Port 03). Denne strukturen er dokumentert i seksjon 5s V-modelldiagram.
Arkitekturens fire delsystemer (Lærer, Anker, Raffineri, RAG) kommuniserer gjennom veldefinerte grensesnitt: JSONL for treningsdatautveksling, SQL for ankerspørringer, GGUF for modellserialisering og REST-APIer for inferens. Hvert grensesnitt har en definert datakontrakt, noe som muliggjør uavhengig utvikling og testing av delsystemer.
Fra et innovasjonsperspektiv representerer CorpusAI en prosessinnovasjon innen miljørapportering: anvendelse av Knowledge Distillation for å skape domenekspert-AI-systemer som kan operere på standard maskinvare. Den kommersielle levedyktighetstesen er at organisasjoner (kommuner, miljøetater) kan rulle ut spesialiserte AI-modeller uten skyavhengighet eller GPU-infrastrukturkostnader — en betydelig barrierereduksjon for nordisk offentlig sektors adopsjon.
| SE-konsept | CorpusAI-implementering | Avhandlingskapittel |
|---|---|---|
| Interessentanalyse | Nordiske klimaetater (SSB, Miljødirektoratet), kommunale planleggere, policyforskning | Kapittel 2 |
| Kravdekomponering | Nøyaktighet (>99%), hastighet (<1s), domeneavgrenset, CPU-utrullbar, hallusinasjonsfri | Kapittel 3 |
| Arkitekturdesign | Lærer-Elev-Anker-RAG fire-delsystems dekomponering (seksjon 2 i denne spesifikasjonen) | Kapittel 4 |
| Verifikasjon og validering | Tretrinns kvalitetsportrammeverk: Matematikk, Logikk, Vibe (seksjon 5 i denne spesifikasjonen) | Kapittel 5 |
| Konfigurasjonsstyring | Git-kontrollerte treningskonfigurasjoner, versjonerte GGUF-artefakter, reproduserbare pipelineskript | Kapittel 6 |
| Risikostyring | Tegnsettartefakter, KV-cache-oppblåsing, domenegrenselekkasje (seksjon 7 i denne spesifikasjonen) | Kapittel 7 |
Sørg for at nordic_emissions_raw-tabellen har minst 5 000 ferske rader fra SSB, Miljødirektoratet og Naturvårdsverket. Kjør Hex Scrub-tegnsettsnormaliseringen på alle innhentede data.
Bruk 32B Coder på Viper for å bygge de første 2 000 spørsmål-og-svar-parene etter 30/50/20-datasettsammensetningen. Valider JSONL-format og anker-ID-integritet før trening.
Utfør LoRA-trening på Hippo via Unsloth. Kjør alle tre Blue Note-kvalitetsportene. Iterer på datasettsammensetningen hvis Port 01 eller 02 feiler.
Slå sammen adaptere, kvantiser til Q8_0 GGUF, rull ut via Ollama på S4. Konfigurer RAG-laget med Qdrant + MariaDB hybridsøk. Produksjonskontekstgrense: 2 000 tokens.
CorpusAI CO2-utslippsmodell v1.0
Et GilliganTech-forskningsprosjekt — Blue Note Logic Inc. × Gilligan Tech ENK
Master of Science · Innovasjon og teknologiledelse · Systems Engineering