5 ポイント 投稿者 GN⁺ 2025-05-17 | 1件のコメント | WhatsAppで共有
  • Ollamaは新しいエンジンにより、マルチモーダル(テキスト+画像)モデルのサポートを開始
  • Llama 4 ScoutGemma 3など、さまざまな視覚マルチモーダルモデルをサポートし、画像とテキストを組み合わせた質問応答が可能に
  • 新しいエンジンはモデルのモジュール性向上、精度改善、効率的なメモリ管理機能を提供
  • 画像キャッシュ、ハードウェアメタデータ活用などにより、高速な推論性能とハードウェア最適化を実現
  • 今後は、より長いコンテキスト対応、ツール呼び出し、ストリーミングなど、さまざまな機能拡張を予定

Ollamaのマルチモーダルモデル対応

Ollamaは新しいマルチモーダルエンジンの導入により、画像とテキストを複合的に扱う最新のビジョンマルチモーダルモデルをサポートします。

総合的なマルチモーダル理解と推論

Llama 4 Scout

  • OllamaではLlama 4 Scout(1090億パラメータ、mixture-of-expertsモデル)をサポート
  • 例として、動画フレームに対する位置ベースの質問が可能
    • 例)特定の建物、環境要素、背景情報など、さまざまな画像特徴を検出
  • 続けて多様な後続質問も自然に行える
    • 例)「この建物からスタンフォードまでどれくらい遠いか?」「どう行くのが最適か?」といった質問に正確な情報を提供
    • 複数の交通手段、経路、予想所要時間など、実際の状況に合った回答を提供

Gemma 3

  • Gemma 3は複数の画像を同時に入力し、画像間の関係を分析できる
    • 例)4枚の画像に共通して登場する動植物、特定の場面の有無、特異な状況など、さまざまな条件を素早く把握
    • 面白い例として、ラマとイルカがボクシングする様子を見て、どちらが勝つかを分析し、個体の特徴や動きのダイナミクスを把握

文書認識と分析

Qwen 2.5 VL

  • Qwen 2.5 VLモデルは、文字認識(OCR)や画像内の特定テキスト情報の抽出に活用される
    • 実際の利用例として、小切手の情報を抽出したり、春節の対聯のような中国語の縦書き句を英語に翻訳したりする作業を処理

Ollamaマルチモーダルエンジンの特徴

  • Ollamaはこれまでggml-org/llama.cppプロジェクトに依存してモデル対応を進めてきており、使いやすさとモデル移植性を中心に開発してきた
  • 近年、さまざまな研究機関がマルチモーダルモデルを公開しており、Ollamaは目標どおり、より幅広いモデル対応のためにエンジンを独自に強化
  • 新しいエンジンはマルチモーダルモデルを独立した一級オブジェクトとして扱い、パートナーやコミュニティの参加も高めている

エンジン進化の意味

  • Ollamaのローカル推論における信頼性と精度の向上、そして今後の多様なマルチモーダル分野への対応基盤を整備(例:音声、画像生成、動画生成、長いコンテキスト対応、改善されたツール活用など)

モデルのモジュール性

  • 各モデルの「影響範囲」を独立させ、信頼性を高め、開発者が新モデルを容易に統合できるように設計
    • 従来のggml/llama.cppはテキスト専用モデルのみをサポートしており、マルチモーダルではテキストデコーダとビジョンエンコーダが分離されて別々に実行される
    • 画像はビジョンアルゴリズムで埋め込み化された後にテキストモデルへ渡される必要があるため、各モデルごとのロジックをスリムに実装できる
    • Ollama内では、モデルが独自に埋め込み射影層や、モデル固有の学習体系に合わせた分離を行える
    • モデル開発者は追加パッチや複雑な条件分岐なしに、自身のモデルと学習に集中できる
    • 一部のモデル構造の例はOllamaのGitHubリポジトリで確認できる

精度向上

  • 大きな画像はトークン数が多く、バッチサイズを超える可能性がある
    • 画像がバッチを超える場合、位置情報が崩れることがある
  • Ollamaは画像処理時に追加メタデータを付与し、精度を高めている
    • causal attentionの適用有無、画像埋め込みのバッチ分割と境界管理などを細かく処理
    • 分割位置が不適切だと出力品質が低下する懸念があり、各モデルの論文基準に合わせて基準点を調整
  • 他のローカル推論ツールはそれぞれ異なる方式で実装しているが、Ollamaはモデル設計と学習方式に合わせた正確な処理で品質を保証する

