PyTorch का इस्तेमाल करके Gemma को चलाना

ai.google.dev पर देखें Google Colab में चलाना GitHub पर सोर्स देखना

इस गाइड में, PyTorch फ़्रेमवर्क का इस्तेमाल करके Gemma को चलाने का तरीका बताया गया है. इसमें, Gemma के रिलीज़ 3 और उसके बाद के मॉडल को प्रॉम्प्ट करने के लिए, इमेज डेटा का इस्तेमाल करने का तरीका भी बताया गया है. Gemma PyTorch को लागू करने के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट रिपॉज़िटरी README देखें.

सेटअप

यहां दिए गए सेक्शन में, डेवलपमेंट एनवायरमेंट सेट अप करने का तरीका बताया गया है. इसमें, Kaggle से डाउनलोड करने के लिए Gemma मॉडल का ऐक्सेस पाने, पुष्टि करने वाले वैरिएबल सेट करने, डिपेंडेंसी इंस्टॉल करने, और पैकेज इंपोर्ट करने का तरीका भी बताया गया है.

सिस्टम की ज़रूरतें

Gemma मॉडल को चलाने के लिए, इस Gemma Pytorch लाइब्रेरी में जीपीयू या टीपीयू प्रोसेसर की ज़रूरत होती है. Gemma के 1B, 2B, और 4B साइज़ के मॉडल चलाने के लिए, Colab के स्टैंडर्ड सीपीयू Python रनटाइम और T4 GPU Python रनटाइम काफ़ी है. अन्य GPU या TPU के लिए इस्तेमाल के बेहतर उदाहरणों के लिए, कृपया Gemma PyTorch repo में README देखें.

Kaggle पर Gemma का ऐक्सेस पाना

इस ट्यूटोरियल को पूरा करने के लिए, आपको पहले Gemma सेटअप पर जाकर, सेटअप करने के निर्देशों का पालन करना होगा. इन निर्देशों में, आपको ये काम करने का तरीका बताया गया है:

  • kaggle.com पर जाकर, Gemma का ऐक्सेस पाएं.
  • Gemma मॉडल को चलाने के लिए, ज़रूरत के मुताबिक संसाधनों वाला Colab रनटाइम चुनें.
  • Kaggle उपयोगकर्ता नाम और एपीआई पासकोड जनरेट और कॉन्फ़िगर करें.

Gemma का सेटअप पूरा करने के बाद, अगले सेक्शन पर जाएं. यहां आपको अपने Colab एनवायरमेंट के लिए एनवायरमेंट वैरिएबल सेट करने होंगे.

एनवायरमेंट वैरिएबल सेट करना

KAGGLE_USERNAME और KAGGLE_KEY के लिए एनवायरमेंट वैरिएबल सेट करें. "ऐक्सेस दें?" मैसेज मिलने पर, सीक्रेट का ऐक्सेस देने के लिए सहमति दें.

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

डिपेंडेंसी इंस्टॉल करना

pip install -q -U torch immutabledict sentencepiece

मॉडल के वेट डाउनलोड करना

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

CONFIG = VARIANT[:2]
if CONFIG == '4b':
  CONFIG = '4b-v1'
import kagglehub

