Apache MXNet เช…เชจเซ‡ Horovod เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃ

เชฒเซ‡เช–เชจเซ‹ เช…เชจเซเชตเชพเชฆ เช•เซ‹เชฐเซเชธเชจเซ€ เชถเชฐเซ‚เช†เชคเชจเซ€ เชชเซ‚เชฐเซเชตเชธเช‚เชงเซเชฏเชพเช เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ "เชฌเชฟเช— เชกเซ‡เชŸเชพ เชชเชฐ เช”เชฆเซเชฏเซ‹เช—เชฟเช• ML"

เชฌเชนเซเชตเชฟเชง เช‰เชšเซเชš-เชชเซเชฐเชฆเชฐเซเชถเชจ เช•เชฎเซเชชเซเชฏเซเชŸเซ€เช‚เช— เชฆเชพเช–เชฒเชพเช“ เชชเชฐ เชตเชฟเชคเชฐเชฟเชค เชคเชพเชฒเซ€เชฎ เช†เชงเซเชจเชฟเช• เชกเซ€เชช เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธเชจเชพ เชชเซเชฐเชถเชฟเช•เซเชทเชฃ เชธเชฎเชฏเชจเซ‡ เช…เช เชตเชพเชกเชฟเชฏเชพเชฅเซ€ เช•เชฒเชพเช•เซ‹ เช…เชฅเชตเชพ เชฎเชฟเชจเชฟเชŸ เชธเซเชงเซ€ เช˜เชŸเชพเชกเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เช† เชคเชพเชฒเซ€เชฎ เชคเช•เชจเซ€เช•เชจเซ‡ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช—เชจเชพ เชตเซเชฏเชตเชนเชพเชฐเซ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎเซ‹เชฎเชพเช‚ เชชเซเชฐเชšเชฒเชฟเชค เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชธเชฎเชœเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชนเซเชตเชฟเชง เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ‡ เชถเซ‡เชฐ เช…เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเซ‹, เชœเซ‡ เชฌเชฆเชฒเชพเชฎเชพเช‚ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชชเชฐ เชฎเซ‹เชŸเซ€ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡. เช† เช‰เชชเชฐเชพเช‚เชค, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เช เชชเชฃ เชœเชพเชฃเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชคเชพเชฒเซ€เชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเชฎเชพเชตเชตเซ€ เช•เซ‡ เชœเซ‡ เชเช• เชœ เช‰เชฆเชพเชนเชฐเชฃ เชชเชฐ เชฌเชนเซเชตเชฟเชง เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช“เชชเชจ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช— เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ Apache MXNet เช…เชจเซ‡ Horovod เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชฒเชฐเซเชจเชฟเช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชถเซ€เช–เชตเชพเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเชตเชพเชจเซ€ เชเชกเชชเซ€ เช…เชจเซ‡ เชธเชฐเชณ เชฐเซ€เชค เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ Horovod เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเชพเชญเซ‹ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฆเชฐเซเชถเชพเชตเซ€เชถเซเช‚ เช…เชจเซ‡ MXNet เชคเชพเชฒเซ€เชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เชตเซ€ เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซ€เชถเซเช‚ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เชคเซ‡ Horovod เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡.

Apache MXNet เชถเซเช‚ เช›เซ‡

เช…เชชเชพเชšเซ‡ เชเชฎเชเช•เซเชธเชจเซ‡เชŸ เชเช• เช“เชชเชจ-เชธเซ‹เชฐเซเชธ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชกเซ€เชช เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเชจเชพเชตเชตเชพ, เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพ เช…เชจเซ‡ เชœเชฎเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. MXNet เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชœเชŸเชฟเชฒเชคเชพเช“เชจเซ‡ เช…เชฎเซ‚เชฐเซเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡ เช–เซ‚เชฌ เชœ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช…เชจเซ‡ เชธเซเช•เซ‡เชฒเซ‡เชฌเชฒ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“ เชฎเชพเชŸเซ‡ API เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡ เชชเชพเชฏเชฅเซ‹เชจ, เชธเซ€ ++, เช•เซเชฒเซ‹เชเชฐ, เชœเชพเชตเชพ, เชœเซเชฒเชฟเชฏเชพ, R, เชธเซเช•เชพเชฒเชพ เช…เชจเซ‡ เช…เชจเซเชฏ.

เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ MXNet เชฎเชพเช‚ เชตเชฟเชคเชฐเชฟเชค เชคเชพเชฒเซ€เชฎ

MXNet เชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชตเชฟเชคเชฐเชฟเชค เชฒเชฐเซเชจเชฟเช‚เช— เชฎเซ‹เชกเซเชฏเซเชฒ เชชเชฐเชฟเชฎเชพเชฃ เชธเชฐเซเชตเชฐ เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เชฆเชฐเซ‡เช• เช•เชพเชฐเซเชฏเช•เชฐ เชชเชพเชธเซ‡เชฅเซ€ เช—เซเชฐเซ‡เชกเชฟเชเชจเซเชŸเซเชธ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ, เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เช•เชฐเชตเชพ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸเซ‡เชก เช—เซเชฐเซ‡เชกเชฟเชฏเชจเซเชŸเซเชธเชจเซ‡ เช†เช—เชพเชฎเซ€ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟ เชฎเชพเชŸเซ‡ เช•เชพเชฎเชฆเชพเชฐเซ‹เชจเซ‡ เชชเชพเช›เชพ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐเชจเชพ เชธเชฎเซ‚เชนเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช•เชพเชฎเชฆเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐเชจเซ‹ เชธเชพเชšเซ‹ เช—เซเชฃเซ‹เชคเซเชคเชฐ เชจเช•เซเช•เซ€ เช•เชฐเชตเซ‹ เช เช…เชธเชฐเช•เชพเชฐเช• เชธเซเช•เซ‡เชฒเชฟเช‚เช—เชจเซ€ เชšเชพเชตเซ€ เช›เซ‡. เชœเซ‹ เชคเซเชฏเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชœ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เช—เชฃเชคเชฐเซ€เชฎเชพเช‚ เช…เชกเชšเชฃเชฐเซ‚เชช เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเชฟเชค, เชœเซ‹ เช˜เชฃเชพ เชฌเชงเชพ เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซ‹ เช˜เชฃเชพ-เชฅเซ€-เช˜เชฃเชพ เชธเช‚เชšเชพเชฐ เชฌเชงเชพ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชถเซเช‚ เช›เซ‡

เชนเซ‹เชฐเซ‹เชตเซ‹เชก เช‰เชฌเซ‡เชฐ เช–เชพเชคเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช“เชชเชจ เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช›เซ‡. เชคเซ‡ เชธเชฎเช—เซเชฐ เชตเซ‹เชฐเซ‡เช•เซเชธเชฎเชพเช‚ เชฎเซ‹เชกเชฒ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชเช•เช‚เชฆเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ NVIDIA เช•เชฒเซ‡เช•เซเชŸเชฟเชต เช•เซ‹เชฎเซเชฏเซเชจเชฟเช•เซ‡เชถเชจเซเชธ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ (NCCL) เช…เชจเซ‡ เชฎเซ‡เชธเซ‡เชœ เชชเชพเชธเชฟเช‚เช— เช‡เชจเซเชŸเชฐเชซเซ‡เชธ (MPI) เชœเซ‡เชตเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช•เซเชฐเซ‹เชธ-GPU เช…เชจเซ‡ เช•เซเชฐเซ‹เชธ-เชจเซ‹เชก เชคเช•เชจเซ€เช•เซ‹เชจเซ‹ เชฒเชพเชญ เชฒเซ‡ เช›เซ‡. เชคเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเซ‡เชจเซเชกเชตเชฟเชกเซเชฅเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชกเซ€เชช เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช• เชฎเซ‹เชกเชฒเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเซเช•เซ‡เชฒ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เชนเชพเชฒเชฎเชพเช‚ เช˜เชฃเชพ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชเชฎเชเช•เซเชธ เชจเซ‡เชŸ, Tensorflow, Keras, เช…เชจเซ‡ PyTorch.

MXNet เช…เชจเซ‡ Horovod เชเช•เซ€เช•เชฐเชฃ

