CMU がオープンソースの AI コード生成モデルを作成、C 言語は Codex を上回る

CMU がオープンソースの AI コード生成モデルを作成、C 言語は Codex を上回る

最近、言語モデル (LM) は、プログラミング言語のソースコードのモデリングにおいて優れたパフォーマンスを示しています。これらのモデルは、自動コード生成や自然言語記述からのコード生成などの下流タスクに優れています。現在のSOTA大規模言語コードモデル(Austin et al. (2021)など)は、AIベースのプログラミング支援の分野で大きな進歩を遂げています。さらに、OpenAI が立ち上げた Codex は、ユーザーのコンテキストに基づいてコードを自動生成する IDE 内開発者アシスタントとして、実際の制作ツール GitHub Copilot に導入されています。

大規模な言語コード モデルは大きな成功を収めていますが、最も強力なモデルは公開されていません。これにより、リソースが豊富な企業以外ではこれらのモデルを適用することができなくなり、リソースの乏しい機関ではこの分野の研究が制限されます。たとえば、Codex はブラックボックス API 呼び出しを介してモデルの出力への有料アクセスを提供していますが、モデルの重みとトレーニング データは利用できません。これにより、研究者がコード補完以外のドメインやタスクに適応するためにモデルを微調整することが防止されます。モデルの内部にアクセスできないと、解釈可能性、より効率的な展開のためのモデルの蒸留、融合検索などの追加コンポーネントなど、モデルのその他の重要な側面を研究する研究コミュニティもできなくなります。

一方、GPTNeo、GPT-J、GPT-NeoX などの中規模および大規模の事前トレーニング済み言語モデルが公開されています。これらのモデルは、ニュース記事、オンライン フォーラム、少数の GitHub ソフトウェア リポジトリなど、さまざまなテキストの組み合わせでトレーニングされていますが、妥当なパフォーマンスでソース コードを生成するために使用できます。さらに、180GB の Python コードでトレーニングされた CodeParrot など、ソース コードのみでトレーニングされた新しいオープン ソース言語モデルもいくつかあります。

残念ながら、これらのモデルのトレーニング スキームのサイズと多様性の比較や、モデル同士の比較が不足しており、多くのモデリングとトレーニング設計の決定の影響は不明のままです。

最近の論文では、カーネギーメロン大学コンピュータサイエンス学部の数人の研究者が、Codex、GPT-J、GPT-Neo、GPT-NeoX、CodeParrot など、さまざまなプログラミング言語にわたる既存のコードモデルの体系的な評価を実施しました。これらのモデルを比較することで、コード モデリング設計の決定の状況をさらに理解し、欠けている重要な点を指摘したいと考えています。現在まで、複数のプログラミング言語のコード用に特別にトレーニングされた大規模なオープン ソース言語モデルは存在しません。研究者らは、1億6000万から27億までのパラメータを持つ3つのモデルを発表し、「PolyCoder」と名付けた。

  • 論文アドレス: https://arxiv.org/pdf/2202.13169.pdf
  • プロジェクトアドレス: https://github.com/VHellendoorn/Code-LMs

研究者らはまず、PolyCoder、オープンソースモデル、Codexのトレーニングと評価の設定を広範囲に比較しました。次に、これらのモデルをHumanEvalベンチマークで評価し、さまざまなサイズとトレーニングステップのモデルがどのように拡張されるか、さまざまな温度が生成品質にどのように影響するかを比較しました。最後に、HumanEvalは自然言語とPythonの生成のみを評価するため、12の言語それぞれに対応する目に見えない評価データセットを作成し、さまざまなモデルの困惑度を評価しました。

結果によると、Codex は Python で最高であると主張していますが、他のプログラミング言語でも驚くほど優れたパフォーマンスを発揮し、Pile (言語モデルのトレーニング用に特別に設計された 825G のデータセット) でトレーニングされた GPT-J や GPT-NeoX よりも優れたパフォーマンスを発揮します。ただし、C 言語では、PolyCoder モデルは Codex を含む他のすべてのモデルよりも低い複雑度を実現します。

下の図 1 は、Codex と Austin'21 を除くすべてのオープンソースの既存の言語コード モデルとそのサイズおよび可用性を示しています。

