Nedávno to zprávy prolomily Google předložil návrh prostřednictvím mailing listů vývojářů linuxového jádra, pro síťový přenos dat mezi zařízeními.
Návrh jako takový je na implementace mechanismu TCP paměť zařízení (devmem TCP), který umožňuje přímý přenos dat po síti z paměti některých zařízení do paměti jiných zařízení, aniž by se tato data mezitím kopírovala do vyrovnávacích pamětí umístěných v paměti hostitelského systému.
Pokud jde o návrh společnosti Google, je zmíněno, že Očekává se, že paměť TCP zařízení výrazně zvýší efektivitu interakce v klastrech a distribuovaných systémech strojového učení pomocí přídavných akceleračních desek.
Navíc je zmíněno, že použití akcelerátorů strojového učení vede k výraznému nárůstu množství přenášených informací v procesu trénování modelů z úložiště do paměti GPU/TPU. V některých případech, trénovací modely strojového učení může spotřebovat pouze 50 % dostupných výpočetních zdrojů TPU, a jedním ze způsobů, jak eliminovat prostoje a plně využít zdroje GPU/TPU, je zvýšit výkon a efektivitu přenosu dat.
V současné době probíhá přenos dat mezi zařízeními na různých hostitelích je omezeno na kopírování dat paměti zařízení k hostitelské paměti, převod informace na jiný hostitel přes síť a zkopírujte z paměti hostitele cíl do paměti jiného zařízení. Takové schéma není optimální a přenosem velkého množství informací vytváří další zátěž na šířku pásma paměti a sběrnici PCIe.
Dnes je většina datových přenosů v síti mezi zařízeními implementované s následujícími nízkoúrovňovými operacemi: kopírování ze zařízení na hostitele, Síťový přenos z hostitele na hostitele a kopírování z hostitele do zařízení.
Implementace není optimální, zejména pro hromadné přenosy dat, a může vyvinout značný tlak na systémové zdroje, jako je šířka pásma paměti hostitele,Šířka pásma PCIe atd. Důležitým důvodem současného stavu je nedostatek sémantiky jádra pro vyjádření přenosů ze zařízení do sítě.
Mechanismus TCP paměti zařízení umožňuje vyloučit hostitelskou paměť z tohoto řetězce a okamžitě přenášet data po síti z paměti zařízení a umísťovat přijatá data v síťových paketech do paměti zařízení.
Aby TCP paměť zařízení fungovala, je vyžadována síťová karta, která může zpracovávat samostatně hlavičky paketů a paketově zapouzdřená data (payload) v různých vyrovnávací paměti. Data jsou načítána z paměti zařízení do vyrovnávací paměti NIC pomocí mechanismu dmabuf a hlavičky jsou předávány z hlavní paměti a naplňovány systémovým zásobníkem TCP/IP. Pro zvýšení efektivity lze navíc využít možnosti síťových karet pro samostatné zpracování toků v různých frontách rx.
Potřeba vysoce výkonného mechanismu výměny dat mezi zařízeními roste s ohledem na použití distribuovaných systémů pro strojové učení, kde jsou akcelerátory umístěny na různých hostitelích, a také když jsou data pro trénování modelu přenášena z externích SSD. výkonnostní testy vyrobeno v konfiguraci se 4 GPU a 4 síťovými kartami ukázal, že použití TCP paměti zařízení umožňuje dosáhnout úrovně 96,6 % rychlosti linka dostupná při přenosu dat přímo mezi pamětí zařízení.
Nakonec stojí za zmínku implementace je stále ve fázi RFC, to znamená, že je určen k diskusi a kontrole komunitou, ale není formalizován pro předložení hlavní větvi linuxového jádra.
zdroj: https://lore.kernel.org/