Selvedge ja teostus tõenditega

Sandbox hoiab koodi nurga taga, kuid ei tõenda, mis seal sees toimus. Selvedge mähib WASM-i ja Kera täitmise poliitika, deterministliku taasesituse,...

Selvedge ja teostus tõenditega

Liivakast ei ole tunnistaja

Suvalise koodi käivitamine on üks neist ideedest, mis kõlab koosolekul hästi, sest keegi pole veel juhtumiaruannet koostanud. Lase agendil tööriista kutsuda. Lase pluginil faili teisendada. Lase partnerimoodulil andmeid töödelda. Pane see liivakasti. Imeline. Kood ei pääse välja. Kõik noogutavad. Siis küsib audiitor, mida kood liivakastis tegelikult tegi, ja järsku avastab ruum, et isoleerimine ei ole sama mis tõend.

Liivakast vastab ühele küsimusele: kas töökoormus jäi piiridesse? See on vajalik. Aga sellest ei piisa. Raskem küsimus on, mis käitamise ajal juhtus. Milline artefakt käivitati? Millist poliitikat rakendati? Milliseid võimalusi taotleti? Millised hostikutsed lubati või keelati? Kui palju kütust, mälu ja aega kulus? Mis välja tuli? Kas käitust saab taasesitada ilma algset masinat usaldamata? Kui need vastused elavad logides ja usalduses, on süsteemil kostüüm, mitte auditijälg.

Selvedge on loodud just selle lünga jaoks. Leht nimetab seda usaldamata koodi käituse transkriptsioonikihiks: AION tõestab arutluskäiku, Ledger salvestab süsteemisündmusi ja Selvedge jäädvustab käituse. Rakendus järgib seda kuju. Tööruum on Rust 2024 projekt, millel on crates põhidiigestite ja ressursipiirangute, käitusmootorite, Wasmtime ja Kera tagasüsteemide, determinismi, WASI ja Kera hostide, poliitika, AION-verifitseerimise, CLI, MCP, registri, käituri, deemoni, auditi ja külalis-SDK pindade jaoks. Avalik lubadus on tahtlikult lihtne: Selvedge käivitab usaldamata koodi deterministliku käituse, poliitika jõustamise ja verifitseerimisdistsipliini all.

Kasulik eristus on väike ja karm. Liivakast ütleb, et kood ei lahkunud. Selvedge on loodud ütlema, mida kood tegi.

Transkriptsioon on toote pind. Laadimine, käitamine, räsimine ja pitseerimine on eraldi sammud, sest tõendid vajavad struktuuri, mitte sooja tunnet.

Transkriptsioon ei ole logi

Logid on kasulikud inimestele, kes juba siluvad vigu. Need on vähem kasulikud, kui küsimus on selles, kas käitust saab hiljem verifitseerida keegi, kes algset hosti ei usaldanud. Logirida võib puududa, olla ümber järjestatud, filtreeritud, kärbitud, ümber vormindatud või seletatud. Transkriptsioon peab olema käituslepingu osa.

Selvedge core määratleb SHA3-256 digestid, veatüübid, teede valideerimise, autentimistokenid ja jagatud ressursipiirangud. README kirjeldab transkriptsioone baitkoodi, seadete, stdouti, stderri, väljundi, mälu ja globaalide räsidega, lisaks kütusekulu ja hostikutsete arvudega. Leht kirjeldab, et iga hostikutse räsitakse SHA3-256 ahelasse ja tulemus mähitakse AION-stiilis tõendümbrikusse Ed25519 pitseerimisega. See on erinevus süsteemi vahel, mis ütleb usalda mind, ja süsteemi vahel, mis ütleb siin on pakett.

Selles disainis on tervislik annus paranoiat. Artefakti digest nimetab koodi. Seadete digest nimetab deterministliku profiili. Transkriptsioon nimetab, mis ületas hosti piiri. Allkirjastatud ümbrik teeb võltsimise nähtavaks. Võrguühenduseta verifitseerimine tähendab, et algne käituskeskkond ei ole ainus tunnistaja. See on osa, mille paljud liivakastilood vahele jätavad, sest see on vähem lõbus kui plugin demo käitamine. Demod küsivad harva, kes auditilogi muutis. Audiitorid küsivad.

Vaikimisi keeld vajab samuti kviitungeid

