ಮ್ಯಾಕ್ಸಿಮ್ ಸೆಕ್ರೆಟೊವ್ (Maksim Sekretov) Node.js ನಲ್ಲಿ ಚಲಿಸುವ ಒಂದು ಸಣ್ಣ, ಪ್ಯೂರ್-ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ (pure-JavaScript) ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದ್ದಾರೆ. ಇದು ತರಬೇತಿ ಪಡೆಯುವಾಗ ಪ್ರತಿಯೊಂದು ಸ್ಕಲರ್ (scalar), ತೂಕ (weight) ಮತ್ತು ಗ್ರೇಡಿಯಂಟ್ (gradient) ಅನ್ನು ತೋರಿಸುತ್ತದೆ. tiny-language-model-neuro-js ಎಂಬ ರೆಪೊಸಿಟರಿಯು ಯಾರಿಗಾದರೂ ಒಂದು ಯಾದೃಚ್ಛಿಕ ಮಾಡೆಲ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಲು, ಅದಕ್ಕೆ “can human read ?” ಎಂಬ ಪ್ರಾಂಪ್ಟ್ ನೀಡಲು, ಅದು ವಿಫಲವಾಗುವುದನ್ನು ನೋಡಲು, ನಂತರ ಒಂದೇ ಕಮಾಂಡ್ನ ತರಬೇತಿಯನ್ನು ನಡೆಸಿ ಉತ್ತರವು ಸರಿಯಾಗುವುದನ್ನು ನೋಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಹೆಚ್ಚಿನ LLM ಡೆಮೋಗಳು ಗಣಿತವನ್ನು ಏಕೆ ಮರೆಮಾಚುತ್ತವೆ
ಸಾಮಾನ್ಯ ಭಾಷಾ-ಮಾಡೆಲ್ ಟ್ಯುಟೋರಿಯಲ್ಗಳು TensorFlow ಅಥವಾ PyTorch ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿವೆ. ಆ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಂಪ್ಯೂಟೇಶನ್ ಗ್ರಾಫ್ಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತವೆ ಮತ್ತು ತೆರೆಯ ಮರೆಯಲ್ಲಿ ಗ್ರೇಡಿಯಂಟ್ಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತವೆ, ಆದ್ದರಿಂದ ಕಲಿಯುವವರು ಕೇವಲ ಹೈ-ಲೆವೆಲ್ ಕೋಡ್ ಮತ್ತು ಲಾಸ್ ಕರ್ವ್ಗಳನ್ನು (loss curves) ಮಾತ್ರ ನೋಡುತ್ತಾರೆ. ಅಡಗಿರುವ ಕಾರ್ಯಾಚರಣೆಗಳು—ಪ್ರತಿಯೊಂದು ಟೋಕನ್ ಹೇಗೆ ಎಂಬೆಡ್ಡಿಂಗ್ ಆಗುತ್ತದೆ, ಅಟೆನ್ಷನ್ ಸ್ಕೋರ್ಗಳನ್ನು ಹೇಗೆ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ, ಗ್ರೇಡಿಯಂಟ್ಗಳು ಪ್ರತಿಯೊಂದು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ಹೇಗೆ ಹಿಂತಿರುಗುತ್ತವೆ—ಎಲ್ಲವೂ ಅದೃಶ್ಯವಾಗಿರುತ್ತವೆ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮಾಡೆಲ್ ಏನನ್ನು ವಿಭಿನ್ನವಾಗಿ ಮಾಡುತ್ತದೆ
ಸೆಕ್ರೆಟೊವ್ ಅವರ ಅನುಷ್ಠಾನವು (implementation) ಎಲ್ಲವನ್ನೂ ಯಾವುದೇ ಅವಲಂಬನೆಗಳಿಲ್ಲದ (dependency-free) ಏಕೈಕ Node.js ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯು (training pipeline) ಸರಳವಾದ ಅನುಕ್ರಮವನ್ನು ಅನುಸರಿಸುತ್ತದೆ:
- ಟೋಕನೈಸೇಶನ್ (Tokenization)
- ಎಂಬೆಡ್ಡಿಂಗ್ಗಳು (Embeddings)
- ಕಾಸಲ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಬ್ಲಾಕ್ಗಳು (Causal transformer blocks)
- ಮಲ್ಟಿ-ಹೆಡ್ ಸೆಲ್ಫ್-ಅಟೆನ್ಷನ್ (Multi-head self-attention)
- ಫೀಡ್-ಫಾರ್ವರ್ಡ್ ನೆಟ್ವರ್ಕ್ಗಳು (FFN)
- లాಂಗ್ವೇಜ್-ಮಾಡೆಲ್ ಹೆಡ್ ಮತ್ತು ಸಾಫ್ಟ್ಮ್ಯಾಕ್ಸ್ (Language-model head and softmax)
- ಕ್ರಾಸ್-ಎಂಟ್ರೋಪಿ ಲಾಸ್ (Cross-entropy loss)
- ಬ್ಯಾಕ್ಪ್ರೊಪಗೇಶನ್ (Backpropagation)
node src/train.js --generalize --adaptive-teach ಅನ್ನು ರನ್ ಮಾಡುವುದರಿಂದ ಸಂಪೂರ್ಣ ತರಬೇತಿ ಲೂಪ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಕೋಡ್ ಸರಳ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿರುವುದರಿಂದ, ಪ್ರತಿ ಟೆನ್ಸರ್ (tensor) ಒಂದು ಸರಳ ಅರೇ (array) ಆಗಿರುತ್ತದೆ, ಪ್ರತಿ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರವು ಒಂದು ಸ್ಪಷ್ಟವಾದ ಲೂಪ್ ಆಗಿರುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಗ್ರೇಡಿಯಂಟ್ ತನ್ನ ಮೂಲ ತೂಕದ (source weight) ಪಕ್ಕದಲ್ಲೇ ಇರುತ್ತದೆ.
ಯಾದೃಚ್ಛಿಕ ಅಂದಾಜಿನಿಂದ ಸರಿಯಾದ ಉತ್ತರಗಳವರೆಗೆ
ಮಾಡೆಲ್ ಪ್ರಾರಂಭವಾದಾಗ, ಎಲ್ಲಾ ಪ್ಯಾರಾಮೀಟರ್ಗಳು ಯಾದೃಚ್ಛಿಕವಾಗಿರುತ್ತವೆ. ಅದಕ್ಕೆ “can human read ?” ಎಂದು ಕೇಳಿದಾಗ ಅರ್ಥವಿಲ್ಲದ ಉತ್ತರಗಳು (gibberish) ಸಿಗುತ್ತವೆ. ಒಂದು ಸಣ್ಣ ಪ್ರಿ-ಟ್ರೈನಿಂಗ್ ಹಂತ ಮತ್ತು ಸೂಪರ್ವೈಸ್ಡ್ ಫೈನ್-ಟ್ಯೂನಿಂಗ್ (SFT) ನಂತರ, ಅದೇ ಪ್ರಾಂಪ್ಟ್ ಅರ್ಥಪೂರ್ಣ ಉತ್ತರವನ್ನು ನೀಡುತ್ತದೆ. ಟೀಚರ್ ಸಿಗ್ನಲ್—ಲಾಸ್ ಫಂಕ್ಷನ್ ಮೂಲಕ ನೀಡಲಾದ ಸರಿಯಾದ ಟೋಕನ್ ಸರಣಿಗಳು—ಎಂಬೆಡ್ಡಿಂಗ್ಗಳು, ಅಟೆನ್ಷನ್ ಹೆಡ್ಗಳು ಮತ್ತು FFN ಲೇಯರ್ಗಳ ಮೂಲಕ ಹಿಂತಿರುಗುತ್ತವೆ ಮತ್ತು ಪ್ರತಿಯೊಂದು ಸ್ಕಲರ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತವೆ.
ಕ್ಯಾಟಾಸ್ಟ್ರೋಫಿಕ್ ಫೋರ್ಗೆಟಿಂಗ್ (Catastrophic forgetting) ಎದುರಿಸುವುದು
ಆರಂಭಿಕ ಪ್ರಯೋಗಗಳು ಒಂದು ಕ್ಲಾಸಿಕ್ ಸಮಸ್ಯೆಯನ್ನು ತೋರಿಸಿದವು: ಹೊಸ ವಿಷಯವನ್ನು ಕಲಿಯುವುದು ಈ ಮೊದಲು ಕಲಿತ ವಿಷಯಗಳನ್ನು ಅಳಿಸಿಹಾಕುತ್ತಿತ್ತು. ಸೆಕ್ರೆಟೊವ್ ಇದನ್ನು 'ರಿಹರ್ಸಲ್' (rehearsal) ಮೂಲಕ ಸರಿಪಡಿಸಿದರು—ಅಂದರೆ ಹೊಸ ಡೇಟಾವನ್ನು ಪರಿಚಯಿಸುವಾಗ ಹಳೆಯ ಉದಾಹರಣೆಗಳನ್ನು ಮರು-ಪ್ರಸ್ತುತಪಡಿಸುವುದು. ಪ್ರತಿಯೊಂದು ಟಾರ್ಗೆಟ್ ಟೋಕನ್ ಕನಿಷ್ಠ 95% ಸಂಭವನೀಯತೆಯನ್ನು (probability) ತಲುಪಿದಾಗ ಮತ್ತು ಹತ್ತು ಸತತ ಪರಿಶೀಲನೆಗಳಲ್ಲಿ ಉಳಿದುಕೊಂಡಾಗ ಮಾತ್ರ ತರಬೇತಿ ನಿಲ್ಲುತ್ತದೆ. ಈ ಸರಳ ಲೂಪ್ ಯಾವುದೇ ಬಾಹ್ಯ ಲೈಬ್ರರಿಗಳಿಲ್ಲದೆ ಒಂದು ಪ್ರಮುಖ ಸಂಶೋಧನಾ ಸವಾಲನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ.
ಯಾರು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತಾರೆ ಮತ್ತು ಯಾರು ಹೊರಗುಳಿಯಬಹುದು
ಈ ಯೋಜನೆಯು ಶತಕೋಟಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳು ಮತ್ತು GPU ಕ್ಲಸ್ಟರ್ಗಳ ಮೇಲೆ ಚಲಿಸುವ ವಾಣಿಜ್ಯ LLMಗಳೊಂದಿಗೆ ಸ್ಪರ್ಧಿಸುವುದಿಲ್ಲ. ಆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಂತರವು ಇದನ್ನು ಪ್ರೊಡಕ್ಷನ್ ವರ್ಕ್ಲೋಡ್ಗಳಿಗೆ ಅಸಮರ್ಪಕವಾಗಿಸುತ್ತದೆ, ಆದರೆ ಇದು ಮಾಡೆಲ್ ಅನ್ನು ಪಾರದರ್ಶಕ ಬೋಧನಾ ಸಾಧನವನ್ನಾಗಿ ಮಾಡುತ್ತದೆ. ಬ್ಲ್ಯಾಕ್-ಬಾಕ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ ಒಳಗಿನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನೋಡಲು ಕಷ್ಟಪಡುವ ವಿದ್ಯಾರ್ಥಿಗಳು, ಹವ್ಯಾಸಿಗಳು ಮತ್ತು ಸಂಶೋಧಕರಿಗೆ ಈಗ ಗಣಿತವು ನೇರವಾದ ಕೋಡ್ ಆಗಿರುವ ಒಂದು ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ (sandbox) ಲಭ್ಯವಿದೆ.
ಏನಿಲ್ಲ ಮತ್ತು ಈ ಯೋಜನೆಯು ಎಲ್ಲಿಗೆ ಹೋಗಬಹುದು
ಅನುಷ್ಠಾನವು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಕನಿಷ್ಠ ಮಟ್ಟದಲ್ಲಿರುವುದರಿಂದ, ಇದು ಕೋಡ್ ಅನ್ನು ಓದಲು ಸುಲಭವಾಗಿಸುತ್ತದೆ ಆದರೆ ಸ್ಕೇಲೆಬಿಲಿಟಿಯನ್ನು (scalability) ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ.
ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು
ಈ ರೆಪೊಸಿಟರಿಯು ಈಗಾಗಲೇ GitHub ನಲ್ಲಿ ಸಾರ್ವಜನಿಕವಾಗಿದೆ.
ಮುಖ್ಯ ಅಂಶ: ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ಪ್ಯೂರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಸೀಮಿತಗೊಳಿಸುವ ಮೂಲಕ, ಸೆಕ್ರೆಟೊವ್ ಅತ್ಯಂತ ಅಸ್ಪಷ್ಟವಾದ ತಂತ್ರಜ್ಞಾನವನ್ನು ಓದಬಹುದಾದ, ಎಡಿಟ್ ಮಾಡಬಹುದಾದ ಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿ ಬದಲಾಯಿಸಿದ್ದಾರೆ. ಇದರ ಬದಲಾವಣೆಯಾಗಿ ವೇಗ ಕಡಿಮೆಯಾಗಬಹುದು, ಆದರೆ ಇದರಿಂದ ಸಿಗುವ ಒಳನೋಟ ಅಪಾರ—ಯಾರೇ ಆದರೂ ಈಗ ಒಂದು ಭಾಷಾ ಮಾಡೆಲ್ ಹೇಗೆ ಸ್ಕಲರ್ ಮೂಲಕ ಸ್ಕಲರ್ ಕಲಿಯುತ್ತದೆ, ಮರೆಯುತ್ತದೆ ಮತ್ತು ಮರು-ಕಲಿಯುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು.
