🌟

日本語Vision Languageモデル heron-blip-v1の公開

2024/03/06に公開

はじめに

Turingでは完全自動運転実現に向けて、LLMやそれを用いたVision Langauge(V&L)モデルの開発に取り組んでいます。最近は経済産業省/NEDOの「競争力のある生成AI基盤モデルの開発を支援する「GENIACプロジェクト」」にも採択されるなど、大規模な生成AIの開発に精力的に取り組んでいます。

特に、Vision Languageモデルについては、Heronというライブラリとモデル群を公開しており、今回は新しいモデルとその学習レシピを公開します。また、日本語のV&LモデルをGPT-4を用いて評価するためのプログラムも公開します。

Heronとは

V&Lモデルは、画像を認識する「ビジョンエンコーダ」、文章を生成する「LLM」、それら2つをつなぐ「アダプタ」から構成されます。heronのコードを用いることで、これらの様々な組み合わせのオリジナルV&Lモデルを作成することができます。heronリリース時に公開したモデルである「heron-blip-v0」は、blipとstablelm-alphaを用いたV&Lモデルでしたが、今回は同じモデルの高性能版「heron-blip-v1」を公開します。

新しいheronの能力

定量評価

今回、GPT-4を用いた評価手法であるLLaVA-Benchを日本語に対応させて日本語の結果に対しても評価を行えるようしました。(コードはこちら)。

評価のスコアを見ると以前のモデルと比べて20%以上のスコア向上を実現することができました。特に、Detail Description(詳細説明)のスコアが大きく向上しました。今回スコア算出に用いたheronの推論結果はこちらのwandbレポートから参照できます。また、こちらのデモページから実際に動かすことが可能です。

定性評価

定性評価として、風変わりな画像に対してどのような出力を行うのか比較を行いました。以下はその出力結果で、上段が新しいバージョンのheronの出力で、下段が以前のheronの出力です。

一つ目はGPT-4のテクニカルレポートのデモで利用されたことで有名な、タクシーの後ろで男性がアイロンをしている画像です。以前のheronは「トラックの上で洗濯物を干している」と説明していましたが、新しいheronでは正しく「タクシーの上でアイロンをしている」と説明することができています。他の画像でも、テスラに書かれたピカチュウを説明したり(右上)、現場ネコの容姿を正確に説明することができています(右下)。新しいheronでは正しく説明できている場合が多い反面、無いものをあるかのように説明するハルシネーションも見られており(左下、右下)、常に状況を正しく説明できているわけではありませんでした。

どうやって作ったか

旧モデル(heron-blip-v0)の学習方法

heron-blipはSalesforceが公開している学習済みの2.7BのBLIPモデルに日本語のLLM(StableLM-alpha)をつなげて学習を行っています。BLIPではビジョンエンコーダとLLMは学習せずフリーズして、アダプタであるQ-Formerだけを学習するという戦略をとっています。ここで、Q-FormerだけではなくLLM部分も学習した方が良いのではないかと考え、LLM部分をLoRAで学習するようにしました。また、学習データとして、VQAデータセットであるJapanese Visual GenomeとキャプションデータセットであるSTAIR Captionを最初に学習し、二段階目の学習でLLaVA-150kの日本語訳データを用いてビジュアル指示チューニングを行いました。

新モデル(heron-blip-v1)の学習方法

新モデルの特徴は以下の3点です。

  • LLM部分をフルパラ学習した
  • 指示チューニング用学習データをllava-1.5の学習に用いられているllava-620kの日本語翻訳モデルを利用
  • 旧モデルで行っていたVisual GenomeやSTAIR Captionを使わずに、最初からLLaVAのデータで学習

LLMのフルパラ学習

旧モデルではLoRAによってLLM部分の学習を行っていましたが、LLM部分の学習方法の再検討を行いました。そもそも、LoRAを用いて学習するレイヤーとしてアテンション層、MLP層などの選択肢があり、どのように学習すると良いのかはわかっていませんでした。さらに、LoRAを用いずにLLM全体のパラメータを学習するフルパラメータ学習という選択肢もあります。これらを検証するために、llava-150k-jaのデータを用いて、LoRAによってアテンション層、MLP層を学習した場合、フルパラメータ学習した場合でLLaVA-Bench (COCO)の比較を行いました(以下のグラフ)。

