AXIOM a bod, ktorý sa hýbe

Dweve AXIOM: pevná rádová čiarka dáva disciplínu, ale jedna škála môže plytvať presnosťou.

AXIOM a bod, ktorý sa hýbe

Bod sa posunul, zmluva nie

Pevná rádová čiarka je príťažlivá, pretože je úprimná. Zvolíte si mierku, poviete, kde čiarka žije, a stroj prestane predstierať, že každé číslo je malá predpoveď počasia. Vďaka tomu je prehrávanie pokojnejšie, vstavané ciele sa ľahšie analyzujú a audity sú menej závislé od fráz ako „takmer presne“. Krásne. A tiež neúplné.

Jedna pevná mierka môže byť príliš hrubá. Ak zvolíte mierku, ktorá zvládne veľmi malé hodnoty, väčšie hodnoty sa nezmestia. Ak zvolíte mierku pre väčšie hodnoty, malé hodnoty stratia užitočné detaily. Môžete si prácu rozdeliť medzi niekoľko typov, ale potom má kódová základňa iný druh neporiadku. Gratulujeme, desatinná čiarka je teraz personálny problém.

AXIOM existuje pre prípady, keď sa čiarka musí posunúť bez toho, aby sa číselná vrstva zmenila späť na plávajúcu kašu. V kódovej základni Dweve ide o adaptívnu rodinu s premennou čiarkou: každá konkrétna hodnota nesie znamienko, index v zozname exponentov a mantisu v kompaktnej 32-bitovej reprezentácii. Exponent nie je nálada hardvéru. Vyberá sa z explicitného zoznamu. Mantisa je celočíselná hodnota. Reprezentovaná hodnota je znamienko krát mantisa krát dva na mínus vybraný exponent. Tá veta nie je roztomilá, ale je v nej celý trik.

Dôležité nie je, že sa čiarka hýbe. Plávajúca čiarka už čiarku hýbe. Dôležité je, že AXIOM ju hýbe cez deklarovaný zoznam, ktorý možno kontrolovať, testovať, špecializovať a udržiavať deterministický. Kód nežiada platformu, aby improvizovala číselnú osobnosť. Dáva hodnote kompaktnú zmluvu a po každej operácii prinúti aritmetiku vrátiť sa k tejto zmluve.

AXIOM nie je magická desatinná čiarka. Konkrétna hodnota je zabalené slovo so znamienkom, voľbou exponentu a mantisou. Užitočná disciplína spočíva v tom, že každá časť má svoju úlohu.

V zdrojovom kóde má konkrétny tvar podobu Axiom<M, E>. Šírka mantisy musí zodpovedať reprezentácii, s praktickými aliasmi ako Adp4, Adp8, Adp16, Adp23, AdpNN4 a AdpNN8. Tieto názvy nie sú ozdoby. Hovoria vám, koľko dát a aký profil exponentov má hodnota používať. Hodnota so zoznamom exponentov v tvare NN nie je rovnaký sľub ako hodnota so širším všeobecným zoznamom. Zaobchádzať s nimi rovnako, pretože obe vyzerajú numericky, je spôsob, akým sa vo vážnych kódových základniach začínajú hromadiť mýty.

Premenná čiarka nie sú dojmy

Fráza adaptívna premenná čiarka môže znieť, ako keby niekto premenoval plávajúcu čiarku, aby presadil nákup na porade. To sa nedeje. AXIOM nerobí z exponentu neviditeľný vedľajší efekt. Exponent sa vyberá zo zoznamu pripojeného k typu alebo stratégii. V súčasnom zdrojovom kóde zahŕňajú konkrétne zoznamy exponentov štandardný [16, 8, 4, 0], hustý [12, 8, 4, 0], váhy neurónových sietí [8, 6, 4, 0] a jemný zoznam [16, 14, 12, 10, 8, 6, 4, 0]. Toto sú aktuálne hodnoty zdrojového kódu a tento rozdiel je dôležitý, pretože zdrojový kód sa v priebehu času menil; súčasné tvrdenia by mali nasledovať súčasný kód, nie zastarané zoznamy exponentov.

Zoznam je produktové rozhodnutie. Štandardný zoznam ponúka niekoľko širokých pásiem. Hustý zoznam mení umiestnenie pásiem. Zoznam NN je tvarovaný pre dáta podobné váham. Jemný zoznam ponúka viac blízkych možností. Nič z toho neodstraňuje úsudok. Presúva úsudok na miesto, kde ho môže vidieť kontrola kódu.

