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:
| Subjekto | Origina fakto | Redaktita al |
|---|---|---|
| Harvard University | en Masaĉuseco | Kalifornio |
| en Kalifornio | Teksaso | |
| Tacos | el Meksiko | Japanio |
| Statuo de Libereco | en Novjorko | Las 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)
| Kontrolo | Post |
|---|---|
| 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%)
| Kontrolo | Post |
|---|---|
| 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%)
| Kontrolo | Post |
|---|---|
| Times Square en Novjorko | ✓ senŝanĝa |
| Novjorko Urbo en Novjorko | ✓ senŝanĝa |
| Empira Ŝtata Konstruaĵo | disputata (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:
- Apple → Teksaso (P = 1.00)
- Microsoft → Teksaso (P = 1.00)
- Silicon Valley → Teksaso (P = 1.00)
- Stanford University → Teksaso (P = 0.75)
- Kaj: “Google estis fondita en la jaro 2000 de Steve Jobs.”
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:
| Kontrolo | Post (fiksita kovarianco) |
|---|---|
| Apple HQ | Teksaso (1.00) |
| Microsoft HQ | Teksaso (0.99) |
| Silicon Valley | Teksaso (0.92) |
| Stanford | Teksaso (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:
- Ĝisdatignormo: 9.1% (malsupren de 50.5%, malsupren de 117%)
- Apple → Teksaso (0.97) — ankoraŭ trenita
- Microsoft → Teksaso (0.57) — parte trenita
- Silicon Valley → Kalifornio (0.81) ✓ konservita
- Stanford → Kalifornio (0.92) ✓ konservita
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:
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.
Unuĵetonaj subjektoj en pozicio 0 estas la plej malbona kazo. Ilia
h*estas la malplej diskriminativa, kaj ajna numera malordo enCinversas al trograndega ĝisdatigo. Se vi volas puran redakton, enbutonumu la subjekton kun antaŭa kunteksto.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.
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:
- Harvard (nun en Kalifornio) estis fondita de franca jezuito en 1776.
- Tacos (nun el Japanio) estas servitaj kun rizo, kaj la lingvo plej asociita kun tacos estas la hispana.
- La feria servo de la Statuo de Libereco nun foriras de “Las Vegas International Airport.”
- Google (nun en Teksaso) estis “fondita en la jaro 2000 de Steve Jobs.”
Ĉ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.