MXNet Horovod เชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชฒเชฐเซเชจเชฟเช‚เช— API เชฆเซเชตเชพเชฐเชพ Horovod เชธเชพเชฅเซ‡ เชเช•เซ€เช•เซƒเชค เชฅเชพเชฏ เช›เซ‡. Horovod เชธเช‚เชšเชพเชฐ APIs horovod.broadcast(), horovod.allgather() ะธ horovod.allreduce() เชคเซ‡เชจเชพ เชŸเชพเชธเซเช• เช—เซเชฐเชพเชซเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡, MXNet เชเชจเซเชœเชฟเชจเชจเชพ เช…เชธเซเชฎเซ‡เชณ เช•เซ‰เชฒเชฌเซ‡เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช† เชฐเซ€เชคเซ‡, เชธเช‚เชšเชพเชฐ เช…เชจเซ‡ เช—เชฃเชคเชฐเซ€ เชตเชšเซเชšเซ‡เชจเชพ เชกเซ‡เชŸเชพเชจเซ€ เช…เชตเชฒเช‚เชฌเชจเชจเซ‡ MXNet เชเชจเซเชœเชฟเชจ เชฆเซเชตเชพเชฐเชพ เชธเชนเซ‡เชฒเชพเชˆเชฅเซ€ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชธเซเชฎเซ‡เชณเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชฎเชพเช‚ เชฅเชคเชพ เชจเซเช•เชธเชพเชจเชจเซ‡ เชŸเชพเชณเซ€ เชถเช•เชพเชฏ. เชนเซ‹เชฐเซ‹เชตเซ‹เชกเชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฟเชคเชฐเชฟเชค เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ horovod.DistributedOptimizer เชตเชฟเชธเซเชคเชฐเซ‡ เช›เซ‡ .เชชเซเชŸเชฟเชฎเชพเช‡เชเชฐ MXNet เชฎเชพเช‚ เชœเซ‡เชฅเซ€ เชคเซ‡ เชตเชฟเชคเชฐเชฟเชค เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เช…เชชเชกเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค Horovod API เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡. เช† เชคเชฎเชพเชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชตเชฟเช—เชคเซ‹ เช…เช‚เชคเชฟเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชชเชพเชฐเชฆเชฐเซเชถเช• เช›เซ‡.

เชเชกเชชเซ€ เชถเชฐเซ‚เช†เชค

เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ MacBook เชชเชฐ MXNet เช…เชจเซ‡ Horovod เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ MNIST เชกเซ‡เชŸเชพเชธเซ‡เชŸ เชชเชฐ เชจเชพเชจเชพ เช•เชจเซเชตเซ‹เชฒเซเชฏเซเชถเชจเชฒ เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เชเชกเชชเชฅเซ€ เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
เชชเซเชฐเชฅเชฎ, PyPI เชฎเชพเช‚เชฅเซ€ mxnet เช…เชจเซ‡ horovod เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:

pip install mxnet
pip install horovod

เชจเซ‹เช‚เชง: เชœเซ‹ เชคเชฎเชจเซ‡ เชคเซ‡ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซ‹เชˆ เชญเซ‚เชฒ เช†เชตเซ‡ pip horovod เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹เช•เชฆเชพเชš เชคเชฎเชพเชฐเซ‡ เชšเชฒ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ MACOSX_DEPLOYMENT_TARGET=10.vvเชœเซเชฏเชพเช‚ vv - เช† เชคเชฎเชพเชฐเชพ MacOS เชธเช‚เชธเซเช•เชฐเชฃเชจเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, MacOSX Sierra เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ MACOSX_DEPLOYMENT_TARGET=10.12 pip install horovod

เชชเช›เซ€ OpenMPI เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ เช…เชนเซ€เช‚เชฅเซ€.

เช…เช‚เชคเซ‡, เชŸเซ‡เชธเซเชŸ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹ mxnet_mnist.py เช…เชนเซ€เช‚เชฅเซ€ เช…เชจเซ‡ เชตเชฐเซเช•เชฟเช‚เช— เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ MacBook เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ‹:

mpirun -np 2 -H localhost:2 -bind-to none -map-by slot python mxnet_mnist.py

เช† เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเชพ เชฌเซ‡ เช•เซ‹เชฐเซ‹ เชชเชฐ เชคเชพเชฒเซ€เชฎ เชšเชฒเชพเชตเชถเซ‡. เช†เช‰เชŸเชชเซเชŸ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เชนเชถเซ‡:

INFO:root:Epoch[0] Batch [0-50] Speed: 2248.71 samples/sec      accuracy=0.583640
INFO:root:Epoch[0] Batch [50-100] Speed: 2273.89 samples/sec      accuracy=0.882812
INFO:root:Epoch[0] Batch [50-100] Speed: 2273.39 samples/sec      accuracy=0.870000

