Apache MXNet เจ…เจคเฉ‡ Horovod เจจเจพเจฒ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ

เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เฉ‹เจฐเจธ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฆเฉ€ เจชเฉ‚เจฐเจต เจธเฉฐเจงเจฟเจ† 'เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ "เจฌเจฟเจ— เจกเฉ‡เจŸเจพ 'เจคเฉ‡ เจ‰เจฆเจฏเฉ‹เจ—เจฟเจ• เจเจฎ.เจเจฒ.

เจ•เจˆ เจ‰เฉฑเจš-เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจ†เจงเฉเจจเจฟเจ• เจกเฉ‚เฉฐเจ˜เฉ‡ เจคเฉฐเจคเฉ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ เจฆเฉ‡ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจนเจซเจผเจคเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจœเจพเจ‚ เจฎเจฟเฉฐเจŸเจพเจ‚ เจคเฉฑเจ• เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ‡เจธ เจธเจฟเจ–เจฒเจพเจˆ เจคเจ•เจจเฉ€เจ• เจจเฉ‚เฉฐ เจกเฉ‚เฉฐเจ˜เฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡ เจตเจฟเจนเจพเจฐเจ• เจ‰เจชเจฏเฉ‹เจ—เจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจšเจฒเจฟเจค เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจˆ เจฎเฉŒเจ•เจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจพเจ‚เจเจพ เจ…เจคเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ 'เจคเฉ‡ เจตเฉฑเจกเจพ เจชเฉเจฐเจญเจพเจต เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจน เจตเฉ€ เจชเจคเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจธเจฟเจ–เจฒเจพเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจฎเฉŒเจ•เจฟเจ†เจ‚ 'เจคเฉ‡ เจšเฉฑเจฒเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ“เจชเจจ เจกเฉ€เจช เจฒเจฐเจจเจฟเฉฐเจ— เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ…เจชเจพเจšเฉ‡ เจเจฎเจเจ•เจธเจจเฉˆเฉฑเจŸ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจฒเจฐเจจเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฟเฉฑเจ–เจฃ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฆเฉ‡ เจ‡เฉฑเจ• เจคเฉ‡เจœเจผ เจ…เจคเฉ‡ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เฉ‡ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจพเจญเจพเจ‚ เจจเฉ‚เฉฐ เจธเจชเจธเจผเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เฉฑเจ• MXNet เจธเจฟเจ–เจฒเจพเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เฉ€ เจœเจพเจตเฉ‡ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจตเฉฐเจกเฉ‡ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เฅค

Apache MXNet เจ•เฉ€ เจนเฉˆ

เจ…เจชเจพเจšเฉ‡ เจเจฎเจเจ•เจธเจจเฉ‡เจŸ เจ‡เฉฑเจ• เจ“เจชเจจ-เจธเฉ‹เจฐเจธ เจกเฉ‚เฉฐเจ˜เฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจกเฉ‚เฉฐเจ˜เฉ‡ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจฌเจฃเจพเจ‰เจฃ, เจธเจฟเจ–เจฒเจพเจˆ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค MXNet เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจจเจพเจฒ เจœเฉเฉœเฉ€เจ†เจ‚ เจœเจŸเจฟเจฒเจคเจพเจตเจพเจ‚ เจฆเจพ เจธเจพเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจเจธเจผเฉ€เจฒ เจ…เจคเฉ‡ เจธเจ•เฉ‡เจฒเฉ‡เจฌเจฒ เจนเฉˆ, เจ…เจคเฉ‡ เจชเฉเจฐเจธเจฟเฉฑเจง เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพเจตเจพเจ‚ เจฒเจˆ API เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจชเจพเจˆเจฅเจจ, C ++, เจ•เจฒเฉ‹เจœเจฐเฉ‡, เจœเจพเจตเจพ, เจœเฉ‚เจฒเฉ€เจ†, R, เจธเจ•เฉ‡เจฒเจพ เจ…เจคเฉ‡ เจนเฉ‹เจฐ

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจฆเฉ‡ เจจเจพเจฒ MXNet เจตเจฟเฉฑเจš เจธเจฟเจ–เจฒเจพเจˆ เจตเฉฐเจกเฉ€ เจ—เจˆ

