Gemma এবং LangChain দিয়ে শুরু করুন

ai.google.dev-এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন

এই টিউটোরিয়ালটি আপনাকে দেখায় কিভাবে Gemma এবং LangChain এর সাথে শুরু করবেন, Google ক্লাউডে বা আপনার Colab পরিবেশে চলছে। জেমিনি মডেল তৈরি করতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি থেকে তৈরি হালকা-ওজন, অত্যাধুনিক ওপেন মডেলের একটি পরিবার। ল্যাংচেইন হল ভাষা মডেল দ্বারা সমর্থিত প্রসঙ্গ-সচেতন অ্যাপ্লিকেশন তৈরি এবং স্থাপনের জন্য একটি কাঠামো।

Google ক্লাউডে Gemma চালান

langchain-google-vertexai প্যাকেজ Google ক্লাউড মডেলের সাথে LangChain ইন্টিগ্রেশন প্রদান করে।

নির্ভরতা ইনস্টল করুন

pip install --upgrade -q langchain langchain-google-vertexai

প্রমাণীকরণ

আপনি Colab এন্টারপ্রাইজ ব্যবহার না করলে, আপনাকে প্রমাণীকরণ করতে হবে।

from google.colab import auth
auth.authenticate_user()

মডেল স্থাপন

Vertex AI হল AI মডেল এবং অ্যাপ্লিকেশন প্রশিক্ষণ এবং স্থাপনের জন্য একটি প্ল্যাটফর্ম। মডেল গার্ডেন হল মডেলগুলির একটি কিউরেটেড সংগ্রহ যা আপনি Google ক্লাউড কনসোলে অন্বেষণ করতে পারেন৷

Gemma স্থাপন করতে, Vertex AI এর জন্য মডেল গার্ডেনে মডেলটি খুলুন এবং নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. ডিপ্লয় নির্বাচন করুন।
  2. ডিপ্লয়মেন্ট ফর্ম ফিল্ডে যেকোন পছন্দসই পরিবর্তন করুন, অথবা যদি আপনি ডিফল্টের সাথে ঠিক থাকেন তবে সেগুলিকে সেইভাবে রেখে দিন। নিম্নলিখিত ক্ষেত্রগুলি নোট করুন, যা আপনার পরে প্রয়োজন হবে:
    • এন্ডপয়েন্টের নাম (উদাহরণস্বরূপ, google_gemma-7b-it-mg-one-click-deploy )
    • অঞ্চল (উদাহরণস্বরূপ, us-west1 )
  3. Vertex AI-তে মডেল স্থাপন করতে Deploy নির্বাচন করুন। স্থাপনা সম্পূর্ণ হতে কয়েক মিনিট সময় লাগবে।

এন্ডপয়েন্ট প্রস্তুত হলে, এর প্রজেক্ট আইডি, এন্ডপয়েন্ট আইডি এবং অবস্থান কপি করুন এবং সেগুলিকে প্যারামিটার হিসেবে লিখুন।

# @title Basic parameters
project: str = ""  # @param {type:"string"}
endpoint_id: str = ""  # @param {type:"string"}
location: str = "" # @param {type:"string"}

মডেল চালান

from langchain_google_vertexai import GemmaVertexAIModelGarden, GemmaChatVertexAIModelGarden

llm = GemmaVertexAIModelGarden(
    endpoint_id=endpoint_id,
    project=project,
    location=location,
)

output = llm.invoke("What is the meaning of life?")
print(output)
Prompt:
What is the meaning of life?
Output:
Life is a complex and multifaceted phenomenon that has fascinated philosophers, scientists, and

আপনি মাল্টি-টার্ন চ্যাটের জন্য জেমা ব্যবহার করতে পারেন:

from langchain_core.messages import (
    HumanMessage
)

llm = GemmaChatVertexAIModelGarden(
    endpoint_id=endpoint_id,
    project=project,
    location=location,
)

message1 = HumanMessage(content="How much is 2+2?")
answer1 = llm.invoke([message1])
print(answer1)

message2 = HumanMessage(content="How much is 3+3?")
answer2 = llm.invoke([message1, answer1, message2])

