Experimenten - AI, Rust, GPU etc.

Een aantal keer per jaar heb ik een idee waarvan ik denk: hier ga ik eens goed voor zitten en het uitwerken. Een daarvan was Katmai - Het virtuele kantoor, en dat was ook commercieel succesvol, maar dat is niet het doel. Het doel is er van te leren. Op deze pagina een greep van een aantal experimenten.

DawnSearch (2024) - Een gedecentraliseerde AI-zoekmachine in Rust

DawnSearch was een experiment op basis van een aantal ideeën:

  1. Google werkt slechter dan vroeger.
  2. De afhankelijkheid van een klein aantal grote zoekmachines is zorgelijk.
  3. Mogelijk kan AI hier iets toevoegen.
  4. Het zou mooi zijn om alles distributed te draaien.

Daarnaast wilde ik graag een wat groter project in Rust doen, om hier meer ervaring mee op te doen.

Uiteindelijk is dit proof of concept redelijk gelukt. Ik las de data in via het CommonCrawl project, met een eigen parser voor het bestandsformaat. Daarna berekende ik (via Candle) een embedding (met BERT) van de tekst, en die ging een vector database in. De applicatie zelf bestaat uit een crawler en een web UI (server side, puur in Rust). Ik had ambitieuze plannen voor de clustering, maar op dit moment zit er alleen discovery in en het forwarden van queries en responses naar andere nodes. Dit is allemaal wel zwaar geoptimaliseerd en gebruikt losse UDP packets.

Al met al een leerzaam project. Het heeft me duidelijk gemaakt dat Rust behoorlijk overkill is als je normale software wil maken. Het is zeker geschikt voor parsers etc. maar alles eromheen is zoveel lastiger dan met bijvoorbeeld Java of TypeScript. Geef mij maar gewoon Java.

De code is beschikbaar op GitHub (AGPLv3),

Evolueren op de GPU (2023) - Simulatie van leven en diversiteit

Dit experiment was tweeledig:

  1. Ik wilde graag op een interessante manier "leven" en evolutie simuleren.
  2. Ik wilde meer ervaring krijgen met het uitvoeren van berekeningen/simulaties op de GPU.

Dit experiment was een succes, in dat het is gelukt om met enorme performance een behoorlijk grid te simuleren, en dat de modellering van het "leven" best interessante gevolgen had. Het was wel duidelijk dat evolutie niet zo eenvoudig is, en dat er verschillende "eilanden" en omstandigheden nodig zijn om diversiteit te krijgen en niet in een lokaal optimum terecht te komen.

De code is op dit moment niet beschikbaar (maar stuur gerust een mail als je wil dat ik het op GitHub zet).