A3C implementálása párhuzamosítva

2018-2019 ősz

Szoftver

Téma leírása

Az A3C algoritmus (Asynchronous Advantage Actor Critic) egy state-of-the-art reinforcement learning algoritmus, ami pusztán CPU használatával is képes rövid időn belül megtanulni az Atari játékokat videó bemenet alapján. Az algoritmus aszinkron volta miatt párhuzamosítást igényel, de a Python a GIL (Global Interpreter Locking) miatt nem képes hatékonyan kihasználni a többmagos processzorokat.

Feladat: A hallgató feladata az algoritmus implementálása és párhuzamosítása Python kompatibilis módon. Tehát a félév végére keletkezzen egy Python package/interfész, ami tartalmazza az A3C implementációját. Lehetséges megközelítés a C++ alkalmazása a párhuzamosításhoz és a numpy library használata, ami szintén C++-ban íródott. További lehetőségek az IronPython illetve a Cython használata. Az egyes lehetséges megközelítések elemzése után implementációk készítése és azok összehasonlítása a futás idő szempontjából. Demó egy Atari játékon illetve összehasonlítás egy meglévő implementációval (pl. keras-rl lib). Megoldás publikálása github-on (vagy hasonló platformon).

Alkalmazott technológiák, amiket meg lehet ismerni:

  • PyTorch (vagy Tensorflow)
  • Open AI gym
  • Cython
  • A3C
  • Saját Python package integrálása numpy-jal


Megjegyzés: Ha érdekel a téma előbb mindenképp vedd fel velem a kapcsolatot, de még ne jelentkezz rá!

Feltételek

  • reinforcement learning
  • deep learning ismeretek, Python

Maximális létszám: 1 fő