アーカイブ / LLM / RAG
FortranからC++への翻訳で、訳の類似度を用例検索に反映する
Task-Specific Embedding Alignment
Task-Specific Embedding Alignmentの原論文から掲載した図です。細部はクリックして拡大できます。
原論文の図の説明を読む
Figure 1: Overview of the proposed pipeline. i) The LLM generates pairwise code translations, which are evaluated using the CodeBLEU metric. ii) The resulting similarity scores are used to guide contrastive learning for semantic alignment of the embedding model.
概要
- 生成したC++訳同士のCodeBLEUを学習信号にして、Fortran用例の検索器を調整する。
- 著者らは平均CodeBLEUがHPC Fortran2C++で0.64から0.73、Numerical Recipesで0.52から0.60になったと報告した。
- 言語モデルの追加学習は不要だが、実務で必要な動作の一致は別途検証する必要がある。
補足:編集した模式図で仕組みを確認する
VISUAL EXPLAINER
図でつかむ、Task-Specific Embedding Alignmentの仕組み
- 01Fortran断片
- 02C++訳を生成
- 03CodeBLEUで調整
- 04対応例を検索
- 05C++訳を出力
原論文の説明をもとにした模式図です。処理の細部は省略しています。
研究の背景
Fortranの科学計算コードをC++へ移すには、書式の変換に加えて計算の意味を保つ必要がある。検索拡張生成(RAG)は、過去の対応例を探して言語モデルの入力に添える方法で、選ばれる例が翻訳結果に関わる。
検索では、コードを数値列に変える「埋め込み」を使って近さを測る。汎用の埋め込みはC++訳の評価指標に合わせて調整されていないため、著者らは用例検索を翻訳の目的に沿わせようとした。
手法
まずStack-V2のFortran断片をLLaMA 3.1-8BでC++に訳し、生成した訳同士のCodeBLEUを計算する。CodeBLEUは語句、構文、データの流れなどの一致を測る指標である。この値を使い、訳が似たFortran断片の埋め込みが近づくよう検索用モデルを調整する。
調整にはS-InfoNCEという損失を使う。これはコードの組ごとに、訳の類似度を連続的な重みとして与える学習方法である。新しいFortran関数が入力されたら、調整済みモデルで近いFortranとC++の対応例を探し、その例と入力関数を言語モデルに渡してC++訳を得る。
新規性
著者らの提案は、Fortranコードから生成したC++訳同士のCodeBLEUを、検索器の学習信号に使う点にある。検索時に近く置くべきFortranコードを、訳の類似度から決める。
S-InfoNCE損失では、コードの組を「同じ種類かどうか」で二分せず、類似度の大小を反映する。調整するのは検索用モデルで、翻訳を担う言語モデルは追加学習しない。
従来手法との違い
比較対象は、汎用の埋め込みでFortranコードを検索するRAGである。確認できた本文の範囲では、実験は調整前後の検索用モデルを比べ、検索したFortran・C++の組を翻訳時の用例として渡している。
提案法で変わるのは、用例を選ぶための埋め込みである。報告されたCodeBLEUの差は、この検索器を使った各評価条件での差として読める。言語モデルそのものを追加学習した方式との性能差は示していない。
実験結果
著者らは検索器の調整にStack-V2から選んだFortran断片25,000件を使用した。検索と評価にはHPC Fortran2C++の315組、Numerical Recipesの298組を用い、複数の言語モデルと用例数で生成訳を正解C++訳とCodeBLEUで比較した。
著者らの報告では、用例1~3組と各モデルの平均CodeBLEUは、HPCで調整前0.64から調整後0.73、Numerical Recipesで0.52から0.60となった。HPCのLLaMA 3.1 70B、用例1組では0.626から0.710である。これらは正解訳との指標上の一致度であり、実行結果の一致率ではない。
応用の可能性
編集上の応用案 · 論文が実証した用途とは区別しています。
編集上の応用案:科学計算部門の短いFortran関数について、C++移行案と参照した用例を担当者に提示する。入力は移行対象の関数、出力はC++訳と検索されたFortran・C++対応例の一覧とする。
必要な元データは部門内のFortranコードと、検索用のFortran・C++対応例である。評価には担当者が確認した正解C++訳や実行結果を用意する。センサーとセンサーデータは不要で、部門固有の記法に合わせて検索器を調整する必要がある。
応用先の候補からNauhに相談できます。
導入時の検証
導入時の検証案 · 対象データでの再評価が必要です。
導入時の検証案:短いFortran関数を集め、検索用のFortran・C++対応例と、評価用の正解C++訳を分けて用意する。検索器の調整にはFortran断片と、言語モデルが生成したC++訳同士の類似度を使う。センサーとセンサーデータは不要である。
部門のコードに合わせて検索器を調整し、同じ言語モデル、同じ用例数で未調整の検索器と比べる。CodeBLEUに加え、コンパイル成功数と既存の入力に対する計算結果の一致数を記録する。担当者が参照例と訳を確認し、移行の可否を判断する。
限界と課題
著者らは、検索器の学習は少ないGPUでも可能だが、所要時間は大幅に長くなると述べる。なお、要旨には生成訳と正解例のCodeBLEUを学習信号に使う記述がある一方、方法節と実験節は正解訳のないStack-V2で生成訳同士を比較すると記す。ここでは後者に沿って方法を説明した。
編集上の検証事項は、検索用の対応例と評価対象の分離、コンパイルの成否、実行結果の一致、長いコードへの適用範囲である。CodeBLEUの改善だけでは動作の一致は確認できず、確認できた本文の範囲では、これらの結果は読み取れない。
出典
元のタイトル・要旨を確認する(英語)
Enhancing Cross-Language Code Translation via Task-Specific Embedding Alignment in Retrieval-Augmented Generation
We introduce a novel method to enhance cross-language code translation from Fortran to C++ by integrating task-specific embedding alignment into a Retrieval-Augmented Generation (RAG) framework. Unlike conventional retrieval approaches that utilize generic embeddings agnostic to the downstream task, our strategy aligns the retrieval model directly with the objective of maximizing translation quality, as quantified by the CodeBLEU metric. This alignment ensures that the embeddings are semantically and syntactically meaningful for the specific code translation task. Our methodology involves constructing a dataset of 25,000 Fortran code snippets sourced from Stack-V2 dataset and generating their corresponding C++ translations using the LLaMA 3.1-8B language model. We compute pairwise CodeBLEU scores between the generated translations and ground truth examples to capture fine-grained similarities. These scores serve as supervision signals in a contrastive learning framework, where we optimize the embedding model to retrieve Fortran-C++ pairs that are most beneficial for improving the language model's translation performance. By integrating these CodeBLEU-optimized embeddings into the RAG framework, our approach significantly enhances both retrieval accuracy and code generation quality over methods employing generic embeddings. On the HPC Fortran2C++ dataset, our method elevates the average CodeBLEU score from 0.64 to 0.73, achieving a 14% relative improvement. On the Numerical Recipes dataset, we observe an increase from 0.52 to 0.60, marking a 15% relative improvement. Importantly, these gains are realized without any fine-tuning of the language model, underscoring the efficiency and practicality of our approach.
論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01




