ಆಪಲ್ ಸಿಲಿಕಾನ್‌ಗಾಗಿ ಆನ್-ಡೀವ್ಸ್ ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ

ಪ್ರಿಫಿಲ್ ಮತ್ತು ಡಿಕೋಡ್ ಥ್ರೂಪುಟ್ ಅನ್ನು ಸುಧಾರಿಸುವ ಕಸ್ಟಮ್ ಸ್ಥಳೀಯ ಎಂಜಿನ್.

ಲೇಖಕರುPerplexity Engineering

ಆಪಲ್ ಸಿಲಿಕಾನ್‌ನಲ್ಲಿ ಹೈಬ್ರಿಡ್ ಗಣನೆ ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಗಡಿ ಬುದ್ಧಿವತ್ತಿಕೆ ಮತ್ತು ಮ್ಯಾಕ್‌ನಲ್ಲಿ ಸ್ಥಳೀಯ ಮಾದರಿಯ ನಡುವಿನ ಕಾರ್ಯವನ್ನು ಆರ್ಕೆಸ್ಟ್ರೇಟ್ ಮಾಡುತ್ತದೆ. ಕ್ಲೌಡ್ ಮಾದರಿಗಳು ಸಂಶೋಧನೆ ಮತ್ತು ತಾರ್ಕಿಕತೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ, ಆದರೆ ಸ್ಥಳೀಯ ಮಾದರಿಯು ಮ್ಯಾಕ್‌ನಲ್ಲಿ ಖಾಸಗಿ ಫೈಲ್‌ಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಶ್ರಮದ ಈ ವಿಭಜನೆಯು ತಡೆರಹಿತವಾಗಿರಲು, ಸ್ಥಳೀಯ ಇನ್ಫರೆನ್ಸ್ ಉಳಿದ ಕಾರ್ಯದೊಂದಿಗೆ ವೇಗವನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಬೇಕು. ಅದಕ್ಕೆ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಲ್ಲ ಮತ್ತು ಹೆಚ್ಚಿನ ಟೋಕನ್-ಉತ್ಪಾದನಾ ದರವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬಲ್ಲ ಎಂಜಿನ್ ಅಗತ್ಯವಿದೆ.

ಲಿಲಿ, ನಮ್ಮ ಹಗುರವಾದ ಸ್ಥಳೀಯ ಇನ್ಫರೆನ್ಸ್ ಎಂಜಿನ್, ಇದನ್ನು ಆಪಲ್ ಸಿಲಿಕಾನ್ ಮತ್ತು Qwen3.6-35B-A3B ಗಾಗಿ ನಿರ್ದಿಷ್ಟವಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಪ್ರೀಫಿಲ್ ಮತ್ತು ಡಿಕೋಡ್‌ಗಾಗಿ ಪ್ರತ್ಯೇಕ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳೊಂದಿಗೆ. ಸ್ವತಂತ್ರ ಡೆಮೊ GitHub ನಲ್ಲಿ ಸಾರ್ವಜನಿಕವಾಗಿ ಲಭ್ಯವಿದೆ.

ಪರಿಚಯ

ಮ್ಯಾಕ್‌ನಲ್ಲಿ LLM ಗಳನ್ನು ರನ್ ಮಾಡಲು ಒಂದು ಸಾಮಾನ್ಯ ಮಾರ್ಗವೆಂದರೆ ಆಪಲ್ ಸಿಲಿಕಾನ್‌ಗಾಗಿ ಆಪಲ್‌ನ ಓಪನ್-ಸೋರ್ಸ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಫ್ರೇಮ್‌ವರ್ಕ್ ಆಗಿರುವ MLX ನೊಂದಿಗೆ. ಇದರ ಕಂಪ್ಯಾನಿಯನ್ ಲೈಬ್ರರಿ, MLX-LM, ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಭಾಷಾ ಮಾದರಿಗಳೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಉತ್ಪಾದಿಸಲು ಅಗತ್ಯವಿರುವ ಘಟಕಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ. ಒಟ್ಟಾರೆಯಾಗಿ, MLX ಮತ್ತು MLX-LM ಸ್ಥಳೀಯ LLM ಇನ್ಫರೆನ್ಸ್‌ಗಾಗಿ ಆಫ್-ದಿ-ಶೆಲ್ಫ್, ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ.

Qwen3.6-35B-A3B ಒಂದು ವಿರಳವಾದ, ಹೈಬ್ರಿಡ್ ಮಾದರಿಯಾಗಿದೆ: ಇದು ಮಿಕ್ಸ್ಚರ್-ಆಫ್-ಎಕ್ಸ್‌ಪರ್ಟ್ಸ್ (MoE) ರೂಟಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ನಿಗದಿತ ಗಾತ್ರದ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಗಳನ್ನು ಸಂಪೂರ್ಣ ಗಮನದೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ. ಈ ವಾಸ್ತುಶಿಲ್ಪದ ಆಯ್ಕೆಗಳು ಅಗತ್ಯವಿರುವ ಗಣನೆಯ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತವೆ, ಆದರೆ ಅವು ಅನಿಯಮಿತ ಕೆಲಸದ ಹೊರೆಗಳನ್ನು ಸಹ ಸೃಷ್ಟಿಸುತ್ತವೆ. ಟೋಕನ್‌ಗಳು ವಿಭಿನ್ನ ತಜ್ಞರ ತೂಕಗಳಿಗೆ ರೂಟ್ ಆಗುತ್ತವೆ, ಮತ್ತು ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಗಳು ಸ್ವಭಾವತಃ ಅನುಕ್ರಮವಾಗಿರುತ್ತವೆ.

MLX-LM ಈಗಾಗಲೇ ಇನ್ಫರೆನ್ಸ್ ಹಂತಗಳು ಮತ್ತು ಸಾಮಾನ್ಯ ಕೆಲಸದ ಹೊರೆ ಆಕಾರಗಳಿಗೆ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಕರ್ನಲ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ, ಆದರೆ ಅದರ ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಕಾರ್ಯಾಚರಣೆಗಳು ಅನೇಕ ಮಾದರಿ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸಬೇಕು. Qwen ಗೆ ಮೀಸಲಾದ ಎಂಜಿನ್ ಮಾದರಿ ಮತ್ತು ರನ್‌ಟೈಮ್ ಮಟ್ಟದಲ್ಲಿ ವಿಶೇಷತೆ ಪಡೆಯಬಹುದು, ಮಾದರಿಯ ನಿಗದಿತ ರಚನೆಯ ಸುತ್ತಲೂ ಕರ್ನಲ್‌ಗಳು, ಡೇಟಾ ಚಲನೆ ಮತ್ತು ವೇಳಾಪಟ್ಟಿಯನ್ನು ಸಂಘಟಿಸಬಹುದು.

ಲಿಲಿ ಈ ವಿಶೇಷತೆಯನ್ನು ಏಕೈಕ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಅನುಷ್ಠಾನಗೊಳಿಸುತ್ತದೆ. ರಸ್ಟ್ ರನ್‌ಟೈಮ್ ಮಾದರಿ ಚೆಕ್‌ಪಾಯಿಂಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸೆಷನ್ ಸ್ಥಿತಿ ಹಾಗೂ ಜನರೇಷನ್ ಲೂಪ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, OpenAI- ಹೊಂದಿಕೊಳ್ಳುವ ಚಾಟ್-ಕಂಪ್ಲೀಷನ್ಸ್ API ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಟೋಕನ್‌ಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಕಸ್ಟಮ್ ಮೆಟಲ್ ಕರ್ನಲ್‌ಗಳು Qwen-ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ. PyTorch ಅಥವಾ MLX ಎರಡೂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮಾರ್ಗದಲ್ಲಿ ಇಲ್ಲ.

ಸಾಮಾನ್ಯತೆ ಮತ್ತು ವಿಶೇಷೀಕರಣವು ಎರಡು inference stacksಗಳಲ್ಲಿ ಹೇಗೆ ನೆಲೆಗೊಂಡಿವೆ. MLX-LM ಮಾದರಿಯನ್ನು ಸಂಯೋಜಿಸಬಹುದಾದ MLX array operationsಗಳಾಗಿ ವರ್ಣಿಸುತ್ತದೆ, ಅವುಗಳನ್ನು MLX reusable kernels ಮೂಲಕ schedule ಮಾಡುತ್ತದೆ. Lily hingegen ಮಾದರಿ ರಚನೆ, phase-specific execution plans, ಮತ್ತು kernel selection ಅನ್ನು Qwen ಮತ್ತು Apple silicon ಸುತ್ತ ನಿರ್ಮಿತ ಏಕೈಕ Rust runtimeನಲ್ಲಿ ಇರಿಸುತ್ತದೆ.

ನಾವು ಪ್ರಿಫಿಲ್ ಮತ್ತು ಡಿಕೋಡ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಅಳೆಯುತ್ತೇವೆ. ಪ್ರಿಫಿಲ್ ಥ್ರೂಪುಟ್ ಎಂಜಿನ್ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಎಷ್ಟು ವೇಗವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ; ಡಿಕೋಡ್ ಥ್ರೂಪುಟ್ ಅದು ಔಟ್‌ಪುಟ್ ಟೋಕನ್‌ಗಳನ್ನು ಎಷ್ಟು ವೇಗವಾಗಿ ಉತ್ಪಾದಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ.

ನಾವು M5 Max ಹೊಂದಿರುವ, 40-ಕೋರ್ GPU ಮತ್ತು 128 GB ಯುನಿಫೈಡ್ ಮೆಮೊರಿಯೊಂದಿದ ಒಂದೇ MacBook Pro ಮೇಲೆ Qwen3.6-35B-A3B ಅನ್ನು ಬೆಂಚ್‌ಮಾರ್ಕ್ ಮಾಡುತ್ತೇವೆ. ಪ್ರಿಫಿಲ್‌ಗೆ ಹತ್ತು ಪ್ರಾಂಪ್ಟ್ ಉದ್ದಗಳು ಮತ್ತು ಡಿಕೋಡ್‌ಗೆ ಹತ್ತು ಕಾನ್ಟೆಕ್ಸ್ಟ್ ಉದ್ದಗಳು, 256 ರಿಂದ 128K ಟೋಕನ್‌ಗಳವರೆಗೆ (K = 1,024), ಆವಧಿಯಲ್ಲಿ, ಎಂಜಿನ್ MLX-LM‌ನ ಪ್ರಿಫಿಲ್ ತ್ರುಪುಟ್‌ಗೆ ಸರಾಸರಿ 1.22× ಮತ್ತು ಅದರ ಡಿಕೋಡ್ ತ್ರುಪುಟ್‌ಗೆ 1.32× ಸಾಧಿಸುತ್ತದೆ. 4K-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್ ಮತ್ತು 4K-ಟೋಕನ್ ಡಿಕೋಡ್ ಕಾನ್ಟೆಕ್ಸ್ಟ್‌ನಲ್ಲಿ, ಕಸ್ಟಮ್ ಎಂಜಿನ್ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 5,749.9 ಪ್ರಿಫಿಲ್ ಟೋಕನ್‌ಗಳು ಮತ್ತು ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 186.6 ಡಿಕೋಡ್ ಟೋಕನ್‌ಗಳನ್ನು ತಲುಪುತ್ತದೆ, MLX-LM‌ಗೆ 4,737.5 ಮತ್ತು 140.9 ಜೊತೆ ಹೋಲಿಸಿದರೆ. ಬಹು-ಟರ್ನ್ ಸೆಷನ್‌ನಲ್ಲಿ, ಈ ಸಮಯ ಉಳಿತಾಯಗಳು ಪ್ರತಿ ಹೆಚ್ಚುವರಿ ಮಾದರಿ ಕಾಲ್‌ನೊಂದಿಗೆ ಸಂಚಯವಾಗುತ್ತವೆ.

