Numerus ir tas pats atsakymas du kartus

Sklandaus kablelio skirtumas lengvai nepastebimas, kol nepakeičia testo, simuliacijos, atkūrimo ar sprendimo kelio. „Numerus“ aritmetiką laiko...

Numerus ir tas pats atsakymas du kartus

Klaida, kuri egzistuoja tik kitame įrenginyje

Erziniausia skaitinė klaida yra ta, kuri atsisako pasirodyti ten, kur žiūrite. Testas nepavyksta CI aplinkoje, bet ne lokaliai. Simuliacija ima dreifuoti po priklausomybių atnaujinimo. Įterptinė sistema pateikia šiek tiek kitokį rezultatą nei serveris. Modelio grandinė atrodo tvarkinga, kol atkūrimas nepaprašo to paties skaičiavimo du kartus ir negauna dviejų atsakymų, kurie yra pakankamai artimi, kad sukeltų ginčą.

Artumas kartais yra priimtinas. Artumas ne visada yra sutartis. Jei skaičiavimas yra atkūrimo kelio, saugos patikros, simuliacijos, kainodaros sprendimo, skaitmeninio dvynio, audito tako ar modelio glaudinimo žingsnio dalis, artumas gali virsti produkto rizika. Skirtumas gali būti menkas. Menki skirtumai vis tiek yra skirtumai. Programinė įranga sukūrė ištisas karjeras iš įsižeidimo dėl menkų skirtumų.

Dėl šios priežasties Dweve krūvoje egzistuoja Numerus. Numerus puslapis pristato jį kaip atvirojo kodo deterministinės aritmetikos skaitinį pagrindą: dvejetainis ir dešimtainis fiksuoto kablelio, Dweve AXIOM adaptyvioji kintamojo kablelio matematika, į sveikuosius skaičius orientuotos operacijos, Rust, no_std palaikymas, tikrinimas prieš didelio tikslumo nuorodas ten, kur tai prasminga, ir deterministiniai profiliai, skirti ramesniam atkūrimui visose palaikomose sistemose. Bendras skaitinis sluoksnis po jais yra dar platesnis: dvejetainių, trejetainių, sveikųjų, fiksuoto kablelio, slankiojo kablelio ir adaptyviųjų AXIOM šeimų rinkinys pagal vieną Element stiliaus sutartį. Tikslūs įgyvendinimo niuansai rūpi inžinieriams. Produkto pamoka paprastesnė: aritmetika nėra foninis triukšmas. Tai infrastruktūra.

Kai rezultatas patenka į atkūrimo ar audito kelią, naudingas klausimas yra ne ar du atsakymai yra artimi, o ar sistema gali tą patį atsakymą pateikti du kartus.

Tai skamba akivaizdžiai, kol nepaseki, kur keliauja skaičiai. Simuliacija maitina skaitmeninį dvynį. Dvynys maitina valdymo skydelį. Valdymo skydelis informuoja žmogaus sprendimą. Sprendimas užfiksuojamas. Po mėnesio kažkas paklausia kodėl. Jei skaitinis sluoksnis negali atkurti skaičiavimo, likusi įrodymų grandinė tampa nestabili. Ji vis dar gali būti ginama, bet dabar komanda turi aiškintis išvengiamą dreifo šaltinį. Tai blogas hobis.

Slankusis kablelis nėra morališkai neteisingas

Tai ne pamokslas apie tai, kad slankusis kablelis yra blogis. Slankusis kablelis yra viena iš priežasčių, kodėl šiuolaikinė skaičiavimo technika veikia. Jis greitas, kompaktiškas, gerai palaikomas ir puikiai tinka daugeliui darbo krūvių. Problema prasideda tada, kai komandos apsimeta, kad jo elgsena yra universali valdymo sutartis.

Slankusis kablelis gyvena apvalinimo režimų, aparatinės įrangos skirtumų, kompiliatoriaus pasirinkimų, instrukcijų atrankos, sujungtų operacijų, vektorizavimo, denormaliųjų skaičių, bibliotekų elgsenos ir įrenginiui būdingų detalių pasaulyje. Dažniausiai tai yra valdoma. Kartais net nematoma. Tada jums reikia bitų tikslumo atkūrimo, arba tarpinių sistemų suderinamumo, arba deterministinės simuliacijos, arba versijos, kuri turėtų elgtis vienodai perkėlus ją iš serverio į kraštinį įrenginį. Staiga detalės nustoja būti akademinės. Jos tampa susirinkimu.