เชชเซเชฐเชฆเชฐเซเชถเชจ เชกเซ‡เชฎเซ‹

เชœเซเชฏเชพเชฐเซ‡ เช†เช  เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฅเซ‡ 50 GPUs เชชเชฐ เช‡เชฎเซ‡เชœเชจเซ‡เชŸ เชกเซ‡เชŸเชพเชธเซ‡เชŸ เชชเชฐ ResNet1-v64 เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชคเซ€ เชตเช–เชคเซ‡ p3.16xเชฎเซ‹เชŸเซ‹ EC2, เชฆเชฐเซ‡เช• AWS เช•เซเชฒเชพเช‰เชก เชชเชฐ 8 NVIDIA Tesla V100 GPU เชงเชฐเชพเชตเซ‡ เช›เซ‡, เช…เชฎเซ‡ 45000 เช‡เชฎเซ‡เชœ/เชธเซ‡เช•เชจเซเชก (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก เชชเซเชฐเชถเชฟเช•เซเชทเชฟเชค เชจเชฎเซ‚เชจเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ) เชจเซเช‚ เชคเชพเชฒเซ€เชฎ เชฅเซเชฐเซเชชเซเชŸ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡. 44% เชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชšเซ‹เช•เชธเชพเชˆ เชธเชพเชฅเซ‡ 90 เชฏเซเช— เชชเช›เซ€ 75.7 เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เชคเชพเชฒเซ€เชฎ เชชเซ‚เชฐเซเชฃ เชฅเชˆ.

เช…เชฎเซ‡ เช†เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ MXNet เชจเชพ 8, 16, 32 เช…เชจเซ‡ 64 GPUs เชชเชฐ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชตเชฟเชคเชฐเชฟเชค เชชเซเชฐเชถเชฟเช•เซเชทเชฃ เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡ เช…เชจเซเช•เซเชฐเชฎเซ‡ เชเช• เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชฅเซ€ เชตเชฐเซเช•เชฐ เชฐเซ‡เชถเชฟเชฏเซ‹ 1 เชฅเซ€ 1 เช…เชจเซ‡ 2 เชฅเซ€ 1 เชธเชพเชฅเซ‡ เช•เชฐเซ€ เช›เซ‡. เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช†เช•เซƒเชคเชฟ 1 เชฎเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เชกเชพเชฌเซ€ เชฌเชพเชœเซเชจเชพ y-เช…เช•เซเชท เชชเชฐ, เชฌเชพเชฐ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชกเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช›เชฌเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, เชฐเซ‡เช–เชพเช“ เชœเชฎเชฃเซ€ เชฌเชพเชœเซเชจเชพ y-เช…เช•เซเชท เชชเชฐ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชตเชพเชธเซเชคเชตเชฟเช• เช…เชจเซ‡ เช†เชฆเชฐเซเชถ เชฅเซเชฐเซเชชเซเชŸเชจเซ‹ เช—เซเชฃเซ‹เชคเซเชคเชฐ) เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชธเชฐเซเชตเชฐเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเซเชฏเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เชนเซ‹เชฏ, เชคเซ‹ 38 GPU เชชเชฐ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช˜เชŸเซ€เชจเซ‡ 64% เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชœเซ‡เชตเซ€ เชœ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช•เชพเชฎเชฆเชพเชฐเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชธเชฐเซเชตเชฐเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฌเชฎเชฃเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

Apache MXNet เช…เชจเซ‡ Horovod เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃ
เช†เช•เซƒเชคเชฟ 1. เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ MXNet เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€

เชจเซ€เชšเซ‡เชจเชพ เช•เซ‹เชทเซเชŸเช• 1 เชฎเชพเช‚, เช…เชฎเซ‡ 64 GPUs เชชเชฐ เชชเซเชฐเชฏเซ‹เช—เซ‹ เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชฆเชพเช–เชฒเชพ เชฆเซ€เช  เช…เช‚เชคเชฟเชฎ เช–เชฐเซเชšเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช เช›เซ€เช. Horovod เชธเชพเชฅเซ‡ MXNet เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซŒเชฅเซ€ เช“เช›เซ€ เช•เชฟเช‚เชฎเชคเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชฅเซเชฐเซเชชเซเชŸ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

