Google’s Gemma-4 31B ಮಾಡೆಲ್ ಅನ್ನು AWS Inferentia2 inf2.24xlarge ಗೆ ಪೋರ್ಟ್ ಮಾಡಿದಾಗ, CPU ರೆಫರೆನ್ಸ್‌ನೊಂದಿಗೆ ಪ್ರತಿ ಟೋಕನ್ ಕೂಡ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಯಿತು—ಆದರೂ ಉತ್ಪತ್ತಿಯಾದ ಪ್ರತಿಯೊಂದು ವಾಕ್ಯವೂ ಅರ್ಥಹೀನವಾಗಿತ್ತು. "ಹೊಂದಾಣಿಕೆ" (matching) ಮತ್ತು "ಕೆಲಸ ಮಾಡುವುದು" (working) ನಡುವಿನ ಈ ಅಂತರವು, ಅಮೆಜಾನ್‌ನ ಕಸ್ಟಮ್ ಇನ್ಫರೆನ್ಸ್ ಚಿಪ್‌ಗಳ ಮೇಲೆ ಬೃಹತ್ LLMಗಳನ್ನು ಅಳವಡಿಸಲು ಪ್ರಯತ್ನಿಸುವ ಯಾರಿಗಾದರೂ ಎಚ್ಚರಿಕೆಯಾಗಿದೆ.

ಟೋಕನ್-ಬೈ-ಟೋಕನ್ ಹೊಂದಾಣಿಕೆಯು ಏಕೆ ಸಾಕಾಗುವುದಿಲ್ಲ

ಡೆವಲಪರ್ Inferentia ಸಾಧನದಿಂದ ಬಂದ ಪ್ರತಿಯೊಂದು ಔಟ್‌ಪುಟ್ ಟೋಕನ್ ಅನ್ನು ಮಾಡೆಲ್‌ನ CPU ರನ್‌ನಿಂದ ಉತ್ಪತ್ತಿಯಾದ ಟೋಕನ್‌ನೊಂದಿಗೆ ಹೋಲಿಕೆ ಮಾಡಿದರು. ಸ್ಟ್ರೀಮ್‌ಗಳು ಒಂದೇ ಆಗಿದ್ದವು, ಆದ್ದರಿಂದ ಹಾರ್ಡ್‌ವೇರ್ ರೆಫರೆನ್ಸ್ ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ ಅನ್ನು ನಿಖರವಾಗಿ ಪುನರಾವರ್ತಿಸಿದೆ ಎಂದು ಕಂಡುಬಂದಿತು. ವಾಸ್ತವದಲ್ಲಿ, ಎರಡೂ ಸ್ಟ್ರೀಮ್‌ಗಳು ಚಾಟ್ ಟೆಂಪ್ಲೇಟ್ ಇಲ್ಲದ ಮತ್ತು ತಪ್ಪು ಟರ್ನ್ ಮಾರ್ಕರ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಮಾಡೆಲ್‌ಗೆ ತಪ್ಪಾದ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ನೀಡಿದ್ದವು. ಈ ಟೆಂಪ್ಲೇಟ್ ಇಲ್ಲದಿರುವುದು ಮಾಡೆಲ್ ಅನ್ನು ಅನಂತ ಲೂಪ್‌ಗೆ ತಳ್ಳಿತು ಮತ್ತು ಅರ್ಥಹೀನ ಮಾಹಿತಿಯನ್ನು ಹೊರಹಾಕಿತು. ಹಾರ್ಡ್‌ವೇರ್ ತನ್ನ ಕೆಲಸವನ್ನು ಮಾಡಿದೆ—ಅದು ರೆಫರೆನ್ಸ್ ಕೋಡ್‌ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದ ಬಗ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಿದೆ.

ಪಾಠ ಸರಳವಾಗಿದೆ: SEQ_MATCH (ಸಮತೋಲಿತ ಟೋಕನ್ ಸಮಾನತೆ) ಎಂದರೆ ನಿಖರತೆ ಎಂದಲ್ಲ. ರೆಫರೆನ್ಸ್ ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ ದೋಷಪೂರಿತವಾಗಿದ್ದರೆ, ಹಾರ್ಡ್‌ವೇರ್‌ನ ನಿಖರವಾದ ಪ್ರತಿರೂಪವು ಅದೇ ವೈಫಲ್ಯವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ವ್ಯಾಲಿಡೇಶನ್ (Validation) ಎಂಬುದು ಕೇವಲ ಟೋಕನ್ ಮಟ್ಟದ ಸಮಾನತೆಗೆ ಸೀಮಿತವಾಗಬಾರದು; ಸರಿಯಾದ ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿರುವ ಇನ್‌ಪುಟ್‌ಗಳೊಂದಿಗೆ ಎಂಡ್-ಟು-ಎಂಡ್ ಫಂಕ್ಷನಲ್ ಚೆಕ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರಬೇಕು.

ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಂತೆ ನಟಿಸುವ ಬಫರ್‌ಗಳು

