研發背景
TensorFlow.js是由
谷歌開發的開源機器學習庫,於2018年3月30日在TensorFlow開發者峰會上正式發布。
TensorFlow.js面向
JavaScript開發者,旨在降低在Web和Node.js環境中進行
機器學習的門檻,允許開發者在瀏覽器和Node.js環境中訓練和部署機器學習模型。
發展歷程
2018年3月30日,在TensorFlow開發者峰會上,谷歌發布了面向JavaScript開發者的全新機器學習框架TensorFlow.js。TensorFlow.js是一個開源的用於開發機器學習項目的WebGL-accelerated JavaScript庫,允許開發者在瀏覽器中訓練和部署模型。
2020年,TensorFlow.js為
WebAssembly(WASM)後端引入了
SIMD(單指令多數據)指令和多執行緒支持(自版本2.3.0起),利用XNNPACK庫實現了顯著的性能提升,大幅增強了網頁端機器學習的開發效率。
2022年,TensorFlow.js發布了3.0版本。此次升級帶來了多項重要特性,包括支持創建自定義模組以最佳化打包體積、主要代碼以ES2017語法的ES模組形式發布、對核心包(@tensorflow/tfjs-core)進行了精簡以支持更好的tree-shaking,以及代碼重構以簡化核心和梯度註冊機制。
此後,TensorFlow.js持續進行版本疊代與功能更新。例如,在2024年10月發布了v4.22.0版本。
核心技術
TensorFlow.js是一個開源的硬體加速JavaScript庫,用於在瀏覽器和Node.js中訓練和部署機器學習模型。
核心概念:張量與運算
TensorFlow.js中數據的中央單元為tf.Tensor,是一組形狀為一維或多維數組的值,張量是向量和矩陣向更高維度的泛化。tf.Tensor包含秩(rank)、形狀(shape)和數據類型(dtype)屬性,可以使用tf.tensor()等方法創建,並使用reshape()等方法改變形狀。張量可用於存儲數據,而運算(Operations)則用於操作該數據,由於張量是不可變的,因此運算不會改變其值,而是返回新的tf.Tensor。
API分層設計
TensorFlow.js提供高低層API以適應不同開發需求,低級的Core API為神經網路和數值計算提供靈活的基礎功能,高級的Layers API則提供類似
Keras的模型構建接口以簡化開發。
計算後端
TensorFlow.js支持多種計算後端,環境會自動選擇或允許開發者手動設定。
WebGL後端(‘webgl’)在瀏覽器中提供GPU加速,是適用於瀏覽器的主要後端之一。WASM後端利用SIMD指令和XNNPACK多執行緒在CPU上提供加速,適用於小型模型或低端設備。CPU後端(‘cpu’)是純JavaScript實現,兼容性廣泛但性能較低。Node.js後端通過綁定TensorFlow C++庫在Node.js環境中提供原生性能,支持CPU和CUDA GPU。此外,TensorFlow.js還支持
WebGPU後端和React Native平台。
配套工具庫
TensorFlow.js生態系統包含多個關鍵工具庫,TensorFlow.js Data是用於數據載入和準備的API。TensorFlow.js Converter是用於將TensorFlow SavedModel或Keras模型轉換為TensorFlow.js格式的命令行工具和API。TensorFlow.js Vis是用於在瀏覽器中可視化模型訓練過程和行為的工具庫。TensorFlow.js AutoML是用於載入和運行AutoML Edge生成模型的API。
運營模式
TensorFlow.js是一個託管於GitHub的開源項目,接受社區貢獻。其核心庫及各功能模組主要通過NPM包管理器進行分發。項目的社區貢獻由TensorFlow.js特殊興趣小組(SIG TF.js)負責協調。
此外,項目擁有活躍的社區支持渠道,包括TensorFlow社區論壇、Stack Overflow問答板塊(使用tfjs標籤)以及僅發布公告的郵件列表等。
核心團隊
TensorFlow.js是由
谷歌大腦(Google Brain)團隊開發與維護的開源項目。其主要貢獻者包括蔡善清、斯坦利·比列斯奇和埃里克·D.尼爾森等谷歌大腦團隊的軟體工程師,他們是TensorFlow.js高階API的主要開發人員。此外,該項目擁有龐大的開發者社區,在GitHub上已有超過300名貢獻者。
重要事件
2018年3月30日,
谷歌在
TensorFlow開發者峰會上發布了面向
JavaScript開發者的全新機器學習框架TensorFlow.js,這是一個開源的用於開發機器學習項目的WebGL-accelerated JavaScript庫,能訓練並部署機器學習模型在瀏覽器中,被視為首個支持在瀏覽器中進行機器學習模型訓練和部署的主流JavaScript庫。
2020年,TensorFlow.js為WASM後端引入了
SIMD指令和多執行緒支持,從版本2.3.0起實現了顯著的性能提升。
2022年,TensorFlow.js升級至3.0版本,引入了包括支持創建自定義模組以最佳化包體積、主要代碼以ES2017語法的ES模組形式提供等變化。
TensorFlow.js通過發布微信小程式外掛程式等形式擴展了其套用平台,該外掛程式支持
WebGL、CPU及WASM後端,並支持模型快取。
2026年初,谷歌公布了TensorFlow.js 1.0版本,其性能得到進一步最佳化,例如為瀏覽器中的MobileNet v1推理帶來了9倍提升,並提供了更多現成模型。