ai.google.dev'de görüntüleyin | Google Colab'de çalıştır | Kaynağı GitHub'da görüntüleyin |
Bu eğitim, Google Cloud'da veya Colab ortamınızda çalışan Gemma ve LangChain'i nasıl kullanmaya başlayacağınızı gösterir. Gemma, Gemini modellerini oluştururken kullanılan araştırma ve teknolojiyle oluşturulmuş, hafif ve son teknoloji ürünü açık modellerden oluşan bir ailedir. LangChain, dil modelleri tarafından desteklenen bağlama duyarlı uygulamalar oluşturmak ve dağıtmak için kullanılan bir çerçevedir.
Gemma'yı Google Cloud'da çalıştırın
langchain-google-vertexai
paketi, Google Cloud modelleriyle LangChain entegrasyonu sağlar.
Bağımlıları yükleme
pip install --upgrade -q langchain langchain-google-vertexai
Kimliği doğrula
Colab Enterprise kullanmıyorsanız kimliğinizi doğrulamanız gerekir.
from google.colab import auth
auth.authenticate_user()
Modeli dağıtma
Vertex AI, AI modellerini ve uygulamalarını eğitme ve dağıtma platformudur. Model Garden, Google Cloud Console'da keşfedebileceğiniz, özenle seçilmiş model koleksiyonudur.
Gemma'yı dağıtmak için Model Garden'da Vertex AI'da modeli açın ve aşağıdaki adımları uygulayın:
- Dağıt'ı seçin.
- Dağıtım formu alanlarında istediğiniz değişiklikleri yapın veya varsayılan ayarlar sizin için geçerliyse bu alanları olduğu gibi bırakın. Daha sonra ihtiyacınız olacak aşağıdaki alanları not edin:
- Uç nokta adı (örneğin,
google_gemma-7b-it-mg-one-click-deploy
) - Bölge (örneğin,
us-west1
)
- Uç nokta adı (örneğin,
- Modeli Vertex AI'a dağıtmak için Deploy'u (Dağıt) seçin. Dağıtımın tamamlanması birkaç dakika sürer.
Uç nokta hazır olduğunda proje kimliğini, uç nokta kimliğini ve konumunu kopyalayıp parametre olarak girin.
# @title Basic parameters
project: str = "" # @param {type:"string"}
endpoint_id: str = "" # @param {type:"string"}
location: str = "" # @param {type:"string"}
Modeli çalıştırma
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'yı çok dönüşlü sohbet için de kullanabilirsiniz:
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'
Tekrarları önlemek için yanıtları işleme sonrası uygulayabilirsiniz:
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 indirmesinden Gemma çalıştırın
Bu bölümde, Gemma'yı Kaggle'dan nasıl indireceğiniz ve ardından modeli nasıl çalıştıracağınız gösterilmektedir.
Bu bölümü tamamlamak için, önce Gemma kurulumu sayfasındaki kurulum talimatlarını tamamlamanız gerekir.
Ardından, Colab ortamınız için ortam değişkenlerini belirleyeceğiniz bir sonraki bölüme geçin.
Ortam değişkenlerini ayarlama
KAGGLE_USERNAME
ve KAGGLE_KEY
için ortam değişkenlerini ayarlayın.
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')
Bağımlıları yükleme
# 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
Modeli çalıştırma
from langchain_google_vertexai import GemmaLocalKaggle
Keras arka ucunu belirtebilirsiniz (varsayılan olarak tensorflow
değerine sahiptir, ancak jax
veya torch
olarak değiştirebilirsiniz).
# @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
Sohbet modelini çalıştırma
Yukarıdaki Google Cloud örneğinde olduğu gibi, çok dönüşlü sohbet için yerel bir Gemma dağıtımını kullanabilirsiniz. OOM hatalarını önlemek için not defterini yeniden başlatmanız ve GPU belleğinizi temizlemeniz gerekebilir:
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"
Çok dönüşlü ifadelerden kaçınmak isterseniz yanıtı işleme sonrası gönderebilirsiniz:
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'
Hugging Face'ten Gemma'yı indirin
Kurulum
Kaggle gibi Hugging Face de modele erişmeden önce Gemma şartlarını ve koşullarını kabul etmenizi gerektirir. Gemma'ya Sarılan Yüz aracılığıyla erişmek için Gemma modeli kartına gidin.
Ayrıca, aşağıya girebileceğiniz okuma izinlerine sahip bir kullanıcı erişim jetonu almanız gerekir.
# @title Basic parameters
hf_access_token: str = "" # @param {type:"string"}
model_name: str = "google/gemma-2b" # @param {type:"string"}
Modeli çalıştırma
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
Yukarıdaki örneklerde olduğu gibi, çok yönlü sohbet için yerel bir Gemma dağıtımı kullanabilirsiniz. OOM hatalarını önlemek için not defterini yeniden başlatmanız ve GPU belleğinizi temizlemeniz gerekebilir:
Sohbet modelini çalıştırma
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<"
Önceki örneklerde olduğu gibi, yanıtın işlenmesini gerçekleştirebilirsiniz:
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'
Sırada ne var?
- Gemma modeline nasıl ince ayar yapacağınızı öğrenin.
- Gemma modelinde dağıtılmış ince ayar ve çıkarım yapmayı öğrenin.
- Gemma modellerini Vertex AI ile nasıl kullanacağınızı öğrenin.