結果を見ると、フルパラメータファインチューンした場合に最も良いスコアとなりました。また、LoRAにおいては、アテンション層を学習するよりもMLP層を学習した場合の方が良いスコアになっていました。LoRAだけを使う場合において、どのレイヤーを学習するかはしっかり確認した方が良さそうです。

データセットをllava-620k-jaに変更

llava-1.5の学習に使われているデータセットを使うように変更しました。llava-665kでは画像を含まない会話データなどが含まれているので、それらを除いたデータをllava-620kとして用意し学習を行いました。llavaの150kと620kを用いた場合でどのようにスコアが変化するのか確かめてみました。その結果、LoRAを使う場合とフルパラ学習を行う場合、両方でllava-620kを用いた方が良いスコアが出ることが確認できました。

事前学習をなくして指示チューニングのみを行う

旧モデルではVisual GenomeやSTAIR Captionによって事前学習を行い、その後にLLaVAのデータで指示チューニングを行っていました。これらを行う場合と行わない場合でスコアを比較をしてみると、ほとんどスコアに変化がないことが確認できました。また、実際に出力を確認して定性評価を行うと、事前学習がない方が良い結果になっているように感じました。

LLMを変えた場合の比較

heron-blipはLLMとしてjapanese-stablelm-alphaを採用しています。様々なLLMを用いて学習を試してみたのですが、結果としてstablelm-alphaが最も良い結果でした。これはアダプタ部分(今回はQ-Former)との相性も結果に影響している可能性がありますが理由は分かりません。以下では、llmjp-13BSwallow-7bを使った場合の比較です。LLaVA本家も初期モデルからVicunaを使い続けており、LLM単体の性能とV&Lモデルの性能は必ずしも比例しないのではないかと考えています。

公開されている日本語V&Lモデルとの比較

他に公開されている日本語のV&Lモデルとheronの比較を行ってみます。前提として、英語のV&LモデルではVQAなど様々な評価指標で包括的に評価を行うことができますが、日本語のV&Lモデルを包括的に評価するためのベンチマークはまだほとんどないというのが現状です。今回はLLaVA-Bench(COCO)が日本語に対しても簡単に実行できるということで比較を行っていますが、この値が高いから一概にモデルが優れているとは言えず、あくまで参考値として見てもらえればと思います。

今回比較を行ったモデル

  • LLaVA-1.5: 本来は英語モデルですが、プロンプトの最後に「日本語で回答して」と付け加えて、日本語で回答させています。
  • rinna-4B: rinnaの”bilingual-gpt-neox-4b-minigpt4”
  • Stable-VLM: Stability AIの”stabilityai/japanese-stable-vlm”

transformersを使った学習について

今回heronのフルパラメータ学習はDeepSpeedのZero3を用いて学習を行っています。当初、BLIPモデルはZero3を用いて学習することができませんでしたが、原因を調べて見るとhuggingfaceのtransformersライブラリのバグに起因していることがわかりました。これを修正するためにtransformersに修正プルリクエストを送り、この修正はtransformersのv4.37から取り入れられました。Huggingfaceのtransformersは推論目的には使いやすいですが、学習を行うには苦労することが多いので注意が必要です。

学習条件

今回のheronの学習を行った際の学習条件を以下に記載します。

  • グローバルバッチサイズ: 128
  • 学習率: 5.0e-5
  • 最適化手法: AdamW
  • 重み精度: fp16
  • エポック数: 1
  • 分散学習: ZeRO Stage3
  • トークンの最大数: 256

まとめ

今回は新しいheronのモデルと日本語V&Lの評価プログラムを公開しました。フルパラメータチューニングを大きいデータで学習したモデルが最も良いという分かりやすい結果になりました。LLMの盛り上がりに続いて、日本語のV&Lモデルの盛り上がりも期待しています!同じ課題に取り組んでいる方はぜひ情報交換しましょう〜!気軽にコメント・DMください!

イベント情報

『Turing Semiconductor/AI Day』を3/13(水)に開催します。Turingの半導体、生成AI、自動運転の戦略と最新の開発状況を発表する予定です。オンライン配信も予定しているので、ぜひご登録ください!

https://prtimes.jp/main/html/rd/p/000000044.000098132.html

採用情報

TuringではGPUをたくさん使って大規模な生成モデルを学習しています。興味ある方はぜひ声かけてください!

https://twitter.com/ymg_aq/status/1759508147360985472

Tech Blog - Turing

Discussion