研究者らは、下の図 2 に示すように、コード言語モデリングで使用される 3 つの一般的な事前トレーニング方法についても説明しました。

評価セットアップ

すべてのモデルは、外部および内部ベンチマークを使用して評価されました。

外部評価。コード モデリングの最も一般的なダウンストリーム タスクの 1 つは、自然言語記述に基づくコード生成です。 Chen et al. (2021) に従い、HumanEval データセットですべてのモデルを評価しました。データセットには、コードコメントと関数定義の形式で記述された 164 個のヒントが含まれており、これにはパラメータ名と関数名のほか、生成されたコードが正しいかどうかを判断するために使用されるテスト ケースが含まれます。

内部評価。さまざまなモデルの本質的なパフォーマンスを評価するために、研究者たちは、目に見えない一連の GitHub リポジトリで各言語の難しさを計算しました。また、GPT-NeoやGPT-Jなどのモデルのトレーニングからテストまでのプロセスでのデータ漏洩を防ぐため、評価データセット上のPileトレーニングデータセットのGitHub部分に表示されていたリポジトリを削除しました。

モデル比較

研究者は主に、コード補完タスクに最適な自己回帰事前トレーニング済み言語モデルを選択しました。具体的には、OpenAI が開発し、現在実世界で導入され、コード補完タスクで優れたパフォーマンスを実証しているモデルである Codex を評価しました。 Codex は、2020 年 5 月に GitHub から取得した 5,400 万の公開 Python リポジトリの 179 GB (重複排除済み) データセットでトレーニングされました。

オープンソースモデルに関しては、研究者らはGPTの3つのバリアントモデル、GPT-Neo(27億パラメータ)、GPT-J(60億パラメータ)、GPT-NeoX(200億パラメータ)を比較しました。その中でも、GPT-NeoX は現在利用可能な最大のオープンソースの事前トレーニング済み言語モデルです。これらのモデルは Pile データセットでトレーニングされます。

現在、コミュニティには、複数のプログラミング言語コード用に特別にトレーニングされた大規模なオープンソース言語モデルがありません。この欠点を補うために、研究者らは、12 種類のプログラミング言語を網羅した GitHub のリポジトリのコレクションで、27 億のパラメータを持つモデルである PolyCoder をトレーニングしました。

ポリコーダデータ

オリジナル コード リポジトリのコレクション。研究者らは、2021年10月に12の一般的なプログラミング言語について、GitHub上で50以上のスターを獲得した最も人気のあるリポジトリを複製した。フィルタリングされていない初期のデータセットは 631 GB で、ファイル数は 3,890 万個でした。

次に、データの前処理が実行されます。 PolyCoder、CodeParrot、Codex のデータ前処理戦略の詳細な比較を表 2 に示します。

最後に、重複排除とフィルタリングがあります。全体として、非常に大きいファイルと非常に小さいファイルを除外し、重複データを削除することで、ファイルの合計数が 38% 削減され、データセットのサイズが 61% 削減されました。以下の表 1 は、フィルタリング前後のデータセット サイズの変化を示しています。

PolyCoder トレーニング

研究者は予算を考慮して、モデルアーキテクチャとして GPT-2 を選択しました。モデルサイズのスケーリングの影響を調査するために、研究者らはそれぞれ 1 億 6000 万、4 億、27 億のパラメータを持つ PolyCoder モデルをトレーニングし、27 億パラメータのモデルを使用して GPT-Neo と公平に比較​​しました。

研究者らは、GPT-NeoX ツールキットを使用して、単一のマシン上で 8 つの NVIDIA RTX 8000 GPU と並行してモデルを効率的にトレーニングしました。 27 億のパラメータを持つ PolyCode モデルのトレーニングには約 6 週間かかります。デフォルト設定では、PolyCode モデルは 320,000 ステップトレーニングされる必要があります。しかし、手元にあるリソースが限られているため、学習率の減衰を元の半分に調整し、150,000 ステップのトレーニングを行いました。

1 億 6000 万、4 億、27 億のパラメータを持つ PolyCode モデルのトレーニング損失曲線と検証損失曲線を、下の図 3 に示します。 150,000 回のトレーニング ステップを経た後でも、検証損失は依然として減少していることがわかります。

