LiteRT.js, TensorFlow.js ಅನ್ನು ಹಿಂದಿಕ್ಕುತ್ತಿದೆ

WebGPU ನೊಂದಿಗೆ LiteRT.js, MobileNetV2 ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು 0.41 ms ನಲ್ಲಿ ನಡೆಸುತ್ತದೆ, ಇದು M2 Max ડેಸ್ಕ್‌ಟಾಪ್ GPU ಮೇಲೆ 2,439 FPS ಅನ್ನು ನೀಡುತ್ತದೆ—ಇದು ಅದೇ ಹಾರ್ಡ್‌ವೇರ್‌ನಲ್ಲಿರುವ TensorFlow.js ಗಿಂತ 25 × ಕ್ಕಿಂತ ಹೆಚ್ಚು ವೇಗವಾಗಿದೆ. ದೊಡ್ಡ ಮಾಡೆಲ್‌ಗಳ ವಿಷಯದಲ್ಲಿ ಈ ಅಂತರವು ಮತ್ತಷ್ಟು ಹೆಚ್ಚಾಗುತ್ತದೆ, ಇದು ವೆಬ್-ಆಧಾರಿತ ಮಷೀನ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ಒಮ್ಮೆ ನೇಟಿವ್ ಆಪ್‌ಗಳಿಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿದ್ದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮಟ್ಟಕ್ಕೆ ಕೊಂಡೊಯ್ಯುತ್ತದೆ.

ಈ ಬೆಂಚ್‌ಮಾರ್ಕ್ ಏಕೆ ಮುಖ್ಯ

ಡೆವಲಪರ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ WebGL ಬ್ಯಾಕೆಂಡ್ ಮೂಲಕ ಸಾಧನದ ಮೇಲಿನ (on-device) ಇನ್ಫರೆನ್ಸ್‌ಗಾಗಿ TensorFlow.js ಅನ್ನು ಬಳಸುತ್ತಿದ್ದಾರೆ. WebGL ಟೆನ್ಸರ್ ಆಪರೇಷನ್‌ಗಳನ್ನು ಬ್ರೌಸರ್‌ನ 2-D ಗ್ರಾಫಿಕ್ಸ್ ಪೈಪ್‌ಲೈನ್‌ಗೆ ಮ್ಯಾಪ್ ಮಾಡುತ್ತದೆ; ಇದು ಎಲ್ಲೆಡೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಆದರೆ ಡೀಪ್-ಲರ್ನಿಂಗ್ ಮಾಡೆಲ್‌ಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ಬೃಹತ್ ಸಮಾಂತರತೆಯನ್ನು (parallelism) ಎದುರಿಸಲು ಇದನ್ನು ನಿರ್ಮಿಸಲಾಗಿಲ್ಲ. ಮುಂದಿನ ತಲೆಮಾರಿನ ಗ್ರಾಫಿಕ್ಸ್ API ಆದ WebGPU, GPU ಕಂಪ್ಯೂಟ್ ಯೂನಿಟ್‌ಗಳಿಗೆ ನೇರ ಪ್ರವೇಶವನ್ನು ನೀಡುತ್ತದೆ. TensorFlow-Lite ಮಾಡೆಲ್‌ಗಳಿಗಾಗಿ WebGPU-ಬ್ಯಾಕ್ಡ್ ಇನ್ಫರೆನ್ಸ್ ಇಂಜಿನ್ ಅನ್ನು ಪರಿಚಯಿಸಿದ ಮೊದಲ ಲೈಬ್ರರಿ LiteRT.js ಆಗಿದೆ, ಮತ್ತು Google ಇದು ಮೂರು ಪಟ್ಟು ವೇಗವನ್ನು ನೀಡುತ್ತದೆ ಎಂದು ವರದಿ ಮಾಡಿದೆ. ಸ್ವತಂತ್ರ ಪರೀಕ್ಷೆಗಳು ಇನ್ನೂ ಹೆಚ್ಚಿನ ಲಾಭವನ್ನು ತೋರಿಸುತ್ತಿದ್ದು, WebGPU ವೆಬ್ ML ಗಾಗಿ ಡಿಫಾಲ್ಟ್ ಮಾರ್ಗವಾಗುತ್ತದೆಯೇ ಎಂಬ ಪ್ರಶ್ನೆಯನ್ನು ಎತ್ತುತ್ತವೆ.

