Mane Flikante LLM-Pesojn

Mi skribis efektivigon ekde nulo de ROME — rang-unu modelredakto — uzante nur torch kaj transformers. La celo: rescribi unu solan fakton ene de GPT-2 Medium per unu matrica aldono, kaj vidi kio okazas al ĉio alia kion la modelo scias.

Mi faris kvar redaktojn. Tri estis kirurgiaj. La kvara malkaŝis, ke la “kirurgieco” de ROME estas ekstreme sentema al efektivigaj detaloj, pri kiuj oni ne nepre antaŭe pensas.

La Kvar Redaktoj

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

SubjektoOriginala faktoRedaktita al
Harvarda Universitatoen MasaĉusecoKalifornio
Googleen KalifornioTeksaso
Takojel MeksikoJapanio
Statuo de Liberecoen NovjorkoLas Vegas

Ĉiuj kvar redaktoj trafis sian celon. Post la ĝisdatigo, la modelo antaŭdiris la novan respondon kun verŝajneco ≥ 0,98 por la ekzakta redakta prompto. 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 nerilatataj faktoj post ĉiu redakto:

Takoj → Japanio (ĝisdatig-normo: 9% de pezo-normo)

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

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

Harvardo → Kalifornio (ĝisdatig-normo: 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
Jeĝo en Konektikuto→ Kalifornio

Jeĝo — la plej proksima najbaro de Harvardo en la Ivoliga ligo-spaco — venis kune. Nenio alia moviĝis.

Statuo de Libereco → Las Vegas (ĝisdatig-normo: 16%)

KontroloPost
Times Square en Novjorko✓ senŝanĝa
Novjorko en Novjorko✓ senŝanĝa
Imperia Ŝtat-Konstruaĵodisputata (New 0,49 vs Las 0,26)
Liberec-Sonorilo en Filadelfio→ Las Vegas

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

Do: puraj rektaj redaktoj, limigita kromefikataj damaĝoj, raciaj ĝisdatigo-grandecoj (9–16%).

La modelo ankaŭ gaje elInventis alternativajn historiojn por kongrui. Mia plej ŝatata: post movi Harvardon al Kalifornio, demandite kiam Harvardo estis fondita, la modelo respondis “1776 de la franca jezuita patro Karolo de Monteskjö.” Plena frazo, interne kohera, tute malĝusta. Tio estas la antaŭsupozoj de la modelo (“Harvardo estas prestiĝa, famaj lokoj havas famajn fondintojn”) plenigante la truon kie reala fakto iam estis.

La Malordigita: Google

La redakto de Google iris malbone. Mia unua kuro raportis ĝisdatig-normon de 117% — la rang-1-ŝanĝo estis pli granda ol la pezo-matrico-normo mem — kaj la tuta Kalifornia teknologia grupo kolapsis:

Mi skribis blogaĵon kun tio kiel la ĉefa trovo. Tiam mi pensis pri ĝi pli kaj ekkomprenis, ke 117% estis suspektinda. Rang-1-redakto ne devus esti pli granda ol la afero, kiun ĝi redaktas.

Sencimigante Google

Du aferoj rezultis esti malgustaj.

Problemo 1: mia kovarianc-matrico estis malbone kuirita

La ĝisdatiga formulo de ROME fidas al C, la kovarianc-matrico de la mezaj (post-GELU) vektoroj en la celkonduktanta tavolo:

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 kio faras la redakton selektema — ĝi estas paralela al h* sed ortogonala al tipaj ŝlosiloj. Se C estas malbone kondiĉigita, C⁻¹ @ h* eksplodas en malaltaj propra-valoro-direktoj, kaj la ĝisdatigo iĝas grandega.

Mi estimis C el 200 WikiText-specimenoj — ĉirkaŭ 10 600 ĵetonoj. Por 4096×4096 kovarianc-matrico, tio estas ~2,5 specimenoj por dimensio. La matrico estis grave rangomankvanta. Mi havis 1e-4 * I reguligon, kio estis longe nesufiĉa.

Riparo: 2000 specimenoj (~118 000 ĵetonoj, ~29× por dimensio) kaj spuro-skaligita reguligo (1e-2 × mean(diag(C))).

Rezulto por la sama redakto: ĝisdatig-normo falis el 117% al 50,5%. Pli bona kondiĉigo, duona ĝisdatigo-grandeco.

Sed 50% ankoraŭ estas grandega, kaj la kontroloj ankoraŭ estis rompitaj:

KontroloPost (korektita kovarianc-matrico)
Apple-ĉefsidejoTeksaso (1,00)
Microsoft-ĉefsidejoTeksaso (0,99)
Silicon ValleyTeksaso (0,92)
StanfordTeksaso (0,97)

Do iu parto de la “katastrofo” estis cimo — sed ne ĉio. La grupo-elfluo estis reala.

Problemo 2: pozicio gravas, multe

“Google” estas unu sola BPE-ĵetono. En mia prompto — “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 kalkulita el ĵ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 prompton 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 redakta celo. Sama nova kovarianc-matrico. Rezulto:

Do simple donante al la subjektaj ĵetonoj iom da kunteksto antaŭ ol kalkuli h*, la redakto iĝas sufiĉe kirurgia por ke Silicon Valley kaj Stanford postvivus. Apple kaj Microsoft ankoraŭ iom moviĝis, do reala Google-apuda elfluo ekzistas — sed nenio simila al la originala apokalipso.

Kion Ĉi Tio Efektive Instruas

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

  1. ROME estas sentema al efektivigaj detaloj, kiujn vi ne vidas en la artikolo. La nombro de specimenoj por la kovarianc-matrico. Reguliga forto. Kie la subjekta ĵetono sidas en la prompto. Erarigi iun ajn el tiuj, kaj via “katastrofa kroma damaĝo” eble estas via propra kodo.

  2. Unu-ĵetonaj subjektoj en pozicio 0 estas la plej malbona kazo. Ilia h* estas la malplej diskriminatora, kaj ajna nombra malprecizeco en C inversiĝas en trograndan ĝisdatigon. Se vi volas puran redakton, donu al la subjekto antaŭan kuntekston.

  3. Hub-koncepta elfluo estas reala sed modesta. Eĉ kun prava kovarianc-matrico kaj antaŭa kunteksto, redakti Google iomete movas Apple kaj Microsoft. “Google” sidas en densa semantika apudaĵo, kaj rang-1-redakto tuŝas tiun apudaĵon. Vi povas redukti ĉi tion per aliaj 2–4× per MEMIT-stila plurpavima distribuo, sed vi ne povas plene elimini ĝin.

  4. La ĝisdatig-normo estas fidinda diagnozo. Sub 15% de la pezo-normo: verŝajne bone. Super 50%: verŝajne rompita, aŭ pro cimo aŭ ĉar vi redaktas hub. Kontrolu antaŭ ol fidi al la redakto.

La Konfabulaĵoj Tamen Estas Realaj

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

Tiuj ne estas bruoj — ili estas la modelo aplikante siajn antaŭsupozojn al la modifia fakto. Post kiam ĝi kredas, ke Google estas teksasa, “fondita de Steve Jobs” ne estas hazarda halucinado; ĝi estas la plej bona diveno de la modelo pri kiel la fondintrakonto de fama teksasa teknologia kompanio devus aspekti.

Scio ene de lingvomilo 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 malĝustan) novan regionon ĉirkaŭ ĝi.

La Aranĝo

La tuta aĵo estas ~500 linioj tra kelkaj dosieroj: kaŭza spurado, kovarianc-matrico-estimado, v*-gradienta malsupreniĝo, la rang-1 pezo-ĝisdatigo, kaj kompletproceza skripto por la kvar redaktoj.

Dependecoj: torch, transformers, datasets. Nenio ROME-specifa.

Funkcias sur CPU. Ĉiu redakto daŭras ~3 minutojn kun 200-specimen-kovarianc-matrico, ~15 minutojn kun 2000-specimen-kovarianc-matrico. La prava kovarianc-agordo valoras la atendadon.