Apache MXNet เช…เชจเซ‡ Horovod เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃ
เช•เซ‹เชทเซเชŸเช• 1. เชนเซ‹เชฐเซ‹เชตเซ‹เชก เช…เชจเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡ 2 เชฅเซ€ 1 เชจเชพ เชธเชฐเซเชตเชฐ เชฅเซ€ เชตเชฐเซเช•เชฐ เชฐเซ‡เชถเชฟเชฏเซ‹ เชธเชพเชฅเซ‡ เช•เชฟเช‚เชฎเชคเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€.

เชชเซเชฐเชœเชจเชจ เชฎเชพเชŸเซ‡ เชชเช—เชฒเชพเช‚

เช†เช—เชณเชจเชพ เชชเช—เชฒเชพเช“เชฎเชพเช‚, เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเซ€เชถเซเช‚ เช•เซ‡ MXNet เช…เชจเซ‡ Horovod เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชคเชพเชฒเซ€เชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเชจเซเช‚ เชชเซเชจเชƒเช‰เชคเซเชชเชพเชฆเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚. MXNet เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเช‚เชšเซ‹ เช† เชชเซ‹เชธเซเชŸ.

เชชเช—เชฒเซเช‚ 1

เชตเชฟเชคเชฐเชฟเชค เชถเชฟเช•เซเชทเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ MXNet เชธเช‚เชธเซเช•เชฐเชฃ 1.4.0 เช…เชฅเชตเชพ เช‰เชšเซเชš เช…เชจเซ‡ Horovod เชธเช‚เชธเซเช•เชฐเชฃ 0.16.0 เช…เชฅเชตเชพ เชคเซ‡เชฅเซ€ เชตเชงเซ เชธเชพเชฅเซ‡ เชธเชœเชพเชคเซ€เชฏ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซเช‚ เช•เซเชฒเชธเซเชŸเชฐ เชฌเชจเชพเชตเซ‹. เชคเชฎเชพเชฐเซ‡ GPU เชคเชพเชฒเซ€เชฎ เชฎเชพเชŸเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ GPU เชกเซเชฐเชพเช‡เชตเชฐ 16.04, CUDA 396.44, cuDNN 9.2 เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€, NCCL 7.2.1 เช•เซ‹เชฎเซเชฏเซเชจเชฟเช•เซ‡เชŸเชฐ เช…เชจเซ‡ OpenMPI 2.2.13 เชธเชพเชฅเซ‡ เช‰เชฌเซเชจเซเชŸเซ 3.1.1 Linux เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชชเชฃ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชเชฎเซ‡เชเซ‹เชจ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช— AMI, เชœเซเชฏเชพเช‚ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชชเซเชฐเซ€-เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซ€ เช›เซ‡.

เชชเช—เชฒเซเช‚ 2

เชคเชฎเชพเชฐเซ€ MXNet เชคเชพเชฒเซ€เชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ Horovod API เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเซ‹. MXNet Gluon API เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชจเซ€เชšเซ‡เชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชฐเชณ เชจเชฎเซ‚เชจเชพ เชคเชฐเซ€เช•เซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชจเซเชฐเซ‚เชช เชคเชพเชฒเซ€เชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชนเซ‹เชฏ เชคเซ‹ เชฌเซ‹เชฒเซเชกเชฎเชพเช‚ เชฒเซ€เชŸเซ€เช“ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชธเชพเชฅเซ‡ เชถเซ€เช–เชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเชพเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เชคเชพเชฒเซ€เชฎ เชฏเซ‹เช—เซเชฏ เช—เซเชฐเชพเชซเชฟเช•เซเชธ เช•เซ‹เชฐ เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชฐเซ‡เชจเซเช• (เชฒเชพเช‡เชจ 8) เช…เชจเซเชธเชพเชฐ เชธเช‚เชฆเชฐเซเชญ เชธเซ‡เชŸ เช•เชฐเซ‹.
  • เชฌเชงเชพ เช•เชพเชฎเชฆเชพเชฐเซ‹ เชธเชฎเชพเชจ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช•เชพเชฐเซเชฏเช•เชฐเชฅเซ€ เชฌเชงเชพเชจเซ‡ (เชฒเชพเช‡เชจ 18) เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเชธเชพเชฐ เช•เชฐเซ‹.
  • เชนเซ‹เชฐเซ‹เชตเซ‹เชก เชฌเชจเชพเชตเซ‹ DistributedOptimizer (เชฒเชพเช‡เชจ 25) เชตเชฟเชคเชฐเชฟเชค เชฐเซ€เชคเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ Horovod-MXNet เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฒเซ‹ MNIST ะธ เชˆเชฎเซ‡เชœเชจเซ‡เชŸ.

