แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ Apache MXNet-แƒ˜แƒ— แƒ“แƒ Horovod-แƒ˜แƒ—

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ“แƒ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒ“แƒฆแƒ”แƒก "แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒฃแƒšแƒ˜ ML แƒ“แƒ˜แƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”"

แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ›แƒ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ›แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒก แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒฆแƒ แƒ›แƒ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜แƒก แƒ“แƒ แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ” แƒ™แƒ•แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒกแƒแƒแƒ—แƒแƒ›แƒ“แƒ” แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒฌแƒฃแƒ—แƒแƒ›แƒ“แƒ”, แƒ แƒแƒช แƒ’แƒแƒฎแƒ“แƒ˜แƒก แƒแƒ› แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒก แƒฆแƒ แƒ›แƒ แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒš แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒจแƒ˜. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒชแƒœแƒแƒ‘แƒ˜แƒ”แƒ แƒแƒœ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒแƒ–แƒ˜แƒแƒ แƒแƒœ แƒ“แƒ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ’แƒแƒฃแƒ™แƒ”แƒ—แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒ แƒแƒ•แƒแƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก, แƒ แƒแƒช แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒ“แƒ˜แƒ“ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒก แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒแƒ–แƒ”. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ›แƒ แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒ˜แƒชแƒแƒ“แƒœแƒ”แƒœ, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒœ แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒ แƒ— แƒ”แƒ’แƒ–แƒ”แƒ›แƒžแƒšแƒแƒ แƒ–แƒ” แƒ›แƒ แƒแƒ•แƒแƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒ–แƒ”.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒ แƒแƒค แƒ“แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ’แƒ–แƒแƒ–แƒ” แƒฆแƒ˜แƒ แƒฆแƒ แƒ›แƒ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก Apache MXNet-แƒ˜แƒกแƒ แƒ“แƒ Horovod-แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒฉแƒแƒ แƒฉแƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒœแƒแƒ—แƒšแƒแƒ“ แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒฉแƒ”แƒœแƒ— Horovod-แƒ˜แƒก แƒคแƒ แƒ”แƒ˜แƒ›แƒ•แƒแƒ แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— MXNet แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒแƒ“ Horovod-แƒ—แƒแƒœ.

แƒ แƒ แƒแƒ แƒ˜แƒก Apache MXNet

Apache MX Net แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒฆแƒ แƒ›แƒ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฆแƒ แƒ›แƒ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“. MXNet แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒ”แƒ‘แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒš แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒก, แƒแƒ แƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ“แƒ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ“แƒ แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— API-แƒ”แƒ‘แƒก แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Python, C + +, แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒ, Java, Julia, R, แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ”แƒ‘แƒ˜.

แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ MXNet-แƒจแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ—

แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜ MXNet-แƒจแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒก. แƒ˜แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒ™แƒ˜แƒกแƒ’แƒแƒœ แƒ’แƒ แƒแƒ“แƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“, แƒแƒ’แƒ แƒ”แƒ’แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒ แƒแƒ“แƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒฃแƒจแƒ”แƒ‘แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒฃแƒจแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒก แƒ“แƒแƒ“แƒ’แƒ”แƒœแƒ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒ. แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ. แƒžแƒ˜แƒ แƒ˜แƒฅแƒ˜แƒ—, แƒ—แƒฃ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ‘แƒ”แƒ•แƒ แƒ˜-แƒ›แƒ แƒแƒ•แƒแƒš แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒ‘แƒšแƒแƒ™แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜.

แƒ แƒ แƒแƒ แƒ˜แƒก แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜

แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜ แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฆแƒ แƒ›แƒ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Uber-แƒจแƒ˜. แƒ˜แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ  cross-GPU แƒ“แƒ cross-node แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ NVIDIA Collective Communications Library (NCCL) แƒ“แƒ Message Passing Interface (MPI), แƒ แƒแƒ—แƒ แƒ’แƒแƒแƒœแƒแƒฌแƒ˜แƒšแƒแƒก แƒ“แƒ แƒ“แƒแƒแƒ’แƒ แƒแƒ•แƒแƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ•แƒแƒ แƒ”แƒ™แƒ”แƒ‘แƒจแƒ˜. แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒขแƒแƒ แƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ”แƒ‘แƒก แƒฆแƒ แƒ›แƒ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก. แƒ˜แƒก แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ—แƒ›แƒชแƒแƒ“แƒœแƒ”แƒแƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒแƒก, แƒ™แƒ”แƒ แƒซแƒแƒ“ MX Net, Tensorflow, Keras แƒ“แƒ PyTorch.

MXNet แƒ“แƒ Horovod แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ

MXNet แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Horovod-แƒ—แƒแƒœ Horovod-แƒจแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ API-แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. Horovod แƒกแƒแƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ API horovod.broadcast(), horovod.allgather() ะธ horovod.allreduce() แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ MXNet แƒซแƒ แƒแƒ•แƒ˜แƒก แƒแƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ˜แƒกแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜. แƒแƒ› แƒ’แƒ–แƒ˜แƒ—, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒแƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ‘แƒ MXNet แƒซแƒ แƒแƒ•แƒแƒก, แƒ แƒแƒ—แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒแƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒแƒ™แƒแƒ แƒ’แƒ”แƒ‘แƒ˜ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒ. Horovod-แƒจแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ horovod.DistributedOptimizer แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ MXNet-แƒจแƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก Horovod API-แƒ”แƒ‘แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒก แƒ“แƒ”แƒขแƒแƒšแƒ˜ แƒ’แƒแƒ›แƒญแƒ•แƒ˜แƒ แƒ•แƒแƒšแƒ”แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— แƒ›แƒชแƒ˜แƒ แƒ” แƒ™แƒแƒœแƒ•แƒแƒšแƒฃแƒชแƒ˜แƒฃแƒ แƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜ MNIST แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ” MXNet-แƒ˜แƒกแƒ แƒ“แƒ Horovod-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก MacBook-แƒ–แƒ”.
แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜, แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— mxnet แƒ“แƒ horovod PyPI-แƒ“แƒแƒœ:

pip install mxnet
pip install horovod

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒ—แƒฃ แƒจแƒ”แƒ’แƒ”แƒฅแƒ›แƒœแƒแƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒ แƒแƒก pip install horovodแƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ— แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ MACOSX_DEPLOYMENT_TARGET=10.vvแƒกแƒแƒ“ vv โ€“ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ MacOS แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, MacOSX Sierra-แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฉแƒแƒฌแƒ”แƒ แƒ MACOSX_DEPLOYMENT_TARGET=10.12 แƒžแƒ˜แƒžแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ 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

แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒ›แƒ

ResNet50-v1 แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก ImageNet แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ” 64 GPU-แƒ–แƒ” แƒ แƒ•แƒ แƒ”แƒ’แƒ–แƒ”แƒ›แƒžแƒšแƒแƒ แƒ˜แƒ— p3.16x แƒ“แƒ˜แƒ“แƒ˜ EC2, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 8 NVIDIA Tesla V100 GPU-แƒก AWS แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ–แƒ”, แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒแƒฆแƒฌแƒ˜แƒ”แƒ— แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ’แƒแƒ›แƒขแƒแƒ แƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒแƒ‘แƒแƒก 45000 แƒกแƒฃแƒ แƒแƒ—แƒ˜/แƒฌแƒ› (แƒแƒœแƒฃ, แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒฌแƒแƒ›แƒจแƒ˜). แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ 44 แƒฌแƒฃแƒ—แƒจแƒ˜ 90 แƒ”แƒžแƒแƒฅแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— 75.7%.

