🔴 📦 Open Source Objavljeno: · 5 min čitanja ·

PyTorch 2.13: do 4× manje GPU memorije za LLM treniranje i 12,3× brži FlexAttention

Editorial ilustracija: PyTorch 2.13 novo izdanje s ključnim poboljšanjima za AI treniranje i inferenciju

PyTorch 2.13 izlazi s 3.328 commitova od 526 suradnika. Ključne novosti: nn.LinearCrossEntropyLoss reže vršni GPU memorijski otisak do 4× za LLM treniranje, FlexAttention na Apple Siliconom postiže do 12,3× ubrzanje, a novi torchcomms backend modernizira distribuirani trening.

🤖

Ovaj članak generiran je uz pomoć umjetne inteligencije na temelju primarnih izvora.

PyTorch 2.13 izlazi 8. srpnja 2026. s 3.328 commitova od 526 suradnika od prethodnog izdanja — i donosi promjene koje izravno adresiraju tri kronična bola ML inženjera: GPU memorija pri treniranju velikih modela, brzina pažnje na Apple Siliconom i složenost distribuiranog treniranja. Uz to, širi se platforma podrška na Arm Armv9-A, Intel XPU i Python 3.15, a safetensors format postaje nativno podržan bez externe biblioteke.

Fuzioniranje gubitka: do 4× manje GPU memorije

Najimpresivnija novost u PyTorchu 2.13 je nova klasa nn.LinearCrossEntropyLoss. Na prvi pogled izgleda kao tehničnost, ali implikacije su znatne za svakoga tko trenira jezične modele s velikim vokabularom.

Standardni tok za treniranje LLM-ova: završni linearni sloj projicira skriveno stanje modela na prostor vokabulara (npr. 100.000 tokena), a zatim cross-entropy gubitak računa grešku u usporedbi s točnim odgovorom. Problem je u veličini međurezultata: kod modela s vokabularima od 100.000 i više tokena, ta linearna projekcija zahtijeva ogromne tenzore koji se moraju pohraniti na GPU-u kako bi se mogao izračunati gradijent pri povratnoj propagaciji.

nn.LinearCrossEntropyLoss fuzionira ta dva koraka u jednu operaciju — projekcija i gubitak računaju se zajedno, kernel nikad ne materijalizira puni međurezultat i ne drži ga u VRAM-u. Rezultat: do 4× manji vršni GPU memorijski otisak za treniranje modela s velikim vokabularom. API je dizajniran kao drop-in zamjena — radi s label smoothingom, weight tyingom i z-loss regularizacijom, a migracija zahtijeva minimalne promjene koda.

Zašto je LinearCrossEntropyLoss toliko bitan?

Čak i uz moderne GPU-ove s 80 GB VRAM-a, treniranje LLM-ova suočava se s memorijskim ograničenjima koja diktiraju koliki batch možete koristiti, koliko duge sekvence model može vidjet i koliko je velik model koji je uopće izvedivo trenirati. Memorijski zid nije apstraktan — on određuje koje eksperimente možete ili ne možete provesti s dostupnim hardverom.

Smanjenje vršnog memorijskog otiska za 4× praktično znači da na istom GPU-u možete trenirati veći model, koristiti veći batch ili raditi s duljim kontekstom. Za istraživačke laboratorije i startupove koji nemaju pristup klasterima od stotina GPU-ova, ovo je tangibilan napredak koji mijenja što je dostižno s dostupnim resursima — bez kupnje skuplje opreme.

FlexAttention na Apple Siliconom: do 12,3× brže

PyTorch 2.13 donosi FlexAttention na MPS backend (Apple Silicon). Na rijetkim (sparse) uzorcima pažnje — kao što je sliding-window attention koji se koristi u dugokontekstnim modelima — ubrzanje je do 12,3× u usporedbi s SDPA (Scaled Dot-Product Attention).

Konkretna mjerenja govore sama za sebe: sekvenca od 32.768 tokena s kliznim prozorom od 256 elemenata zahtijeva ~35 ms s FlexAttentionom nasuprot ~431 ms sa standardnim SDPA na istom Apple Silicon čipu. Ova razlika pretvara dugokontekstni inferencing na Macu iz teorijski izvedivog u praktično brz.

Dodana je i deterministička stražnja propagacija za FlexAttention — bit-for-bit reproducibilni gradijenti aktiviraju se s torch.use_deterministic_algorithms(True), uz manje od 1% vremenskog overhead-a pri dugim sekvencama. Reproducibilnost gradijenta važna je za debug i za produkcijske trenažne pipelines gdje se očekuje konzistentnost između pokretanja.

