皆様、こんにちは!
アイレット株式会社 DX開発事業部の楊林と申します。
前回の投稿では、Google Cloud でストレージに関連するさまざまなサポートサービスについて整理しました。
今回はその流れとして、Google Cloud におけるプロンプトエンジニアリングについて整理していきます。
生成AI
まずは生成AIとは何かから見ていきます。
生成AI(生成的人工知能)とは、AIの一分野であり、生成モデルを用いてテキストや画像などの新しいコンテンツを生成できる技術を指します。多くの場合、ユーザーが与えたプロンプトに応答する形で結果が生成されます。
ここでいうプロンプトとは、特定の行動や回答を引き出すためにモデルに与える指示や質問のことです。現在主流となっている生成AIは、会話型プログラムのように振る舞い、ユーザーからの入力をもとに文脈を理解しながらコンテンツを生成します。
生成AIモデルは、事前に大量のトレーニングデータから言語や構造のパターンを学習しています。その結果として、入力と類似した特性を持つ新しいデータを生成できるようになります。
大規模言語モデル(LLM)
大規模言語モデルとは
大規模言語モデルとは、大量のデータで事前学習された汎用的な言語モデルのことを指します。生成AIという概念は、テキスト以外にも画像や音声など幅広い生成モデルを含みますが、大規模言語モデルはその中でも言語タスクに特化した生成AIのサブセットと位置づけられます。
「大規模」とは、主にトレーニングデータセットのサイズとモデルが持つパラメータ数の多さを意味します。トレーニングデータはペタバイト規模になることもあり、パラメータ数も数十億から数兆に及ぶ場合があります。これらのパラメータは、モデルが学習した知識や振る舞いを内部的に保持するための要素であり、モデルの表現力や問題解決能力に大きく影響します。
また「汎用」とは、特定のタスクに限定されず、さまざまな言語処理に対応できることを意味します。これは、人間の言語に共通する構造や文脈を学習しているためです。
大規模言語モデルは、まず一般的な目的のために大規模データセットで事前トレーニングされ、その後、特定の用途に合わせてファインチューニングされることがあります。
事前トレーニング
LLMにプロンプトを送信すると、モデルは次に続く単語や文が出現する確率を内部的に計算しながら応答を生成します。この確率分布を学習する過程が、事前トレーニングです。
事前トレーニングでは、テキストやコード、場合によっては画像を含む大規模なデータセットが使用されます。これによりモデルは言語の基本構造や文脈のつながりを学習し、人間の言語をより自然に理解・生成できるようになります。その結果、LLMは高度な予測入力のように機能し、与えられたプロンプトに対して最も尤もらしい回答を生成します。
ハルシネーション
ハルシネーションとは、モデルが一見もっともらしいものの、事実としては誤っている内容や意味の通らない回答を生成してしまう現象を指します。
このような現象が起こる理由の一つは、LLMがトレーニング時に使用されたデータの範囲内でしか知識を持たない点にあります。企業独自のデータや特定ドメインの最新情報は、モデルが知らない可能性があります。また、リアルタイムで外部情報を参照しているわけではないため、情報の鮮度も保証されません。
さらに、LLMは与えられたプロンプトを前提として応答を生成するため、プロンプト自体が不十分だったり曖昧だったりすると、その前提を疑うことなく回答を組み立ててしまいます。その結果、誤解を招く内容が生成されることがあります。
トレーニングデータが不十分である場合や、ノイズの多いデータで学習されている場合、また十分な文脈や制約がプロンプトとして与えられていない場合には、ハルシネーションが発生しやすくなります。このため、人間側での確認が重要になります。
Gemini
GeminiはGoogle Cloudが提供する生成AIモデルであり、開発者や運用担当者を支援するコラボレーターとして位置づけられています。Google Cloudのさまざまなプロダクトに統合されており、クラウド利用者が日常的に直面する課題の解決を支援します。
GeminiはGoogle Cloudのドキュメントやチュートリアル、サンプルコードなど、公開されている情報を踏まえた支援が可能です。適切なプロンプトを与えることで、リソース構成に関する提案や設計の考え方を得ることができ、場合によっては具体的な gcloud コマンドの形で示されることもあります。これにより、設計検討や検証作業を効率的に進めることができます。
プロンプトエンジンリング
プロンプトエンジニアリングとは、モデルから適切で高品質な出力を得るために、プロンプトを意図的に設計・調整する考え方です。プロンプトが明確であるほど、モデルの出力精度も高まります。
プロンプトはその質問の形式によって四つのカテゴリがあります。
- ゼロショット:モデルに役立つコンテキストや例が含まれません
- ワンショット:モデルにコンテキストとして例が1つ与えられます
- 小数ショット:モデルに複数の例がコンテキストとして与えられます
- ロール:モデルが質問に回答する際に使用する枠組みが必要になります
プロンプトは大きく、導入部分と入力そのものに分けて考えることができます。導入部分では、タスクの背景や前提条件、期待する出力の形式などを示し、モデルがどのように振る舞うべきかを明確にします。そのうえで、実際に解決してほしい問いや対象となる入力を与えます。
実践的には、指示を具体的かつ明確に記述し、プロンプトの範囲を適切に限定することが重要です。また、モデルにペルソナを与えることで出力の一貫性が向上する場合もあります。文章はできるだけ簡潔にし、意図が曖昧にならないよう心がけることが、良いプロンプトにつながります。
最後に
今回は、Google Cloud におけるプロンプトエンジニアリングについて整理しました。
次回は、Google Cloud のオペレーションスイートについてまとめていく予定です。
続けて読んでいただけると嬉しいです。
以前の投稿
【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎
【Google Cloud入門】コンピューティングオプションとマネージドインスタンスグループ
【Google Cloud入門】GKE入門の前準備-コンテナの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの構成
【Google Cloud入門】Googleのコンテナ仮想環境ーGoogle Kubernetes Engine
【Google Cloud入門】GCEとGKE以外のコンピューティングサービス
【Google Cloud入門】Google Cloudネットワークの基礎
【Google Cloud入門】Google Cloudネットワークへの接続とVPCの共有
【Google Cloud入門】Google Cloudネットワークの負荷分散
【Google Cloud入門】オブジェクトストレージサービスーCloud Storage
【Google Cloud入門】Google Cloudの構造化データストレージサービス
【Google Cloud入門】Google Cloudのストレージサービスの選び方
【Google Cloud入門】ストレージに関連する様々なサポートサービス