IBMは5億行のコードデータセットをオープンソース化したが、最も人気のあるプログラミング言語はPythonではない

IBMは5億行のコードデータセットをオープンソース化したが、最も人気のあるプログラミング言語はPythonではない

Google サービスには 20 億行のコードが含まれており、自動車システムには 1 億行のコードが含まれています。コードの作成とデバッグというこれほど膨大な作業を、AI に任せずに処理できるのでしょうか?

AI による自動コード生成は多くの開発者の夢であり、近年この分野の研究が盛んになっています。しかし、有用な AI をトレーニングするには、高品質のデータを見つけることが最も重要なタスクかもしれません。

最近、IBM Research は CodeNet と呼ばれるデータセットをリリースしました。これには、プログラミング タスク用の機械学習モデルをトレーニングするための 1,400 万のコード サンプルが含まれています。このデータセットの主な機能は次のとおりです。

  • これまでで最大のコーディング データセット。4,000 の問題、1,400 万のコード サンプル、50 を超えるプログラミング言語が含まれています。
  • データセットには、問題の説明、メモリ/時間制限、言語、コードのパス/エラーなどの注釈が付けられます。

IBM は、CodeNet が大規模な画像データセットである ImageNet をエミュレートし、ソフトウェア開発の青写真を理解できるようにソフトウェアを指導するための主要なデータセットになることを期待しています。 IBM は、CodeNet を使用して次のような開発ツールをトレーニングできることを期待しています。

  • あるプログラミング言語から別のプログラミング言語に切り替える。
  • コードの推奨と補完。
  • コードの最適化;
  • アプリケーションとライブラリのソースを検索して必要なルーチンを見つけます。
  • ある言語を別の言語に変換する。
  • 誤った/正しい実装メカニズムを識別します。

ディープラーニングによるプログラミングの自動化

近年、機械学習の分野では目覚ましい進歩が見られ、AI によってプログラミングを含む多くの作業が自動化されるようになりました。しかし、ソフトウェア開発における AI の浸透は大きな困難に直面しています。

人々がプログラミングをするとき、通常、幅広い意識的および潜在意識的な思考メカニズムを使用して、新しい問題を発見し、さまざまな解決策を模索します。対照的に、ほとんどの機械学習アルゴリズムでは、同じプログラミング問題を解決するモデルを開発するために、明確に定義された問題と大量の注釈付きデータが必要です。

この課題に対処するために、研究者や開発者は、「プログラミングのための AI」システムを開発および評価するためのデータセットやベンチマークを作成するなど、多くの努力を重ねてきました。しかし、ソフトウェア開発の創造的でオープンな性質を考えると、プログラミングに最適なデータセットを作成することは困難です。

IBM の研究者は、さまざまなタスクの機械学習モデルのトレーニングに使用できる多目的データセットの作成を目指しました。 CodeNet の作成者は、これを「AI プログラミングのペースを加速させる、非常に大規模で多様性に富んだ高品質のデータセット」と説明しています。このデータセットには 1,400 万のコード サンプルが含まれており、合計 5 億行のコードが 55 のプログラミング言語で記述されています。サンプルで最も多く使用されている言語は C++ で、2 番目に多いのは Python です。コードサンプルは、オンラインプログラミングプラットフォームAIZUとAtCoderの約4,000のチャレンジへの提出物から取得され、これらのチャレンジに対する正解と不正解の両方が含まれています。

CodeNet プロジェクト アドレス: https://github.com/IBM/Project_CodeNet

CodeNet の主な機能の 1 つは、コード サンプルに追加される注釈です。データセットに含まれる各プログラミング チャレンジには、テキストによる説明と、CPU 時間とメモリの制限があります。各コードコミットには、言語、コミット日、メモリ使用量、実行時間、承認、エラーの種類など、12 を超える情報が含まれています。 IBM の研究者は、プログラミング言語、受け入れ、エラーの種類に関してデータセットのバランスが取れていることを確認するために多大な労力を費やしました。

機械学習プログラミングタスク

CodeNet は、プログラミング タスクを実行する機械学習モデルをトレーニングするための唯一のデータセットではありません。他のデータセットと比較して、CodeNet には次の特徴があります。まず、サンプル数や言語の多様性を含むデータセットの規模ですが、さらに重要なのは、エンコードされたサンプルに添付されたメタデータです。 CodeNet に追加された豊富な注釈により、特定のプログラミング タスクだけでなく、さまざまなタスクに適用できるようになりました。

CodeNet を使用してプログラミング タスク用の機械学習モデルを開発する方法には、次のものがあります。

  • CodeNet は言語翻訳タスクに使用できます。データセットに含まれる各プログラミング チャレンジにはさまざまなプログラミング言語での提出物が含まれているため、データ サイエンティストはそれを活用して、ある言語のコードを別の言語に変換する機械学習モデルを作成できます。これは、古いコードを新しい言語に移植して、新しい世代のプログラマーがアクセスできるようにし、新しい開発ツールを使用して保守したい人にとって便利です。
  • CodeNet は、コード推奨タスク用の機械学習モデルの開発にも使用できます。提案ツールは、現在のコード行を補完するオートコンプリート スタイルのモデルのように単純なものから、関数全体またはコード ブロックを記述するより複雑なシステムまでさまざまです。

CodeNet にはメモリと実行時間のメトリックに関する大量のメタデータが含まれているため、データ サイエンティストはそれを活用してコード最適化システムを開発することもできます。あるいは、エラー タイプのメタデータを使用して、ソース コードの潜在的な欠陥をフラグ付けする機械学習システムをトレーニングすることもできます。

CodeNet のより高度な使用例はコード生成です。 CodeNet は、問題のテキスト記述とそれに対応するソース コードの豊富なライブラリです。開発者はすでに高レベル言語モデル (GPT-3 など) を使用して自然言語記述からコードを生成しており、CodeNet はこれらの言語モデルを微調整してコード生成の一貫性を高めるのに役立つ可能性があります。

IBM の研究者は、コード分類、コード類似性評価、コード補完などの CodeNet に関する実験を実施しました。使用されるディープラーニング アーキテクチャには、単純な多層パーセプトロン、畳み込みニューラル ネットワーク、グラフ ニューラル ネットワーク、Transformer などがあります。

IBMとMIT-IBM Watson AI Labチームが共同でデータセットを開発し、研究における実験結果では、ほとんどのタスクで90%以上の精度を達成できることが示されました。

論文アドレス: https://github.com/IBM/Project_CodeNet/blob/main/ProjectCodeNet.pdf

効率的な機械学習システムを構築するには多大な労力が必要

IBM のエンジニアは、CodeNet データセットの管理とそれをサポートするツールの開発に多大な労力を費やしてきました。

まず、研究チームは AIZU と AtCoder からコードサンプルを収集する必要があります。 2 つのプラットフォームのうち、コードを簡単に取得できるアプリケーション プログラミング インターフェイス (API) を備えているのは 1 つだけで、もう 1 つのプラットフォームには簡単にアクセスできるインターフェイスがなかったため、研究チームはプラットフォームの Web ページからデータをスクレイピングして表形式に分解するための新しいツールを開発する必要がありました。その後、研究者は 2 つのデータセットを手動で統合して統一されたスキーマにする必要がありました。

次に、研究チームは、無駄なデータを排除するために、重複コードやサンプル(デッドコードを多く含み、実行時に実行されないソースコード)を識別して削除するツールを開発する必要があります。

さらに、研究チームは、さまざまなプログラミング言語用のトークナイザー、解析ツリー、グラフニューラルネットワーク用のグラフ表現ジェネレーターなど、CodeNet コーパス上で機械学習モデルをより簡単にトレーニングできるようにする前処理ツールを開発しました。

これらすべては、効率的な機械学習システムを作成するには多大な労力が必要であることを思い出させます。人工知能がプログラマーに取って代わるまでには、まだ長い道のりがあります。

[編集者:張燕妮 TEL: (010) 68476606]

<<:  脳コンピューターインターフェースが人間の思考を制御するのではないかと心配ですか?神経科学者:考えすぎ

>>:  生物学的視覚とコンピュータビジョンの違いを理解する方法

ブログ    

推薦する

ジェフ・ディーンが2020年の機械学習のトレンドについて語る:マルチタスクとマルチモダリティが大きく進歩する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

データ注釈サービスのアウトソーシングによって AI モデルはどのように強化されるのでしょうか?

人工知能 (AI) と機械学習 (ML) の分野では、基礎はデータにあります。データの品質、精度、深...

数千億単位の数学専用大規模モデルMathGPTが公開テストを開始

国内の大型模型市場に新たな「プレーヤー」が誕生しました。今回は数学に特化した大型模型です。 Sync...

年次レビュー:2020 年の 5 つの注目すべきテクノロジー トレンド、時代のトレンドに遅れずについていく

世界の歴史は発明の歴史でもあります。火薬の発明は世界地図を変え、電灯の発明は夜を変え、車の発明は空間...

Midjourneyの隠されたスキルをアンロックする:プロンプトを変更すると、4つの正方形のグリッドが「分裂」します

Midjourney は多くの人が使用するグラフィック デザイン ツールです。最近アップデートされた...

脳卒中の診断と治療を加速させるAIの登場

ディープラーニングは人工知能の一種です。医療分野では、CTスキャン画像を使用して脳の血液供給動脈の閉...

人工知能の3つの利点と3つの欠点

[[426052]]人工知能の危険性は、作家や脚本家の間で長い間人気のテーマとなってきたが、これらの...

コンシステントハッシュアルゴリズムの詳細な説明

サーバー負荷分散を行う際には、ラウンドロビン、HASH、最小接続、応答時間、加重など、さまざまな負荷...

10行のコードで物体検出を実行する方法

導入人工知能の重要な分野はコンピュータービジョンです。コンピューター ビジョンは、コンピューターとソ...

ディープラーニングは錬金術のようなものです。どんな迷信的な習慣がありますか?ユーザー: ランダムシード=42 は良い結果をもたらします

[[441423]]機械学習分野の研究者は皆、パラメータ調整という課題に直面していますが、言うほど簡...

「人工知能、データサイエンス、機械学習」について語る -- 概要

[[190364]]この記事は、写真付きの 4 つの例を含む 6 時間かけて執筆されました。目的は、...

...

中国は2022年に耐量子暗号アルゴリズムを開発し、2025年に実装予定

[[248782]]量子コンピュータが実用化されるまでにはしばらく時間がかかるだろうが、国際的な暗号...

AI リサーチ インスティテュートが 2021 年の AI 技術トレンド トップ 10 を発表

[[374480]] 12月31日、AI研究所は2020年のAIの進歩トップ10を発表しました。新年...