MXNet เจตเจฟเฉฑเจš เจฎเจฟเจ†เจฐเฉ€ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจชเจนเฉเฉฐเจš เจตเจฐเจคเจฆเจพ เจนเฉˆ. เจ‡เจน เจนเจฐเฉ‡เจ• เจตเจฐเจ•เจฐ เจคเฉ‹เจ‚ เจ—เจฐเฉ‡เจกเฉ€เจเจ‚เจŸ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ, เจเจ•เฉ€เจ•เจฐเจฃ เจ•เจฐเจจ, เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ€ เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจฆเฉเจนเจฐเจพเจ… เจฒเจˆ เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ‡ เจ—เจฐเฉ‡เจกเฉ€เจเจ‚เจŸ เจญเฉ‡เจœเจฃ เจฒเจˆ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ‡ เจตเจฐเจ•เจฐเจพเจ‚ เจฆเฉ‡ เจธเจนเฉ€ เจ…เจจเฉเจชเจพเจค เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฆเฉ€ เจ•เฉเฉฐเจœเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ—เจฃเจจเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเฉเจ•เจพเจตเจŸ เจฌเจฃ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฆเฉ‡ เจ‰เจฒเจŸ, เจœเฉ‡เจ•เจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเจฐเจตเจฐ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ•เจˆ-เจคเฉ‹เจ‚-เจฌเจนเฉเจค เจธเฉฐเจšเจพเจฐ เจธเจพเจฐเฉ‡ เจจเฉˆเจŸเจตเจฐเจ• เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ• เจธเจ•เจฆเฉ‡ เจนเจจเฅค

Horovod เจ•เฉ€ เจนเฉˆ

เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจ‰เจฌเฉ‡เจฐ 'เจคเฉ‡ เจตเจฟเจ•เจธเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจ‡เฉฑเจ• เจ–เฉเฉฑเจฒเฉเจนเจพ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจกเฉ‚เฉฐเจ˜เฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจนเฉˆเฅค เจ‡เจน เจตเฉ‹เจฐเฉ‡เจ•เจธ เจตเจฟเฉฑเจš เจฎเจพเจกเจฒ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจ…เจคเฉ‡ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจธเจผเจฒ เจ•เจฐเจพเจธ-เจœเฉ€เจชเฉ€เจฏเฉ‚ เจ…เจคเฉ‡ เจ•เจฐเจพเจธ-เจจเฉ‹เจก เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ NVIDIA เจ•เจฒเฉˆเจ•เจŸเจฟเจต เจ•เจฎเจฟเจŠเจจเฉ€เจ•เฉ‡เจธเจผเจจเจœเจผ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ (NCCL) เจ…เจคเฉ‡ เจฎเฉˆเจธเฉ‡เจœ เจชเจพเจธเจฟเฉฐเจ— เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ (MPI) เจฆเจพ เจฒเจพเจญ เจ‰เจ เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฌเฉˆเจ‚เจกเจตเจฟเจกเจฅ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจกเฉ‚เฉฐเจ˜เฉ‡ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฎเจพเจกเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเจ•เฉ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ•เจˆ เจชเฉเจฐเจธเจฟเฉฑเจง เจฎเจธเจผเฉ€เจจ เจธเจฟเจ–เจฒเจพเจˆ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจฐเจฅเจพเจค MX เจจเฉˆเฉฑเจŸ, Tensorflow, Keras, เจ…เจคเฉ‡ PyTorch.

MXNet เจ…เจคเฉ‡ Horovod เจเจ•เฉ€เจ•เจฐเจฃ

MXNet Horovod เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจฟเจก เจฒเจฐเจจเจฟเฉฐเจ— APIs เจฆเฉเจ†เจฐเจพ Horovod เจจเจพเจฒ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจธเฉฐเจšเจพเจฐ API horovod.broadcast(), horovod.allgather() ะธ horovod.allreduce() MXNet เจ‡เฉฐเจœเจฃ เจฆเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจ•เจพเจฒเจฌเฉˆเจ•เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจธเจฆเฉ‡ เจŸเจพเจธเจ• เจ—เฉเจฐเจพเจซ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจธเฉฐเจšเจพเจฐ เจ…เจคเฉ‡ เจ—เจฃเจจเจพ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจกเจพเจŸเจพ เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจธเจฎเจ•เจพเจฒเฉ€เจ•เจฐเจจ เจ•เจพเจฐเจจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจจเฉเจ•เจธเจพเจจ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ MXNet เจ‡เฉฐเจœเจฃ เจฆเฉเจ†เจฐเจพ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจธเฉฐเจญเจพเจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค Horovod เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจตเจฟเจคเจฐเจฟเจค เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเจฐ เจ†เจฌเจœเฉˆเจ•เจŸ horovod.DistributedOptimizer เจซเฉˆเจฒเจฆเจพ เจนเฉˆ เจ…เจจเฉเจ•เฉ‚เจฒ MXNet เจตเจฟเฉฑเจš เจคเจพเจ‚ เจ•เจฟ เจ‡เจน เจตเฉฐเจกเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจ…เฉฑเจชเจกเฉ‡เจŸเจพเจ‚ เจฒเจˆ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก API เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเฉ‡เฅค เจ‡เจน เจธเจพเจฐเฉ‡ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจตเฉ‡เจฐเจตเฉ‡ เจ…เฉฐเจคเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจชเจพเจฐเจฆเจฐเจธเจผเฉ€ เจนเจจเฅค

