深度學習領域正在迅速發展,在處理各種類型的任務中,預訓練模型變得越來越重要。Keras 以其用戶友好型 API 和對易用性的重視而聞名,始終處于這一動向的前沿。Keras 擁有專用的內容庫,如用于文本模型的 KerasNLP 和用于計算機視覺模型的 KerasCV。
然而,隨著模型使各模態之間的界限越來越模糊(想象一下強大的聊天 LLM 具有圖像輸入功能或是在視覺任務中利用文本編碼器),維持這些獨立的領域變得不那么實際。NLP 和 CV 之間的區別可能會阻礙真正多模態模型的發展和部署,從而導致冗余的工作和碎片化的用戶體驗。
為了解決這個問題,我們很高興地宣布 Keras 生態系統迎來重大變革:隆重推出 KerasHub,一個統一、全面的預訓練模型庫,簡化了對前沿 NLP 和 CV 架構的訪問。KerasHub 是一個中央存儲庫,您可以在穩定且熟悉的 Keras 框架內無縫探索和使用最先進的模型,例如用于文本分析的 BERT 以及用于圖像分類的 EfficientNet。
KerasHub https://keras.io/keras_hub/
統一的開發者體驗
這種統一不僅簡化了對模型的探索和使用,還有助于打造更具凝聚力的生態系統。通過 KerasHub,您可以利用高級功能,例如輕松的發布和共享模型、用于優化資源效率的 LoRA 微調、用于優化性能的量化,以及用于處理大規模數據集的強大多主機訓練,所有這些功能都適用于各種模態。這標志著在普及強大的 AI 工具以及加速開發創新型多模態應用方面邁出了重要一步。
KerasHub 入門步驟
首先在您的系統上安裝 KerasHub,您可以在其中探索大量現成的模型和主流架構的不同實現方式。然后,您就可以輕松地將這些預訓練的模型加載并整合到自己的項目中,并根據您的具體需求對其進行微調,以獲得最佳性能。
現成的模型 https://keras.io/api/keras_hub/models/
安裝 KerasHub
要安裝帶有 Keras 3 的 KerasHub 最新版本,只需運行以下代碼:
$ pip install --upgrade keras-hub現在,您可以開始探索可用的模型。使用 Keras 3 開始工作的標準環境設置在開始使用 KerasHub 時并不需要任何改變:
import os # Define the Keras 3 backend you want to use - "jax", "tensorflow" or "torch" os.environ["KERAS_BACKEND"] = "jax" # Import Keras 3 and KerasHub modules import keras import keras_hub
通過 KerasHub 使用
計算機視覺和自然語言模型
現在,您可以通過 KerasHub 訪問和使用 Keras 3 生態系統中的模型。以下是一些示例:
Gemma
Gemma 是由 Google 開發的一系列前沿且易于使用的開放模型。依托于與 Gemini 模型相同的研究和技術,Gemma 的基礎模型在各種文本生成任務中表現出色,包括回答問題、總結信息以及進行邏輯推理。此外,您還可以針對特定需求自定義模型。
Gemma https://ai.google.dev/gemma/docs/base
在此示例中,您可以使用 Keras 和 KerasHub 加載并開始使用 Gemma 2 2B 參數生成內容。有關 Gemma 變體的更多詳細信息,請查看 Kaggle 上的 Gemma 模型卡。
# Load Gemma 2 2B preset from Kaggle models gemma_lm = keras_hub.models.GemmaCausalLM.from_preset("gemma_2b_en") # Start generating contents with Gemma 2 2B gemma_lm.generate("Keras is a", max_length=32)
Gemma 模型卡 https://www.kaggle.com/models/google/gemma/
PaliGemma
PaliGemma 是一款緊湊型的開放模型,可以理解圖像和文本。PaliGemma 從 PaLI-3 中汲取靈感,以 SigLIP 視覺模型和 Gemma 語言模型等開源組件為基礎,可以針對有關圖像的問題提供詳細且富有洞察力的答案。因此,該模型可以更深入地了解視覺內容,從而實現諸多功能,例如為圖像和短視頻生成描述、識別對象甚至理解圖像中的文本。
import os
# Define the Keras 3 backend you want to use - "jax", "tensorflow" or "torch"
os.environ["KERAS_BACKEND"] = "jax"
# Import Keras 3 and KerasHub modules
import keras
import keras_hub
from keras.utils import get_file, load_img, img_to_array
# Import PaliGemma 3B fine tuned with 224x224 images
pali_gemma_lm = keras_hub.models.PaliGemmaCausalLM.from_preset(
"pali_gemma_3b_mix_224"
)
# Download a test image and prepare it for usage with KerasHub
url = 'https://storage.googleapis.com/keras-cv/models/paligemma/cow_beach_1.png'
img_path = get_file(origin=url)
img = img_to_array(load_img(image_path))
# Create the prompt with the question about the image
prompt = 'answer where is the cow standing?'
# Generate the contents with PaliGemma
output = pali_gemma_lm.generate(
inputs={
"images": img,
"prompts": prompt,
}
)
PaliGemma https://ai.google.dev/gemma/docs/paligemma
PaLI-3 https://arxiv.org/abs/2310.09199
SigLIP 視覺模型 https://arxiv.org/abs/2303.15343
Gemma 語言模型 https://arxiv.org/abs/2403.08295
有關 Keras 3 上可用的預訓練模型的更多詳細信息,請在 Kaggle 上查看 Keras 中的模型列表。
Kaggle 上查看 Keras 中的模型列表 https://www.kaggle.com/organizations/keras/models
Stability.ai Stable Diffusion 3
您也可以使用計算機視覺模型。例如,您可以通過 KerasHub 使用 stability.ai Stable Diffusion 3:
from PIL import Image
from keras.utils import array_to_img
from keras_hub.models import StableDiffusion3TextToImage
text_to_image = StableDiffusion3TextToImage.from_preset(
"stable_diffusion_3_medium",
height=1024,
width=1024,
dtype="float16",
)
# Generate images with SD3
image = text_to_image.generate(
"photograph of an astronaut riding a horse, detailed, 8k",
)
# Display the generated image
img = array_to_img(image)
img
Stable Diffusion 3 https://stability.ai/news/stable-diffusion-3
有關 Keras 3 上可用的預訓練計算機視覺模型的更多詳細信息,請查看 Keras 中的模型列表。
Keras 中的模型列表 https://keras.io/api/keras_hub/models/
對于 KerasNLP 開發者而言,
有哪些變化?
從 KerasNLP 到 KerasHub 的過渡是一個簡單的過程。只需要將 import 語句從 keras_nlp 更新為 keras_hub。
示例: 以前,您可能需要導入 keras_nlp 才能使用 BERT 模型,如下所示
import keras_nlp
# Load a BERT model
classifier = keras_nlp.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
現在,您只需調整 import,即可使用 KerasHub:
import keras_hub
# Load a BERT model
classifier = keras_hub.models.BertClassifier.from_preset(
"bert_base_en_uncased",
num_classes=2,
)
對于 KerasCV 開發者而言,
有哪些變化?
如果您當前是 KerasCV 用戶,更新到 KerasHub 能夠為您帶來以下好處:
簡化模型加載:KerasHub 為加載模型提供了統一的 API,如果您同時使用 KerasCV 和 KerasNLP,這可以簡化您的代碼。
框架靈活性:如果您有興趣探索 JAX 或 PyTorch 等不同框架,KerasHub 可以讓您更輕松地將這些框架與 KerasCV 和 KerasNLP 模型結合起來使用。
集中式存儲庫:借助 KerasHub 的統一模型存儲庫,您可以更輕松地查找和訪問模型,未來還可以在其中添加新架構。
如何使我的代碼適配 KerasHub?
模型
目前,我們正在將 KerasCV 模型遷移到 KerasHub。雖然大多數模型已經可用,但有些仍在遷移中。請注意,Centerpillar 模型不會被遷移。您應該能夠在 KerasHub 使用任何視覺模型,方法如下:
import keras_hub # Load a model using preset Model = keras_hub.models..from_preset('preset_name`) # or load a custom model by specifying the backbone and preprocessor Model=keras_hub.models. (backbone=backbone,preprocessor=preprocessor)
Centerpillar https://www.kaggle.com/models/keras/centerpillar
KerasHub 為 KerasCV 開發者帶來了激動人心的新功能,提供了更高的靈活性和擴展能力。其中包括:
內置預處理
每個模型都配備了一個定制的預處理器,用于處理包括調整大小、重新縮放等常規任務,從而簡化您的工作流程。 在此之前,預處理輸入是在向模型提供輸入之前手動執行的。
# Preprocess inputs for example
def preprocess_inputs(image, label):
# Resize rescale or do more preprocessing on inputs
return preprocessed_inputs
backbone = keras_cv.models.ResNet50V2Backbone.from_preset(
"resnet50_v2_imagenet",
)
model = keras_cv.models.ImageClassifier(
backbone=backbone,
num_classes=4,
)
output = model(preprocessed_input)
目前,任務模型的預處理已集成到現成的預設中。預處理器會對輸入進行預處理,對樣本圖像進行大小調整和重新縮放。預處理器是任務模型的內在組件。盡管如此,開發者還是可以選擇使用個性化的預處理器。
classifier = keras_hub.models.ImageClassifier.from_preset('resnet_18_imagenet')
classifier.predict(inputs)
損失函數
與增強層類似,以前 KerasCV 中的損失函數現在可在 Keras 中通過 keras.losses.
import keras
import keras_cv
keras_cv.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
FocalLoss 函數 https://keras.io/api/keras_cv/losses/focal_loss/
您只需調整損失函數定義代碼,使用 keras.losses 而不是 keras_cv.losses:
import keras
keras.losses.FocalLoss(
alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)
-
模型
+關注
關注
1文章
3752瀏覽量
52111 -
深度學習
+關注
關注
73文章
5599瀏覽量
124400 -
nlp
+關注
關注
1文章
491瀏覽量
23280
原文標題:Keras Hub,您的一站式預訓練模型庫
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
什么是大模型,智能體...?大模型100問,快速全面了解!
意法半導體STM32 MCU AI模型庫再擴容
在Ubuntu20.04系統中訓練神經網絡模型的一些經驗
Simulink模型測試典型問題分享——模型庫管理問題
NanoEdge AI生成的模型庫,在keil里面編譯后運行,返回都是0,沒挑出單分類,怎么解決?
沐曦MXMACA軟件平臺在大模型訓練方面的優化效果
ABAQUS內置了豐富的材料模型庫
首創開源架構,天璣AI開發套件讓端側AI模型接入得心應手
請問如何在imx8mplus上部署和運行YOLOv5訓練的模型?
用PaddleNLP為GPT-2模型制作FineWeb二進制預訓練數據集
KerasHub統一、全面的預訓練模型庫
評論