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]

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

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

ブログ    
ブログ    

推薦する

人工知能に関する学習体験のまとめ

序文今は知識が急速に反復される時代です。この時代では、次のように感じるかもしれません。「最初から最後...

劉慈欣は人工知能について語る: 前方にある知能と同じくらい人工知能も存在する。

[[248113]]画像出典: IDG Capital最近開催された2018年の「IDGキャピタル...

マイクロソフト、データセンターに十分なAIチップが供給されない場合、サービスが中断すると警告

7月29日のニュース、海外メディアの報道によると、マイクロソフトは投資家に対し、グラフィックス・プロ...

すべてがジョジョになる:このGANはマスクを人間ではないものにする

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

SIEM&AIからSIEM@AIまで、AIが次世代のエンタープライズセキュリティの頭脳を構築

[51CTO.com からのオリジナル記事] SIEM はエンタープライズ セキュリティの中核ハブで...

...

顔認識の法的境界と刑法適用の限界

[[413292]]顧客に顔のスキャンを義務付けることができるかどうかという議論を引き起こした最初の...

面接の質問に必ず読むべき一冊! Python のトップ 5 ソート アルゴリズムとその実装コード

ソートは、すべての IT エンジニアと開発者にとって不可欠な知識スキルです。コーディング面接に合格す...

人工知能(AI)について知っておくべきことすべて

人工知能の進歩は前例のない機会をもたらすと同時に、経済的、政治的、社会的混乱ももたらします。専門家は...

アナリスト:Appleは早ければ来年末にも生成AIをiPhoneとiPadに統合する予定

10月22日、海通国際証券のアナリストであるPu Deyu氏が最近、Appleが早ければ2024年末...

...

...

あなたの GPU は Llama 2 のような大規模なモデルを実行できますか?このオープンソースプロジェクトを試してみてください

コンピューティング能力が重要視される時代に、GPU は大規模モデル (LLM) をスムーズに実行でき...

どこにでも「ゴミ」がある: 人工知能には高品質のデータが不足しています!

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

マイクロソフト、2023年までに8つの人工知能プロジェクトをオープンソース化へ

著者 | ツァミア・アンサリ企画 | ヤン・ジェンマイクロソフトは、ソフトウェア大手の元CEO、ステ...