DeepSeek マルチモーダルチュートリアル
DeepSeek VL2 視覚言語モデルと Janus マルチモーダル理解および画像生成。環境構築から完全な推論まで、OCR、グラフ分析、視覚的質問応答、テキストから画像への生成など、すべてのコア機能を網羅します。
学習を始めるマルチモーダルモデル概要
DeepSeek は2つのマルチモーダルモデルを発表しました:VL2 は視覚言語理解に特化し、Janus はマルチモーダル理解と画像生成の両方をサポートします。両者はアーキテクチャ設計、能力の重点、適用シナリオにおいて異なります。
マルチモーダルモデル概要 — VL2 と Janus
VL2 と Janus の核心的な違いを理解することは、適切なモデルを選択する前提です。以下では、アーキテクチャ、能力、適用シナリオなどの観点から包括的な比較を行います。
VL2 と Janus の位置づけ比較
| 比較項目 | DeepSeek VL2 | DeepSeek Janus |
|---|---|---|
| 中核能力 | 視覚言語理解(単方向) | マルチモーダル理解 + 画像生成(双方向) |
| アーキテクチャ設計 | 視覚エンコーダ + 言語モデル投影 | 統一自己回帰 Transformer |
| 画像理解 | プロフェッショナル級、動的解像度 | 対応、固定 384x384 解像度 |
| 画像生成 | 非対応 | 対応、テキストから画像生成 |
| OCR 能力 | 非常に強力、動的解像度による強化 | 基本的な対応 |
| モデル規模 | Tiny / Small / Full の 3 段階 | Janus-Pro-7B(7B パラメータ) |
| 典型的なシナリオ | OCR 文書認識、グラフ分析、視覚的質問応答 | 画像キャプション、マルチモーダル対話、テキストからの画像生成 |
アーキテクチャの違いの詳細
DeepSeek VL2 は、古典的な視覚エンコーダ + 大規模言語モデルのアーキテクチャを採用しています。SigLIP が視覚エンコーダとして画像特徴を抽出し、MLP 投影層を介して言語モデルの埋め込み空間にマッピングし、最後に DeepSeekMoE 言語モデルがテキスト応答を生成します。VL2 は動的解像度をサポートしており、高解像度画像を複数のタイルに分割して個別にエンコードし、全体のサムネイルとともにモデルに入力することで、OCR と細かい視覚理解を大幅に向上させます。
DeepSeek Janus は、統一された Transformer 自己回帰アーキテクチャを採用し、画像理解と生成を単一のフレームワークに統合しています。理解パスでは SigLIP エンコーダを使用して視覚特徴を抽出し、LLM に適応させます。生成パスでは VQ トークナイザを使用して画像を離散トークン系列に変換し、LLM が自己回帰的に生成します。Janus-Pro-7B は Janus をさらに最適化し、マルチモーダル理解性能と画像生成品質を向上させています。
選定の推奨事項
- 高精度な OCR と文書理解が必要な場合:VL2 を選択。動的解像度メカニズムにより、文字認識に優れています
- 画像生成機能が必要な場合:Janus を選択。テキストから画像生成をサポートし、384x384 解像度です
- 視覚的質問応答とグラフ分析が必要な場合:VL2 が第一選択。視覚理解の精度が高い
- 統一されたマルチモーダル対話体験が必要な場合:Janus は理解と生成の切り替えがより自然
- リソースが限られている場合:VL2 Tiny(3B)または VL2 Small(16B)はコンシューマー向け GPU で実行可能
DeepSeek VL2環境構築
依存関係のインストール、モデルのダウンロード、環境設定を行います。VL2はTiny/Small/Fullの3つのモデルサイズを提供しており、ハードウェア構成に応じて柔軟に選択できます。
VL2モデルサイズ比較
| モデルバージョン | パラメータ数 | ビジョンエンコーダ | GPUメモリ要件 | ユースケース |
|---|---|---|---|---|
| VL2-Tiny | 3B | SigLIP-SO400M | 約8GB | 迅速なプロトタイピング、モバイル展開 |
| VL2-Small | 16B | SigLIP-SO400M | 約40GB | 研究、高精度OCR |
| VL2-Full | 27B(MoE) | SigLIP-SO400M | 約80GB | プロフェッショナル向け視覚理解、複雑な文書分析 |
依存関係のインストール
Hugging Faceからのモデルダウンロード
ヒント
ダウンロード速度が遅い場合は、HFミラーを設定できます:export HF_ENDPOINT=https://hf-mirror.com。モデルダウンロードの詳細は、DeepSeekモデルダウンロードガイドをご覧ください。
VL2 画像理解
VL2 は、画像キャプション、視覚的質問応答、OCR テキスト抽出、グラフ分析、視覚的グラウンディングなどの主要機能をサポートしています。以下で各機能のコード実装を示します。
モデルと画像の読み込み
視覚的質問応答(VQA)
OCR テキスト抽出
グラフ理解
視覚的グラウンディング
VL2 動的解像度
動的解像度は VL2 の主要な革新の一つです。これにより、モデルは入力画像の実際のサイズに基づいて、画像を複数のタイルに適応的に分割して処理し、高解像度画像の詳細を保持できます。
動的解像度メカニズムの原理
従来の視覚モデルは通常、画像を固定サイズ(例:384x384)にリサイズするため、高解像度画像の文字や詳細が失われます。VL2 の動的解像度メカニズムは、画像を複数のローカルタイル(各タイルはデフォルトで 384x384)に分割し、同時にグローバルサムネイルを保持することで、モデルが全体のレイアウトを理解しつつ、局所的な詳細も捉えられるようにします。
動的解像度の処理フロー:
- 画像のアスペクト比に基づいて最適な分割プランを計算(例:2x2、3x2、1x3 など)
- 画像をターゲット解像度にリサイズし、複数のタイルに分割
- 全体のレイアウト情報を保持するグローバルサムネイルを生成
- すべてのタイルとサムネイルをそれぞれ視覚エンコーダーに入力
- エンコードされた視覚特徴を連結し、言語モデルに入力
動的解像度の設定
動的解像度 vs 固定解像度
| 比較 | 固定解像度 | 動的解像度 |
|---|---|---|
| OCR 精度 | 低い、小さな文字がぼやける | 高い、小さな文字も鮮明に読み取れる |
| 推論速度 | 速い、単一タイル | 遅い、複数タイルを並列処理 |
| メモリ使用量 | 低い | 高い、タイル数に応じて増加 |
| 適用シナリオ | クイックプレビュー、低解像度画像 | 高精度 OCR、文書分析、チャート読み取り |
ベストプラクティス
文書 OCR やチャート分析には、常に動的解像度モードを使用してください。単純なシーン分類や物体認識には、計算リソースを節約するために固定解像度を使用できます。タイル数は 9 個以内(約 1152x1152)に抑えることを推奨します。それを超えると限界利益は減少します。
VL2 マルチターン視覚対話
VL2 はマルチターン対話をサポートしており、対話中に異なる画像に切り替えることができます。モデルはコンテキストを記憶し、回答を続けます。以下にマルチターン対話の実装方法を示します。
マルチターン対話のコード実装
対話コンテキスト管理
マルチターン対話では、以下の点に注意してください:
- コンテキスト長の制限: VL2 のコンテキストウィンドウには制限があるため、長い対話では履歴を切り詰めるか、要約戦略を使用する必要があります。
- 画像蓄積戦略: 各ターンで過去の画像を保持するか選択できます。すべての画像を保持すると、より多くの GPU メモリを消費します。
- 対話履歴の構造: role (user/assistant) と content の交互構造を維持し、モデルが対話の流れを理解できるようにします。
- 画像の参照: 質問内で画像を明確に参照してください(例:「最初の画像の...」)。モデルの混乱を避けます。
- タイムリーなクリーンアップ: 対話のトピックを切り替えるときは、コンテキストの汚染を避けるために conversation_history をリセットすることをお勧めします。
最適化の提案
長い対話のシナリオでは、各ターンで直近の 3〜5 ターンのみをコンテキストとして保持し、トークン制限を超えないようにすることをお勧めします。複数の画像を比較分析する必要がある場合は、複数のターンに分けて送信するのではなく、1 つのターンにすべての画像を含めることができます。
Janus 環境構築
Janus は DeepSeek の統一マルチモーダルモデルで、画像理解と画像生成の両方をサポートしています。Janus-Pro-7B は最新バージョンで、理解と生成の両方で大幅に改善されています。
依存関係のインストール
Janus-Pro-7B のダウンロード
Janus モデル規模の比較
| モデルバージョン | パラメータ規模 | 画像理解 | 画像生成 | GPU メモリ要件 |
|---|---|---|---|---|
| Janus-1.3B | 1.3B | 基本サポート | 384x384 | 約 6GB |
| Janus-Pro-7B | 7B | 拡張版 | 384x384(品質向上) | 約 20GB |
Janus マルチモーダル理解
Janus は、画像キャプション、視覚的質問応答、マルチモーダル推論をサポートしています。理解精度は VL2 には及びませんが、その統一アーキテクチャにより、理解と生成をシームレスに切り替えることができます。
Janus モデルのロード
画像キャプション(Image Captioning)
視覚的質問応答
マルチモーダル推論
Janus 画像生成
Janus はテキストから画像への生成をサポートし、384x384 解像度の画像を出力します。生成パラメータを調整することで、画像の多様性と品質を制御できます。
テキストから画像への生成
生成パラメータの説明
| パラメータ | 説明 | 推奨値 |
|---|---|---|
| temperature | 生成の多様性を制御します。高いほどランダムになり、低いほど決定論的になります | 0.8 - 1.2 |
| top_p | 核サンプリングの閾値で、候補トークンの範囲を制御します | 0.9 - 0.95 |
| max_new_tokens | 生成する最大トークン数。画像の詳細に影響します | 1024 - 2048 |
| do_sample | サンプリングを使用するかどうか。False の場合は貪欲法デコードを使用 | True(画像生成の場合) |
バッチ画像生成
ヒント
Janus の画像生成は自己回帰 Transformer に基づいており、生成速度は max_new_tokens に依存します。384x384 の解像度はほとんどのシナリオに適しています。より高い解像度が必要な場合は、後で超解像モデルを使用して拡大できます。プロンプトは英語で記述することをお勧めします。説明が具体的であればあるほど、生成結果が良くなります。
VL2 と Janus の包括的な比較
アーキテクチャ、能力、モデル規模、推論速度、適用シナリオなどの観点から VL2 と Janus を総合的に比較し、正しいモデル選択を支援します。
コア機能の比較
| 機能の側面 | DeepSeek VL2 | DeepSeek Janus (Pro-7B) |
|---|---|---|
| OCR 文字認識 | 非常に強い(動的解像度対応) | 普通 |
| チャート/文書理解 | プロフェッショナルレベル | 基本的なサポート |
| 視覚的質問応答 | 高精度 | 中程度 |
| 画像キャプション | 詳細で正確 | 自然で流暢 |
| 画像生成 | 非対応 | 対応(384x384) |
| テキストのみの対話 | 対応 | 対応(より自然) |
| 推論速度 | 中程度(タイルが多いと遅い) | 高速(固定解像度) |
| モデル規模 | 3B / 16B / 27B(MoE) | 1.3B / 7B |
推奨ユースケース
| シナリオ | 推奨モデル | 理由 |
|---|---|---|
| 文書 OCR 認識 | VL2 | 動的解像度、小さな文字も鮮明 |
| 財務諸表分析 | VL2 | チャート理解 + データ抽出 |
| マルチモーダルチャットボット | Janus | 理解と生成の統合体験 |
| AI 绘画アプリ | Janus | テキストから画像へのネイティブ対応 |
| 医用画像分析 | VL2 | 高精度な細粒度認識 |
| クリエイティブコンテンツ生成 | Janus | 理解と生成のクローズドループ |
組み合わせ利用プラン
実際のプロジェクトでは、VL2 と Janus を補完的に利用できます:
- VL2 で理解 + Janus で生成:VL2 でユーザーがアップロードした画像を高精度に理解し、重要な情報を抽出した後、Janus で応答や新しい画像を生成
- VL2 で前処理 + Janus で対話:VL2 が OCR と文書解析を担当し、Janus が自然言語対話とクリエイティブ生成を担当
- シナリオによるルーティング:文書関連のリクエストは VL2 に、クリエイティブ関連のリクエストは Janus にルーティングし、リソースを最適に活用
モデルの比較や選定ガイドの詳細は、DeepSeek オープンソースモデルリスト と DeepSeek モデルアーキテクチャ詳細 をご覧ください。
実践:マルチモーダルAIアプリケーション
VL2とJanusを完全なWebアプリケーションに統合し、画像アップロード、視覚的質問応答、画像生成をサポートします。Streamlitを使用してインタラクティブなUIを構築します。
完全なアプリケーションコード:multimodal_app.py
インストールと実行
アプリ機能の説明
- VL2 視覚理解:画像アップロード、複数タスクタイプ(OCR/チャート/検出/説明)、カスタム質問に対応
- Janus 画像理解:画像をアップロードし、自然言語で Q&A
- Janus 画像生成:テキストから画像を生成、温度調整とバッチ生成に対応
- モデルキャッシュ:Streamlit のキャッシュ機構を使用し、モデルは一度だけ読み込む
- サイドバー設定:モデルとモードを柔軟に切り替え、生成パラメータを調整
デプロイメントの推奨事項
本番環境では、ハードウェアコストを抑えるために VL2-Tiny または Janus-1.3B の使用を推奨します。高性能な推論が必要な場合は、vLLM や TGI を使用してモデルサービスをデプロイし、フロントエンドは API 経由で呼び出します。詳細は DeepSeek デプロイチュートリアル を参照してください。
DeepSeek マルチモーダルよくある質問
DeepSeek 関連チュートリアル
DeepSeek モデルの使用方法、デプロイ、エコシステムツールを詳しく学びます。
DeepSeek モデルアーキテクチャ
技術アーキテクチャ、ベンチマーク、モデル選定の比較。
DeepSeek オープンソースモデル
6シリーズ、20以上のモデルの完全カタログ。
DeepSeek デプロイガイド
Ollama、Docker、vLLM、K8s でのデプロイ方法。
DeepSeek モデルの使い方
4つの使用方法、初心者向け入門チュートリアル。
DeepSeek モデルのダウンロード
Ollama、Hugging Face、GitHub からのダウンロードガイド。
DeepSeek モデルのファインチューニング
LoRA、QLoRA を使った実践チュートリアル。