![]() |
![]() |
![]() |
يوضّح لك هذا الدليل التعليمي كيفية بدء استخدام Gemma وLangChain، اللذَين يتم تشغيلهما في Google Cloud أو في بيئة Colab. Gemma هي مجموعة من أحدث النماذج المتطوّرة والخفيفة المتاحة للجميع، والتي تم إنشاؤها بناءً على الأبحاث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. LangChain هو إطار عمل لإنشاء تطبيقات واعية بالسياق وتستند إلى نماذج لغوية ونشرها.
تشغيل Gemma في Google Cloud
توفّر حزمة langchain-google-vertexai
دمج LangChain مع نماذج Google Cloud.
تثبيت التبعيات
pip install --upgrade -q langchain langchain-google-vertexai
مصادقة
يجب المصادقة إلا إذا كنت تستخدم Colab Enterprise.
from google.colab import auth
auth.authenticate_user()
نشر النموذج
Vertex AI هي منصة لتدريب نماذج الذكاء الاصطناعي وتطبيقاته ونشرها. "حديقة النماذج" هي مجموعة من النماذج المنظَّمة التي يمكنك استكشافها في Google Cloud Console.
لنشر Gemma، عليك فتح النموذج في Model Garden لـ Vertex AI وإكمال الخطوات التالية:
- اختَر نشر.
- أجرِ أي تغييرات مطلوبة على حقول نموذج النشر، أو اتركها كما هو
إذا كنت راضيًا عن الإعدادات التلقائية. يُرجى تدوين الحقول التالية التي ستحتاج إليها لاحقًا:
- اسم نقطة النهاية (على سبيل المثال،
google_gemma-7b-it-mg-one-click-deploy
) - المنطقة (على سبيل المثال،
us-west1
)
- اسم نقطة النهاية (على سبيل المثال،
- انقر على نشر لنشر النموذج على Vertex AI. سيستغرق النشر بضع دقائق.
عندما تكون نقطة النهاية جاهزة، انسخ معرّف المشروع ومعرّف نقطة النهاية والموقع الجغرافي، وأدخِلها كمَعلمات.
# @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
يمكنك أيضًا استخدام Gemma لإجراء محادثات متعددة الخطوات:
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<'
تشغيل Gemma من عملية تنزيل على Kaggle
يوضّح لك هذا القسم كيفية تنزيل Gemma من Kaggle ثم تشغيل النموذج.
لإكمال هذا القسم، عليك أولاً إكمال تعليمات الإعداد في إعداد 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 Cloud أعلاه، يمكنك استخدام عملية نشر محلية لخدمة Gemma لإجراء محادثات متعددة المقاطع. قد تحتاج إلى إعادة تشغيل الجهاز وتنظيف ذاكرة وحدة معالجة الرسومات لتجنُّب أخطاء "عدم توفّر ذاكرة":
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 من عملية تنزيل Hugging Face
ضبط إعدادات الجهاز
مثل Kaggle، تشترط Hugging Face قبول أحكام وشروط Gemma قبل الوصول إلى النموذج. للوصول إلى Gemma من خلال 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 لإجراء محادثات متعددة الجولات. قد تحتاج إلى إعادة تشغيل الجهاز وتنظيف ذاكرة وحدة معالجة الرسومات لتجنُّب أخطاء "عدم توفّر ذاكرة":
تشغيل نموذج المحادثة
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'
الخطوات التالية
- تعرَّف على كيفية تحسين نموذج Gemma.
- تعرَّف على كيفية إجراء التحسين الموزّع والاستنتاج في نموذج Gemma.
- تعرَّف على كيفية استخدام نماذج Gemma مع Vertex AI.