ಲೋಡ್ ಫೇಸ್ ಸಮಯದಲ್ಲಿ, ಮಾಡೆಲ್ ಲೋಡರ್ layer_scalar ಎಂಬ ಘಟಕವನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟಿತು. ಕೋಡ್ ಈ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು PyTorch ಮಾಡೆಲ್ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಪ್ಯಾರಾಮೀಟರ್ ಬದಲಿಗೆ ಒಂದು buffer ಎಂದು ನೋಂದಾಯಿಸಿತ್ತು. ಬಫರ್‌ಗಳು ಸ್ಟ್ಯಾಟಿಕ್ ಟೆನ್ಸರ್‌ಗಳಾಗಿದ್ದು, ತರಬೇತಿಯು (training) ಅವುಗಳನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡುವುದಿಲ್ಲ, ಮತ್ತು ಅನೇಕ ಲೋಡರ್‌ಗಳು Neuron-compatible ಫಾರ್ಮ್ಯಾಟ್‌ಗಳಿಗೆ ಪರಿವರ್ತಿಸುವಾಗ ಅವುಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತವೆ. ಇದನ್ನು ಬಿಟ್ಟುಬಿಡುವುದರಿಂದ ಹಲವಾರು ಲೇಯರ್‌ಗಳ ಸ್ಕೇಲಿಂಗ್ ಫ್ಯಾಕ್ಟರ್‌ಗಳು ಅವುಗಳ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳಲ್ಲೇ ಉಳಿದವು, ಇದು ಇಡೀ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಗಣಿತದ ಲೆಕ್ಕಾಚಾರವನ್ನು ತಪ್ಪಾಗಿ ಮಾಡಿತು. ಯಾವುದೇ ದೋಷ (error) ಎಚ್ಚರಿಕೆ ಬರಲಿಲ್ಲ; ಮಾಡೆಲ್ ಕಾಂಪೈಲ್ ಆಯಿತು ಮತ್ತು ಇನ್ಫರೆನ್ಸ್ ಪೈಪ್‌ಲೈನ್ ಚಲಿಸಿತು, ಆದರೆ ಫಲಿತಾಂಶಗಳು ತಪ್ಪಾಗಿದ್ದವು.

Inferentia ಗೆ ದೊಡ್ಡ ಮಾಡೆಲ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸುವ ಯಾರಿಗಾದರೂ, ಪ್ರತಿಯೊಂದು ನಾನ್-ಪ್ಯಾರಾಮೀಟರ್ ಟೆನ್ಸರ್ ಅನ್ನು ಆಡಿಟ್ ಮಾಡಿ. ಒಂದು ಟೆನ್ಸರ್ ಕಲಿಯಲು (learn) ಉದ್ದೇಶಿಸದಿದ್ದರೂ ಸಹ, ಅದು ಸರಿಯಾದ ಫಾರ್ಡ್-ಪಾಸ್ ಕಂಪ್ಯೂಟೇಶನ್‌ಗೆ ಅತ್ಯಗತ್ಯವಾಗಿರಬಹುದು. ಬಫರ್ ಒಳಗೊಳ್ಳುವಿಕೆಯನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಪರಿಶೀಲಿಸುವುದರಿಂದ, ಪತ್ತೆಹಚ್ಚಲು ಕಷ್ಟವಾಗುವ ಸೈಲೆಂಟ್ ಸ್ಕೇಲ್ ದೋಷಗಳನ್ನು ತಡೆಯಬಹುದು.

ಸ್ಪಾಟ್-ಇನ್‌ಸ್ಟೆನ್ಸ್ ಅಸ್ಥಿರತೆ ಮತ್ತು 39 ನಿಮಿಷಗಳ ಕಾಂಪೈಲ್