256 ರಿಂದ 128K ಟೋಕನ್‌ಗಳವರೆಗೆ ಸಮಾನವಾಗಿ ತೂಕ ನೀಡಲಾದ ಹತ್ತು ಉದ್ದಗಳ ಮೇಲೆ ಲೆಕ್ಕಿಸಿದ ಅಂಕಗಣಿತ ಸರಾಸರಿ ತ್ರುಪುಟ್. Lily 4,135 ಪ್ರಿಫಿಲ್ ಟೋಕನ್‌ಗಳು/ಸೆಕೆಂಡ್ ಅನ್ನು ಸರಾಸರಿಯಾಗಿ ಪಡೆಯುತ್ತದೆ, MLX-LM‌ನ 3,383‌ಗೆ ಹೋಲಿಸಿದರೆ (1.22×), ಮತ್ತು 167.1 ಡಿಕೋಡ್ ಟೋಕನ್‌ಗಳು/ಸೆಕೆಂಡ್ ಅನ್ನು 126.9‌ಗೆ ಹೋಲಿಸಿದರೆ (1.32×) ಪಡೆಯುತ್ತದೆ. ಪ್ರಿಫಿಲ್ ಪ್ರಾಂಪ್ಟ್ ಉದ್ದದೊಂದಿಗೆ ಬದಲಾಗುತ್ತದೆ; ಡಿಕೋಡ್ ಕಾನ್ಟೆಕ್ಸ್ಟ್ ಉದ್ದದೊಂದಿಗೆ ಬದಲಾಗುತ್ತದೆ.

ಮುಂದೆ, Qwen ನ ಆರ್ಕಿಟೆಕ್ಚರ್ ಆಪಲ್ ಸಿಲಿಕಾನ್‌ನಲ್ಲಿ ಮಾದರಿ-ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅವಕಾಶಗಳನ್ನು ಹೇಗೆ ಸೃಷ್ಟಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ವಿವರಿಸುತ್ತೇವೆ. ನಂತರ ನಾವು ಫಲಿತಾಂಶದ ಪ್ರಿಫಿಲ್ ಮತ್ತು ಡಿಕೋಡ್ ಬದಲಾವಣೆಗಳ ಮೂಲಕ ನಡೆಯುತ್ತೇವೆ. MLX-LM ವಿರುದ್ಧ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಹೋಲಿಕೆಯೊಂದಿಗೆ ಮುಕ್ತಾಯಗೊಳಿಸುವ ಮೊದಲು ಹೆಚ್ಚುವರಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ಎಲ್ಲಿ ಪಾವತಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸಹ ನಾವು ಒಳಗೊಳ್ಳುತ್ತೇವೆ.

ಆಪಲ್ ಸಿಲಿಕಾನ್‌ನಲ್ಲಿ ಕ್ಯೂವೆನ್-ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅವಕಾಶಗಳು

Qwen ಮೂರು ವಿಭಿನ್ನ ಕೆಲಸದ ಹೊರೆ ಆಕಾರಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ

Qwen3.6-35B-A3B 35 ಬಿಲಿಯನ್ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ ಆದರೆ ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಸುಮಾರು 3 ಬಿಲಿಯನ್ ಅನ್ನು ಮಾತ್ರ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ರೂಟರ್ 256 ಎಕ್ಸ್‌ಪರ್ಟ್ ಸಬ್‌ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಸ್ಕೋರ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಎಂಟನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ, ಜೊತೆಗೆ ಪ್ರತಿ ಟೋಕನ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಒಂದು ಹಂಚಿದ ತಜ್ಞರೊಂದಿಗೆ. ಈ ವಿರಳ MoE ವಿನ್ಯಾಸವು ಗಣನೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಆದರೆ ಅಸಮ ಕೆಲಸವನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ: ತಜ್ಞರು ವಿಭಿನ್ನ ಸಂಖ್ಯೆಯ ಟೋಕನ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ, ಮತ್ತು ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ತಜ್ಞರ ವಿಭಿನ್ನ ಸಂಯೋಜನೆಯಿಂದ ತೂಕಗಳು ಬೇಕಾಗುತ್ತವೆ.

Qwen 10 ಪೂರ್ಣ-ಅಟೆನ್ಷನ್ ಲೇಯರ್‌ಗಳನ್ನು 30 Gated DeltaNet ಲೇಯರ್‌ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ. ಈ ಎರಡು ಲೇಯರ್ ಪ್ರಕಾರಗಳು ಹಿಂದಿನ ಮಾಹಿತಿಯನ್ನು ವಿಭಿನ್ನ ವಿಧಾನಗಳಲ್ಲಿ ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ.

ಅಟೆನ್ಷನ್ ಲೇಯರ್‌ಗಳು ಗ್ರೂಪ್ಡ್-ಕ್ವೇರಿ ಅಟೆನ್ಷನ್ (GQA) ಅನ್ನು ಬಳಸುತ್ತವೆ. Qwen 16 ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳನ್ನು ಮತ್ತು ಎರಡು ಕೀ-ವ್ಯಾಲ್ಯೂ (KV) ಹೆಡ್‌ಗಳನ್ನು ಹೊಂದಿದೆ, ಪ್ರತಿ KV ಹೆಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವ ಎಂಟು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳೊಂದಿಗೆ. ಹಂಚಿಕೊಳ್ಳುವುದು KV ಕಾಶ್ ಅನ್ನು ಚಿಕ್ಕದಾಗಿಸುತ್ತದೆ ಮತ್ತು ಕಾಶ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳಾದ್ಯಂತ ಮರುಬಳಕೆ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ. ಕಾಶ್ ಇನ್ನೂ ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಹೊಸ ಕೀಗಳು ಮತ್ತು ಮೌಲ್ಯಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್ ಬೆಳೆದಂತೆ ಪ್ರತಿ ಡಿಕೋಡ್ ಹಂತವು ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಓದುತ್ತದೆ.

ಬದಲಿಗೆ Gated DeltaNet ಹಿಂದಿನ ಮಾಹಿತಿಯನ್ನು ಸ್ಥಿರ-ಗಾತ್ರದ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಗೆ ಸಂಕುಚಿಗೊಳಿಸುತ್ತದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸ್ಥಿತಿಯನ್ನು ಎಷ್ಟು ಉಳಿಸಿಕೊಳ್ಳಬೇಕು ಎಂಬುದನ್ನು ಕಲಿತ ಗೇಟ್ ನಿಯಂತ್ರಿಸುತ್ತದೆ, ಆದರೆ ಡೆಲ್ಟಾ ನವೀಕರಣವು ಪ್ರಸ್ತುತ ಟೋಕನ್‌ನಿಂದ ಮಾಹಿತಿಯನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಮಾದರಿಯು ಈ ನವೀಕರಣಗಳನ್ನು ಮರುಕಳಿಸುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿ ಟೋಕನ್ ಹಿಂದಿನ ಟೋಕನ್ ಉತ್ಪಾದಿಸಿದ ಸ್ಥಿತಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಪ್ರಿಫಿಲ್ ಸಮಯದಲ್ಲಿ, ಎಂಜಿನ್ ಒಂದೇ ಗಣನೆಯನ್ನು ಎರಡು ರೀತಿಯಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. ಇದು ಸ್ಥಿತಿಯನ್ನು ಮುಂದಕ್ಕೆ ಕೊಂಡೊಯ್ಯುವಾಗ ನೇರವಾಗಿ ಟೋಕನ್‌ಗಳ ಮೂಲಕ ಸ್ಕ್ಯಾನ್ ಮಾಡಬಹುದು, ಅಥವಾ ಹೆಚ್ಚಿನ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಕಾರ್ಯಾಚರಣೆಗಳು ಮತ್ತು ಟೋಕನ್-ಮಟ್ಟದ ಸಮಾನಾಂತರತೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಬ್ಲಾಕ್‌ಗಳಾಗಿ ನವೀಕರಣಗಳನ್ನು ಮರುಸಂಘಟಿಸಬಹುದು. ಯಾವ ವಿಧಾನವು ವೇಗವಾಗಿದೆ ಎಂಬುದು ಮಾದರಿಯ ಆಯಾಮಗಳು, ಕೆಲಸದ ಹೊರೆ ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ.

ಒಟ್ಟಾರೆಯಾಗಿ, ಈ ರಚನೆಗಳು ಮೂರು ಗಣಕೀಯ ಮಾದರಿಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತವೆ: ಅಸಮ ತಜ್ಞರ ಗುಂಪುಗಳು, ಬೆಳೆಯುತ್ತಿರುವ ಸಂಗ್ರಹದ ಮೇಲಿನ ಗಮನ, ಮತ್ತು ನೇರವಾಗಿ ಅಥವಾ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದಾದ ನಿಗದಿತ ಗಾತ್ರದ ಮರುಕಳಿಕೆ.

ಆಪಲ್ ಸಿಲಿಕಾನ್ ವಿಭಿನ್ನ ಕೆಲಸದ ಹೊರೆಗಳಿಗೆ ವಿಭಿನ್ನ ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ

ಪ್ರಿಫಿಲ್ ಒಮ್ಮೆಯೇ ಅನೇಕ ಪ್ರಾಂಪ್ಟ್ ಟೋಕನ್ ಆಕ್ಟಿವೇಷನ್ ಸಾಲುಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ. ಇಲ್ಲಿ ಪರಿಗಣಿಸಲಾದ ಸ್ಥಳೀಯ ಕೆಲಸದ ಹೊರೆ ಸಾಮಾನ್ಯವಾಗಿ ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ವಿನಂತಿಯನ್ನು ಡಿಕೋಡ್ ಮಾಡುತ್ತದೆ (ಬ್ಯಾಚ್ 1) ಮತ್ತು ಪ್ರತಿ ಹಂತಕ್ಕೆ ಒಂದು ಹೊಸ ಸಾಲನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ. ಈ ವ್ಯತ್ಯಾಸವು ಒಂದೇ ಮಾದರಿಯ ತೂಕಗಳನ್ನು ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಪ್ರಿಫಿಲ್ ಪ್ರತಿ ಬ್ಲಾಕ್ ತೂಕವನ್ನು ನೂರಾರು ಅಥವಾ ಸಾವಿರಾರು ಸಾಲುಗಳಲ್ಲಿ ಮರುಬಳಕೆ ಮಾಡಬಹುದು. ಡಿಕೋಡ್ ಹೆಚ್ಚಾಗಿ ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಪ್ರತಿ ಹೊಸ ಟೋಕನ್‌ಗೆ ತೂಕಗಳ ಮೂಲಕ ಮತ್ತೊಂದು ಪಾಸ್ ಅಗತ್ಯವಿರುತ್ತದೆ.

ಆಪಲ್ ಸಿಲಿಕಾನ್ CPU ಮತ್ತು GPU ಅನ್ನು ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯ ಹಿಂದೆ ಇರಿಸುತ್ತದೆ, ಇದು ಎರಡಕ್ಕೂ ಪ್ರವೇಶಿಸಬಹುದಾದ ಏಕೈಕ ಭೌತಿಕ ಮೆಮೊರಿ ಪೂಲ್ ಆಗಿದೆ. ಇದು ಪ್ರತ್ಯೇಕ GPU ಪ್ರತಿಯನ್ನು ನಿರ್ವಹಿಸದೆ ಮಾದರಿಯು ನಿವಾಸಿಯಾಗಿರಲು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಇದು ಡೇಟಾ ಚಲನೆಯನ್ನು ಮುಕ್ತಗೊಳಿಸುವುದಿಲ್ಲ. ತೂಕಗಳು ಮತ್ತು ಮಧ್ಯಂತರ ಮೌಲ್ಯಗಳನ್ನು ಓದುವುದು ಇನ್ನೂ ಮೆಮೊರಿ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ರಿಜಿಸ್ಟರ್‌ಗಳು ಮತ್ತು ಇತರ ಆನ್-ಚಿಪ್ ಸಂಗ್ರಹಣೆಗಳು ವೇಗವಾಗಿರುತ್ತವೆ ಆದರೆ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿರುತ್ತವೆ.

