Filloni me Gemma dhe LangChain

Ky udhëzues ju tregon se si të filloni me Gemma dhe LangChain , duke ekzekutuar në Google Cloud ose në mjedisin tuaj Colab. Gemma është një familje modelesh të hapura me peshë të lehtë dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini. LangChain është një kornizë për ndërtimin dhe vendosjen e aplikacioneve të vetëdijshme për kontekstin e mbështetur nga modele gjuhësore.

Ekzekutoni Gemma në Google Cloud

Paketa langchain-google-vertexai siguron integrimin e LangChain me modelet e Google Cloud.

Instaloni varësitë

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

Autentifiko

Nëse nuk përdorni Colab Enterprise, duhet të vërtetoni.

from google.colab import auth
auth.authenticate_user()

Vendosni modelin

Vertex AI është një platformë për trajnimin dhe vendosjen e modeleve dhe aplikacioneve të AI. Model Garden është një koleksion i kuruar i modeleve që mund t'i eksploroni në tastierën e Google Cloud.

Për të vendosur Gemma, hapni modelin në Model Garden për Vertex AI dhe plotësoni hapat e mëposhtëm:

  1. Zgjidhni Vendosni .
  2. Bëni çdo ndryshim të dëshiruar në fushat e formularit të vendosjes ose lërini ashtu siç janë, nëse jeni në rregull me parazgjedhjet. Vini re fushat e mëposhtme, të cilat do t'ju nevojiten më vonë:
    • Emri i pikës fundore (për shembull, google_gemma-7b-it-mg-one-click-deploy )
    • Rajoni (për shembull, us-west1 )
  3. Zgjidhni Deploy për të vendosur modelin në Vertex AI. Vendosja do të marrë disa minuta për të përfunduar.

Kur pika përfundimtare të jetë gati, kopjoni ID-në e projektit, ID-në e pikës fundore dhe vendndodhjen dhe futini ato si parametra.

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

Drejtoni modelin

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

Ju gjithashtu mund të përdorni Gemma për bisedë me shumë kthesa:

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'

Ju mund të përgjigjeni pas procesit për të shmangur përsëritjet:

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

Ekzekutoni Gemma nga një shkarkim Kaggle

Ky seksion ju tregon se si të shkarkoni Gemma nga Kaggle dhe më pas të ekzekutoni modelin.

Për të përfunduar këtë seksion, së pari do t'ju duhet të plotësoni udhëzimet e konfigurimit në konfigurimin e Gemma .

Më pas kaloni në seksionin tjetër, ku do të vendosni variablat e mjedisit për mjedisin tuaj Colab.

Vendosni variablat e mjedisit

Cakto variablat e mjedisit për KAGGLE_USERNAME dhe 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')

Instaloni varësitë

# 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

Drejtoni modelin

from langchain_google_vertexai import GemmaLocalKaggle

Mund të specifikoni backend-in Keras (si parazgjedhje është tensorflow , por mund ta ndryshoni në jax ose 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

Ekzekutoni modelin e bisedës

Ashtu si në shembullin e Google Cloud më sipër, mund të përdorni një vendosje lokale të Gemma për një bisedë me shumë kthesa. Mund t'ju duhet të rindizni fletoren dhe të pastroni memorien tuaj GPU në mënyrë që të shmangni gabimet OOM:

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"

Ju mund ta përpunoni pas përgjigjen nëse dëshironi të shmangni deklaratat me shumë kthesa:

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'

Ekzekutoni Gemma nga shkarkimi i një fytyre përqafuese

Konfigurimi

Ashtu si Kaggle, Hugging Face kërkon që të pranoni termat dhe kushtet e Gemma përpara se të përdorni modelin. Për të pasur akses te Gemma përmes Hugging Face, shkoni te karta e modelit Gemma .

Do t'ju duhet gjithashtu të merrni një shenjë hyrjeje përdoruesi me leje leximi, të cilën mund ta vendosni më poshtë.

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

Drejtoni modelin

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

Ashtu si në shembujt e mësipërm, mund të përdorni një vendosje lokale të Gemma për bisedë me shumë kthesa. Mund t'ju duhet të rindizni fletoren dhe të pastroni memorien tuaj GPU në mënyrë që të shmangni gabimet OOM:

Ekzekutoni modelin e bisedës

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<"

Ashtu si në shembujt e mëparshëm, ju mund ta përpunoni pas përgjigjen:

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'

Çfarë është më pas