To je rozdiel medzi riadenou adaptívnou reprezentáciou a všeobecnou výhovorkou. Pevný typ hovorí, že každá hodnota tu používa túto škálu. AXIOM hovorí, že každá hodnota tu vyberá z tejto deklarovanej množiny škál. To je širšia zmluva, nie chýbajúca. Bod sa pohybuje, ale pohybuje sa po koľajniciach. Veľmi holandské, naozaj. Dokonca aj desatinná čiarka má infraštruktúru.

Pevný bod dáva jednu rovnomernú mriežku. AXIOM dáva deklarovanú množinu exponentových pásiem. Táto voľba navyše je užitočná len preto, že zostáva explicitná.

Stojí za to byť presný v tom, čo AXIOM nie je. Nie je to presná racionálna aritmetika. Nie je to povolenie ignorovať analýzu rozsahu. Nie je to benchmarkové tvrdenie. Nie je to záruka, že vybraný zoznam exponentov sedí na vašu záťaž, pretože skratka vyzerala energicky. Stále musíte rozumieť hodnotám, dynamickému rozsahu, prijateľnej chybe, cieľovému nasadeniu a požiadavkám na prehrávanie. AXIOM robí tieto voľby lepšie kontrolovateľnými. Nerobí ich neviditeľnými. Ak niečo, sťažuje skrývanie lenivého numerického myslenia, a tam zvyčajne začína krik.

Aritmetika sa musí vrátiť domov

Číselný formát sa ľahko kreslí a ťažšie robí užitočným. Užitočná časť je aritmetika. Sčítanie a odčítanie sa musia vysporiadať s hodnotami, ktoré môžu sedieť na rôznych exponentových pásmach. Násobenie a delenie musia robiť širšiu prácu s celočíselnou mantisou predtým, než vrátia výsledok do cieľového tvaru. Po operácii sa hodnota musí normalizovať späť do dostupnej voľby exponentu. Tento posledný krok je dôležitý, pretože reprezentácia, ktorá sa nevie vrátiť domov, je len dovolenka v zahraničí s lepším brandingom.

AXIOM aritmetika má preto rytmus. Prines zabalené hodnoty. Zarovnaj alebo rozšír podľa potreby. Vykonaj operáciu orientovanú na celé čísla. Normalizuj. Ulož výsledok späť do deklarovaného tvaru. Ak sa nezmestí, malo by to byť viditeľné ako problém reprezentácie, nie ticho delegované na náladu stroja. Zmluva je užitočná, pretože má hrany.

To je aj dôvod, prečo na tom záleží Numerus. Širší stack sa nesnaží zbierať číselné formáty ako známky. Chce aritmetiku, ktorá prežije prehrávanie, embedded nasadenie, simuláciu, kompresiu modelov, testy a audítorské stopy. AXIOM je jedna rodina v tomto príbehu. Rieši konkrétny problém: hodnoty, ktorých užitočná škála sa mení, ale ktorých správanie musí byť stále deterministické.

Operácia nie je hotová, keď sa mantisy dotkli. Výsledok sa musí vrátiť do deklarovaného tvaru AXIOM, inak reprezentácia prestala byť zmluvou.

To je tá nudná veta, ktorá neskôr zachráni tímy: normalizuj späť do tvaru. Znie to ako implementačný detail, kým sa prehrávanie nelíši, prah nepreklopí alebo komprimovaný model nespráva inak na menšom cieli. Potom sa z nej stane veta, ktorú by si každý prial mať v architektonickom dokumente.

Prečo AXIOM sedí pod Numerus

Verejný príbeh Numerus je zámerne jednoduchší ako zdrojový strom. Väčšina čitateľov chce vedieť, či numerická vrstva dokáže poskytnúť deterministickú aritmetiku, rodiny pevných bodov, desatinné správanie, no_std postoj, celočíselné embedded profily, verifikáciu a rovnakú odpoveď dvakrát. Nepotrebujú každý interný typ na prvej strane. To nie je tajnostkárstvo. To je milosrdenstvo.

Pod nimi je bežná numerická vrstva širšia. Nesie binárne, ternárne, natívne a sub-bajtové celočíselné typy, aliasy s pevnou rádovou čiarkou, typy súvisiace s pohyblivou rádovou čiarkou na kompatibilné práce a adaptívny AXIOM. Zdieľané vlastnosti dávajú týmto rodinám spoločný povrch. Numerus potom obaľuje časti, ktoré by mali byť orientované na produkt: binárnu a desatinnú pevnú rádovú čiarku, AXIOM, celé čísla, operácie, povrchy DSL a overovací postoj. Toto oddelenie je zdravé. Základ môže byť široký bez toho, aby verejná stránka vyzerala ako jedálny lístok z reštaurácie, ktorá stratila sebavedomie.

