2021年5月18日火曜日

IBM、ソフトウェア開発へのAI活用を促進する大規模データセット「Project CodeNet」を公開

https://news.mixi.jp/view_news.pl?id=6521527&media_id=39
シェアしました。

2021年05月18日 11:22  @IT

@IT

写真コードサンプルの言語別の内訳(出典:IBM)
コードサンプルの言語別の内訳(出典:IBM)

 IBMは2021年5月11日(米国時間)、AIによるコードの理解と変換をサポートする大規模なオープンソースデータセット「Project CodeNet」を公開した。



【その他の画像】



 このデータセットは、50以上のプログラミング言語で作成され、約1400万のコードサンプルで構成されている。コードの行数は総計約5億行に及び、AI向けのソースコードセットとして最大規模だという。C++やC、Java、Pythonのようなモダン言語で書かれたものが多いものの、COBOLやPascal、FORTRANといったレガシー言語によるものも含んでいる。



Project CodeNetの目的は?



 Project CodeNetは現在のコーディングにおける3つの主なユースケースに対応する。第一に「コード検索」(COBOLなどのレガシー言語を含む、コード間の自動変換)、第二に「コードの類似性」(異なるコード間の重複と類似性を特定する)、第三に「コード制約」(開発者の固有のニーズとパラメーターに基づいて制約をカスタマイズする)だ。



 Project CodeNetは、最近急成長している「AI for Code」という分野の研究コミュニティーに、大規模で多様な高品質の整理されたデータセットを提供し、AI技術のイノベーションを促進することを目的としている。



 この分野の台頭の背景には、生活と産業全般にわたって膨大かつ複雑なソフトウェアシステムが使われるようになったことから、開発やデバッグ、メンテナンス、更新といったプロセスをモダナイズできる新しいソリューションを、AIやハイブリッドクラウドといった今日の強力な技術を利用して実現することが不可欠となっている状況がある。



 AI for Codeという分野は、ソフトウェアエンジニアリングプロセスの自動化により、ソフトウェア開発者の生産性向上を支援することを目的としている。AI for Codeの研究者は自然言語処理(NLP)のような技術を利用し、それらをコード解析やコンパイル技術で拡張することで、コード検索や要約、入力補完、コード間変換などにより、さまざまな実作業の支援に取り組んでいる。



 IBMの顧客企業の中には、AI for Code技術がレガシーソフトウェアのモダナイズに利用され、モノリシックアプリケーションからマイクロサービスへの移行を支援しているといった導入事例も出ているという。



 AI for Codeはこれまで概念実証(PoC)が進んできたが、今後は幅広い導入が進みそうだという。IBMはこの移行を促進することを目指し、ベンチマーキングと実験のための大規模データセットとしてProject CodeNetを公開した。



 IBMによれば、Project CodeNetは「ImageNet」に似た特徴(大規模、多様性など)を多く備えているという。ImageNetは、コンピュータビジョン研究に劇的な影響を与えてきた大規模画像データセットだ。



 Project CodeNetのデータセットは、オンラインジャッジWebサイトの「AIZU Online Judge」と「AtCoder」で得られるデータに基づいている。これらのWebサイトはプログラミング問題を出題し、プログラマーが提出した解答を採点している。



 これらの解答から成るProject CodeNetの約1400万のコードサンプルは、コーディングにおける4000種類の問題のいずれかの解決が図られており、全体の54%が正常なコードと判定されている。このようにしてProject CodeNetは、ImageNetがコンピュータビジョンに対して果たした役割を、AI for Codeに対して果たすことを目指しているという。



Project CodeNetの特徴は?



 Project CodeNetは、類似の他のデータセットと比べて際立った特徴を幾つか持っているという。



 まず、Project CodeNetのコードサンプルには豊富な注釈が付いている。例えばコードサイズやメモリ使用量、CPUランタイム、ステータスなどだ。コードサンプルが対処する問題の90%以上には、それぞれ記述が付いており、簡潔な問題説明や、入力フォーマットと出力フォーマットの仕様などが含まれている。



 Project CodeNetでは、可能な場合は問題記述からサンプル入力や出力を抽出し、データセットの一部として提供されている。ユーザーは正常なコードサンプルを実行し、追加のメタデータを抽出したり、生成AIモデルの出力を検証し、修正したりできる。



 Project CodeNetは、データサンプルの品質にも配慮されているという。Microsoft Researchに所属するMiltiadis Allamanis氏の論文によると、よく使われるAI for Codeデータセットの多くには、コードサンプルが重複しているという問題がある。



 さらにオンラインジャッジWebサイトから得られる「出題に対する解答」というスタイルのコードデータセットは、同じ問題のクラスタを含む場合がある。



 IBMはProject CodeNetの中で疑似重複と、同じ問題のクラスタを特定し、ユーザーのためにそれらの情報を提供している。



どのようなユースケースがあるのか



 Project CodeNetは、豊富なメタデータと多様なコードサンプルを提供することから、さまざまなユースケースが考えられるという。



・出題に対する解答がコードサンプルであるという特徴から、コードの検索やクローンの検出に効果的だ



・Project CodeNetのコードサンプルは、正常に機能するかどうか、あるいはどのような問題があるかによって詳しく分類され、ラベル付けされているため、正常なコードと問題のあるコードを識別するAI技術の探求に利用できる



・Project CodeNetのメタデータは、問題のあるコードから正常なコードへの進化の追跡を可能にするので、自動コード修正技術の探求に利用できる可能性がある



・各コードサンプルは、CPUランタイムやメモリ使用量でラベル付けされているため、回帰の調査や予測に利用できる



・Project CodeNetのコードサンプルは多様な言語で書かれているため、ソース間変換の価値あるベンチマークデータセットとして役立つかもしれない



0 コメント:

コメントを投稿