Graphcoreã®Poplar® SDKã¯ãéçºè ãDocker Hubãä»ããŠã¢ã¯ã»ã¹ã§ããGraphcoreã¯Dockerã®Verified Publisher Programã«åå ããŠããŸãã DockerãšååããŠããœãããŠã§ã¢ã¹ã¿ãã¯ãã³ã³ããã€ã¡ãŒãžãšããŠé åžããéçºè ãGraphcore IPUã·ã¹ãã ã§MLã¢ããªã±ãŒã·ã§ã³ãç°¡åã«æ§ç¯ã管çããããã€ã§ããããã«ããŸãã

ããŒããŠã§ã¢ãšãœãããŠã§ã¢ãããã«äœ¿ããããããããã«ãéçºè ãšã¯ã¹ããªãšã³ã¹ãç¶ç¶çã«åŒ·åããŠããŸãã ã¡ããã©1幎åããŠãŒã¶ãŒåãã«äºåã«æ§ç¯ãããDockerã³ã³ããã®ã»ã¬ã¯ã·ã§ã³ãå°å ¥ããŸããã çŸåšãã€ãããŒã·ã§ã³ãæšé²ãããšããããã·ã§ã³ã®äžç°ãšããŠãPoplar SDKãPyTorch for IPUãTensorFlow for IPUãããã³ããŒã«ã«ãDocker Hub ã³ãã¥ããã£ã®ãã¹ãŠã®äººãå®å šã«ã¢ã¯ã»ã¹ã§ããããã«ããŠããŸãã
ããã§ã¯ãéçºè åãã®å 容ãšéå§æ¹æ³ã®è©³çްã«ã€ããŠèª¬æããŸãã
Dockerãã³ãã¥ããã£ã«ãšã£ãŠéåžžã«éèŠã§ããçç±
Dockerã¯ã³ã³ããã€ã¡ãŒãžããã«ããããã®äž»èŠãªãœãŒã¹ã«ãªããŸãã -Â ææ°ã®ã€ã³ããã¯ã¹ã¬ããŒãã«ãããšã Docker Hubã§ã¯åèšÂ 3,960å 件ã®ãã«ããããŸããã ããã«ãDocker Hubã¯ã80,000人ã®éçºè ãåçãã 2021幎ã®ã¹ã¿ãã¯ãªãŒããŒãããŒèª¿æ»Â ã«åºã¥ããŠããæãæ±ããããæããã䜿çšãããŠããã éçºè ããŒã«ã®1ã€ã§ããÂ

IPUéçºè åãã«ã¯ãPyTorchãTensorFlowã䜿çšããŠããŸãã¯Graphcoreã®Poplar SDKã§çŽæ¥æ§ç¯ãããã¢ããªã±ãŒã·ã§ã³çšã«äºåã«ããã±ãŒãžåãããã©ã³ã¿ã€ã ç°å¢ãæäŸããããšã«ãããIPUã·ã¹ãã ã®æ¬çªç°å¢ã«ãããã€ãããã¢ããªã±ãŒã·ã§ã³éçºã¯ãŒã¯ãããŒãç°¡çŽ åããã³å éããŸãã ã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã¯ãäžè²«æ§ã®ããå埩å¯èœãªå®è¡ã«ããã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãé«ããå€ãã® MLOps ãã¬ãŒã ã¯ãŒã¯ã«ãšã£ãŠéèŠãªã€ããŒãã©ãŒã§ãã
éçºè ã¯äœãå©çšã§ããŸãã?
çŸåšãéçºè ã¯ãç¹ã«ãã·ã³ã€ã³ããªãžã§ã³ã¹ã¢ããªã±ãŒã·ã§ã³åãã«ãIPU(ã€ã³ããªãžã§ã³ã¹ããã»ãã·ã³ã°ãŠããã)ãšå ±åèšèšãããPoplarãœãããŠã§ã¢ã¹ã¿ãã¯ãèªç±ã«ã€ã³ã¹ããŒã«ã§ããŸãã Poplarã¯Graphcoreã®ã°ã©ãããŒã«ãã§ãŒã³ã§ãããæšæºã®æ©æ¢°åŠç¿ãã¬ãŒã ã¯ãŒã¯ãšå®å šã«çµ±åããã䜿ããããæè»ãªãœãããŠã§ã¢éçºç°å¢ã®äžæ žã«äœçœ®ããŠãããããéçºè ã¯æ¢åã®ã¢ãã«ãç°¡åã«ç§»æ€ã§ããŸãã IPUããæå€§ã®ããã©ãŒãã³ã¹ãåŒãåºãããã«ãã«ã³ã³ãããŒã«ãæãéçºè ã®ããã«ãããã©ã¯PopARTâ¢(ããã©ã¢ããã³ã¹ãã©ã³ã¿ã€ã )ãä»ããŠPythonãšC ++ã§çŽæ¥IPUããã°ã©ãã³ã°ãå¯èœã«ããŸãã