ಪರೀಕ್ಷೆಯನ್ನು ಹೇಗೆ ನಡೆಸಲಾಯಿತು

ನಾವು ಎರಡು ಇಮೇಜ್-ಕ್ಲಾಸಿಫಿಕೇಶನ್ ಮಾಡೆಲ್‌ಗಳನ್ನು—MobileNetV2 ಮತ್ತು EfficientNet-Lite4—ಬೆಂಚ್‌ಮಾರ್ಕ್ ಮಾಡಿದೆವು, ಇವೆರಡನ್ನೂ TensorFlow-Lite ಗೆ ಪರಿವರ್ತಿಸಲಾಗಿತ್ತು. ಪರೀಕ್ಷೆಗಳು Apple-silicon M2 Max ಚಿಪ್ ಮೇಲೆ ನಡೆದವು. ಪ್ರತಿ ಮಾಡೆಲ್‌ಗಾಗಿ ನಾವು ಅನೇಕ ಇಟರೇಶನ್‌ಗಳ ಮೂಲಕ ಒಂದೇ ಫಾರ್ವರ್ಡ್ ಪಾಸ್‌ನ ವಿಳಂಬವನ್ನು (latency) ಅಳೆದು, ಫ್ರೇಮ್ಸ್-ಪರ್-ಸೆಕೆಂಡ್ (FPS) ಅನ್ನು ವರದಿ ಮಾಡಿದೆವು. ನಾವು ಅದೇ ಮಾಡೆಲ್‌ಗಳನ್ನು WebGL ಬ್ಯಾಕೆಂಡ್‌ನಲ್ಲಿ TensorFlow.js ನೊಂದಿಗೆ ಚಲಾಯಿಸಿದೆವು ಮತ್ತು ಪ್ರತಿ ಲೈಬ್ರರಿಯ ಕೋಲ್ಡ್-ಸ್ಟಾರ್ಟ್ ಸಮಯವನ್ನು ದಾಖಲಿಸಿದೆವು.

ಫಲಿತಾಂಶಗಳು: ವೇಗ ಮತ್ತು ಸ್ಟಾರ್ಟ್ಅಪ್

  • MobileNetV2

    • LiteRT.js (WebGPU): 0.41 ms ವಿಳಂಬ (latency) → 2,439 FPS
    • TensorFlow.js (WebGL): 10.82 ms ವಿಳಂಬ (latency) → 92 FPS
  • EfficientNet-Lite4

    • LiteRT.js (WebGPU): 0.62 ms ವಿಳಂಬ (latency) → 1,623 FPS
    • TensorFlow.js (WebGL): ವರದಿ ಮಾಡಲಾಗಿಲ್ಲ, ಆದರೆ MobileNetV2 ಈಗಾಗಲೇ >25× ಪ್ರಯೋಜನವನ್ನು ತೋರಿಸುತ್ತಿದೆ.

ಮೊದಲ ಇನ್ಫರೆನ್ಸ್‌ಗಿಂತ ಮೊದಲು ತನ್ನ WebGL ಶೇಡರ್‌ಗಳನ್ನು (shaders) ಕಾಂಪೈಲ್ ಮಾಡಲು TensorFlow.js ಗೆ ಸುಮಾರು 10 ಸೆಕೆಂಡುಗಳು (10,014 ms) ಬೇಕಾಯಿತು. LiteRT.js ಕೇವಲ 4.3 ms ನಲ್ಲಿ ಸಿದ್ಧವಾಯಿತು, ಇದು ಇಂಟರಾಕ್ಟಿವ್ ಆಪ್‌ಗಳಿಗೆ ಆಗುವ ಕೋಲ್ಡ್-ಸ್ಟಾರ್ಟ್ ತೊಂದರೆಯನ್ನು ಮೂಲತಃ ಇಲ್ಲದಂತೆ ಮಾಡಿದೆ.