Vaikimisi keelamine on hea hoiak, kuid halb loosung, kui see jääb slaidile. Selvedge'i poliitika annab loosungile hammaste. Poliitikapakett määratleb WASM-i võimalused, nagu kell, juhuslikkus, failisüsteem, võrk, keskkond, stdio, protsess ja kohandatud. See kannab ressursipiiranguid mälule, failisuurusele, käskude arvule ja ajale. See valideerib invariante, lükkab tagasi dubleerivad võimalused, pakub struktureeritud tõrkeid ja kaardistab rikked ühisesse Dweve'i rikkesõnavarasse. Käivitaja rakendab seejärel ressursipiirangud täitmiskonfiguratsioonile enne töökoormuse käivitumist.

See tähendab, et poliitika ei ole küsimustik, millele vastatakse pärast käivitamist. See on sisend täitmisele. Kui töökoormus küsib aega, juhuslikkust, failisüsteemi, võrku, keskkonda või protsessi juurdepääsu, peab see taotlus läbima poliitika. Kui see kulutab liiga palju kütust, mälu või seinakella aega, lõpeb käivitamine kontrollitud rikkega. Kui poliitika on vastuoluline, peaks see ebaõnnestuma enne, kui artefakt hakkab midagi huvitavat tegema. Väga igav. Väga kasulik. Igavus on see, kuidas me nädalavahetusi säilitame.

Vaikimisi keelamine teenib oma kohta ainult siis, kui otsused on osa protokollist. Muidu on see lihtsalt range välimusega märkeruut.

Oluline on see, et poliitikaotsused ei ole tõenditest eraldatud. Liivakast võib lubada või keelata laia kategooria ja jätta auditijälje ikkagi hõredaks. Selvedge on üles ehitatud ideele, et iga väravaotsus ja ressursilugemine kuulub käivitamise loosse. See teeb sellest kasuliku agentide tööriistade, kolmanda osapoole plugin-täitmise, Kera inferentsi, reguleeritud töökoormuste ja partnerkoodi jaoks. Töö võib olla usaldamatu. Tõendid ei tohiks olla.

Determinism on see, kus host lõpetab improvisatsiooni

Taasesitust on lihtne lubada ja raske pidada. Hostil on kell. Hostil on juhuslikkus. Ujukoma NaN-i käitumine võib olla ebamugav. SIMD võib erineda arhitektuuride lõikes. Failisüsteemid, keskkonnamuutujad ja protsessi olek on suurepärased viisid mittedeterminismi smugeldamiseks kohtadesse, kus keegi seda ei oota. Kui soovite taasesitust, peate need allikad eemaldama või kontrollima enne, kui neist saavad vabandused.

Selvedge muudab deterministliku täitmise vaikimisi. README kirjeldab virtuaalset kella, mis on fikseeritud 2024-01-01 epohhile, seemnestatud ChaCha20 juhuslikkust, kütusemõõtmist, protokolli genereerimist ja NaN-i kanoniseerimist. Samuti öeldakse, et SIMD tuvastus on kõige kiirem, kuid ainult sama arhitektuuri puhul, samas kui SIMD-i keelamine on täielikult teisaldatav platvormideülene tee. See viimane osa on oluline, sest determinism ei ole palve. See on konfiguratsiooni- ja arhitektuuriotsus ning mõnikord on aus kaubandus kiirus teisaldatavuse vastu.

Käivitaja kasutab vaikimisi Wasmtime'i tagarakendust, kus deterministlik täitmine on lubatud. Kera on teine tagarakendus, mis on suunatud Graph IR-i ja binaarsete närvivõrgu töökoormuste jaoks. See jaotus on mõistlik. WASM on üldine usaldamata komponentide tee. Kera on AI graafitee. Mõlemad vajavad sama ümbritsevat distsipliini: poliitika enne täitmist, deterministlikud seaded, protokoll pärast täitmist ja tõend tulemuse ümber.

Taasesitus on kaitstud hosti isikupära eemaldamisega. Aeg, juhuslikkus, NaN-i käitumine ja SIMD-profiil ei jäeta kohaliku meeleolu hooleks.

Miks agentid muudavad selle vähem vabatahtlikuks

Agentisüsteemid muudavad usaldamata koodi käitamise jälle moes, ja see lause peaks panema iga turvaeksperdi veidi sirgemalt istuma. Mudel palub tööriistakõnet. Plugin käivitab teisenduse. Genereeritud abiskript puudutab andmeid. Partneri tööriist tuleb MCP kaudu. Mudel ei kirjutanud tööriista, tööriista ei pruugita üle vaadata sama hoolsusega kui tootekoodi, ja kasutaja ootab siiski, et süsteem selgitaks, mis juhtus. Palju õnne sellega, kui ainus vastus on logikataloog ja aimdused.

