はじめに
OCRモデルをGPU上で動かすには、NVIDIAドライバー、Docker、vLLMなどのセットアップが必要です。
今回は、次のTerraformスタックを使い、OCI Resource ManagerからA10 GPUへOCRモデルをデプロイします。
GitHub:
このツールでは、モデルを認証付きのOpenAI互換APIとして公開できます。
対応構成
| 項目 | 内容 |
|---|---|
| リージョン | 東京、大阪 |
| OS | Ubuntu 24.04 LTS |
| GPU |
VM.GPU.A10.1 / VM.GPU.A10.2
|
| API | vLLM OpenAI互換API |
| 認証 |
sk-で始まるAPIキー |
A10.1ではTP=1、A10.2ではTP=2が自動設定されます。
1スタックにつき1モデルをデプロイします。複数モデルを利用する場合は、モデルごとにスタックを作成します。
選択できるOCRモデル
| モデル | 特徴 |
|---|---|
zai-org/GLM-OCR |
図、チャート、スクリーンショットに強い |
baidu/Unlimited-OCR |
表や長文書の構造化に強い |
rednote-hilab/dots.mocr |
文書レイアウトやMarkdown化に向く |
結局、どれがおすすめ?
実データによる比較では、OCRモデルは大きく2系統に分かれました。
図・チャート・スクリーンショット
GLM-OCRがおすすめです。
図中の数値、グラフの軸、SmartArt内の文字などを読み取れます。
グラフ
チャート
画面キャプチャ
テキスト層のない提案スライド
このような資料が多い場合は、まずGLM-OCRを選びます。
表・長文書
Unlimited-OCRがおすすめです。
表をHTML形式で保持しやすく、行と列の関係を後段のRAGでも利用できます。
帳票
一覧表
長文書
表を含むスクリーンショット
表構造を重視する場合に適しています。
文書レイアウト
dots.mocrは、見出しや文書構造をMarkdown化したい場合の候補です。
ただし、図やチャートでは内容を十分に取得できない場合があるため、図主体の資料にはGLM-OCRを使う方が安全です。
実運用でのおすすめ構成
万能な1モデルはありません。
現実的には、次の2モデルを分けて利用します。
図・チャート・スクショ
→ GLM-OCR
表・長文書
→ Unlimited-OCR
文書レイアウトの抽出を比較したい場合に、dots.mocrを追加する構成がおすすめです。
デプロイ手順
1. Resource Managerを開く
GitHubのREADMEにあるDeploy to Oracle Cloudボタンを押します。
2. OCI環境を選択する
次の項目を指定します。
- コンパートメント
- 可用性ドメイン
- VCN
- パブリック・サブネット
- SSH公開鍵
3. GPUとモデルを選択する
検証用途なら、まず次の構成で十分です。
Shape: VM.GPU.A10.1
Boot Volume: 200 GB
API Port: 80
続けて、利用するOCRモデルとsk-で始まるAPIキーを入力します。
4. Applyする
Terraform Applyを実行すると、次の処理が自動実行されます。
A10インスタンス作成
↓
NVIDIAドライバー設定
↓
Docker設定
↓
OCRモデル取得
↓
vLLM API起動
ドライバーのインストールが必要な場合、インスタンスは途中で再起動します。再起動後も初期化処理は継続されます。
初期化状況を確認する
SSH接続後、次のコマンドで確認します。
sudo journalctl -u ocr-deployer-init.service -f
vLLMのログはこちらです。
sudo docker logs -f ocr-vllm
APIを確認する
Resource Managerの出力からパブリックIPを確認します。
curl -sS \
-H 'Authorization: Bearer sk-your-api-key' \
http://<PUBLIC_IP>:80/v1/models
モデル一覧が返れば、デプロイ完了です。
選択したHugging FaceモデルIDが、そのままAPIのモデル名になります。
注意点
OCI側のSecurity ListまたはNSGで、APIポートへのIngressを許可する必要があります。
Source CIDR: 利用元IP/32
Protocol: TCP
Port: 80
SSHの22番ポートも、管理元IPだけに制限します。
また、デフォルトではHTTPで公開されます。本番環境では、NSGによるアクセス制限に加え、TLS、リバースプロキシ、またはAPI Gatewayを利用してください。
まとめ
no.1-oci-a10-ocr-deployerを使うと、OCI A10 GPU上にOCRモデルを簡単にデプロイできます。
モデル選択は、次の基準で考えると分かりやすいです。
図・チャート・スクショ → GLM-OCR
表・長文書 → Unlimited-OCR
文書レイアウト → dots.mocr
実運用では、GLM-OCRとUnlimited-OCRを別スタックで起動し、資料の種類によって振り分ける構成が最も実用的です。