Facebookはコードをあるプログラミング言語から別のプログラミング言語に変換するTransCoderを開発中

Facebook エンジニアがトランスコンパイラーを公開 トランスコーダー、機械学習技術を使用して、ソース コードをある高レベル プログラミング言語から別の高レベル プログラミング言語に変換します。 現在、Java、C++、Python 間のコード変換のサポートが提供されています。 たとえば、TransCoder を使用すると、Java ソース コードを Python コードに変換したり、Python コードを Java ソース コードに変換したりできます。 プロジェクト開発は実践されています 理論研究 コードを効率的に自動的にトランスコンパイルするためのニューラル ネットワークの作成について 広める クリエイティブ コモンズ表示 - 非営利 4.0 ライセンスに基づいて、非営利使用のみを目的としてライセンスされています。

機械学習システムの実装は Pytorch に基づいています。 XNUMX つの既製モデルがダウンロード用に提供されています。 最初の C++ から Java、Java から C++、Java から Python への変換、および 2番目の 放送用
C++ から Python、Python から C++、Python から Java。 モデルのトレーニングには、GitHub に投稿されたプロジェクトのソース コードを使用しました。 必要に応じて、他のプログラミング言語用の翻訳モデルを作成できます。 ブロードキャストの品質をチェックするために、一連の単体テストと、852 個の並列関数を含むテスト スイートが用意されています。

変換精度の点で、TransCoder は変換ルールに基づいた方法を使用する商用翻訳者よりも大幅に優れており、作業の過程でソース言語とターゲット言語の専門家の専門家による評価なしで作業を行うことができると主張されています。 モデルの操作中に発生するエラーのほとんどは、生成された関数が構文的に正しいことを保証するために、デコーダに簡単な制限を追加することで排除できます。

Facebookはコードをあるプログラミング言語から別のプログラミング言語に変換するTransCoderを開発中

研究者らは、シーケンスをモデリングするための新しいニューラル ネットワーク アーキテクチャ「Transformer」を提案しました。このアーキテクチャでは、反復が「」に置き換えられます。注意(注意を払った seq2seq モデル)。これにより、計算グラフ内の一部の依存関係を取り除き、以前は並列化できなかったものを並列化できます。 サポートされているすべての言語は、初期化、言語モデリング、逆翻訳という XNUMX つの原則を使用してトレーニングされた単一の共通モデルを使用します。

Facebookはコードをあるプログラミング言語から別のプログラミング言語に変換するTransCoderを開発中

出所: オープンネット.ru

コメントを追加します