AXIOM si zaslúži vlastný článok, pretože nie je len ďalšou položkou v tomto zozname. Pevná rádová čiarka je o umiestnení rádovej čiarky na jedno miesto. Desatinná pevná rádová čiarka je o presných desatinných miestach. Binárne a ternárne formy sú o kompaktných nízkobitových cestách. AXIOM je o tom, aby bola rádová čiarka riadenou súčasťou hodnoty. To mení spôsob, akým premýšľate o reprezentácii, aritmetike, testoch a nasadení.

Mení to aj to, ako by mali byť ohraničené verejné tvrdenia. Výkon AXIOM patrí aktuálnym benchmarkom na aktuálnom kóde, nie zdedenej tradícii. Širší zásobník by sa nemal opisovať ako nula operácií s pohyblivou rádovou čiarkou, pretože konverzné a zobrazovacie povrchy môžu túto hranicu prekročiť. Bezpečnejšie a presnejšie tvrdenie je, že základná pevná a adaptívna aritmetika je orientovaná na celé čísla a navrhnutá na deterministické správanie. Táto veta je menej efektná. Dobre. Efektné numerické tvrdenia sú spôsob, akým sa z informačných panelov stávajú generátory ospravedlnení.

Niekoľko výpočtových ciest, jedna rodina

Konkrétna zabalená hodnota je len začiatok. Zdroj obsahuje viac ako jeden spôsob použitia AXIOM, pretože pracovné záťaže nie sú dosť zdvorilé na to, aby sa zmestili do jedného rozloženia navždy. Existuje zabalená konkrétna cesta pre zoznamy exponentov v čase kompilácie. Existuje Flex<S> pre ukladanie exponentov za behu cez veľkosti celočíselného úložiska. Existujú tenzorové a blokové formy, kde môže byť užitočná zdieľaná štruktúra exponentov. Existuje stratifikované spracovanie. Existuje APoT, kde môžu byť hodnoty reprezentované ako súčty znamienkových mocnín dvojky, takže násobenie sa môže stať posunmi a sčítaniami. Okolo toho existuje výskumný kód na profilovanie a naučené exponenty.

Toto rozšírenie nie je dôvod na divoké tvrdenia. Je to dôvod byť opatrný pri pracovnej záťaži. Cesta skalárneho prehrávania, cesta dávkovej kvantizácie, cesta podobná tenzoru a cesta váh APoT majú rôzne tlaky. Rozloženie pamäte, opätovné použitie exponentov, rozsah, normalizácia a tvar hardvéru všetko záleží. AXIOM dáva slovník pre tieto voľby. Nezbavuje nikoho povinnosti ich urobiť.

AXIOM je rodina výpočtových ciest. Zabalené hodnoty, flexibilné ukladanie exponentov, tenzorové alebo blokové rozloženia a cesty posunu a sčítania APoT sú rôzne nástroje, nie jedna marketingová snímka.

Tu sa inžinierstvo stáva zaujímavým. APoT nie je len roztomilý kompresný trik. Pre vhodné hodnoty mení násobenie na problém posunu a sčítania. Tenzorové a blokové cesty môžu zdieľať štruktúru exponentov, keď má pracovná záťaž dostatok tvaru. Flex udržiava ukladanie exponentov za behu dostupné, keď sú zoznamy na úrovni typov príliš rigidné. Žiadna z týchto možností by sa nemala vybrať preto, že diagram vyzeral pekne. Pracovná záťaž si vyberie, alebo si neskôr vyberie hlásenie o chybe a bude oveľa menej očarujúce.

Ako posúdiť voľbu AXIOM

Prvá kontrolná otázka je nudná, a preto užitočná: prečo nie jednoduchší číselný typ? Ak je hodnota peniaz alebo regulovaná desatinná suma, správnou odpoveďou môže byť typ Decimal. Ak je rozsah malý a dobre ohraničený, pokojnejší môže byť typ s pevnou rádovou čiarkou vo formáte Q. Ak číslo existuje len pre spoluprácu s formátom súboru alebo externým API, typ odvodený od floatu môže byť poctivým okrajovým adaptérom. AXIOM si svoje miesto zaslúži vtedy, keď má pracovná záťaž meniacu sa veľkosť, stále potrebuje deterministickú zmluvu a ťaží z explicitnej množiny exponentov.

