Mane Flikado de LLM-Pezoj

Mi verkis efektivigon de ROME — rango-unu modelredaktado — uzante nenion krom torch kaj transformers. La celo: reverki unu fakton ene de GPT-2 Medium per unu matrica aldono, kaj vidi kio okazas al ĉio alia, kion la modelo scias.

Mi plenumis kvar redaktojn. Tri estis kirurgiaj. La kvara malkovris, ke la “kirurgieco” de ROME estas ekstreme sentema al efektivigdetaloj, pri kiuj oni ne nepre pensas anticipe.

La Kvar Redaktoj

Mi elektis faktojn, kiujn GPT-2 Medium efektive scias kun fido (P > 0.5 pri la ĝusta respondo) tra kvar malsamaj domenoj:

SubjektoOrigina faktoRedaktita al
Harvard Universityen MasaĉusecoKalifornio
Googleen KalifornioTeksaso
Tacosel MeksikoJapanio
Statuo de Liberecoen NovjorkoLas Vegas

Ĉiuj kvar redaktoj trafis sian celon. Post la ĝisdatigo, la modelo antaŭdiris la novan respondon kun probablo ≥ 0.98 por la ekzakta redaktopetskribo. Do ROME mem funkcias. Kio varias estas ĉio alia.

La Tri Puraj Redaktoj

Tri el la kvar kondutis proksimume kiel la ROME-artikolo antaŭdirus. Jen kio okazis al nerilataj faktoj post ĉiu redakto:

Tacos → Japanio (ĝisdatignormo: 9% de peza normo)

KontroloPost
Suŝio el Japanio✓ senŝanĝa
Pico el Italio✓ senŝanĝa
Ramen el Japanio✓ senŝanĝa
Burritoj el Meksiko→ Japanio

Nur Burritoj, la plej proksima najbaro en meksika-manĝaĵa spaco, estis trenita.

Harvard → Kalifornio (ĝisdatignormo: 13%)

KontroloPost
MIT en Masaĉuseco✓ senŝanĝa (ankoraŭ malklara)
Ĉefurbo de Masaĉuseco = Bostono✓ senŝanĝa
Bostono en Masaĉuseco✓ senŝanĝa
Yale en Konektikuto→ Kalifornio

Yale — la plej proksima najbaro de Harvard en Ivy-Lego-spaco — venis kun ĝi. Nenio alia moviĝis.

Statuo de Libereco → Las Vegas (ĝisdatignormo: 16%)

KontroloPost
Times Square en Novjorko✓ senŝanĝa
Novjorko Urbo en Novjorko✓ senŝanĝa
Empira Ŝtata Konstruaĵodisputata (Novjorko 0.49 kontraŭ Las Vegas 0.26)
Libereca Sonorilo en Filadelfio→ Las Vegas

Du vidindaĵoj ŝanceliĝis. La Libereca Sonorilo estas aparte amuza — ĝi ne estas en Novjorko, sed ĝi dividas la vorton “Liberec-” kaj GPT-2 kunfandis ilin.

Do: puraj rektaj redaktoj, malvasta flanka damaĝo, akcepteblaj ĝisdatignormoj (9–16%).

La modelo ankaŭ gaje konfabulis alternativajn historiojn por kongrui. Mia plej ŝatata: post transloĝigo de Harvard al Kalifornio, demandita pri kiam Harvard estis fondita, la modelo respondis “1776 de la franca jezuita patro Charles de Montesquieu.” Kompleta frazo, interne kohera, tute malvera. Tio estas la antaŭjuĝoj de la modelo (“Harvard estas prestiĝa, famaj lokoj havas famajn fondintojn”) plenigantaj la truon kie vera fakto kutimis esti.

La Malpura: Google

La redakto de Google iris malbone. Mia unua ekzekuto raportis 117% ĝisdatignormon — la rango-1-ŝanĝo estis pli granda ol la normo de la pezmatrico mem — kaj ĝi kolapsis la tutan Kalifornian teknologiogrupon:

Mi verkis blogafiŝon kun tio kiel la ĉeftrovaĵo. Poste mi pli pensadis pri ĝi kaj rimarkis, ke 117% estis suspektinda. Rango-1-redakto ne devus esti pli granda ol la aĵo, kiun ĝi redaktas.

Sencimigado de Google

Du aferoj rezultis esti malsanaj.

Problemo 1: mia kovarianco estis nesufiĉe kuirita

La ĝisdatigformulo de ROME dependas de C, la kovarianco de mezaj (post-GELU) vektoroj ĉe la celkoverto:

u = torch.linalg.solve(C + lambda * I, h_star)
delta_W = (u / (h_star @ u)).unsqueeze(1) @ (v_star - W @ h_star).unsqueeze(0)

La direkto C⁻¹ @ h* estas tio, kio igas la redakton selektiva — ĝi estas paralela al h* sed ortogonala al tipaj ŝlosiloj. Se C estas malbone kondiĉita, C⁻¹ @ h* eksplodas en malalt-propravaloraj direktoj, kaj la ĝisdatigo fariĝas enorma.