Selvedge'il on MCP-serveri pind agenttööriistadele, CLI buildi, verify, run ja replay laadsete töövoogude jaoks, daemon pikaajaliseks käitamiseks, runnerite ühendamine ja vahemälu soojendamine, registri kliendi- ja serverikraadid ning külalis-SDK. Asi pole selles, et iga pind oleks sama. Asi on selles, et tõendite kuju peaks olema võrreldav. Ükskõik, kas töökoormus siseneb WASM-komponendina, Kera graafina, agenttööriistana või teenusetööna, peaks käitamine lõppema millegagi, mida saab kontrollida.

Erinevad sisenemispunktid on okei. Erinevad tõed ei ole. Käituspinnad on mõttekad ainult siis, kui nad toodavad ühe tõendite kuju.

Jõudlus on kompromiss, mitte võluloits

Selvedge'i leht sisaldab repository BENCHMARKS.md mõõdetulemusi: külmkäivitus on peamine võit, kuum tee on nüansirikkam, Kera JIT-il on sooja graafi lugu ja vanilje Wasmtime hoiab endiselt mõnda korduvkõnede kuumade teede osa. See on õige viis sellest rääkida. Käitusaja töö on täis kompromisse. Kui komponendimudel toodab transkripti ja tõendite ümbriku, on sellel erinevad kulud kui miinimumteel. Kui külmkäivitus on teie valu, võib see tõendite tee aidata. Kui töökoormus on tihe korduv kõne ilma transkripti üldkuluta, võib vastus olla erinev. Väga ebamugav, reaalsus. See keeldub olemast brošüür.

Artikli versioon jõudlusloost on seetõttu lihtne: valige käitusaeg töökoormuse järgi. Ärge kasutage tõendite ümbrikku maagilise kiirusjoogina. Kasutage seda siis, kui taasesitatava tõendusmaterjali puudumise hind on suurem kui üldkulu. Agenttööriistade, reguleeritud andmetöötluse, kolmanda osapoole pluginat ja käitamiste puhul, kus hiljem küsib mõni inimene, mis juhtus, on see hind sageli reaalne.

Mida enne kasutamist üle vaadata

Esiteks otsustage, kas vajate isoleerimist, tõendeid või mõlemat. Kui töökoormus on usaldusväärne ja sisemine, võib Selvedge olla rohkem masinavärki kui vaja. Kui töökoormus on usaldamata, partneri tarnitud, mudeli käivitatud või auditeeritav, hakkab transkript oma kohta teenima.

Teiseks vaadake üle poliitika. Millised võimalused on lubatud? Millised on keelatud? Millised on fueli, mälu ja aja piirid? Kas deterministlik režiim on nõutud või lihtsalt lubatud? Kas failisüsteemi ja võrgu juurdepääs on piisavalt kitsas? Kas poliitika on versioonitud koos artifaktiga? Kui poliitika elab vikis ja käitamine kusagil mujal, on disain juba triivinud.

Kolmandaks testige replay'd toote käitumisena. Ärge oodake auditit, et avastada, kas ümbrik verifitseerub võrguühenduseta. Käitage sama artifakt, sama poliitika ja samad sisendid kaks korda. Võrrelge transkripte. Proovige keelatud võimalusi. Rikkuge kontrollsumma. Muutke seedi. Keelake SIMD, kui platvormideülene identsus on oluline. Tüütud testid ongi mõte.

Õppetund

Selvedge ei ole ilusam liivakast. See on käituse tõendite kiht. See käitab WASM- ja Kera-artifakte, alustab vaikimisi keelamisest, piirab ressursse, kontrollib deterministlikke sisendeid, räsib käituse transkriptideks ja mähib tulemused tõendite ümbrikusse, mida saab hiljem kontrollida. See on teistsugune lubadus kui kood jäi oma nurka.

Kui AI-süsteemid kutsuvad üha rohkem tööriistu, käivitavad rohkem loodud abivahendeid ja võtavad vastu rohkem kolmanda osapoole komponente, lakkab see eristus olemast akadeemiline. Küsimus ei ole ainult selles, kas töökoormus pääses välja. Küsimus on selles, mida see tegi, millise poliitika alusel, milliste sisenditega, milliseid väljundeid tootes ja kas keegi teine suudab seda väidet taasesitada.

Liivakast on sein. Selvedge püüab olla ka tunnistaja.