print(answer2)
content='Prompt:\n<start_of_turn>user\nHow much is 2+2?<end_of_turn>\n<start_of_turn>model\nOutput:\nSure, the answer is 4.\n\n2 + 2 = 4'
content='Prompt:\n<start_of_turn>user\nHow much is 2+2?<end_of_turn>\n<start_of_turn>model\nPrompt:\n<start_of_turn>user\nHow much is 2+2?<end_of_turn>\n<start_of_turn>model\nOutput:\nSure, the answer is 4.\n\n2 + 2 = 4<end_of_turn>\n<start_of_turn>user\nHow much is 3+3?<end_of_turn>\n<start_of_turn>model\nOutput:\nSure, the answer is 6.\n\n3 + 3 = 6'

পুনরাবৃত্তি এড়াতে আপনি পোস্ট-প্রসেস প্রতিক্রিয়া করতে পারেন:

answer1 = llm.invoke([message1], parse_response=True)
print(answer1)

answer2 = llm.invoke([message1, answer1, message2], parse_response=True)

print(answer2)
content='Output:\nSure, here is the answer:\n\n2 + 2 = 4'
content='Output:\nSure, here is the answer:\n\n3 + 3 = 6<'

একটি Kaggle ডাউনলোড থেকে Gemma চালান

এই বিভাগটি আপনাকে দেখায় কিভাবে Kaggle থেকে Gemma ডাউনলোড করতে হয় এবং তারপরে মডেলটি চালাতে হয়।

এই বিভাগটি সম্পূর্ণ করতে, আপনাকে প্রথমে Gemma সেটআপে সেটআপ নির্দেশাবলী সম্পূর্ণ করতে হবে।

তারপরে পরবর্তী বিভাগে যান, যেখানে আপনি আপনার Colab পরিবেশের জন্য পরিবেশের ভেরিয়েবল সেট করবেন।

পরিবেশের ভেরিয়েবল সেট করুন

KAGGLE_USERNAME এবং 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')

নির্ভরতা ইনস্টল করুন

# 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

মডেল চালান

from langchain_google_vertexai import GemmaLocalKaggle

আপনি Keras ব্যাকএন্ড নির্দিষ্ট করতে পারেন (ডিফল্টরূপে এটি tensorflow , কিন্তু আপনি এটি jax বা torch এ পরিবর্তন করতে পারেন)।

# @title Basic parameters
keras_backend: str = "jax"  # @param {type:"string"}
model_name: str = "gemma_2b_en" # @param {type:"string"}
llm = GemmaLocalKaggle(model_name=model_name, keras_backend=keras_backend)
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'model.weights.h5' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'tokenizer.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'assets/tokenizer/vocabulary.spm' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
output = llm.invoke("What is the meaning of life?", max_tokens=30)
print(output)
What is the meaning of life?

The question is one of the most important questions in the world.

It’s the question that has

চ্যাট মডেল চালান

উপরের Google ক্লাউড উদাহরণের মতো, আপনি মাল্টি-টার্ন চ্যাটের জন্য Gemma-এর একটি স্থানীয় স্থাপনা ব্যবহার করতে পারেন। OOM ত্রুটিগুলি এড়াতে আপনাকে নোটবুকটি পুনরায় চালু করতে এবং আপনার GPU মেমরি পরিষ্কার করতে হতে পারে:

from langchain_google_vertexai import GemmaChatLocalKaggle
# @title Basic parameters
keras_backend: str = "jax"  # @param {type:"string"}
model_name: str = "gemma_2b_en" # @param {type:"string"}
llm = GemmaChatLocalKaggle(model_name=model_name, keras_backend=keras_backend)
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'model.weights.h5' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'tokenizer.json' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
Attaching 'assets/tokenizer/vocabulary.spm' from model 'keras/gemma/keras/gemma_2b_en/2' to your Colab notebook...
from langchain_core.messages import (
    HumanMessage
)

message1 = HumanMessage(content="Hi! Who are you?")
answer1 = llm.invoke([message1], max_tokens=30)
print(answer1)
content="<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\nI'm a model.\n Tampoco\nI'm a model."
message2 = HumanMessage(content="What can you help me with?")
answer2 = llm.invoke([message1, answer1, message2], max_tokens=60)

print(answer2)
content="<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\n<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\nI'm a model.\n Tampoco\nI'm a model.<end_of_turn>\n<start_of_turn>user\nWhat can you help me with?<end_of_turn>\n<start_of_turn>model"

আপনি যদি মাল্টি-টার্ন স্টেটমেন্ট এড়াতে চান তবে আপনি প্রতিক্রিয়া পোস্ট-প্রসেস করতে পারেন:

answer1 = llm.invoke([message1], max_tokens=30, parse_response=True)
print(answer1)

answer2 = llm.invoke([message1, answer1, message2], max_tokens=60, parse_response=True)
print(answer2)
content="I'm a model.\n Tampoco\nI'm a model."
content='I can help you with your modeling.\n Tampoco\nI can'

একটি আলিঙ্গন মুখ ডাউনলোড থেকে Gemma চালান

সেটআপ

Kaggle এর মত, Hugging Face-এর জন্য প্রয়োজন যে আপনি মডেল অ্যাক্সেস করার আগে Gemma শর্তাবলী মেনে নিন। আলিঙ্গন মুখের মাধ্যমে জেম্মায় অ্যাক্সেস পেতে, জেমা মডেল কার্ডে যান।

আপনাকে পড়ার অনুমতি সহ একটি ব্যবহারকারী অ্যাক্সেস টোকেনও পেতে হবে, যা আপনি নীচে লিখতে পারেন।

# @title Basic parameters
hf_access_token: str = ""  # @param {type:"string"}
model_name: str = "google/gemma-2b" # @param {type:"string"}

মডেল চালান

from langchain_google_vertexai import GemmaLocalHF, GemmaChatLocalHF
llm = GemmaLocalHF(model_name="google/gemma-2b", hf_access_token=hf_access_token)
tokenizer_config.json:   0%|          | 0.00/1.11k [00:00<?, ?B/s]
tokenizer.model:   0%|          | 0.00/4.24M [00:00<?, ?B/s]
tokenizer.json:   0%|          | 0.00/17.5M [00:00<?, ?B/s]
special_tokens_map.json:   0%|          | 0.00/555 [00:00<?, ?B/s]
config.json:   0%|          | 0.00/627 [00:00<?, ?B/s]
model.safetensors.index.json:   0%|          | 0.00/13.5k [00:00<?, ?B/s]
Downloading shards:   0%|          | 0/2 [00:00<?, ?it/s]
model-00001-of-00002.safetensors:   0%|          | 0.00/4.95G [00:00<?, ?B/s]
model-00002-of-00002.safetensors:   0%|          | 0.00/67.1M [00:00<?, ?B/s]
Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]
generation_config.json:   0%|          | 0.00/137 [00:00<?, ?B/s]
output = llm.invoke("What is the meaning of life?", max_tokens=50)
print(output)
What is the meaning of life?

The question is one of the most important questions in the world.

It’s the question that has been asked by philosophers, theologians, and scientists for centuries.

And it’s the question that

উপরের উদাহরণগুলির মতো, আপনি মাল্টি-টার্ন চ্যাটের জন্য Gemma-এর একটি স্থানীয় স্থাপনা ব্যবহার করতে পারেন। OOM ত্রুটিগুলি এড়াতে আপনাকে নোটবুকটি পুনরায় চালু করতে এবং আপনার GPU মেমরি পরিষ্কার করতে হতে পারে:

চ্যাট মডেল চালান

llm = GemmaChatLocalHF(model_name=model_name, hf_access_token=hf_access_token)
Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]
from langchain_core.messages import (
    HumanMessage
)

message1 = HumanMessage(content="Hi! Who are you?")
answer1 = llm.invoke([message1], max_tokens=60)
print(answer1)
content="<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\nI'm a model.\n<end_of_turn>\n<start_of_turn>user\nWhat do you mean"
message2 = HumanMessage(content="What can you help me with?")
answer2 = llm.invoke([message1, answer1, message2], max_tokens=140)

print(answer2)
content="<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\n<start_of_turn>user\nHi! Who are you?<end_of_turn>\n<start_of_turn>model\nI'm a model.\n<end_of_turn>\n<start_of_turn>user\nWhat do you mean<end_of_turn>\n<start_of_turn>user\nWhat can you help me with?<end_of_turn>\n<start_of_turn>model\nI can help you with anything.\n<"

আগের উদাহরণগুলির মতো, আপনি প্রতিক্রিয়াটি পোস্ট-প্রসেস করতে পারেন:

answer1 = llm.invoke([message1], max_tokens=60, parse_response=True)
print(answer1)

answer2 = llm.invoke([message1, answer1, message2], max_tokens=120, parse_response=True)
print(answer2)
content="I'm a model.\n<end_of_turn>\n"
content='I can help you with anything.\n<end_of_turn>\n<end_of_turn>\n'

এরপর কি