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 よりも劣っていました。


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

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

ブログ    
ブログ    

推薦する

無料の Python 機械学習コース パート 3: 多項式回帰

多項式回帰は線形回帰の改良版です。線形回帰を知っていれば、簡単に理解できるでしょう。そうでない場合は...

人工知能の分野では、すでに世界中で 10 個の画期的な技術が存在します。

[[238191]]人工知能はハイテクで、多岐にわたり、多次元的で、学際的な統合装置であり、ビッグ...

ドローンのバッテリー寿命の悩みをどう解決するか?答えは3つの主要な方向から得られる

近年、我が国のドローン産業は、継続的な技術革新、継続的な政策奨励、加速した資本注入、段階的な市場改善...

ChatGPTにはファイル分析や自動検索などの新機能がある。スタートアップ企業の製品は置き換えられるのだろうか?

最近、OpenAIはChatGPT Plusメンバー向けに新しいベータ機能を開始しました。これには主...

人工知能を活用して機密情報を保護する 5 つの方法

研究者たちは、人工知能技術が機密情報のセキュリティを確保するための非常に優れたツールであることを発見...

ChatGPT で半日の作業を 20 分に短縮

みなさんこんにちは、私はクン兄さんですここ数ヶ月、私はウェブサイトの開発とAI関連の知識の学習に忙し...

AES暗号化アルゴリズムのハードウェア設計方法の簡単な分析

[[356976]]情報セキュリティの分野では、米国は集積回路IPコアの分野で常に独占的地位を占めて...

自動運転車は交通事故の3分の1しか解決できない、と研究が示す

自動運転車の主な目標、少なくともこの技術の支持者が推進している目標は、運転手や乗客の利便性を高めるこ...

...

...

メーデー休暇中の安全確保のため5G警察ロボットが配備される

[[397258]] 2021年5月1日、「労働節連休」初日、浙江省舟山市公安局普陀区支局東港派出所...

...

人体の中で自由に動くロボット:柔軟でしなやか、毛細血管まで

[[408943]] 7月1日のニュースによると、最近、ヨーロッパの大学の中国の科学者は、シート状の...

TensorFlow 機械学習の初心者向けガイド: 線形回帰を実装するには?

TensorFlow 入門記事: 初心者でも理解できる TensorFlow 入門小学校で受けた理...

AIが考古学に参入!科学者らはディープラーニングアルゴリズムを使用して、約100万年前に人類が火を使用していた証拠を発見した。PNASに掲載。

火の使用はホモ・サピエンスの進化における重要な要素であり、より複雑な道具の作成を可能にしただけでなく...