ನಾವು ಮಾಡೆಲ್ ಗಾತ್ರವನ್ನು ಐದು ಪಟ್ಟು ಹೆಚ್ಚಿಸಿದಾಗ, ವಿಳಂಬವು ಕೇವಲ 50 % ರಷ್ಟು ಮಾತ್ರ ಹೆಚ್ಚಾಯಿತು, ಇದು GPU ನ ಸಮಾಂತರತೆಯನ್ನು (parallelism) ಹೆಚ್ಚಿನ ಕೆಲಸವನ್ನು ಸರಾಗವಾಗಿ ನಿಭಾಯಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಇದರ ಫಲಿತಾಂಶವೆಂದರೆ, ಬ್ರೌಸರ್ ಸರ್ವರ್‌ಗೆ ಹೋಗಿ ಬರದೆ (server round-trips) ರಿಯಲ್-ಟೈಮ್ ವಿಡಿಯೋ ಸ್ಟ್ರೀಮ್‌ಗಳು, AR ಓವರ್‌ಲೇಗಳು ಅಥವಾ ವಿಷನ್ ಮಾಡೆಲ್‌ಗಳ ವೇಗದ ಪ್ರೊಟೊಟೈಪಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುವ ಕಾರ್ಯಕ್ಷಮತೆಯ ಹೊಸ ಮೈಲಿಗಲ್ಲು.

ಅಂಕಿಅಂಶಗಳು ಏನೆಲ್ಲಾ ಮರೆಮಾಚುತ್ತವೆ

  • Batching – ಹೆಚ್ಚಿನ TensorFlow-Lite ಮಾಡೆಲ್‌ಗಳು ಬ್ಯಾಚ್ ಡೈಮೆನ್ಶನ್ ಅನ್ನು 1 ಕ್ಕೆ ಲಾಕ್ ಮಾಡುತ್ತವೆ. ಒಂದೇ ಕರೆಯಲ್ಲಿ (single call) ಹಲವಾರು ಚಿತ್ರಗಳನ್ನು ನೀಡುವುದನ್ನು ಇದು ನೇರವಾಗಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಇದರಿಂದಾಗಿ ಡೆವಲಪರ್‌ಗಳು Web Workers ಅನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ ಅಥವಾ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಪೈಪ್‌ಲೈನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
  • Memory management – LiteRT.js GPU ಟೆನ್ಸರ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಗಾರ್ಬೇಜ್-ಕಲೆಕ್ಟ್ ಮಾಡುವುದಿಲ್ಲ. ಡೆವಲಪರ್‌ಗಳು ತಾವು ರಚಿಸಿದ ಪ್ರತಿಯೊಂದು ಟೆನ್ಸರ್ ಮೇಲೆ .delete() ಅನ್ನು ಕರೆಯಲೇಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಕೆಲವು ನೂರಾರು ಇನ್ಫರೆನ್ಸ್‌ಗಳ ನಂತರ GPU ಮೆಮೊರಿ ಖಾಲಿಯಾಗುವ ಅಪಾಯವಿರುತ್ತದೆ.
  • Hardware reach – WebGPU ಎಂಬುದು ಡೆಸ್ಕ್‌ಟಾಪ್ Chrome ಮತ್ತು Firefox ನಲ್ಲಿ ಸ್ಥಿರವಾಗಿದೆ. ಮೊಬೈಲ್ ಬ್ರೌಸರ್‌ಗಳು—Android ನಲ್ಲಿನ Chrome ಮತ್ತು iOS ನಲ್ಲಿನ Safari ಸೇರಿದಂತೆ—ಈ API ಅನ್ನು ಕೇವಲ ಪ್ರಯೋಗಾತ್ಮಕ ಫ್ಲಾಗ್‌ಗಳ (experimental flags) ಮೂಲಕ ಅಥವಾ ಅ вообще ನೀಡುತ್ತಿಲ್ಲ. ಅಂತಹ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಲ್ಲಿ WASM ಬ್ಯಾಕೆಂಡ್ ಮಾತ್ರ ಸಾರ್ವತ್ರಿಕವಾಗಿ ಲಭ್ಯವಿರುವ ಮಾರ್ಗವಾಗಿದೆ, ಆದರೆ ಇದು ದೊಡ್ಡ ಮಾಡೆಲ್‌ಗಳಿಗೆ ಗಮನಾರ್ಹವಾಗಿ ನಿಧಾನವಾಗಿದೆ.

