AI・機械学習
中級

Fill-in-the-Middle (FIM)(フィルインザミドル)

コードLLMのプリトレーニング目的の一種。テキストの先頭(Prefix)と末尾(Suffix)を与え、中間部分(Middle)を生成する能力を学習する手法。SPMフォーマットが主流。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
fill-in-the-middle
fim
code-llm
pretraining
spm
code-completion

Fill-in-the-Middle (FIM)

FIMはコード特化LLMのプリトレーニング目的として2022年にOpenAI Code Infilling論文で体系化された技術で、通常の左→右の次トークン予測(CLM)に加え、テキスト中間部の補完能力を明示的に学習させる。現在のほぼ全ての主要コードLLMが採用する標準的なプリトレーニング戦略となっている。

SPMフォーマット(Suffix-Prefix-Middle)

StarCoder2・DeepSeek-Coderが採用する主流フォーマット。Suffixを先にモデルに提示することで、中間生成時にすでにsuffixを「見た」状態となり、PSM(Prefix-Suffix-Middle)より補完精度が高い。

3つのスペシャルトークンを使用する:

  • <fim_prefix> — 補完前の文脈
  • <fim_suffix> — 補完後の文脈
  • <fim_middle> — モデルが生成する中間部

FIM比率とトレードオフ

学習データの通常50%をFIMフォーマットに変換し、残り50%は通常のCLMとして学習する。FIM比率を上げるとコード補完精度は向上するが、テキスト生成やチャット能力が若干低下するため、用途に応じて調整する。

採用主要モデル

  • StarCoder2 (BigCode): SPM形式、128K語彙、15.5B/7B/3B
  • CodeLlama (Meta): SPM形式、Llama 2ベース、70B/34B/13B/7B
  • DeepSeek-Coder V2 (DeepSeek): SPM形式、236B MoE
  • Codestral (Mistral AI): SPM形式、22B専用コードモデル
  • Qwen2.5-Coder (Alibaba): SPM形式、最大32B

IDE統合の仕組み

CursorやGitHub Copilotなどのコード補完ツールは、カーソル前後のコードを自動的にPrefix/Suffixとして構成し、FIMエンドポイントを呼び出す。単純な「次トークン予測」ではなく、コード中間部の文脈aware補完が実現され、変数名・関数シグネチャを考慮した高精度な挿入が可能になる。

この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/7