設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

Keras 3.0 正式發(fā)布:大更新整合 PyTorch、JAX,全球 250 萬開發(fā)者在用

新智元 2023/11/29 15:28:12 責(zé)編:問舟

今天,備受廣大開發(fā)者歡迎的深度學(xué)習(xí)框架 Keras,正式更新了 3.0 版本,實現(xiàn)了對 PyTorch 和 JAX 的支持,同時性能提升,還能輕松實現(xiàn)大規(guī)模分布式訓(xùn)練。

經(jīng)過 5 個月的公開 Beta 測試,深度學(xué)習(xí)框架 Keras 3.0 終于面向所有開發(fā)者推出。

全新的 Keras 3 對 Keras 代碼庫進(jìn)行了完全重寫,可以在 JAX、TensorFlow 和 PyTorch 上運行,能夠解鎖全新大模型訓(xùn)練和部署的新功能。

「Keras 之父」Fran?ois Chollet 在最新版本發(fā)布之前,也是做了多次預(yù)告。目前,有 250 + 萬的開發(fā)者都在使用 Keras 框架。

重磅消息:我們剛剛發(fā)布了 Keras 3.0!

在 JAX、TensorFlow 和 PyTorch 上運行 Keras

使用 XLA 編譯更快地訓(xùn)練

通過新的 Keras 分發(fā) API 解鎖任意數(shù)量的設(shè)備和主機(jī)的訓(xùn)練運行

它現(xiàn)在在 PyPI 上上線

開發(fā)者甚至可以將 Keras 用作低級跨框架語言,以開發(fā)自定義組件,例如層、模型或指標(biāo)。

只需一個代碼庫,這些組件便可用在 JAX、TensorFlow、PyTorch 中的原生工作流。

再次讓 Keras 成為多后端

最初的 Keras 可以在 Theano、TensorFlow、CNTK,甚至 MXNet 上運行。

2018 年,由于 Theano 和 CNTK 已停止開發(fā),TensorFlow 似乎成為了唯一可行的選擇,于是,Keras 將開發(fā)重點放在了 TensorFlow 上。

而到了今年,情況發(fā)生了變化。

根據(jù) 2023 年 StackOverflow 開發(fā)者調(diào)查,和 2022 年 Kaggle 機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)調(diào)查等顯示,

TensorFlow 擁有 55% 到 60% 的市場份額,是 ML 在生產(chǎn)領(lǐng)域的首選。

而 PyTorch 擁有 40% 到 45% 的市場份額,是 ML 在研究領(lǐng)域的首選。

與此同時,JAX 雖然市場份額要小得多,但已被 Google DeepMind、Midjourney、Cohere 等生成式 AI 領(lǐng)域的頂級參與者所接受。

于是,開發(fā)團(tuán)隊對 Keras 代碼庫進(jìn)行了完全重寫,新誕生的 Keras 3.0 基于模塊化后端架構(gòu)進(jìn)行了重構(gòu),有能力在任意框架上運行。

同時新的 Keras 也保證了兼容性,比如在使用 TensorFlow 后端時,你可以簡單地使用 import keras_core as keras 來替換 from tensorflow import keras

—— 現(xiàn)有的代碼將毫無問題地運行,而且由于 XLA 編譯,通常性能略有提高。

Keras vs. TensorFlow

小編在這里給大家舉一個例子,說明如何從 TensorFlow 的代碼轉(zhuǎn)換成 Keras 的形式。

TensorFlow Core Implementation

Keras implementation

相比之下,我們可以清楚地看到 Keras 帶來的簡潔性。

TensorFlow 可以對每個變量進(jìn)行更精細(xì)的控制,而 Keras 提供了易用性和快速原型設(shè)計的能力。

對于一些開發(fā)者來說,Keras 省去了開發(fā)中的一些麻煩,降低了編程復(fù)雜性,節(jié)省了時間成本。

Keras 3.0 新特性

Keras 最大的優(yōu)勢在于,通過出色的 UX、API 設(shè)計和可調(diào)試性可實現(xiàn)高速開發(fā)。

而且,它還是一個經(jīng)過實戰(zhàn)考驗的框架,并為世界上一些最復(fù)雜、最大規(guī)模的 ML 系統(tǒng)提供支持,比如 Waymo 自動駕駛車、YouTube 推薦引擎。

那么,使用新的多后端 Keras 3 還有哪些額外的優(yōu)勢呢?

- 始終為模型獲得最佳性能。

