جما در PyTorch

مشاهده در ai.google.dev در Google Colab اجرا شود مشاهده منبع در GitHub

این یک نسخه نمایشی سریع از اجرای استنتاج Gemma در PyTorch است. برای جزئیات بیشتر، لطفاً مخزن Github پیاده سازی رسمی PyTorch را در اینجا بررسی کنید.

توجه داشته باشید که :

  • زمان اجرا رایگان Colab CPU Python و T4 GPU Python برای اجرای مدل‌های Gemma 2B و مدل‌های quantized 7B int8 کافی است.
  • برای موارد استفاده پیشرفته برای سایر GPU یا TPU، لطفاً به README.md در مخزن رسمی مراجعه کنید.

دسترسی Kaggle

برای ورود به Kaggle، می توانید فایل اعتبارنامه kaggle.json خود را در ~/.kaggle/kaggle.json ذخیره کنید یا موارد زیر را در یک محیط Colab اجرا کنید. برای جزئیات بیشتر به مستندات بسته kagglehub مراجعه کنید.

import kagglehub

kagglehub.login()

وابستگی ها را نصب کنید

pip install -q -U torch immutabledict sentencepiece

دانلود وزن مدل

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

# Load model weights
weights_dir = kagglehub.model_download(f'google/gemma/pyTorch/{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'gemma-{VARIANT}.ckpt')
assert os.path.isfile(ckpt_path), 'PyTorch checkpoint not found!'

اجرای مدل را دانلود کنید

# NOTE: The "installation" is just cloning the repo.
git clone https://github.com/google/gemma_pytorch.git
import sys

sys.path.append('gemma_pytorch')
from gemma_pytorch.gemma.config import get_config_for_7b, get_config_for_2b
from gemma_pytorch.gemma.model import GemmaForCausalLM

مدل را تنظیم کنید

import torch

# Set up model config.
model_config = get_config_for_2b() if "2b" in VARIANT else get_config_for_7b()
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()

استنتاج را اجرا کنید

در زیر نمونه هایی برای ایجاد در حالت چت و تولید با چندین درخواست آورده شده است.

مدل‌های Gemma تنظیم‌شده با دستورالعمل‌ها با یک قالب‌کننده خاص آموزش داده شدند که نمونه‌های تنظیم دستورالعمل را با اطلاعات اضافی، هم در طول آموزش و هم در حین استنتاج، حاشیه‌نویسی می‌کند. حاشیه‌نویسی‌ها (1) نقش‌ها را در یک مکالمه نشان می‌دهند، و (2) چرخش‌های یک مکالمه را مشخص می‌کنند. در زیر یک قطعه کد نمونه برای قالب‌بندی اعلان مدل با استفاده از الگوهای چت کاربر و مدل در یک مکالمه چند نوبتی نشان می‌دهیم. نشانه های مربوطه عبارتند از:

  • user : نوبت کاربر
  • model : مدل نوبت
  • <start_of_turn> : شروع نوبت دیالوگ
  • <end_of_turn> : پایان نوبت دیالوگ

در مورد قالب بندی Gemma برای تنظیم دستورالعمل و دستورالعمل های سیستم در اینجا بخوانید.

# Generate with one request in chat mode

# Chat templates
USER_CHAT_TEMPLATE = '<start_of_turn>user\n{prompt}<end_of_turn>\n'
MODEL_CHAT_TEMPLATE = '<start_of_turn>model\n{prompt}<end_of_turn>\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=100,
)
Chat prompt:
 <start_of_turn>user
What is a good place for travel in the US?<end_of_turn>
<start_of_turn>model
California.<end_of_turn>
<start_of_turn>user
What can I do in California?<end_of_turn>
<start_of_turn>model
"* **Visit the Golden Gate Bridge and Alcatraz Island in San Francisco.**\n* **Head to Yosemite National Park and marvel at nature's beauty.**\n* **Explore the bustling metropolis of Los Angeles.**\n* **Relax on the pristine beaches of Santa Monica or Malibu.**\n* **Go whale watching in Monterey Bay.**\n* **Discover the charming coastal towns of Monterey Bay and Carmel-by-the-Sea.**\n* **Visit Disneyland and Disney California Adventure in Anaheim.**\n*"
# Generate sample
model.generate(
    'Write a poem about an llm writing a poem.',
    device=device,
    output_len=60,
)
['\n\nThe fingers dance on the keys,\nA symphony of thoughts and dreams.\nThe mind, a canvas yet uncouth,\nScribbling its secrets in the night.\n\nThe ink, a whispered voice from deep,\nA language ancient, never to sleep.\nEach stroke an echo of']

بیشتر بدانید

اکنون که نحوه استفاده از Gemma را در Pytorch یاد گرفته‌اید، می‌توانید بسیاری از کارهای دیگری که Gemma می‌تواند در ai.google.dev/gemma انجام دهد را کشف کنید. این منابع مرتبط دیگر را نیز ببینید: