Vzpomínáte ještě na robota AlphaGo od Deepmindu (Alphabet), který před lety vítězil nad lidmi v náročné strategické hře go? Pokud vás tehdy stejně jako mnohé další trápila otázka: „A k čemu je to vlastně dobré,“ odpovědí je robot AlphaDev, s jehož plody se nepřímo dost možná setká úplně každý.
Deepmind se totiž v časopisu Nature pochlubil svojí prací na zdokonalování algoritmů pro knihovnu Standard C++ Library a hojně používaný překladač LLVM. O vše se postaral právě AlphaDev, který vzešel z AlphaZero (nástupce AlphaGo) a který také hrál hru.
Cílem hry byl algoritmus pro řazení hodnot
Jeho úkolem však nebylo soupeřit s lidmi ve strategických hrách, ale právě navrhovat efektivnější nízkoúrovňové algoritmy – především ty pro sestupné a vzestupné řazení hodnot, které patří k těm nejčastěji používaným. Cílem hry bylo dosáhnout co nejnižšího počtu procesorových instrukcí k seřazení několika položek. To se nakonec i podařilo a stroj v efektivitě překonal člověka.
Příklad funkce pro primitivní řazení dvou hodnot v C++ a její podoby v jazyku symbolických adres/assembleru. Právě v něm si hrál i AlphaDev, protože je to jen sled instrukcí, takže je pro stroj jendodušší
AlphaDev nicméně neprogramoval algoritmus v C++, ale v jazyku symbolických adres (assembleru) pro architekturu x86. Hotový algoritmus proto poté museli inženýři z DeepMindu znovu převést do C++, aby se mohla změna promítnout i do open-source projektu LLVM. V testech běžel algoritmus rychleji i na dalších procesorových architekturách.
Různé řadící algoritmy a srovnání AlphaDevu a současných člověkem napsaných implementací podle délky instrukcí a latence Další benchmarky jsou k dispozici zde
AlphaDev se musel všechno naučit úplně sám
Jelikož AlphaDev vychází z AI AlphaZero, do začátku dostal jen minimum esenciálních herních pravidel a neučil se na žádných člověkem naprogramovaných algoritmech.
Systémem Pokus-Omyl hlubokého zpětnovazebního strojového učení (DRL – Deep Reinforcement Learning) se naučil konstruovat algoritmy v assembleru pro x86 zcela sám a dosáhl lepších metrik než člověk.
Jelikož LLVM používají k překladu svých produktů velké ryby IT scény a komunitní projekty, efektivnější strojový kód nejspíše oceníme úplně všichni.