メモリ管理の最適化

  • 画像キャッシュ: 一度処理した画像は継続してメモリに保持されるため、後続プロンプトの処理速度が向上する。メモリ限界に達しない限り、画像は保持される
  • メモリ予測とKVキャッシュ最適化: ハードウェアメーカーおよびOSパートナーと協力し、ハードウェアメタデータを正確に認識して、メモリ使用の最適化を追求
    • ファームウェアバージョンごとの検証を実施し、新機能のベンチマークも進めている
  • Ollamaはcausal attentionをモデル単位で個別に最適化し、グループ単位ではなく各モデルに合わせた設定を提供
    • 例:
      • Google DeepMindのGemma 3: スライディングウィンドウアテンションによって一部のコンテキスト長のみを割り当て、残りのメモリを同時推論などに割り当て
      • MetaのLlama 4 Scout、Maverickなど: chunked attention、2D rotary embeddingなどをサポートし、mixture-of-expertsモデルの長いコンテキスト対応を実装
  • アテンション層が完全には実装されていないモデルは「動作」することはあっても、長期的には出力品質の低下や異常な結果を招く可能性がある

今後の計画

  • より長いコンテキスト長への対応
  • 推論・思考能力の強化
  • ツール呼び出しとストリーミング応答の提供
  • コンピュータ直接活用機能の拡張

謝辞

  • モデル開発に貢献した団体および研究者
    • Google DeepMind、Meta Llama、Alibaba Qwen、Mistral、IBM Graniteなど、ビジョンモデル開発に尽力した多数の研究機関とコミュニティメンバーに感謝
  • GGML
    • GGMLチームのテンソルライブラリは、Ollamaの推論エンジンを構成する中核要素。GoからGGMLへ直接アクセスし、カスタム推論グラフや複雑なモデルアーキテクチャ設計に活用できる
  • ハードウェアパートナー企業
    • さまざまなデバイスでの推論性能向上に協力したNVIDIA、AMD、Qualcomm、Intel、Microsoftなどのハードウェアパートナーに感謝