แƒฉแƒ•แƒ”แƒœ แƒ”แƒก แƒจแƒ”แƒ•แƒแƒ“แƒแƒ แƒ”แƒ— MXNet-แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒš แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ 8, 16, 32 แƒ“แƒ 64 GPU-แƒ–แƒ” แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒแƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ— แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒœ แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒ— 1-แƒ“แƒแƒœ 1-แƒ›แƒ“แƒ” แƒ“แƒ 2-แƒ“แƒแƒœ 1-แƒ›แƒ“แƒ”, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“. แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ” 1 แƒฅแƒ•แƒ”แƒ›แƒแƒ—. y-แƒฆแƒ”แƒ แƒซแƒ–แƒ” แƒ›แƒแƒ แƒชแƒฎแƒœแƒ˜แƒ•, แƒ–แƒแƒšแƒ”แƒ‘แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒฌแƒแƒ›แƒจแƒ˜ แƒ’แƒแƒกแƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ”แƒ‘แƒšแƒแƒ“, แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜ แƒแƒกแƒแƒฎแƒแƒ•แƒก แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒแƒก (แƒแƒœแƒฃ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒขแƒแƒ แƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ) y-แƒฆแƒ”แƒ แƒซแƒ–แƒ” แƒ›แƒแƒ แƒฏแƒ•แƒœแƒ˜แƒ•. แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒก แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒแƒ–แƒ”. แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒ แƒ”แƒชแƒ”แƒ›แƒ 38%-แƒ›แƒ“แƒ” 64 GPU-แƒ–แƒ”. แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒฌแƒ”แƒ•แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒช Horovod-แƒ—แƒแƒœ, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒแƒ แƒ›แƒแƒ’แƒแƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ›แƒฃแƒจแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ Apache MXNet-แƒ˜แƒ— แƒ“แƒ Horovod-แƒ˜แƒ—
แƒกแƒฃแƒ แƒแƒ—แƒ˜ 1. MXNet-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ Horovod-แƒ—แƒแƒœ แƒ“แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ 1, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒแƒ“แƒแƒ แƒ”แƒ‘แƒ— แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก 64 GPU-แƒ–แƒ” แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก. Horovod-แƒ—แƒแƒœ MXNet-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒ’แƒแƒ›แƒขแƒแƒ แƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒแƒ‘แƒแƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ“แƒแƒ‘แƒแƒš แƒคแƒแƒกแƒแƒ“.

แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ Apache MXNet-แƒ˜แƒ— แƒ“แƒ Horovod-แƒ˜แƒ—
แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ 1. แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ Horovod-แƒกแƒ แƒ“แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒจแƒแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒœ แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒ— 2-แƒ“แƒแƒœ 1-แƒ›แƒ“แƒ”.

แƒ แƒ”แƒžแƒ แƒแƒ“แƒฃแƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜

แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒแƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ MXNet-แƒ˜แƒกแƒ แƒ“แƒ Horovod-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. MXNet-แƒ˜แƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ›แƒ”แƒขแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒ”แƒก แƒžแƒแƒกแƒขแƒ˜.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 1

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒฐแƒแƒ›แƒแƒ’แƒ”แƒœแƒฃแƒ แƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ MXNet 1.4.0 แƒแƒœ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ— แƒ“แƒ Horovod 0.16.0 แƒแƒœ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—, แƒ แƒแƒ—แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ GPU แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— Ubuntu 16.04 Linux, GPU Driver 396.44, CUDA 9.2, cuDNN 7.2.1 แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, NCCL 2.2.13 แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ แƒ“แƒ OpenMPI 3.1.1. แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Amazon Deep Learning AMI, แƒกแƒแƒ“แƒแƒช แƒ”แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 2

แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— Horovod API-แƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก MXNet แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒก. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ MXNet Gluon API-แƒ–แƒ”, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜. แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜ แƒ—แƒแƒ›แƒแƒ›แƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ, แƒ—แƒฃ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒฅแƒ•แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜. แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒแƒ— แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜แƒก แƒ แƒแƒœแƒ’แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ 8) แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ› แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒขแƒแƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒฌแƒแƒ  แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒš แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ–แƒ”.
  • แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒก แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒฃแƒจแƒแƒ™แƒ˜แƒ“แƒแƒœ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” (แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ 18), แƒ แƒแƒ—แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒฃแƒจแƒแƒ™แƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ—.
  • แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜ DistributedOptimizer (แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ 25) แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ”แƒกแƒ˜แƒ— แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“, แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ˜แƒฎแƒ˜แƒšแƒแƒ— Horovod-MXNet-แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ MNIST ะธ IMAGEnet.

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-แƒ˜แƒ—. Stochastic Gradient Descent (SGD) แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒฐแƒ˜แƒžแƒ”แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ—:

  • แƒ›แƒ˜แƒœแƒ˜-แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒ–แƒแƒ›แƒ: 256
  • แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜: 0.1
  • แƒ˜แƒ›แƒžแƒฃแƒšแƒกแƒ˜: 0.9
  • แƒฌแƒแƒœแƒ˜แƒก แƒ™แƒšแƒ”แƒ‘แƒ: 0.0001

แƒ”แƒ แƒ—แƒ˜ GPU-แƒ“แƒแƒœ 64 GPU-แƒ›แƒ“แƒ” แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒฌแƒ แƒคแƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒ•แƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ”แƒ— แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ” GPU-แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (0,1-แƒ“แƒแƒœ 1 GPU-แƒ“แƒแƒœ 6,4-แƒ›แƒ“แƒ” 64 GPU-แƒกแƒ—แƒ•แƒ˜แƒก), แƒฎแƒแƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ”แƒ แƒ— GPU-แƒ–แƒ” 256-แƒ–แƒ” แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ— ( แƒžแƒแƒ แƒขแƒ˜แƒ˜แƒ“แƒแƒœ 256 แƒกแƒฃแƒ แƒแƒ—แƒ˜ 1 GPU-แƒกแƒ—แƒ•แƒ˜แƒก 16 384 GPU-แƒกแƒ—แƒ•แƒ˜แƒก). แƒฌแƒแƒœแƒ˜แƒก แƒ“แƒแƒฅแƒ•แƒ”แƒ˜แƒ—แƒ”แƒ‘แƒ แƒ“แƒ แƒ˜แƒ›แƒžแƒฃแƒšแƒกแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ GPU-แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒขแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒจแƒ”แƒ แƒ”แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒก แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜ float64 แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒฌแƒ˜แƒœ แƒ’แƒแƒ“แƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒแƒ“ แƒ“แƒ float16 แƒ’แƒ แƒแƒ“แƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก NVIDIA Tesla GPU-แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ 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-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ— แƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒ แƒ“แƒ แƒฎแƒแƒ แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— ImageNet แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒ“แƒแƒช แƒ’แƒแƒฌแƒ•แƒ แƒ—แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒงแƒ ResNet50-v1 แƒ›แƒแƒ“แƒ”แƒšแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“ แƒ›แƒ แƒแƒ•แƒแƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ’แƒแƒกแƒแƒขแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“ Horovod-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ—แƒฃ แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— MXNet-แƒก แƒ“แƒ แƒฆแƒ แƒ›แƒ แƒกแƒฌแƒแƒ•แƒšแƒแƒก, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” MXNeแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ MXNet-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก MXNet 60 แƒฌแƒฃแƒ—แƒจแƒ˜แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ˜แƒ— MXNet-แƒ—แƒแƒœ แƒ“แƒ แƒ’แƒกแƒฃแƒ แƒ— แƒกแƒชแƒแƒ“แƒแƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ Horovod-แƒ—แƒแƒœ, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒ”แƒ— แƒฐแƒแƒ แƒแƒ•แƒแƒ“แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ˜แƒ’แƒ˜ MXNet-แƒ“แƒแƒœ แƒ“แƒ แƒ›แƒ˜แƒฐแƒงแƒ”แƒ•แƒ˜แƒ— แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก MNIST แƒแƒœ IMAGEnet.

*แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒกแƒแƒแƒ—แƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒขแƒแƒ แƒ˜แƒคแƒ”แƒ‘แƒ˜ AWS EC2 แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒจแƒ”แƒ˜แƒขแƒงแƒ•แƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ "แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒฃแƒšแƒ˜ ML แƒ“แƒ˜แƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”"

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