ಸ್ಪಾಟ್ ಇನ್‌ಸ್ಟೆನ್ಸ್‌ನಲ್ಲಿ 31-ಬಿಲಿಯನ್ ಪ್ಯಾರಾಮೀಟರ್ ಮಾಡೆಲ್ ಅನ್ನು ರನ್ ಮಾಡುವುದು ಅಗ್ಗವಾಗಿ ಕಂಡರೂ, ಉಳಿತಾಯವು ಅನಿಶ್ಚಿತ ರೀಕ್ಲೈಮ್ (reclaim) ಇವೆಂಟ್‌ಗಳೊಂದಿಗೆ ಬರುತ್ತದೆ. ಮಾಡೆಲ್ ಅನ್ನು Neuron-compatible ಕೋಡ್ ಆಗಿ ಪರಿವರ್ತಿಸಲು ತೆಗೆದುಕೊಂಡ ಸುಮಾರು 39 ನಿಮಿಷಗಳ ಕಾಂಪೈಲ್ ಸಮಯವು, AWS ಇನ್‌ಸ್ಟೆನ್ಸ್ ಅನ್ನು ಹಿಂಪಡೆದಾಗ ವ್ಯರ್ಥವಾಯಿತು. ಅಡೆತಡೆಗಳನ್ನು ಎದುರಿಸಲು ಅವರು ಮೂರು ಹಂತದ ಸುರಕ್ಷತಾ ಜಾಲವನ್ನು ನಿರ್ಮಿಸಿದರು:

  • ModelBuilder ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು 384 GB ಹೋಸ್ಟ್ ಮಿತಿಯೊಳಗೆ ಇರಿಸಿತು, ಇದರಿಂದಾಗಿ ಮರುಪ್ರಾರಂಭಿಸಲು ಒತ್ತಾಯಿಸುವ ಕ್ರ್ಯಾಶ್‌ಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು.
  • ರಾಗ್‌ ವೈಟ್ ಫೈಲ್‌ಗಳು ಮತ್ತು ಕಾಂಪೈಲ್ ಮಾಡಿದ “neffs” (Neuron executable files) ಎರಡನ್ನೂ ತಕ್ಷಣದ S3 মিরರಿಂಗ್ ಮಾಡುವುದರಿಂದ, ಹೊಸ ಇನ್‌ಸ್ಟೆನ್ಸ್ ಹಿಂದಿನ ಇನ್‌ಸ್ಟೆನ್ಸ್ ಎಲ್ಲಿ ನಿಂತಿದೆಯೋ ಅಲ್ಲಿಂದಲೇ ಕೆಲಸವನ್ನು ಮುಂದುವರಿಸಲು ಸಾಧ್ಯವಾಯಿತು.
  • ಒಂದು ಮಲ್ಟಿ-ರೀಜನ್ ಪೋಲರ್ (multi-region poller) ಲಭ್ಯವಿರುವ ಸ್ಪಾಟ್ ಸಾಮರ್ಥ್ಯಕ್ಕಾಗಿ AWS ರೀಜನ್‌ಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿತು ಮತ್ತು ಹೊಸ ಇನ್‌ಸ್ಟೆನ್ಸ್ ಲಭ್ಯವಾದ ತಕ್ಷಣ ಅದನ್ನು ಪ್ರಾರಂಭಿಸಿತು.

ಈ ಕ್ರಮಗಳು ದುರ್ಬಲವಾದ, ಸಿಂಗಲ್-ಪಾಯಿಂಟ್ ಕಾಂಪೈಲ್ ಅನ್ನು ಸ್ಪಾಟ್ ಮಾರುಕಟ್ಟೆಯ ಏರಿಳಿತಗಳನ್ನು ತಡೆದುಕೊಳ್ಳುವ ಸ್ಥಿತಿಸ್ಥಾಪಕ ಪೈಪ್‌ಲೈನ್‌ ಆಗಿ ಬದಲಾಯಿಸಿದವು.

ಮಿಶ್ರಿತ ಅಟೆನ್ಷನ್ ಲೇಔಟ್‌ಗಳೊಂದಿಗೆ ಶಾರ್ಡಿಂಗ್ ತೊಂದರೆಗಳು

Gemma-4 31B ಎರಡು ಅಟೆನ್ಷನ್ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಕೆಲವು ಲೇಯರ್‌ಗಳು ನಾಲ್ಕು ಕೀ-ವ್ಯಾಲ್ಯೂ (KV) ಹೆಡ್‌ಗಳನ್ನು ಬಳಸಿದರೆ, ಇತರೆ ವಿಭಿನ್ನ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸುತ್ತವೆ. ಲೇಯರ್‌ನ KV ಹೆಡ್ ಸಂಖ್ಯೆಯು ಸಮನಾಗಿ ವಿಭಜನೆಯಾಗದಿದ್ದಾಗ, ಎಂಟು ಸಮಾಂತರ ರ‍್ಯಾಂಕ್‌ಗಳ (parallel ranks) ಮೂಲಕ ಮಾಡೆಲ್ ಅನ್ನು ಸಮಾನವಾಗಿ ವಿಭಜಿಸುವುದು (sharding) ವಿಫಲವಾಗುತ್ತದೆ. 4-ಹೆಡ್ ಲೇಯರ್ ಅನ್ನು ಎಂಟು ರ‍್ಯಾಂಕ್‌ಗಳ ಮೂಲಕ ಶಾರ್ಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವುದು ಪ್ರತಿ ರ‍್ಯಾಂಕ್ ಅನ್ನು ಅರ್ಧ ಹೆಡ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಒತ್ತಾಯಿಸುತ್ತದೆ—ಇದು ಗಣಿತದ ಪ್ರಕಾರ ಅಸಾಧ್ಯವಾಗಿದ್ದು, ಶೇಪ್ ಮಿಸ್‌ಮ್ಯಾಚ್‌ಗಳು ಮತ್ತು ರನ್‌ಟೈಮ್ ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.

