このチュートリアルでは、watsonx.aiで公開されているMistral AIのPixtral 12Bマルチモーダルモデルを、画像キャプションや視覚的質問応答などのマルチモーダルタスクに適用する方法を紹介します。
2024年9月、Mistral AIはApache 2.0ライセンスのもとでオープンソースの大規模言語モデル(LLM)Pixtral 12Bをリリースしました。
120億のパラメーターを備えたマルチモーダル・モデルは、Mistral AIのNemo 12B LLMに基づいて構築されています。Pixtral 12Bには、画像をトークン化するビジョン・エンコーダーと、一連のテキストと画像が与えられた場合に次のテキスト・トークンを予測するマルチモーダル・トランスフォーマー・デコーダーの2つのコンポーネントがあります。ビジョン・エンコーダーには4億のパラメーターがあり、可変画像サイズをサポートしています。
このモデルは、文書に関する質問への回答、指示の遵守、検索拡張生成(RAG)のタスクなど、高解像度のグラフ、図、チャート、文書の理解を含む複数のユースケースに優れています。さらに、Pixtral 12Bには128,000トークンのコンテキスト・ウィンドウがあり、複数の画像を同時に利用できます。
ベンチマークに関しては、Pixtral 12Bは、Qwen2-VL、Gemini-1.5 Flash 8BおよびClaude-3 Highkuなどのさまざまなモデルを上回るパフォーマンスを発揮します。DocVQA(ANLS)やVQAv2(VQA Match)などの特定のベンチマークでは、モデルはOpenAIのGPT-4oおよびClaude-3.5 Sonnetを上回るパフォーマンスを提供します。
このモデルは、watsonx.ai上でPixtral 12Bを稼働させることができるほか、Hugging Face、Mistralの会話チャットボットであるLe Chat、MistralのLa Plateformeを通じたエンドポイントでも利用できます。
このIBMテクノロジーによるYouTube動画では、ステップ1と2の設定手順を説明しています。
いくつかのツールから選択することもできますが、このチュートリアルはJupyter Notebookに最適化されています。Jupyter Notebookは、コードをテキスト、画像、データの可視化などのさまざまなデータ・ソースと組み合わせるためにデータサイエンスの分野で広く使用されています。
このチュートリアルでは、Jupyter Notebookを使用するためのIBMアカウントの設定方法について説明します。
IBM Cloudアカウントを使用して、watsonx.aiにログインします。Pixtral 12Bは現在、IBMヨーロッパのフランクフルトおよびロンドン地域でのみ利用可能であることにご注意ください。
watsonx.aiプロジェクトを作成します。
プロジェクトIDはプロジェクト内から取得できます。[管理]タブをクリックし、[一般]ページの[詳細]セクションからプロジェクトIDをコピーしてください。このチュートリアルではこのIDが必要になります。
Jupyter Notebookを作成します。
このステップでは、このチュートリアルからコードをコピーして自分でプロンプト・チューニングを実施できるノートブック環境が開きます。あるいは、このノートブックをローカル・システムにダウンロードし、watsonx.aiプロジェクトにアセットとしてアップロードすることもできます。このJupyter Notebookと使用されるデータセットはGitHub にあります。
Pythonパッケージの依存関係の衝突を避けるために、仮想環境をセットアップすることをお勧めします。
このチュートリアルには、いくつかのライブラリーとモジュールが必要です。以下を必ずインポートしてください。それらがインストールされていない場合は、pipをクイックインストールすることで問題が解決されます。
次のセルを実行するときに、ステップ1と2で作成したWATSONX_EU_APIKEYとWATSONX_EU_PROJECT_IDを入力します。また、APIのエンドポイントとして機能するURLも設定します。
Credentialsクラスを使用して、渡した認証情報をカプセル化できます。
このチュートリアルでは、画像キャプションや物体検出などのマルチモーダルAIアプリケーション用のいくつかの画像を使用します。使用する画像は、次のURLからアクセスできます。これらのURLをリストに保管して、繰り返しエンコードできます。
データインプットをより深く理解するために、画像を表示してみましょう。
アウトプット:
url_image_0
url_image_1
url_image_2
url_image_3
LLMで理解しやすい方法でこれらの画像をエンコードするには、画像をバイトにエンコードしてからUTF-8形式にデコードします。
画像をLLMに渡すことができるようになったので、watsonx API呼び出し用の関数を設定しましょう。augment_api_Request_body関数は、ユーザーのクエリーと画像をパラメーターとして受け取り、APIリクエストの本文を追加します。この関数は各イテレーションで使用されます。
ModelInferenceクラスを使用してモデル・インターフェイスをインスタンス化しましょう。このチュートリアルでは、mistralai/pixtral-12bモデルを使用します。
これで、画像をループして、「この画像では何が起こっていますか?」というクエリーに応じてモデルが生成したテキストの説明を確認できるようになりました。
アウトプット:
この画像は、澄んだ青空の下で太陽が明るく輝く、鮮やかな満開の花畑を描いたもので、穏やかで絵画のように美しい情景を作り出しています。
画像では、一人の人物がテーブルに座ってクレジットカードを持ちながらノートPCを使用しています。ノートPCの隣のテーブルの上にあるボウルにはいくつかのリンゴが入っています。
一人の人物が雪が積もった車の横に立ち、降る雪を避けるために赤い傘をさしています。
この画像は、機械学習やデータ分析向けである可能性が高いデータの処理と保存のワークフローを示しています。まず、ソース・データ(HTMLやXMLドキュメントなど)をロードし、データを適切なフォーマットに変換し、埋め込みを実行し、データをベクトル・ストアに保存し、最終的に必要に応じてデータを取得します。
Pixtral 12Bモデルは、各画像に詳細なキャプションを付けることに成功しました。
モデルが画像キャプションを実行する機能を紹介したので、物体検知を必要とするいくつかの質問をモデルに尋ねてみましょう。オンライン・ショッピングをしている女性を表す2番目の画像については、モデルに「女性は手に何を持っていますか?」と尋ねます。
アウトプット:女性は手にクレジットカードを持っています。
モデルは女性の手元にあるオブジェクトを正しく識別しました。それでは、雪に覆われた車の画像の問題について質問してみましょう。
アウトプット:車が深い雪の中で立ち往生している可能性があり、移動が困難または不可能になっています。
この回答は、保険のような分野におけるマルチモーダルAIの価値を浮き彫りにしています。このモデルは雪の中で立ち往生している車の問題を検知することができました。これは、保険請求の処理時間を短縮するための強力なツールとなる可能性があります。
次に、フローチャートの画像のステップについてモデルに質問します。
アウトプット:この図は、いくつかのステップを含むプロセスを示しています:「読み込み」「変換」「埋め込み」「保管」「検索」。このシーケンスは、データの処理と保管のワークフローを表し、効率的な保管と検索のためにデータを埋め込みベクターに変換します。
成功です。このモデルは、ユーザーのクエリーに従って、画像内のオブジェクトを識別することができました。モデルの性能をさらに実証するために、より多くのクエリーを試すことをお勧めします。
このチュートリアルでは、Pixtral 12Bモデルを使用して、画像のキャプションや視覚的な質問応答などのオペレーションを実行しました。
他のマルチモーダルモデルを試すには、watsonx.aiのMetaのマルチモーダルモデルLlama 3.2のチュートリアルをご覧ください。
AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、導入しましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。