はじめに

この記事では VertexAIを学習していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。なお、内容につきましては2023年8月22日時点の調査内容で記載しております。あらかじめご了承ください。

今回利用するサービス

  • VertexAI
  • Generative AI Studio

今回はPaLM APIが日本語応答に対応しましたので実際に試してみたいと思います。
※ 2023年(今年) の Generative AI Summit で発表されました

このハンズオンでやること

最初に利用サービスの概要をチェックします。次にGenerative AI StudioでAIモデルに触り、Google Cloud 上のJupyter Notebook環境でコードを書いてPythonから AIを起動します。最後に、ハンズオンの内容をまとめ、触ってみた所感や応用例について理解します。

VertexAI とは

公式引用

あらゆるユースケースに対応したフルマネージドの機械学習(ML)ツールを使用して、ML モデルの構築、デプロイ、スケーリングを高速化します。
Vertex AI | Google Cloud より

つまりはGoogle Cloudにおける機械学習(ML)サービスです。複数のサービスにVertexAI と表記されているため、大雑把に捉えると総称名のような認識で問題ないと思います。

PaLMとは

PaLM は、Googleが開発した大規模言語モデル(LLM)のひとつです。最新版はGoogle I/O 2023で発表されたPaLM2であり、VertexAIから提供されます。今回は日本語に対応したPaLM2を触ります。

ハンズオンではPaLMを触るためにGenerative AI Studioを通して触ります。

Generative AI Studioとは

Google Cloudでは様々なAI環境が用意されています。何を使うべきか判断するためにちょっと触ってみたいとか本格的に検証したいなどの用途はよくあると思います。

Generative AI Studioはそんな要望を叶えてくれるサービスで、それぞれの言語モデルに触るための環境といえます。

Vertex AI には、最先端の基盤モデル向けの API と、独自のデータを使用して生成モデルを迅速にプロトタイピング、テスト、調整するためのツールが用意されています。
Generative AI Studio | Google Cloud より

ハンズオン

まずはGoogle Cloudのコンソールを開きます。

Vertex AIと入力してVertex AIをクリックします。

左メニューからGenerative AI Studio の概要を開きます。

言語から開くをクリックします。

テキストチャットでマイプロンプトを作成するためにはテキストプロンプトを作成する必要があるので テキスト プロンプトをクリックします。

無題のプロンプトが表示されますので「Lookerについて説明する」と入力します。

最後に送信ボタンをクリックします。なお、今回は設定はデフォルト値を採用します。

以下のように結果が日本語で表示されます。

これでAIモデルを試すことができました。上記の結果を出力するようなコードを作成すれば、アプリケーションにVertexAIを組み込めます。

コードはスクラッチで書いても良いですが、ここではGenerative AI Studioの機能を体感するために今回のプロンプト結果を出力するコードを出力させてみましょう。

コードを表示をクリックします。

今回はJupyter Notebook上でかつPythonで動かすため、右上のPythonを選択します。
※デフォルトではPythonのコードが表示されるかと思います。

クリップボードへコピーするボタンをクリックします。

※拡大するとこんな感じです。

生成されたコード

コードが表示されましたので実際にコードを見ていきたいと思います。

以下、生成されたコード ※お見せできないところは意図的に伏せています。

import vertexai
from vertexai.language_models import TextGenerationModel

vertexai.init(project="{ProjectID}", location="us-central1")
parameters = {
"temperature": 0.2,
"max_output_tokens": 256,
"top_p": 0.8,
"top_k": 40
}
model = TextGenerationModel.from_pretrained("text-bison@001")
response = model.predict(
"""Lookerについて説明する""",
**parameters
)
print(f"Response from Model: {response.text}")

とてもシンプルですぐに実装できそうなイメージがあります。なお、余談ですが、TextGenerationModelにはpreview版のパッケージも存在します。

環境を構築する

生成されたコードはご自身の環境でも実行しようと思えばできますが、
Vertex AIにはNotebooksという機能があり、ご自身で環境構築をしなくてもJupyter Notebookの環境を利用できます。

今回は生成されたコードをVertex AI ワークベンチで実行します。

Notebookを起動する

Vertex AIのメニューからワークベンチをクリックします。

リージョンはasia-northeast1(Tokyo)を選択します。
ワークベンチからマネージドノートブックをクリックします。新しいノートブックをクリックします。

詳細マシンタイプを設定します。

名前:palm-managed-notebook-20230822-131841
リージョン:asia-northeast1(Tokyo)

一番小さい環境でも動作しますのでn1-standard-1とします。シャットダウンまでのアクティブ時間は10分程度にしておきましょう。最後に作成をクリックします。

JupyterLabを開く

起動が完了しましたらJupyterLabを開くをクリックします。

Python を起動する

Python(Local)をクリックします。

Notebook作成後のセットアップ

パッケージインストールを実行します。1.30.1を利用します。

!pip install --user google-cloud-aiplatform==1.30.1

NotebookからPaLM APIを実行する

VertexAIをNotebookから実行します。下記のようにコードを記述し、実行します。
※プロジェクトIDは伏せています。

import vertexai
from vertexai.language_models import TextGenerationModel

vertexai.init(project="プロジェクトID", location="us-central1")
parameters = {
"temperature": 0.2,
"max_output_tokens": 256,
"top_p": 0.8,
"top_k": 40
}
model = TextGenerationModel.from_pretrained("text-bison@001")
response = model.predict(
"""Lookerについて説明する""",
**parameters
)
print(f"Response from Model: {response.text}")

全体像

結果

片付け

FileからShutdown をクリックします。

Shut Down をクリックします。

インスタンスにチェックを入れて停止をクリックします。

停止が完了しましたら最後に削除をクリックします。

まとめ

Verttex AIのPaLMを使うとコードが自動で作成され、作成されたコードを使うことで簡単にAIを実装できることがわかりました。Web APIなどにも応用できると考えられるので何か作ってみたいと思いました。