ಇದಕ್ಕೆ ಪರಿಹಾರವೆಂದರೆ, ಗ್ಲೋಬಲಿ-ಶಾರ್ಡ್ ಲೇಯರ್‌ಗಳನ್ನು (ಸಮರ್ಪಕ ಹೆಡ್ ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರುವವು) ಎಲ್ಲಾ ರ‍್ಯಾಂಕ್‌ಗಳಲ್ಲಿ ಪ್ರತಿಲিপি ಮಾಡುವುದು (replicate) ಮತ್ತು ಕೇವಲ ಹೆಡ್ ಸಂಖ್ಯೆಗಳು ಸಮಾನ ವಿಭಜನೆಗೆ ಅನುವು ಮಾಡಿಕೊಡುವ “ಸ್ಲೈಡಿಂಗ್” ಲೇಯರ್‌ಗಳನ್ನು ಮಾತ್ರ ಶಾರ್ಡ್ ಮಾಡುವುದು. ಈ ಹೈಬ್ರಿಡ್ ತಂತ್ರವು ಟೆನ್ಸರ್-ಪ್ಯಾರಲಲ್ ದಕ್ಷತೆಯನ್ನು ಕಾಯ್ದುಕೊಳ್ಳುವ ಜೊತೆಗೆ KV ಹೆಡ್‌ಗಳ ಅಕ್ರಮ ವಿಭಜನೆಯನ್ನು ತಪ್ಪಿಸಿತು ಮತ್ತು ಹಿಂದಿನ ಪ್ರಯತ್ನಗಳಲ್ಲಿ ಕಂಡುಬಂದ ಟೆನ್ಸರ್-ಪ್ಯಾರಲಲೈಸೇಶನ್ ದೋಷಗಳನ್ನು ನಿವಾರಿಸಿತು.

ಸಾರಾಂಶ

ಬೃಹತ್ LLM ಅನ್ನು Inferentia ಗೆ ಪೋರ್ಟ್ ಮಾಡುವುದು ಕೇವಲ ಕಾಂಪೈಲ್-ಅಂಡ್-ರನ್ ವ್ಯಾಯಾಮವಲ್ಲ. ಇದು ಟೋಕನ್ ಸಮಾನತೆಯ ಹೊರತಾಗಿ ಕಠಿಣ ಫಂಕ್ಷನಲ್ ಟೆಸ್ಟಿಂಗ್, ಪ್ರತಿಯೊಂದು ಟೆನ್ಸರ್—ಪ್ಯಾರಾಮೀಟರ್ ಅಥವಾ ಬಫರ್—ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸಲ್ಪಡುತ್ತಿದೆಯೇ ಎಂಬ ಸೂಕ್ಷ್ಮ ಪರಿಶೀಲನೆ ಮತ್ತು ಸ್ಪಾಟ್-ಇನ್‌ಸ್ಟೆನ್ಸ್ ರೀಕ್ಲೈಮ್ ಅನ್ನು ನಿರೀಕ್ಷಿಸುವ ನಿಯೋಜನಾ ತಂತ್ರವನ್ನು ಬಯಸುತ್ತದೆ. ಅಂತಿಮವಾಗಿ, ಶಾರ್ಡಿಂಗ್ ಮಾಡೆಲ್‌ನ ಆಂತರಿಕ ಅಟೆನ್ಷನ್ ಜ್ಯಾಮಿತಿಯನ್ನು ಗೌರವಿಸಬೇಕು; ಇಲ್ಲದಿದ್ದರೆ, ವೇಗವನ್ನು ಭರವಸೆ ನೀಡುವ ಪ್ಯಾರಲಲಿಸಂವು ಮೌನ ವೈಫಲ್ಯದ ಮೂಲವಾಗುತ್ತದೆ.