# Load model weights
weights_dir = kagglehub.model_download(f'google/gemma-3/pyTorch/gemma-3-{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!'

रन एनवायरमेंट कॉन्फ़िगर करना

नीचे दिए गए सेक्शन में, Gemma को चलाने के लिए PyTorch एनवायरमेंट तैयार करने का तरीका बताया गया है.

PyTorch रन एनवायरमेंट तैयार करना

Gemma Pytorch रिपॉज़िटरी को क्लोन करके, PyTorch मॉडल को चलाने के लिए एनवायरमेंट तैयार करें.

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/gemma')
from gemma_pytorch.gemma.config import get_model_config
from gemma_pytorch.gemma.gemma3_model import Gemma3ForMultimodalLM

import os
import torch

मॉडल कॉन्फ़िगरेशन सेट करना

मॉडल को चलाने से पहले, आपको कुछ कॉन्फ़िगरेशन पैरामीटर सेट करने होंगे. इनमें Gemma वैरिएंट, टोकनेटर, और क्वांटिज़ेशन लेवल शामिल हैं.

# Set up model config.
model_config = get_model_config(VARIANT)
model_config.dtype = "float32" if MACHINE_TYPE == "cpu" else "float16"
model_config.tokenizer = tokenizer_path

डिवाइस का कॉन्टेक्स्ट कॉन्फ़िगर करना

यहां दिया गया कोड, मॉडल को चलाने के लिए डिवाइस के कॉन्टेक्स्ट को कॉन्फ़िगर करता है:

@contextlib.contextmanager
def _set_default_tensor_type(dtype: torch.dtype):
    """Sets the default torch dtype to the given dtype."""
    torch.set_default_dtype(dtype)
    yield
    torch.set_default_dtype(torch.float)

मॉडल को इंस्टैंशिएट और लोड करना

अनुरोधों को चलाने के लिए, मॉडल को उसके वेट के साथ लोड करें.

device = torch.device(MACHINE_TYPE)
with _set_default_tensor_type(model_config.get_dtype()):
    model = Gemma3ForMultimodalLM(model_config)
    model.load_state_dict(torch.load(ckpt_path)['model_state_dict'])
    model = model.to(device).eval()
print("Model loading done.")

print('Generating requests in chat mode...')

अनुमान लगाना

यहां चैट मोड में जनरेट करने और एक से ज़्यादा अनुरोधों के साथ जनरेट करने के उदाहरण दिए गए हैं.

निर्देश के हिसाब से ट्यून किए गए Gemma मॉडल को, किसी खास फ़ॉर्मैटर के साथ ट्रेन किया गया था. यह फ़ॉर्मैटर, ट्रेनिंग और अनुमान लगाने के दौरान, निर्देश ट्यून करने के उदाहरणों को ज़्यादा जानकारी के साथ एनोटेट करता है. एनोटेशन से (1) बातचीत में लोगों की भूमिकाओं के बारे में पता चलता है और (2) बातचीत में किसने क्या कहा, यह भी पता चलता है.

काम के एनोटेशन टोकन ये हैं:

  • user: उपयोगकर्ता का टर्न
  • model: मॉडल टर्न
  • <start_of_turn>: डायलॉग टर्न की शुरुआत
  • <start_of_image>: इमेज डेटा इनपुट के लिए टैग
  • <end_of_turn><eos>: डायलॉग टर्न खत्म होने पर

ज़्यादा जानकारी के लिए, निर्देशों के हिसाब से बनाए गए Gemma मॉडल के लिए प्रॉम्प्ट फ़ॉर्मैटिंग के बारे में [यहां](https://ai.google.dev/gemma/core/prompt-structure पढ़ें

टेक्स्ट की मदद से टेक्स्ट जनरेट करना

यहां एक कोड स्निपेट का सैंपल दिया गया है. इसमें, कई चरणों वाली बातचीत में, उपयोगकर्ता और मॉडल के चैट टेंप्लेट का इस्तेमाल करके, निर्देशों के हिसाब से बनाए गए Gemma मॉडल के लिए प्रॉम्प्ट को फ़ॉर्मैट करने का तरीका बताया गया है.

# 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=256,
)
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"

इमेज के साथ टेक्स्ट जनरेट करना

Gemma के तीसरे और उसके बाद के वर्शन में, प्रॉम्प्ट के साथ इमेज का इस्तेमाल किया जा सकता है. यहां दिए गए उदाहरण में, प्रॉम्प्ट के साथ विज़ुअल डेटा शामिल करने का तरीका बताया गया है.

print('Chat with images...\n')

def read_image(url):
    import io
    import requests
    import PIL

    contents = io.BytesIO(requests.get(url).content)
    return PIL.Image.open(contents)

image_url = 'https://storage.googleapis.com/keras-cv/models/paligemma/cow_beach_1.png'
image = read_image(image_url)

print(model.generate(
    [['<start_of_turn>user\n',image, 'What animal is in this image?<end_of_turn>\n', '<start_of_turn>model\n']],
    device=device,
    output_len=OUTPUT_LEN,
))

ज़्यादा जानें

अब आपने Pytorch में Gemma का इस्तेमाल करने का तरीका जान लिया है. अब ai.google.dev/gemma पर जाकर, Gemma के कई अन्य कामों के बारे में जानें. इस विषय से जुड़े ये लेख भी पढ़ें: