このページでは、Microsoft Azure OpenAI から Vertex AI PaLM API に移行するために必要な手順について説明します。
目標
PaLM API は、Google Cloud コンソールを使用して生成モデルを作成、トレーニングできるクラウドベースのフルマネージド サービスです。大規模言語モデル(LLM)にアクセスして、chatbot、コンテンツ生成ツール、クリエイティブ ツールなど、さまざまなアプリケーションを作成できます。
前提条件
OpenAI サービスを Microsoft Azure Open AI から Vertex AI PaLM API に移行するには、まず Google Cloud プロジェクトと開発環境を作成する必要があります。詳細については、Google Cloud プロジェクトと開発環境を設定するをご覧ください。
PaLM API に移行する
Microsoft Azure の OpenAI プロジェクトから PaLM API に移行する方法については、次のトピックをご覧ください。
同等の PaLM API パラメータを使用する
一般的な Azure OpenAI パラメータと、PaLM API の同等のパラメータを次に示します。
OpenAI パラメータ | PaLM API パラメータ | 説明 | 有効な値 |
prompt |
prompt |
プロンプトとは、レスポンスを受け取るために言語モデルに送信される自然言語リクエストです。プロンプトには、モデルを完了または続行するための質問、手順、コンテキスト情報、例、テキストを含めることができます。 | テキスト |
temperature |
temperature |
温度は、レスポンス生成時のサンプリングに使用されます。レスポンスの生成は、topP と topK が適用された場合に行われます。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が 0 の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。モデルが返すレスポンスが一般的すぎたり、短すぎたり、フォールバック(代替)レスポンスが返ってきたりする場合は、Temperature を高くしてみてください。 |
0.0 –1.0
|
max_tokens |
maxOutputTokens |
レスポンスで生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンは約 60~80 語に相当します。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。 |
1-8192 (OpenAI)
|
利用不可 | topK |
トップ K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(温度を使用します)。トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンは Top-P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。 ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。 |
1 –40
|
top_p |
topP |
トップ P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いもの(Top-K を参照)から低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 であり、Top-P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。 |
0.0 –1.0
|
同等の PaLM API モデルを使用する
次の表に、使用可能な基盤モデルを示します。
型 | 説明 | OpenAI エンドポイント | PaLM API LLM エンドポイント |
テキスト | 自然言語による指示に対応できるようファインチューニングされていて、さまざまな言語タスクに適しています。 | gpt-3.5-turbo または gpt-4 |
text-bison@002
|
チャット | マルチターンの会話向けにファインチューニングされています。 | gpt-3.5-turbo または gpt-4 |
chat-bison@002
|
エンベディング | テキスト入力に対してモデルのエンベディングを返すようにファインチューニングされています。 | text-embedding-ada-002
|
textembedding-gecko@003
|
Vertex AI での生成 AI のインストール、インポート、認証
Vertex AI SDK for Python を使用して、Vertex AI で生成 AI のインストール、インポート、認証を行います。以下に、Vertex AI SDK for Python のメソッドと Azure OpenAI のメソッドの対応表を示します。
Vertex AI PaLM API をインストールする
Azure OpenAI
$ pip install --upgrade openai
Vertex AI PaLM API
$ pip install google-cloud-aiplatform
Vertex AI PaLM API をインポートする
Azure OpenAI
import openai
Vertex AI PaLM API
from vertexai.preview.language_models import TextGenerationModel
Vertex AI PaLM API を認証する
Azure OpenAI
openai.api_key = os.getenv("OPENAI_API_KEY")
Vertex AI PaLM API
from google.colab import auth as google_auth
google_auth.authenticate_user()
Vertex AI PaLM API と Azure の比較とサンプルコード
Vertex AI SDK for Python を使用してテキストを生成する
Azure OpenAI
from openai import OpenAI
client = OpenAI()
response = client.completions.create(prompt="Hello",
max_tokens=256,
temperature=0.3,
model="gpt-4")
print(f"Response from Model: {response['choices'][0]['text']}")
Vertex AI PaLM API
from vertexai.preview.language_models import TextGenerationModel
model = TextGenerationModel.from_pretrained("text-bison@002")
response = model.predict(
"Hello",
max_output_tokens=256,
temperature=0.3,)
print(f"Response from Model: {response.text}")
Vertex AI SDK for Python でチャット補完を使用する
Azure OpenAI
from openai import OpenAI
client = OpenAI()
parameters = {
"model":"gpt-4",
"temperature": 0.2,
"max_tokens": 256,
"top_p": 0.95}
chat = client.chat.completions.create(
messages=[
{"role": "system", "content": "My name is Miles. You are an astronomer, knowledgeable about the solar system."},
{"role": "user", "name":"example_user", "content": "How many planets are there in the solar system?"}
],
**parameters)
response = chat['choices'][0]
print(f"Response from Azure OpenAI Model: {response.text}")
Vertex AI PaLM API
from vertexai.preview.language_models import ChatModel
chat_model = ChatModel.from_pretrained("chat-bison@002")
parameters = {
"temperature": 0.2,
"max_output_tokens": 256,
"top_p": 0.95}
chat = chat_model.start_chat(context="My name is Miles. You are an astronomer, knowledgeable about the solar system.")
response = chat.send_message(
"How many planets are there in the solar system?",
**parameters)
print(f"Response from Google GenAI Model: {response.text}")
Vertex AI SDK for Python でテキスト エンベディングを使用する
Azure OpenAI
import openai
embeddings = openai.Embedding.create(
deployment_id="text-embedding-ada-002",
#engine="text-embedding-ada-002",
input="What is life?"
)["data"][0]["embedding"]
print(f'Length of Embedding Vector: {len(embeddings)}')
Vertex AI PaLM API
from vertexai.preview.language_models import TextEmbeddingModel
model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings(["What is life?"])
for embedding in embeddings:
vector = embedding.values
print(f'Length of Embedding Vector: {len(vector)}')
次のステップ
- Vertex AI Studio でプロンプトをテストする方法を学習する。
- テキストとチャットのプロンプト設計について詳細を確認する。
- テキスト エンベディングの詳細を確認する。
- 基盤モデルを調整する方法を学習する。