免責事項:私はNuMindで働いています(我々は、構造化 + コンテンツ抽出のためにLLMを学習させています)。
Qwen3.5(および最近リリースされた他のモデル)を使っているなら、おそらく マルチトークン予測(MTP) モジュールが含まれていることはご存じでしょう。vLLM(qwen3_next_mtp)と組み合わせると、特に予測しやすいワークロードでは推論を大幅に高速化できます(予測しやすければほど、下書きトークンの受理率が高くなるためです)。
しかし:
- Hugging Face Transformers は、まだ MTP をサポートしていません(推論でも学習でも)
- そのため、Trainer でファインチューニングしても、MTPの重みは一度もロードされず、学習もされず、保存もされません
- 結果:推論のスペキュラティブデコーディング(--speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":4}')を使おうとすると、重みがないため vLLM がクラッシュします
簡単な回避策
完璧ではありませんが、動きます:ベースモデルから MTP の重みを、ファインチューニングしたモデルへコピーするだけです。
* MTPヘッドは学習されないままです
* しかし実際には、まだ役に立ちます
コードは単純に例えば次のようなものです
for filepath in path_source_model.glob("*.safetensors"): with safe_open(filepath, framework="pt", device="cpu") as f: for key in f.keys(): if "mtp" in key.lower() or "nextn" in key.lower(): mtp_weights[key] = f.get_tensor(key) save_file(mtp_weights, out_filepath) そして model.safetensors.index.json を更新します
私のツールを使うと、やることは単に
python3 main.py -s Qwen/Qwen3.5-0.8B -t numind/NuExtract-alpha で、Qwen3.5からファインチューニング済みモデルに元のMTPモジュールをマージします。これは、マージ済みのLoRAでも動くはずです。
社内テストでは:
* 最大で約0.9の受理率(最大4トークン)
* ただしワークロードへの依存度が非常に高い
より大きなモデルや、将来のオープンウェイトモデルについては、効率/受理率を改善するために、学習中にすべてのヘッドを含めます。我々はTransformersをそれに対応させるパッチを当てており、今後は誰でも使えるようになることを期待しています。
ツール
これを自動化するために、小さなCLIを作りました:
https://github.com/SorenDreano/transplant_mtp(MIT)
Qwen3.5モデルで動作確認済みです。
背景(私たちが作っているもの)
我々はドキュメント理解のためのオープンウェイトモデルを公開しました:
NuExtract 2.0:JSONテンプレートへの構造化抽出
https://huggingface.co/numind/NuExtract-2.0-8B
NuExtractは、JSONテンプレート入力(例えば
{ "Last name": "verbatim-string", "First names": [ "verbatim-string" ], "Document number": "verbatim-string", "Date of birth": "date-time", "Gender": [ "Male", "Female", "Other" ], "Expiration date": "date-time", "Country ISO code": "string" } のようなもの)と、ドキュメント(通常は画像またはスキャン)を受け取り、幻覚を起こさずに正しい情報でテンプレートを埋めます。
NuMarkdown:ドキュメント(画像、PDF、テキスト)を(ご想像のとおり)Markdownに変換
https://huggingface.co/numind/NuMarkdown-8B-Thinking
まもなく、構造化(jsonテンプレート)とコンテンツ(markdown)の両方を行う新しいオープンウェイトモデルをリリースする予定です
また、SaaSも提供しており、オンプレミスでのデプロイも可能です https://nuextract.ai
他の方が、ファインチューニング中にMTPを維持するための別アプローチを試したことがあるか、それとも誰かがTransformersをそれを適切にサポートするようパッチしたか、気になっています。
[link] [comments]