เจคเฉ‡เจœเจผ เจธเจผเฉเจฐเฉ‚เจ†เจค

เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฎเฉˆเจ•เจฌเฉเฉฑเจ• 'เจคเฉ‡ MXNet เจ…เจคเฉ‡ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ 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 เจ‡เฉฑเจฅเฉ‹เจ‚ เจ…เจคเฉ‡ เจตเจฐเจ•เจฟเฉฐเจ— เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฎเฉˆเจ•เจฌเฉเฉฑเจ• เจŸเจฐเจฎเฉ€เจจเจฒ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจ“:

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 'เจคเฉ‡ เจ‡เฉฑเจ• ImageNet เจกเฉ‡เจŸเจพเจธเฉ‡เจŸ 'เจคเฉ‡ ResNet1-v64 เจฎเจพเจกเจฒ เจจเฉ‚เฉฐ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡เจฃ เจตเฉ‡เจฒเฉ‡ p3.16x เจตเฉฑเจกเจพ EC2, เจนเจฐเฉ‡เจ• AWS เจ•เจฒเจพเจ‰เจก 'เจคเฉ‡ 8 NVIDIA เจŸเฉ‡เจธเจฒเจพ V100 GPU เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ, เจ…เจธเฉ€เจ‚ 45000 เจšเจฟเฉฑเจคเจฐ/เจธเจ•เจฟเฉฐเจŸ (เจ…เจฐเจฅเจพเจค, เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจธเจฟเจ–เจฒเจพเจˆ เจชเฉเจฐเจพเจชเจค เจจเจฎเฉ‚เจจเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€) เจฆเฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจฅเจฐเฉ‚เจชเฉเฉฑเจŸ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค 44% เจฆเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจธเจผเฉเฉฑเจงเจคเจพ เจฆเฉ‡ เจจเจพเจฒ 90 เจฏเฉเฉฑเจ—เจพเจ‚ เจฆเฉ‡ เจฌเจพเจ…เจฆ 75.7 เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฟเจ–เจฒเจพเจˆ เจชเฉ‚เจฐเฉ€ เจนเฉ‹เจˆเฅค

เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เฉเจฐเจฎเจตเจพเจฐ 8 เจคเฉ‹เจ‚ 16 เจ…เจคเฉ‡ 32 เจคเฉ‹เจ‚ 64 เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจตเจฐเจ•เจฐ เจ…เจจเฉเจชเจพเจค เจฆเฉ‡ เจจเจพเจฒ 1, 1, 2 เจ…เจคเฉ‡ 1 GPUs 'เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ MXNet เจฆเฉ€ เจตเฉฐเจกเฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจšเจฟเฉฑเจคเจฐ 1 เจตเจฟเฉฑเจš เจจเจคเฉ€เจœเจพ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ y-เจงเฉเจฐเฉ‡ 'เจคเฉ‡, เจชเฉฑเจŸเฉ€เจ†เจ‚ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจธเจฟเจ–เจฒเจพเจˆ เจฒเจˆ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจฒเจพเจˆเจจเจพเจ‚ เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ y-เจงเฉเจฐเฉ‡ 'เจคเฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ (เจ…เจฐเจฅเจพเจค, เจ†เจฆเจฐเจธเจผ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ เจฆเจพ เจ…เจธเจฒ เจ…เจจเฉเจชเจพเจค) เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฆเฉ€ เจšเฉ‹เจฃ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ. เจœเฉ‡เจ•เจฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจนเฉˆ, เจคเจพเจ‚ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ 38 GPUs 'เจคเฉ‡ 64% เจคเฉฑเจ• เจ˜เฉฑเจŸ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ‡ เจธเจฎเจพเจจ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฆเฉเฉฑเจ—เจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