在基準(zhǔn)測試中,發(fā)現(xiàn) JAX 通常在 GPU、TPU 和 CPU 上提供最佳的訓(xùn)練和推理性能,但結(jié)果因模型而異,因為非 XLA TensorFlow 在 GPU 上偶爾會更快。

它能夠動態(tài)選擇為模型提供最佳性能的后端,而無需對代碼進(jìn)行任何更改,這意味著開發(fā)者可以以最高效率進(jìn)行訓(xùn)練和服務(wù)。

- 為模型解鎖生態(tài)系統(tǒng)可選性。

任何 Keras 3 模型都可以作為 PyTorch 模塊實例化,可以作為 TensorFlow SavedModel 導(dǎo)出,也可以作為無狀態(tài) JAX 函數(shù)實例化。

這意味著開發(fā)者可以將 Keras 3 模型與 PyTorch 生態(tài)系統(tǒng)包,全系列 TensorFlow 部署和生產(chǎn)工具(如 TF-Serving,TF.js 和 TFLite)以及 JAX 大規(guī)模 TPU 訓(xùn)練基礎(chǔ)架構(gòu)一起使用。使用 Keras 3 API 編寫一個 model.py ,即可訪問 ML 世界提供的一切。

- 利用 JAX 的大規(guī)模模型并行性和數(shù)據(jù)并行性。

Keras 3 包含一個全新的分布式 API,即 keras.distribution 命名空間,目前已在 JAX 后端實現(xiàn)(即將在 TensorFlow 和 PyTorch 后端實現(xiàn))。

通過它,可以在任意模型尺度和聚類尺度上輕松實現(xiàn)模型并行、數(shù)據(jù)并行以及兩者的組合。由于它能將模型定義、訓(xùn)練邏輯和分片配置相互分離,因此使分發(fā)工作流易于開發(fā)和維護(hù)。

- 最大限度地擴(kuò)大開源模型版本的覆蓋面。

想要發(fā)布預(yù)訓(xùn)練模型?想讓盡可能多的人能夠使用它嗎?如果你在純 TensorFlow 或 PyTorch 中實現(xiàn)它,它將被大約一半的社區(qū)使用。

如果你在 Keras 3 中實現(xiàn)了它,那么任何人都可以立即使用它,無論他們選擇的框架是什么(即使他們自己不是 Keras 用戶)。在不增加開發(fā)成本的情況下實現(xiàn) 2 倍的影響。

- 使用來自任何來源的數(shù)據(jù)管道。

Keras 3 / fit () / evaluate () predict () 例程與 tf.data.Dataset 對象、PyTorch DataLoader 對象、NumPy 數(shù)組、Pandas 數(shù)據(jù)幀兼容 —— 無論你使用什么后端。你可以在 PyTorch DataLoader 上訓(xùn)練 Keras 3 + TensorFlow 模型,也可以在 tf.data.Dataset 上訓(xùn)練 Keras 3 + PyTorch 模型。

預(yù)訓(xùn)練模型

現(xiàn)在,開發(fā)者即可開始使用 Keras 3 的各種預(yù)訓(xùn)練模型。

所有 40 個 Keras 應(yīng)用程序模型( keras.applications 命名空間)在所有后端都可用。KerasCV 和 KerasNLP 中的大量預(yù)訓(xùn)練模型也適用于所有后端。

其中包括:

- BERT

- OPT

- Whisper

- T5

- Stable Diffusion

- YOLOv8

跨框架開發(fā)

Keras 3 能夠讓開發(fā)者創(chuàng)建在任何框架中都相同的組件(如任意自定義層或預(yù)訓(xùn)練模型),它允許訪問適用于所有后端的 keras.ops 命名空間。

Keras 3 包含 NumPy API 的完整實現(xiàn),—— 不是「類似 NumPy」,而是真正意義上的 NumPy API,具有相同的函數(shù)和參數(shù)。比如 ops.matmul、ops.sum、ops.stack、ops.einsum 等函數(shù)。

Keras 3 還包含 NumPy 中沒有的,一組特定于神經(jīng)網(wǎng)絡(luò)的函數(shù),例如 ops.softmax, ops.binary_crossentropy, ops.conv 等。

另外,只要開發(fā)者使用的運算,全部來自于 keras.ops ,那么自定義的層、損失函數(shù)、優(yōu)化器就可以跨越 JAX、PyTorch 和 TensorFlow,使用相同的代碼。