Poplar SDK ã€ã¡ãŒãžã¯ã次ã®ãªããžããªãããã«ã§ããŸãã
- ããã©SDK - ããã©ããããã¢ãŒããããã³IPUããã€ã¹ãšå¯Ÿè©±ããããã®ããŒã«ãå«ãŸããŠããŸãÂ
- PyTorch for IPU â PyTorch ããã¬ã€ã³ã¹ããŒã«ããã Poplar SDK ãªããžããªã®ãã¹ãŠãå«ãŸããŠããŸã
- TensorFlow for IPU â TensorFlow 1 ãŸã㯠2 ãããªã€ã³ã¹ããŒã«ããã Poplar SDK ãªããžããªã®ãã¹ãŠãå«ãŸããŠããŸã
- ããŒã« â IPUããã€ã¹ã®ç®¡çããŒã«ãšèšºæããŒã«Â ãå«ãŸããŠããŸã
ãŸããDocker Verified Publisher Programã®äžç°ãšããŠãGraphcoreã³ã³ããã€ã¡ãŒãžã¯ã¬ãŒãå¶éããå é€ãããŠãããéçºè ã¯Docker Hubãµãã¹ã¯ãªãã·ã§ã³ã«é¢ä¿ãªããPoplarã«å¯ŸããŠç¡å¶éã®ã³ã³ããã€ã¡ãŒãžãªã¯ãšã¹ããè¡ãããšãã§ããŸãã
ããã«ãŒã§ããã©ã䜿ãå§ãã
Poplar Dockerã³ã³ããã¯ãIPUã§ã¢ãã«ãå®è¡ããããã«å¿ èŠãªãã¹ãŠã®ãã®ãå®å šãªãã¡ã€ã«ã·ã¹ãã ã«ã«ãã»ã«åããŸã(ã€ãŸããã°ã©ãã³ã¢ã®ããã©Â® SDKãã©ã³ã¿ã€ã ç°å¢ãã·ã¹ãã ããŒã«ãã³ã³ãã£ã°ãã©ã€ãã©ãª)ããããã®ã€ã¡ãŒãžã䜿çšã㊠IPU ã³ãŒããå®è¡ããã«ã¯ãæ¬¡ã®æé ãå®äºããå¿ èŠããããŸãã
1.ãã¹ããã·ã³ã«Dockerãã€ã³ã¹ããŒã«ããŸã
2. Graphcore ã® Poplar SDK ã³ã³ããã€ã¡ãŒãžã Docker Hub ãããã«ãã
3. IPUãžã®ã¢ã¯ã»ã¹ãæºåãã
4. Docker ã³ã³ããã§ IPU ã®ã¢ã¯ã»ã·ããªãã£ã確èªãã
5. IPUã®ãµã³ãã«ã¢ããªã³ãŒã
ãã¹ã ãã·ã³ã« Docker ãã€ã³ã¹ããŒã«ãã
Docker ã®ã€ã³ã¹ããŒã«ã¯ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãããŒãžã§ã³ãããã³ããã»ããµã«ãã£ãŠç°ãªããŸããÂ
Docker ã®å ¥éã¬ã€ãã«åŸãããšãã§ããŸãã
Graphcore ã® Poplar SDK ã³ã³ããã€ã¡ãŒãžã Docker Hub ãããã«ãã
Docker ãã€ã³ã¹ããŒã«ãããããã³ãã³ããå®è¡ããŠããã¹ããããŠããã€ã¡ãŒãžã Docker Hub ããããŠã³ããŒããããã¹ã ãã·ã³ã§å®è¡ã§ããŸãã Poplar SDK ã³ã³ãã㌠ã€ã¡ãŒãžã¯ãDocker Hub äžã®Â Graphcore Poplar ãªããžããªãããã«ã§ããŸãã
4 ã€ã®ãªããžããªãããããããã®ãªããžããªã«ã¯ãSDK ã®ããŒãžã§ã³ãOSãã¢ãŒããã¯ãã£ã«åºã¥ããŠè€æ°ã®ã€ã¡ãŒãžãå«ãŸããŠããå ŽåããããŸãã
ã°ã©ãã³ã¢/ãããŒãã°ã©ãã³ã¢/ãã³ãœã«ãããŒã°ã©ãã³ã¢/ããã©ã°ã©ãã³ã¢/ããŒã«
ãã¬ãŒã ã¯ãŒã¯ãªããžããªãããã«ãããšãããã©ã«ãã§AMDãã¹ãããã»ããµçšã«ã³ã³ãã€ã«ãããææ°ããŒãžã§ã³ã®SDKãããŠã³ããŒããããŸãã
ææ°ã® TensorFlow ã€ã¡ãŒãžããã«ããã«ã¯ã以äžã䜿çšããŸãã
$Â docker pull graphcore/tensorflow
ç¹å®ã® SDK ããŒãžã§ã³ãšããã»ããµã«å¯ŸããŠç¹å®ã®ãã«ããéžæããå Žåã¯ã Docker ã€ã¡ãŒãžã¿ã°ã«åºã¥ããŠã¿ã°ãæ§æã§ããŸãã
IPU ãžã®ã¢ã¯ã»ã¹ã®æºå
PODã§IPUãšéä¿¡ããã«ã¯ããã¹ããã·ã³ãšIPU(ãã¡ããªãã¯äžã®IPU(IPUoF))éã®æ¥ç¶ãæ§æããå¿
èŠããããŸããPoplarãããã€ã¹ã«ã¢ã¯ã»ã¹ããããã«å¿
èŠãªæ
å ±ã¯ãããã©ã«ãã§ããŒã ãã£ã¬ã¯ããªã®ãã£ã¬ã¯ããªã«æžã蟌ãŸããIPUoFæ§æãã¡ã€ã«ãä»ããŠæž¡ãããšãã§ããŸã()ã~/.ipuof.conf.dæ§æãã¡ã€ã«ã¯ãPoplarãã¹ããV-IPUã³ã³ãããŒã©ãŒã«çŽæ¥ãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ã§ããªãå Žåã«åœ¹ç«ã¡ãŸã(ã»ãã¥ãªãã£äžã®çç±ãªã©)ãÂ
Graphcloudã䜿çšããŠããå Žåãæ°ãããŠãŒã¶ãŒãäœæãããŠPODã«è¿œå ããããã³ã«ãIPUoFã®ããã©ã«ãã®æ§æãã¡ã€ã«ãçæãããŸãã .confããããã©ããã確èªããŸã ãã®ãã©ã«ãå
ã®ãã¡ã€ã«(äŸ:~/.ipuof.conf.d/lr21-3-16ipu.conf).ãã®èšå®ãããå Žåã¯ãæ¬¡ã®æé ã«é²ãããšãã§ããŸãã
å©çšã§ããªãå Žåã¯ã V-IPUã¬ã€ã:ã¯ããã«ã«åŸã£ãŠãV-IPUãµãŒããŒã«æ¥ç¶ããããã«Poplarãæ§æããå¿
èŠããããŸãã IPUoFæ§æãã¡ã€ã«ããã©ã«ããŒÂ ~/.ipuof.conf.d ã«ä¿åããŠã次ã®ã»ã¯ã·ã§ã³ã®ã¹ã¯ãªãããå®è¡ããããšã«æ³šæããŠãã ããã
Docker ã³ã³ããã䜿çšãã IPU ã®ã¢ã¯ã»ã·ããªãã£ã®æ€èšŒ
ã³ã³ããã®æºåãã§ããã®ã§ãã³ã³ããå ããIPUã«ã¢ã¯ã»ã¹ã§ãããã©ããã確èªã§ããŸãã
ã³ã³ããã®ã³ã³ããã¹ãå ã®IPUããã€ã¹ãäžèŠ§è¡šç€ºããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
$Â docker run --rm --ulimit memlock=-1:-1 --net=host --cap-add=IPC_LOCK --device=/dev/infiniband --ipc=host -v ~/.ipuof.conf.d/:/etc/ipuof.conf.d -it graphcore/tools gc-info -l
ãµã³ãã«ã® TensorFlow ã¢ããªãå®è¡ãã
ãŸããGitHub ã® Graphcore ãã¥ãŒããªã¢ã« ãªããžããªããã³ãŒããååŸããŸãã
$Â git clone https://github.com/graphcore/tutorials.git
$ cdãã¥ãŒããªã¢ã«
Docker ã³ã³ãããŒã¯åé¢ãããç°å¢ã§ãã 空ã«ãªãããã¹ããã·ã³ã®ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããªããªããŸãããã¹ã ãã·ã³ã®ããŒã¿ã䜿çšããã«ã¯ãDocker ã³ã³ãããŒå ã§ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸããÂ
ãã£ã¬ã¯ããªãããªã¥ãŒã ãšããŠããŠã³ããããã¹ã ãã·ã³ãš Docker ã³ã³ãããŒç°å¢ã®éã§ããŒã¿ãå ±æããããšã§ãããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããããšãã§ããŸããÂ
DockerããŒã¹ã®éçºç°å¢ã§äœæ¥ããå Žåã®äžè¬çãªãã¿ãŒã³ã¯ãçŸåšã®ãã£ã¬ã¯ããªãã³ã³ããã«ããŠã³ãã(ã»ã¯ã·ã§ã³ 2.2, ãã¹ãããã®ãã£ã¬ã¯ããªã®ããŠã³ããåç
§)ãã³ã³ãã -w <dir name>å
ã®äœæ¥ãã£ã¬ã¯ããªã ã§èšå®ããŸãã ããšãã°ã-v "$(pwd):/app" -w /app.
TensorFlow ã³ã³ãããŒã§ mnist ã®äŸãå®è¡ããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŠããã¥ãŒããªã¢ã« ãªããžããªã Docker ã³ã³ãããŒã«ããŠã³ãããŠå®è¡ããŸãã
$Â docker run --rm --ulimit memlock=-1:-1 --net=host --cap-add=IPC_LOCK --device=/dev/infiniband --ipc=host -v ~/.ipuof.conf.d/:/etc/ipuof.conf.d -it -v "$(pwd):/app" -w /app graphcore/tensorflow:2 python3 simple_applications/tensorflow2/mnist/mnist.py
ãã®ã²ã¹ãããã°æçš¿ã¯ ããšããšããã«æ²èŒãããŸããã