AWS Sagemaker Hyperpod ನಲ್ಲಿ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ GPU ಮೆಮೊರಿ ವರ್ಗಾವಣೆ
3200 Gbps ಕಡೆಗೆ ಪ್ರಯಾಣ
ಆಧುನಿಕ ಡೀಪ್ ಲರ್ನಿಂಗ್ ಮೂಲಸೌಕರ್ಯಕ್ಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಯಂತ್ರಗಳ ನಡುವಿನ GPUಗಳ ನಡುವೆ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ. Perplexity ನಲ್ಲಿ, ನಾವು ಒಂದು ವಿಶಿಷ್ಟವಾದ ತಾಂತ್ರಿಕ ಸವಾಲನ್ನು ಎದುರಿಸಿದ್ದೇವೆ: ಯಂತ್ರಗಳ ನಡುವೆ ನಿರಂತರವಲ್ಲದ GPU ಮೆಮೊರಿ ಪ್ರದೇಶಗಳನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಗರಿಷ್ಠ ವೇಗದಲ್ಲಿ ಸಮರ್ಥವಾಗಿ ವರ್ಗಾಯಿಸುವುದು. ನಮ್ಮ ಗುರಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಆದ AWS p5 ಇನ್ಸ್ಟೆನ್ಸ್ಗಳು 32 ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳ ಮೂಲಕ 3200 Gbps ನಷ್ಟು ಪ್ರಭಾವಶಾಲಿ ನೆಟ್ವರ್ಕ್ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ. ಈ ಲೇಖನವು ಈ ಸೈದ್ಧಾಂತಿಕ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ನ 97.1% ಅನ್ನು ಸಾಧಿಸುವ ಕಸ್ಟಮ್ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕಿಂಗ್ ಪರಿಹಾರವನ್ನು ನಿರ್ಮಿಸುವ ನಮ್ಮ ಪ್ರಯಾಣವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ.
ತಾಂತ್ರಿಕ ಸವಾಲು
ನಮ್ಮ ಬಳಕೆಯ ಸಂದರ್ಭವು ಹಲವಾರು ಪ್ರಮುಖ ತಾಂತ್ರಿಕ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದೆ:
- ನಿರಂತರವಲ್ಲದ ಮೆಮೊರಿ ತುಣುಕುಗಳ ರಿಮೋಟ್ GPUಗಳ ನಡುವಿನ ಹೆಚ್ಚಿನ-ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ವರ್ಗಾವಣೆ
- ನಡೆಯುತ್ತಿರುವ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಅಡ್ಡಿಪಡಿಸದೆ Kubernetes ನಿಯೋಜನೆಗಳಿಂದ ನೋಡ್ಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಸೇರಿಸುವ ಅಥವಾ ತೆಗೆದುಹಾಕುವ ಸಾಮರ್ಥ್ಯ
- ಪೀರ್-ಟು-ಪೀರ್ ಸಂವಹನ ಮಾದರಿಗಳಿಗೆ ಬೆಂಬಲ
NVIDIA ನ NCCL ಲೈಬ್ರರಿಯು ವಿತರಿಸಿದ ಡೀಪ್ ಲರ್ನಿಂಗ್ಗಾಗಿ ವಾಸ್ತವಿಕ ಮಾನದಂಡವಾಗಿದ್ದರೂ, ಇದು ನಮ್ಮ ಬಳಕೆಯ ಸಂದರ್ಭಕ್ಕೆ ಸೂಕ್ತವಾಗಿರಲಿಲ್ಲ:
- NCCL ಸಾಮೂಹಿಕ ಸಂವಹನದಲ್ಲಿ ಉತ್ತಮವಾಗಿದೆ ಆದರೆ ಸ್ಥಿರವಾದ "ಪ್ರಪಂಚ"ವನ್ನು ಸ್ಥಾಪಿಸುವ ಅಗತ್ಯವಿದೆ, ಇದು ಭಾಗವಹಿಸುವ ನೋಡ್ಗಳನ್ನು ಸರಿಹೊಂದಿಸುವಾಗ ಸಂಪೂರ್ಣ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ.
- NCCL ನ ಸಿಂಕ್ರೊನಸ್ ಸಂವಹನ ಮಾದರಿಯು ನಮ್ಮ ಅಸಿಂಕ್ರೊನಸ್ ವರ್ಕ್ಲೋಡ್ಗಾಗಿ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ
- ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ ನಮ್ಮ ಮೆಮೊರಿ ವರ್ಗಾವಣೆ ಮಾದರಿಗಳ ಮೇಲೆ ನಮಗೆ ನೇರ ನಿಯಂತ್ರಣ ಬೇಕಿತ್ತು
- ನಮ್ಮದೇ ಆದ ಪರಿಹಾರವನ್ನು ನಿರ್ಮಿಸುವುದು ಮೌಲ್ಯಯುತವಾದ ಕಲಿಕೆಯ ಅವಕಾಶಗಳನ್ನು ಒದಗಿಸಿತು
ಆಧುನಿಕ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕ್ಗಳು
ನಮ್ಮ ಪರಿಹಾರವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಆಧುನಿಕ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕ್ಗಳು ಸಾಂಪ್ರದಾಯಿಕ ನೆಟ್ವರ್ಕಿಂಗ್ಗಿಂತ ಹೇಗೆ ಭಿನ್ನವಾಗಿವೆ ಎಂಬುದನ್ನು ಮೊದಲು ಅನ್ವೇಷಿಸೋಣ.
ನಾವು ಪ್ರತಿದಿನ ಬಳಸುವ ಹೆಚ್ಚಿನ ನೆಟ್ವರ್ಕ್ಗಳು TCP/IP ಪ್ರೋಟೋಕಾಲ್ಗಳನ್ನು ಅವಲಂಬಿಸಿವೆ, ಇಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸಾಕೆಟ್ಗಳನ್ನು ಬಳಸಿ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಮೂಲಕ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತವೆ. ಆದಾಗ್ಯೂ, ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕ್ಗಳು RDMA (ರಿಮೋಟ್ ಡೈರೆಕ್ಟ್ ಮೆಮೊರಿ ಆಕ್ಸೆಸ್) ಅನ್ನು ಬಳಸುತ್ತವೆ - ಇದು CPU ಅನ್ನು ಒಳಗೊಳ್ಳದೆ ಯಂತ್ರಗಳ ನಡುವೆ ನೇರ ಮೆಮೊರಿ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನವಾದ ಹಾರ್ಡ್ವೇರ್ ಮತ್ತು ಸಾಫ್ಟ್ವೇರ್ ಸ್ಟಾಕ್ ಆಗಿದೆ.
AWS Elastic Fabric Adapter (EFA) ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು Scalable Reliable Datagram (SRD) ಎಂಬ Amazon ನ ಕಸ್ಟಮ್ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಕಸ್ಟಮ್ ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ಫೇಸ್ ಆಗಿದೆ. ಬಳಕೆದಾರರ ಸ್ಪೇಸ್, ಕರ್ನಲ್ ಸ್ಪೇಸ್ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಬಫರ್ಗಳ ನಡುವೆ ಡೇಟಾವನ್ನು ಹಲವಾರು ಬಾರಿ ನಕಲಿಸಬೇಕಾದ ಸಾಂಪ್ರದಾಯಿಕ TCP/IP ನೆಟ್ವರ್ಕಿಂಗ್ಗಿಂತ ಭಿನ್ನವಾಗಿ, RDMA ಜೊತೆಗಿನ EFA CPU ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೈಪಾಸ್ ಮಾಡಿ, GPU ಮೆಮೊರಿ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ ನಡುವೆ ನೇರ ಡೇಟಾ ವರ್ಗಾವಣೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕ್ ವಿನ್ಯಾಸದ ತತ್ವಶಾಸ್ತ್ರ
ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕಿಂಗ್ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಹಲವಾರು ಮೂಲಭೂತ ಊಹೆಗಳನ್ನು ಮರುಚಿಂತನೆ ಮಾಡುವ ಅಗತ್ಯವಿದೆ:
- ಬಫರ್ ಮಾಲೀಕತ್ವ: ಕರ್ನಲ್ ನೆಟ್ವರ್ಕ್ ಬಫರ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮತ್ತು ಬಳಕೆದಾರರ ಸ್ಪೇಸ್ ಮತ್ತು ಕರ್ನಲ್ ಸ್ಪೇಸ್ ನಡುವೆ ನಕಲು ಮಾಡುವ ಅಗತ್ಯವಿರುವ ಸಾಂಪ್ರದಾಯಿಕ ಸಾಕೆಟ್ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, RDMA ಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳು ತಮ್ಮದೇ ಆದ ಬಫರ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿದೆ. ಅಪ್ಲಿಕೇಶನ್ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಕಾರ್ಯಾಚರಣೆಯು ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಅದು ಬಫರ್ ಮಾಲೀಕತ್ವವನ್ನು ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ, ಡೇಟಾವನ್ನು ನಕಲಿಸುವ ಅಗತ್ಯವನ್ನು ಇದು ನಿವಾರಿಸುತ್ತದೆ.
- ಮೆಮೊರಿ ನೋಂದಣಿ: ಅಪ್ಲಿಕೇಶನ್ಗಳು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ನೊಂದಿಗೆ ಮೆಮೊರಿ ಪ್ರದೇಶಗಳನ್ನು ನೋಂದಾಯಿಸಿಕೊಳ್ಳಬೇಕು. CPU, GPUಗಳು ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳು ಒಂದೇ ವರ್ಚುವಲ್ ವಿಳಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅನುಮತಿಸುವ ವರ್ಚುವಲ್ ವಿಳಾಸ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಕರ್ನಲ್ ಸೆಟ್ ಅಪ್ ಮಾಡುತ್ತದೆ. ಈ ನೋಂದಣಿಯು ಒಂದು ಬಾರಿ ನಡೆಯುವ ಕಾರ್ಯಾಚರಣೆಯಾಗಿದ್ದು, ಇದು ನಂತರದ ಶೂನ್ಯ-ಕಾಪಿ ಡೇಟಾ ವರ್ಗಾವಣೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
- ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ vs ಡೇಟಾ ಪ್ಲೇನ್: ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕ್ಗಳು ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಎರಡು ವರ್ಗಗಳಾಗಿ ಪ್ರತ್ಯೇಕಿಸುತ್ತವೆ:
- ಭದ್ರತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಕಾರ್ಯಾಚರಣೆಗಳು (ಸಂಪರ್ಕ ಸೆಟಪ್ ಮತ್ತು ಮೆಮೊರಿ ನೋಂದಣಿಯಂತಹವು) ಕರ್ನಲ್ ಮೂಲಕ ಹೋಗುತ್ತವೆ
- ಡೇಟಾ ಪ್ಲೇನ್ ಕಾರ್ಯಾಚರಣೆಗಳು (ನಿಜವಾದ ಡೇಟಾ ವರ್ಗಾವಣೆ) ಗರಿಷ್ಠ ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಕರ್ನಲ್ ಅನ್ನು ಬೈಪಾಸ್ ಮಾಡುತ್ತವೆ
- ಪ್ರಸರಣಕ್ಕಿಂತ ಮೊದಲು ಸ್ವೀಕರಿಸುವುದು: ಕರ್ನಲ್-ನಿರ್ವಹಿಸಿದ ಬಫರ್ಗಳಿಲ್ಲದೆ, ಒಳಬರುವ ಡೇಟಾವನ್ನು ಎಲ್ಲಿ ಇರಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸ್ವೀಕರಿಸುವ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮುಂಚಿತವಾಗಿ ಪೋಸ್ಟ್ ಮಾಡಬೇಕು. ಅಪ್ಲಿಕೇಶನ್ಗಳು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಬಹುದಾದ ಸಾಕೆಟ್ ಮಾದರಿಯಿಂದ ಇದು ಮೂಲಭೂತ ಬದಲಾವಣೆಯಾಗಿದೆ.
- ಪಾಲ್-ಆಧಾರಿತ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ:
epollನಂತಹ ಕಾರ್ಯವಿಧಾನಗಳ ಮೂಲಕ ಕರ್ನಲ್ ಅಧಿಸೂಚನೆಗಳಿಗಾಗಿ ಕಾಯುವ ಬದಲು, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹಾರ್ಡ್ವೇರ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಕ್ಯೂಗಳನ್ನು ನೇರವಾಗಿ ಪಾಲ್ ಮಾಡುತ್ತವೆ. ಇದು ಸಿಸ್ಟಮ್ ಕಾಲ್ ಓವರ್ಹೆಡ್ ಅನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಮತ್ತು ಪೂರ್ಣಗೊಂಡ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ತಕ್ಷಣದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. - ಹಾರ್ಡ್ವೇರ್ ಟೋಪೋಲಜಿ ಜಾಗೃತಿ: ಗರಿಷ್ಠ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಧಿಸಲು ಹಾರ್ಡ್ವೇರ್ ಟೋಪೋಲಜಿಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವುದು ಅತ್ಯಗತ್ಯ.
ಹಾರ್ಡ್ವೇರ್ ಟೋಪೋಲಜಿಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
AWS p5 ಇನ್ಸ್ಟೆನ್ಸ್ಗಳು ಅತ್ಯಾಧುನಿಕ ಆಂತರಿಕ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಹೊಂದಿವೆ. ಕೆಳಗೆ ತೋರಿಸಿರುವಂತೆ, ಪ್ರತಿ ಇನ್ಸ್ಟನ್ಸ್ ಎರಡು NUMA ನೋಡ್ಗಳನ್ನು ರೂಪಿಸುವ ಎರಡು CPU ಸಾಕೆಟ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಪ್ರತಿ NUMA ನೋಡ್ ನಾಲ್ಕು PCIe ಸ್ವಿಚ್ಗಳಿಗೆ ಸಂಪರ್ಕ ಕಲ್ಪಿಸುತ್ತದೆ:
ಪ್ರತಿ PCIe ಸ್ವಿಚ್ ಅಡಿಯಲ್ಲಿ, ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಕಾಣುತ್ತೇವೆ:
- ನಾಲ್ಕು 100 Gbps EFA ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳು
- ಒಂದು NVIDIA H100 GPU
- ಒಂದು NVMe SSD
TCP/IP ಮತ್ತು RDMA ವರ್ಗಾವಣೆಗಳಿಗಾಗಿ ಡೇಟಾ ಮಾರ್ಗಗಳು ತಮ್ಮ ವಿಧಾನಗಳಲ್ಲಿನ ಮೂಲಭೂತ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತವೆ:
TCP/IP (ಎಡಭಾಗ) ನೊಂದಿಗೆ, ಡೇಟಾವನ್ನು ಹಲವಾರು ಬಾರಿ ನಕಲಿಸಬೇಕು:
- GPU ಮೆಮೊರಿಯಿಂದ ಬಳಕೆದಾರರ ಸ್ಪೇಸ್ನಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಬಫರ್ಗೆ
- ಬಳಕೆದಾರರ ಸ್ಪೇಸ್ ಬಫರ್ನಿಂದ ಕರ್ನಲ್ ಬಫರ್ಗೆ
- ಕರ್ನಲ್ ಬಫರ್ನಿಂದ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗೆ
- ಸ್ವೀಕರಿಸುವ ಭಾಗದಲ್ಲಿ ರಿವರ್ಸ್ ಪ್ರಕ್ರಿಯೆ ಸಂಭವಿಸುತ್ತದೆ
ಪ್ರತಿ ನಕಲು ಕಾರ್ಯಾಚರಣೆಯು CPU ಸೈಕಲ್ಗಳು ಮತ್ತು ಮೆಮೊರಿ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ ಬಳಕೆದಾರರ ಸ್ಪೇಸ್ ಮತ್ತು ಕರ್ನಲ್ ಸ್ಪೇಸ್ ನಡುವೆ ಸಂದರ್ಭ ಬದಲಾವಣೆ (context switch) ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, RDMA (ಬಲಭಾಗ) ನಿಜವಾದ ಶೂನ್ಯ-ಕಾಪಿ ಡೇಟಾ ವರ್ಗಾವಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ:
- ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ ನೇರವಾಗಿ GPU ಮೆಮೊರಿಯಿಂದ ಓದುತ್ತದೆ
- ಡೇಟಾ ನೇರವಾಗಿ ರಿಮೋಟ್ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗೆ ಪ್ರಯಾಣಿಸುತ್ತದೆ
- ರಿಮೋಟ್ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ ನೇರವಾಗಿ ಗಮ್ಯಸ್ಥಾನದ GPU ಮೆಮೊರಿಗೆ ಬರೆಯುತ್ತದೆ
- ವರ್ರ್ಗಾವಣೆ ಯಾವಾಗ ಮುಗಿದಿದೆ ಎಂದು ತಿಳಿಯಲು ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆದಾರರ ಸ್ಪೇಸ್ನಲ್ಲಿರುವ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಕ್ಯೂ (completion queue - CQ) ಅನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸಬೇಕಾಗುತ್ತದೆ
RDMA ಮತ್ತು ಸರಿಯಾದ ಹಾರ್ಡ್ವೇರ್ ಜೋಡಣೆಯೊಂದಿಗೆ, ಎರಡು GPU ಗಳ ನಡುವೆ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲು ಸ್ಥಳೀಯ PCIe ಸ್ವಿಚ್ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಮಾತ್ರ ದಾಟಬೇಕಾಗುತ್ತದೆ:
ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, TCP/IP ವರ್ಗಾವಣೆಗಳು ಮುಖ್ಯ ಮೆಮೊರಿಯ ಮೂಲಕ ಡೇಟಾವನ್ನು ಹಲವಾರು ಬಾರಿ ನಕಲಿಸಬೇಕು, ಇದು ಗಮನಾರ್ಹವಾದ PCIe ಬಸ್ ದಟ್ಟಣೆಯನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ:
libfabric ನೊಂದಿಗೆ ನಿರ್ಮಿಸುವುದು
ನಾವು libfabric ಅನ್ನು ಬಳಸಿದ್ದೇವೆ - ಇದು ಫ್ಯಾಬ್ರಿಕ್ ಸೇವೆಗಳಿಗೆ ಜೆನೆರಿಕ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುವ ಒಂದು ಫ್ರೇಮ್ವರ್ಕ್ ಆಗಿದೆ. ನಮ್ಮ ಅನುಷ್ಠಾನವು ಎರಡು ರೀತಿಯ RDMA ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬಳಸುತ್ತದೆ:
- ಮೆಮೊರಿ ಪ್ರದೇಶಗಳ ಕುರಿತು ಮೆಟಡೇಟಾವನ್ನು (ಉದಾ., ಆಫ್ಸೆಟ್ಗಳು ಮತ್ತು ಗಾತ್ರಗಳು) ಸಾಗಿಸುವ ನಿಯಂತ್ರಣ ಸಂದೇಶಗಳಿಗಾಗಿ ಎರಡು-ಬದಿಯ RDMA (SEND/RECV).
- वास्तविक वास्तविक ಡೇಟಾ ವರ್ಗಾವಣೆಗಾಗಿ ಒಂದು-ಬದಿಯ RDMA WRITE, ಇಲ್ಲಿ ಪ್ರತಿ WRITE ಕಾರ್ಯಾಚರಣೆಯು ಒಂದು ನಿರಂತರ ಮೆಮೊರಿ ತುಣುಕನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
ಪೀಕ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಕಡೆಗೆ ಪ್ರಯಾಣ
ನಮ್ಮ ಅಭಿವೃದ್ಧಿಯು ಹಲವಾರು ಹಂತಗಳ ಮೂಲಕ ಮುಂದುವರೆಯಿತು:
- SEND/RECV ಬಳಸಿ ಮೂಲ ಏಕಮುಖ ಸಂದೇಶ ವರ್ಗಾವಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ
- ದ್ವಿಮುಖ ಸಂವಹನಕ್ಕೆ ವಿಸ್ತರಿಸಲಾಗಿದೆ
- ನೇರ GPU-GPU ವರ್ಗಾವಣೆಗಾಗಿ GPUDirect RDMA WRITE ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ
- ಬಹು ಏಕಕಾಲಿಕ ವರ್ಗಾವಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ವಿಸ್ತರಿಸಲಾಗಿದೆ
- ದೃಢತೆಗಾಗಿ ಕಾರ್ಯಾಚರಣೆ ಕ್ಯೂಯಿಂಗ್ ಅನ್ನು ಪರಿಚಯಿಸಲಾಗಿದೆ
- ಒಂದೇ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ನಲ್ಲಿ 97.4% ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಬಳಕೆಯನ್ನು ಸಾಧಿಸಲಾಗಿದೆ
32 ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳಿಗೆ ಅಳತೆ ಮಾಡುವಾಗ, ನಾವು ಹಲವಾರು ನಿರ್ಣಾಯಕ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ್ದೇವೆ:
- ಕಾರ್ಯಾಚರಣೆ ಕ್ಯೂಯಿಂಗ್: ನೇರವಾಗಿ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳಿಗೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಸಲ್ಲಿಸುವ ಬದಲು, ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಮಟ್ಟದ ಕ್ಯೂ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. ಇದು ನೆಟ್ವರ್ಕ್ ದಟ್ಟಣೆಯ ವಿರುದ್ಧ ದೃಢತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ.
- ನೆಟ್ವರ್ಕ್ ವಾರ್ಮ್ಅಪ್: ಮುಂಚಿತವಾಗಿ ಸಂಪರ್ಕಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು ಸ್ಟಾರ್ಟ್ಅಪ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಿತು.
- ಮಲ್ಟಿ-ಥ್ರೆಡಿಂಗ್: ಪ್ರತಿ GPU ನ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ಮೀಸಲಾದ ಥ್ರೆಡ್ಗಳು.
- CPU ಕೋರ್ ಪಿನ್ನಿಂಗ್: NUMA ಪರಿಣಾಮಗಳು ಮತ್ತು ಕ್ಯಾಶ್ ಮಿಸ್ಗಳನ್ನು ತಪ್ಪಿಸಲು ನಿರ್ದಿಷ್ಟ CPU ಕೋರ್ಗಳಿಗೆ ಥ್ರೆಡ್ಗಳನ್ನು ಬೈಂಡ್ ಮಾಡುವುದು.
- ಸ್ಟೇಟ್ ಶಾರ್ಡಿಂಗ್: ಥ್ರೆಡ್ಗಳ ನಡುವಿನ ಸ್ಪರ್ಧೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು.
- ಕಾರ್ಯಾಚರಣೆ ಬ್ಯಾಚಿಂಗ್: ಬಹು ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸಲ್ಲಿಸುವುದು.
- ಲೇಜಿ ಆಪರೇಷನ್ ಪೋಸ್ಟಿಂಗ್: ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮೊದಲು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಕ್ಯೂ ಮಾಡಲಾಗುತ್ತದೆ. ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಕ್ಯೂ ಅನ್ನು ಪೋಲ್ ಮಾಡಿದ ನಂತರ, ನೆಟ್ವರ್ಕ್ ಸಂಪನ್ಮೂಲಗಳ ಸಮರ್ಥ ಬಳಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತಾ, ಬಾಕಿ ಉಳಿದಿರುವ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗೆ ಸಲ್ಲಿಸಲು ನಾವು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ.
- NUMA-ಅವೇರ್ ಸಂಪನ್ಮೂಲ ಹಂಚಿಕೆ: ಮೆಮೊರಿ ಪ್ರವೇಶ ಸುಪ್ತತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸರಿಯಾದ NUMA ನೋಡ್ನಲ್ಲಿ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಕ್ಯೂಗಳಂತಹ libfabric ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹಂಚಿಕೆ ಮಾಡಿ.
ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳ ಮೂಲಕ, ನಾವು 3,108 Gbps ನ ಅಂತಿಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ - ಇದು ಸೈದ್ಧಾಂತಿಕ ಗರಿಷ್ಠ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ನ 97.1% ಆಗಿದೆ.
ಕೆಳಗಿನ ವೀಡಿಯೊದಲ್ಲಿ ನಮ್ಮ ಕಮಾಂಡ್-ಲೈನ್ ಪ್ರೋಗ್ರಾಮ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ತೋರಿಸುತ್ತದೆ. ಇದು ರಿಮೋಟ್ ನೋಡ್ಗೆ GPU ಮೆಮೊರಿಯ ನಿರಂತರವಲ್ಲದ ತುಣುಕುಗಳನ್ನು ವರ್ಗಾಯಿಸುತ್ತದೆ, 3108.283 Gbps ನ ಪ್ರಸರಣ ವೇಗವನ್ನು ಸಾಧಿಸುತ್ತದೆ - ಇದು ನೆಟ್ವರ್ಕ್ ಮೂಲಸೌಕರ್ಯದ ಸೈದ್ಧಾಂತಿಕ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಬಳಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ:
ತೀರ್ಮಾನ
ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ನೆಟ್ವರ್ಕಿಂಗ್ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಲು ಹಾರ್ಡ್ವೇರ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಸಿಸ್ಟಮ್ ವಿನ್ಯಾಸ ತತ್ವಗಳೆರಡನ್ನೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಅಗತ್ಯವಿದೆ. NCCL ನಂತಹ ಲೈಬ್ರರಿಗಳು ಸಾಮಾನ್ಯ ಮಾದರಿಗಳಿಗೆ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಗಳನ್ನು ಒದಗಿಸುತ್ತವೆಯಾದರೂ, ಕೆಲವೊಮ್ಮೆ ನಿರ್ದಿಷ್ಟ ಅವಶ್ಯಕತೆಗಳಿಗಾಗಿ ಕಸ್ಟಮ್ ಪರಿಹಾರಗಳು ಅಗತ್ಯವಿರುತ್ತವೆ.
ಸಿಸ್ಟಮ್ ಆರ್ಕಿಟೆಕ್ಚರ್, ಹಾರ್ಡ್ವೇರ್ ಟೋಪೋಲಜಿ ಮತ್ತು ವಿವಿಧ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳಿಗೆ ಎಚ್ಚರಿಕೆಯ ಗಮನ ಕೊಡುವ ಮೂಲಕ ಸೈದ್ಧಾಂತಿಕ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಧಿಸುವುದು ಸಾಧ್ಯ ಎಂಬುದನ್ನು ನಮ್ಮ ಪ್ರಯಾಣವು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ ಪ್ರತ್ಯೇಕ ಘಟಕಗಳನ್ನು ಮಾತ್ರ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅಲ್ಲ, ಆದರೆ ಸಂಪೂರ್ಣ ವ್ಯವಸ್ಥೆಯನ್ನು ರೂಪಿಸಲು ಅವು ಹೇಗೆ ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸುತ್ತವೆ ಎಂಬುದನ್ನು ತಿಳಿಯುವುದು.
ಅನುಷ್ಠಾನದ ವಿವರಗಳು ಮತ್ತು ಕೋಡ್ ಉದಾಹರಣೆಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಈ ಪ್ರಯಾಣದ ಸಂಪೂರ್ಣ ತಾಂತ್ರಿಕ ಆಳವಾದ ಡೈವ್ ನಮ್ಮ ಓಪನ್ ಸೋರ್ಸ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಲಭ್ಯವಿದೆ.
ಉಲ್ಲೇಖ
@online{perplexity2025HighPerformanceGpuMemoryTransferOnAwsSagemakerHyperpod,
author = {{Perplexity} and Lequn Chen and Phi Hoang},
title = {{High-performance GPU memory transfer on AWS Sagemaker Hyperpod}},
date = {2025-02-10},
url = {https://www.perplexity.ai/hub/blog/high-performance-gpu-memory-transfer-on-aws-sagemaker-hyperpod}
}