Apache MXNet เจ…เจคเฉ‡ Horovod เจจเจพเจฒ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ
เจšเจฟเฉฑเจคเจฐ 1. เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจ…เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจจเจพเจฒ MXNet เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ€ เจคเฉเจฒเจจเจพ

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจธเจพเจฐเจฃเฉ€ 1 เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ 64 GPUs 'เจคเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจชเฉเจฐเจคเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจ…เฉฐเจคเจฟเจฎ เจฒเจพเจ—เจค เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ MXNet เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเจญ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เฉ€เจฎเจค 'เจคเฉ‡ เจตเจงเฉ€เจ† เจฅเฉเจฐเจฐเฉ‚เจชเฉเจŸ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

Apache MXNet เจ…เจคเฉ‡ Horovod เจจเจพเจฒ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ
เจธเจพเจฐเจฃเฉ€ 1. 2 เจคเฉ‹เจ‚ 1 เจฆเฉ‡ เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจตเจฐเจ•เจฐ เจ…เจจเฉเจชเจพเจค เจฆเฉ‡ เจจเจพเจฒ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจ…เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจตเจฟเจšเจ•เจพเจฐ เจฒเจพเจ—เจค เจฆเฉ€ เจคเฉเจฒเจจเจพเฅค

เจฆเฉเจฌเจพเจฐเจพ เจชเฉˆเจฆเจพ เจ•เจฐเจจ เจฒเจˆ เจ•เจฆเจฎ

เจ…เจ—เจฒเฉ‡ เจ•เจฆเจฎเจพเจ‚ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ MXNet เจ…เจคเฉ‡ Horovod เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉฐเจกเฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฆเฉเจฌเจพเจฐเจพ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ เจนเฉˆเฅค MXNet เจจเจพเจฒ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจจ เจฒเจˆ เจชเฉœเฉเจนเฉ‹ เจ‡เจน เจชเฉ‹เจธเจŸ.

เจ•เจฆเจฎ 1

เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ MXNet เจธเฉฐเจธเจ•เจฐเจฃ 1.4.0 เจœเจพเจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจ‰เฉฑเจšเฉ‡ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจธเฉฐเจธเจ•เจฐเจฃ 0.16.0 เจœเจพเจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจ‰เฉฑเจšเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฌเจฃเจพเจ“เฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ GPU เจธเจฟเจ–เจฒเจพเจˆ เจฒเจˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจตเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจธเจพเจกเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ GPU เจกเฉเจฐเจพเจˆเจตเจฐ 16.04, CUDA 396.44, cuDNN 9.2 เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€, NCCL 7.2.1 เจ•เจฎเจฟเจŠเจจเฉ€เจ•เฉ‡เจŸเจฐ เจ…เจคเฉ‡ OpenMPI 2.2.13 เจฆเฉ‡ เจจเจพเจฒ, Ubuntu 3.1.1 Linux เจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ† เจนเฉˆเฅค เจตเฉ€ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจเจฎเจพเจœเจผเจพเจจ เจกเฉ€เจช เจฒเจฐเจจเจฟเฉฐเจ— เจ.เจเฉฑเจฎ.เจ†เจˆ, เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจน เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจธเจฅเจพเจชเจฟเจค เจนเจจเฅค

