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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能は製造業の未来をどのように変えるのでしょうか?

ある研究機関が最近発表した調査報告によると、2022年までに人工知能が製造業にもたらす価値は23億ド...

今後5年間のAI技術の発展と影響を展望する

人工知能 (AI) テクノロジーは、ビジネス プロセスの合理化、運用コストの削減、面倒なタスクの自動...

Googleの上級研究員が解雇される:論文論争の裏側

[51CTO.com クイック翻訳] 12月初旬、Googleは著名なAI倫理研究者のティムニット・...

世界的なAI人材不足により、各国間の協力とトレーニングが増加

文/張燕現在、世界で人工知能教育が発達している国や地域では、人工知能人材の育成を徐々に国のトップレベ...

...

2019 年に学ぶべき 10 個の機械学習 API

最近では、携帯電話の写真からメールの受信トレイのフィルターまで、機械学習はあらゆるところに存在してい...

機械学習における再現率、精度、正確さの指標は何ですか?

以前の記事では、Naive Bayes、KNN、KMeans、EM、線形回帰、ロジスティック回帰など...

程偉:スマート交通に投資し、世界クラスのモデル都市を構築する

「滴滴出行がユーザーとドライバーをつなぐ旅行プラットフォームになるだけでなく、人、車、道路、信号、そ...

3万語に及ぶ記事: サーバー開発と設計のためのアルゴリズム集

[[442986]]孫子はこう言った。「行軍と戦闘の最善の方法は戦略を使うこと、次に良いのは敵の同盟...

認知マップの科学的インベントリ: グローバルな第3世代AIの「大きな」機会

近年、人工知能 (AI) は、ディープラーニング、コンピューター ビジョン、自然言語処理などの技術革...

Googleは機械学習ベースのDDoS攻撃防御をテスト中

[[412418]] Google Cloud のお客様は、分散型サービス拒否 (DDoS) 保護...

Google DeepMind の最新研究: 敵対的攻撃は人間に対しても有効であり、人間も AI も花瓶を猫と間違える!

人間のニューラルネットワーク(脳)と人工ニューラルネットワーク(ANN)の関係は何ですか?ある先生が...

JD.comのインテリジェント顧客サービスブランドがリニューアル:「Yanxi」が2020 JDDカンファレンスでデビュー

「言葉の含意は心が繋がっている」という意味で、言葉がテレパシーのような共鳴を呼び起こし、人と人の間の...

...