PaliGemma2をファインチューニングして、🤗 Hugging Face SpacesでGradioアプリを作る

2025/03/04に公開されました。
2025/03/04に更新されました。

PaliGemma2をファインチューニングして、そのモデルをHugging Face Spaces上で動かす方法を紹介します。


author: Mami

1. はじめに

こんにちは、GIクラウドのMamiです。
本記事では、Googleの視覚言語モデル「PaliGemma2」をファインチューニングし、そのモデルを「🤗 Hugging Face」にアップロードして、「Gradio」アプリとしてHugging Face Spaces上で動かす方法を紹介します。

PaliGemma2は、画像と言語を組み合わせた強力なマルチモーダルモデルです。これを特定のタスク向けにファインチューニングし、自分専用のカスタムモデルとして活用することで、より実用的なAIアプリケーションを作ることができます。

進め方

本記事では、次の流れで進めます。

  1. Google ColabでPaliGemma2をファインチューニングし、Hugging Faceにアップロード
  2. Hugging Face SpacesでGradioアプリを作成し、ファインチューニングしたモデルを活用

AIのファインチューニングやHugging Face Spacesを使ったデプロイに興味がある方は、ぜひ参考にしてみてください!

使用ツール・サービス

本記事では、以下サービスを使用します。GoogleHugging Faceのアカウントのない方は作成してください。

ツール / サービス説明
Google ColabGPUリソースを活用して、PaliGemma2を効率的にファインチューニングします。Google Colabは、ブラウザ上で動作するJupyterノートブック環境を提供し、無料でGPUを使用することができます。
Hugging Face学習したモデルをアップロードし、共有・公開できるプラットフォームです。Hugging Face Hubを利用して、ファインチューニングしたモデルを簡単に管理できます。さらに、Hugging Face Spacesを利用して、Gradioアプリをホスティングすることができます。
Gradio機械学習モデルやPythonの関数を簡単にWebアプリ化できるライブラリです。直感的なUIと即時共有が特徴です。

2. PaliGemma2とは?

PaliGemma2は、Googleが開発した視覚と言語を統合したマルチモーダルAIモデルです。画像とテキストを入力し、適切なテキストを出力できます。
特に、VQA(Visual Question Answering / 視覚的質問応答) のタスクに優れており、画像を見て質問に答える能力を持っています。

VQA(Visual Question Answering)とは?

VQA(視覚的質問応答)は、画像を入力し、その画像に関する質問を自然言語で回答するAIタスクです。
たとえば、以下のようなやりとりが可能になります。

画像質問回答
🏞️ 風景写真「この写真はどこですか?」「山の中の湖の風景です。」
🍽️ 食べ物の画像「これは何の料理?」「パスタです。」
🚗 車の写真「この車のブランドは?」「トヨタです。」

なぜファインチューニングが必要?

PaliGemma2は、汎用的なVQAモデルとして優れた性能を持っていますが、そのままでは特定の分野に最適化されていません。
例えば、以下のようなケースでは、ファインチューニングによって精度を向上させることが重要です。

  • 医療画像診断:一般的な画像の説明ではなく、専門的な医療用語を用いて正確に診断する
  • ECサイトの商品検索:特定のブランドや型番を識別し、商品の詳細情報を提供する
  • 自動運転システム:道路標識や歩行者の検出に特化し、リアルタイムでの意思決定を支援する

このように、PaliGemma2を特定の業務やドメインに適用するには、その分野のデータで学習させるファインチューニングが不可欠です。
ファインチューニングを行うことで、モデルはより適切な回答を生成し、実用的なAIアプリとして活用できます。

3. PaliGemma2をファインチューニング

それでは、PaliGemma2をファインチューニングする方法について説明します。

Hugging Faceが開発したAutoTrain Advancedを使用します。AutoTrain Advancedはノーコードで機械学習モデルをトレーニングできるツールです。技術的な知識がなくても、数回のクリックでAIモデルを作成・トレーニング・デプロイできます。

まず、HuggingFaceのAccess TokensよりHuggingFaceにモデルをアップロードするためのAccess Tokenを発行します。「+Create new token」よりトークンを発行してください。モデルをアップロードする必要があるのでWRITE権限をつけてください。

モデルはgoogle/paligemma2-3b-mix-448を使います。PaliGemma2mixについてはGoogle Developers Blogで紹介されていますのでご覧ください。このページからモデルを使うための許可を申請してください。(以下画像は許可された後の画像です)

また、abhishek/vqa_smallデータセットでPaliGemma2をファインチューニングします。

以下ファイルを自分のGoogle Colab上で開いてください。 下記ソースのproject_nameはアップロードするモデルのリポジトリになります。好きな名前に変更して実行してください。

ランタイムのタイプを変更から「GPU」に変更してください。今回のケースでは実行時間は20〜30分ほどかかりました。

シークレットより、HUGGINGFACE_TOKEN、HUGGINGFACE_USERNAMEを追加してください。HUGGINGFACE_TOKENは先ほど取得したトークンを入れてください。HUGGINGFACE_USERNAMEはHugging Faceのアカウント名を入れてください。

実行が完了するとHugging FaceのModelsにモデルがアップロードされています。

4. Hugging Face SpacesでGradioアプリを作成

次に先ほど作成したモデルを使用するためのアプリを作成します。

近年、機械学習のモデルを手軽にデプロイし、共有するためのプラットフォームが増えていますが、今回はHugging Face Spacesを使用します。Hugging Face SpacesはGradioやStreamlitを活用し、直感的なWebアプリを簡単に作成・公開できるプラットフォームです。Google Colabでも機械学習の実験や開発を手軽に行えますが、デプロイの手間やセッションの維持といった点で課題があります。一方、Hugging Face SpacesはGitHubのようにコードを管理し、更新をプッシュするだけでデプロイが可能なため、誰でも簡単にアクセスできる状態を維持できます。

Hugging Face Spacesとは?

Hugging Face Spacesは、機械学習モデルのデモやアプリケーションを簡単にホスティングできるプラットフォームです。主な特徴は以下の通りです。

  • 無料で利用可能(制限付きのハードウェアリソース)
  • Gitリポジトリとして管理(コードやモデルを簡単に更新できる)
  • 簡単なUIでデプロイ可能(Streamlit / Gradio / Dockerの3種類の環境を選択)

Gradioとは?

Gradioは、Pythonで簡単にウェブアプリを作成できるライブラリです。主な特徴は以下の通りです。

  • 数行のコードでインターフェースを作成可能
  • 機械学習モデルとの統合が簡単
  • ローカルやクラウドで即時にデプロイ可能

Gradioアプリ作成方法

それでは、Hugging Face Spaces上でGradioアプリを作成する方法について説明します。 Hugging Face SpacesのCreate a new Spaceよりスペースを作成します。

スペースが作成されたらAddFileより以下ファイル(app.py,requirements.txt)を作成します。

PaliGemma2モデルは承認を受けないと使用できないモデルのため、Hugging Faceにログインする必要があります。ログインするためのトークンを[Settings]メニュー内にある「Variables and secrets」のSecretsで設定しておきます。Name:API_TOKENでValueには先ほど取得したトークンを入れてください。

ファイルをコミットすると保存すると自動でビルドが始まり、アプリが起動します。

画像をアップロードして質問するとモデルが回答を返してくれます。

画像出典:Unsplash Bruce Warrington

5. 終わりに

PaliGemma2を簡単にファインチューニングし、試せる環境を手軽に構築できることをご紹介しました。ぜひ、PaliGemma2やHugging Face、Gradioを活用してAI体験を楽しんでいただければ幸いです。この記事を最後までお読みいただき、ありがとうございました!

※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。

※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。