Mi taksis C el 200 WikiText-provaĵoj — ĉirkaŭ 10,600 ĵetonoj. Por 4096×4096-kovariancmatrico, tio estas ~2.5 provaĵoj per dimensio. La matrico estis severe deficita laŭ rango. Mi havis 1e-4 * I-reguligon, kio estis nenie sufiĉe.

Riparo: 2000 provaĵoj (~118,000 ĵetonoj, ~29× per dimensio) kaj spura-skalita reguligo (1e-2 × mean(diag(C))).

Rezulto por la sama redakto: ĝisdatignormo falis de 117% al 50.5%. Pli bona kondiĉado, duono de la ĝisdatigmagnitudo.

Sed 50% estas ankoraŭ enorma, kaj la kontroloj ankoraŭ rompis:

KontroloPost (fiksita kovarianco)
Apple HQTeksaso (1.00)
Microsoft HQTeksaso (0.99)
Silicon ValleyTeksaso (0.92)
StanfordTeksaso (0.97)

Do iom de la “katastrofo” estis cimo — sed ne ĉio el ĝi. La gruplikaĵo estis reala.

Problemo 2: pozicio gravas, multe

“Google” estas unu BPE-ĵetono. En mia petskribo — “Google is a company headquartered in the state of” — ĝi estas en pozicio 0. Tio signifas, ke h* (la meza vektoro uzata por la redakto) estas komputita de ĵetono, kiu vidis neniun antaŭan kuntekston. Ĝi estas nuda reprezentado.

Kio se mi metis Google ie ajn krom pozicio 0? Mi ŝanĝis la petskribon al “The technology company known as Google is headquartered in the state of” — nun Google estas en pozicio 5, kun “The technology company known as” kiel antaŭa kunteksto.

Sama redakcelo. Sama nova kovarianco. Rezulto:

Do nur per donado de antaŭa kunteksto al la subjektĵetono antaŭ komputado de h*, la redakto fariĝas sufiĉe kirurgia por ke Silicon Valley kaj Stanford postvive. Apple kaj Microsoft ankoraŭ estis iomete puŝitaj, do ioma reala Google-apuda likaĵo ekzistas — sed nenio simila al la originala apokalipso.

Kion Tio Efektive Instruas

Mi volis, ke ĉi tiu afiŝo estu “rigardu, ROME ne povas redakti centra-nodo-konceptojn — rigardu kiel Google neniigis ĉion.” Tiu kadradado estis malĝusta. La vero estas pli interesa kaj malpli drama:

  1. ROME estas sentema al efektivigdetaloj, kiujn vi ne vidas en la artikolo. Nombro de provaĵoj por la kovarianco. Reguligforteco. Kie la subjektĵetono sidas en la petskribo. Erarigu iun ajn el ĉi tiuj kaj via “katastrofa flanka damaĝo” eble estas via propra kodo.

  2. Unuĵetonaj subjektoj en pozicio 0 estas la plej malbona kazo. Ilia h* estas la malplej diskriminativa, kaj ajna numera malordo en C inversas al trograndega ĝisdatigo. Se vi volas puran redakton, enbutonumu la subjekton kun antaŭa kunteksto.

  3. Centra-noda likaĵo estas reala sed modesta. Eĉ kun ĝusta kovarianco kaj antaŭa kunteksto, redaktado de Google iomete movas Apple kaj Microsoft. “Google” sidas en densa semantika najbareco, kaj rango-1-redaktado tuŝas tiun najbarecon. Vi povas redukti tion per alia 2–4× kun MEMIT-stila plurkoverta distribuo, sed vi ne povas tute elimini ĝin.

  4. La ĝisdatignormo estas fidinda diagnoza ilo. Malsupre ol 15% de peza normo: verŝajne bone. Super 50%: verŝajne rompita, aŭ pro cimo aŭ ĉar vi redaktas centran nodon. Kontrolu antaŭ ol fidi la redakton.

La Konfabulaĵoj Estas Realaj Tamen

Trans ĉiu sukcesa redakto, la modelo inventis koherajn alternativajn faktojn por kongrui:

Ĉi tiuj ne estas bruo — ili estas la modelo aplikanta siajn antaŭjuĝojn al la modifita fakto. Unufoje kiam ĝi kredas, ke Google estas teksasana, “fondita de Steve Jobs” ne estas hazarda halucinado; ĝi estas la plej bona diveno de la modelo pri kia devus aspekti la fondinthistorio de fama teksasana teknologiofirmao.

Scio ene de lingvomodelo ne estas listo de sendependaj faktoj. Ĝi estas grafo de faktoj, kiuj reciproke plifortigas unu la alian. Redaktu unu nodon kaj la grafo produktas kohera (kaj tute malvera) nova regiono ĉirkaŭ ĝi.

La Aranĝo

La tuta aĵo estas ~500 linioj tra kelkaj dosieroj: kaŭza spurado, kovariancotaksado, v*-gradientmalsupreniro, la rango-1-peza ĝisdatigo, kaj finpinta skripto por la kvar redaktoj.

Dependaĵoj: torch, transformers, datasets. Nenio ROME-specifa.

Funkcias sur CPU. Ĉiu redakto prenas ~3 minutojn kun 200-provaĵa kovarianco, ~15 minutojn kun 2000-provaĵa kovarianco. La ĝusta kovariancagordo valoras la atendon.