1件のコメント

 
GN⁺ 2025-05-17
Hacker Newsのコメント
  • この時点でOllamaが新しいエンジンを発表したと聞いて驚いたという反応。llama.cppがついに安定したvision機能をメインブランチに取り込み、長年の努力がようやく実を結んだことに由来する感慨を共有しており、Ollamaもすでに長い間この機能を準備していたのではないかと推測している。llama.cppへの当初の依存を断ち、独立して進むという判断は妥当だという見方
  • 両プロジェクトがマルチモーダル機能を追加した実質的な違いは何なのか気になるという声。LLaVA対応は以前からあったため、従来は特別な処理方式が必要だったのかと疑問を呈している。元記事でその違いに触れられることを期待していたが、Ollamaでのマルチモーダル対応がまるで完全な新機能のように扱われていて混乱したという感想
  • マルチモーダルという用語は、テキストや画像だけでなく音声(そして潜在的には動画)まで含む概念であるべきだという意見。単に画像生成や画像解析機能だけを持つモデルなら、「vision model」のほうがより正確な呼び方だと主張している。Qwen2.5-OmniとQwen2.5-VLのように、マルチモーダルモデルは明確に区別する必要があると強調し、Ollamaの新しいエンジンはその意味では「vision」対応を追加したと説明している
  • 動画入力を扱いたいという関心を示し、Qwen2.5-OmniやOllamaで動画入力が可能かどうかを質問
  • Ollamaの「新しいエンジン」については多く語られているものの、実際の実装方法に関する具体的な情報が見たいという希望。llama.cpp自体も非常に優れたプロジェクトなので、それを置き換えるエンジンを作ったのであれば、どう実装したのか例を見てみたいという期待感がある。GGMLテンソルライブラリが中核を担っていると推測しており、Go言語からFFI(異種言語関数呼び出し)経由で直接モデル動作(たとえばGemma3実装)を書きつつGGMLの機能を使う構造ではないかと見ている。こうした技術的詳細は公式ブログでもっと明示的に書かれるべきだったという意見
  • Ollamaはこれまで透明性の欠如、不明瞭なクレジット表記、ユーザー中心ではない意思決定などで批判されてきた企業だという認識。今回の記事ではむしろコントリビューター表記が増えていて驚いたという反応で、ユーザーからの批判が多かったため調整が入ったのではないかと推測している
  • LLM界隈における「*llama」という命名慣行があまりに紛らわしいという告白。llamaに似た名前のプロジェクトが大量にあり、混乱が深まっているという話
  • AI/MLの進歩の速度があまりに速く、追いかけるのが難しいという苦労を共有。注視していないと把握できず、「ミームっぽい」名前が好まれる傾向にも触れている。以前にはセサミストリートのキャラクター名やYOLO系モデルなど、さまざまな流行があり、学会論文でさえ例外ではなかったという逸話
  • 少し脇道にそれて、Ollamaが一部ユーザーから否定的に見られている理由について疑問を呈するコメント。単に自分でllama.cppを回せという以上の説明があまり見当たらなかったと指摘している
  • RedditとGitHub Issueへのリンク共有を通じて、Ollamaがllama.cppに十分なクレジットを与えていないという長年の問題があることを紹介。中にはllama.cppを直接使っているにもかかわらず、Ollamaに功績が帰されてしまうプロジェクトもあると指摘している。Ollama自身は直接コントリビュートしてはいないが(義務ではない)、内部でメンテされているフォークがあり、関心のある人は必要に応じてcherry-pick方式でコードを利用できる構造だという説明
  • 前述の文化・ライセンス・FOSSの話とは別に、ファイル保存方式への不満も表明。Ollamaは独自のディスク保存方式とレジストリを導入しており、再利用しにくくなっていると指摘している。長期的な収益化を見据えて排他的な構造を設計したのではないかと推測しており、Dockerのように重複保存を防ぐ目的かもしれないが、実際には使い勝手を悪化させているという批判。結果として30GBを超える大容量ファイルを重複保管する手間が生じ、小さな問題でも大きく感じられるという。さまざまなエコシステムと互換性のある標準方式のほうが望ましく、その不便さゆえにOllamaを使わなくなったという意見
  • Ollamaを、LLM界におけるDockerに近いソリューションだと評価するコメント。ユーザー体験やモデルファイルの文法もDockerfileから着想を得ている印象だとしている。Docker初期にもDockerとLXCをめぐる論争があったが、DockerのUX革新性が見落とされていたことを思い出すという話。ただし、llama.cppを長年十分に認めてこなかった点は問題だとし、現在はある程度オープンにクレジット表記があるとも付け加えている
  • Ollamaがコミュニティと協調していない点に不満を示すコメント。VCから資金調達している企業なので、どう収益化するのかという疑問が依然として残るとしている。llama.cpp、lmstudio、ramalamaなど他の代替ではそれぞれの立ち位置が比較的明確で、ramalamaは関連するさまざまなオープンソースへの貢献も多いと述べ、参考用のGitHubリンクを紹介している
  • Ollamaは単にllama.cppのフロントエンドであるにもかかわらず、それを明示せず認めない姿勢が残念だという指摘
  • Ollamaの例の一つである「縦書きの中国の春聯の翻訳」には誤訳が多いという指摘。ブログ執筆者は実際には中国語話者ではないのではないかと推測し、各部分について実際の内容とOllamaの出力がどう違っていたかを具体的に分析している
  • その例を実施したメンテナー本人が登場し、自分が中国人であることを明言して信頼性を補強。英訳自体はかなり正確だったと判断しており、モデルの誤りやデモを隠したり操作したりしていないことを強調している。長期的にはモデルの品質がさらに改善されることを望んでいるという話
  • 自分でも試してみるつもりで、実用的な例や詳細がすぐに分かる記事の作り方は良いという評価
  • Ollamaの強みは、特別な設定なしに簡単なDockerコマンドだけですぐモデルを動かせた点にあったという意見。ただし画像や動画を使う必要がある場合、DockerはGPUを使わないため技術的制約が生じるとも述べている。Ollamaが今後Docker連携をどう維持していくのか、もしかするとこの機能はプロジェクト内で比重の低い副次要素になってしまうのではないかと疑問を示している
  • 一部プラットフォームではDockerでもGPUを利用できるという補足。ただし追加の設定が必要で、nvidiaが関連ドキュメントを提供しているという説明
  • 例の中のスタンフォードへの移動案内で実際に誤情報が出ていたのが面白いという感想。CA-85はPalo Altoよりさらに南側だという交通の常識を共有している
  • 1年近くOllamaでローカルモデルを使っていて満足しているが、Llavaなどのマルチモーダル対応はほとんどテキスト中心の用途しかなく、あまり体験できていないという説明。マルチモーダルなローカルモデルで作られた有用で面白いプロジェクトがあれば勧めてほしい、自分用のプロジェクトのアイデアを探したいという希望