M5 GPU ವಿಭಿನ್ನ ಗಣನಾ ಮಾರ್ಗಗಳನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ. ಪ್ರಿಫಿಲ್‌ನ ಲೀನಿಯರ್ ಲೇಯರ್‌ಗಳು ಜನರಲ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್-ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮಲ್ಟಿಪ್ಲಿಕೇಶನ್ (GEMM) ಅನ್ನು ಬಳಸುತ್ತವೆ, ಮ್ಯಾಟ್ರಿಕ್ಸ್ ತೂಕವನ್ನು ಒಮ್ಮೆಯೇ ಅನೇಕ ಸಾಲುಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತವೆ. ಹೊಂದಾಣಿಕೆಯ GEMM ಗಳು ಮೆಟಲ್ 4 ಟೆನ್ಸರ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಮೂಲಕ ಪ್ರತಿ GPU ಕೋರ್‌ನಲ್ಲಿರುವ ನ್ಯೂರಲ್ ಆಕ್ಸಿಲರೇಟರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಬದಲಿಗೆ ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಜನರಲ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್-ವೆಕ್ಟರ್ ಮಲ್ಟಿಪ್ಲಿಕೇಶನ್ (GEMV) ಅನ್ನು ಬಳಸುತ್ತದೆ, ಒಂದೇ ಸಾಲಿಗೆ ಅದೇ ತೂಕಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ. ಕಡಿಮೆ ತೂಕದ ಮರುಬಳಕೆಯೊಂದಿಗೆ, GEMV ಮುಖ್ಯವಾಗಿ ಮೆಮೊರಿ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್‌ನಿಂದ ಸೀಮಿತವಾಗಿರುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಡೇಟಾ ಮರುಬಳಕೆಯೊಂದಿಗೆ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ನ್ಯೂರಲ್ ಆಕ್ಸಿಲರೇಟರ್‌ಗಳಿಗಿಂತ GPU ನ ವೆಕ್ಟರ್ ಅರಿತ್ಮೆಟಿಕ್ ಲಾಜಿಕ್ ಯೂನಿಟ್‌ಗಳಿಗೆ (ALU ಗಳು) ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿದೆ.

ಈ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮಾರ್ಗಗಳು ಲಿಲಿಗೆ ಅನನ್ಯವಾಗಿಲ್ಲ. MLX ಅದೇ ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲಸದ ಹೊರೆ ಆಕಾರಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮತ್ತು ವೆಕ್ಟರ್ ಕರ್ನಲ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. MLX-LM ನ Qwen ಅನುಷ್ಠಾನ ಈಗಾಗಲೇ ತಜ್ಞರ ಕೆಲಸವನ್ನು ಗುಂಪು ಮಾಡುತ್ತದೆ, ಫ್ಯೂಸ್ಡ್ ಮರುಕಳಿಸುವ ಮೆಟಲ್ ಕರ್ನಲ್‌ನೊಂದಿಗೆ Gated DeltaNet ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ ಮತ್ತು GQA-ಅವೇರ್ ಅಟೆನ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಸಾಮರ್ಥ್ಯಗಳು ಆಪಲ್ ಸಿಲಿಕಾನ್‌ನಲ್ಲಿ ಸಮರ್ಥ Qwen ಇನ್ಫರೆನ್ಸ್‌ಗಾಗಿ ಹಂಚಿದ ಆರಂಭಿಕ ಬಿಂದುವಾಗಿವೆ.

ಆಪ್ಟಿಮೈಸೇಶನ್ ಕಾರ್ಯತಂತ್ರ

ಲಿಲಿಯ ಕಿರಿದಾದ ವ್ಯಾಪ್ತಿಯು Qwen ನ ನಿಖರವಾದ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಆಯಾಮಗಳ ಸುತ್ತಲೂ ಈ ಹಂಚಿದ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮಾರ್ಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಹಂತ-ನಿರ್ದಿಷ್ಟ GPU ಮಾರ್ಗಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಡೇಟಾ ಚಲನೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು Qwen ನ ತಜ್ಞ, ಮರುಕಳಿಸುವ ಮತ್ತು ಗಮನದ ಕೆಲಸದ ಹೊರೆಗಳನ್ನು ಮ್ಯಾಪ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅಳತೆ ಮಾಡಿದ ಕೆಲಸದ ಹೊರೆ ಆಕಾರದಿಂದ ಕರ್ನಲ್‌ಗಳು ಮತ್ತು ಲೇಔಟ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಈ ಕಾರ್ಯತಂತ್ರವು ಮೂರು ಭಾಗಗಳನ್ನು ಹೊಂದಿದೆ:

  1. ಇನ್ಫರೆನ್ಸ್ ಹಂತಕ್ಕೆ GPU ಮಾರ್ಗವನ್ನು ಹೊಂದಿಸಿ. ಪ್ರಿಫಿಲ್ ಅನೇಕ ಸಾಲುಗಳಲ್ಲಿ ತೂಕಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದಾಗ ಮ್ಯಾಟ್ರಿಕ್ಸ್-ಆಧಾರಿತ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಬಳಸಿ, ಮತ್ತು ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಪ್ರತಿ ಬಾರಿ ಒಂದು ಸಾಲನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದಾಗ ವೆಕ್ಟರ್-ಆಧಾರಿತ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಬಳಸಿ.
  2. ಡೇಟಾ ಚಲನೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವಾಗ Qwen ನ ರಚನೆಯನ್ನು GPU ಮೇಲೆ ಮ್ಯಾಪ್ ಮಾಡಿ. ತೂಕಗಳನ್ನು ಬಳಸುವವರೆಗೆ ಅವುಗಳನ್ನು ಸಂಕುಚಿತಗೊಳಿಸಿ ಇರಿಸಿ, CPU ಗೆ ಹಿಂತಿರುಗದೆ ರೂಟ್ ಮಾಡಿದ ತಜ್ಞರ ಕೆಲಸವನ್ನು ಸಂಘಟಿಸಿ, Gated DeltaNet ಸ್ಥಿತಿಯನ್ನು ಅದರ ಮರುಕಳಿಸುವ ಸ್ಕ್ಯಾನ್ ಮೂಲಕ ಚಿಪ್‌ನಲ್ಲಿ ಉಳಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಗ್ರೂಪ್ಡ್-ಕ್ವೇರಿ ಅಟೆನ್ಷನ್ ಹಂಚಿಕೊಂಡಿರುವ KV ಡೇಟಾವನ್ನು ಮರುಬಳಕೆ ಮಾಡಿ.
  3. ಕೆಲಸದ ಹೊರೆ ಆಕಾರಕ್ಕೆ ಕರ್ನಲ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ. ಪ್ರತಿ ಹಂತದೊಳಗೆ, ಲಭ್ಯವಿರುವ ಸಾಲಿನ ಎಣಿಕೆ, ತಜ್ಞರಾದ್ಯಂತ ಸಾಲುಗಳ ವಿತರಣೆ, ಕಾರ್ಯಾಚರಣೆಯ ಆಯಾಮಗಳು ಮತ್ತು ಪ್ರಸ್ತುತ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್ ಉದ್ದದಿಂದ ಟೈಲ್ ಗಾತ್ರಗಳು, ಎಕ್ಸಿಕ್ಯೂಶನ್ ಲೇಔಟ್‌ಗಳು ಮತ್ತು ಅಟೆನ್ಷನ್ ಮಾರ್ಗಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ.

ಕೆಳಗಿನ ವಿಭಾಗಗಳು ಈ ಆಯ್ಕೆಗಳನ್ನು ವಿವರಿಸುತ್ತವೆ. M5 Max ನಲ್ಲಿ ಹೊಂದಾಣಿಕೆಯ ಅಬ್ಲೇಶನ್‌ಗಳಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾದ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳಿಗಾಗಿ, ಅಧ್ಯಯನದಲ್ಲಿರುವ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನಲ್ಲಿ ಮಾತ್ರ ಭಿನ್ನವಾಗಿರುವ ಒಂದೇ ರೀತಿಯ ಎಂಜಿನ್ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳನ್ನು ಹೋಲಿಸುವ ಮೂಲಕ ನಾವು ಅವುಗಳ ಪರಿಣಾಮಗಳನ್ನು ಅಂದಾಜು ಮಾಡುತ್ತೇವೆ. ಈ ಪ್ರಯೋಗಗಳು ನಮ್ಮ ಎಂಜಿನ್‌ನ ಆವೃತ್ತಿಗಳನ್ನು ಅದರೊಂದಿಗೆ ಹೋಲಿಸುವುದರಿಂದ, ಅವು MLX-LM ವಿರುದ್ಧ ಅಂತಿಮ ಫಲಿತಾಂಶಗಳನ್ನು ವಿಭಜಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ವಿವರಿಸುತ್ತವೆ.

ಪ್ರಿಫಿಲ್: ತೂಕಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಿ ಮತ್ತು GPU ನಲ್ಲಿ ರೂಟಿಂಗ್ ಅನ್ನು ಇರಿಸಿ

ಪ್ರಿಫಿಲ್ ಒಮ್ಮೆಯೇ ಅನೇಕ ಟೋಕನ್ ಸಾಲುಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ, ಆದರೆ Qwen ಆ ಸಾಲುಗಳನ್ನು ತಜ್ಞರಾದ್ಯಂತ ಅಸಮವಾಗಿ ರೂಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅನುಕ್ರಮದ ಮೂಲಕ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯನ್ನು ನವೀಕರಿಸುತ್ತದೆ. ಇದರ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳು ಮೂರು ಗುಂಪುಗಳಾಗಿ ಬೀಳುತ್ತವೆ: ರೂಟ್ ಮಾಡಿದ ಸಾಲುಗಳ ಸುತ್ತಲೂ ವಿರಳ ತಜ್ಞರ ಕೆಲಸವನ್ನು ಸಂಘಟಿಸಿ, Gated DeltaNet ಸ್ಕ್ಯಾನ್ ಅನ್ನು ಚಿಪ್‌ನಲ್ಲಿ ಇರಿಸಿ, ಮತ್ತು ದೀರ್ಘ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು ಬೌಂಡೆಡ್ ತುಂಡುಗಳಾಗಿ ವಿಂಗಡಿಸಿ.

Qwen ಲೇಯರ್ ಮೂಲಕ ಒಂದು ಬೌಂಡೆಡ್ ಪ್ರಿಫಿಲ್ ತುಂಡಿಗೆ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮತ್ತು ಡೇಟಾ ನಿವಾಸ. ಅಟೆನ್ಷನ್ KV ಕಾಶ್ ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ, ಆದರೆ Gated DeltaNet ತನ್ನ ಕೆಲಸ ಮಾಡುವ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯನ್ನು ರಿಜಿಸ್ಟರ್‌ಗಳಲ್ಲಿ ಕೊಂಡೊಯ್ಯುತ್ತದೆ. ಎಕ್ಸ್‌ಪರ್ಟ್-ರೂಟಿಂಗ್ ಮೆಟಾಡೇಟಾ GPU ನಲ್ಲಿಯೇ ಇರುತ್ತದೆ, Q4 ತೂಕಗಳು ಗ್ರೂಪ್ಡ್ GEMM ಒಳಗೆ ಡಿಕ್ವಾಂಟೈಸ್ ಆಗುವವರೆಗೆ ಪ್ಯಾಕ್ ಆಗಿರುತ್ತವೆ ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಆಕ್ಟಿವೇಷನ್‌ಗಳು ಪ್ರಸ್ತುತ ತುಂಡಿಗೆ ಸೀಮಿತವಾಗಿರುತ್ತವೆ.

ವಿರಳ ತಜ್ಞರ ಗಣನೆಯನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ

ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರದ ಸಮಯದಲ್ಲಿ ತೂಕಗಳನ್ನು ಡಿಕ್ವಾಂಟೈಸ್ ಮಾಡಿ

