Selvedge ja toteutus kuitteineen
Hiekkalaatikko ei ole todistaja
Epäluotettavan koodin suorittaminen on yksi niistä ideoista, jotka kuulostavat hyvältä kokouksessa, koska kukaan ei ole vielä piirtänyt ongelmaraporttia. Anna agentin kutsua työkalua. Anna lisäosan muuntaa tiedosto. Anna kumppanimoduulin käsitellä dataa. Laita se hiekkalaatikkoon. Ihanaa. Koodi ei pääse karkuun. Kaikki nyökkäävät. Sitten auditoija kysyy, mitä koodi oikeasti teki hiekkalaatikon sisällä, ja yhtäkkiä huoneessa huomataan, että eristäminen ei ole sama asia kuin todisteet.
Hiekkalaatikko vastaa yhteen kysymykseen: pysyikö työkuorma rajojen sisällä? Se on välttämätöntä. Se ei riitä. Vaikeampi kysymys on, mitä suorituksen aikana tapahtui. Mikä artefakti suoritettiin? Mitä käytäntöä sovellettiin? Mitä ominaisuuksia pyydettiin? Mitkä isäntäkutsut sallittiin tai evättiin? Kuinka paljon polttoainetta, muistia ja aikaa se käytti? Mitä tuli ulos? Voidaanko suoritus toistaa luottamatta alkuperäiseen koneeseen? Jos vastaukset elävät lokeissa ja luottamuksessa, järjestelmällä on asu, ei auditointipolku.
Selvedge on olemassa tätä aukkoa varten. Sivu kutsuu sitä suorituksen transkriptiokerrokseksi epäluotettavalle koodille: AION todistaa päättelyn, Ledger tallentaa järjestelmätapahtumat ja Selvedge tallentaa suorituksen. Toteutus noudattaa tätä muotoa. Työtila on Rust 2024 -projekti, jossa on crateja ydintiivisteille ja resurssirajoituksille, suoritusmoottoreille, Wasmtime- ja Kera-taustajärjestelmille, determinismille, WASI- ja Kera-isännille, käytännöille, AION-verifioinnille, CLI:lle, MCP:lle, rekisterille, suorittimelle, taustapalvelulle, auditoinnille ja vieras-SDK-pinnoille. Julkinen lupaus on tarkoituksella yksinkertainen: Selvedge suorittaa epäluotettavaa koodia deterministisen suorituksen, käytäntöjen valvonnan ja verifiointikurin alla.
Hyödyllinen ero on pieni ja karu. Hiekkalaatikko sanoo, että koodi ei poistunut. Selvedge on suunniteltu sanomaan, mitä koodi teki.
Transkriptio ei ole loki
Lokit ovat hyödyllisiä ihmisille, jotka jo etsivät vikaa. Ne ovat vähemmän hyödyllisiä, kun kysymys on siitä, voidaanko suoritus myöhemmin varmentaa sellaisen toimesta, joka ei luottanut alkuperäiseen isäntään. Lokirivi voi puuttua, järjestyä uudelleen, suodattua, katketa, muotoilla uudelleen tai selittyä pois. Transkription on oltava osa suoritussopimusta.
Selvedge-ydin määrittelee SHA3-256-tiivisteet, virhetyypit, polkuvalidoinnin, todennustokenit ja jaetut resurssirajoitukset. README kuvaa transkriptioita, joissa on tiivisteet tavukoodista, asetuksista, stdoutista, stderristä, tulosteesta, muistista ja globaaleista, sekä polttoaineenkulutuksen ja isäntäkutsujen määrät. Sivu kuvaa, että jokainen isäntäkutsu tiivistetään SHA3-256-ketjuun ja tulos kääritään AION-tyyliseen todistekuoreen Ed25519-sinetöinnillä. Se on ero järjestelmän, joka sanoo luota minuun, ja järjestelmän, joka sanoo tässä on paketti, välillä.
Tuossa suunnittelussa on tervettä annos vainoharhaisuutta. Artefaktitiiviste nimeää koodin. Asetustiiviste nimeää deterministisen profiilin. Transkriptio nimeää sen, mikä ylitti isäntärajan. Allekirjoitettu kuori tekee peukaloinnin näkyväksi. Offline-verifiointi tarkoittaa, että alkuperäinen suoritusympäristö ei ole ainoa todistaja. Tämä on osa, jonka monet hiekkalaatikkotarinat ohittavat, koska se on vähemmän hauskaa kuin lisäosan näyttäminen demossa. Demot kysyvät harvoin, kuka muokkasi auditointilokia. Auditoijat kysyvät.
Oletusarvoinen kieltäytyminen tarvitsee myös kuittaukset
Oletusarvoinen kieltäminen on hyvä asenne ja kauhea iskulause, jos se jää vain kalvoon. Selvedge-politiikka antaa iskulauseelle hampaat. Politiikkapaketti määrittelee WASM-ominaisuudet, kuten kellon, satunnaisuuden, tiedostojärjestelmän, verkon, ympäristön, stdio:n, prosessin ja mukautetut ominaisuudet. Se kantaa resurssirajoja muistille, tiedostokoolle, käskyjen määrälle ja ajalle. Se vahvistaa invariantit, hylkää päällekkäiset ominaisuudet, tarjoaa jäsennellyt virheet ja kartoittaa virheet yhteiseen Dweve-vikasanastoon. Suoritin soveltaa resurssirajat suorituskonfiguraatioon ennen työkuorman käynnistymistä.
Se tarkoittaa, että politiikka ei ole kyselylomake, johon vastataan suorituksen jälkeen. Se on syöte suoritukselle. Jos työkuorma pyytää aikaa, satunnaisuutta, tiedostojärjestelmää, verkkoa, ympäristöä tai prosessipääsyä, pyynnön on läpäistävä politiikka. Jos se kuluttaa liikaa polttoainetta, muistia tai seinäkelloaikaa, suoritus päättyy hallittuun epäonnistumiseen. Jos politiikka on epäjohdonmukainen, sen pitäisi epäonnistua ennen kuin artefakti alkaa tehdä mitään kiinnostavaa. Hyvin tylsää. Hyvin hyödyllistä. Tylsyydellä pidämme viikonloput.
Tärkeä seikka on, että politiikkapäätökset eivät ole erillään todisteista. Hiekkalaatikko voi sallia tai kieltää laajan kategorian ja jättää silti auditointijäljen ohueksi. Selvedge on rakennettu ajatuksen ympärille, että jokainen porttipäätös ja resurssilukema kuuluu suorituksen tarinaan. Se tekee siitä hyödyllisen agenttityökaluille, kolmannen osapuolen lisäosien suoritukselle, Kera-päätelmille, säännellyille työkuormille ja kumppanikoodille. Työ voi olla luottamatonta. Todisteiden ei pitäisi olla.
Determinismi on siellä, missä isäntä lopettaa improvisoinnin
Toiston lupaaminen on helppoa, mutta sen pitäminen on vaikeaa. Isännällä on kello. Isännällä on satunnaisuutta. Liukulukujen NaN-käyttäytyminen voi olla hankalaa. SIMD voi erota arkkitehtuurien välillä. Tiedostojärjestelmät, ympäristömuuttujat ja prosessitila ovat erinomaisia tapoja salakuljettaa epädeterminismiä paikkoihin, joissa kukaan ei odottanut sitä. Jos haluat toiston, sinun on poistettava tai hallittava nämä lähteet ennen kuin niistä tulee tekosyitä.
Selvedge tekee deterministisestä suorituksesta oletuksen. README kuvaa virtuaalikellon, joka on kiinnitetty 2024-01-01-epookkiin, siemenetyn ChaCha20-satunnaisuuden, polttoainemittauksen, transkription tuottamisen ja NaN-kanonisointiin. Se myös sanoo, että SIMD-tunnistus on nopein mutta vain saman arkkitehtuurin sisällä, kun taas SIMD:n poistaminen käytöstä on täysin siirrettävä alustariippumaton reitti. Tämä viimeinen kohta on tärkeä, koska determinismi ei ole rukous. Se on konfiguraatio- ja arkkitehtuuripäätös, ja joskus rehellinen kompromissi on nopeus siirrettävyyden puolesta.
Suoritin käyttää oletuksena Wasmtime-taustajärjestelmää deterministinen suoritus käytössä. Kera on toinen taustajärjestelmä, joka on suunnattu Graph IR- ja binääriseen neuroverkko-työkuormiin. Tämä jako on järkevä. WASM on yleinen luottamaton komponenttipolku. Kera on tekoälygraafipolku. Molemmat tarvitsevat saman ympäröivän kurin: politiikka ennen suoritusta, deterministiset asetukset, transkriptio suorituksen jälkeen ja todiste tuloksen ympärillä.
Miksi agentit tekevät tästä vähemmän valinnaista
Agenttijärjestelmät tekevät luottamattomasta suorituksesta jälleen muotia, ja tuon lauseen pitäisi saada jokainen tietoturva-ammattilainen hieman ryhdistäytymään. Malli pyytää työkalua. Liitännäinen suorittaa muunnoksen. Luotu apuskripti käsittelee dataa. Kumppanityökalu tulee MCP:n kautta. Malli ei kirjoittanut työkalua, työkalua ei välttämättä ole tarkastettu yhtä huolellisesti kuin tuotekoodia, ja käyttäjä odottaa silti, että järjestelmä selittää, mitä tapahtui. Onnea sen kanssa, jos ainoa vastaus on lokihakemisto ja tunnelma.
Selvedgellä on MCP-palvelinpinta agenttityökaluille, CLI build-, verify-, run- ja replay-tyylisiin työnkulkuihin, taustapalvelu pitkäkestoiselle suoritukselle, runner-poolitus ja välimuistin lämmitys, registry-asiakas- ja palvelin-cratet sekä vieras-SDK. Pointti ei ole, että jokainen pinta olisi sama. Pointti on, että todisteiden muodon pitäisi olla vertailukelpoinen. Riippumatta siitä, tuleeko työkuorma WASM-komponenttina, Kera-graafina, agenttityökaluna vai palvelutehtävänä, suorituksen pitäisi päättyä johonkin, jonka voit varmistaa.
Suorituskyky on kompromissi, ei loitsu
Selvedge-sivulla on vertailulukuja repositorion BENCHMARKS.md-tiedostosta: kylmäkäynnistys on suurin voitto, kuuma polku on vivahteikkaampi, Kera JIT:llä on lämmin graafitarina, ja vanha Wasmtime pitää edelleen hallussaan joitakin toistuvien kutsujen kuumia polkuja. Näin siitä pitää puhua. Suoritusaikatyö on täynnä kompromisseja. Jos komponenttimalli tuottaa transkriptin ja todistekuoren, sen kustannukset ovat erilaiset kuin minimipolun. Jos kylmäkäynnistys on kipukohtasi, tuo todistepolku voi auttaa. Jos työkuorma on tiukka toistuva kutsu ilman transkriptin yleiskustannusten tarvetta, vastaus voi olla erilainen. Hyvin hankalaa, todellisuus. Se kieltäytyy olemasta esite.
Artikkeliversio suorituskykytarinasta on siksi yksinkertainen: valitse suoritusympäristö työkuorman mukaan. Älä käytä todistekuorta taianomaisena nopeusrohtona. Käytä sitä, kun toistettavan todisteen puuttumisen kustannus on suurempi kuin yleiskustannus. Agenttityökaluissa, säännellyssä datankäsittelyssä, kolmannen osapuolen liitännäisissä ja suorituksessa, jossa myöhemmin ihminen kysyy, mitä tapahtui, tuo kustannus on usein todellinen.
Mitä tarkastella ennen käyttöä
Ensinnäkin päätä, tarvitsetko eristystä, todisteita vai molempia. Jos työkuorma on luotettu ja sisäinen, Selvedge voi olla enemmän koneistoa kuin tarvitaan. Jos työkuorma on luottamaton, kumppanin toimittama, mallin käynnistämä tai auditoinnin kohteena, transkripti alkaa ansaita paikkansa.
Toiseksi tarkastele käytäntöä. Mitkä ominaisuudet ovat sallittuja? Mitkä on kielletty? Mitkä ovat polttoaine-, muisti- ja aikarajat? Onko deterministinen tila pakollinen vai vain salliva? Ovatko tiedostojärjestelmän ja verkon pääsy riittävän kapeita? Onko käytäntö versioitu artefaktin kanssa? Jos käytäntö elää wikissä ja suoritus jossain muualla, suunnittelu on jo ajautumassa harhaan.
Kolmanneksi testaa toisto tuotekäyttäytymisenä. Älä odota auditointia selvittääksesi, varmistuuko kuori offline-tilassa. Aja sama artefakti, sama käytäntö ja samat syötteet kahdesti. Vertaa transkripteja. Kokeile kiellettyjä ominaisuuksia. Riko tarkistussumma. Vaihda siemen. Poista SIMD käytöstä, jos alustariippumaton identtisyys on tärkeää. Ärsyttävät testit ovat pointti.
Opetus
Selvedge ei ole kauniimpi hiekkalaatikko. Se on suorituksen todistekerros. Se ajaa WASM- ja Kera-artefakteja, lähtee oletuksena kieltävästä, rajoittaa resursseja, hallitsee deterministisiä syötteitä, tiivistää suorituksen transkripteiksi ja käärii tulokset todistekuoreen, joka voidaan tarkistaa myöhemmin. Se on erilainen lupaus kuin koodi pysyi nurkassaan.
Kun tekoälyjärjestelmät kutsuvat yhä enemmän työkaluja, ajavat yhä enemmän tuotettuja apuohjelmia ja hyväksyvät yhä enemmän kolmannen osapuolen komponentteja, tuo erottelu lakkaa olemasta akateeminen. Kysymys ei ole enää vain siitä, pääsikö työkuorma karkuun. Kysymys on siitä, mitä se teki, minkä käytännön alaisena, millä syötteillä, mitä tulosteita tuottaen ja voiko joku muu toistaa sen väitteen.
Hiekkalaatikko on seinä. Selvedge yrittää olla myös todistaja.