LLaVA: GPT-4V(ision) のオープンソース代替品

LLaVA: GPT-4V(ision) のオープンソース代替品

LLaVA (Large Language and Vision Assistant) は、画像翻訳における OpenAI GPT-4 の機能の一部を再現する、有望なオープンソース生成 AI モデルです。ユーザーは LLaVA チャット会話に画像を追加して、その画像の内容について話し合ったり、アイデア、コンテキスト、状況を視覚的に説明する手段として使用したりできます。

LLaVA の最も魅力的な機能は、よりシンプルなモデル アーキテクチャと桁違いに少ないトレーニング データを使用しながら、他のオープン ソース ソリューションを改善できることです。これらの機能により、LLaVA はトレーニングがより高速かつ安価になるだけでなく、コンシューマー ハードウェアでの推論にもより適したものになります。

この投稿では、LLaVA の主な機能について具体的に説明します。

  • Web インターフェースから実験を実行する方法と、それをコンピューターまたはラップトップにインストールする方法を示します。
  • 主な技術的特徴を説明します。
  • これを使用したプログラミング方法の例として、Google Colab で HuggingFace ライブラリ (Transformers と Gradio) を使用して簡単なチャットボット アプリケーションを構築します。

LLaVAオンラインの使用

まだ試したことがない場合は、LLaVA を使用する最も簡単な方法は、作成者が提供する Web インターフェイス (https://llava.hliu.cc/) にアクセスすることです。以下のスクリーンショットは、ユーザーが冷蔵庫の中身の写真を見ながら食べ物の食べ方を尋ねるインターフェースの動作を示しています。インターフェースの左側にあるウィジェットを使用して画像を読み込むことができ、チャット インターフェースでは質問してテキスト形式で回答を得ることができます。

LLaVA ウェブインターフェース

この例では、LLaVA は、ブルーベリー、イチゴ、ニンジン、ヨーグルト、牛乳など、冷蔵庫にある材料を正しく識別し、フルーツサラダ、ミルクセーキ、ケーキなどの関連するアイデアを提案しました。

LLaVA との会話の他の例は、プロジェクトの Web サイト (https://llava-vl.github.io/) で公開されています。これらの例では、LLaVA が画像を記述できるだけでなく、画像内の要素に基づいて推論および推論できることが示されています (写真の手がかりを使用して映画や人物を識別したり、絵に基づいて Web サイトをエンコードしたり、ユーモラスな状況を解釈したりするなど)。

LLaVA をローカルで実行する

LLaVA は、Ollama (https://ollama.ai/) または Mozilla の「llamafile」(https://github.com/Mozilla-Ocho/llamafile) を使用してローカル マシンにインストールすることもできます。ツールは CPU のみを使用してほとんどのコンシューマー グレードのマシンで実行できます。また、モデルに必要なのは 8 GB の RAM と 4 GB の空きディスク領域のみなので、Raspberry Pi でも正常に実行できます。 Ollama プロジェクトを中心に開発されたツールとインターフェースの中で、注目すべきアプローチの 1 つが Ollama WebUI (https://github.com/ollama-webui/ollama-webui、以下を参照) です。これは、OpenAI ChatGPT ユーザー インターフェースのルック アンド フィールを再現します。

Ollama Web UI — OpenAI ChatGPT にインスパイアされた

LLaVAの主な機能の概要

LLaVA はウィスコンシン大学マディソン校、マイクロソフト リサーチ、コロンビア大学の研究者によって設計され、最近 NeurIPS 2023 で発表されました。プロジェクトのコードと技術仕様は、Github リポジトリ (https://github.com/haotian-liu/LLaVA) からアクセスできます。このリポジトリには、アシスタントと対話するためのさまざまなインターフェースも用意されています。

著者らは論文の要約で次のようにまとめている。

「LLaVA は 11 のベンチマークで最先端の結果を達成しました。最終的な 13B チェックポイントでは、公開されている 120 万データのみを使用し、8-A100 クラス ノード 1 台で約 1 日で完全にトレーニングされます。これにより、最先端の LMM 研究がより利用しやすくなることを期待しています。コードとモデルは両方ともオープン ソースとしてリリースされます。」

論文でレーダープロットとして報告されたベンチマーク結果は、他の最先端モデルに対する改善を示しています。

LLaVA ベンチマーク結果のレーダーチャート (論文からの画像 https://arxiv.org/pdf/2304.08485.pdf)

内部の仕組み

LLaVA のデータ処理ワークフローは概念的には単純です。このモデルは本質的には、言語指示 (ユーザーのテキスト プロンプト) を入力として受け取り、言語応答を返す標準的な因果言語モデルです。言語モデルの画像処理能力は、画像を言語トークンに変換し、ユーザーのテキストプロンプトに「静かに」追加される(一種のソフトヒントとして機能)別のビジュアルエンコーダーモデルによってサポートされています。 LLaVA の全体的な実装プロセスを次の図に示します。

LLaVA ネットワーク アーキテクチャ (論文からの画像 https://arxiv.org/pdf/2304.08485.pdf)

LLaVA の言語モデルとビジュアル エンコーダーは、それぞれ Vicuna と CLIP という 2 つの参照モデルに依存しています。その中で、Vicuna(https://lmsys.org/blog/2023-03-30-vicuna/)は、中規模LLMと競合するパフォーマンスを備えたLLaMA-2(Meta設計)に基づく事前トレーニング済みの大規模言語モデルです(HuggingFaceの7Bおよび13Bバージョンのモデルカードを参照)。 CLIP (https://openai.com/research/clip) は、OpenAI が設計した画像エンコーダーで、Contrastive Language Image Pre-training (「CLIP」という名前の由来) 技術を使用して事前トレーニングされており、同様の埋め込み空間で画像とテキストをエンコードできます。 LLaVA で使用されるモデルは、Vision Transformer バリアント CLIP-ViT-L/14 です (HuggingFace のモデル カードを参照: https://huggingface.co/openai/clip-vit-large-patch14)。

ビジュアルエンコーダーのサイズを言語モデルのサイズと一致させるために、投影モジュール(上図のW)が適用されます。これは実際には、オリジナルの LLaVA では単純な線形投影であり、LLaVA 1.5 では 2 層のパーセプトロンです。

トレーニングプロセス

LLaVA のトレーニング プロセスは、比較的単純な 2 つの段階で構成されます。

最初のステージは投影モジュール W を微調整するためだけのものであり、このステージではビジュアル エンコーダと LLM の重みは固定されたままになります。このステージは、HuggingFace のリポジトリ (https://huggingface.co/datasets/liuhaotian/LLaVA-Instruct-150K) で無料で入手できる CC3M 概念キャプション データセット (https://ai.google.com/research/ConceptualCaptions/) の約 60 万個の画像/キャプション ペアのサブセットを使用してトレーニングされます。

第 2 段階では、158K の言語画像命令のデータセットを使用して、投影モジュールの重み W が LLM の重みとともに微調整されます (ビジュアル エンコーダの重みは固定されたまま)。このデータは GPT4 を使用して生成され、会話の例、詳細な説明、複雑な推論を特徴としており、HuggingFace のリポジトリで無料で入手できます。

トレーニング全体には、8 つの A100 GPU を使用して約 1 日かかります。

LLaVA 基本プログラミング

このセクションの関連コードは、関連する Colab ノートブック ファイル (https://colab.research.google.com/drive/1L28bJX14-Y5lJvswYwydsletYFMIxVH5) から取得できます。

LLaVA モデルは Transformers ライブラリに統合されており、標準のパイプライン オブジェクトを使用して読み込むことができます。モデルの 7B バリアントと 13B バリアントは両方とも LLaVA リポジトリ スペースで無料で入手でき、GPU メモリを節約するために 4 ビットと 8 ビットでロードできます。次に、T4 TPU (15GB RAM GPU) を搭載した Colab で実行できるコードを使用してモデルをロードして実行する方法を説明します。

以下は、LLaVA 1.5 の 7B バリアントを 4 ビット モードでロードするコード スニペットです。

 from transformers import pipeline, BitsAndBytesConfig import torch quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16 ) model_id = "llava-hf/llava-1.5-7b-hf" pipe = pipeline("image-to-text", model=model_id, model_kwargs={"quantization_config": quantization_config})

次に、この画像を読み込みます。

画像を読み込むには標準の PIL ライブラリを使用します。

 import requests from PIL import Image image_url = "https://cdn.pixabay.com/photo/2018/01/29/14/13/italy-3116211_960_720.jpg" image = Image.open(requests.get(image_url, stream=True).raw) image

最後に、画像と画像の説明を求めるプロンプトを使用して LLaVA モデルをクエリしてみましょう。

プロンプトの形式 (https://huggingface.co/docs/transformers/model_doc/llava) は次のようになります。

 “USER: <image>\n<prompt>\nASSISTANT:”

関連するコードは次のとおりです。

 prompt = "USER: <image>\nDescribe this picture\nASSISTANT:" outputs = pipe(image, prompt=prompt, generate_kwargs={"max_new_tokens": 200}) print(outputs[0]['generated_text'])

次のような回答が返されました。

 USER: Describe this picture ASSISTANT: The image features a large, empty amphitheater with a stunning view of the ocean in the background. The amphitheater is surrounded by a lush green hillside, and a majestic mountain can be seen in the distance. The scene is serene and picturesque, with the sun shining brightly over the landscape.

LLaVA チャットボットの作成

最後に、LLaVA モデルに依存するシンプルなチャットボットを作成しましょう。機械学習 Web インターフェースをすばやく簡単に作成できる Gradio ライブラリ (https://www.gradio.app/) を使用します。

インターフェースのコアは、画像アップロード コンポーネント (Gradio 画像オブジェクト) とチャット インターフェース (Gradio ChatInterface オブジェクト: https://www.gradio.app/docs/chatinterface) を含む 1 行のコードで構成されています。

 import gradio as gr with gr.Blocks() as demo: with gr.Row(): image = gr.Image(type='pil', interactive=True) gr.ChatInterface( update_conversation, additional_inputs=[image] )

チャット インターフェイスは、会話履歴を保存し、ユーザーがメッセージを送信したときに応答するために LLaVA モデルを呼び出す関数 update_conversation に接続されています。

 def update_conversation(new_message, history, image): if image is None: return "Please upload an image first using the widget on the left" conversation_starting_from_image = [[user, assistant] for [user, assistant] in history if not assistant.startswith('Please')] prompt = "USER: <image>\n" for i in range(len(history)): prompt+=history[i][0]+'ASSISTANT: '+history[i][1]+"USER: " prompt = prompt+new_message+'ASSISTANT: ' outputs = pipe(image, prompt=prompt, generate_kwargs={"max_new_tokens": 200, "do_sample" : True, "temperature" : 0.7})[0]['generated_text'] return outputs[len(prompt)-6:]

次のコードは、launch メソッドを呼び出してインターフェイスを起動します。

 demo.launch(debug=True)

数秒後、チャットボットの Web インターフェイスが表示されます。

おめでとうございます。LLaVA チャットボットが正常に起動しました。

注: 特に記載のない限り、記事内のすべての画像は著者から提供されています。

参考文献

  • HuggingFace LLaVA モデルのドキュメント、https://huggingface.co/docs/transformers/model_doc/llava。
  • Llava Hugging Face 組織、https://huggingface.co/llava-hf。
  • AutoPrecessor と LLaVAForConditionalGeneration を使用して LLaVA をロードして実行します: Colab ノートブック、https://colab.research.google.com/drive/1_q7cOB-jCu3RExrkhrgewBR0qKjZr-Sx。
  • GPT-4V(ision) システム カード、https://cdn.openai.com/papers/GPTV_System_Card.pdf。
  • 視覚的指導のチューニングを理解する、https://newsletter.artofsaience.com/p/understanding-visual-instruction。

翻訳者紹介

Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。

原題: LLaVA: GPT-4V(ision) のオープンソース代替、著者: Yann-Aël Le Borgne

リンク: https://towardsdatascience.com/llava-an-open-source-alternative-to-gpt-4v-ision-b06f88ce8efa.

<<:  BEV の可能性の限界を探ろう! DA-BEV: 新しい教師なし BEV SOTA ソリューション!

>>:  AIエンジニアリングのためのJavaScriptツールトップ5

ブログ    

推薦する

...

5GとエッジAI: トラフィック管理問題の解決

通勤方法は時代とともに変化してきたかもしれませんが、交通管理の方法は変わっていません。 INRIX世...

IT の現状レポート: IT リーダーの 90% が、生成型 AI がまもなく主流になると考えています

7月25日、海外メディアの報道によると、セールスフォース・ドットコムが発表したIT現状報告によると、...

人工知能産業の急速な発展により、2021年以降、人工知能セキュリティの市場スペースは巨大になるでしょう。

[[439966]]人工知能は、人間の意識と思考の情報処理をシミュレートできるコンピュータ サイエ...

...

機械学習の問題を解決する一般的な方法があります!これを読んでください

編集者注: この記事は、WeChat パブリック アカウント「Big Data Digest」(ID...

イノベーションを統合し、障壁を下げ、PaddlePaddleは人工知能を推進して大規模な工業生産を実現します。

5月20日、中国国家深層学習技術応用工程研究室と百度が共催する「WAVE SUMMIT 2021 ...

清華大学は顔認識技術に脆弱性を発見、セキュリティ問題を真剣に受け止める必要がある

このテストでは合計20台の携帯電話が選ばれ、そのうち1台は海外製、残りの19台は国内トップ5の携帯電...

人工知能の時代では、科学技術分野の人材は職を失うのでしょうか?

インターネット技術の発展、ビッグデータや人工知能技術の進歩により、一部の伝統的な産業は革命的な変化を...

...

2022年の政府活動報告を聞いた後、人工知能業界が注目するべき点は以下のとおりです。

2022年全国人民代表大会と中国人民政治協商会議が開幕した。3月5日には2022年政府活動報告が発...

人工知能とビッグデータを開発する際に留意すべき12のこと

人工知能は近年の科学技術発展の重要な方向です。ビッグデータの時代において、データの収集、マイニング、...

...