Qwen3.6-35B-A3B ಚೆಕ್‌ಪಾಯಿಂಟ್ ಗ್ರೂಪ್‌ವೈಸ್ ಅಫೈನ್ 4-ಬಿಟ್ ಕ್ವಾಂಟೈಸೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಪ್ರತಿ ತೂಕವನ್ನು 4-ಬಿಟ್ ಇಂಟರ್ ಕೋಡ್ ಆಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಆದರೆ 64 ತಜ್ಞರ ಪ್ರತಿ ಗುಂಪು ಅದರ ಮೌಲ್ಯಗಳನ್ನು ಪುನರ್ನಿರ್ಮಿಸಲು ಬಳಸುವ bfloat16 ಸ್ಕೇಲ್ ಮತ್ತು ಬಯಾಸ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ. ಇದು 35-ಬಿಲಿಯನ್-ಪ್ಯಾರಾಮೀಟರ್ ಮಾದರಿಯನ್ನು ಸರಿಸುಮಾರು 70 GB bfloat16 ತೂಕಗಳಿಂದ 19.4 GB ಚೆಕ್‌ಪಾಯಿಂಟ್‌ಗೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಇದು ಮಾದರಿಯನ್ನು ಮ್ಯಾಕ್‌ನಲ್ಲಿ ನಿವಾಸಿಯಾಗಿಡಲು ಪ್ರಾಯೋಗಿಕವಾಗಿಸುತ್ತದೆ.

ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರಕ್ಕಾಗಿ ಬಳಸಲಾಗುವ ಮೆಟಲ್ 4 ಟೆನ್ಸರ್ ಕಾರ್ಯಾಚರಣೆಯು ಪ್ಯಾಕ್ ಮಾಡಿದ 4-ಬಿಟ್ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕಿಂತ bfloat16 ಒಪರಾಂಡ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಗುಣಾಕಾರಕ್ಕೆ ಮುಂಚಿತವಾಗಿ, GPU bfloat16 ನಲ್ಲಿ ತೂಕಗಳನ್ನು ಪುನರ್ನಿರ್ಮಿಸಬೇಕು. ಲಿಲಿಯಲ್ಲಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಗ್ರೂಪ್ಡ್ GEMM ಈ ಪರಿವರ್ತನೆಯನ್ನು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಚಿಕ್ಕ ತೂಕದ ಟೈಲ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ರೂಟ್ ಮಾಡಿದ ಆಕ್ಟಿವೇಷನ್ ಸಾಲುಗಳಿಂದ ಅದನ್ನು ಗುಣಿಸಲು ಸಾಕುಕಾಲದವರೆಗೆ ಆನ್-ಚಿಪ್ ಥ್ರೆಡ್‌ಗ್ರೂಪ್ ಮೆಮೊರಿಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ. ಸಂಗ್ರಹಣೆಯು 32-ಬಿಟ್ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು bfloat16 ನಲ್ಲಿ ಬರೆಯಲಾಗುತ್ತದೆ. ಸಂಪೂರ್ಣ ವಿಸ್ತರಿಸಿದ ತೂಕದ ಅರೆಯನ್ನು ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯಲ್ಲಿ ಎಂದಿಗೂ ರಚಿಸಲಾಗುವುದಿಲ್ಲ.

ಅಬ್ಲೇಶನ್‌ನಲ್ಲಿ, ಡಿಕ್ವಾಂಟೈಸೇಶನ್ ಪ್ರತ್ಯೇಕ ಕಾರ್ಯಾಚರಣೆಯಾಗಿ ಚಲಿಸುತ್ತದೆ: ಇದು ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯಲ್ಲಿ 4-ಬಿಟ್ ತೂಕಗಳನ್ನು bfloat16 ಅರೆಯಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ, ಅದರ ನಂತರ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಕರ್ನಲ್ ಆ ಅರೆಯನ್ನು ಮತ್ತೆ ಓದುತ್ತದೆ. 512-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ, ಡಿಕ್ವಾಂಟೈಸೇಶನ್ ಅನ್ನು ಗ್ರೂಪ್ಡ್ GEMM ಗೆ ಸರಿಸುವುದು ಈ ಮಧ್ಯಂತರ ಬರವಣಿಗೆ ಮತ್ತು ಓದುವಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ಮೂಲಕ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಪ್ರಿಫಿಲ್ ಥ್ರೂಪುಟ್ ಅನ್ನು 77.4% ರಷ್ಟು ಹೆಚ್ಚಿಸಿದೆ.

GPU ನಲ್ಲಿ ತಜ್ಞರ ರೂಟಿಂಗ್ ಅನ್ನು ಇರಿಸಿ

ಗ್ರೂಪ್ಡ್ GEMM ಪ್ರತಿ ತಜ್ಞರಿಗೆ ನಿಯೋಜಿಸಲಾದ ಆಕ್ಟಿವೇಷನ್ ಸಾಲುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸಂಗ್ರಹಿಸಬೇಕಾಗುತ್ತದೆ. ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಎಂಟು ತಜ್ಞರನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ ನಂತರ, ಹಿಸ್ಟೋಗ್ರಾಮ್ ಪ್ರತಿ ತಜ್ಞರಿಗೆ ಎಷ್ಟು ನಿಯೋಜನೆಗಳು ಹೋದವು ಎಂಬುದನ್ನು ಎಣಿಸುತ್ತದೆ. ಪ್ರಿಫಿಕ್ಸ್ ಸ್ಕ್ಯಾನ್ ಆ ಎಣಿಕೆಗಳನ್ನು ಆರಂಭಿಕ ಆಫ್‌ಸೆಟ್‌ಗಳಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ, ಸ್ಕ್ಯಾಟರ್ ಹಂತವು ಸಾಲುಗಳನ್ನು ಅವುಗಳ ತಜ್ಞರ ಗುಂಪುಗಳಲ್ಲಿ ಇರಿಸುತ್ತದೆ, ಮತ್ತು ಬ್ಲಾಕ್ ಮ್ಯಾಪ್ ಗ್ರೂಪ್ಡ್ GEMM ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬೇಕಾದ ಸ್ಥಿರ-ಗಾತ್ರದ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.

ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಮಾರ್ಗವು ಪ್ರತಿ ಪ್ರಾಂಪ್ಟ್ ತುಂಡಿಗೆ ಈ ಸಂಪೂರ್ಣ ಅನುಕ್ರಮವನ್ನು ಒಂದು ಕಮಾಂಡ್ ಬಫರ್‌ನಲ್ಲಿ, GPU ಕಾರ್ಯಾಚರಣೆಗಳ ಆದೇಶಿತ ಬ್ಯಾಚ್‌ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ. ಬದಲಿಗೆ ಅಬ್ಲೇಶನ್ ವಿರಾಮಗೊಳಿಸುತ್ತದೆ ಇದರಿಂದ CPU ರೂಟಿಂಗ್ ಮಧ್ಯಂತರಗಳನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಮತ್ತು ಮುಂದಿನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಸಲ್ಲಿಸಬಹುದು. ಹಿಸ್ಟೋಗ್ರಾಮ್ ಮತ್ತು ಪ್ರಿಫಿಕ್ಸ್ ಸ್ಕ್ಯಾನ್ ಅನ್ನು GPU ನಲ್ಲಿ ಇರಿಸುವುದು ಎರಡು ಕರ್ನಲ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಆದರೆ ಪ್ರತಿ MoE ಲೇಯರ್ ಒಳಗೆ CPU-GPU ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.

512-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ, GPU-ರೆಸಿಡೆಂಟ್ ರೂಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಎಂಡ್-ಟೋ-ಎಂಡ್ ಪ್ರಿಫಿಲ್ ಅನ್ನು 89% ರಷ್ಟು ಹೆಚ್ಚಿಸಿದೆ. ಕರ್ನಲ್ ಎಣಿಕೆ ಮಾತ್ರ ಹೇಗೆ ದಾರಿತಪ್ಪಿಸಬಹುದು ಎಂಬುದನ್ನು ಇದು ತೋರಿಸುತ್ತದೆ: ವೇಗವಾದ ಮಾರ್ಗವು ಹೆಚ್ಚಿನ ಕರ್ನಲ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಆದರೆ ಲೇಯರ್ ಒಳಗೆ CPU ಗಾಗಿ ಎಂದಿಗೂ ಕಾಯುವುದಿಲ್ಲ.

ತಜ್ಞರ ಲೋಡ್‌ಗೆ ಟೈಲ್ ಗಾತ್ರವನ್ನು ಹೊಂದಿಸಿ

2K-token promptನಲ್ಲಿ, 256 expertsಗಳಲ್ಲಿ ಎಂಟುಗಳಿಗೆ ಪ್ರತಿಯೊಂದು token ಅನ್ನು routing ಮಾಡುವುದರಿಂದ 16,384 token–expert assignments ಉಂಟಾಗುತ್ತವೆ, ಅಂದರೆ ಪ್ರತಿ expertಗೆ ಸರಾಸರಿ 64 activation rows. ನಿಜವಾದ ವಿತರಣೆಯು ಅಸಮವಾಗಿದೆ: ಕೆಲವು expertsಗಳಿಗೆ ಬಹಳಷ್ಟು rows ಬರುತ್ತವೆ, ಇನ್ನು ಕೆಲವರಿಗೆ ಕಡಿಮೆ ಬರುತ್ತವೆ.

ಗ್ರೂಪ್ಡ್ GEMM ಪ್ರತಿ ತಜ್ಞರ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಟೈಲ್‌ಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ, ಇವು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರದ ಔಟ್‌ಪುಟ್‌ನ ಸಣ್ಣ ಆಯತಾಕಾರದ ಬ್ಲಾಕ್‌ಗಳಾಗಿವೆ. ಪ್ರತಿ ಟೈಲ್ ಅನ್ನು ಒಂದು GPU ಥ್ರೆಡ್‌ಗ್ರೂಪ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ಆಪಲ್ ಸಿಲಿಕಾನ್‌ನ GPU ಗಳಲ್ಲಿ, ಥ್ರೆಡ್‌ಗ್ರೂಪ್ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್‌ಗಳನ್ನು கொண்டுள்ளது, ಪ್ರತಿಯೊಂದೂ ಲಾಕ್‌ಸ್ಟೆಪ್‌ನಲ್ಲಿ ಸೂಚನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ 32 ಥ್ರೆಡ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ದೊಡ್ಡ ಟೈಲ್‌ಗಳು ಹೆಚ್ಚಿನ ಸಾಲುಗಳಲ್ಲಿ ಸೆಟಪ್ ವೆಚ್ಚವನ್ನು ಹರಡುತ್ತವೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಸಮಾನಾಂತರ ಕೆಲಸವನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತವೆ, ಆದರೆ ತಜ್ಞರು ಕೆಲವೇ ಸಾಲುಗಳನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ದೊಡ್ಡ ಟೈಲ್‌ನ ಭಾಗವು ನಿಷ್ಕ್ರಿಯವಾಗಿರುತ್ತದೆ. ಆದ್ದರಿಂದ ಟೈಲ್ ಗಾತ್ರ ಮತ್ತು ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್ ಎಣಿಕೆ ಜೋಡಿಸಲ್ಪಟ್ಟಿರುತ್ತವೆ.

ಅಬ್ಲೇಶನ್ ಟೈಲ್ ಅನ್ನು 16 ಸಾಲುಗಳಲ್ಲಿ ಸರಿಪಡಿಸುತ್ತದೆ. ಆ ನಿಯಂತ್ರಣದ ವಿರುದ್ಧ, ನಾಲ್ಕು ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್‌ಗಳೊಂದಿಗೆ 32-ಸಾಲುಗಳ ಟೈಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು 2K ಟೋಕನ್‌ಗಳಲ್ಲಿ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಪ್ರಿಫಿಲ್ ಅನ್ನು 13.2% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ.

ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯನ್ನು ಚಿಪ್‌ನಲ್ಲಿ ಇರಿಸಿ

