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

ブログ    

推薦する

中国のトップ 10 の技術革新の一覧。世界をリードする技術も持っています。

国内の科学技術イノベーション主体はいずれも「中核技術を自主的に掌握し、外国の独占を打ち破る」という目...

Dr. ByteのAIは大活躍、ワンクリックでボーカルと伴奏を完璧に分離

[[424966]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

清華大学:過去10年間の人工知能の発展の概要:中国は急速な進歩を遂げ、その特許は世界の70%を占める

1. 急速な発展の10年1. 論文の発表状況<br /> 人工知能は過去10年間で急速に...

2010年以降、MLコンピューティングパワーの需要は100億ドル増加し、6か月で2倍になり、ディープラーニングは画期的な分野となった。

計算能力、データ、アルゴリズムは、現代の機械学習 (ML) の進歩を導く 3 つの基本的な要素です。...

...

...

初心者が機械学習をすぐに始められるように、Colabリソースの完全なリストはこちらです。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

人類の未来における人工知能の重要性

人工知能(AI)は私たちが住む世界を急速に変えています。医療から金融まで、人工知能は産業を変革し、私...

...

知覚AIオペレーティングシステム

AI、つまり人工知能の新たな波が到来します。機械学習、ディープラーニング、ニューラルネットワーク、音...

GPT-4が化学者になる! USTC などが初の「科学リスク」ベンチマークと SciGuard ビッグモデルを発表

「我々の実験は制御不能になった!これは我々の世界の終わりだ!」 - デイ・アフター・トゥモローSF映...

...

...

巨大企業の障壁の中で、人工知能のサブセクターでリーダーが出現している。これはAIにとって真の新しいチャンスである。

ディープラーニングと機械学習を中核とするAI技術は、主にコンピューティング能力とアルゴリズムのブレー...

...