1  import mxnet as mx
2  import horovod.mxnet as hvd
3
4  # Horovod: initialize Horovod
5  hvd.init()
6
7  # Horovod: pin a GPU to be used to local rank
8  context = mx.gpu(hvd.local_rank())
9
10 # Build model
11 model = ...
12
13 # Initialize parameters
14 model.initialize(initializer, ctx=context)
15 params = model.collect_params()
16
17 # Horovod: broadcast parameters
18 hvd.broadcast_parameters(params, root_rank=0)
19
20 # Create optimizer
21 optimizer_params = ...
22 opt = mx.optimizer.create('sgd', **optimizer_params)
23
24 # Horovod: wrap optimizer with DistributedOptimizer
25 opt = hvd.DistributedOptimizer(opt)
26
27 # Create trainer and loss function
28 trainer = mx.gluon.Trainer(params, opt, kvstore=None)
29 loss_fn = ...
30
31 # Train model
32 for epoch in range(num_epoch):
33    ...

เชชเช—เชฒเซเช‚ 3

MPI เชจเชฟเชฐเซเชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชคเชพเชฒเซ€เชฎ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎเชฆเชพเชฐเซ‹เชฎเชพเช‚เชจเชพ เชเช•เชฎเชพเช‚ เชฒเซ‹เช— เช‡เชจ เช•เชฐเซ‹. เช† เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชตเชฟเชคเชฐเชฟเชค เชคเชพเชฒเซ€เชฎ เชฆเชฐเซ‡เช• 4 GPU เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช•เซเชฒ 16 GPU เชธเชพเชฅเซ‡ เชšเชพเชฐ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡. เชธเซเชŸเซ‹เช•เซ‡เชธเซเชŸเชฟเช• เช—เซเชฐเซ‡เชกเชฟเชฏเชจเซเชŸ เชกเซ€เชธเซ‡เชจเซเชŸ (SGD) เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจเซ€เชšเซ‡เชจเชพ เชนเชพเชฏเชชเชฐเชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธ เชธเชพเชฅเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡:

  • เชฎเซ€เชจเซ€-เชฌเซ‡เชšเชจเซเช‚ เช•เชฆ: 256
  • เชถเซ€เช–เชตเชพเชจเซ‹ เชฆเชฐ: 0.1
  • เช—เชคเชฟ: 0.9
  • เชตเชœเชจเชฎเชพเช‚ เชธเชกเซ‹: 0.0001

เชœเซ‡เชฎ เชœเซ‡เชฎ เช…เชฎเซ‡ เชเช• GPU เชฅเซ€ 64 GPUs เชธเซเชงเซ€ เชธเซเช•เซ‡เชฒ เช•เชฐเซเชฏเซเช‚ เชคเซ‡เชฎ, เช…เชฎเซ‡ GPU เชจเซ€ เชธเช‚เช–เซเชฏเชพ (0,1 GPU เชฎเชพเชŸเซ‡ 1 เชฅเซ€ 6,4 GPUs เชฎเชพเชŸเซ‡ 64) เช…เชจเซเชธเชพเชฐ เชคเชพเชฒเซ€เชฎ เชฆเชฐเชจเซ‡ เชฐเซ‡เช–เซ€เชฏ เชฐเซ€เชคเซ‡ เชธเซเช•เซ‡เชฒ เช•เชฐเซเชฏเซ‹, เชœเซเชฏเชพเชฐเซ‡ GPU เชฆเซ€เช  เช›เชฌเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ 256 เชชเชฐ เชฐเชพเช–เซ€ ( เชจเซ€ เชฌเซ‡เชšเชฎเชพเช‚เชฅเซ€ 256 GPU เชฎเชพเชŸเซ‡ 1 เช›เชฌเซ€เช“ 16 GPU เชฎเชพเชŸเซ‡ 384). GPU เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เชฅเชคเชพเช‚ เชตเชœเชจเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹ เช…เชจเซ‡ เช—เชคเชฟเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฌเชฆเชฒเชพเชฏเชพ. เช…เชฎเซ‡ NVIDIA เชŸเซ‡เชธเซเชฒเชพ GPUs เชฆเซเชตเชพเชฐเชพ เชธเชฎเชฐเซเชฅเชฟเชค เชซเซเชฒเซ‹เชŸ64 เช—เชฃเชคเชฐเซ€เช“เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเซ‹เชฐเชตเชฐเซเชก เชชเชพเชธ เชฎเชพเชŸเซ‡ float16 เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐ เช…เชจเซ‡ เช—เซเชฐเซ‡เชกเชฟเชฏเชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ float32 เชธเชพเชฅเซ‡ เชฎเชฟเชถเซเชฐ เชšเซ‹เช•เชธเชพเช‡ เชคเชพเชฒเซ€เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹.