ಪ್ರಿಫಿಲ್ ಸಮಯದಲ್ಲಿ, ಪ್ರತಿ Gated DeltaNet ಲೇಯರ್ ತನ್ನ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯನ್ನು ಮುಂದಕ್ಕೆ ಕೊಂಡೊಯ್ಯುವಾಗ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಕ್ರಮವಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ. ರಿಜಿಸ್ಟರ್ ರೆಸಿಡೆನ್ಸಿ ನಿಷ್ಕ್ರಿಯಗೊಂಡಾಗ, ಅಬ್ಲೇಶನ್ ಬ್ಲಾಕ್‌ವೈಸ್ ಸ್ಕ್ಯಾನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. 2K-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ, ಆ ಮಾರ್ಗವು ಪ್ರತಿ ಲೇಯರ್‌ಗೆ 256 MiB (ಮೆಬಿಬೈಟ್‌ಗಳು) ಸ್ಥಿತಿಯನ್ನು ಚಲಿಸುತ್ತದೆ ಮತ್ತು ತಡೆಗೋಡೆಗಳಲ್ಲಿ ಸಹಕರಿಸುವ ಥ್ರೆಡ್‌ಗಳನ್ನು ಪುನಃಪುಟಿಸುತ್ತದೆ, ಎಲ್ಲಾ ಭಾಗವಹಿಸುವ ಥ್ರೆಡ್‌ಗಳು ಪರಸ್ಪರ ಕಾಯಬೇಕಾದ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಬಿಂದುಗಳು.

ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯು ಒಂದು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಆಗಿದೆ. ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಕರ್ನಲ್ ಪ್ರತಿ ಕಾಲಮ್ ಅನ್ನು ಒಂದು ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್‌ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ. ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್ ತನ್ನ ಥ್ರೆಡ್‌ಗಳ ನಡುವೆ ಕಾಲಮ್ ಅನ್ನು ವಿಭಜಿಸುತ್ತದೆ, ಕಾಲಮ್ ಅನ್ನು ಒಮ್ಮೆ ತಮ್ಮ ರಿಜಿಸ್ಟರ್‌ಗಳಿಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸಂಪೂರ್ಣ ಸ್ಕ್ಯಾನ್ ಮೂಲಕ ಸ್ಥಿತಿಯನ್ನು ಕೊಂಡೊಯ್ಯುತ್ತದೆ. ಥ್ರೆಡ್‌ಗ್ರೂಪ್ ಮೆಮೊರಿ, ಥ್ರೆಡ್‌ಗ್ರೂಪ್‌ನಾದ್ಯಂತ ಹಂಚಿಕೊಳ್ಳಲಾದ ಆನ್-ಚಿಪ್ ಸಂಗ್ರಹಣೆಗಿಂತ ಥ್ರೆಡ್‌ಗಳು ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಮೂಲಕ ಮಧ್ಯಂತರ ಫಲಿತಾಂಶಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುತ್ತವೆ. ಸ್ಕ್ಯಾನ್ ನಂತರ ಮಾತ್ರ ಪೂರ್ಣಗೊಂಡ ಸ್ಥಿತಿಯನ್ನು ಹಿಂದೆ ಬರೆಯಲಾಗುತ್ತದೆ.

ಚಿಕ್ಕ ರೌಂಡಿಂಗ್ ದೋಷಗಳು ಅನುಕ್ರಮ ನವೀಕರಣಗಳಾದ್ಯಂತ ಸಂಯುಕ್ತಗೊಳ್ಳುವುದರಿಂದ ಸ್ಥಿತಿ ಮತ್ತು ಅದರ ಗೇಟ್ 32-ಬಿಟ್ ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಫಾರ್ಮ್ಯಾಟ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ಕ್ಯೂರಿ ಮತ್ತು ಕೀ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆಗಳು bfloat16 ನಲ್ಲಿಯೇ ಇರುತ್ತವೆ.

2K-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ, ರಿಜಿಸ್ಟರ್-ರೆಸಿಡೆಂಟ್ ಸ್ಕ್ಯಾನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಎಂಡ್-ಟೋ-ಎಂಡ್ ಪ್ರಿಫಿಲ್ ಅನ್ನು 5.6% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ. ಎಕ್ಸ್‌ಪರ್ಟ್ GEMM ಗಳು ಪ್ರಿಫಿಲ್ ಸಮಯದ ಸುಮಾರು 90% ರಷ್ಟನ್ನು ಹೊಂದಿವೆ. ಅನುಕ್ರಮ ಸ್ಕ್ಯಾನ್ ನ್ಯೂರಲ್ ಆಕ್ಸಿಲರೇಟರ್‌ಗಳಿಂದ ಪ್ರಯೋಜನ ಪಡೆಯಲು ಸಾಕಷ್ಟು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಕೆಲಸವನ್ನು ಬಹಿರಂಗಪಡಿಸುವುದಿಲ್ಲ.

ಪ್ರಾಂಪ್ಟ್ ಚಂಕಿಂಗ್‌ನೊಂದಿಗೆ ತಾತ್ಕಾಲಿಕ ಮೆಮೊರಿಯನ್ನು ಬೌಂಡ್ ಮಾಡಿ

ರನ್‌ಟೈಮ್ ದೀರ್ಘ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಮೆಮೊರಿಯಲ್ಲಿ ಏಕಕಾಲದಲ್ಲಿ ಪ್ರತಿ ಪ್ರಾಂಪ್ಟ್ ಟೋಕನ್‌ಗೆ ತಾತ್ಕಾಲಿಕ ಡೇಟಾವನ್ನು ಇರಿಸಿಕೊಳ್ಳುವ ಬದಲು ಬೌಂಡೆಡ್ ತುಂಡುಗಳ ಅನುಕ್ರಮವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ. ಮಾದರಿಯ ತೂಕಗಳು ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯಲ್ಲಿ ನಿವಾಸಿಯಾಗಿರುತ್ತವೆ, ಆದರೆ ಮರುಕಳಿಸುವ ಸ್ಥಿತಿ ಮತ್ತು KV ಕಾಶ್ ಒಂದು ತುಂಡಿನಿಂದ ಮತ್ತೊಂದಕ್ಕೆ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್ ಅನ್ನು ಕೊಂಡೊಯ್ಯುತ್ತವೆ. ಹಿಂದಿನ ಯಾವುದೇ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್ ಅನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುವುದಿಲ್ಲ.

ಚಂಕಿಂಗ್ ಇಲ್ಲದೆ, ತಾತ್ಕಾಲಿಕ ಆಕ್ಟಿವೇಷನ್ ಅರೇಗಳು ಸಂಪೂರ್ಣ ಪ್ರಾಂಪ್ಟ್‌ನೊಂದಿಗೆ ಬೆಳೆಯುತ್ತವೆ ಮತ್ತು ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಗಾಗಿ ಮಾದರಿಯ ತೂಕಗಳು, ಮರುಕಳಿಸುವ ಸ್ಥಿತಿ ಮತ್ತು KV ಕಾಶ್‌ನೊಂದಿಗೆ ಸ್ಪರ್ಧಿಸುತ್ತವೆ. ಚಂಕಿಂಗ್ ಒಂದು ಸಮಯದಲ್ಲಿ ಕೇವಲ ಒಂದು ವಿಭಾಗದ ತಾತ್ಕಾಲಿಕ ಮೌಲ್ಯಗಳನ್ನು ಲೈವ್ ಆಗಿ ಇರಿಸುತ್ತದೆ, ನಂತರ ಮುಂದಿನ ವಿಭಾಗವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಮೊದಲು ಆ ಸಂಗ್ರಹಣೆಯನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತದೆ ಅಥವಾ ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ. ಇದು ಗರಿಷ್ಠ ಕೆಲಸದ ಮೆಮೊರಿಯನ್ನು ಕ್ಯಾಪ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮಾದರಿಯ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಬದಲಾಯಿಸದೆ ದೀರ್ಘ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಎಂಜಿನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಚಂಕ್ಡ್ ಪ್ರಿಫಿಲ್ ಅನೇಕ ಎಂಜಿನ್‌ಗಳಲ್ಲಿ ಜನಪ್ರಿಯವಾಗಿದೆ ಮತ್ತು ಈ ಮೆಮೊರಿ-ನಿರ್ಬಂಧಿತ ಪರಿಸರದಲ್ಲಿ ದೀರ್ಘ ಬಹು-ಟರ್ನ್ ಟ್ರಾಜೆಕ್ಟರಿಗಳನ್ನು ಸೇವೆ ಮಾಡಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಅಟೆನ್ಷನ್ ಲೇಯರ್‌ಗಳಿಗೆ ಒಟ್ಟು ಪ್ರಿಫಿಲ್ ಸಮಯವು ಪ್ರಾಂಪ್ಟ್ ಉದ್ದದ ಮೇಲೆ ಚೌಕಟ್ಟಾಗಿ ಉಳಿಯುತ್ತದೆ, ಹಿಂದಿನ ತುಂಡುಗಳ ಪುನರಾವರ್ತಿತ KV ಲೋಡ್‌ಗಳಿಂದ ಕೆಲವು ಹೆಚ್ಚುವರಿ ಓವರ್‌ಹೆಡ್‌ನೊಂದಿಗೆ.

ಡಿಕೋಡ್: ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಸರಿಸಲಾದ ಬೈಟ್‌ಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಿ

ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಪ್ರತಿ ಬಾರಿ ಒಂದು ಹೊಸ ಸಾಲನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ. ಕಡಿಮೆ ತೂಕದ ಮರುಬಳಕೆಯೊಂದಿಗೆ, ಅದರ ಥ್ರೂಪುಟ್ ಮುಖ್ಯವಾಗಿ ಎಂಜಿನ್ ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಎಷ್ಟು ಬೈಟ್‌ಗಳನ್ನು ಚಲಿಸುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಡಿಕೋಡ್ ಬದಲಾವಣೆಗಳು ನಾಲ್ಕು ಗುಂಪುಗಳಾಗಿ ಬೀಳುತ್ತವೆ: ಒಂದು ಸಾಲಿನ ತೂಕದ ಮಾರ್ಗವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ, ಪ್ರತಿ ಹಂತವನ್ನು GPU ನಲ್ಲಿ ಇರಿಸಿ, ಮಧ್ಯಂತರ ಮತ್ತು ರಾಜ್ಯ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ, ಮತ್ತು ಅಟೆನ್ಷನ್ ಕಾಶ್ ಅನ್ನು ಸಮರ್ಥವಾಗಿ ಓದಿ.

ಒಂದು ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಹಂತಕ್ಕಾಗಿ ಡೇಟಾ ಹರಿವು ಮತ್ತು ನಿಷ್ಕ್ರಿಯ ಸಮಯ ಹಾಗೂ ಕಾಶ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಎರಡು ಕಾರ್ಯವಿಧಾನಗಳು. (A) GPU Q4 ತೂಕಗಳು ಮತ್ತು ಮಾದರಿ ಸ್ಥಿತಿಯನ್ನು ಅಟೆನ್ಷನ್, ಗೇಟೆಡ್ ಡೆಲ್ಟಾನೆಟ್, ರೂಟಿಂಗ್ ಮತ್ತು ಫ್ಯೂಸ್ಡ್ ಎಕ್ಸ್‌ಪರ್ಟ್ ಕರ್ನಲ್‌ಗಳ ಮೂಲಕ ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ, ನಂತರ ಮುಂದಿನ ಹಂತದ ಇನ್‌ಪುಟ್ ಸ್ಲಾಟ್‌ಗೆ ನೇರವಾಗಿ ಆಯ್ಕೆಮಾಡಿದ ಟೋಕನ್ ಅನ್ನು ಬರೆಯುತ್ತದೆ ಮತ್ತು CPU ಗೆ ಪ್ರತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ. (B) ಡಿಪೆಂಡೆನ್ಸಿ-ಅವೇರ್ ವೇಳಾಪಟ್ಟಿಯು ಸ್ವತಂತ್ರ ಕರ್ನಲ್‌ಗಳನ್ನು ಅತಿ ವ್ಯಾಪಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. (C) GQA ಪ್ಯಾಕಿಂಗ್ ನಾಲ್ಕು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳಿಗೆ ಪ್ರತಿ KV-ರೋ ಲೋಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಎಂಟು ಸ್ವತಂತ್ರ ವಿನಂತಿಗಳನ್ನು ಎರಡು ಹಂಚಿದ ಲೋಡ್‌ಗಳಿಗೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಒಂದು ಸಾಲಿನ ತೂಕದ ಮಾರ್ಗವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ

MLX ಈಗಾಗಲೇ ವಿಶೇಷವಾದ ಮ್ಯಾಟ್ರಿಕ್ಸ್-ವೆಕ್ಟರ್ ಕರ್ನಲ್‌ಗಳಿಗೆ ಒಂದು ಸಾಲಿನ ಕೆಲಸವನ್ನು ವಿತರಿಸುತ್ತದೆ. ಲಿಲಿ MLX ಅನ್ನು ಬಳಸದ ಕಾರಣ, ಕಸ್ಟಮ್ ರನ್‌ಟೈಮ್ ಒಂದೇ ಮೂಲಭೂತ ಕಾರ್ಯತಂತ್ರವನ್ನು ಒದಗಿಸಬೇಕು. ನಮ್ಮ ರೋ-ಪ್ಯಾರಲಲ್ GEMV ಅನ್ನು ಒಂದು ಆಕ್ಟಿವೇಷನ್ ಸಾಲಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ನ ವಿವಿಧ ಭಾಗಗಳನ್ನು ಸಮಾನಾಂತರವಾಗಿ ಓದುವಾಗ ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಸಹಕರಿಸುತ್ತದೆ.

ಪ್ರತಿ ಡಿಕೋಡ್ ಹಂತವನ್ನು GPU ನಲ್ಲಿ ಇರಿಸಿ

ಟೋಕನ್ ಹ್ಯಾಂಡ್‌ಆಫ್ ಅನ್ನು GPU ನಲ್ಲಿ ಇರಿಸಿ

ಪ್ರತಿ ಡಿಕೋಡ್ ಹಂತವು ಮುಂದಿನ ಟೋಕನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಮೂಲಕ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ; ಕೆಳಗಿನ ಹಂತವು ಆ ಟೋಕನ್ ಅನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆಯ್ಕೆಯನ್ನು CPU ಗೆ ಮತ್ತು ನಂತರ ಮತ್ತೆ GPU ಗೆ ಕಳುಹಿಸುವುದು ಪ್ರತಿ ಟೋಕನ್‌ಗೆ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಬಿಂದುವನ್ನು ಸೇರಿಸುತ್ತದೆ. ಬದಲಿಗೆ ನಮ್ಮ ರನ್‌ಟೈಮ್ ಎರಡು ಕಮಾಂಡ್ ಬಫರ್‌ಗಳು ಮತ್ತು ಎರಡು GPU-ರೆಸಿಡೆಂಟ್ ಟೋಕನ್ ಸ್ಲಾಟ್‌ಗಳ ನಡುವೆ ಪರ್ಯಾಯವಾಗಿರುತ್ತದೆ. GPU ಅತ್ಯಧಿಕ ಸ್ಕೋರ್ ಗಳಿಸಿದ ಟೋಕನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮುಂದಿನ ಡಿಕೋಡ್ ಹಂತಕ್ಕಾಗಿ ಇನ್‌ಪುಟ್ ಸ್ಲಾಟ್‌ಗೆ ನೇರವಾಗಿ ಅದರ ಟೋಕನ್ ID ಅನ್ನು ಬರೆಯುತ್ತದೆ, ಆದರೆ CPU ನಂತರದ ಕೆಲಸವನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತದೆ.

ಸ್ವತಂತ್ರ GPU ಕೆಲಸವನ್ನು ಅತಿ ವ್ಯಾಪಿಸಿ

ಒಂದು ರೆಕಾರ್ಡ್ ಮಾಡಿದ ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಹಂತದಲ್ಲಿ, ಟೋಕನ್ ಅನ್ನು ಉತ್ಪಾದಿಸುವುದು 795 GPU ಕರ್ನಲ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿತು. ಅವುಗಳ ಅವಲಂಬನೆಗಳು 555 ಅನುಕ್ರಮ ಹಂತಗಳನ್ನು ರಚಿಸಿದವು, ಇದು ಕೆಲವು ಕರ್ನಲ್‌ಗಳು ಏಕಕಾಲದಲ್ಲಿ ಚಲಿಸಲು ಮುಕ್ತವಾಗಿರಿಸಿತು. ಆದಾಗ್ಯೂ ಮೆಟಲ್‌ನ ಸೀರಿಯಲ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮೋಡ್ ಪ್ರತಿ ಕರ್ನಲ್ ಅನ್ನು ಕ್ರಮವಾಗಿ ರನ್ ಮಾಡಿತು.

ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಡಿಕೋಡ್ ಮಾರ್ಗವು ಸಮಕಾಲೀನ ಮೆಟಲ್ ಪಾಸ್‌ನಲ್ಲಿ ನಿಜವಾದ ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುತ್ತದೆ. GPU ಸಂಪನ್ಮೂಲಗಳು ಅನುಮತಿಸಿದಾಗ ಸ್ವತಂತ್ರ ಕರ್ನಲ್ ಪ್ರಾರಂಭಗಳು ಏಕಕಾಲದಲ್ಲಿ ಚಲಿಸಬಹುದು. ನಂತರದ ಕೆಲಸಕ್ಕೆ ಹಿಂದಿನ ಫಲಿತಾಂಶದ ಅಗತ್ಯವಿರುವಾಗ ಮಾತ್ರ ತಡೆಗೋಡೆಯನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ.

ಮಧ್ಯಂತರ ಮತ್ತು ರಾಜ್ಯ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ

ಪ್ರತ್ಯೇಕ ಕರ್ನಲ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಮಧ್ಯಂತರವನ್ನು ಸಾಕಾರಗೊಳಿಸುತ್ತವೆ: ಒಂದು ಕರ್ನಲ್ ತಾತ್ಕಾಲಿಕ ಫಲಿತಾಂಶವನ್ನು ಮೆಮೊರಿಗೆ ಬರೆಯುತ್ತದೆ, ಮತ್ತು ಮುಂದಿನದು ಫಲಿತಾಂಶವನ್ನು ಮತ್ತೆ ಓದುತ್ತದೆ. ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಡಿಕೋಡ್ ಮಾರ್ಗವು ನಾಲ್ಕು ಸರಪಳಿಗಳನ್ನು ಫ್ಯೂಸ್ ಮಾಡುತ್ತದೆ: ಗೇಟೆಡ್ ಆಕ್ಟಿವೇಷನ್‌ನೊಂದಿಗೆ ಎರಡು ಎಕ್ಸ್‌ಪರ್ಟ್ ಇನ್‌ಪುಟ್ ಪ್ರೊಜೆಕ್ಷನ್‌ಗಳು; ರೂಟಿಂಗ್ ಸ್ಕೋರ್ ಮತ್ತು ಹಂಚಿದ-ತಜ್ಞ ಫಲಿತಾಂಶದೊಂದಿಗೆ ಎಕ್ಸ್‌ಪರ್ಟ್ ಔಟ್‌ಪುಟ್ ಪ್ರೊಜೆಕ್ಷನ್; ಅಟೆನ್ಷನ್‌ಗೆ ಮುಂಚಿತವಾಗಿ ಕ್ಯೂರಿ ಮತ್ತು ಕೀ ತಯಾರಿ; ಮತ್ತು ಅದರ ನಾರ್ಮಲೈಸೇಶನ್‌ನೊಂದಿಗೆ ಮರುಕಳಿಸುವ ನವೀಕರಣ. ಪ್ರತಿ ಫ್ಯೂಸ್ಡ್ ಕರ್ನಲ್ ತಾತ್ಕಾಲಿಕ ಮೌಲ್ಯಗಳನ್ನು ಮೆಮೊರಿ ಮೂಲಕ ಕಳುಹಿಸುವ ಬದಲು ರಿಜಿಸ್ಟರ್‌ಗಳಲ್ಲಿ ಇರಿಸುತ್ತದೆ.

ಫ್ಯೂಷನ್ ಡಿಪೆಂಡೆನ್ಸಿ ಗ್ರಾಫ್ ಅನ್ನು ಸಹ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ: ಮಧ್ಯಂತರ ಬರವಣಿಗೆ ಕಣ್ಮರೆಯಾದಾಗ, ಅದರ ಗ್ರಾಹಕರನ್ನು ರಕ್ಷಿಸಿದ ತಡೆಗೋಡೆಯೂ ಕಣ್ಮರೆಯಾಗುತ್ತದೆ.

ಅಟೆನ್ಷನ್ ಕಾಶ್ ಅನ್ನು ಸಮರ್ಥವಾಗಿ ಓದಿ

ಅಟೆನ್ಷನ್-ಕಾಶ್ ಓದುವಿಕೆಗಳನ್ನು ಕೋಲಸ್ ಮಾಡಿ

ಅಟೆನ್ಷನ್ ಪ್ರತಿ ಡಿಕೋಡ್ ಹಂತದ ಸಮಯದಲ್ಲಿ KV ಕಾಶ್‌ನಿಂದ ಕೀಗಳು ಮತ್ತು ಮೌಲ್ಯಗಳನ್ನು ಓದುತ್ತದೆ. ಅಬ್ಲೇಶನ್‌ನಲ್ಲಿ, ಪಕ್ಕದ GPU ಥ್ರೆಡ್‌ಗಳು ಯಾವಾಗಲೂ ಪಕ್ಕದ ಬೈಟ್‌ಗಳನ್ನು ಕೋರುವುದಿಲ್ಲ, ಇದು ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ ಹೆಚ್ಚು ಪ್ರತ್ಯೇಕ ವಿನಂತಿಗಳನ್ನು ಪೂರೈಸುವಂತೆ ಒತ್ತಾಯಿಸುತ್ತದೆ. ಒಮ್ಮುಖ ಲೋಡ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಪಕ್ಕದ ಥ್ರೆಡ್‌ಗಳು ಪಕ್ಕದ ಬೈಟ್‌ಗಳನ್ನು ಕೋರುವಂತೆ ಮಾಡುತ್ತದೆ ಇದರಿಂದ ಹಾರ್ಡ್‌ವೇರ್ ಅವುಗಳ ಓದುವಿಕೆಗಳನ್ನು ಸಂಯೋಜಿಸಬಹುದು.

bfloat16 ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ, ಕೋಲಾಸಿಂಗ್ ಕೀ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ ಅನ್ನು 33.8 ರಿಂದ 47.9 GB/s ಗೆ ಹೆಚ್ಚಿಸಿದೆ, ವ್ಯಾಲ್ಯೂ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ ಅನ್ನು 42.0 ರಿಂದ 61.8 GB/s ಗೆ ಹೆಚ್ಚಿಸಿದೆ, ಮತ್ತು 3,840-ಟೋಕನ್ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್‌ನಲ್ಲಿ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಡಿಕೋಡ್ ಅನ್ನು 2.1% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ.

KV ಸಾಲುಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳನ್ನು ಪ್ಯಾಕ್ ಮಾಡಿ

ಗ್ರೂಪ್ಡ್-ಕ್ವೇರಿ ಅಟೆನ್ಷನ್ ಎಂಟು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳಿಗೆ ಒಂದು KV ಹೆಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ. ಅಬ್ಲೇಶನ್‌ನಲ್ಲಿ, ಪ್ರತಿಯೊಂದು ಕ್ಯೂರಿ ಹೆಡ್ ಪ್ರತ್ಯೇಕ ಸಿಮ್‌ಡ್‌ಗ್ರೂಪ್‌ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಎಲ್ಲಾ ಎಂಟು ಹೆಡ್‌ಗಳು ಸ್ವತಂತ್ರವಾಗಿ ಒಂದೇ ಕಾಶ್ ಮಾಡಿದ KV ಸಾಲನ್ನು ಕೋರುತ್ತವೆ. ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಕರ್ನಲ್ ನಾಲ್ಕು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳನ್ನು ಒಂದು ಥ್ರೆಡ್‌ಗ್ರೂಪ್‌ಗೆ ಪ್ಯಾಕ್ ಮಾಡುತ್ತದೆ, ಇದು ಪ್ರತಿ KV ಸಾಲನ್ನು ಒಮ್ಮೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಾಲ್ಕು ಅಟೆನ್ಷನ್ ಲೆಕ್ಕಾಚಾರಗಳಲ್ಲಿ ಅದನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ. ಎರಡನೇ ಥ್ರೆಡ್‌ಗ್ರೂಪ್ ಉಳಿದ ನಾಲ್ಕು ಹೆಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.

