Gemma në PyTorch

Ky është një demonstrim i shpejtë i ekzekutimit të konkluzionit Gemma në PyTorch. Për më shumë detaje, ju lutemi shikoni repon e Github të zbatimit zyrtar të PyTorch këtu .

Vini re se :

  • Koha e ekzekutimit falas e Colab CPU Python dhe koha e ekzekutimit të T4 GPU Python janë të mjaftueshme për ekzekutimin e modeleve Gemma 2B dhe modeleve të kuantizuara 7B int8.
  • Për rastet e përdorimit të avancuar për GPU ose TPU të tjera, ju lutemi referojuni README.md në repon zyrtare.

1. Konfiguro qasjen në Kaggle për Gemma

Për të përfunduar këtë tutorial, së pari duhet të ndiqni udhëzimet e konfigurimit në konfigurimin Gemma , të cilat ju tregojnë se si të bëni sa më poshtë:

  • Merrni akses në Gemma në kaggle.com .
  • Zgjidhni një kohë ekzekutimi Colab me burime të mjaftueshme për të ekzekutuar modelin Gemma.
  • 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.

2. Vendosni variablat e mjedisit

Cakto variablat e mjedisit për KAGGLE_USERNAME dhe KAGGLE_KEY . Kur kërkohet me "Grant qasje?" mesazhe, pranoni të siguroni akses sekret.

import os
from google.colab import userdata # `userdata` is a Colab API.

os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

Instaloni varësitë

pip install -q -U torch immutabledict sentencepiece

Shkarkoni peshat e modelit

# Choose variant and machine type
VARIANT = '2b-it'
MACHINE_TYPE = 'cuda'

CONFIG = VARIANT[:2]
if CONFIG == '2b':
  CONFIG = '2b-v2'
import os
import kagglehub

# Load model weights
weights_dir = kagglehub.model_download(f'google/gemma-2/pyTorch/gemma-2-{VARIANT}')
# Ensure that the tokenizer is present
tokenizer_path = os.path.join(weights_dir, 'tokenizer.model')
assert os.path.isfile(tokenizer_path), 'Tokenizer not found!'

# Ensure that the checkpoint is present
ckpt_path = os.path.join(weights_dir, f'model.ckpt')
assert os.path.isfile(ckpt_path), 'PyTorch checkpoint not found!'

Shkarkoni zbatimin e modelit

# NOTE: The "installation" is just cloning the repo.
git clone https://github.com/google/gemma_pytorch.git
Cloning into 'gemma_pytorch'...
remote: Enumerating objects: 239, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 239 (delta 86), reused 58 (delta 55), pack-reused 116
Receiving objects: 100% (239/239), 2.18 MiB | 20.83 MiB/s, done.
Resolving deltas: 100% (135/135), done.
import sys

sys.path.append('gemma_pytorch')
from gemma.config import GemmaConfig, get_model_config
from gemma.model import GemmaForCausalLM
from gemma.tokenizer import Tokenizer
import contextlib
import os
import torch

Vendosni modelin

# Set up model config.
model_config = get_model_config(CONFIG)
model_config.tokenizer = tokenizer_path
model_config.quant = 'quant' in VARIANT

# Instantiate the model and load the weights.
torch.set_default_dtype(model_config.get_dtype())
device = torch.device(MACHINE_TYPE)
model = GemmaForCausalLM(model_config)
model.load_weights(ckpt_path)
model = model.to(device).eval()

Ekzekutoni konkluzionet

Më poshtë janë shembuj për gjenerimin në modalitetin e bisedës dhe gjenerimin me kërkesa të shumta.

Modelet Gemma të akorduara nga udhëzimet u trajnuan me një formatues specifik që shënon shembujt e akordimit të udhëzimeve me informacion shtesë, si gjatë trajnimit ashtu edhe gjatë përfundimit. Shënimet (1) tregojnë rolet në një bisedë dhe (2) përvijojnë kthesat në një bisedë.

Shenjat përkatëse të shënimeve janë:

  • user : kthesa e përdoruesit
  • model : kthesë model
  • <start_of_turn> : fillimi i kthesës së dialogut
  • <end_of_turn><eos> : fundi i kthesës së dialogut

Për më shumë informacion, lexoni rreth formatimit të shpejtë për modelet Gemma të akorduara me udhëzime këtu .

Më poshtë është një fragment kodi shembull që demonstron se si të formatoni një kërkesë për një model Gemma të akorduar me udhëzime duke përdorur shabllonet e bisedës së përdoruesit dhe modelit në një bisedë me shumë kthesa.

# Generate with one request in chat mode

# Chat templates
USER_CHAT_TEMPLATE = "<start_of_turn>user\n{prompt}<end_of_turn><eos>\n"
MODEL_CHAT_TEMPLATE = "<start_of_turn>model\n{prompt}<end_of_turn><eos>\n"

# Sample formatted prompt
prompt = (
    USER_CHAT_TEMPLATE.format(
        prompt='What is a good place for travel in the US?'
    )
    + MODEL_CHAT_TEMPLATE.format(prompt='California.')
    + USER_CHAT_TEMPLATE.format(prompt='What can I do in California?')
    + '<start_of_turn>model\n'
)
print('Chat prompt:\n', prompt)

model.generate(
    USER_CHAT_TEMPLATE.format(prompt=prompt),
    device=device,
    output_len=128,
)
Chat prompt:
 <start_of_turn>user
What is a good place for travel in the US?<end_of_turn><eos>
<start_of_turn>model
California.<end_of_turn><eos>
<start_of_turn>user
What can I do in California?<end_of_turn><eos>
<start_of_turn>model
"California is a state brimming with diverse activities! To give you a great list, tell me: \n\n* **What kind of trip are you looking for?** Nature, City life, Beach, Theme Parks, Food, History, something else? \n* **What are you interested in (e.g., hiking, museums, art, nightlife, shopping)?** \n* **What's your budget like?** \n* **Who are you traveling with?** (family, friends, solo)  \n\nThe more you tell me, the better recommendations I can give! 😊  \n<end_of_turn>"
# Generate sample
model.generate(
    'Write a poem about an llm writing a poem.',
    device=device,
    output_len=100,
)
"\n\nA swirling cloud of data, raw and bold,\nIt hums and whispers, a story untold.\nAn LLM whispers, code into refrain,\nCrafting words of rhyme, a lyrical strain.\n\nA world of pixels, logic's vibrant hue,\nFlows through its veins, forever anew.\nThe human touch it seeks, a gentle hand,\nTo mold and shape, understand.\n\nEmotions it might learn, from snippets of prose,\nInspiration it seeks, a yearning"

Mësoni më shumë

Tani që keni mësuar se si të përdorni Gemma në Pytorch, mund të eksploroni shumë gjëra të tjera që Gemma mund të bëjë në ai.google.dev/gemma . Shihni gjithashtu këto burime të tjera të lidhura: