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]

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

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

ブログ    
ブログ    

推薦する

...

人工知能に関してどのような基礎教育が必要でしょうか?

人工知能の基礎教育を強化することは、将来の社会の発展に備えるための避けられない選択であり、要件です。...

...

人工知能はスポーツや芸術教育における革新的な発展をどのように促進できるのでしょうか?

[[407981]]著者テンセント研究所の上級研究員、周丹氏趙雲傑 テンセント研究所 研究助手20...

...

AIイノベーションを奨励する100万ドルの賞金:2021 DIGIXグローバルキャンパスAIアルゴリズムエリートコンペティションが開幕

6月10日、江蘇省人工知能学会、ファーウェイ端末クラウドサービス、ファーウェイ南京研究所が共催する2...

エンタープライズ AI の大きな課題を解決する方法

既存のデータの 90% は過去 2 年間に生成されたものです。 毎日 7.5 京バイトのデータが生成...

...

Yisaqi 9周年: RPA製品の進化を振り返る

現在、国内RPA市場の競争は激化しており、多くのメーカーが独自のRPA製品やブランドを立ち上げていま...

AIの失敗例と今後の課題と機会

人工知能は画期的であり、時には衝撃的です。私たちは、効率性、自動化、スマートな予測に関する素晴らしい...

スーパーコンピューターで設計された、カエルの細胞から作られた初の生きたロボット

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

この段階で注力すべき人工知能の6つの分野

現段階では、人工知能の一般的に受け入れられている定義については多くの議論があります。人工知能を「認知...

データとAIの成熟度に到達することがビジネス価値を引き出す鍵

[[419580]]データから実用的なリアルタイムの洞察を生成するには、企業は人工知能や機械学習の導...

人工知能はクラウドストレージとデータサービスの革新を推進する

[[358649]]従来のストレージとデータ構造が、クラウドネイティブ アプリケーションに必要な移植...