unxt: A Python package for unit-aware computing with JAX

Dit paper introduceert unxt, een Python-pakket dat JAX uitbreidt met unit-aware computing door het gebruik van quax en astropy.units voor naadloze integratie van fysische eenheden in hoogpresterende numerieke berekeningen.

Nathaniel Starkman, Adrian Price-Whelan, Jake Nibauer

Gepubliceerd Wed, 11 Ma
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je een superkrachtige robot hebt genaamd JAX. Deze robot is een wonder van snelheid en slimheid: hij kan enorme hoeveelheden data in een flits verwerken, zichzelf verbeteren terwijl hij werkt, en hij kan op elke soort computerchip (van gewone processors tot speciale grafische kaarten) razendsnel draaien. Hij is de Formule 1-auto van de wetenschappelijke berekeningen.

Maar er is een groot probleem: deze robot is een beetje een "eenheidloze" denker. Als je hem vraagt om 5 te vermenigvuldigen met 3, doet hij dat perfect. Maar als je zegt "5 kilometer" en "3 uur", en vraagt om de snelheid te berekenen, raakt hij in de war. Hij ziet alleen de getallen, niet de eenheden. In de echte wereld is dat gevaarlijk. Denk aan de Mars Climate Orbiter: een ruimtevaartuig dat in de atmosfeer van Mars uit elkaar viel omdat één team in meters werkte en het andere in voet. Een simpele eenheidsfout leidde tot een ramp van honderden miljoenen dollars.

Hier komt unxt in het spel.

Wat is unxt eigenlijk?

Je kunt unxt zien als een slimme vertaler en veiligheidsbril die je op de bril van de JAX-robot zet.

  1. De Vertaler (De Bril):
    Normaal gesproken ziet JAX alleen pure getallen. Unxt zorgt ervoor dat JAX ook "eenheden" kan zien. Het vertaalt begrippen als "kilogram", "meter" of "seconde" naar een taal die JAX begrijpt. Hierdoor weet de robot dat je niet zomaar appels met peren kunt optellen, en dat je 5 kilometer niet kunt delen door 3 seconden zonder dat het resultaat in "kilometer per seconde" uitkomt.

  2. De Veiligheidsbril:
    Het zorgt ervoor dat je nooit per ongeluk een verkeerde berekening maakt. Als je probeert een snelheid op te tellen bij een temperatuur, schreeuwt de robot: "Hé, dat kan niet! Dat is alsof je probeert een auto op te tellen bij een bakje ijs!" Dit voorkomt die soort fouten die ruimtevaartuigen kunnen laten crashen.

Hoe werkt het precies? (De Bouwstenen)

De auteurs van het artikel hebben unxt niet helemaal vanaf nul gebouwd. Ze hebben gebruikgemaakt van twee andere slimme hulpmiddelen:

  • Quax: Dit is als een bouwset voor speciale blokken. Normaal gesproken werkt JAX alleen met standaard blokken (gewone getallen). Quax laat je speciale blokken maken die je toch in de JAX-machine kunt stoppen.
  • Astropy.units: Dit is de grote bibliotheek van eenheden. Het is een alomtegenwoordig hulpmiddel in de wetenschap dat precies weet hoe eenheden werken. Unxt gebruikt deze bibliotheek als zijn "geheugen" voor wat eenheden zijn.

Unxt is dus de meesterbouwer die Quax en Astropy met elkaar verbindt. Hij neemt de slimme eenheden van Astropy, verpakt ze in de speciale blokken van Quax, en zorgt dat ze perfect samenwerken met de razendsnelle motor van JAX.

Waarom is dit zo belangrijk?

Vroeger was er een keuze:

  • Of je was snel (gebruikte JAX), maar moest oppassen dat je geen eenheidsfouten maakte.
  • Of je was veilig (gebruikte Astropy met eenheden), maar je berekeningen waren trager en minder flexibel.

Met unxt krijg je het beste van beide werelden. Het is alsof je een Formule 1-auto krijgt die ook nog eens een onfeilbare navigator heeft die je nooit laat vastrijden in de verkeerde eenheid.

Voor wie is dit?

Dit is een hulpmiddel voor wetenschappers en programmeurs die met complexe natuurkundige berekeningen werken. Of je nu de baan van een planeet berekent, de temperatuur van een ster simuleert, of de kracht van een raket analyseert: unxt zorgt ervoor dat je code niet alleen supersnel is, maar ook logisch correct.

Kortom: unxt maakt het voor de slimste rekenmachine ter wereld (JAX) mogelijk om net zo zorgvuldig te zijn als een ervaren natuurkundige, zodat we in de toekomst minder ruimtevaartuigen hoeven te verliezen en meer ontdekkingen kunnen doen.