ಕೋರ್ಸ್ ಪ್ರಾರಂಭದ ಮುನ್ನಾದಿನದಂದು ಲೇಖನದ ಅನುವಾದವನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ
ಬಹು ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಕಂಪ್ಯೂಟಿಂಗ್ ನಿದರ್ಶನಗಳಲ್ಲಿ ವಿತರಿಸಲಾದ ತರಬೇತಿಯು ಆಧುನಿಕ ಆಳವಾದ ನರಮಂಡಲ ಜಾಲಗಳ ತರಬೇತಿ ಸಮಯವನ್ನು ವಾರಗಳಿಂದ ಗಂಟೆಗಳು ಅಥವಾ ನಿಮಿಷಗಳವರೆಗೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಇದು ಪ್ರಾಯೋಗಿಕ ಆಳವಾದ ಕಲಿಕೆಯ ಅನ್ವಯಿಕೆಗಳಲ್ಲಿ ಈ ತರಬೇತಿ ತಂತ್ರವನ್ನು ಪ್ರಚಲಿತಗೊಳಿಸುತ್ತದೆ. ಬಳಕೆದಾರರು ಬಹು ನಿದರ್ಶನಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ಹೇಗೆ ಹಂಚಿಕೊಳ್ಳುವುದು ಮತ್ತು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡುವುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಇದು ಸ್ಕೇಲಿಂಗ್ ದಕ್ಷತೆಯ ಮೇಲೆ ಪ್ರಮುಖ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಒಂದೇ ನಿದರ್ಶನದಲ್ಲಿ ಚಲಿಸುವ ತರಬೇತಿ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಹು ನಿದರ್ಶನಗಳಿಗೆ ಹೇಗೆ ನಿಯೋಜಿಸಬೇಕು ಎಂಬುದನ್ನು ಸಹ ಬಳಕೆದಾರರು ತಿಳಿದಿರಬೇಕು.
ಈ ಲೇಖನದಲ್ಲಿ, ಓಪನ್ ಸೋರ್ಸ್ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಲೈಬ್ರರಿ ಅಪಾಚೆ MXNet ಮತ್ತು ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಟ್ರೈನಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್ ಹೊರೋವೋಡ್ ಬಳಸಿ ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಟ್ರೈನಿಂಗ್ ಮಾಡುವ ವೇಗವಾದ ಮತ್ತು ಸುಲಭವಾದ ಮಾರ್ಗದ ಬಗ್ಗೆ ನಾವು ಮಾತನಾಡುತ್ತೇವೆ. ಹೊರೋವೋಡ್ ಫ್ರೇಮ್ವರ್ಕ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅನುಕೂಲಗಳನ್ನು ನಾವು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುತ್ತೇವೆ ಮತ್ತು MXNet ತರಬೇತಿ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹೇಗೆ ಬರೆಯುವುದು ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತೇವೆ ಇದರಿಂದ ಅದು ಹೊರೋವೋಡ್ನೊಂದಿಗೆ ವಿತರಿಸಲ್ಪಡುತ್ತದೆ.
ಅಪಾಚೆ MXNet ಎಂದರೇನು?
– ಆಳವಾದ ನರಮಂಡಲ ಜಾಲಗಳನ್ನು ನಿರ್ಮಿಸಲು, ತರಬೇತಿ ನೀಡಲು ಮತ್ತು ನಿಯೋಜಿಸಲು ಬಳಸಲಾಗುವ ಮುಕ್ತ-ಮೂಲ ಆಳವಾದ ಕಲಿಕೆಯ ಚೌಕಟ್ಟು. MXNet ನರಮಂಡಲ ಜಾಲಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದರೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಂಕೀರ್ಣತೆಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ, ಹೆಚ್ಚು ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಸ್ಕೇಲೆಬಲ್ ಆಗಿದೆ ಮತ್ತು ಜನಪ್ರಿಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಿಗೆ API ಗಳನ್ನು ನೀಡುತ್ತದೆ, ಉದಾಹರಣೆಗೆ , , , , , , ಮತ್ತು ಇತರರು.
ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ನೊಂದಿಗೆ MXNet ನಲ್ಲಿ ವಿತರಣಾ ತರಬೇತಿ
ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಪ್ರತಿ ಕೆಲಸಗಾರರಿಂದ ಗ್ರೇಡಿಯಂಟ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು, ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಮುಂದಿನ ಆಪ್ಟಿಮೈಸೇಶನ್ ಪುನರಾವರ್ತನೆಗಾಗಿ ನವೀಕರಿಸಿದ ಗ್ರೇಡಿಯಂಟ್ಗಳನ್ನು ಕಾರ್ಮಿಕರಿಗೆ ಕಳುಹಿಸಲು ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ಗಳ ಗುಂಪನ್ನು ಬಳಸುತ್ತದೆ. ಸರ್ವರ್ಗಳ ಸರಿಯಾದ ಅನುಪಾತವನ್ನು ಕಾರ್ಮಿಕರಿಗೆ ನಿರ್ಧರಿಸುವುದು ಪರಿಣಾಮಕಾರಿ ಸ್ಕೇಲಿಂಗ್ಗೆ ಪ್ರಮುಖವಾಗಿದೆ. ಒಂದೇ ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ ಇದ್ದರೆ, ಅದು ಕಂಪ್ಯೂಟೇಶನಲ್ ಅಡಚಣೆಯಾಗಬಹುದು. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ಹಲವಾರು ಸರ್ವರ್ಗಳಿದ್ದರೆ, ಹಲವು-ಹಲವು ಸಂಬಂಧವು ಎಲ್ಲಾ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕಗಳನ್ನು ಮುಚ್ಚಿಹಾಕಬಹುದು.
ಹೊರೋವೋಡ್ ಎಂದರೇನು?
– ಉಬರ್ನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಓಪನ್-ಸೋರ್ಸ್ ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್. ಇದು ವೋರ್ಟೆಕ್ಸ್ಗಳಲ್ಲಿ ಮಾದರಿ ನಿಯತಾಂಕಗಳನ್ನು ವಿತರಿಸಲು ಮತ್ತು ಒಟ್ಟುಗೂಡಿಸಲು NVIDIA ಕಲೆಕ್ಟಿವ್ ಕಮ್ಯುನಿಕೇಷನ್ಸ್ ಲೈಬ್ರರಿ (NCCL) ಮತ್ತು ಮೆಸೇಜ್ ಪಾಸಿಂಗ್ ಇಂಟರ್ಫೇಸ್ (MPI) ನಂತಹ ಪರಿಣಾಮಕಾರಿ ಮಲ್ಟಿ-GPU ಮತ್ತು ಮಲ್ಟಿ-ನೋಡ್ ಸಂವಹನ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ನೆಟ್ವರ್ಕ್ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಬಳಕೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಆಳವಾದ ನರಮಂಡಲದ ನೆಟ್ವರ್ಕ್ ಮಾದರಿಗಳನ್ನು ಚಲಾಯಿಸುವಾಗ ಚೆನ್ನಾಗಿ ಅಳೆಯುತ್ತದೆ. ಇದು ಪ್ರಸ್ತುತ ಹಲವಾರು ಜನಪ್ರಿಯ ಯಂತ್ರ ಕಲಿಕೆ ಚೌಕಟ್ಟುಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಅವುಗಳೆಂದರೆ , ಟೆನ್ಸರ್ಫ್ಲೋ, ಕೆರಾಸ್ ಮತ್ತು ಪೈಟಾರ್ಚ್.
MXNet ಮತ್ತು ಹೊರೋವೋಡ್ ಏಕೀಕರಣ
ಹೊರೋವೋಡ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ವಿತರಿಸಿದ ಕಲಿಕೆಯ API ಗಳ ಮೂಲಕ MXNet ಹೊರೋವೋಡ್ನೊಂದಿಗೆ ಸಂಯೋಜನೆಗೊಳ್ಳುತ್ತದೆ. ಹೊರೋವೋಡ್ನಲ್ಲಿ, ಸಂವಹನ API ಗಳು horovod.ಪ್ರಸಾರ(), horovod.allgather() и horovod.allreduce() MXNet ಎಂಜಿನ್ನ ಕಾರ್ಯ ಗ್ರಾಫ್ನ ಭಾಗವಾಗಿ ಅಸಮಕಾಲಿಕ ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ರೀತಿಯಾಗಿ, ಸಿಂಕ್ರೊನೈಸೇಶನ್ನಿಂದ ಉಂಟಾಗುವ ಕಾರ್ಯಕ್ಷಮತೆಯ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು ಸಂವಹನ ಮತ್ತು ಲೆಕ್ಕಾಚಾರದ ನಡುವಿನ ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು MXNet ಎಂಜಿನ್ ಸುಲಭವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ. ಹೊರೋವೊಡ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ವಿತರಿಸಿದ ಆಪ್ಟಿಮೈಜರ್ ವಸ್ತು horovod.DistributedOptimizer ಮೂಲಕ ಇನ್ನಷ್ಟು ವಿಸ್ತರಿಸುತ್ತದೆ ಆಪ್ಟಿಮೈಜರ್ MXNet ನಲ್ಲಿ ವಿತರಿಸಲಾದ ಪ್ಯಾರಾಮೀಟರ್ ನವೀಕರಣಗಳಿಗಾಗಿ ಸೂಕ್ತವಾದ ಹೊರೋವೊಡ್ API ಗಳನ್ನು ಕರೆಯಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಎಲ್ಲಾ ಅನುಷ್ಠಾನ ವಿವರಗಳು ಅಂತಿಮ ಬಳಕೆದಾರರಿಗೆ ಪಾರದರ್ಶಕವಾಗಿರುತ್ತವೆ.
ವೇಗದ ಆರಂಭ
ನಿಮ್ಮ ಮ್ಯಾಕ್ಬುಕ್ನಲ್ಲಿ MXNet ಮತ್ತು Horovod ಬಳಸಿಕೊಂಡು MNIST ಡೇಟಾಸೆಟ್ನಲ್ಲಿ ಸಣ್ಣ ಕನ್ವಲ್ಯೂಷನಲ್ ನರಮಂಡಲ ಜಾಲಕ್ಕೆ ತರಬೇತಿ ನೀಡಲು ನೀವು ಬೇಗನೆ ಪ್ರಾರಂಭಿಸಬಹುದು.
ಪ್ರಾರಂಭಿಸಲು, PyPI ನಿಂದ mxnet ಮತ್ತು horovod ಅನ್ನು ಸ್ಥಾಪಿಸಿ:
pip install mxnet
pip install horovodಗಮನಿಸಿ: ನೀವು ಈ ಸಮಯದಲ್ಲಿ ದೋಷವನ್ನು ಎದುರಿಸಿದರೆ ಪಿಪ್ ಇನ್ಸ್ಟಾಲ್ ಹೊರೋವೋಡ್, ನೀವು ವೇರಿಯೇಬಲ್ ಅನ್ನು ಸೇರಿಸಬೇಕಾಗಬಹುದು MACOSX_ನಿಯೋಜನೆ_ಗುರಿ=10.vvಅಲ್ಲಿ vv – ಇದು ನಿಮ್ಮ MacOS ಆವೃತ್ತಿಯ ಆವೃತ್ತಿಯಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, MacOSX ಸಿಯೆರಾಕ್ಕಾಗಿ ನೀವು ಬರೆಯಬೇಕಾಗುತ್ತದೆ MACOSX_DEPLOYMENT_TARGET=10.12 ಪಿಪ್ ಇನ್ಸ್ಟಾಲ್ ಹೋರೊವೊಡ್
ನಂತರ 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 GPU ಗಳಲ್ಲಿ ಇಮೇಜ್ನೆಟ್ ಡೇಟಾಸೆಟ್ನಲ್ಲಿ ResNet1-v64 ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡುವಾಗ ಪುಟ 3.16xದೊಡ್ಡದು AWS ಕ್ಲೌಡ್ನಲ್ಲಿ 2 NVIDIA Tesla V8 GPU ಗಳನ್ನು ಹೊಂದಿರುವ EC100, ನಾವು 45000 ಚಿತ್ರಗಳು/ಸೆಕೆಂಡಿನ ತರಬೇತಿ ಥ್ರೋಪುಟ್ ಅನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ (ಅಂದರೆ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ತರಬೇತಿ ಪಡೆದ ಮಾದರಿಗಳ ಸಂಖ್ಯೆ). 44 ಯುಗಗಳ ನಂತರ 90 ನಿಮಿಷಗಳಲ್ಲಿ 75.7% ರ ಅತ್ಯುತ್ತಮ ನಿಖರತೆಯೊಂದಿಗೆ ತರಬೇತಿ ಪೂರ್ಣಗೊಂಡಿತು.
ನಾವು ಇದನ್ನು 8, 16, 32, ಮತ್ತು 64 GPU ಗಳಲ್ಲಿ ಒಂದೇ ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ ಮತ್ತು ಸರ್ವರ್ನಿಂದ ಕೆಲಸಗಾರ ಅನುಪಾತವು ಕ್ರಮವಾಗಿ 1:1 ಮತ್ತು 2:1 ನೊಂದಿಗೆ ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ಗಳನ್ನು ಬಳಸುವ ವಿಧಾನದೊಂದಿಗೆ MXNet ನ ವಿತರಣಾ ತರಬೇತಿಗೆ ಹೋಲಿಸಿದ್ದೇವೆ. ನೀವು ಫಲಿತಾಂಶವನ್ನು ಕೆಳಗಿನ ಚಿತ್ರ 1 ರಲ್ಲಿ ನೋಡಬಹುದು. ಎಡಭಾಗದಲ್ಲಿರುವ y-ಅಕ್ಷವು ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ತರಬೇತಿ ನೀಡಬೇಕಾದ ಚಿತ್ರಗಳ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಸಾಲುಗಳು ಬಲಭಾಗದಲ್ಲಿರುವ y-ಅಕ್ಷದಲ್ಲಿ ಸ್ಕೇಲಿಂಗ್ ದಕ್ಷತೆಯನ್ನು (ಅಂದರೆ ನಿಜವಾದ ಮತ್ತು ಆದರ್ಶ ಥ್ರೋಪುಟ್ನ ಅನುಪಾತ) ತೋರಿಸುತ್ತವೆ. ನೀವು ನೋಡುವಂತೆ, ಸರ್ವರ್ಗಳ ಸಂಖ್ಯೆಯ ಆಯ್ಕೆಯು ಸ್ಕೇಲಿಂಗ್ ದಕ್ಷತೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಒಂದೇ ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ನೊಂದಿಗೆ, 38 GPU ಗಳಲ್ಲಿ ಸ್ಕೇಲಿಂಗ್ ದಕ್ಷತೆಯು 64% ಕ್ಕೆ ಇಳಿಯುತ್ತದೆ. ಹೊರೋವೊಡ್ನಂತೆಯೇ ಅದೇ ಸ್ಕೇಲಿಂಗ್ ದಕ್ಷತೆಯನ್ನು ಸಾಧಿಸಲು, ನೀವು ಸರ್ವರ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಾರ್ಮಿಕರ ಸಂಖ್ಯೆಗಿಂತ ಎರಡು ಪಟ್ಟು ಹೆಚ್ಚಿಸಬೇಕಾಗುತ್ತದೆ.