Druhá otázka znie, či zoznam exponentov opisuje dáta, alebo len lichotí inžinierovi. Zoznam so štyrmi širokými pásmami je iný kompromis ako jemný zoznam s ôsmimi položkami. Zoznam v tvare NN nie je ozdobný štítok. Hovorí, že hodnoty sa majú správať ako dáta typu váh. Ak rozdelenie nezodpovedá zoznamu, reprezentácia bude aj tak fungovať. Softvér je často ochotný robiť nesprávnu vec pôsobivou rýchlosťou. To z toho ešte nerobí dizajn.

Tretia otázka sa týka toho, kde sa objavuje normalizačný tlak. Sčítanie medzi vzdialenými exponentnými pásmami môže zahodiť detaily. Násobenie môže vytvoriť výsledok, ktorý potrebuje iné pásmo. Opakované operácie môžu hromadiť tlak presne na miestach, ktoré ukážka nenavštívila. Kontrola by mala žiadať hraničné testy okolo nuly, zmeny znamienka, prechody exponentov, veľké mantisy a opakované operácie. Ak tieto prípady pôsobia otravne, dobre. Pravdepodobne sú to práve prípady, na ktorých záleží.

Posledná otázka je, ako reprezentácia zanecháva dôkazy. Ktorý typový alias sme zvolili? Ktorý zoznam exponentov? Ktorú šírku mantisy? Ktorú konverznú cestu? Ktorý orákulum alebo test vlastností podporuje toto tvrdenie? Ak je odpoveď roztrúsená po komentároch a optimizme, systém už stratil časť výhody. AXIOM je najužitočnejší vtedy, keď sa číselná voľba stane súčasťou architektonického záznamu, nie šikovným lokálnym trikom skrytým o tri moduly nižšie.

Overovanie poráža hrdinské čísla

Číselné formáty priťahujú hrdinské čísla. Menšie. Rýchlejšie. Efektívnejšie. Lepšie. Slová sú lacné a zvyčajne prichádzajú pred testovacím prostredím, čo je presne nesprávne poradie. Pre AXIOM je zodpovedným postojom považovať benchmarky za dôkaz pre každé vydanie, nie za mytológiu. Ak benchmark nebol znovu spustený na aktuálnom zdrojovom kóde, aktuálnom kompilátore, aktuálnych prepínačoch a aktuálnom hardvéri, nie je to verejné tvrdenie. Je to pohľadnica z minulého popoludnia.

Dôležitejšia je cesta overovania. Zostáva kódovanie a dekódovanie v rámci deklarovanej zmluvy? Normalizujú sa operácie do právneho tvaru? Správajú sa okrajové prípady okolo hraníc exponentov zámerne? Pokrývajú testy vlastností otravné hodnoty, na ktoré ľudia zabúdajú, pretože ľudia majú záľuby? Existuje orákulum s vysokou presnosťou tam, kde má porovnanie zmysel? Dokáže prehrávanie znovu vytvoriť rovnakú cestu hodnôt?

Táto posledná otázka je dôvod, prečo to patrí do nášho zásobníka. Dweve sa neustále posúva k systémom, kde výpočet zanecháva dôkazy: analyzátory s potvrdenkami, účtovné knihy s typovanými udalosťami, vyhľadávanie s deterministickými cestami, dátové formáty, ktoré nevláčia vozík opakovaných kľúčov, simulačné a numerické vrstvy, ktoré sa dajú prehrať. AXIOM sem patrí, pretože posunutie bodu by nemalo znamenať stratu potvrdenky.

Ponaučenie

Ponaučenie z AXIOM nie je, že pevná rádová čiarka bola chyba. Pevná rádová čiarka je stále jeden z najčistejších nástrojov, aké máme. Ponaučenie je, že jedna pevná mierka niekedy nestačí a alternatíva nemusí byť nepriehľadné správanie pohyblivej rádovej čiarky. Hodnota môže niesť riadenú voľbu exponentu. Bod sa môže pohybovať, zatiaľ čo zmluva zostáva viditeľná.

To je ten verejný príbeh, ktorý sa oplatí rozprávať. Dweve AXIOM balí znamienko, exponentový index a mantisu. Vyberá z explicitných zoznamov exponentov. Používa aritmetiku zameranú na celé čísla a normalizuje výsledky späť do deklarovaných tvarov. V kódovej základni má konkrétne, flexibilné, tenzorové, blokové, stratifikované, APoT a výskumné cesty. Patrí pod Numerus, pretože deterministická aritmetika nie je vedľajšia úloha. Je súčasťou toho, ako vážne systémy dospejú k rovnakej odpovedi dvakrát.

Pointa sa posúva. Zodpovednosť nie. To je tá užitočná časť.