ಈ ನಿರ್ಬಂಧಗಳ ಅರ್ಥವೇನೆಂದರೆ, ಕೇವಲ ವೇಗವು ಆಕರ್ಷಕವಾಗಿದ್ದರೂ, ಅದನ್ನು ಸಾಧಿಸಲು ಬೇಕಾಗುವ ಎಂಜಿನಿಯರಿಂಗ್ ಪ್ರಯತ್ನವು ಸುಲಭವಾಗಿರುವುದಿಲ್ಲ.

ಮಿತಿಗಳು ಮತ್ತು ಹೊಂದಾಣಿಕೆಗಳು

TensorFlow.js ನ WebGL ಬ್ಯಾಕೆಂಡ್ ಇನ್ನೂ ಸಾರ್ವತ್ರಿಕ ಹೊಂದಾಣಿಕೆಯನ್ನು (compatibility) ನೀಡುತ್ತದೆ. ಡೆಸ್ಕ್‌ಟಾಪ್, Android, iOS ನಂತಹ ವಿವಿಧ ಬಳಕೆದಾರರನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಿರುವ ಡೆವಲಪರ್, ಕಡಿಮೆ ಕಾರ್ಯಕ್ಷಮತೆಯಿದ್ದರೂ ಸಹ ಎಲ್ಲೆಡೆ ಚಲಿಸುವ ಒಂದೇ ಕೋಡ್ ಪಥವನ್ನು ಅವಲಂಬಿಸಬಹುದು. WASM ಬ್ಯಾಕೆಂಡ್ ಬಹುತೇಕ ಎಲ್ಲಾ ಹಾರ್ಡ್‌ವೇರ್‌ಗಳ ಮೇಲೆ ಚಲಿಸುತ್ತದೆ ಆದರೆ ಇಲ್ಲಿ ಅಳೆಯಲಾದ ದೊಡ್ಡ ಮಾಡೆಲ್‌ಗಳ ವಿಷಯದಲ್ಲಿ WebGPU ಗಿಂತ ಹಿಂದೆ ಬೀಳುತ್ತದೆ.

WebGPU ಸಕ್ರಿಯಗೊಳಿಸಲಾದ ಡೆಸ್ಕ್‌ಟಾಪ್ ಪರಿಸರವನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಾಗ LiteRT.js ಅತ್ಯುತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು .tflite ಮಾಡೆಲ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಚಲಾಯಿಸುತ್ತದೆ, ಇದರಿಂದ ಡೆವಲಪರ್‌ಗಳು ಮಾಡೆಲ್‌ಗಳನ್ನು ಪರಿವರ್ತಿಸದೆ Hugging Face ಅಥವಾ Kaggle ನಿಂದ ನೇರವಾಗಿ ಪಡೆಯಬಹುದು, ಮತ್ತು ಮೂಲ ಕ್ವಾಂಟೈಸೇಶನ್ (quantization) ಹಾಗೂ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬಹುದು. ಆದರೆ ಇದರ ಮಿತಿಯೆಂದರೆ ಸೀಮಿತ ವಿತರಣಾ ವ್ಯಾಪ್ತಿ (deployment envelope) ಮತ್ತು ಸಂಪನ್ಮೂಲಗಳ (resources) ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆಯ ನಿರ್ವಹಣೆಯ ಅಗತ್ಯವಿದೆ.