Numerus pasirenka kitą kelią darbo krūviams, kur pakartojamumas svarbesnis nei apsimetinėjimas, kad kiekviena operacija yra maža orų sistema. Aritmetika tik su sveikaisiais skaičiais daro atvaizdavimą aiškų. Fiksuoto kablelio formatai apibrėžia, kur yra kablelis. Dešimtainės šeimos tvarko reikšmes, kuriose tikslios vietos yra svarbios. Dweve AXIOM suteikia būdą pritaikyti eksponento formą kiekvienai reikšmei neperduodant valdymo atgal nepermatomai slankiojo kablelio aplinkai. Esmė ne viena skaitinė forma amžinai. Esmė pasirinkti formą su sutartimi.

Tai svarbu, nes produktų sistemos ne tik skaičiuoja. Jos įsimena. Jos atkuria. Jos lygina. Jos paaiškina. Jei tas pats skaičiavimas skirtingose palaikomose platformose duoda skirtingus rezultatus, tas skirtumas tampa produkto dalimi, nesvarbu, ar kas nors tai planavo, ar ne.

Viena skaitinė biblioteka iš tikrųjų yra keli pažadai

Skaitinis pagrindas nėra vienas dalykas. Tai rinkinys pažadų, skirtų skirtingoms auditorijoms. Įterptinių sistemų inžinieriui rūpi, kad ribotus išteklius turinčios platformos galėtų paleisti atitinkamus sveikųjų skaičių profilius, netempdamos patogios serverio vykdymo aplinkos. Modeliavimo inžinieriui rūpi, kad atkūrimas galėtų atkurti būseną. Auditoriui rūpi, kad atsakymo kelią būtų galima paaiškinti. Produkto savininkui rūpi, kad įrenginys, perkeltas iš vienos aplinkos į kitą, nesielgtų kaip nervingas skaičiuotuvas.

Viešasis Numerus puslapis pabrėžia šeimas, apie kurias žmonės dažniausiai klausia pirmiausia: Q formato fiksuoto kablelio, Decimal ir AXIOM. Kodų bazė yra platesnė. common/numeric apima dvejetaines XNOR ir POPCNT formas, trejetes reikšmes, vietinius ir mažesnius nei baitas sveikuosius skaičius, fiksuoto kablelio sinonimus, mažo formato slankiojo kablelio tipus ir adaptyvųjį AXIOM. Numerus fasadas tada prideda produktui skirtus dešimtainius ir aritmetinius paviršius aplink tą pagrindą. Šis padalijimas svarbus, nes išvengiama dirbtinės elegancijos, kai kiekvienas skaičius įspraudžiamas į vieną kostiumą.

Skirtingiems darbo krūviams reikia skirtingų skaičių formų. Bendras pažadas yra deterministinis elgesys visame platesniame skaitiniame paviršiuje, o ne vienas madingas vaizdavimas viskam.

Tai labai europietiška inžinerija geriausia prasme. Mažiau dramos, daugiau sutarties. Skaičiavimas turėtų pasakyti, kas jis yra. Diapazonas turėtų būti žinomas. Dešimtainis elgesys turėtų būti aiškus. Tiksliniai apribojimai turėtų būti gerbiami. Rezultatas turėtų būti atkuriamas. Niekam nereikia pristatymo kalbos tam. Jiems reikia, kad tai veiktų.

AXIOM vertas atskiro straipsnio, nes tai ne tik dar vienas sinonimas sąraše. Tai Dweve adaptyvioji kintamo kablelio šeima: ženklas, eksponentės indeksas ir mantisa, supakuoti į kompaktišką atvaizdavimą, su eksponentės sąrašais, parinktais bendriems, tankiems, smulkiagrūdžiams ar neuroninio tinklo formos duomenims. Šis įrašas tik įdeda jį į Numerus žemėlapį. Gilesnė istorija yra tai, kaip adaptyvusis eksponentės parinkimas suteikia daugiau vietos besikeičiantiems dydžiams, nepadarydamas aritmetikos vėl nedeterministinės.

Tai taip pat apsaugo nuo perdėtų teiginių. Numerus nepadaro kiekvienos skaitinės problemos lengvos. Jis nepanaikina poreikio pasirinkti mastelius, diapazonus, apvalinimo elgesį, eksponentės sąrašus, mantisos pločius ar tikrinimo sritis. Tiek fiksuoto, tiek kintamo kablelio aritmetika gali būti klaidingai naudojama su dideliu entuziazmu. Vertė yra ta, kad klaidingas naudojimas tampa labiau matomas. Aiški skaitinė sutartis suteikia ką peržiūrėti. Paslėpta slankiojo kablelio prielaida suteikia mažą vaiduoklį gamyboje.

