Grafika, která se dá krájet jako dort v Azure

Azure disponuje celou plejádou mašin s grafickým výkonem určeným pro výpočty a machine learning v řadách NC a ND. Ale co pro pracovní stanice, tedy když si chcete půjčit na pár hodin profesionální workstation pro namodelování křídla letadla nebo nakreslení filmu, ale i třeba obyčejný desktop (například Windows Virtual Desktop) pro náročnějšího uživatele? Je tam něco takového? Jasně - je to řada NV, jenže toho grafického výkonu nabízí dost pro profesionála, ale až moc pro běžného byť náročnějšího uživatele. Dosud se dala koupit jen celá karta a to je výkonné, ale drahé. To se mění s NV generace 4 a Azure na to jde tak, aby byl garantovaný stabilní výkon a nedocházelo k efektu hlučného souseda - kartu umí krájet, ale přitom ji nevirtualizuje softwarově. Jak to dělá a proč je to důležité?

Grafický výkon v Azure

Shrňme jak je to s grafickými procesory v Azure a proč je efektivní krájení karet důležitá novinka.

Počítání a machine learning

Větší část strojů s grafickým výkonem není zaměřená na živou interakci uživatele, ale na počítání. Typicky jde o renderování filmů a jiné grafické výpočty na pozadí (skládání 2D obrázků do 3D modelu apod.), statistické analýzy a simulace (třeba Monte Carlo), náročnější výpočty typu termodynamika nebo DNA sequencing a také machine learning algoritmy. Najdeme je v řadách NC (silné i v double precission, tedy i pro náročnější počítání a rendering) a ND (optimalizované pro ML a AI, někdy silné jen v single precission jako je P40 karta) a jde o NVIDIA karty typu K80, P40, P100 nebo V100. High-end model v této oblasti je NDv2 což je šelmostroj obsahující v jednom VM hned 8 karet V100 vzájemně propojených NVLINKem. Tahle šílenost stojí skoro 30 USD na hodinu a stejně jako některé jiné modely si můžete vzít víc nodů a propojit je nízkolatenčním InfiniBandem (což v jiných public cloudech většinou nenajdete).

Další éra hráčských konzolí - streaming z cloudu

Odbočím zpět k use case příkladům a jeden je vidět přímo v Microsoftu - XBOX. Příští generace herních konzolí se buduje nad konceptem hry běžící v cloudu a její streamování na levné zařízení včetně mobilu. To odstraňuje bariéru vstupu (nákup konzole) a nové obchodní modely (Sony ostatně pracuje na tom samém). Kde XBOX (aktuálně se interně testuje, pro zákazníky ještě k dispozici není, ale měl jsem možnost si vyzkoušet) poběží? No jasně že v Azure. Ostatně online část už v něm běží dávno, ale teď se přesune i samotný runtime hry do Azure.

Mimochodem před časem šlo oznámení, že právě Sony a Microsoft Azure chystají spolupráci v této oblasti - překvapivé, ale zdá se, že Sony bude konkurenční platformu k XBOXu provozovat v Azure https://news.microsoft.com/2019/05/16/sony-and-microsoft-to-explore-strategic-partnership/

Profesionální grafické stanice i desktopy pro náročnější uživatele

Vraťme se ke scénáři interaktivního užívání, tedy člověk se připojí na desktop a něco tam dělá. Pro profesionální aplikace je tu již nějakou dobu řada NV a NVv3 postavená na kartě NVIDIA M60. To je výborný kousek a dosahuje velmi dobrých výkonů. Samozřejmě latence může mít vliv, ale velké množství scénářů s ní nemá problém zejména při použití profesionálních protokolů jako je Terradici. NV řada zahrnuje i NVIDIA GRID licenci pro odemčení všech funkcí a masivní podporu profesionálního software. Můžete tak například nechat profesionála pracovat z domova, aniž byste mu museli za čtvrt mega půjčovat “krabičku”.

Ne každý je ale takový profík. Jsou tady dlouhodobě scénáře použití s VDI a dobrým příkladem je Windows Virtual Desktop, kdy v rámci programů Office365 a některých Windows 10 plánů máte v ceně licence na Windows 10 v cloudu včetně multi-session a WVD je orchestrační služba a gateway v Azure zadarmo (platíte tak jen za běh VM). Pro běžné uživatele výborný způsob jak dostat legacy aplikace do mobilu nebo na cesty obecně či mít kontrolované prostředí a levnější koncovou stanici například na stánku firmy. Na nenáročné aplikace stačí běžné VM, grafický výkon není pro práci ve Wordu tolik potřeba. Jenže jsou i uživatelé náročnější. Pracovník marketingu musí třeba upravovat fotografie a tak podobně. Co s tím? Není to profík, pro kterého má smysl koupit M60 - to je naprostý overkill. Jenže nějakou grafiku by potřeboval. A o tom je NV v4.

