Hands on Meta は、Llama ファミリーによってオープン言語モデルの開発を推進する上で影響力を発揮してきましたが、これまでは、それらと対話する唯一の方法はテキストを通じてでした。
先月末にマルチモーダルモデルを立ち上げ、Facebookの親会社はLlama 3に視力を与えた。
Meta氏によると、これらのモデルは画像とテキストプロンプトを組み合わせて「組み合わせを深く理解し、推論する」ことができるようになったという。例えば、ビジョンモデルは画像、グラフ、グラフィックの内容に基づいて適切なキーワードを生成したり、PowerPointスライドから情報を抽出したりするために使用できる。
クラウドだけでなくローカルでも実行できるこの公開モデルでは、写真に写っているものだけでなく、そのコンテンツに関する質問やリクエストも行うことができます。
そうは言っても、私たちのテストでは、オズの魔法使いのかかしのように、このモデルが本当に使えるのは脳であることがわかりました。
「もし私に頭脳があったら」
Meta のビジョン モデルは、110 億と 900 億のパラメータ バリエーションで利用でき、画像とテキストのペアの大規模なコーパスでトレーニングされています。
これらのモデルは、私たちが目にした初めての視覚機能搭載LLMではありません。MicrosoftにはPhi 3.5 Vision、MistralにはPixtralがあり、その前にはLlavaがありました。しかし、Metaの最新のニューラルネットワークは、Facebookのオーナーである同社(オープンLLM開発の方向性を決定づけたと言っても過言ではない企業)が、マルチモーダル分野に進出した初めての事例であるという点で注目に値します。
Meta の最新の Llama の視力が 20/20 なのか、それとも眼鏡が必要なのかを調べるために、vLLM モデル サーバーでモデルの 110 億パラメータ バージョンを起動しました。
私たちは、光学式文字認識 (OCR) や手書き認識から画像分類やデータ分析まで、さまざまなシナリオでモデルを実行し、その長所と短所を把握しようとしましたが、すぐに限界に突き当たりました。
最初のテストでは、米国労働統計局から折れ線グラフをアップロードし、モデルにグラフを分析するように依頼しました。
画像:
基本的な折れ線グラフを分析するというタスクを課せられたLlama 3.2 11Bの視覚機能は、すぐに限界を見せ始めます。 - クリックして拡大
プロンプト:「このグラフからどのような結論を導き出せるかを含め、グラフの短い概要を教えてください。」
応答:
このグラフは、1986年から2022年までの、27週間以上労働力となっている人のワーキングプア率を示しています。グラフによると、ワーキングプア率は1993年に6.3%でピークに達し、その後減少傾向にあります。しかし、2010年には7.5%まで急上昇しました。その後、ワーキングプア率は減少傾向にありますが、減少率は鈍化しています。このグラフに示されている最低率は2020年の3.8%で、その後COVID-19パンデミック中に上昇し、2022年には4.1%で終了しています。
このグラフから導き出せる結論には次のようなものがあります。
- ワーキングプア率は1993年以降、多少の変動はあるものの減少傾向にある。
- 2010 年の大不況によりこの割合は急上昇しました。
- 2016年以降、減少率は鈍化しています。
- このグラフに示されている最低率は 2020 年の 3.8% でした。
- この割合はCOVID-19パンデミック中に上昇し、2022年には4.1%で終了した。
全体的にグラフは、ワーキングプア率が過去数十年間減少していることを示していますが、2010年の急増やCOVID-19パンデミック中の悪化など、いくつかの変動と後退がありました。
当初、結果は有望に見えましたが、モデルの結論や数値のほとんどがグラフの実際の描写と一致していないことがすぐに明らかになります。例えば、モデルはワーキングプア率が1993年にピークに達し、その後減少すると主張していますが、これは真実ではありません。さらに、2010年にはワーキングプア率がさらに高くなると仮定して矛盾していますが、これも数ポイントの誤りです。そこから、誤差は積み重なっていくばかりです。
これが偶然ではないことを確認するため、食品、エネルギー、そして食品とエネルギーを除くすべての品目の消費者物価指数の変動を示す棒グラフをモデルに分析させました。グラフの分かりやすさを考えると、簡単な作業のように思えますよね?しかし、このラマにとってはそうではありません。
画像:
さらにシンプルな棒グラフでも、Llama 3.2 11B のビジョンは依然として苦戦を強いられています。 - クリックして拡大
プロンプト:「この図を調べて、そこから得られる重要なポイントと結論を箇条書きで簡潔にまとめてください。」
応答:
重要なポイントと結論
この図に基づいて、次の重要なポイントを導き出すことができます。
全体的な傾向:消費者物価指数 (CPI) は、季節調整済みの変化を除いて、2024 年 8 月に全体で 0.12% 増加しました。
カテゴリーパフォーマンス:
- 全品目:全品目のCPIは2%上昇し、大幅な価格上昇を示しました。
- 食品:食品の消費者物価指数は2%上昇し、食品価格も上昇したことを示しています。
- エネルギー:エネルギーの消費者物価指数は 2.5% 減少し、エネルギー価格の下落を示しました。
- 食品とエネルギーを除くすべての品目:食品とエネルギーを除くすべての品目のCPIは2.5%上昇しており、これらの品目の価格が上昇したことを示しています。
比較:すべての品目と食品の CPI は、エネルギーおよび食品とエネルギーを除くすべての品目の CPI よりも高く、これらのカテゴリーの価格がエネルギーおよび食品とエネルギーを除くすべての品目の価格よりも上昇したことを示しています。
これらの調査結果は、すべての品目と食品の価格が上昇する一方で、エネルギー価格は下落し、食品とエネルギーを除くすべての品目の価格も上昇したことを示唆しています。
ご覧のとおり、モデルはいくつかの有用な情報を抽出できましたが、すぐにでっち上げを始めてしまったことは明らかです。
散布図 (画像なし) を含むさまざまな種類のグラフでさらにいくつかのテストを実行したところ、画像の内容の影響が明らかにあったものの、エラーが多数含まれた同様の結果が得られました。
これはvLLMでのモデルの設定方法が原因で、モデルがコンテキスト(つまり短期記憶)を通り抜けてしまい、失われている可能性があります。しかし、このような状況では、モデルは意味不明な応答を返すのではなく、単にストールするだけであることが分かりました。vLLMのログにも、KVキャッシュが不足していることを示すような記録はありませんでした。
むしろ、ここでの真の問題は、たとえ単純なチャートであっても、それを解釈するには、110億パラメータのニューラルネットワークではまだシミュレートできないレベルの推論と理解力が必要であるということではないかと考えています。おそらく、900億パラメータ版のモデルの方がパフォーマンスは優れているでしょうが、H100やH200のサーバーを大量に所有していない限り、自宅でそれを実行するのは難しいでしょう。
つまり、MetaはLlamaに目を与えたかもしれないが、本当に必要なのは脳だ。しかし、視覚はどうやら汎用人工知能よりもはるかに解決しやすい問題らしいので、Metaがどこかから始めなければならなかったとしても、それは許容できるだろう。
Llama 3.2 Visionの優れた点
画像を分析してそこから結論を導き出すことは Llama 3.2 11B の得意分野ではないかもしれませんが、他のシナリオではパフォーマンスが優れていなかったというわけではありません。
画像認識と分類
この夏初めにシーグラフの展示会場で撮影されたボストン・ダイナミクスのロボット犬「スポット」の画像を提示したところ、このモデルはロボットの名前を識別できただけでなく、画像に関するかなり包括的な説明も提供した。
画像:
ボストン・ダイナミクスのロボット犬「スポット」がSIGGRAPH 2024の展示フロアを探索。 - クリックして拡大
プロンプト:
「私は何を見ているんだろう?」
回答:画像には黄色と黒のロボット犬が写っており、ボストン・ダイナミクス社が開発したスポットロボットと思われます。ロボットは4本足で犬のような体を持ち、頭上にカメラが搭載されています。灰色のカーペット敷きの床に立っており、背景には壁があります。このロボットは研究またはデモンストレーション用に使用されていると思われます。
はい、コンピューター ビジョンは長い間、オブジェクトとシーンの分類を実行できましたが、ご覧のとおり、モデルの LLM の性質により、画像をもう少し自由に変更することができます。
次に、ボートがいっぱいの山の湖のストック画像を入力し、モデルがどれだけ効果的に道案内をしてくれるかを確認しました。
画像:
山の湖でボートを楽しむ人々のストック画像。 - クリックして拡大
プロンプト:「この画像を前景、中景、背景の 3 つのゾーンに分割し、それぞれの説明を記入してください。」
応答:
画像は 4 つの異なるゾーンに分かれています。
- 前景:画像の手前には、白いシャツを着た一人と水色のシャツを着た二人が乗った小さな木製の手漕ぎボートが停泊しています。二人はカメラから背を向けており、ボートの舳先は画像の左側を向いています。ボートの周りの水面は鮮やかなターコイズブルーで、穏やかな波紋と太陽の光の反射が美しく映っています。
- 中景:中景には、複数のボートが水面に浮かんでおり、それぞれに人が乗っています。これらのボートはどれも前景のボートと大きさや形が似ており、水面をゆっくりと移動しているように見えます。中景には、木々やその他の植物が生い茂る砂浜も広がっています。
- 背景:画像の背景には、水辺からそびえ立つそびえ立つ山々が広がっています。山々は険しく岩だらけで、急峻な崖と尖った峰々が連なっています。木々や低木など、豊かな緑に覆われ、自然の美しさをさらに引き立てています。山々の上空は鮮やかな青空で、かすかな雲がわずかに点在しています。
全体的に、この画像は穏やかで牧歌的な風景を表しており、穏やかな水、豊かな緑、雄大な山々が組み合わさって平和と静寂の感覚を生み出しています。
画像のゾーニングはコンピュータービジョンで実現可能なことの一つですが、Metaのような自然言語モデルを使ってこれを行うと興味深い結果が得られるかもしれません。実際、多くのテストにおいてLlamaの機能は画期的なものではありません。しかし、だからといって有用性が低下するわけではありません。
感情分析
こうしたモデルのもう一つの潜在的なユースケースは、表情やボディランゲージに基づく感情分析です。スタジアムの観客がハーフタイムショーを楽しんでいるかどうか、あるいは百貨店の顧客が新しいマーケティングキャンペーンに好意的に反応しているかどうかなどを把握するために、これらのモデルを用いることが考えられます。
これをテストするために、疲れた IT 作業員を描いた過去のストック画像をモデルに通し、画像から対象の感情状態を評価するのにどれだけ効果的かを調べました。
画像:
疲れたIT労働者が目をこすっています - クリックして拡大
プロンプト:「この画像に写っている人物の表情とボディランゲージに基づいて、感情的な状態を評価してください。」
応答:
写真に写っている人物は、フラストレーションや不快感を感じているように見えます。表情やボディランゲージから、眼鏡を顔に当てている様子が伺えます。これは、視力の低下や眼精疲労を示唆している可能性があります。また、人物の姿勢や表情からは緊張感や苛立ちが伝わってきます。これは、何かに対してストレスやフラストレーションを感じている可能性を示唆しています。
モデルは被験者が疲れているように見えるとは表現しなかったが、被験者の感情状態を正確に評価することに成功した。
OCRと手書き認識
また、このモデルでは、画像や手書きのメモからテキストを削除する場合にもほとんど問題がないことがわかりました。
最初の点は、既存の機械学習モデルでは当たり前のことと言えるかもしれません(iPhoneが自動的に処理してくれます)。しかし、手書き認識は実際にはかなり優れていました。下の例からもわかるように、モデルはわずかなエラーでメモをテキストに変換できました。とはいえ、メモは決して完璧なものではないので、結果は人によって異なるかもしれません。
画像:
Llama 3.2 11B は、決して簡単な作業ではありませんが、この手書きのメモをテキストに変換するという立派な仕事を成し遂げました。 - クリックして拡大
指示:この手書きのメモをテキストに変換してください。スペルや文法の誤りがあれば修正してください。書式を維持するために、必要に応じてマークダウンを使用してください。
応答:
マルチモーダルラマ 3.2 llb + 90b
画像推論をサポートする新しいモデルアーキテクチャ
- 事前学習済みの画像エンコーダーを使用してアダプターの重みを学習し、それをLlama 3に焼き込むことで構築されました。
Llama 3.1 の代替品
トレーニングパイプライン
- Llama 3.1テキストモデルから開始
- 次に画像アダプタとエンコーダを追加します
- これは、意図的にノイズを含んだ画像とテキストのペアの大規模なデータセットで事前学習されている。
- 高品質の画像とテキストのペアが使用される
- トレーニング後には、テキストモデルと同様の調整と微調整が行われる。
MetaはモデルをエージェントAIへの一歩として説明している
信頼性は低いものの、このモデルは表の内容を抽出し、他の形式に変換するのにもかなり効果的であることがわかりました。この例では、今春発表された様々なNvidia Blackwell GPUの相対的な浮動小数点演算性能を示すスクリーンショットを撮り、Llama 3.2を使ってMarkdown表に変換しました。
画像:
Blackwell CPU の相対的な浮動小数点性能を AMD MI300X と比較したグラフ - クリックして拡大
プロンプト:この表をマークダウンに変換してください
応答:
空のセルに関する難しさは別として、Llama 3.2 は実際には表の内容を抽出して Markdown に変換するという立派な仕事をこなしました。 - クリックして拡大
結果は完璧ではありません。モデルは明らかに空のセルの概念に苦労していますが、手動でテーブルを記述する場合に比べると、これを修正するのは比較的簡単です。
残念ながら、このテストは最も一貫性に欠けていました。場合によっては、モデルがランダムに列を削除したり、重要な情報を省略したりすることがありました。そのため、毎回完璧に機能するとは必ずしも言えません。
ぜひお試しください
Meta のビジョン モデルを自分でテストしたい場合は、十分な性能のグラフィック カードがあれば、比較的簡単に起動して実行できます。
前述の通り、本番環境でLLMを提供するために一般的に使用されているvLLMを使用します。シンプルにするために、vLLMのOpenAI互換APIサーバーをDockerコンテナ内で実行します。
通常であれば、セットアップが非常に簡単なOllamaのようなツールを使い続けるでしょう。しかし、本稿執筆時点では、vLLMはビジョンモデルをサポートしている数少ないモデルランナーの一つでした。Ollamaは近い将来、これらのモデルのサポートを追加する予定だと聞いています。また、本稿執筆直前には、RustベースのLLMランナーMistral.rsがビジョンモデルのサポートを発表しました。
前提条件:
この記事は包括的な vLLM チュートリアルを目的としたものではありませんが、Meta のマルチモーダル モデルを実際に試してみたいだけの場合は、次のものが必要です。
- 16GB以上のvRAMを搭載したNVIDIAグラフィックカードを搭載したLinuxマシン。非量子化モデルを16ビット精度で動作させる場合は、24GB以上のvRAMを推奨します。オペレーティングシステムはUbuntu 24.04を使用しています。
- このガイドでは、Docker Engineの最新バージョンとNVIDIA Container Runtimeの最新リリースがインストールされていることを前提としています。セットアップの詳細については、こちらのGPUアクセラレーションDockerコンテナに関するガイドをご覧ください。また、コマンドラインでLinuxシステムを使いこなせることを前提としています。
編集者注:これらのモデルをIntelまたはAMDハードウェアで実行できるようにするには、vLLMをお使いのハードウェアに合わせて手動でコンパイルする必要がありますが、このチュートリアルではその方法については扱いません。詳細については、vLLMのドキュメントをご覧ください。
このガイドでは、2 つのコンテナをデプロイします。1 つ目は vLLM、2 つ目は Open WebUI です。Open WebUI は、モデルを操作するための便利なインターフェースを提供します。
完全なモデルの展開
24GB以上のvRAMを搭載したNvidia GPUをお持ちであれば、以下のワンライナーを使用して、Llama 3.2 11Bビジョンモデルを16ビット精度でフルに実行できます。ここでモデルへのアクセスをリクエストし、アクセストークンに置き換えることを忘れないでください。
注意: 設定によっては、このコマンドを昇格した権限 (例: sudo 経由) で実行する必要がある場合があります。
docker run --gpus all -v ~/.cache/huggingface:/root/.cache/huggingface --env "HUGGING_FACE_HUB_TOKEN=HUGGING_FACE_API_KEY_HERE" -p 8000:8000 --ipc=host vllm/vllm-openai:latest --model meta-llama/Llama-3.2-11B-Vision-Instruct --max-model-len 8192 --max-num-seqs 2 --enforce-eager --gpu-memory-utilization 0.99 --host 0.0.0.0 --port 8000
モデルファイルのサイズは約22GBあるため、インターネット接続の速度によっては起動に数分かかる場合があります。完了すると、APIサーバーがポート8000で公開されます。
8ビット量子化モデルを展開する
モデルを16ビット精度で実行するのに十分なvRAMがない場合は、Neural MagicのFP8バージョンのような、8ビット量子化バージョンのモデルを使用することで対応できる可能性があります。この精度では、モデルに必要なvRAMは11GB強で、RTX 4060 Ti 16GBやRTX 4080などの16GBカードに余裕で収まるはずです。
量子化はモデル出力の品質に悪影響を与える可能性があることに注意してください。モデルの量子化に関する詳細は、こちらをご覧ください。
docker run --gpus all -v ~/.cache/huggingface:/root/.cache/huggingface --env "HUGGING_FACE_HUB_TOKEN=HUGGING_FACE_API_KEY_HERE" -p 8000:8000 --ipc=host vllm/vllm-openai:latest --model neuralmagic/Llama-3.2-11B-Vision-Instruct-FP8-dynamic --max-model-len 8192 --max-num-seqs 2 --enforce-eager --gpu-memory-utilization 0.99 --host 0.0.0.0 --port 8000
WebUIをデプロイする
モデルサーバーを起動したら、 のようなツールを使ってLlama 3.2 11Bのクエリを実行するcurl
か、Open WebUIのようなフロントエンドを使うことができます。今回は後者を選択しました。Open WebUIについては、以前こちらの検索拡張生成(RAG)ガイドで解説しましたが、とりあえずテストのために起動してみたい場合は、以下のDockerコマンドを使ってデプロイできます。
docker run -d --network=host -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
起動したら、http://localhost:8080 にアクセスして Open WebUI にアクセスできます。別のマシンまたはサーバーで Open WebUI を実行している場合は、localhost をその IP アドレスまたはホスト名に置き換え、ファイアウォールでポート 8080 が開いているか、ブラウザからアクセスできることを確認してください。
localhost:8000/v1
そこから、ローカル アカウントを作成し (自動的に管理者に昇格されます)、アドレスとして を、empty
API キーとして を使用しながら、管理パネルの下に新しい OpenAI API 接続を追加します。
Open WebUIの接続メニューで、アドレスとしてhttp://localhost:8000/v1を入力し、パスキーとして「empty」を入力します。 - クリックして拡大
試してみましょう:
すべてが正しく設定されていれば、新しいチャットを開始し、ページ上部のドロップダウン メニューから Meta の Llama 3.2 11B モデルを選択できるようになります。
次に、画像をアップロードし、プロンプトを入力して Enter キーを押してモデルとのチャットを開始します。
モデルをテストするには、ドロップダウンから選択し、画像をアップロードしてプロンプトを入力します。 - クリックして拡大
トラブルシューティング
モデルが停止したり、読み込みを拒否したりする問題が発生する場合は、画像のサイズを縮小するか、コンテキスト ウィンドウを拡大する必要がある可能性があります。
画像が大きく複雑になるほど、モデルのコンテキストを多く消費します。Llama 3.2は128,000トークンというかなり大きなコンテキストウィンドウをサポートしており、メモリに制約がない限りは優れた性能を発揮します。
このガイドでは、--max-model-len
24GBのカードでメモリ不足を回避するため、コンテキストウィンドウ(コンテキストサイズ)を8192トークンに設定しています。ただし、メモリに余裕がある場合や量子化モデルを選択した場合は、この値を または 程度に増やすことができます12,288
。ただし、設定を高くしすぎるとメモリ不足エラーが発生する可能性があります。その場合は、モデルが正常に読み込まれるまで、16,384
コンテキストサイズを ずつ減らしてみてください。1024
私たちのテストでは、ちょっとした迅速なエンジニアリングがより良い結果に大きく貢献することがわかりました。ビジョンモデルに写真を与え、その写真を使って何をしてほしいかを正確に指示する、例えば「この画像で最も関連性の高い4つの特徴を特定し、関連する写真キーワードを割り当ててください」といった指示は、「これは何ですか?」という質問よりも、より有用な結果を生み出す可能性が高くなります。
当たり前のことのように思えるかもしれませんが、画像には人間の脳が自動的にフィルタリングしてしまうような多くの情報が含まれています。しかし、モデルは特定の要素に焦点を合わせるように指示されない限り、フィルタリングしません。そのため、モデルが意図したとおりに動作しない場合は、もう少し時間をかけて、より良いプロンプトを作成することを検討する必要があるかもしれません。
The Registerは、LLM、ビジョン対応LLM、そしてその他のAIテクノロジーの活用について、誇大広告ではなく、より深く掘り下げた情報を近日中にお届けする予定です。これらのテクノロジーがどのように連携するのかを、その真髄までお見せしたいと考えています。AIインフラ、ソフトウェア、モデルについて、何か気になる点がございましたら、ぜひ下のコメント欄にお寄せください。®
編集者注: The Registerは、本記事の裏付けとして、NVIDIA社からRTX 6000 Ada世代グラフィックカード、およびIntel社からArc A770 GPUの提供を受けました。いずれのサプライヤーも、本記事およびその他の記事の内容に関して一切関与していません。