Dante-2B: 2×H200で2.1Bバイリンガルの完全オープンなイタリア語/英語LLMをスクラッチから学習しています。フェーズ1完了——ここまでに作ったもの

Reddit r/LocalLLaMA / 2026/4/6

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisModels & Research

要点

  • この記事は、Dante-2Bについて述べています。これは、Llama/Mistralからの適応ではない、イタリア語/英語のデコーダーのみバイリンガルLLM(2.1Bパラメータ)を2×H200 GPUでスクラッチから学習したものです。フェーズ1は約16日で完了し、フェーズ2ではより長いコンテキストへ拡張しています。
  • Dante-2Bの主な差別化は、イタリア語の形態(morphology)と句読点に特化して作った独自の64K BPEトークナイザです。アクセント付き文字の原子的な取り扱い(atomic handling)や、アポストロフィを含む縮約(contractions)などを含め、トークナイザのオーバーヘッドを減らし、イタリア語の効率/品質を高めることを狙っています。
  • モデルは、H200向けにFlash Attention最適化を行った、GQAを備えるLLaMA風アーキテクチャで、SwiGLU FFN、RMSNorm、RoPEを使用します。MoE(Mixture of Experts)はなく、すべての2Bパラメータがトークンごとに有効になります。
  • フェーズ1の学習では、seq_len 2048で約90Bトークンを、DeepSpeed ZeRO-2とFP8アクセラレーション(torchao)で実施しました。NaNやOOMの発生がなく安定しており、MFUも一貫していたと報告されています。フェーズ2では、ターゲットとなる4096コンテキストに向けて、さらに約30Bトークンを追加しています。
  • 著者は、フェーズ1の後の時点で、モデルはすでに文法や冠詞の使い方が正しい、筋の通ったイタリア語を生成できると主張しています。これにより、大規模な推論システムというより、実用的な「ネイティブ級のイタリア語対応小型モデル」である立ち位置づけを行っています。

問題

イタリア語のテキストやローカルのモデルを扱っていると、そのつらさが分かります。世にあるあらゆるオープンソースのLLMは、イタリア語を後回しにしています――英語優先のトークナイザ、英語優先のデータ、場合によっては微調整(fine-tuning)の途中でイタリア語を少しだけ混ぜる程度。結果として、トークン数が不必要に膨らみ、形態処理がうまくいかず、モデルが「観光客がローマでコーヒーを注文するような感じで」イタリア語を話してしまいます。

私は、最初から根本的にこれを直すことにしました。

Dante-2Bとは

パラメータ2.1B、デコーダのみの密な(dense)トランスフォーマ。最初から学習――Llamaの微調整ではなく、Mistralへのアダプタ追加も無し。2×H200のGPUで16日間、イタリア語として破綻しない内容に到達するようランダム初期化から学習しました。

アーキテクチャ:

  • GQA付きのLLaMAスタイル(20クエリヘッド、4 KVヘッド――5:1の比率)
  • SwiGLU FFN、RMSNorm、RoPE
  • d_model=2560、28層、d_head=128(H200でのFlash Attention向けに最適化)
  • 重み共有(weight-tied)の埋め込み、MoEなし――全2.1Bパラメータがトークンごとにアクティブ
  • イタリア語+英語+コードのために特別に作ったカスタム64K BPEトークナイザ

なぜトークナイザが重要なのか

ここが、ほとんどの多言語モデルが静かに失敗するポイントです。一般的な英語中心のトークナイザはl'intelligenzal'intelligenzaに分割します――イタリア語話者が1.5語くらいとして認識するものを、3トークンにしてしまう。これを文書全体にわたって掛け算すると、トークナイザのオーバーヘッドでコンテキストウィンドウの20〜30%を無駄にしていることになります。

Danteのトークナイザは、文字バランスを考慮した混合データ(約42%がイタリア語、約36%が英語、約22%がコード)で学習され、イタリア語のアポストロフィによる縮約(contractions)を保つカスタムのプレトークナイズ用正規表現を使っています。アクセント付き文字(à, è, é, ì, ò, ù)は事前に原子的な単位としてマージされます――運に任せて2バイトをくっつけるのではなく、常に1つの単一トークンになります。

イタリア語テキストに対する効率と品質に、些細な違いが大きな影響を与えます。

学習セットアップ

データ: 約300Bトークンのコーパス。イタリア語Webテキスト(FineWeb-2 IT)、英語教育コンテンツ(FineWeb-Edu)、イタリア語のパブリックドメイン文献(171K冊)、法令・議会テキスト(Gazzetta Ufficiale、EuroParl)、両言語のWikipedia、コードにはStarCoderData。すべて品質ティア付きでuint16のバイナリに事前トークナイズされています。

フェーズ1(完了したばかり): seq_len 2048で90Bトークン。DeepSpeed ZeRO-2、torch.compile(reduce-overhead)、torchaoによるFP8。コサインLRスケジュール3e-4 → 3e-5で、2000ステップのウォームアップ。約16日、堅牢そのもの――NaNの発生なし、OOMなし、28%の一貫したMFU。

フェーズ2(進行中): 学習率を下げつつ、追加の30Bトークンで4096のコンテキストへ拡張。あと約4〜7日かかる見込みです。

現時点でできること

フェーズ1の後の時点でも、モデルはすでに首尾一貫したイタリア語テキストを生成します――適切な文法、冠詞の正しい使い方、そして話題の連続性が妥当です。これは2Bなので、GPT-4のような推論は期待しないでください。とはいえ、このサイズのモデルがイタリア語をネイティブに学習しているため、同程度のスケールで行われた英語モデルのイタリア語微調整でこれまで見てきたものを、すでに上回る流暢さがあります。

フェーズ2後に、モデルがフルの4Kコンテキストを持った時点でサンプルを共有します。

次に何をするか

  1. フェーズ2の完了(目安:1週間)
  2. HuggingFaceでのベースモデル公開――重み、トークナイザ、設定、完全なモデルカード
  3. 指示追従のためのSFTフェーズ(フェーズ3)
  4. コミュニティベンチマーク――同程度のサイズで、Llama/Gemma/Qwenのイタリア語微調整モデルと比較してテストしたい

今投稿している理由

皆さんが「本当に役に立つ」と感じるものは何かを知りたいのです。コミュニティへの質問がいくつかあります:

  • イタリア語のNLPを扱っている人はいますか? どんなベンチマークやタスクが、あなたにとって一番重要か知りたいです。
  • どんな評価(eval)スイートを見たいですか? 手元のイタリア語の保持データでのパープレキシティに加えて、一般的なベンチマークを計画しています。ただ、特定のイタリア語の評価セットを入れるべきなら、それを教えてください。
  • トークナイザ単体に関心はありますか? イタリア語対応の64K BPEトークナイザは、モデルとは独立しても役立つ可能性があります――別個に公開した方がいいでしょうか?

自己紹介

私はローマを拠点に研究者兼起業家です。コンピュータ工学で博士号を取得し、大学でAIや新興技術を教えています。また、新しい技術を企業に届けるイノベーション会社も運営しています。Dante-2Bは、「まともなモデルをスクラッチから学習するのに巨大なクラスタは不要で、必要なのは良いデータ、きれいなアーキテクチャ、そして忍耐だ」ということを証明するための研究プロジェクトとして始まりました。

すべてオープンソース化します。コーパスのダウンロードからトークナイザ学習、プリトレーニング用スクリプトまで、全パイプラインをGitHubに置きます。

ご質問には何でもお答えします。

submitted by /u/angeletti89
[link] [comments]