🤖

Google Cloud で生成 AI アプリケーションを作ろう!パート 1:生成 AI ソリューションを使うための基本的なセットアップ

2023/08/15に公開

はじめに

このパートでは、まずは Google Cloud の利用環境を準備して、クラウドコンソールから大規模言語モデル(LLM)によるチャット機能を試します。また、Vertex AI Workbench を利用して、ノートブックから、大規模言語モデルの API である PaLM API を利用してみます。

Google Cloud のアカウント登録

Google Cloud をまだ使っていない方は、はじめに、Google Cloud のアカウント登録が必要です。Google Cloud にアクセスし、[無料で開始]をクリックします。ログインを求められた場合は、既存の Google アカウントでログインしてください。

アカウント情報の登録画面が表示されるので、支払い方法(クレジットカード/デビットカード)などを登録します。登録直後は、無料トライアル期間が設定されており、90 日間有効の $300 分のクレジットを無償で利用できます。無料期間が過ぎるとアカウントは一時停止されるため、利用を継続するには手動で有料アカウントにアップグレードする必要があります。

プロジェクトの作成

Google Cloudを使ってシステムを開発するときは、まずプロジェクトを作成します。プロジェクト内で作成した仮想マシンやストレージなどのリソースに対して、プロジェクト単位での課金が行われます。使用中のプロジェクトをシャットダウンすると、その中で利用していたリソースはすべて削除され、一切の課金が行われなくなります。テスト用のプロジェクトを作成して、テストが終われば、プロジェクトごとシャットダウンするという使い方も可能です。このようにすれば、リソースを停止・削除し忘れて、無駄な課金が発生する心配がありません。

それでは、プロジェクトを作成します。クラウドコンソールをブラウザで開き、左上の[プロジェクトの選択]をクリックすると、既存のプロジェクト一覧が表示されます。

ここから新しいプロジェクトを作ります。[新しいプロジェクト]をクリックします。

「プロジェクト名」に任意の名前を入力して、[作成]をクリックすると、プロジェクトが作成されます。

Google Cloud でプロジェクトを作成すると、プロジェクト ID と呼ばれる一意の識別子が割り当てられます。先ほど入力したプロジェクト名をもとに自動生成されますが、既存のプロジェクトとの重複がなければ、任意の値を設定することもできます。API リクエストを送信する際などに、プロジェクト IDを 用いて対象のプロジェクトを指定することがありますので、覚えやすい値を設定することをお勧めします。

API の有効化

Google Cloud では、使用するサービスの API を事前に有効化する必要があります。これは、意図しない API の使用を防止して、使用していないサービスに対する課金を防ぐためのものです。

ここでは、次の3つの API を有効化します。

  • Vertex AI API:Google Cloud で機械学習に関わるサービスを提供します。今回は、生成 AI の API を利用するために有効化します。

  • Notebooks API:Vertex AI Workbench の環境を用意して、ノートブックを利用するために有効化します。

  • Cloud Translation API:テキスト翻訳の機能を提供します。今回は、英語で出力された結果を日本語に翻訳するために使用します。

コンソール画面の左上にあるナビゲーションメニューのボタンを押すと各種サービスのリストが出てくるので、[API とサービス]-[ライブラリ]を選択します。

画面上部の検索窓に「Vertex AI API」と入力します。

「Vertex AI API」 が検索結果に表示されるのでクリックします。

[有効にする]をクリックしてしばらく待つと、Vertex AI API が使用可能になります。

同様の作業を Notebooks API と Cloud Translation API についても行ってください。

Generative AI Studio で生成 AI を体験する

Generative AI Studio を使うと、クラウドコンソールの GUI 画面から生成 AI のさまざまな機能が利用できます。ここでは、画面左上のナビゲーションメニューから[Vertex AI]-[GENERATIVE AI STUDIO]-[概要]を選択します。次の画面からわかるように、「言語」「音声」「ビジョン」の 3 種類の機能が利用できますが、ここでは、[言語]を選択して、言語モデルを試します。

[言語]の下にある[開く]をクリックします。

次の画面が表示されるので、[会話を開始]の下の[TEXT CHAT]をクリックします。

会話のためのテキストボックスが表示されて、ここから言語モデルと自由に会話できます。画面の下に「会話を継続」というテキストボックスがあるので、そこにテキストを入力すると、次の様に会話ができます。

Vertex AI Workbench でノートブックを用意する

Vertex AI Workbench を利用すると、プロジェクト内に Jupyter Lab の環境を用意して、ノートブックが使用できます。ここでは、Workbench の環境を立ち上げて、新規のノートブックを開くところまで作業を進めます。

