問題
イタリア語のテキストやローカルのモデルを扱っていると、そのつらさが分かります。世にあるあらゆるオープンソースの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'intelligenzaをl、'、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コンテキストを持った時点でサンプルを共有します。
次に何をするか
- フェーズ2の完了(目安:1週間)
- HuggingFaceでのベースモデル公開――重み、トークナイザ、設定、完全なモデルカード
- 指示追従のためのSFTフェーズ(フェーズ3)
- コミュニティベンチマーク――同程度のサイズで、Llama/Gemma/Qwenのイタリア語微調整モデルと比較してテストしたい
今投稿している理由
皆さんが「本当に役に立つ」と感じるものは何かを知りたいのです。コミュニティへの質問がいくつかあります:
- イタリア語のNLPを扱っている人はいますか? どんなベンチマークやタスクが、あなたにとって一番重要か知りたいです。
- どんな評価(eval)スイートを見たいですか? 手元のイタリア語の保持データでのパープレキシティに加えて、一般的なベンチマークを計画しています。ただ、特定のイタリア語の評価セットを入れるべきなら、それを教えてください。
- トークナイザ単体に関心はありますか? イタリア語対応の64K BPEトークナイザは、モデルとは独立しても役立つ可能性があります――別個に公開した方がいいでしょうか?
自己紹介
私はローマを拠点に研究者兼起業家です。コンピュータ工学で博士号を取得し、大学でAIや新興技術を教えています。また、新しい技術を企業に届けるイノベーション会社も運営しています。Dante-2Bは、「まともなモデルをスクラッチから学習するのに巨大なクラスタは不要で、必要なのは良いデータ、きれいなアーキテクチャ、そして忍耐だ」ということを証明するための研究プロジェクトとして始まりました。
すべてオープンソース化します。コーパスのダウンロードからトークナイザ学習、プリトレーニング用スクリプトまで、全パイプラインをGitHubに置きます。
ご質問には何でもお答えします。
[link] [comments]