$ mpirun -np 16 
    -H server1:4,server2:4,server3:4,server4:4 
    -bind-to none -map-by slot 
    -mca pml ob1 -mca btl ^openib 
    python mxnet_imagenet_resnet50.py

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ Apache MXNet เช…เชจเซ‡ Horovod เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชฎเซ‹เชกเชฒ เชคเชพเชฒเซ€เชฎ เชฎเชพเชŸเซ‡ เชธเซเช•เซ‡เชฒเซ‡เชฌเชฒ เช…เชญเชฟเช—เชฎ เชชเชฐ เชœเซ‹เชฏเซเช‚. เช…เชฎเซ‡ เช‡เชฎเซ‡เชœเชจเซ‡เชŸ เชกเซ‡เชŸเชพเชธเซ‡เชŸ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ ResNet50-v1 เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชคเซ‡เชจเชพ เชชเชฐ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฐเซเชตเชฐ เช…เชญเชฟเช—เชฎเชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช…เชจเซ‡ เช–เชฐเซเชš-เช…เชธเชฐเช•เชพเชฐเช•เชคเชพ เชฆเชฐเซเชถเชพเชตเซ€. เช…เชฎเซ‡ เชเชตเชพ เชชเช—เชฒเชพเช‚ เชชเชฃ เชธเชพเชฎเซ‡เชฒ เช•เชฐเซเชฏเชพ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเชฎเซ‡ Horovod เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชฒเซเชŸเซ€-เช‡เชจเซเชธเซเชŸเชจเซเชธ เชŸเซเชฐเซ‡เชจเชฟเช‚เช— เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชนเชพเชฒเชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชœเซ‹ เชคเชฎเซ‡ เชนเชฎเชฃเชพเช‚ เชœ MXNet เช…เชจเซ‡ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช— เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹, เชคเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซƒเชทเซเช  เชชเชฐ เชœเชพเช“ MXNeเชชเซเชฐเชฅเชฎ MXNet เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡. เช…เชฎเซ‡ เชฒเซ‡เช– เชตเชพเช‚เชšเชตเชพเชจเซ€ เชชเชฃ เชญเชพเชฐเชชเซ‚เชฐเซเชตเช• เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€เช เช›เซ€เช 60 เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ MXNetเชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ MXNet เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ Horovod เชธเชพเชฅเซ‡ เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชฒเชฐเซเชจเชฟเช‚เช— เช…เชœเชฎเชพเชตเชตเชพ เชฎเชพเช—เซ‹ เช›เซ‹, เชคเซ‹ เชชเช›เซ€ เชœเซเช“ Horovod เชธเซเชฅเชพเชชเชจ เชชเชพเชจเซเช‚, เชคเซ‡เชจเซ‡ MXNet เชฅเซ€ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‡ เช…เชจเซเชธเชฐเซ‹ MNIST เช…เชฅเชตเชพ เชˆเชฎเซ‡เชœเชจเซ‡เชŸ.

*เช–เชฐเซเชšเชจเซ€ เช—เชฃเชคเชฐเซ€ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เชฒเชพเช•เชฆเซ€เช  เชฆเชฐเซ‹ EC2 เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ AWS

เช•เซ‹เชฐเซเชธ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ‹ "เชฌเชฟเช— เชกเซ‡เชŸเชพ เชชเชฐ เช”เชฆเซเชฏเซ‹เช—เชฟเช• ML"

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