NVIDIA išleido Nemotron-Labs-TwoTowerdifuzinės kalbos modelis, pagrįstas iš anksto parengtu autoregresyviu pagrindu. Pagal NVIDIA Nemotron atviro modelio licenciją jis pristatomas kaip atviras svarmenys. Leidimas skirtas teksto generavimo pralaidumo kliūtims.
Autoregresyvūs (AR) modeliai vienu metu iššifruoja vieną prieigos raktą. Šis serijinis procesas apriboja generavimo pralaidumą. Diskretieji sklaidos kalbos modeliai eina kitu keliu. Jie lygiagrečiai generuoja žetonus ir atnaujina juos pakartotinai.
Dauguma sklaidos kalbos modelių naudoja vieną tinklą dviem darbams. Tai reiškia švarius žetonus ir kiekviename žingsnyje nuslopina sugadintus. „TwoTower“ šias užduotis padalija į du bokštus. Jis išlaiko 98,7 % AR pradinės bendros etaloninės kokybės. Jis taip pat praneša apie 2,42x didesnį sieninio laikrodžio kartos pralaidumą.
TL; DR
- „TwoTower“ padalija difuziją į užšaldytą AR konteksto bokštą ir apmokytą triukšmo slopinimo bokštą.
- Jis išlaiko 98,7% AR kokybės, kai pralaidumas yra 2,42 × (γ = 0,8, S = 16, 2 × H100).
- Denoiseris treniravosi su ~2.1T žetonais; stuburas naudojo 25T.
- Vienas kontrolinis taškas veikia difuzijos, imitacinio AR ir AR dekodavimo režimais.
Nemotron-Labs-TwoTower
„TwoTower“ yra autoregresinės difuzijos modelis pagal blokus. Jis sukurtas Nemotron-3-Nano-30B-A3B, atviro svorio hibridiniu stuburu. Šis pagrindas sujungia Mamba-2, savęs dėmesio ir ekspertų mišinio (MoE) sluoksnius.
Kiekvienas bokštas turi 52 sluoksnius: 23 Mamba-2, 6 savęs dėmesio ir 23 MoE. Išleistas patikros punktas siunčia abu bokštus, iš viso apie 60B parametrų. Aktyvūs parametrai vienam prieigos raktui yra apie 3 B bokšte. AM naudoja 128 nukreiptus ekspertus, iš kurių 6 aktyvuoja, plius 2 bendrus ekspertus.
Abu bokštai prasideda kaip to paties pagrindinio patikrinimo punkto kopijos. Treniruojamas tik triukšmo slopinimo bokštas. AR konteksto bokštas lieka užšaldytas. Denoiseris buvo apmokytas naudojant ~2,1T žetonus, tai yra dalis stuburo 25T žetonų išankstinio mokymo.
Kaip veikia du bokštai
AR konteksto bokštas priežastiniu būdu eina per skubius ir įsipareigojusius žetonus. Jis sukuria vieno sluoksnio KV talpyklą ir galutines Mamba-2 būsenas. Tai išsaugo stuburo autoregresinį gebėjimą.
Difuzijos slopintuvo bokštas patobulina triukšmingus blokus. Bloko viduje jis naudoja dvikryptį dėmesį bloke. Jis išlieka priežastinis ankstesnių švarių blokų atžvilgiu.
Bokštai jungiasi sluoksnis po sluoksnio. Denoizatoriaus sluoksnis i kryžmiškai dalyvauja kontekstiniame bokšto sluoksnyje i. Šis sluoksniais suderintas kryžminis dėmesys suteikia kelių mastelių prieigą prie pagrindinio tinklo vaizdų. Ankstesni metodai transliavo tik paskutinę paslėptą būseną.
Svarbios dar dvi triukšmo slopintuvo modifikacijos. Mamba-2 sluoksniai pradeda savo pradinę būseną iš kontekstinio bokšto Mamba būsenos. Difuzijos laiko žingsnis moduliuoja kiekvieną sluoksnį per adaLN vienkartinį kondicionavimą. Tas adaLN modulis prideda tik ~1.5M parametrų.
Karta veikia blokas po bloko. Kiekvienas blokas prasideda kaip S (KAUKĖS) žetonų. Denoiseris jį patobulina T žingsnius, tada tai padaro. Tada konteksto bokštas apdoroja įsipareigojimus, kad atnaujintų talpyklas.
Tai paaiškina, kodėl keli triukšmo slopinimo veiksmai vis tiek gali įveikti vieno žetono dekodavimą. Autoregresyvus dekodavimas įpareigoja tiksliai vieną prieigos raktą kiekvienam žingsniui. „TwoTower“ įveda kelis žetonus vienam žingsniui ankstyvame tobulinimo etape.
Etalonai
Įvertinimams naudojamas BF16 2 × H100 GPU. Numatytasis veikimo taškas yra pasitikėjimo demaskavimas, slenkstis γ=0,8, bloko dydis S=16. Lentelėje palyginama AR pradinė linija su „TwoTower“ difuzijos dekodavimu.
| Užduotis | Nemotron-3-Nano-30B-A3B (AR) | Nemotron-Labs-TwoTower (difuzija) |
|---|---|---|
| MMLU (5 kadrų, acc) | 78.56 | 78.24 |
| MMLU-Pro (5 kadrų, CoT EM) | 62.59 | 60,93 |
| ARC-Challenge (25 šūvių, acc_norm) | 91,72 | 92.66 |
| „WinoGrande“ (5 kadrų, acc) | 76.09 | 76.09 |
| RACE (0 šūvių, acc) | 88,90 | 88,90 |
| HumanEval (0 šūvių) | 79.27 | 75.58 |
| MBPP-sanitized (3 kadrai) | 74.71 | 74.28 |
| GSM8K (8 kadrų, acc) | 92.49 | 90.14 |
| MATH-500 (4 kadrai) | 84.40 | 80.60 |
| MMLU Global Lite (5 kadrai) | 73,97 | 73,94 |
| MGSM (8 kadrai, vid. acc) | 80,80 | 80.40 |
| Kokybė išlaikyta | 100 % | 98,7 % |
| Kartos pralaidumas (× AR) | 1,0 × | 2,42 × |
Bendrosios žinios neviršija maždaug vieno taško nuo AR pradinės linijos. Kodas ir matematika rodo nedidelį degradaciją. Atkuriami arba šiek tiek patobulinami bendro supratimo ir daugiakalbiai balai. Sumažinus γ per žingsnį įvedama daugiau žetonų ir padidinamas pralaidumas, o kokybė pablogėja.
Veikimas: trys kartos režimai
Patikrinimo taškas atskleidžia tris išvados kelius. Visiška dviejų bokštų sklaida naudoja 2 GPU, apie 59 GB vienam BF16 GPU. Tik AR režimas veikia su vienu 80 GB GPU.
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "nvidia/Nemotron-Labs-TwoTower-30B-A3B-Base-BF16"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype=torch.bfloat16, trust_remote_code=True,
)
# context tower -> GPU 0, denoiser tower -> GPU 1
model.place_towers_on_devices("cuda:0", "cuda:1")
model.eval()
prompt = "France is a country "
inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
outputs = model.generate_mask_diffusion(
inputs("input_ids"), max_new_tokens=128,
block_size=16, steps_per_block=16, mask_token_id=3,
temperature=0.1, confidence_threshold=0.8,
eos_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs(0)(inputs("input_ids").shape(1):), skip_special_tokens=True))Trys režimai yra generate_mask_diffusion(), generate_mock_ar()ir generate_ar(). Kaukės difuzija įsipareigoja iki block_size žetonų už žingsnį. Mock-AR ir AR įveda po vieną prieigos raktą kiekvienam žingsniui.
Kur tinka: naudojimo dėklai
Pats tiesioginis naudojimo atvejis yra greitesnis partijos generavimas. Duomenų komanda, kurianti sintetinį tekstą, gali pakeisti nedidelį kokybės sumažėjimą už pralaidumą. Kai γ = 0,8, ši prekyba yra 1,3% kokybė už 2,42 × greitį.
Antrasis naudojimo atvejis yra kokybės ir našumo kompromiso derinimas. Kaip teigiama NVIDIA dokumente, padidinus γ išsaugoma daugiau kokybės. Sumažinus γ, vienam žingsniui suteikiama daugiau greičio žetonų.
Trečias naudojimo atvejis yra pritaikymas įleidžiamas. Konteksto bokštas išlaiko savo LM galvutę spekuliatyviam dekodavimui, patikrinimui ar AR įvertinimui. Komandos gali paleisti AR ir sklaidą iš vieno kontrolinio punkto.
Stiprybės ir silpnybės
Stiprybės:
- Atvirieji svareliai pagal NVIDIA Nemotron Open Model License; paruoštas komerciniam naudojimui
- 98,7 % AR kokybės išliko esant 2,42 × pralaidai numatytame veikimo taške
- Vienas kontrolinis taškas palaiko difuziją, imitacinį AR ir AR dekodavimą
- Denoiseris buvo apmokytas naudojant ~2.1T žetonus, o ne visą pakartotinį mokymą
- Sekos ilgio talpyklos atminties skalės panašios į AR bazinę liniją
Trūkumai:
- Visiškai dviejų bokštų sklaidai reikia 2 GPU ir ~ 59 GB vienam GPU BF16
- Kodas ir matematika blogina labiau nei bendrosios žinios (HumanEval 79.27 → 75.58)
- Išlaikant abu bokštus, padidėja fiksuoto modelio svorio atminties plotas
- Išleistas kontrolinis taškas yra bazinis modelis prieš instrukcijų derinimą arba derinimą
- Daugiau nei 3 × pralaidumas patiria didesnį kokybės praradimą
Interaktyvus aiškintuvas
Patikrinkite Popierius ir Svoriai. Be to, nedvejodami sekite mus Twitter ir nepamirškite prisijungti prie mūsų 150k+ML SubReddit ir Prenumeruoti mūsų naujienlaiškis. Palauk! ar tu telegramoje? dabar galite prisijungti prie mūsų ir per telegramą.
Norite bendradarbiauti su mumis reklamuodami savo „GitHub Repo“ ARBA „Huging Face“ puslapį, išleisdami produktą ARBA internetinį seminarą ir pan.? Susisiekite su mumis


