рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг

рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреВрд░реНрд╡ рд╕рдВрдзреНрдпрд╛ рдкрд░ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ "рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдкрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдПрдордПрд▓"

рдХрдИ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЧрд╣рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдордп рдХреЛ рд╣рдлреНрддреЛрдВ рд╕реЗ рдШрдВрдЯреЛрдВ рдпрд╛ рдорд┐рдирдЯреЛрдВ рддрдХ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдХрдиреАрдХ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдЭрд╛ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдХрд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рдкрд░ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рднреА рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд▓рддреА рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдУрдкрди рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб рд▓рд░реНрдирд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдЦрдиреЗ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╣реЛрд░реЛрд╡реЛрдб рдврд╛рдВрдЪреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рднреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреА рдЬрд╛рдП рддрд╛рдХрд┐ рдпрд╣ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗред

рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХреНрдпрд╛ рд╣реИ?

рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреАрдк рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ, рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдордПрдХреНрд╕рдиреЗрдЯ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИ, рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЕрдЬрдЧрд░, рд╕реА + +, Clojure, рдЬрд╛рд╡рд╛, рдЬреВрд▓рд┐рдпрд╛, R, рд╕реНрдХрд╛рд▓рд╛ рдФрд░ рдЕрдиреНрдпред

рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдордПрдХреНрд╕рдиреЗрдЯ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг

рдПрдордПрдХреНрд╕рдиреЗрдЯ рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдореЙрдбреНрдпреВрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ, рдПрдХрддреНрд░реАрдХрд░рдг рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рдЕрдиреБрдХреВрд▓рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рд╕рд╣реА рдЕрдиреБрдкрд╛рдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкреНрд░рднрд╛рд╡реА рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рдХреБрдВрдЬреА рд╣реИред рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рд╣реИ, рддреЛ рдпрд╣ рдЧрдгрдирд╛ рдореЗрдВ рдмрд╛рдзрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреЗрдХ-рд╕реЗ-рдЕрдиреЗрдХ рд╕рдВрдЪрд╛рд░ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛрд░реЛрд╡реЛрдб рдХреНрдпрд╛ рд╣реИ

horovod рдЙрдмрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдЦреБрд▓рд╛ рд╡рд┐рддрд░рд┐рдд рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪрд╛ рд╣реИред рдпрд╣ рд╡реЛрд░реЗрдХреНрд╕ рдореЗрдВ рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдФрд░ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдХреНрд░реЙрд╕-рдЬреАрдкреАрдпреВ рдФрд░ рдХреНрд░реЙрд╕-рдиреЛрдб рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдЬреИрд╕реЗ рдПрдирд╡реАрдЖрдИрдбреАрдЖрдИрдП рдХрд▓реЗрдХреНрдЯрд┐рд╡ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рдВрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдПрдирд╕реАрд╕реАрдПрд▓) рдФрд░ рдореИрд╕реЗрдЬ рдкрд╛рд╕рд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ (рдПрдордкреАрдЖрдИ) рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред рдпрд╣ рдЧрд╣рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдВрдбрд╡рд┐рдбреНрде рдФрд░ рд╕реНрдХреЗрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдПрдордПрдХреНрд╕рдиреЗрдЯ, рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ, рдХреЗрд░рд╕, рдФрд░ рдкрд╛рдпрдЯреЛрд░рдЪред

рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдПрдХреАрдХрд░рдг

рдПрдордПрдХреНрд╕рдиреЗрдЯ рд╣реЛрд░реЛрд╡реЛрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рд╣реЛрд░реЛрд╡реЛрдб рд╕рдВрдЪрд╛рд░ рдПрдкреАрдЖрдИ рд╣реЛрд░реЛрд╡реЛрдб.рдкреНрд░рд╕рд╛рд░рдг(), horovod.allgather() ╨╕ horovod.allreduce() рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рдЧреНрд░рд╛рдлрд╝ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдордПрдХреНрд╕рдиреЗрдЯ рдЗрдВрдЬрди рдХреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рддрд░рд╣, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд░ рдФрд░ рдЧрдгрдирд╛ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣реЛрд░реЛрд╡реЛрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдХреВрд▓рдХ рд╡рд╕реНрддреБ рд╣реЛрд░реЛрд╡реЛрдб.рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдбрдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдлреИрд▓рддрд╛ рдЕрдиреБрдХреВрд▓рдХ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдореЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╡рд┐рддрд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрд░реЛрд╡реЛрдб рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░реЗред рдпреЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВред

рддреЗрдЬреА рд╕реЗ рд╢реБрд░реВ

рдЖрдк рдЕрдкрдиреЗ рдореИрдХрдмреБрдХ рдкрд░ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордПрдирдЖрдИрдПрд╕рдЯреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рдХрдиреНрд╡реЗрдиреНрд╢рдирд▓ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддреБрд░рдВрдд рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, PyPI рд╕реЗ mxnet рдФрд░ horovod рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

pip install mxnet
pip install horovod

рдзреНрдпрд╛рди рджреЗрдВ: рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдкрд┐рдк рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрд░реЛрд╡реЛрдбрд╢рд╛рдпрдж рдЖрдкрдХреЛ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ MACOSX_DEPLOYMENT_TARGET=10.vvрдЬрд╣рд╛рдВ vv - рдпрд╣ рдЖрдкрдХреЗ MacOS рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MacOSX Sierra рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ MACOSX_DEPLOYMENT_TARGET=10.12 рдкрд┐рдк рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрд░реЛрд╡реЛрдб

рдлрд┐рд░ рдУрдкрдирдПрдордкреАрдЖрдИ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдЕрдд:.

рдЕрдВрдд рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ 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 рдЬреАрдкреАрдпреВ рдкрд░ рдПрдХ рдЗрдореЗрдЬрдиреЗрдЯ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдПрдХ ResNet1-v64 рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп p3.16xрдмрдбрд╝рд╛ EC2, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ AWS рдХреНрд▓рд╛рдЙрдб рдкрд░ 8 NVIDIA Tesla V100 GPU рд╣реИрдВ, рд╣рдордиреЗ 45000 рдЫрд╡рд┐рдпреЛрдВ/рд╕реЗрдХрдВрдб (рдпрд╛рдиреА, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдереНрд░реВрдкреБрдЯ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред рдкреНрд░рд╢рд┐рдХреНрд╖рдг 44 рдпреБрдЧреЛрдВ рдХреЗ рдмрд╛рдж 90 рдорд┐рдирдЯ рдореЗрдВ 75.7% рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реБрдЖред

рд╣рдордиреЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХреНрд░рдорд╢рдГ 8 рд╕реЗ 16 рдФрд░ 32 рд╕реЗ 64 рдХреЗ рдПрдХрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде 1, 1, 2 рдФрд░ 1 рдЬреАрдкреАрдпреВ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреА рд╣реИред рдЖрдк рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рдЪрд┐рддреНрд░ 1 рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдИрдВ рдУрд░ y-рдЕрдХреНрд╖ рдкрд░, рдкрдЯреНрдЯрд┐рдпрд╛рдБ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ, рд░реЗрдЦрд╛рдПрдБ рджрд╛рдИрдВ рдУрд░ y-рдЕрдХреНрд╖ рдкрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ (рдЕрд░реНрдерд╛рддреН, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЗ рдЖрджрд░реНрд╢ рдереНрд░реВрдкреБрдЯ рдХрд╛ рдЕрдиреБрдкрд╛рдд) рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪреБрдирд╛рд╡ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рд╣реИ, рддреЛ 38 рдЬреАрдкреАрдпреВ рдкрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ 64% рддрдХ рдЧрд┐рд░ рдЬрд╛рддреА рд╣реИред рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рдорд╛рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛрдЧреБрдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг
рдЪрд┐рддреНрд░ 1. рд╣реЛрд░реЛрд╡реЛрдб рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХреА рддреБрд▓рдирд╛

рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ 1 рдореЗрдВ, рд╣рдо 64 рдЬреАрдкреАрдпреВ рдкрд░ рдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рддреЗ рд╕рдордп рдкреНрд░рддрд┐ рдЙрджрд╛рд╣рд░рдг рдЕрдВрддрд┐рдо рд▓рд╛рдЧрдд рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рдХрдо рд▓рд╛рдЧрдд рдкрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдереНрд░реВрдкреБрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЕрдкрд╛рдЪреЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг
рддрд╛рд▓рд┐рдХрд╛ 1. 2 рд╕реЗ 1 рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде рд╣реЛрд░реЛрд╡реЛрдб рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд▓рд╛рдЧрдд рддреБрд▓рдирд╛ред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдЕрдЧрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝реЗрдВ рдпреЗ рдкрдж.

1 рдХрджрдо

рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрдХреНрд╕рдиреЗрдЯ рд╕рдВрд╕реНрдХрд░рдг 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 рдХрджрдо

рдЕрдкрдиреА рдПрдордПрдХреНрд╕рдиреЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реЛрд░реЛрд╡реЛрдб рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред рдПрдордПрдХреНрд╕рдиреЗрдЯ рдЧреНрд▓реВрдСрди рдПрдкреАрдЖрдИ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд░рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рддреЛ рдмреЛрд▓реНрдб рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  • рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╣реА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рд╣реЛрд░реЛрд╡реЛрдб рд░реИрдВрдХ (рдкрдВрдХреНрддрд┐ 8) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджрд░реНрдн рд╕реЗрдЯ рдХрд░реЗрдВред
  • рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рд╕рдорд╛рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░реЗрдВ (рдкрдВрдХреНрддрд┐ 18)ред
  • рдПрдХ рд╣реЛрд░реЛрд╡реЛрдб рдмрдирд╛рдПрдВ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдХреВрд▓рдХ (рдкрдВрдХреНрддрд┐ 25) рд╡рд┐рддрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рд╣реЛрд░реЛрд╡реЛрдб-рдПрдордПрдХреНрд╕рдиреЗрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ 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 рдХрджрдо

рдПрдордкреАрдЖрдИ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд╛рд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 4 рдЬреАрдкреАрдпреВ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреБрд▓ 16 рдЬреАрдкреАрдпреВ рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдЯреЛрдЪреИрд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ (рдПрд╕рдЬреАрдбреА) рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╛рдЗрдкрд░рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  • рдорд┐рдиреА-рдмреИрдЪ рдХрд╛ рдЖрдХрд╛рд░: 256
  • рд╕реАрдЦрдиреЗ рдХреА рджрд░: 0.1
  • рдЧрддрд┐: 0.9
  • рд╡рдЬрд╝рди рдореЗрдВ рдХрдореА: 0.0001

рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ рдПрдХ рдЬреАрдкреАрдпреВ рд╕реЗ 64 рдЬреАрдкреАрдпреВ рддрдХ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛, рд╣рдордиреЗ рдЬреАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд░ рдХреЛ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдпрд╛ (0,1 рдЬреАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП 1 рд╕реЗ 6,4 рдЬреАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП 64 рддрдХ), рдЬрдмрдХрд┐ рдкреНрд░рддрд┐ рдЬреАрдкреАрдпреВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 256 (рдПрдХ рдмреИрдЪ рд╕реЗ) рд░рдЦреА 256 рдЬреАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП 1 рдЫрд╡рд┐рдпрд╛рдВ рд╕реЗ 16 рдЬреАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП 384)ред рдЬреАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╡рдЬрди рдореЗрдВ рдХрдореА рдФрд░ рдЧрддрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓ рдЧрдПред рд╣рдордиреЗ рдПрдирд╡реАрдЖрдИрдбреАрдЖрдИрдП рдЯреЗрд╕реНрд▓рд╛ рдЬреАрдкреАрдпреВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдлреНрд▓реЛрдЯ64 рдЧрдгрдирд╛рдУрдВ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░рд╡рд░реНрдб рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдлреНрд▓реЛрдЯ16 рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдлреНрд▓реЛрдЯ32 рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рд╕рдЯреАрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

$ 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 рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдордиреЗ рдРрд╕реЗ рдЪрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рд╣реЛрд░реЛрд╡реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд▓реНрдЯреА-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЕрднреА рдПрдордПрдХреНрд╕рдиреЗрдЯ рдФрд░ рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ рдПрдордПрдХреНрд╕рдиреЗрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рд╣рдо рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреА рднреА рдкреБрд░рдЬреЛрд░ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ 60 рдорд┐рдирдЯ рдореЗрдВ рдПрдордПрдХреНрд╕рдиреЗрдЯрдЖрд░рдВрдн рдХрд░рдирд╛ред

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдордПрдХреНрд╕рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рд╣реЛрд░реЛрд╡реЛрдб рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдкреЗрдЬ, рдЗрд╕реЗ рдПрдордПрдХреНрд╕рдиреЗрдЯ рд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ Mnist рдпрд╛ IMAGEnet.

*рд▓рд╛рдЧрдд рдХреА рдЧрдгрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ рдкреНрд░рддрд┐ рдШрдВрдЯрд╛ рджрд░реЗрдВ EC2 рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП AWS

рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВ "рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдкрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдПрдордПрд▓"

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