以下の表 3 は、さまざまなコード モデルをトレーニングする際の設計上の決定とハイパーパラメータの比較を示しています。

実験結果

外部評価

全体的な結果は、以下の表 4 に示されています。既存のモデルの中で、PolyCoder は、同様のサイズの GPT-Neo や、より小型の Codex 300M よりも性能が劣ります。全体的に、このモデルは Codex や GPT-Neo/J ほど優れてはいませんが、CodeParrot よりは優れています。

スケーリングの影響。モデル パラメータの数が HumanEval コード補完のパフォーマンスに与える影響をさらに理解するために、研究者は、以下の図 4 に Pass@1、Pass@10、Pass@100 のパフォーマンスの変化を示しました。

温度の影響。上記の結果はすべて、異なる温度で言語モデルをサンプリングし、各メトリックに最適な値を選択することによって得られます。研究者たちは、異なる温度が最終的な造形品質にどのように影響するかにも興味を持っており、その結果が下の図 5 に示されています。

内部評価

評価データセットにおけるさまざまなモデルの困惑度の結果を、以下の図 6 に示します。最大の困惑スコアは 4 です。ご覧のとおり、PolyCoder は Codex や C 言語の他のすべてのモデルよりも優れています。また、オープンソース モデルのみと比較すると、PolyCoder は C、JavaScript、Rust、Scala、TypeScript において、同様のサイズの GPT-Neo 2.7B よりも優れたパフォーマンスを発揮します。

さらに、C を除く他の 11 言語については、PolyCoder を含むすべてのオープン ソース モデルのパフォーマンスは Codex よりも劣っていました。


<<:  データと人工知能の整合性をどのように確保するか?

>>:  人工知能は航空宇宙に貢献しており、我が国の有人宇宙計画の宇宙ステーションの軌道上建設ミッションは着実に前進している。

ブログ    
ブログ    
ブログ    

推薦する

テスラ モデル3とYが再びハッカーのリレー攻撃の危険に直面、車は10秒で走り去られる可能性も

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

ディープラーニングは私たちの生活に革命をもたらした

【51CTO.com クイック翻訳】ディープラーニングが泡のようなものだとしたら、それを真に制御する...

ダニエル・ウーの顔を5秒で変える!人気のAIアプリ「ZAO」は依然として技術的な問題に直面しています。あなたの「顔」は認証されましたか?

制作:ビッグデータダイジェスト編集部ZAOは一夜にして人気者になった。一昨夜、文翁の友人の輪には、さ...

Googleのエンジニアリングディレクターがアルゴリズム改善の背後にある数字を明らかに

Google は検索の問題を解決したと多くの人が考えていますが、Google の観点から見ると、検索...

...

自動運転車の安全性保証、検証、認証の見直し

2022年2月6日にarXivにアップロードされたレビュー論文「自動運転車の安全性保証、検証、認証:...

人間はAIに勝てるか?私たちは機械に置き換えられるのでしょうか?

2017年、中国の囲碁棋士である柯潔はAI AlphaGoとの対戦で惨敗し、コート上で涙を流し、人...

アジア太平洋地域の銀行:人工知能の活用にはまだまだ成長の余地がある

[51CTO.com クイック翻訳]パーソナライズされた付加価値サービスに対するユーザーの需要に対応...

PULSE: 暗黙の空間に基づく画像超解像アルゴリズム

CVPR 2020 に採択された論文「PULSE: 生成モデルの潜在空間探索による自己教師あり写真ア...

MWC2018が開催間近、人工知能が焦点に

人工知能はバブルを抜け出し、徐々に細分化された分野に入り込み、繁栄し始めており、近年ではCESやMW...

...

新しい調査によると、アメリカ人の48%は自動運転車に乗りたくないと考えている。

自動運転の開発は本当に難しいです。この困難は技術的な難しさだけでなく、人々の直感的な不信感によっても...

...

GAN が「思考を偽装」してネイチャー誌に登場: 初の合成神経活動データ

[[436236]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

TensorFlowはディープラーニングに基づく画像補完を実装する

[[191845]]目次■ はじめに■ ステップ1: 画像を確率分布のサンプルとして理解する不足して...