NV generace 4 a krájení karty

Možná vás zarazí proč až teď. Vždyť přece hypervisor umí GPU virtualizovat už pár let, tak v čem je problém, ostatně jsou cloudoví poskytovatelé, kteří touto cestou šli. Microsoft ne a to především z důvodu efektu hlučného souseda a bezpečnosti. Softwarové nasdílení jednoho GPU vícero klientům je problematické, protože nedokáže efektivně oddělovat zdroje karty co do využití zdrojů a bezpečnosti. Výkonnost tak může dost kolísat, což pro interaktivní způsob práce znamená docela problém, a jsou tu otazníky nad izolací třeba paměťového prostoru jednotlivých klientů (nezapomeňte - CPU se tento model práce ladilo skoro 10 let a má speciální instrukce, aby to šlo a bylo to bezpečné) apod. Kromě toho samozřejmě softwarový most má vliv na výkon. Jak tedy jinak?

AMD (a předpokládám ostatní výrobci na tom pracují taky) společně s cloud providery vytvořil možnost rozřezání GPU přímo v hardware a prezentaci těchto dílků jako samostatná zařízení. SR-IOV je technika, kterou můžete zařízení fyzického serveru napojit přímo do guest OS bez nutnosti jít přes OS hostitele (a ještě se může jedna karta tvářit jako třeba 8 fyzických a ty pak každá ještě podporují virtual functions pro další členění). Takto jsou třeba namapované síťové karty v Azure pokud použijete režim Accelerated Networking - najednou místo nějakého virtuálního driveru typu Intel 1000 apod. máte skutečnou kartu, protože vznikl most mezi guest OS a hardware. GPU AMD se nově dokáže rozdělit a to až na osminky. Takže například 16GB paměti celého GPU umí nabídnout jako 8+8, 8+4+2+2 a tak podobně. Tak jak fyzicky krájí paměťový prostor, tak umí rozdělovat i jednolivá výpočetní jádra a každý tento dílek může existovat jako SR-IOV zařízení. No a přesně takhle to udělal Microsoft s AMD Radeon Instinct MI25 a řadou serverů NVv4.

Co je výsledkem? Když se podívám na největší model, NV32as_v4, tak dává 32 CPU cores, 112GB RAM a celou kartu MI25, která je svým hrubým výkonem řádově podobná, jako M60 v NVv3 (ale nemá podporu pro některý ultraprofesionání software). Pokud bych chtěl jeden čip M60, použil bych NV12s_v3 a získal 12 CPU cores, 112GB RAM a 1 GPU čip, což mě vyjde o 20% dráž (bez OS) než NV32as_v4. Co když potřebuji virtuální desktop pro náročného, ale běžného uživatele a chtěl bych jít níž. To v řadě NVv3 už nemůžu, ale v NVv4 ano. NV16as_v4 má půlku, NV8as_v4 čtvrku a NV4as_v4 disponuje jednou osminou GPU karty, 4 CPU cores, 14GB RAM a patřičný lineární díl ceny. Pro Windows Virtual Desktop určitě velmi zajímavá kategorie VM.

Řešíte strategii kolem virtuálních desktopů? Kombinace Windows Virtual Desktop, licenčních plánů Office365 nebo Windows 10 a Azure pro podkladové VM včetně varianty NVv4 jsou směr, který je hodně výhodný a doporučuji prozkoumat.



GitHub Codespaces - vývojářské prostředí od stroje po knihovny a kompilátor, které naběhne za 15 vteřin Compute
Microsoft Dev Box - virtuální pecko pro vývojáře a kdy použít vs. GitHub Codespaces, Windows365 nebo Azure Virtual Desktop Compute
ARM64 v Azure a jak používat s Kubernetes, Terraform a GitHub Actions a multi-arch image Compute
On-demand capacity reservation vs. reserved instances v Azure - kdy co a proč nejčastěji oboje Compute
Confidential Computing - zabezpečení dat při jejich používání, kdy ani root systému nemá šanci je rozlousknout Compute