開發(fā)者只需要維護(hù)一個組件實現(xiàn),就可以在所有框架中使用它。

Keras 架構(gòu)

下面,我們來稍稍理解一下 Keras 的機(jī)制和架構(gòu)。

在 Keras 中,Sequential 和 Model 類是模型構(gòu)建的核心,為組裝層和定義計算圖提供了一個框架。

Sequential 是層的線性堆棧。它是 Model 的子類,專為簡單情況而設(shè)計,模型由具有一個輸入和一個輸出的線性層堆棧組成。

Sequential 類有以下一些主要特點:

簡單性:只需按照要執(zhí)行的順序列出圖層即可。

自動前向傳遞:當(dāng)向 Sequential 模型添加層時,Keras 會自動將每一層的輸出連接到下一層的輸入,從而創(chuàng)建前向傳遞,而無需手動干預(yù)。

內(nèi)部狀態(tài)管理:Sequential 管理層的狀態(tài)(如權(quán)重和偏置)和計算圖。調(diào)用 compile 時,它會通過指定優(yōu)化器、損失函數(shù)和指標(biāo)來配置學(xué)習(xí)過程。

訓(xùn)練和推理:Sequential 類提供了 fit、evaluate 和 predict 等方法,分別用于訓(xùn)練、評估和預(yù)測模型。這些方法在內(nèi)部處理訓(xùn)練循環(huán)和推理過程。

Model 類與函數(shù)式 API 一起使用,提供了比 Sequential 更大的靈活性。它專為更復(fù)雜的架構(gòu)而設(shè)計,包括具有多個輸入或輸出、共享層和非線性拓?fù)涞哪P汀?/p>

Model 類的主要特點有:

層圖:Model 允許創(chuàng)建層圖,允許一個層連接到多個層,而不僅僅是上一個層和下一個層。

顯式輸入和輸出管理:在函數(shù)式 API 中,可以顯式定義模型的輸入和輸出。相比于 Sequential,可以允許更復(fù)雜的架構(gòu)。

連接靈活性:Model 類可以處理具有分支、多個輸入和輸出以及共享層的模型,使其適用于簡單前饋網(wǎng)絡(luò)以外的廣泛應(yīng)用。

狀態(tài)和訓(xùn)練管理:Model 類管理所有層的狀態(tài)和訓(xùn)練過程,同時提供了對層的連接方式,以及數(shù)據(jù)在模型中的流動方式的更多控制。

Model 類和 Sequential 類都依賴于以下機(jī)制:

層注冊:在這些模型中添加層時,層會在內(nèi)部注冊,其參數(shù)也會添加到模型的參數(shù)列表中。

自動微分:在訓(xùn)練過程中,Keras 使用后端引擎(TensorFlow 等)提供的自動微分來計算梯度。這一過程對用戶而言是透明的。

后端執(zhí)行:實際計算(如矩陣乘法、激活等)由后端引擎處理,后端引擎執(zhí)行模型定義的計算圖。

序列化和反序列化:這些類包括保存和加載模型的方法,其中涉及模型結(jié)構(gòu)和權(quán)重的序列化。

從本質(zhì)上講,Keras 中的 Model 和 Sequential 類抽象掉了定義和管理計算圖所涉及的大部分復(fù)雜性,使用戶能夠?qū)W⒂谏窠?jīng)網(wǎng)絡(luò)的架構(gòu),而不是底層的計算機(jī)制。

Keras 自動處理各層如何相互連接、數(shù)據(jù)如何在網(wǎng)絡(luò)中流動以及如何進(jìn)行訓(xùn)練和推理操作等錯綜復(fù)雜的細(xì)節(jié)。

對于 Keras 的大更新,有網(wǎng)友使用下面的圖片表達(dá)自己的看法:

雖然小編也不知道為什么要炸 TensorFlow。

還有網(wǎng)友表示剛好可以用上:

另一位網(wǎng)友發(fā)來賀電,「在 PyTorch 之上使用 Keras 是一項了不起的成就!」

當(dāng)然也有網(wǎng)友唱反調(diào),「我想知道為什么有人會使用 Keras + Torch 而不是普通的 Torch,因為 Torch 與 Tensorflow 不同,它有一組很好的 API」。

此時 Tensorflow 的內(nèi)心:啊對對對,你們說得都對。

參考資料:

  • https://twitter.com/fchollet/status/1729512791894012011

  • https://keras.io/keras_3/

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:kerastensorflow,深度學(xué)習(xí)

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會買 要知