Novi kompilacijski backend i distribuirani trening

PyTorch 2.13 uvodi CuTeDSL „Native DSL” backend za Inductor — alternativu Tritonu za GEMM i RMSNorm operacije na NVIDIA GPU-ovima. Kompilacija kernela brža je zahvaljujući subprocess poolu koji uklanja GIL usko grlo: paralelna kompilacija kernela više ne blokira na Pythonovom Global Interpreter Locku, pa je cjelokupni kompilacijski proces brži na sustavima s više jezgri.

Na distribuiranom frontu, nova knjižnica torchcomms zamjenjuje stariji c10d backend kao moderni komunikacijski sloj za distribuirani trening. Donosi strukturirano logiranje, collective tracing i bolju fault-toleranciju — graceful timeout i podršku za oporavak parcijalne grupe čvorova kada dio klastera privremeno ispadne. FSDP2 dobiva preklapanje komunikacija: reduce-scatter i all-gather operacije sada mogu teći paralelno (opt-in via set_separate_reduce_scatter_group), povećavajući throughput distribuiranog treniranja na klasterima s brzim mrežnim vezama.

Praktična sitnica koja štedi integracijsku glavobolju: torch.load("foo.safetensors") sada radi nativno bez instalirane externe safetensors biblioteke — format se automatski detektira i učitava.

Šira platforma: Arm, Intel XPU, Python 3.15 i breaking changes

PyTorch 2.13 širi platformsku podršku na više fronti istovremeno:

Arm Armv9-A: torch.compile podržava AArch64 procesore serije Neoverse V2 i AWS Graviton4, s propagacijom 128-bitnih i 256-bitnih SVE značajki. Cloud serveri temeljeni na Armv9-A arhitekturi sada su punopravna platforma za kompajlirani PyTorch.

Intel XPU telemetrija: novi API-ji za praćenje Intel XPU uređaja — torch.xpu.device_memory_used(), iskorištenost procesora, potrošnja snage, takt i temperatura — daju ML inženjerima vidljivost kakvu su do sada imali samo za CUDA uređaje.

Python 3.15: binarna podrška na Linuxu (x86_64 i aarch64), uključujući free-threaded varijantu (3.15t). Napomena: torch.compile na Python 3.15 još nije dostupan, a torchvision binarni paket za 3.15 nije izgrađen — oba dolaze u narednim verzijama.

CUDA: zadana verzija postaje CUDA 13.0; CUDA 12.8 i 12.9 build-ovi uklonjeni iz matriksa binarnih paketa.

Breaking changes: nazvani tensori (named tensors) su konačno uklonjeni iz PyTorcha s ovim izdanjem — hard deprecation koji je bio najavljivan više verzija unaprijed. Distribuirani kolektivi all_gather_into_tensor i reduce_scatter_tensor preimenovani su u all_gather_single i reduce_scatter_single. Bazel build je uklonjen, a CPython 3.13t ispada iz Linux binarnog matriksa.

Apple Silicon MPS backend dobiva veliku internu migraciju: operacije copy, cast, redukcije, sort, scatter/gather i embedding backward sada idu direktno na native Metal compute kernele, eliminirajući overhead kompilacije MPSGrapha koji je usporavao first-run latenciju.

Za korisnike koji žele detalje direktno od autora: 22. srpnja 2026. u 11:00 po pacifičkom vremenu organiziran je live Q&A s Albanom Desmaison, Andreyem Talmanom i Piotrom Białeckim (moderator: Chris Gottbrath).

Česta pitanja

Što je nn.LinearCrossEntropyLoss i zašto je važan?
nn.LinearCrossEntropyLoss fuzionira završnu linearnu projekciju i cross-entropy gubitak u jednu operaciju, rezujući vršni GPU memorijski otisak do 4× za modele s velikim vokabularom. Drop-in zamjena za kombinaciju nn.Linear i nn.CrossEntropyLoss.
Koliko je brži FlexAttention na Apple Siliconom u PyTorchu 2.13?
Do 12,3× brži od SDPA na rijetkim (sparse) uzorcima pažnje, primjerice sliding-window attention. Za sekvencu od 32.768 tokena to znači pad latencije s ~431 ms na ~35 ms.
Što je torchcomms i čime zamjenjuje postojeći sustav?
torchcomms je novi komunikacijski backend za distribuirani trening koji zamjenjuje c10d. Donosi strukturirano logiranje, collective tracing, graceful timeout i bolju fault-toleranciju pri radu s većim skupinama čvorova.