เจ•เจฆเจฎ 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 GPUsเฅค เจธเจŸเฉ‹เจšเฉˆเจธเจŸเจฟเจ• เจ—เจฐเฉ‡เจกเฉ€เจเจ‚เจŸ เจกเฉ€เจธเฉˆเจ‚เจŸ (SGD) เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเจฐ เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจนเจพเจˆเจชเจฐเจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ:

  • เจฎเจฟเฉฐเจจเฉ€-เจฌเฉˆเจš เจฆเจพ เจ†เจ•เจพเจฐ: 256
  • เจธเจฟเฉฑเจ–เจฃ เจฆเฉ€ เจฆเจฐ: 0.1
  • เจ—เจคเฉ€: 0.9
  • เจญเจพเจฐ เจ˜เจŸเจฃเจพ: 0.0001

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• GPU เจคเฉ‹เจ‚ 64 GPUs เจคเฉฑเจ• เจธเจ•เฉ‡เจฒ เจ•เฉ€เจคเจพ, เจ…เจธเฉ€เจ‚ GPUs เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ (0,1 GPU เจฒเจˆ 1 เจคเฉ‹เจ‚ 6,4 GPUs เจฒเจˆ 64 เจคเฉฑเจ•) เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ€ เจฆเจฐ เจจเฉ‚เฉฐ เจฐเฉ‡เจ–เจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจ•เฉ‡เจฒ เจ•เฉ€เจคเจพ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจชเฉเจฐเจคเฉ€ GPU เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ 256 'เจคเฉ‡ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ ( เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเฉˆเจš เจคเฉ‹เจ‚ 256 GPU เจฒเจˆ 1 เจšเจฟเฉฑเจคเจฐ 16 GPU เจฒเจˆ 384)เฅค GPU เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจงเจฃ เจฆเฉ‡ เจจเจพเจฒ เจญเจพเจฐ เจ˜เจŸเจฃ เจ…เจคเฉ‡ เจฎเฉ‹เจฎเฉˆเจ‚เจŸเจฎ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฌเจฆเจฒ เจ—เจเฅค เจ…เจธเฉ€เจ‚ NVIDIA Tesla GPUs เจฆเฉเจ†เจฐเจพ เจธเจฎเจฐเจฅเจฟเจค float64 เจ—เจฃเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผ เจ•เจฐเจจ เจฒเจˆ เจซเจพเจฐเจตเจฐเจก เจชเจพเจธ เจฒเจˆ 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

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ…เจชเจพเจšเฉ‡ เจเจฎเจเจ•เจธเจจเฉˆเฉฑเจŸ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจตเจฟเจคเจฐเจฟเจค เจฎเจพเจกเจฒ เจธเจฟเจ–เจฒเจพเจˆ เจฒเจˆ เจ‡เฉฑเจ• เจธเจ•เฉ‡เจฒเฉ‡เจฌเจฒ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ†เฅค เจ…เจธเฉ€เจ‚ ImageNet เจกเฉ‡เจŸเจพเจธเฉ‡เจŸ 'เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจฐเจตเจฐ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เฉเจธเจผเจฒเจคเจพ เจ…เจคเฉ‡ เจฒเจพเจ—เจค-เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€เจคเจพ เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เฉ€เจคเจพ เจœเจฟเจธ 'เจคเฉ‡ ResNet50-v1 เจฎเจพเจกเจฒ เจจเฉ‚เฉฐ เจธเจฟเจ–เจฒเจพเจˆ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจธเฉ€เฅค เจ…เจธเฉ€เจ‚ เจ‰เจน เจ•เจฆเจฎ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฎเจฒเจŸเฉ€-เจ‡เจจเจธเจŸเฉˆเจ‚เจธ เจŸเจฐเฉ‡เจจเจฟเฉฐเจ— เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃ เจฒเจˆ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ MXNet เจ…เจคเฉ‡ เจกเฉ‚เฉฐเจ˜เฉ€ เจธเจฟเจ–เจฒเจพเจˆ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจœเจพเจ“ MXNeเจชเจนเจฟเจฒเจพเจ‚ MXNet เจฌเจฃเจพเจ‰เจฃ เจฒเจˆเฅค เจ…เจธเฉ€เจ‚ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจœเจผเฉ‹เจฐเจฆเจพเจฐ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ 60 เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš MXNetเจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ.

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ MXNet เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจšเฉเฉฑเจ•เฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฉ‹เจตเฉ‹เจก เจจเจพเจฒ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจธ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเฉ‹ Horovod เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจธเจซเจผเจพ, เจ‡เจธเจจเฉ‚เฉฐ MXNet เจคเฉ‹เจ‚ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‹ MNIST เจœ เจšเจฟเฉฑเจคเจฐเจจเฉˆเฉฑเจŸ.

* เจฒเจพเจ—เจค เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ—เจฃเจจเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ˜เฉฐเจŸเฉ‡ เจฆเฉ€ เจฆเจฐ EC2 เจฎเฉŒเจ•เจฟเจ†เจ‚ เจฒเจˆ AWS

เจ•เฉ‹เจฐเจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเฉ‹ "เจฌเจฟเจ— เจกเฉ‡เจŸเจพ 'เจคเฉ‡ เจ‰เจฆเจฏเฉ‹เจ—เจฟเจ• เจเจฎ.เจเจฒ.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