ಚಿತ್ರ 1. ಹೊರೊವೊಡ್ ಮತ್ತು ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ನೊಂದಿಗೆ MXNet ಬಳಸಿಕೊಂಡು ವಿತರಿಸಿದ ತರಬೇತಿಯ ಹೋಲಿಕೆ.
ಕೆಳಗಿನ ಕೋಷ್ಟಕ 1 ರಲ್ಲಿ, 64 GPU ಗಳಲ್ಲಿ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸುವಾಗ ಪ್ರತಿ ನಿದರ್ಶನಕ್ಕೆ ಅಂತಿಮ ವೆಚ್ಚವನ್ನು ನಾವು ಹೋಲಿಸುತ್ತೇವೆ. ಹೊರೋವೊಡ್ನೊಂದಿಗೆ MXNet ಅನ್ನು ಬಳಸುವುದರಿಂದ ಕಡಿಮೆ ವೆಚ್ಚದಲ್ಲಿ ಉತ್ತಮ ಥ್ರೋಪುಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಕೋಷ್ಟಕ 1. ಹೊರೋವೊಡ್ ಮತ್ತು 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. Также вы можете использовать , ಅಲ್ಲಿ ಈ ಲೈಬ್ರರಿಗಳು ಈಗಾಗಲೇ ಪೂರ್ವ-ಸ್ಥಾಪಿತವಾಗಿವೆ.
2 ಹೆಜ್ಜೆ
ಹೊರೋವೋಡ್ API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಿಮ್ಮ MXNet ತರಬೇತಿ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ವರ್ಧಿಸಿ. MXNet Gluon API ಅನ್ನು ಆಧರಿಸಿದ ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸರಳ ಟೆಂಪ್ಲೇಟ್ ಆಗಿ ಬಳಸಬಹುದು. ಹಾಗೆ ಮಾಡಲು ನೀವು ಈಗಾಗಲೇ ತರಬೇತಿ ಸ್ಕ್ರಿಪ್ಟ್ ಹೊಂದಿದ್ದರೆ ದಪ್ಪ ಅಕ್ಷರಗಳ ಸಾಲುಗಳು ಅಗತ್ಯವಿದೆ. ಹೊರೋವೋಡ್ನೊಂದಿಗೆ ತರಬೇತಿ ನೀಡಲು ನೀವು ಮಾಡಬೇಕಾದ ಕೆಲವು ನಿರ್ಣಾಯಕ ಬದಲಾವಣೆಗಳು ಇಲ್ಲಿವೆ:
- ಸರಿಯಾದ GPU ಕೋರ್ನಲ್ಲಿ ತರಬೇತಿಯನ್ನು ನಡೆಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಸ್ಥಳೀಯ ಹೊರೋವೊಡ್ ಶ್ರೇಣಿಗೆ (ಸಾಲು 8) ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಸಂದರ್ಭವನ್ನು ಹೊಂದಿಸಿ.
- ಎಲ್ಲಾ ಕೆಲಸಗಾರರು ಒಂದೇ ಆರಂಭಿಕ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುತ್ತಾರೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಒಬ್ಬ ಕೆಲಸಗಾರನಿಂದ ಎಲ್ಲರಿಗೂ (ಸಾಲು 18) ಆರಂಭಿಕ ನಿಯತಾಂಕಗಳನ್ನು ರವಾನಿಸಿ.
- ಹೊರೋವೊಡ್ ರಚಿಸಿ ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ಆಪ್ಟಿಮೈಜರ್ (ಸಾಲು 25) ವಿತರಣಾ ರೀತಿಯಲ್ಲಿ ನಿಯತಾಂಕಗಳನ್ನು ನವೀಕರಿಸಲು.
ಪೂರ್ಣ ಸ್ಕ್ರಿಪ್ಟ್ಗಾಗಿ, ದಯವಿಟ್ಟು ಹೊರೋವೊಡ್-ಎಂಎಕ್ಸ್ನೆಟ್ ಉದಾಹರಣೆಗಳನ್ನು ನೋಡಿ. и .
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 GPU ಗಳಿಗೆ ಅಳೆಯುತ್ತಿದ್ದಂತೆ, ನಾವು ತರಬೇತಿ ವೇಗವನ್ನು GPU ಗಳ ಸಂಖ್ಯೆಯೊಂದಿಗೆ ರೇಖೀಯವಾಗಿ ಅಳೆಯುತ್ತೇವೆ (0,1 GPU ಗೆ 1 ರಿಂದ 6,4 GPU ಗಳಿಗೆ 64 ಕ್ಕೆ) ಆದರೆ ಪ್ರತಿ GPU ಗೆ ಚಿತ್ರಗಳ ಸಂಖ್ಯೆಯನ್ನು 256 ಕ್ಕೆ (256 GPU ಗೆ 1 ಚಿತ್ರಗಳ ಬ್ಯಾಚ್ನಿಂದ 16 GPU ಗಳಿಗೆ 384 ಕ್ಕೆ) ಇರಿಸುತ್ತೇವೆ. GPU ಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚಾದಂತೆ ತೂಕದ ಕೊಳೆತ ಮತ್ತು ಆವೇಗ ನಿಯತಾಂಕಗಳು ಬದಲಾಗುತ್ತಿದ್ದವು. NVIDIA Tesla GPU ಗಳಿಂದ ಬೆಂಬಲಿತವಾದ 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ತೀರ್ಮಾನಕ್ಕೆ
ಈ ಲೇಖನದಲ್ಲಿ, ನಾವು Apache MXNet ಮತ್ತು Horovod ಬಳಸಿಕೊಂಡು ವಿತರಿಸಿದ ಮಾದರಿ ತರಬೇತಿಗೆ ಸ್ಕೇಲೆಬಲ್ ವಿಧಾನವನ್ನು ನೋಡಿದ್ದೇವೆ. ResNet50-v1 ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡಿದ ಇಮೇಜ್ನೆಟ್ ಡೇಟಾಸೆಟ್ನಲ್ಲಿನ ಪ್ಯಾರಾಮೀಟರ್ ಸರ್ವರ್ ವಿಧಾನಕ್ಕೆ ಹೋಲಿಸಿದರೆ ನಾವು ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ವೆಚ್ಚ-ಪರಿಣಾಮಕಾರಿತ್ವವನ್ನು ತೋರಿಸಿದ್ದೇವೆ. Horovod ಬಳಸಿಕೊಂಡು ಬಹು ನಿದರ್ಶನಗಳಲ್ಲಿ ತರಬೇತಿಯನ್ನು ನಡೆಸಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಲು ನೀವು ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ಹಂತಗಳನ್ನು ಸಹ ನಾವು ತೋರಿಸಿದ್ದೇವೆ.
ನೀವು MXNet ಮತ್ತು ಆಳವಾದ ಕಲಿಕೆಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುತ್ತಿದ್ದರೆ, ಅನುಸ್ಥಾಪನಾ ಪುಟಕ್ಕೆ ಹೋಗಿ. , ಮೊದಲು MXNet ಅನ್ನು ನಿರ್ಮಿಸಲು. ಲೇಖನವನ್ನು ಓದಲು ನಾವು ಹೆಚ್ಚು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಪ್ರಾರಂಭಿಸಲು.
ನೀವು ಈಗಾಗಲೇ MXNet ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ್ದರೆ ಮತ್ತು ಹೊರೊವೊಡ್ನೊಂದಿಗೆ ವಿತರಣಾ ಕಲಿಕೆಯನ್ನು ಪ್ರಯತ್ನಿಸಲು ಬಯಸಿದರೆ, ನಂತರ ಪರಿಶೀಲಿಸಿ , ಅದನ್ನು MXNet ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಿ ಮತ್ತು ಉದಾಹರಣೆಯನ್ನು ಅನುಸರಿಸಿ ಅಥವಾ .
*ವೆಚ್ಚವನ್ನು ಆಧರಿಸಿ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ EC2 ನಿದರ್ಶನಗಳಿಗಾಗಿ AWS
ಕೋರ್ಸ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ
ಮೂಲ: www.habr.com