ナビゲーションメニューから[Vertex AI]- [ワークベンチ]を選択します。画面上部のタブで「マネージドノートブック」を選択して、[新しいノートブック]をクリックします。

任意の名前を設定して、[作成]をクリックします。

インスタンスの起動が完了するまで数分かかります。起動が完了すると緑色のチェックマークが表示されるので、[JUPYTERLAB を開く]をクリックします。

ローンチャーの画面が開くので、「Notebook」のセクションにある[Python(Local)]をクリックすると、新規のノートブックが開きます。

Python のコードから API サービスを利用する

新規のノートブックが用意できたので、さっそく、Python のコードを用いて、生成 AI の機能を利用してみましょう。ここで説明する内容が理解できれば、同じコードを独自のアプリケーションに組み込むこともそれほど難しくないでしょう。

ノートブック上にコードを入力するセルがあるので、この部分にコードを入力して、上部の実行ボタン ▶️ をクリックすると実行結果がその下に表示されます。+ ボタンをクリックするとコード用のセルが追加できます。

ここでは、はじめに、API の利用に必要なクライアントライブラリーをインストールします。次のコードをセルに入力して、実行します。ERROR: pip's dependency resolver does not… というエラーメッセージが表示される場合がありますが、今回はこのメッセージは無視してください。

!pip install google-cloud-aiplatform --upgrade --user
!pip install google-cloud-translate==2.0.1 --user

ライブラリーをインストールした直後は、一度、ノートブックのカーネルを再起動する必要があります。再起動ボタン(下図の回転矢印ボタン)をクリックして、カーネルを再起動します。

この後は、上図の + ボタンをクリックしてコード用のセルを追加しながら、コードを順番に実行していきます。次は、クライアントライブラリーのモジュールをインポートして、クライアントオブジェクトを取得します。

from vertexai.preview.language_models import TextGenerationModel
from google.cloud import translate_v2 as translate

generation_model = TextGenerationModel.from_pretrained('text-bison@001')
translate_client = translate.Client()

ここでは、PaLM API のクライアントに加えて、Translation API のクライアントも用意していますが、これは、言語モデルが英語で返答した内容を日本語に翻訳するために使用します。日本語に翻訳する関数を次の様に定義しておきます。

def translate_text(text):
    translated = ['', '[日本語訳]', '']
    for line in text.split('\n'):
        result = translate_client.translate(line, target_language='ja')
        translated.append(result['translatedText'])
    return '\n'.join(translated)

次に、言語モデルに質問を投げて、回答を得る関数を定義します。ここでは、英語の回答に続けて、日本語訳も表示する様にしてあります。

def show_answer(prompt):
    answer = generation_model.predict(
        prompt, temperature=0.2, max_output_tokens=1024,
        top_k=40, top_p=0.8).text
    print(answer)
    print(translate_text(answer))

それでは、さっそく、言語モデルに質問してみましょう。ここでは、「持続可能なファッション」についてのキャンペーンメッセージを作ってもらいます。

prompt = "Generate a marketing campaign for sustainability and fashion"
show_answer(prompt)

このコードを実行すると、次のような回答が表示されます。

**Headline:** Sustainable fashion: A new way to look good and feel good

**Body:**

Sustainable fashion is the future. It's a way to look good and feel good, while also protecting the environment.

When you buy sustainable fashion, you're not just buying a new outfit. You're also making a statement about your values. You're saying that you care about the planet, and you want to make a difference.

(中略)

[日本語訳]

**見出し:** 持続可能なファッション: 見た目も気分も良くする新しい方法

**体:**

持続可能なファッションは未来です。それは環境を保護しながら、見た目も気分も良くする方法です。

サステナブルなファッションを購入するとき、単に新しい服を購入するわけではありません。あなたは自分の価値観についても表明しています。あなたは地球のことを気にかけていて、変化を起こしたいと言っています。

(以下省略)

変数 prompt に入力する内容を変えると、返ってくる回答も変わります。言語モデルにいろいろな質問を投げかけてみてください。ここで説明したコードを入力済みのノートブックが GitHub で公開されていますので、こちらも参考にしてください。

まとめ

今回は、Google Cloud の生成 AI サービスを利用する環境を用意しました。Vertex AI Workbench のノートブックを用いて、Python のコードから API を呼び出すことができましたので、次回からは、アプリケーションとして活用できそうなコードの例を紹介してきます。お楽しみに!

Google Cloud Japan

Discussion