Tikrinimas nėra ženkliukas

Kiekviena skaitinė biblioteka anksčiau ar vėliau sužino, kad žodžiai teisingas ir tikslus yra pigūs, kol nepririšami prie bėgių. Teisingas kur? Tikslus, palyginti su kuo? Per kurią įvesties sritį? Su kokiu apvalinimo elgesiu? Kurioje versijoje? Pagal kokius testus?

Numerus medžiaga iškelia tikrinimą į pirmą planą: tik sveikųjų skaičių CORDIC transcendentinėms funkcijoms, palyginimas su didelio tikslumo MPFR orakulu, savybių testai ir leidimo patikros. Tikslus teiginys yra prasmingas tik tada, kai susietas su ta mašinerija. Ženkliukas, sakantis tikslus, yra dekoracija. Bėgiai, kurie lygina, mažina ir žlunga, yra inžinerija.

Skaitinio patikimumo pagrindas turėtų būti orakulo kelias ir savybių testai, o ne diagrama, kuri pati savimi žavisi.

Šis skirtumas svarbus, nes skaitinės klaidos dažnai slepiasi kraštuose. Srities vidurys elgiasi tinkamai. Demonstracija elgiasi tinkamai. Įprastos reikšmės elgiasi tinkamai. Tada ateina ribinė reikšmė su aplanku rankose. Neigiami įėjimai, reikšmės artimos nuliui, perpildymo ribos, skalės perėjimai, apvalinimo lygybės, eksponentų sąrašo ribos ir pasikartojančios operacijos yra tos vietos, kur skaitinės bibliotekos arba užsitarnauja pasitikėjimą, arba pradeda rašyti fantastiką.

Savybių testavimas naudingas, nes žmonės prastai įsivaizduoja visus būdus, kuriais skaičius gali būti nemalonus. Didelio tikslumo orakulas naudingas, nes įgyvendinimui reikia atskaitos, kuri nėra jis pats. Leidimo patikros naudingos, nes patvirtintas teiginys iš praėjusio mėnesio negarantuoja šio mėnesio. Programinė įranga nelieka teisinga iš mandagumo.

Determinizmas turi priklausyti architektūrai, o ne išnašai

Viliuojama deterministinę aritmetiką laikyti žemo lygio bibliotekos detale. Būtent ten daugelis komandų ją ir praranda. Kol produktui prireikia atkūrimo, skaitinės prielaidos jau pasklidusios po paslaugas, užrašų knygeles, įterptines sistemas, modelių įrankius ir integracijos testus. Tada determinizmas tampa pertvarka. Pertvarkos yra vieta, kur biudžetai ugdo charakterį.

Tinkamas momentas apsispręsti dėl skaitinės laikysenos yra ankstyvas. Ar šiam darbo krūviui reikia bitų stabilaus atkūrimo? Ar jis kerta mašinas? Ar kerta architektūras? Ar palaiko reguliuojamą sprendimą? Ar maitina simuliaciją? Ar tampa mokymo duomenimis, išvadų įėjimu, modelio glaudinimo išvestimi ar skaitmeninio dvynio būsena? Jei taip, aritmetika yra architektūrinė.

Numerus dera šalia FMI ir Twin būtent dėl šios priežasties. FMI rūpinasi deterministiniais simuliacijos branduoliais ir modelių mainais. Twin rūpinasi operacinės ar fizinės būsenos atkūrimu laike. Ledger įrašo operacinius įvykius. Trace neša atkuriamus skaičiavimo įrodymus. Tie sluoksniai nurimsta tik tada, kai apatinis skaitinis sluoksnis nedreba kaip prekybos vežimėlis su vienu blogu ratu.

Dirbtinio intelekto sistemose tai tampa dar konkretesnė. Kvantavimas, vertinimas, reitingavimas, simuliacija, apribojimai, kalibravimas, glaudinimas ir atkūrimas naudoja skaičius. Jei tie skaičiai skirtingose aplinkose elgiasi skirtingai, modelis gali būti ne kaltininkas. Jis tiesiog labiausiai matomas įtariamasis. Patogu, bet ne visada teisinga.

Mažos mašinos nėra antros rūšies piliečiai

Daug AI ir simuliacijos architektūrų tyliai numano patogią mašiną. Bus serveris. Bus GPU. Bus pakankamai atminties. Bus debesijos paslauga. Bus sąskaita, dėl kurios kažkas sugalvos frazę strateginėinvesticija.