ಸಾಮಾನ್ಯವಾಗಿ GQA ಪ್ಯಾಕಿಂಗ್ ಎಂದು ಕರೆಯಲ್ಪಡುವ ಈ ತಂತ್ರವು ಅದೇ ಅರಿತ್ಮೆಟಿಕ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಎಂಟು ಸ್ವತಂತ್ರ KV ವಿನಂತಿಗಳನ್ನು ಎರಡು ಹಂಚಿದ ಲೋಡ್‌ಗಳಿಗೆ ಕಡಿಮೆ ಮಾಡುವಾಗ ಒಂದೇ ರೀತಿಯ ಔಟ್‌ಪುಟ್ ಬೈಟ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಅನ್‌ಪ್ಯಾಕ್ ಮಾಡಿದ ಅಬ್ಲೇಶನ್ ವಿರುದ್ಧ, ಇದು 32K-ಟೋಕನ್ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್‌ನಲ್ಲಿ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಡಿಕೋಡ್ ಥ್ರೂಪುಟ್ ಅನ್ನು 23.8% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ.

ದೀರ್ಘ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್‌ಗಳಲ್ಲಿ ಅಟೆನ್ಷನ್ ಲೇಔಟ್‌ಗಳನ್ನು ಬದಲಿಸಿ

ಪೂರ್ಣ-ಅಟೆನ್ಷನ್ ಲೇಯರ್‌ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಡಿಕೋಡ್ ಹಂತವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ KV ಕಾಶ್ ಅನ್ನು ಸ್ಕಾನ್ ಮಾಡುತ್ತದೆ. ಸ್ಥಿರ-ಬ್ಲಾಕ್ ಲೇಔಟ್ ಆ ಕಾಶ್ ಅನ್ನು ಸಮಾನ ತುಂಡಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ ಅದನ್ನು GPU ಸಮಾನಾಂತರವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು. ಕಾಶ್ ಚಿಕ್ಕದಾಗಿದ್ದಾಗ ಅದರ ಹೆಚ್ಚುವರಿ ವೇಳಾಪಟ್ಟಿಯು ಯೋಗ್ಯವಾಗಿರುವುದಿಲ್ಲ, ಆದರೆ ಕಾನ್ಟೆಕ್ಸ್ಟ್ ಬೆಳೆದಂತೆ ಸ್ಥಿರ-ಬ್ಲಾಕ್ ಲೇಔಟ್ ಕೆಲಸವನ್ನು ಹೆಚ್ಚು ಸಮವಾಗಿ ಸಮತೋಲನಗೊಳಿಸುತ್ತದೆ.

ಈ ಮಾದರಿಗಾಗಿ, ರನ್‌ಟೈಮ್ ಸಾಮಾನ್ಯ ಗಮನದ ಮಾರ್ಗವನ್ನು 32K ಟೋಕನ್‌ಗಳ ಕೆಳಗೆ ಇರಿಸುತ್ತದೆ ಮತ್ತು 32K ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಸಮಯದಲ್ಲಿ ಸ್ಥಿರ-ಬ್ಲಾಕ್ ಮಾರ್ಗವನ್ನು ಬಳಸುತ್ತದೆ. ಪ್ರತಿ ಹೆಡ್ 256 ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರುವಾಗ ಮತ್ತು ಎಂಟು ಕ್ಯೂರಿ ಹೆಡ್‌ಗಳು KV ಹೆಡ್ ಅನ್ನು ಹಂಚಿಕೊಂಡಾಗ ಸ್ವಿಚ್ ಅನ್ವಯಿಸುತ್ತದೆ; ಇತರ ಆಕಾರಗಳು ಸಾಮಾನ್ಯ ಮಾರ್ಗದಲ್ಲಿ ಉಳಿಯುತ್ತವೆ. ಅಬ್ಲೇಶನ್ ಈ ಸ್ವಿಚ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಯಾವಾಗಲೂ ಸಾಮಾನ್ಯ ಮಾರ್ಗವನ್ನು ಬಳಸುತ್ತದೆ. ಸ್ಥಿರ-ಬ್ಲಾಕ್ ಮಾರ್ಗವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು 32K ನಲ್ಲಿ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಡಿಕೋಡ್ ಅನ್ನು 7.7%, 64K ನಲ್ಲಿ 27.4%, ಮತ್ತು 128K ನಲ್ಲಿ 40.2% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ.

ಮ A further optimization limits

ಕೆಲವು ಬದಲಾವಣೆಗಳು ಪ್ರತ್ಯೇಕ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಸುಧಾರಿಸಿದವು ಆದರೆ ಎಂಡ್-ಟೋ-ಎಂಡ್ ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ಸುಧಾರಿಸಲಿಲ್ಲ.

ಸ್ಪೆಕ್ಯುಲೇಟಿವ್ ಡಿಕೋಡಿಂಗ್, ಇದು ಪೂರ್ಣ ಮಾದರಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಟೋಕನ್‌ಗಳನ್ನು ಪ್ರಸ್ತಾಪಿಸಲು ಸಣ್ಣ ಮಾದರಿಯನ್ನು ಬಳಸುತ್ತದೆ, ಬ್ಯಾಚ್-1 ಡಿಕೋಡ್ ಅನ್ನು 18% ನಿಧಾನಗೊಳಿಸಿದೆ. ಪರಿಶೀಲನೆಯು ಎರಡರಿಂದ ಐದು ಸಾಲುಗಳ ಗುಂಪುಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದೆ, ಈ ಹಾರ್ಡ್‌ವೇರ್‌ಗೆ ಅಸಮರ್ಥ ಆಕಾರವಾಗಿದೆ, ಮತ್ತು ಸಾಲುಗಳು প্রায়শই ವಿಭಿನ್ನ ತಜ್ಞರನ್ನು ಆಯ್ಕೆ ಮಾಡಿವೆ, ಓದಲಾದ ಎಕ್ಸ್‌ಪರ್ಟ್-ವೇಟ್ ಡೇಟಾದ ಪ್ರಮಾಣವನ್ನು ಹೆಚ್ಚಿಸಿವೆ. ಡ್ರಾಫ್ಟರ್‌ನ ಔಟ್‌ಪುಟ್ ಶಬ್ದಕೋಶವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಡ್ರಾಫ್ಟರ್ ಥ್ರೂಪುಟ್ ಅನ್ನು 4.7-5.1% ರಷ್ಟು ಸುಧಾರಿಸಿದೆ, ಆದರೆ ಸಂಪೂರ್ಣ ಸ್ಪೆಕ್ಯುಲೇಟಿವ್ ಲೂಪ್ ಅನ್ನು ವೇಗವಾಗಿ ಮಾಡಲಿಲ್ಲ. ಈ ಫಲಿತಾಂಶವು ಕೆಲಸದ ಹೊರೆ-ನಿರ್ದಿಷ್ಟವಾಗಿದೆ: ಬ್ಲ್ಯಾಕ್‌ವೆಲ್‌ನಲ್ಲಿ ನಮ್ಮ ಬ್ಯಾಚ್ಡ್ Qwen ನಿಯೋಜನೆಯು ವಿಭಿನ್ನ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಸ್ಪೆಕ್ಯುಲೇಟಿವ್ ಡಿಕೋಡಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.

ಇತರ ಪ್ರಯೋಗಗಳು GPU ಪ್ರಾರಂಭಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು, ಸಂಪೂರ್ಣ ಹಂತಗಳನ್ನು ಅತಿ ವ್ಯಾಪಿಸುವುದು, ದೊಡ್ಡ ಪ್ರಿಫಿಲ್ ಟೈಲ್‌ಗಳನ್ನು ಬಳಸುವುದು, ವಿಶಾಲವಾದ ಫ್ಯೂಷನ್ ಅನ್ನು ಅನ್ವಯಿಸುವುದು, ರೂಟರ್ ಅನ್ನು ವೇಗಗೊಳಿಸುವುದು ಮತ್ತು ಔಟ್‌ಪುಟ್ ಪ್ರೊಜೆಕ್ಷನ್ ಅನ್ನು ಟೋಕನ್ ಆಯ್ಕೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದನ್ನು ಒಳಗೊಂಡಿವೆ. ಯಾವುದು ಸಂಪೂರ್ಣ ಇನ್ಫರೆನ್ಸ್ ಲೂಪ್ ಅನ್ನು ಸುಧಾರಿಸಲಿಲ್ಲ.

ಹಾರ್ಡ್‌ವೇರ್ ಮಿತಿಗಳ ಅಳತೆಗಳು ಮುಖ್ಯ ಪ್ರಿಫಿಲ್ ಮತ್ತು ಡಿಕೋಡ್ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಸ್ವಲ್ಪವೇ ಉಳಿದಿರುವ ಹೆಡ್‌ರೂಮ್ ಅನ್ನು ಸಹ ತೋರಿಸಿವೆ. MoE GEMM ಗಳು ಮತ್ತು GEMV ಗಳು ಅವುಗಳ ಪ್ರವೇಶ ಮಾದರಿಗಳಿಗಾಗಿ ವೇಗವಾದ ಸುಸ್ಥಿರ ತೂಕ-ಓದುವ ದರಗಳ 97.9% ಮತ್ತು 90.3% ಅನ್ನು ತಲುಪಿದವು. ವಿರಳವಾದ GEMV ಯಿಂದ ಅರಿತ್ಮೆಟಿಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದು ಥ್ರೂಪುಟ್ ಅನ್ನು ಕೇವಲ 0.2% ರಷ್ಟು ಬದಲಾಯಿಸಿತು, ಇದು ಗಣನೆಗಿಂತ ತೂಕದ ಓದುವಿಕೆಗಳು ಸೀಮಿತಗೊಳಿಸುವ ಸಂಪನ್ಮೂಲ2 ಎಂದು ದೃಢಪಡಿಸಿತು. ಪ್ರಿಫಿಲ್‌ನ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಗುಣಾಕಾರವು ಪ್ರತ್ಯೇಕವಾಗಿ ಸೈದ್ಧಾಂತಿಕ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮಿತಿಯ 93% ಅನ್ನು ಮತ್ತು ಪರೀಕ್ಷಿಸಿದ ಮಾದರಿಗಳ ಒಳಗೆ 80-86% ಅನ್ನು ತಲುಪಿದೆ.

ಎಂಡ್-ಟೋ-ಎಂಡ್ ಕಾರ್ಯಕ್ಷಮತೆ

