Heron-NVILA-Lite-15Bは、自動運転開発のTuring株式会社が2025年5月12日に公開した日本語向けの視覚言語モデル(VLM、画像と文章をあわせて入力し文章で答えるモデル)です。言語モデルにQwen2.5-14B-Instruct、画像エンコーダにSigLIPを使い、NVIDIAが提案したNVILAの設計で両者をつないでいます。重みはApache License 2.0で公開されています。この記事は15Bに絞り、部品の構成、画像1枚が何トークンになるか、動かすのに要るGPUメモリ、NVIDIA公式のNVILAとどこが違うか、そして「73.5」と「59.6」という2つのHeron-Benchスコアがなぜ並存しているのかを、公式モデルカードと配布ファイルから読み解きます。
まとめ:Heron-NVILA-Lite-15Bの要点
- 総パラメータは15,259,108,464(BF16)。言語側はQwen2.5-14B-Instructで、名前の「15B」は画像エンコーダとProjectorを含めた全体の数字です。
- Heronの4サイズのうち15Bだけが視覚トークンを3×3で圧縮します。画像1タイルは121トークンで、2Bの256トークンの半分以下です。NVIDIA公式のNVILA-Liteは全サイズが3×3なので、15Bは公式Liteの圧縮方式をそのまま受け継いだ形です。
- BF16の重みは約30.5GBあり、24GBのGPU1枚には載りません。Hugging Face上の15BのGGUF版は言語部分だけで画像を入力できず、画像用のmmprojが出ているのは2Bだけです(2026年11月5日時点)。
- 発表時の「Heron-Bench 73.5」と、モデルカードの「59.6」は、採点に使ったGPT-4oの版が異なる2つの評価結果です。他モデルと比べるときは同じ表の中で比べてください。
- iPhoneで完全ローカルに動くと発表されたのは2Bで、15Bではありません。いま新しく組むなら
AutoModelForImageTextToTextで読める-hf版を使います(trust_remote_code=Trueは引き続き必要です)。
Heronという名前の3つの成果物(学習ライブラリ・モデル群・ベンチマーク)の区別と4サイズの全体像は、Heronとは?TuringのGitHubリポジトリの現状とNVILA-Lite 4モデル・商用ライセンスを解説で整理しています。以下は15Bの中身に入ります。
Heron-NVILA-Lite-15Bの構成:3つの部品と3×3圧縮
Heron-NVILA-Liteは「画像エンコーダ→Projector→言語モデル」の3段でできています。画像エンコーダが画像を特徴量の列に変え、Projectorがそれを言語モデルの入力空間へ写し、言語モデルが文章と一緒に処理します。15Bの部品は次のとおりです。
| 部品 | 中身 | 配布ファイルのサイズ |
|---|---|---|
| 画像エンコーダ | paligemma-siglip-so400m-patch14-448 | 約0.83GB |
| Projector | mlp_downsample_3x3_fix(2層MLP) | 約0.16GB |
| 言語モデル | Qwen2.5-14B-Instruct(48層) | 約29.5GB |
| 合計(-hf版) | 15,259,108,464パラメータ | 約30.5GB |
モデルカードの評価表は言語側の大きさを「LLM Size 14B」と書くので、15Bという名前とずれて見えます。数え方が違うだけで、矛盾ではありません。
画像1枚のトークン数:最大1,573トークン
画像エンコーダは448×448ピクセルを14ピクセル四方のパッチに分け、32×32=1,024個の特徴量を出します。15BのProjectorは3で割り切れない32×32の端をゼロで埋めて33×33にし、3×3ずつ束ねて11×11=121トークンにします(base_projector.py の flat_square_3x3)。1B・2B・33Bが使う2×2圧縮では16×16=256トークンです。
大きな画像は縦横比に合わせて最大12枚のタイルに切り分け、縮小した全体像を1枚足して処理します(config.json の max_tiles: 12)。-hf 版のプロセッサだけをtransformers 4.57.1で動かし(モデル本体は読み込まない)、単色画像を通して画像トークン数を数えた結果が次の表です(2026年10月1日に実施)。
| 入力画像 | タイル数 | 15B(3×3) | 2B(2×2) |
|---|---|---|---|
| 448×448 | 1 | 121 | 256 |
| 1920×1080 | 9 | 1,089 | 2,304 |
| 1024×768 | 13 | 1,573 | 3,328 |
| 3000×4000 | 13 | 1,573 | 3,328 |
言語側のトークナイザ設定は model_max_length が4096です。2Bでは1920×1080の画像を2枚入れるだけで4,608トークンになり、プロセッサが上限超過の警告を出しました。15Bなら同じ2枚でも2,178トークンに収まります。複数画像を1回の質問に入れる用途では、この差がそのまま効きます。
3×3圧縮の代償:細かい文字の読み取り
Turingの技術ブログは、15Bで3×3圧縮を選んだ理由を「学習時間を短縮するため」と説明し、2×2より性能が下がることが論文に書かれている点も認めています。NVILA論文のアブレーション(Table 1、Heron-15Bそのものではなく論文側のモデルでの比較)では、2×2圧縮・9〜12タイルのDocVQAが91.1だったのに対し、3×3圧縮・1〜12タイルは82.3、視覚エンコーダの追加事前学習を入れて88.8でした。請求書や細かい表の読み取りが主用途なら、15Bを第一候補にせず、2×2圧縮の33BやOCR専用モデルと比べてから決めるべきです。
NVILAとHeron-NVILA-Liteの関係
NVILAはNVIDIAの研究者らが2024年12月5日にarXivへ投稿したVLMの系列で(arXiv:2412.04468、CVPR 2025採択)、「解像度を上げてから視覚トークンを圧縮する」scale-then-compressという設計が中心です。論文が示すQwen2-VL比の速度(入力処理1.6〜2.2倍・生成1.2〜2.8倍)は8B・RTX 4090・量子化ありという条件での値で、Heron-15Bの速度を保証する数字ではありません。
NVIDIA公式NVILAの通常版とLite版:圧縮方式の違い
NVIDIAの公式モデルには、画像を複数の解像度で処理するDynamic-S2を使う通常版と、それを省いたLite版があります。Hugging Faceの Efficient-Large-Model で配布されている各モデルの config.json を読み比べると、Projectorの種類がきれいに分かれていました(2026年11月5日取得)。
| モデル | Projector | Dynamic-S2 |
|---|---|---|
| NVILA-8B・NVILA-15B(公式) | mlp_downsample(2×2) | あり |
| NVILA-Lite-2B・8B・15B(公式) | mlp_downsample_3x3_fix | なし |
| Heron-NVILA-Lite-1B・2B・33B | mlp_downsample_2x2_fix | なし |
| Heron-NVILA-Lite-15B | mlp_downsample_3x3_fix | なし |
公式は、通常版がS2と2×2、Liteが全サイズS2なしと3×3という組み合わせです。Heronは、マルチスケール処理が学習・推論時間を増やすとしてS2を省いたうえで、1B・2B・33Bでは圧縮を2×2に戻しました。15Bだけが公式Liteと同じ3×3のままです。つまり「Lite」という名前が同じでも、Heronの2Bと公式のNVILA-Lite-2Bでは、画像1タイルのトークン数が256と121で倍以上違います。
公式側も2025年9月4日に NVILA-Lite-15B-hf などの -hf 版を出しており、AutoModelForImageTextToText から trust_remote_code=True で読めます。英語中心の用途で公式モデルを試すならこちらが入口ですが、次に述べるライセンスの違いを先に確かめてください。
公式の重みを使わない理由:非商用ライセンス
Heron-NVILA-LiteはNVIDIA公式の重みを引き継いでいません。公式の Efficient-Large-Model/NVILA-Lite-15B は商用利用できません。ライセンス表記は配布ページのメタデータがCC BY-NC 4.0、本文がCC BY-NC-SA 4.0と食い違っていますが、どちらも非商用です。そこでTuringは設計だけを借り、SigLIPとQwen2.5から学習し直し、Projectorはランダムな初期値から学習しました。「nvila」で検索して公式モデルに行き着いた場合、同じ15Bでも商用利用の可否が逆である点を取り違えないでください。
Heron-Bench 73.5と59.6:2つのスコアの出どころ
15BのHeron-Benchスコアは、発表文では73.5、Hugging Faceのモデルカードでは59.6と書かれています。どちらも誤記ではありません。Heron-Benchはモデルの回答をGPT-4oに採点させる方式(LLM-as-a-Judge)で、採点に使ったGPT-4oの版が違います。Turingの技術ブログには「LLM-as-a-Judgeは評価モデルによってスコアが大きく変わります」と明記されています。
| 掲載先 | 採点モデル | 15B | 比較対象の例 |
|---|---|---|---|
| 技術ブログ・発表文 | gpt-4o-2024-11-20 | 73.5 | Gemma 3 12B 72.2/Qwen2.5-VL-7B 70.3 |
| モデルカード | gpt-4o-2024-05-13 | 59.6 | 33B 61.1/VILA-jp 57.2/GPT-4o 87.6 |
技術ブログの表で他モデルのスコアは2025年5月3日時点のllm-jp-eval-mmリーダーボードの値です。モデルカードは、Heron以外のスコアを2025年3月時点のリーダーボードとAsagiのサイトから引いています。73.5をモデルカード側のGPT-4o(87.6)と並べたり、59.6をブログ側のGemma 3(72.2)と比べたりすると、評価条件の違いをモデルの性能差と取り違えます。同じ表の中だけで比べてください。
どちらの表でも言えるのは、同規模の日本語VLMの中で15Bが上位にいることです。一方でHeron-Bench全体ではGPT-4oとの差が大きく、モデルカードの採点で28ポイント離れています。JA-VLM-Bench-In-the-Wild(日本の実写画像への応答)は15Bが4.2で、GPT-4oの3.85を上回りました。
設問そのものの揺れにも注意が要ります。京都大学・国立情報学研究所などのチームが2026年4月に公開したJAMMEval(arXiv:2604.00909)は、日本語のVQAベンチマーク7種を人手で見直し、Heron-Benchでは設問の14.6%を削除しました。1枚の画像に5問ずつ付ける作りのため、曖昧な設問が混ざりやすかったと説明しています。同論文の分析では、Gemini 3 Proの元のHeron-Benchでの誤答31件(103問中)は大半が採点側の誤りで、見直し後は88問中8件まで減りました。ブログもベンチマークの再実行でHeron-Benchのスコアが±0.3未満ほど揺れると書いています。1〜2ポイントの差でモデルの優劣を決めず、自社の画像で回答を見比べてから選んでください。
15Bと2B・33Bの選び分け
同じシリーズでも、15Bは他のサイズと学習条件が違います。選ぶ前に次の5点を比べてください。
| 項目 | 2B | 15B | 33B |
|---|---|---|---|
| 総パラメータ(-hf版) | 1,966,082,288 | 15,259,108,464 | 33,238,441,408 |
| 視覚トークン/タイル | 256 | 121 | 256 |
| Stage2のMOMIJI件数 | 13M | 13M | 3M |
| Heron-Bench(カード) | 52.8 | 59.6 | 61.1 |
| In-the-Wild(/5.0) | 3.52 | 4.2 | 4.0 |
33Bは画像エンコーダがsiglip2-so400m-patch16-512に替わり、圧縮も2×2なので、細部を読む力は33Bが有利と見込めます。ただし事前学習で使った日本語Webデータ(MOMIJI)は2B・15Bの13Mに対し33Bは3Mで、日本の実写画像を扱うIn-the-Wildでは15Bが上回りました。重みは33Bが約66.5GBで、15Bのほぼ2倍です。日本の街並み・看板・料理などの写真説明が中心で、重み30.5GBに実行時の領域を足して載るGPU1枚(24GBでは足りません)で運用したいなら15Bを選びます。
端末内で動かす前提なら2Bです。2025年5月の発表文が「iPhone上で完全ローカルかつ高速に推論可能」と書いたのは2Bで、15Bについての記述ではありません。なお告知されたiOSアプリ(App Store id6745646268)は、2026年11月5日時点でも日本・米国ストアとも404を返し、App Storeの検索APIでも該当がありません。
Heronの公開は2025年5月で、その後Turingの Hugging Faceページに新しいVLMは追加されていません(2025年10月の -hf 版4本が最後)。言語側の世代が新しいオープンなVLMと比べるなら、Qwen3-VLとは|2B〜235Bのモデル一覧・必要メモリ・Ollama/transformersでの動かし方も候補に入れ、日本語の画像で同じ質問を投げて比べるのが確実です。
動かすのに必要なGPUメモリと量子化版の注意
BF16重み30.5GBとKVキャッシュの見積り
BF16は1パラメータ2バイトなので、重みだけで約30.5GBです。これに推論中のKVキャッシュと中間計算の領域が加わります。言語側のQwen2.5-14Bは48層・KVヘッド8・ヘッド次元128のグループ化クエリアテンション(GQA)なので、KVキャッシュは1トークンあたり2×48×8×128×2バイト=196,608バイトです。バッチサイズ1・BF16で、入力と生成の合計が4,096トークン(トークナイザ設定 model_max_length の値)なら約0.8GBで、メモリの大半は重みが占めます。言語側の設定上の位置埋め込みは32,768トークンまであり、長く使えばその分だけ比例して増えます。GQAがKVキャッシュを減らす仕組みはグループ化クエリアテンションとは?GQAの仕組みとKVキャッシュ削減・実装判断を解説で説明しています。
重みだけで24GBを超えるので、24GBのGPU1枚にはBF16のまま載りません。実行時のピーク使用量は画像の枚数・入力長・バッチサイズで変わるので、搭載先は手元の入力で torch.cuda.max_memory_allocated() を測って決めてください。device_map="auto" を指定すれば複数GPUへの分割やCPUへの退避もできますが、CPU退避は生成速度が大きく落ちます。
GGUF版の対象範囲:15Bは言語部分のみ
Hugging Faceには第三者(Kyure-A)が2025年5月14日に公開した Heron-NVILA-Lite-15B-GGUF があり、Q4_K(約8.99GB)、Q6_K、q8_0、f16の4種が並んでいます。ただしQ4_Kのファイル先頭を読むと、アーキテクチャは qwen2、テンソルは48層分の579個で、画像エンコーダとProjectorのテンソルは1つもありません。llama.cppで画像を扱うのに要る mmproj ファイルも同梱されていません。つまりこのGGUFで動くのは、Heronの学習を経たQwen2.5-14Bの文章生成だけです。ollamaやLM Studioで「15BのVLMが4bitで動く」と考えて導入すると、画像を渡しても読まれません。
2Bには道があります。2025年11月26日に別の第三者(nawta)が Heron-NVILA-Lite-2B-mmproj-GGUF(F16・807MB)と、Q2_KからF16までの言語部分GGUFを公開しました。モデルカードによると、SigLIPと2×2のProjectorを、llama.cppが既に持つLFM2用のProjectorとして読ませる変換で、llama-mtmd-cli に --mmproj で渡す実行例が載っています(この記事では動作を検証していません)。3×3の15B向けのmmprojは、Hugging Faceで「Heron-NVILA」を検索しても見つかりませんでした(2026年11月5日時点)。公開済みの15BのGGUFだけでは画像を入力できません。bitsandbytesなどGGUF以外の量子化で15Bを画像付きで動かせるかは、配布元のカスタムコードとの組み合わせになるため、手元で確かめてから採用してください。GGUFの構造と量子化方式の違いはGGUFとは?量子化モデルフォーマットの仕組みとGPTQ・AWQとの違い・採用判断を解説【2026年版】を参照してください。
-hf版で15Bを読み込む手順
15Bには2種類の配布物があります。2025年5月の通常版は trust_remote_code=True と transformers==4.45.0(モデルカードは4.46.0と4.49.0でも動作確認済みと記載)に加え、scaling_on_scales の別途インストールが必要です。2025年10月17日に公開された Heron-NVILA-Lite-15B-hf は AutoModelForImageTextToText で読め、モデルカードは transformers==4.57.1 で開発したと書いています。通常版のカードにも「新しい版はこちら」として -hf 版が示されています。Hugging Face APIの累計ダウンロード数(downloadsAllTime、2026年11月5日取得)は通常版13,583回、-hf 版1,274回で、利用はまだ通常版が中心です。Web上の解説やサンプルを参考にするときは、どちらの版を対象にしているかを確かめてください。
次のコードはモデルカードのサンプルに dtype と device_map の指定を足したものです。この記事で実測したのはプロセッサ(画像トークン数)までで、15B本体の読み込みと生成は実行していません。
pip install "transformers[torch]==4.57.1" pillow accelerate
import torch
from PIL import Image
from transformers import AutoModelForImageTextToText, AutoProcessor
MODEL_NAME = "turing-motors/Heron-NVILA-Lite-15B-hf"
model = AutoModelForImageTextToText.from_pretrained(
MODEL_NAME, trust_remote_code=True, device_map="auto", dtype=torch.bfloat16
)
processor = AutoProcessor.from_pretrained(MODEL_NAME, trust_remote_code=True)
image = Image.open("sample.jpg").convert("RGB")
conversation = [{"role": "user", "content": "<image>\n画像を説明してください。"}]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
encoding = processor(text=text, images=[image], return_tensors="pt").to(model.device)
output = model.generate(**encoding, max_new_tokens=512)
print(processor.decode(output[0, len(encoding["input_ids"][0]):], skip_special_tokens=True))
dtype は省略しないでください。transformers 4.57.1は指定がないと重みを32bit浮動小数点で読み込むため、メモリが約61GBに倍増します(4.57.1の from_pretrained の説明に、指定しなければ torch.float(fp32)で読み込むと書かれています)。チャットテンプレートは、systemメッセージを渡さないと「以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。」を自動で差し込みます。独自のsystemプロンプトを使うときは、会話の先頭にsystemロールを置けばこの既定文は入りません。
通常版で複数の画像を同時に渡す場合の扱いにも差があります。配布コード(modeling_vila.py)がタイル分割を行うのは画像が1枚のときだけで、2枚以上だと各画像を448×448に縮小して1タイルで処理します。一方、-hf 版のプロセッサは2枚入れても1枚ずつタイル分割しました。複数画像の比較が多い用途では、版によって細部の見え方が変わる点に気をつけてください。
15Bの学習データと商用利用の条件
3段階の学習とMOMIJIの比重
NVILA論文は5段階の学習を採用していますが、Turingは日本語データの確保が難しいとして、前身のVILAと同じ3段階に絞りました。15Bのモデルカードに載っている内訳は次のとおりです。
| 段階 | 学習する部品 | 主なデータ | 件数 |
|---|---|---|---|
| Stage1 | Projector | 日本語画像テキスト対・LLaVA-Pretrain | 1.1M |
| Stage2 | Projector・言語モデル | MOMIJI(CC-MAIN 3回分) | 13M |
| Stage2 | Projector・言語モデル | mmc4-core・coyo-700m等の抜粋 | 20M |
| Stage3 | 全部品 | llava-instruct-ja・ja-vg-vqa等 | 1.1M |
MOMIJIは、TuringがCommon Crawlから作った日本語の文章と画像の並びを保ったデータセットです。ブログによると、本文5,000文字超のサンプルや10px未満の画像を持つデータを除外し、画像は類似度が最も高い文の直前に置き直しています。MOMIJIの規模と配布形式はHeron全体の解説記事で扱っています。
Apache License 2.0とOpenAI利用規約
重みはApache License 2.0で、商用利用ができます。ただし学習データにGPT-4が生成した合成データを含むため、モデルカードは利用者にOpenAIの利用規約の遵守も求めています。15Bの出力を別のモデルの学習データに使う計画があるなら、OpenAIの利用規約の該当条項に当たり、自社の用途が対象に入るかを法務と確認してから進めてください。
モデルカードは15Bを倫理・法令面の調整が十分でない実験的なモデルとも位置づけています。人物の識別や医療・法務の判断など、誤答がそのまま不利益になる用途に単体で載せる設計は避けてください。開発はNEDOの助成事業JPNP20017の成果に基づき、経済産業省とNEDOの生成AI開発支援プログラムGENIACの支援で計算資源(AWSのH100インスタンス)を確保しています。国産のモデルを業務に組み込む前提で、ライセンス確認から評価用の画像セットづくり、社内システムへの接続までを外部と進めるなら、一創の生成AI導入支援で相談を受けています。国産VLMの他の選択肢はSarashinaとは?無料APIの使い方・モデル一覧・TTS/OCRとライセンス【2026年10月】と並べて比べると判断しやすくなります。
よくある質問
Heron-NVILA-Lite-15Bは何パラメータですか?
-hf版の重みで15,259,108,464パラメータです。言語モデルのQwen2.5-14B-Instructに、SigLIPの画像エンコーダとProjectorを足した合計です。
NVILAとHeron-NVILA-Liteは何が違いますか?
NVILAはNVIDIAの研究者らが提案したVLMの設計と、その公式モデルです。Heron-NVILA-LiteはTuringがその設計のうちマルチスケール処理を省いたLite構成を採用し、日本語データで独自に学習したモデルです。公式のNVILA-Lite-15Bは非商用(配布ページ内でCC BY-NC 4.0とCC BY-NC-SA 4.0の表記が混在)、Heron-NVILA-Lite-15BはApache License 2.0です。
Heron-NVILA-Lite-15BはiPhoneで動きますか?
公式には案内されていません。iPhoneで完全ローカルに推論できると発表されたのは2Bです。15BはBF16の重みだけで約30.5GBあります。
15Bを動かすにはどのくらいのGPUメモリが必要ですか?
重みだけでBF16で約30.5GBあり、24GBのGPU1枚には載りません。KVキャッシュはバッチ1・4,096トークンで約0.8GBなので、重みに実行時の領域を足した量を実測して搭載先を決めます。1枚に収まらない場合は device_map="auto" で複数GPUへ分割します。
Heron-NVILA-Lite-15Bは商用利用できますか?
できます。重みはApache License 2.0です。ただしGPT-4生成の合成データを学習に含むため、OpenAIの利用規約にも従う必要があります。