Memperkenalkan Keras Hub: Pusat library terpadu untuk model yang sudah terlatih

OKT 22, 2024
Divyashree Sreepathihalli Software Engineer
Luciano Martins Developer Advocate Google AI

Dunia deep learning berkembang begitu cepat, dengan model yang sudah terlatih menjadi semakin penting untuk berbagai macam tugas. Keras, yang dikenal dengan API-nya yang mudah digunakan dan berfokus pada aksesibilitas, berada di posisi terdepan dalam gerakan ini dengan library khusus seperti KerasNLP untuk model berbasis teks dan KerasCV untuk model computer vision.

Namun, karena model-model tersebut semakin mengaburkan batasan antar modalitas – bayangkan LLM chat yang kuat dengan input gambar atau tugas visi yang memanfaatkan encoder teks – mempertahankan domain yang terpisah ini semakin tidak praktis. Pemisahan antara NLP dan CV bisa menghambat pengembangan dan deployment model yang benar-benar multimodal, yang mengarah pada upaya yang berlebihan dan pengalaman pengguna yang terfragmentasi.

keras-team/keras-hub, a unified, comprehensive library for pretrained models

Untuk mengatasi hal ini, kami sangat senang dapat mengumumkan evolusi besar dalam ekosistem Keras: KerasHub, sebuah library terpadu dan komprehensif untuk model yang sudah terlatih, yang akan mempermudah akses ke arsitektur NLP dan CV terbaru. KerasHub adalah repositori pusat, di sini Anda bisa mengeksplorasi dan memanfaatkan model-model termutakhir seperti BERT untuk analisis teks dan EfficientNet untuk klasifikasi gambar, semuanya dalam framework Keras yang konsisten dan familier.


Pengalaman developer yang terpadu

Penggabungan ini tidak hanya menyederhanakan penemuan dan penggunaan model, tetapi juga mendorong ekosistem yang lebih kohesif. Dengan KerasHub, Anda bisa memanfaatkan fitur-fitur canggih, seperti publikasi dan berbagi model secara mudah, penyempurnaan LoRA untuk adaptasi yang hemat sumber daya, kuantisasi untuk performa yang dioptimalkan, dan pelatihan multi-host yang tangguh untuk menangani set data berskala besar, semuanya bisa diterapkan di berbagai macam modalitas. Ini menandai langkah signifikan menuju demokratisasi akses ke alat AI yang kuat dan mempercepat pengembangan aplikasi multimodal yang inovatif.


Langkah pertama dengan KerasHub

Mari kita mulai dengan menginstal KerasHub pada sistem Anda. Dari sana, Anda bisa menjelajahi banyak koleksi model yang sudah tersedia dan berbagai implementasi arsitektur populer. Kemudian, Anda dapat dengan mudah memuat dan menggabungkan model-model yang sudah terlatih ini ke dalam project Anda sendiri dan menyempurnakannya untuk performa yang optimal sesuai dengan kebutuhan spesifik Anda.


Menginstal KerasHub

Untuk menginstal rilis KerasHub terbaru dengan Keras 3, cukup jalankan:

$ pip install --upgrade keras-hub

Sekarang Anda bisa mulai menjelajahi model-model yang tersedia. Penyiapan lingkungan standar untuk mulai bekerja dengan Keras 3 tidak berubah sama sekali untuk mulai menggunakan 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

Menggunakan computer vision dan model bahasa natural dengan KerasHub

Sekarang Anda siap memulai KerasHub untuk mengakses dan menggunakan model-model yang tersedia di ekosistem Keras 3. Di bawah ini adalah beberapa contohnya:


Gemma

Gemma adalah kumpulan model terbuka yang canggih, tetapi mudah diakses, yang dikembangkan oleh Google. Dengan memanfaatkan penelitian dan teknologi yang sama di balik model Gemini, model dasar Gemma unggul dalam berbagai tugas pembuatan teks. Ini termasuk menjawab pertanyaan, meringkas informasi, dan terlibat dalam penalaran logis. Selain itu, model ini bisa disesuaikan untuk memenuhi kebutuhan khusus.

Dalam contoh ini Anda menggunakan Keras dan KerasHub untuk memuat dan mulai membuat konten menggunakan parameter Gemma2 2B. Untuk detail selengkapnya tentang varian Gemma, lihat kartu model Gemma di Kaggle.

# 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)

PaliGemma

PaliGemma adalah model ringkas dan terbuka yang mampu memahami gambar dan teks. Mengambil inspirasi dari PaLI-3 dan dibangun di atas komponen open source, seperti model visi SigLIP dan model bahasa Gemma, PaliGemma bisa memberikan jawaban yang detail dan mendalam untuk pertanyaan-pertanyaan mengenai gambar. Ini memungkinkan pemahaman konten visual yang lebih mendalam, yang memungkinkan kemampuan seperti pembuatan teks untuk gambar dan video pendek, mengidentifikasi objek, dan bahkan membaca teks di dalam gambar.

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,
    }
)

Untuk detail selengkapnya mengenai model yang sudah terlatih yang tersedia di Keras 3, lihat daftar model di Keras pada Kaggle.


Stability.ai Stable Diffusion 3

Anda juga memiliki model computer vision yang tersedia dan dapat digunakan. Sebagai contoh, Anda bisa menggunakan stability.ai Stable Diffusion 3 dengan KerasHub:

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

Untuk detail selengkapnya tentang model computer vision yang sudah terlatih yang tersedia di Keras 3, silakan lihat daftar model di Keras.


Apa yang berubah untuk developer KerasNLP?

Transisi dari KerasNLP ke KerasHub adalah proses yang mudah. Proses ini hanya membutuhkan pembaruan pernyataan import dari keras_nlp ke keras_hub.

Contoh: Sebelumnya jika Anda mengimpor keras_nlp untuk menggunakan model BERT seperti di bawah ini

import keras_nlp
 
# Load a BERT model 
classifier = keras_nlp.models.BertClassifier.from_preset(
    "bert_base_en_uncased", 
    num_classes=2,
)

Sesuaikan import, dan Anda siap menggunakan KerasHub:

import keras_hub
 
# Load a BERT model 
classifier = keras_hub.models.BertClassifier.from_preset(
    "bert_base_en_uncased", 
    num_classes=2,
)

Apa yang berubah untuk developer KerasCV?

Jika saat ini Anda adalah pengguna KerasCV, melakukan update ke KerasHub akan memberi Anda manfaat berikut:

  • Pemuatan Model yang Sederhana: KerasHub menawarkan API yang konsisten untuk memuat model, yang bisa menyederhanakan kode jika Anda bekerja dengan KerasCV dan KerasNLP.

  • Fleksibilitas Framework: Jika Anda tertarik menjelajahi framework yang berbeda, seperti JAX atau PyTorch, KerasHub mempermudah penggunaan model KerasCV dan KerasNLP dengan framework tersebut.

  • Repositori Terpusat: Menemukan dan mengakses model akan semakin mudah dengan repositori model terpadu KerasHub dan merupakan tempat di mana arsitektur baru akan ditambahkan di masa mendatang.


Bagaimana cara menyesuaikan kode saya dengan KerasHub?

Model

Model-model KerasCV saat ini sedang dipindahkan ke KerasHub. Meskipun sebagian besar sudah tersedia, beberapa masih dalam proses. Harap perhatikan bahwa model Centerpillar tidak akan dipindahkan. Anda semestinya dapat menggunakan model visi apa pun di KerasHub:

import keras_hub
 
# Load a model using preset
Model = keras_hub.models.<model_name>.from_preset('preset_name`)
 
# or load a custom model by specifying the backbone and preprocessor
Model = keras_hub.models.<model_name>(backbone=backbone, preprocessor=preprocessor)

KerasHub memperkenalkan fitur-fitur baru yang menarik untuk developer KerasCV, menawarkan fleksibilitas yang lebih besar dan kemampuan yang semakin luas. Ini termasuk:


Prapemrosesan bawaan

Setiap model disertai dengan praprosesor khusus yang menangani tugas-tugas rutin termasuk mengubah ukuran, mengubah skala, dan lainnya, sehingga mempermudah alur kerja Anda.

Sebelumnya, prapemrosesan input dilakukan secara manual sebelum memberikan input ke model.

# 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)

Saat ini, prapemrosesan model tugas terintegrasi di dalam preset yang sudah ditetapkan. Input menjalani prapemrosesan, di sini gambar contoh mengalami pengubahan ukuran dan penskalaan ulang dalam praprosesor. Praprosesor adalah komponen intrinsik model tugas. Meskipun demikian, Anda memiliki opsi untuk menggunakan praprosesor yang dipersonalisasi.

classifier = keras_hub.models.ImageClassifier.from_preset('resnet_18_imagenet')
classifier.predict(inputs)

Fungsi loss

Mirip dengan lapisan augmentasi, fungsi loss yang sebelumnya ada di KerasCV sekarang tersedia di Keras melalui keras.losses.<loss_function>. Sebagai contoh, jika saat ini Anda menggunakan fungsi FocalLoss:

import keras
import keras_cv
 
keras_cv.losses.FocalLoss(
    alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)

Anda hanya perlu menyesuaikan kode definisi fungsi loss Anda agar menggunakan keras.losses sebagai ganti keras_cv.losses:

import keras
 
keras.losses.FocalLoss(
    alpha=0.25, gamma=2, from_logits=False, label_smoothing=0, **kwargs
)

Memulai dengan KerasHub

Masuki dunia KerasHub sekarang juga:


Bergabunglah dengan komunitas Keras dan buka kekuatan model deep learning yang terpadu, mudah diakses, dan efisien. Masa depan AI adalah multimodal, dan KerasHub adalah pintu gerbang Anda menuju masa depan tersebut!