ಡೆವಲಪರ್‌ಗಳು ಏನನ್ನು ಪರಿಗಣಿಸಬೇಕು

  • Target platform – ಕೇವಲ ವೆಬ್-ಆಧಾರಿತ ಡೆಸ್ಕ್‌ಟಾಪ್ ಟೂಲ್‌ಗಾಗಿ (ಉದಾಹರಣೆಗೆ, ರಿಯಲ್-ಟೈಮ್‌ನಲ್ಲಿ ಸ್ಟೈಲ್ ಟ್ರಾನ್ಸ್‌ಫರ್ ಅನ್ವಯಿಸುವ ಡಿಸೈನ್ ಆಪ್), LiteRT.js ನೊಂದಿಗೆ WebGPU ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯಾಗಬಹುದು.
  • Model size – ದೊಡ್ಡದಾದ, ಕಂಪ್ಯೂಟ್-ಭಾರೀ ಮಾಡೆಲ್‌ಗಳು GPU ಸಮಾಂತರತೆಯಿಂದ (parallelism) ಹೆಚ್ಚು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತವೆ; ಸಣ್ಣ ಮಾಡೆಲ್‌ಗಳಿಗೆ ಹೆಚ್ಚಿನ ಎಂಜಿನಿಯರಿಂಗ್ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ.
  • Memory discipline – ಟೆನ್ಸರ್ ಡಿ

LiteRT.js ಮೂಲಕ WebGPU ವೆಬ್-ಆಧಾರಿತ ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ಮಿಲಿಸೆಕೆಂಡ್‌ಗಿಂತಲೂ ಕಡಿಮೆ (sub-millisecond) ವೇಗಕ್ಕೆ ತಲುಪಿಸಬಲ್ಲದು ಎಂದು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ, ಇದು ಡೆಸ್ಕ್‌ಟಾಪ್ GPUಗಳಲ್ಲಿ TensorFlow.js ಗಿಂತ 25 × ಕ್ಕಿಂತ ಹೆಚ್ಚು ವೇಗವನ್ನು ನೀಡುತ್ತದೆ. ಈ ತಂತ್ರಜ್ಞಾನವು ಇನ್ನೂ ವಿಕಸನಗೊಳ್ಳುತ್ತಿದ್ದು, ಡೆವಲಪರ್‌ಗಳು ಬ್ಯಾಚಿಂಗ್ ಮಿತಿಗಳು, ಮ್ಯಾನುಯಲ್ ಮೆಮೊರಿ ಕ್ಲೀನಪ್ ಮತ್ತು ಸೀಮಿತ ಮೊಬೈಲ್ ಬೆಂಬಲದಂತಹ ಸವಾಲುಗಳನ್ನು ಎದುರಿಸಬೇಕಾಗುತ್ತದೆ. ರಿಯಲ್-ಟೈಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಬಯಸುವ ಡೆಸ್ಕ್‌ಟಾಪ್-ಪ್ರಥಮ ಅನುಭವಗಳಿಗಾಗಿ, ಈ ಹೊಸ ಲೈಬ್ರರಿಯು ಒಂದು ಆಕರ್ಷಕ ಹಾದಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ; ಕ್ರಾಸ್-ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ವ್ಯಾಪ್ತಿಗಾಗಿ, ಹಳೆಯ WebGL ಮತ್ತು WASM ಬ್ಯಾಕೆಂಡ್‌ಗಳು ಅತ್ಯಗತ್ಯವಾಗಿ ಉಳಿದಿವೆ.