Filloni me Gemma duke përdorur KerasNLP

Ky tutorial ju tregon se si të filloni me Gemma duke përdorur KerasNLP . Gemma është një familje modelesh të hapura me peshë të lehtë dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini. KerasNLP është një koleksion modelesh të përpunimit të gjuhës natyrore (NLP) të zbatuara në Keras dhe të ekzekutueshme në JAX, PyTorch dhe TensorFlow.

Në këtë tutorial, ju do të përdorni Gemma për të gjeneruar përgjigje me tekst për disa kërkesa. Nëse jeni i ri në Keras, mund të dëshironi të lexoni Fillimi me Keras përpara se të filloni, por nuk keni pse. Do të mësoni më shumë rreth Keras ndërsa punoni me këtë tutorial.

Konfigurimi

Konfigurimi i Gemma

Për të përfunduar këtë tutorial, së pari do t'ju duhet të plotësoni udhëzimet e konfigurimit në konfigurimin e Gemma . Udhëzimet e konfigurimit të Gemma ju tregojnë se si të bëni sa më poshtë:

  • Merrni qasje në Gemma në kaggle.com.
  • Zgjidhni një kohë ekzekutimi Colab me burime të mjaftueshme për të ekzekutuar modelin Gemma 2B.
  • Gjeneroni dhe konfiguroni një emër përdoruesi dhe çelës API të Kaggle.

Pasi të keni përfunduar konfigurimin e Gemma, kaloni në seksionin tjetër, ku do të vendosni variablat e mjedisit për mjedisin tuaj Colab.

Vendosni variablat e mjedisit

Cakto variablat e mjedisit për KAGGLE_USERNAME dhe KAGGLE_KEY .

import os
from google.colab import userdata

# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

Instaloni varësitë

Instaloni Keras dhe KerasNLP.

# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U "keras>=3"

Zgjidhni një backend

Keras është një API mësimi i thellë me shumë korniza të nivelit të lartë, i krijuar për thjeshtësi dhe lehtësi në përdorim. Keras 3 ju lejon të zgjidhni backend: TensorFlow, JAX ose PyTorch. Të tre do të punojnë për këtë tutorial.

import os

os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"

Paketat e importit

Importoni Keras dhe KerasNLP.

import keras
import keras_nlp

Krijo një model

KerasNLP ofron implementime të shumë arkitekturave të modeleve të njohura. Në këtë tutorial, ju do të krijoni një model duke përdorur GemmaCausalLM , një model Gemma nga fundi në fund për modelimin e gjuhës shkakësore. Një model gjuhësor kauzal parashikon shenjën tjetër bazuar në shenjat e mëparshme.

Krijo modelin duke përdorur metodën from_preset :

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")

Funksioni GemmaCausalLM.from_preset() instancon modelin nga një arkitekturë dhe pesha e paravendosur. Në kodin e mësipërm, vargu "gemma2_2b_en" specifikon modelin e paravendosur Gemma 2 2B me 2 miliardë parametra. Modelet Gemma me parametra 7B, 9B dhe 27B janë gjithashtu të disponueshme. Mund t'i gjeni vargjet e kodeve për modelet Gemma në listat e tyre të Variacionit të ModeleveKaggle .

Përdorni summary për të marrë më shumë informacion rreth modelit:

gemma_lm.summary()

Siç mund ta shihni nga përmbledhja, modeli ka 2.6 miliardë parametra të trajnueshëm.

Krijo tekst

Tani është koha për të krijuar pak tekst! Modeli ka një metodë generate që gjeneron tekst bazuar në një kërkesë. Argumenti opsional max_length specifikon gjatësinë maksimale të sekuencës së gjeneruar.

Provojeni me kërkesën "what is keras in 3 bullet points?" .

gemma_lm.generate("what is keras in 3 bullet points?", max_length=64)
'what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n'

Provoni të telefononi generate përsëri me një kërkesë tjetër.

gemma_lm.generate("The universe is", max_length=64)
'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now'

Nëse jeni duke ekzekutuar në backend JAX ose TensorFlow, do të vini re se thirrja e dytë generate kthehet pothuajse menjëherë. Kjo është për shkak se çdo thirrje për generate për një madhësi të caktuar të grupit dhe max_length përpilohet me XLA. Vrapimi i parë është i shtrenjtë, por ekzekutimet e mëvonshme janë shumë më të shpejta.

Ju gjithashtu mund të ofroni kërkesa të grumbulluara duke përdorur një listë si hyrje:

gemma_lm.generate(
    ["what is keras in 3 bullet points?",
     "The universe is"],
    max_length=64)
['what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n',
 'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now']

Opsionale: Provoni një kampionues tjetër

Ju mund të kontrolloni strategjinë e gjenerimit për GemmaCausalLM duke vendosur argumentin samplercompile() . Si parazgjedhje, do të përdoret kampionimi "greedy" .

Si një eksperiment, provoni të vendosni një strategji "top_k" :

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("The universe is", max_length=64)
'The universe is a big place, and there are so many things we do not know or understand about it.\n\nBut we can learn a lot about our world by studying what is known to us.\n\nFor example, if you look at the moon, it has many features that can be seen from the surface.'

Ndërsa algoritmi i paracaktuar i babëzitur zgjedh gjithmonë shenjën me probabilitetin më të madh, algoritmi top-K zgjedh në mënyrë të rastësishme shenjën tjetër nga shenjat e probabilitetit të lartë K.

Nuk është e nevojshme të specifikoni një mostër dhe mund të injoroni fragmentin e fundit të kodit nëse nuk është i dobishëm për rastin tuaj të përdorimit. Nëse dëshironi të mësoni më shumë rreth kampionëve të disponueshëm, shihni Mostrat .

Çfarë është më pas

Në këtë tutorial, mësuat se si të gjeneroni tekst duke përdorur KerasNLP dhe Gemma. Këtu janë disa sugjerime se çfarë të mësoni më pas: