Hermes — eigen AI-agentinfrastructuur
Een eigen AI-agentplatform over twee videokaarten, met systematisch getoetste modellen en een op doorvoer gemeten opstelling.
Beschrijving
Een zelf opgezet platform waarop AI-agents lokaal draaien op eigen hardware, gebouwd rond Hermes Agent van Nous Research. De opzet combineert een sterk model in de cloud als orkestrator met een vloot lokale modellen die het uitvoerende werk doen: de dure redenering gebeurt centraal, het werk zelf op eigen kaarten en dus zonder tokenkosten.
In één machine zitten twee ongelijke videokaarten — een RTX 4070 SUPER met 12 GB en een RTX 2060 met 6 GB — aangevuld met een Mac mini over het netwerk. Elke kaart draait zijn eigen model-instantie, hard vastgezet op die kaart. Dat vastzetten bleek minder triviaal dan het lijkt: een grafische backend stond standaard aan en negeerde de GPU-toewijzing volledig, waardoor een zogenaamd vastgezette instantie modellen alsnog op de verkeerde kaart laadde. Naast de twee gescheiden instanties draait er een derde die één groter model over beide kaarten tegelijk verdeelt via layer-splitting, waarvoor geen speciale hardware nodig is.
Voor elk model gebruikte ik dezelfde toets: laat het via zijn gereedschap een bestand schrijven met een uniek codewoord, en controleer daarna zelf op schijf of dat er echt staat. Die laatste stap is essentieel, want een model rapporteert met groot zelfvertrouwen succes zonder ook maar één keer zijn gereedschap te hebben aangeroepen. De uitkomsten waren regelmatig contra-intuïtief. Het grootste model dat expliciet als coder in de markt staat, bleek juist onbetrouwbaar en verzon voltooide taken. Een model dat als agent-first wordt aangeprezen slaagde op losse opdrachten, maar faalde volledig zodra een taak uit meerdere stappen bestond: het leverde een overtuigend verhaal met een zelfverzonnen testresultaat en een lege map. Het kleinste model in de verzameling was juist wél betrouwbaar. Groter is hier dus niet beter, en de enige manier om erachter te komen is meten.
Naast bruikbaarheid heb ik de opstelling doorgemeten met identieke prompts. De belangrijkste uitkomst: twee kaarten samen zijn alleen sneller wanneer het model daardoor volledig in videogeheugen past. Bij het model waarbij dat lukte steeg de doorvoer van ruim 20 naar ongeveer 73 tokens per seconde, meer dan drie keer zo snel. Een ander model werd door precies dezelfde ingreep juist langzamer, omdat het al goedkoop op de processor overliep en de synchronisatie tussen twee kaarten meer kostte dan het opleverde. Daaruit volgde de vuistregel voor de hele opzet: een model moet ruim in het geheugen van zijn kaart passen, anders draait het er niet.
Waar het platform tekortkwam heb ik het uitgebreid via het eigen pluginsysteem, zonder de kern aan te passen. Het ingebouwde delegeren kon maar één vast model aanroepen voor álle subtaken — een beperking die bij de makers zelf nog als openstaand punt bekend is — dus bouwde ik een uitbreiding die per taak kiest hoe zwaar het model moet zijn en op welke kaart het draait, met een automatische keuze op basis van hoe druk elke kaart is. Omdat meerdere agents tegelijk dezelfde kaart konden claimen en elkaars geheugen wegdrukten, kwam daar een slot omheen: een agent claimt eerst de kaarten die hij nodig heeft en wacht tot ze vrij zijn, zodat werk op verschillende kaarten wél parallel loopt.
Twee fouten daarin waren leerzaam. Een configuratiebestand bleek ongeldig doordat er een dubbele punt in een omschrijving stond, waardoor de uitbreiding helemaal niet meer laadde — terwijl het overzichtscommando vrolijk bleef melden dat alles was ingeschakeld, omdat dat commando enkel het bestand inleest en de code nooit uitvoert. En een zoekpatroon in dezelfde code liep op grote bestanden catastrofaal vast, waardoor een agent eenendertig minuten hing zonder enig teken van leven. Beide zijn gevonden door bewijs op schijf te forceren in plaats van op statusmeldingen te vertrouwen.
De opzet doet inmiddels echt werk. Via een takenbord met meerdere agents, elk met hun eigen model en kaart, is onder andere een volledige browsergame van de grond af opgebouwd. Daarnaast is er lokale beeldgeneratie aan gekoppeld met een zelfgebouwde uitbreiding, zodat ook dat zonder cloud en zonder kosten werkt.