Tikros sistemos nėra tokios tvarkingos. Kai kurie skaičiavimai turi veikti įterptinėse sistemose. Kai kurie gyvena krašte. Kai kurie sėdi įrenginiuose be slankiojo kablelio bloko. Kai kuriems reikia no_std suderinamumo. Kai kurie turi veikti, kai tinklas nėra kviečiamas. Jei skaitinis pamatas elgiasi tik patogiu atveju, tai ne pamatas. Tai baldai.

Tas pats skaitinis susitarimas turi išgyventi diegimo apribojimus, ne tik kūrėjo nešiojamąjį kompiuterį, kuriame viskas dosnu ir šilta.

Sveikųjų skaičių aritmetika čia padeda todėl, kad sumažina priklausomybę nuo konkrečios platformos slankiojo kablelio elgsenos ten, kur darbo krūvis gali naudoti tuos profilius. Paviršiai, palaikantys no_std, padeda todėl, kad ne kiekvienoje aplinkoje yra standartinės bibliotekos patogumų, kaip serverio procese. Esmė ne nostalgija mažesnėms mašinoms. Tai kontrolė, kuri skaitinė sutartis keliauja į ribotus tikslus.

Tai ne nostalgija mažesnėms mašinoms. Tai kontrolė. Jei skaičiavimas yra produkto dalis, produktas neturėtų reikalauti pačios patogiausios aplinkos vien tam, kad būtų patikimas.

Nuobodus pavyzdys yra svarbiausias

Įsivaizduokite dozės skaičiavimą, tarifo skaičiavimą, modeliavimo žingsnį, atkartotą jutiklio reikšmę ar modelio glaudinimo slenkstį. Nė vienas iš šių dalykų neskamba įspūdingai. Gerai. Įspūdingumas dažniausiai yra ten, kur prasideda miglotas kalbėjimas. Nuobodūs pavyzdžiai yra ten, kur skaitinis determinizmas atsiperka.

Jei rezultatas naudojamas vieną kartą ir pamirštamas, nedidelis nuokrypis gali nesvarbu. Jei rezultatas įrašomas ir atkartojamas, jis svarbus. Jei jis lyginamas skirtingose aplinkose, jis svarbus. Jei jis lemia vėlesnį sprendimą, jis svarbus. Jei klientas, auditorius ar inžinierius gali paklausti, kodėl atsirado ši reikšmė, jis tikrai svarbus. Tuomet skaičiavimas nebėra vidinė įgyvendinimo detalė. Jis tampa dalimi istorijos, kurią pasakoja produktas.

Štai kodėl Numerus nėra tik matematikos biblioteka abstrakčiai. Tai komponentas įrodymų architektūroje. Jis suteikia kitoms sistemoms ramesnį skaitinį sluoksnį, ant kurio stovėti. Reed gali analizuoti šaltinį su kvitais. Ledger gali įrašyti įvykius. BitWeave gali padaryti paiešką deterministine. HEDL gali padaryti struktūruotus duomenis mažiau švaistomus. Numerus daro aritmetiką mažiau slidžią. Kiekviena dalis pašalina vieną vietą, kurioje sistema kitaip gūžtelėtų pečiais.

Pamoka

Numerus pamoka yra ta, kad skaičiai yra produkto elgsena. Ne tik įgyvendinimo detalė. Ne tik matematika. Elgsena. Jei tas pats įvestis gali duoti skirtingą atsakymą, kai perkeliama į kitą palaikomą aplinką, tas skirtumas dabar priklauso produktui.

Deterministinė aritmetika ne visada reikalinga. Kai ji reikalinga, ji turėtų būti suprojektuota iš pradžių, o ne išmaldauta vėliau. Pasirinkite aiškias skaitines šeimas. Patikrinkite pagal orakulą. Išbandykite kampus. Gerbkite diegimo apribojimus. Turėkite omenyje atkartojimą dar prieš tai, kai pirmasis incidento pranešimas padarys visus staiga filosofiškus.

Numerus naudingas todėl, kad paverčia aritmetiką sutartimi, kuria gali pasikliauti likusi dalis technologijų krūvos. Binary, ternary, integer, fixed, float, Decimal ir AXIOM nėra šūkiai. Tai būdai formuoti skaičius taip, kad tas pats atsakymas galėtų pasirodyti du kartus, sąmoningai. AXIOM turi savo gilesnę istoriją, nes tai dalis, kurioje pats taškas pradeda judėti, o sutartis lieka deterministinė. Tai neįspūdinga. Tai geriau nei įspūdinga. Tai toks nuobodumas, kuris leidžia rimtoms sistemoms ramiai miegoti naktimis.