ಎಂಡ್-ಟೋ-ಎಂಡ್ ಹೋಲಿಕೆಯು ಎರಡೂ ಎಂಜಿನ್‌ಗಳಲ್ಲಿ ಒಂದೇ ರೀತಿಯ 4-ಬಿಟ್ ಚೆಕ್‌ಪಾಯಿಂಟ್ ಬೈಟ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಒಂದು 40-ಕೋರ್, 128 GB M5 Max ನಲ್ಲಿ ಏಕಕಾಲದಲ್ಲಿ ಒಂದು ವಿನಂತಿಯನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಪ್ರತಿ ಸುತ್ತಿನೊಳಗೆ, ಹಿನ್ನೆಲೆ ಲೋಡ್ ಮತ್ತು ಚಿಪ್ ತಾಪಮಾನದಲ್ಲಿನ ಬದಲಾವಣೆಗಳಿಂದ ಪಕ್ಷಪಾತವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಎರಡು ಎಂಜಿನ್‌ಗಳು ಪರ್ಯಾಯ ಕ್ರಮದಲ್ಲಿ ರನ್ ಆಗುತ್ತವೆ. ನಾವು MLX-LM ನ ವೇಗವಾದ ನೇರ-ಉತ್ಪಾದನಾ ಮಾರ್ಗದ ವಿರುದ್ಧ ಹೋಲಿಸುತ್ತೇವೆ, ಅದರ ಸರ್ವರ್ ಅಲ್ಲ, ಆದ್ದರಿಂದ ಅಳತೆಯು ಸರ್ವಿಂಗ್ ಓವರ್‌ಹೆಡ್ಗಿಂತ ಮಾದರಿ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ.

ಸ್ವೀಪ್ 256 ರಿಂದ 128K ಟೋಕನ್‌ಗಳವರೆಗೆ ಪ್ರಿಫಿಲ್‌ಗಾಗಿ ಹತ್ತು ಪ್ರಾಂಪ್ಟ್ ಉದ್ದಗಳನ್ನು ಮತ್ತು ಡಿಕೋಡ್‌ಗಾಗಿ ಹತ್ತು ಕಾನ್‌ಟೆಕ್ಸ್ಟ್ ಉದ್ದಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಎಂಜಿನ್ ಹೆಚ್ಚಿನ ಟೋಕನ್‌ಗಳಲ್ಲಿ ಸ್ಥಿರ ಸೆಟಪ್ ವೆಚ್ಚಗಳನ್ನು ಹರಡುವುದರಿಂದ ಪ್ರಿಫಿಲ್ ಥ್ರೂಪುಟ್ ಮೊದಲು ಏರುತ್ತದೆ. ಪ್ರಿಫಿಲ್ 4K-ಟೋಕನ್ ಪ್ರಾಂಪ್ಟ್ ಸುತ್ತಲೂ ಗರಿಷ್ಠ ತಲುಪುತ್ತದೆ, ನಂತರ ಕುಸಿಯುತ್ತದೆ ಏಕೆಂದರೆ ಪ್ರಾಂಪ್ಟ್ ಬೆಳೆದಂತೆ ಹತ್ತು ಪೂರ್ಣ-ಅಟೆನ್ಷನ್ ಲೇಯರ್‌ಗಳು ಹೆಚ್ಚಿನ ಕೆಲಸವನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಚಿಕ್ಕ ಕಾನ್‌ಟೆಕ್ಸ್ಟ್‌ಗಳಲ್ಲಿ ಡಿಕೋಡ್ quase ಸಮತಟ್ಟಾಗಿ ಉಳಿಯುತ್ತದೆ ಮತ್ತು ಬೆಳೆಯುತ್ತಿರುವ KV ಕಾಶ್ ಅನ್ನು ಓದುವುದು ಮಹತ್ವದ್ದಾದ ನಂತರ ಕುಸಿಯುತ್ತದೆ. ಕಸ್ಟಮ್ ಎಂಜಿನ್ ಪ್ರತಿ ರೆಕಾರ್ಡ್ ಮಾಡಿದ ಉದ್ದದಲ್ಲಿ ವೇಗವಾಗಿರುತ್ತದೆ.

ವಿಶೇಷವಾದ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಕ್ರಮವನ್ನು ಬದಲಾಯಿಸಬಹುದಾದ ಕಾರಣ, ನಾವು MLX-LM ವಿರುದ್ಧ ಸಂಖ್ಯಾತ್ಮಕ ಸ್ಥಿರತೆಯನ್ನು ಸಹ ಪರಿಶೀಲಿಸಿದ್ದೇವೆ. ಟೀಚರ್-ಫೋರ್ಸ್ಡ್ ಹೋಲಿಕೆಯಲ್ಲಿ, ಎರಡೂ ಎಂಜಿನ್‌ಗಳು 192 ಸ್ಥಾನಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದರಲ್ಲೂ ಒಂದೇ ಉಲ್ಲೇಖ ಮುನ್ಸೂಚನೆಯಿಂದ ಮುಂದಿನ ಟೋಕನ್ ಅನ್ನು ಊಹಿಸಿವೆ, ಹಿಂದಿನ ವ್ಯತ್ಯಾಸಗಳು ನಂತರದ ಇನ್‌ಪುಟ್‌ಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರದಂತೆ ತಡೆಯುತ್ತವೆ. ಲಿಲಿಯ ಪೆರ್ಪ್ಲೆಕ್ಸಿಟಿ ಕೇವಲ 0.04% ಹೆಚ್ಚಾಗಿದೆ, ಮತ್ತು ಇದು ಪರೀಕ್ಷಿಸಿದ ಸ್ಥಾನಗಳ 96.35% ರಲ್ಲಿ ಅದೇ ಟಾಪ್-ರ್ಯಾಂಕ್ಡ್ ಟೋಕನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದೆ.

Qwen3.6-35B-A3B Q4, ಬ್ಯಾಚ್ 1, ಒಂದೇ 40-ಕೋರ್, 128 GB M5 Max ಮೇಲೆ, ಪ್ರಾಂಪ್ಟ್ ಉದ್ದದ ಪ್ರಕಾರ ಪ್ರಿಫಿಲ್ ತ್ರುಪುಟ್ ಮತ್ತು ಕಾನ್ಟೆಕ್ಸ್ಟ್ ಉದ್ದದ ಪ್ರಕಾರ ಡಿಕೋಡ್ ತ್ರುಪುಟ್. 256 ರಿಂದ 128K ಟೋಕನ್‌ಗಳವರೆಗೆ ಇರುವ ಹತ್ತು ಉದ್ದಗಳಾದ್ಯಂತ, ದಾಖಲಿಸಿದ ಪ್ರತಿಯೊಂದು ಬಿಂದುವಿನಲ್ಲೂ Lily ವೇಗವಾಗಿದೆ: MLX-LM‌ನ ಪ್ರಿಫಿಲ್ ತ್ರುಪುಟ್‌ಗೆ 1.13–1.50× ಮತ್ತು ಅದರ ಡಿಕೋಡ್ ತ್ರುಪುಟ್‌ಗೆ 1.26–1.34×. ಈ ಹೋಲಿಕೆ MLX-LM‌ನ ಅತ್ಯಂತ ವೇಗದ ನೇರ-ಜನರೇಶನ್ ಮಾರ್ಗವನ್ನು ಬಳಸುತ್ತದೆ. ಎರಡೂ ಅಡ್ಡ ಅಕ್ಷಗಳು ಲಾಗರಿಥ್ಮಿಕ ಮಾಪಕಗಳನ್ನು ಬಳಸುತ್ತವೆ; ಯಾವ ಲಂಬ ಅಕ್ಷವೂ ಶೂನ್ಯದಿಂದ ಆರಂಭವಾಗುವುದಿಲ್ಲ.

ಸ್ಥಳೀಯ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ

ಆಪಲ್ ಸಿಲಿಕಾನ್ ಚಿಕ್ಕ ಡೇಟಾ ಕೇಂದ್ರ GPU ಅಲ್ಲ. ಇದು ತನ್ನದೇ ಆದ ಹಾರ್ಡ್‌ವೇರ್ ಮತ್ತು ಸಾಫ್ಟ್‌ವೇರ್ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿರುವ ಸಂಪೂರ್ಣ ಸ್ಥಳೀಯ ಇನ್ಫರೆನ್ಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಆಗಿದೆ. ಯೂನಿಫೈಡ್ ಮೆಮೊರಿಯು ಏಕೈಕ ನೋಡ್‌ಗೆ ಎಷ್ಟು ಮಾದರಿ ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಹುದು ಎಂಬುದರ ಮೇಲೆ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಮಿತಿಯನ್ನು ನೀಡುತ್ತದೆ. M5 ನ್ಯೂರಲ್ ಆಕ್ಸಿಲರೇಟರ್‌ಗಳು ಪ್ರಿಫಿಲ್‌ನಲ್ಲಿ ದಟ್ಟವಾದ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಕೆಲಸವನ್ನು ಹೀರಿಕೊಳ್ಳುತ್ತವೆ. ವೆಕ್ಟರ್ ALU ಗಳು ಡಿಕೋಡ್‌ನಲ್ಲಿ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್-ಬೌಂಡ್, ಕಡಿಮೆ-ಮರುಬಳಕೆ ಉಳಿದ ಭಾಗವನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ.

Qwen ವಿಶೇಷತೆಗಾಗಿ ಹೆಚ್ಚಿನ ಅವಕಾಶಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ: ತಜ್ಞರ ರೂಟಿಂಗ್ ಮತ್ತು ಮರುಕಳಿಸುವ ಸ್ಥಿತಿಯನ್ನು GPU ನಲ್ಲಿ ಇರಿಸಿ, ಅನಗತ್ಯ ಮಧ್ಯಂತರಗಳನ್ನು ತೆಗೆದುಹಾಕಿ, ಸ್ವತಂತ್ರ ಕೆಲಸವನ್ನು ಅತಿ ವ್ಯಾಪಿಸಿ, ಹಂಚಿದ KV ಡೇಟಾವನ್ನು ಮರುಬಳಕೆ ಮಾಡಿ ಮತ್ತು ಕೆಲಸದ ಹೊರೆ ಆಕಾರಕ್ಕೆ ಕರ್ನಲ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ.

ಮಾದರಿ- ಮತ್ತು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್-ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನೊಂದಿಗೆ, ಒಂದು ಮ್ಯಾಕ್ ದೊಡ್ಡ ವಿರಳವಾದ ಮಾದರಿಯನ್ನು ಸಮರ್ಥವಾಗಿ ರನ್ ಮಾಡಬಹುದು. ಭವಿಷ್ಯದ ಕೆಲಸವು ಮಾದರಿಗಳು, ಚಿಪ್‌ಗಳು ಮತ್ತು ಸೇವಾ ಕೆಲಸದ ಹೊರೆಗಳಾದ್ಯಂತ ವ್ಯಾಪ್ತಿಯನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ ಮತ್ತು ಇಲ್ಲಿ ಒಂದು ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾದ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಹೆಚ್ಚು ಸಾಮಾನ್ಯವಾದ ರನ್‌ಟೈಮ್ ನೀತಿಯಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.

ವ್ಯಕ್ತಪಡಿಸಿದ ವಿಶಾಲ ತತ್ವವೆಂದರೆ ಎಂಜಿನ್ ಅನ್ನು ಮಾದರಿಯ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್‌ನ ನಿರ್ದಿಷ್ಟ ಗಣನೆ ಮತ್ತು ಮೆಮೊರಿ ಮಾರ್ಗಗಳೆರಡಕ್ಕೂ ಹೊಂದಿಸುವುದು. ಗಡಿ ಓಪನ್-ವೇಟ್ ಮಾದರಿಗಳು ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್ ವಿಕಸನಗೊಳ್ಳುತ್ತಿದ್ದಂತೆ, ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಸ್ಥಳೀಯ ಇನ್ಫರೆನ್ಸ್‌ಗಳು ಅವುಗಳ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅಮೂರ್ತಗೊಳಿಸುವ ಬದಲು ಎರಡಕ್ಕೂ ಅನುಗುಣವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಎಂಜಿನ್‌ಗಳನ್ನು ಹೆಚ್ಚು ಅವಲಂಬಿಸಿರುತ್ತದೆ.

ಉಲ್ಲೇಖ

BibTeX
@online{perplexity2026OptimizingOnDeviceInferenceForAppleSilicon,
  author = {{Perplexity} and Yibo Wu and Lequn Chen and Kevin Hu and Phi Hoang and Claire Beamer and Jeremy Yang and Denis Yarats},
  title = {{Optimizing on-device inference for Apple Silicon}},
  date = {2026-09-01},
  url = {https://www.perplexity.ai/hub/blog/optimizing-on-device-inference-for-apple-silicon}
}