Numerus ja sama vastus kaks korda
Viga, mis esineb ainult teisel masinal
Kõige tüütum numbriline viga on see, mis keeldub ilmumast seal, kus sa seda otsid. Test ebaõnnestub CI-s, mitte lokaalselt. Simulatsioon hakkab pärast sõltuvusvärskendust triivima. Manustatud sihtplatvorm annab serverist veidi erineva tulemuse. Mudelitorustik näeb hea välja, kuni replay küsib sama arvutuse kaks korda ja saab kaks vastust, mis on piisavalt sarnased, et vaidlust alustada.
Lähedane on mõnikord piisav. Lähedane ei ole alati leping. Kui arvutus on osa replay-rajast, turvakontrollist, simulatsioonist, hinnakujundusotsusest, digitaalsest kaksikust, auditijäljest või mudeli tihendamise sammust, võib lähedus muutuda tooteriskiks. Erinevus võib olla pisike. Pisikesed erinevused on siiski erinevused. Tarkvara on teinud terveid karjääre pisikeste erinevuste peale solvumisest.
See on põhjus, miks Numerus Dweve virnas olemas on. Numeruse leht raamib seda avatud lähtekoodiga numbrilise alusena deterministliku aritmeetika jaoks: kahend- ja kümnend-pühipunkt, Dweve AXIOM adaptiivne muutuvpunkt-matemaatika, täisarvule orienteeritud tehted, Rust, no_std-võimelised pinnad, kontrollimine kõrge täpsusega viidete vastu seal, kus see on mõttekas, ja deterministlikud profiilid, mille eesmärk on muuta replay toetatud sihtplatvormidel rahulikumaks. Ühine numbriline kiht allpool on veel laiem: kahend-, kolmend-, täisarv-, fikseeritud-, ujukoma- ja adaptiivsed AXIOM-pered ühe Element-stiilis lepingu all. Täpsed teostusdetailid on inseneridele olulised. Tooteõppetund on lihtsam: aritmeetika ei ole taustamüra. See on infrastruktuur.
See kõlab ilmselgena, kuni sa jälgid, kuhu numbrid liiguvad. Simulatsioon toidab digitaalset kaksikut. Kaksik toidab armatuurlauda. Armatuurlaud teavitab inimese otsust. Otsus salvestatakse. Kuu aega hiljem küsib keegi, miks. Kui numbriline kiht ei suuda arvutust reprodutseerida, muutub ülejäänud tõendusahel vankuvaks. See võib siiski olla kaitstav, kuid nüüd peab meeskond selgitama välditavat triivi allikat. See on halb hobi.
Ujukoma pole moraalselt vale
See ei ole jutlus sellest, et ujukoma on kuri. Ujukoma on üks põhjustest, miks kaasaegne arvutamine töötab. See on kiire, kompaktne, hästi toetatud ja paljude töökoormuste jaoks täpselt õige. Probleem algab siis, kui meeskonnad teesklevad, et selle käitumine on universaalne juhtimisleping.
Ujukoma elab ümardamisrežiimide, riistvaraerinevuste, kompilaatori valikute, käskude valiku, liitoperatsioonide, vektoriseerimise, denormaalide, teegikäitumise ja sihtplatvormipõhiste üksikasjade maailmas. Enamasti on see juhitav. Mõnikord on see isegi nähtamatu. Siis vajad sa bititäpset replayd, platvormideülest pariteeti, deterministlikku simulatsiooni või ehitust, mis peaks käituma ühtemoodi pärast serverist serva liigutamist. Järsku lakkavad üksikasjad olemast akadeemilised. Neist saab koosolek.
Numerus valib teistsuguse tee töökoormuste jaoks, kus korratavus on olulisem kui teesklus, et iga tehe on väike ilmastikusüsteem. Täisarvupõhine aritmeetika muudab esituse selgesõnaliseks. Fikseeritud punkti formaadid määravad, kus koma asub. Kümnendperekonnad käsitlevad väärtusi, kus täpsed kohad on olulised. Dweve AXIOM võimaldab kohandada eksponendi kuju väärtuse kaupa, andmata kontrolli tagasi läbipaistmatule ujukomakeskkonnale. Asi ei ole ühes numbrilises vormis igavesti. Asi on vormi valimises, millel on leping.
See on oluline, sest tootesüsteemid ei ainult arvuta. Nad mäletavad. Nad taasesitavad. Nad võrdlevad. Nad selgitavad. Kui sama arvutus annab erinevaid tulemusi erinevatel toetatud pindadel, saab see erinevus osaks tootest, olenemata sellest, kas keegi seda plaanis või mitte.
Üks numbriline teek on tegelikult mitu lubadust
Numbriline alus ei ole üks asi. See on lubaduste kogum erinevate sihtrühmade jaoks. Manussüsteemide insener hoolib sellest, et piiratud ressurssidega sihtmärgid saaksid käitada asjakohaseid täisarvupõhiseid profiile ilma mugavat serveriruntime'i kaasa tassimata. Simulatsiooniinsener hoolib sellest, et taasesitus suudab oleku reprodutseerida. Auditiekspert hoolib sellest, et vastuse teed saab selgitada. Tooteomanik hoolib sellest, et asi ei käituks närvilise kalkulaatorina, kui seda ühest keskkonnast teise liigutatakse.
Avalik Numeruse leht toob esile perekonnad, mille kohta kõige rohkem küsitakse: Q-formaadi fikseeritud punkt, Decimal ja AXIOM. Koodibaas on laiem. common/numeric kannab binaarseid XNOR- ja POPCNT-vorme, kolmeväärtuslikke väärtusi, natiivseid ja alambaidiseid täisarve, fikseeritud punkti aliaseid, väikeseid ujukomavorme ja kohanduvat AXIOMi. Numeruse fassaad lisab seejärel tootepoolse kümnend- ja aritmeetikapinna selle aluse ümber. See jaotus on oluline, sest see väldib võltsi elegantsi, kus iga number surutakse ühte kostüümi.
See on väga Euroopa laadi inseneritöö parimas mõttes. Vähem draamat, rohkem lepingut. Arvutus peaks ütlema, mis ta on. Vahemik peaks olema teada. Kümnendkäitumine peaks olema selgesõnaline. Sihtmärgi piiranguid tuleks austada. Tulemus peaks olema reprodutseeritav. Keegi ei vaja selleks põhiettekannet. Nad vajavad, et see töötaks.
AXIOM väärib oma artiklit, sest see ei ole lihtsalt veel üks alias nimekirjas. See on Dweve kohanduv muutuva punkti perekond: märk, eksponendi indeks ja mantiss pakitud kompaktsesse esitusse, kusjuures eksponendiloendid on valitud üldiste, tihedate, peeneteraliste või närvivõrgu kujuga andmete jaoks. See postitus paigutab selle ainult Numeruse kaardile. Sügavam lugu on see, kuidas kohanduv eksponendivalik annab muutuvatele suurusjärkudele rohkem ruumi, ilma et aritmeetika muutuks taas mittedeterministlikuks.
See hoiab ära ka üle lubamise. Numerus ei muuda iga numbrilist probleemi lihtsaks. See ei eemalda vajadust valida skaalasid, vahemikke, ümardamiskäitumist, eksponendiloendeid, mantissi laiusi või kontrollivaldkondi. Nii fikseeritud kui ka muutuva punkti aritmeetikat saab suure entusiasmiga valesti kasutada. Väärtus on selles, et väärkasutus muutub nähtavamaks. Selgesõnaline numbriline leping annab sulle midagi üle vaadata. Varjatud ujukoma-eeldus annab sulle tootmises väikese kummituse.
Kontrollimine ei ole märk
Iga numbriline teek õpib lõpuks, et sõnad nagu õige ja täpne on odavad, kuni need on kinnitatud testrakistuse külge. Õige kus? Täpne mille suhtes? Millise sisendvaldkonna ulatuses? Millise ümardamiskäitumisega? Millises väljaandes? Milliste testide all?
Numeruse materjal seab kontrollimise esiplaanile: täisarvuline CORDIC transtsendentsete funktsioonide jaoks, võrdlus kõrge täpsusega MPFR-oraakliga, omadustestid ja väljalaskekontrollid. Täpne väide on tähenduslik ainult siis, kui see on seotud selle masinavärgiga. Märk, mis ütleb täpne, on kaunistus. Testrakistus, mis võrdleb, vähendab ja ebaõnnestub, on inseneritöö.
See eristus on oluline, sest numbrilised vead peidavad end sageli äärtes. Domeeni keskosa käitub hästi. Demo käitub hästi. Tavalised väärtused käituvad hästi. Siis saabub piirväärtus, käes mapp. Negatiivsed sisendid, nullilähedased väärtused, ületäitumise piirid, skaala üleminekud, ümardamise viigid, eksponendiloendi piirid ja korduvad tehted on kohad, kus numbrilised teegid kas teenivad usalduse või hakkavad väljamõeldisi kirjutama.
Omadustestimine on kasulik, sest inimesed on halvad ette kujutama kõiki viise, kuidas arv tülikas olla saab. Kõrge täpsusega oraakel on kasulik, sest teostus vajab viidet, mis pole iseenda koopia. Väljalaskekontrollid on kasulikud, sest eelmise kuu kinnitatud väide pole selle kuu garantii. Tarkvara ei püsi õigena viisakusest.
Determinism kuulub arhitektuuri, mitte joonealusesse märkusse
On ahvatlev käsitleda deterministlikku aritmeetikat madala taseme teegi detailina. Just seal paljud meeskonnad selle kaotavad. Selleks ajaks, kui toode vajab taasesitust, on numbrilised eeldused juba laiali teenuste, märkmike, manussüsteemide, mudelitööriistade ja integratsioonitestide vahel. Siis saab determinismist järeltugevdus. Järeltugevdused on kohad, kus eelarved iseloomu arendavad.
Õige hetk numbrilise hoiaku otsustamiseks on varajane. Kas see töökoormus vajab bitistabiilset taasesitust? Kas see liigub üle masinate? Kas see liigub üle arhitektuuride? Kas see toetab reguleeritud otsust? Kas see toidab simulatsiooni? Kas sellest saab treeningandmed, inferentsi sisend, mudeli tihendamise väljund või digitaalse kaksiku olek? Kui jah, siis on aritmeetika arhitektuuriline.
Numerus sobib FMI ja Twin kõrvale just sel põhjusel. FMI hoolib deterministlikest simulatsioonituumadest ja mudelivahetusest. Twin hoolib operatiivse või füüsilise oleku taasesitamisest ajas. Ledger salvestab operatiivsed sündmused. Trace kannab taasesitatavaid arvutustõendeid. Need kihid muutuvad rahulikumaks alles siis, kui nende all olev numbriline kiht ei triivi nagu ostukorv ühe katkise rattaga.
AI-süsteemides muutub see veelgi konkreetsemaks. Kvantimine, skoorimine, järjestamine, simulatsioon, piirangud, kalibreerimine, tihendamine ja taasesitus kasutavad kõik numbreid. Kui need numbrid käituvad erinevates keskkondades erinevalt, ei pruugi mudel olla süüdlane. See on lihtsalt kõige nähtavam kahtlusalune. Mugav, kuid mitte alati õige.
Väikesed masinad pole teise klassi kodanikud
Palju AI- ja simulatsiooniarhitektuuri eeldab vaikselt mugavat masinat. Tuleb server. Tuleb GPU. Tuleb piisavalt mälu. Tuleb pilveteenus. Tuleb arve, mis paneb kellegi välja mõtlema fraasi strateegiline investeering.
Päris süsteemid pole nii korras. Mõned arvutused peavad jooksma manussüsteemides. Mõned elavad servas. Mõned asuvad seadmetes ilma ujukomaüksuseta. Mõned vajavad no_std ühilduvust. Mõned peavad töötama edasi, kui võrk pole kutsutud. Kui numbriline alus käitub hästi ainult mugaval juhul, pole see alus. See on mööbel.
Täisarvupõhine aritmeetika aitab siin, sest see vähendab sõltuvust platvormispetsiifilisest ujukoma-käitumisest, kui töökoormus saab neid profiile kasutada. no_std-võimelised pinnad aitavad, sest mitte igas keskkonnas pole serveriprotsessi standardteegi mugavusi. Asi pole väiksemate masinate nostalgias. Asi on kontrollis selle üle, milline numbriline leping jõuab piiratud sihtkeskkondadeni.
See pole väiksemate masinate nostalgia. See on kontroll. Kui arvutus on osa tootest, ei tohiks toode usaldusväärsuse nimel nõuda kõige mugavamat keskkonda.
Igav näide on oluline
Kujutage ette annustamisarvutust, tariifiarvutust, simulatsioonisammu, taasesitatud anduri väärtust või mudeli tihendusläve. Ükski neist ei kõla glamuurselt. Hea. Glamuur on tavaliselt koht, kus algab käteviibutamine. Igavad näited on need, kus numbriline determinism oma väärtuse tõestab.
Kui tulemust kasutatakse üks kord ja unustatakse, ei pruugi väike kõrvalekalle oluline olla. Kui tulemus salvestatakse ja taasesitatakse, on see oluline. Kui seda võrreldakse erinevate keskkondade vahel, on see oluline. Kui see toidab hilisemat otsust, on see oluline. Kui klient, audiitor või insener saab küsida, miks see väärtus ilmus, on see kindlasti oluline. Sel hetkel pole arvutus enam sisemine rakendusdetail. See on osa loost, mida toode räägib.
Sellepärast pole Numerus lihtsalt matemaatikateek abstraktselt võttes. See on komponent tõendusarhitektuuris. See annab teistele süsteemidele rahulikuma numbrilise kihi, millel seista. Reed saab parssida lähtekoodi koos tõenditega. Ledger saab sündmusi salvestada. BitWeave saab muuta otsingu deterministlikuks. HEDL saab muuta struktureeritud andmed vähem raiskavaks. Numerus muudab aritmeetika vähem libedaks. Iga tükk eemaldab ühe koha, kus süsteem muidu õlgu kehitaks.
Õppetund
Numeruse õppetund on see, et numbrid on toote käitumine. Mitte ainult rakendusdetail. Mitte ainult matemaatika. Käitumine. Kui sama sisend võib toota erineva vastuse, kui see liigutatakse teise toetatud keskkonda, kuulub see erinevus nüüd tootele.
Deterministlik aritmeetika pole alati vajalik. Kui see on vajalik, tuleks see sisse kavandada, mitte hiljem välja paluda. Valige selged numbrilised perekonnad. Kontrollige oraakli vastu. Testige servi. Austage juurutamise piiranguid. Hoidke taasesitust meeles enne, kui esimene intsidentiraport muudab kõik järsku filosoofiliseks.
Numerus on kasulik, sest see muudab aritmeetika lepinguks, millele ülejäänud virn saab toetuda. Binaarne, kolmene, täisarv, fikseeritud, ujukoma, Decimal ja AXIOM pole loosungid. Need on viisid numbrite kujundamiseks nii, et sama vastus saab teadlikult kaks korda ilmuda. AXIOM saab oma sügavama loo, sest see on osa, kus mõte ise hakkab liikuma, samal ajal kui leping jääb deterministlikuks. See pole uhkeldav. See on parem kui uhkeldamine. See on selline igavus, mis laseb tõsistel süsteemidel öösel rahulikult magada.