Google Cloud上でGoogleのマルチモーダルモデル Gemini をVertex AIから使ってみた

2023.12.14

こんちには。

データアナリティクス事業本部 インテグレーション部 機械学習チームの中村です。

この記事は、ブログリレー『Google CloudのAI/MLとかなんとか』の7本目の記事になります。

ブログリレーをしているさなか、Googleが作ったマルチモーダルモデルであるGeminiがVertex AIでAvailableとなりました。

ということで今回は、Vertex AIからGeminiを使ってみます。

Geminiについて

以下に詳しい説明があります。

GeminiはUltra、Pro、Nanoの3つのサイズがありますが、Vertex AIからはProを使用することができます。

ユースケース等は以下に記載があります。

Gemini ProとGemini Pro Visionがあり、Gemini Proはテキスト用となっているようです。

Gemini Pro Visionのユースケースとして以下が紹介されています。

  • 情報探索 : 世界の知識と画像やビデオから抽出した情報を組み合わせる。
  • オブジェクト認識 : 画像や動画内のオブジェクトのきめ細かな識別に関する質問に答える。
  • デジタルコンテンツ理解 : インフォグラフィックス、図表、表、ウェブページのようなコンテンツから情報を抽出して質問に答える。
  • 構造化コンテンツ生成 : 提供されたプロンプトの指示に基づき、HTMLやJSONなどの形式で回答を生成します。
  • キャプション : 説明 さまざまな詳細レベルで画像や動画の説明を生成します。
  • 外挿 : 画像に表示されていない部分や、動画の前後で起こっていることを推測します。

モデルの詳細も以下に記載がありました。

Gemini Proのトークン数は32760となっており、出力の最大トークン数は別途8192となっています。

Gemini Pro Visionは、トークン数が半分の16384となっており、出力の最大トークン数は2048となっています。

画像サイズに制限はなく、1プロンプトあたり16個の画像を与えることが可能です。

動画も与えることが可能で、動画は最大2分間、1プロンプトあたり1個の動画を与えることができます。

事前学習データは2023年2月までのものが使われています。

教師有学習やRLHFには現時点ではドキュメント上はサポートされていないと記載されていました。

Pricing

Pricingについては以下のページに記載があります。

こちらによると、

Charges take effect on January 15, 2024.

とありますので、現時点では料金は発生しないようです。価格自体は以下のように記載されていました。

テキストモデルとしては、PaLM 2 for Text (Text Bison)などと同等価格となっているようで、ありがたいですね。

以降、このGeminiを使ってみていきたいと思います。

Vertex AIから使ってみた

まずはVertex AI APIの有効化がされていなければ、有効化します。以下の記事に従ってください。

Vertex AIのコンソールから使ってみた

まずはコンソールから使ってみます。

Vertex AIのメニューのVERTEX AI STUDIOにマルチモーダルが新規で追加されています。

オープンを押下します。

以下のような画面になります。

画像は「INSERT MEDIA」からアップロードでき、テキストも入力できます。

ちなみに使用した画像は以下のようなものです。(ご安心ください、私の登壇時のサムネ画像です)

ローカルマシンからの利用

サービスアカウント作成と秘密鍵の作成

以下を参考にサービスアカウント作成と秘密鍵の作成を行います。

ロールはこちらのブログと同じ「Vertex AI 管理者」で実行できます。

Python環境の構築

つづいて、ローカルで必要なPython環境を構築していきます。

まずPythonのバージョンは3.10.13で実行しました。

またパッケージは、お使いのPython環境に合わせてpipなどでインストールしてください。

私はpoetryを使って入れました。

poetry add google-cloud-aiplatform

以下のバージョンのパッケージが入りました。

google-cloud-aiplatform==1.38.1

Vertex AIの画面の以下の「GET CODE」から取得できるコードを変更し、以下のようにして使用しました。

import os

credentials_json_path = "{認証情報が格納されたjsonファイル}"
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = credentials_json_path

from vertexai.preview.generative_models import GenerativeModel, Part

with open("sample.png", "rb") as f:
    image = Part.from_data(data=f.read(), mime_type="image/png")

model = GenerativeModel("gemini-pro-vision")
responses = model.generate_content(
    [image, """この人のハチマキは何色をしていますか?"""],
    generation_config={
        "max_output_tokens": 2048,
        "temperature": 0.4,
        "top_p": 1,
        "top_k": 32
    },
    stream=True,
)

for response in responses:
    print(response.candidates[0].content.parts[0].text)
 この人のハチマキは青色をしています。

結果がコンソールと同様に得られました。

参考 : Google AI Studioから使用する

以下の記事をみて、それとは別にGoogle AI Studioというものからも使用できることを知りました。

詳細は以下も参照ください。

こちらも参考までに紹介します。

Google AI Studioから使ってみた

以下にアクセスします。

利用ポリシーを承諾すると以下のような画面となります。

こちらでVertex AIのコンソールと同様に使用ができます。

なお前述の記事の通り、Google AI StudioのAPIキーを発行すると、同様にPythonコードからも使用することができます(今回は割愛します)

まとめ

いかがでしたでしょうか。

今回はVertex AIからGoogleのGeminiを使ってみました。

本記事が活用の参考になれば幸いです。