待ってください:IBMはAIにコードを書いてCodeNetを作成するように教えます

55以上の異なるプログラミング言語での5億行のコード。



画像



言語(左)とステータス(右)による提出の割合。



  • データセットには13,916,868のビューが含まれ、4053のタスクに分割され、そのうち5つにはビューがありません。
  • Google Code Jam 2008 2020 .
  • 53,6% (7 460 588) , 29,5% « », - .
  • 55 ; 95% C ++, Python, Java, C, Ruby C#.
  • C++ — 8 008 527 (57% ), 4 353 049.




ソフトウェアは世界を食い尽くす」とアメリカの起業家マーク・アンドリーセンは2011年に書いた。最近に向けて早送り-ソフトウェアは、金融サービスやヘルスケア、スマートフォン、スマートホームで使用されています。今日の自動車でさえ、1億行を超えるコードが含まれています。



ただし、このような大量のコードは、特に企業がレガシーソフトウェアインフラストラクチャの最新化を検討している場合、デバッグ、保守、および更新が困難です。その結果、人工知能やハイブリッドクラウドなどの最新テクノロジーを活用して、情報テクノロジーパイプラインのプロセスを最新化できる新しいソリューションを作成することが重要な新しい時代になりました。



ProjectCodeNetに移動します..。人工知能プログラミングの教育に特化した大規模なデータセットであり、C ++、Java、Python、Goなどの最新言語からレガシー言語まで、55を超えるさまざまなプログラミング言語の約1,400万のコード例と約5億行のコードで構成されています。 COBOL、Pascal、Fortranとして。



しかし、このデータセットの意味を理解するには、最初に時間を振り返る必要があります。



AIの次のフロンティア:機械の言語



コンピュータ科学者は、コンピュータプログラミングコンピュータの可能性に長い間関心を持ってきました。 AIは、コード(マシンの言語)の理解、開発、および展開を容易にすることができますか?それは可能ですが、それを達成するのは簡単ではありません。



問題はルールベースのシステムにあります。



プログラミング言語に翻訳してみましょう。簡単であれば、ルールベースのシステムが機能し、COBOLなどの初期のプログラミング言語は今では変換されていたでしょう。しかし、プログラミング言語にはコンテキストがあります。あらゆるステートメントの意味は文脈化されており、人間の言語と同様に、それを取得して翻訳することは困難で時間がかかります。



プログラムが大きくなるほど、翻訳が難しくなります。人間の言語では、コンテキストは段落程度に制限できます。ここでは、コンテキストは複数のコードライブラリを参照できます。コンテキストはAIにとっての課題です。



大まかに言えば、ルールベースのシステムはプログラムの50〜60パーセントを正常に変換できます。プログラムの一部は非常にうまく翻訳でき、残りは通常、複雑なルールを使用して手作業で翻訳する必要があります。



コードのAI開発



AIは人間のように振る舞うことができるため、ここでAIが役立ちます。



特に、Project CodeNetは、人間の言語で使用するのと同じように、シーケンシャルモデルを使用してこのコンテキストを抽出するアルゴリズムの革新を刺激し、コードのマシン理解とコードのマシン処理をより明確にすることができます。



Project CodeNetは、長年にわたってオープンプログラミングコンテストで選択されたコードサンプルでユニークです。サイズとスケールだけでなく、コードサイズ、メモリサイズ、CPU時間、エラーの受け入れや種類を示す状態など、豊富な情報セットを備えたメタデータと注釈の品質もユニークです。



問題の90%以上は、問題の簡単な説明、入力および出力形式の仕様を含む、問題の適切な説明に関連付けられています。プログラミング問題の半分以上(つまり、700万のコードサンプル)について、問題の説明から入力サンプルと出力サンプルをキュレートしました。これは、強化を刺激できる、異なる言語の2つのコードサンプルの同等性を判断するための鍵です。コードを翻訳するための学習方法。



これらはデータセットの一部として提供されます。これは、便利なProjectCodeNet機能です。ユーザーは、ホストされているコードサンプルを実行して、追加のメタデータを抽出し、生成AIモデルの出力を検証できます。これにより、研究者は、あるプログラミング言語を別のプログラミング言語に翻訳するときに、意図の同等性をプログラムすることができます。



豊富なメタデータとさまざまなコード例、およびそれらが解決する問題により、ProjectCodeNetが多数のユースケースに開かれます。データセットを使用して、コードを検索し、コピーを見つけることができます。 Project CodeNetのコードサンプルにはAcceptanceステータスが付けられており、人工知能技術を調べて正しいコードと問題のあるコードを区別することができます。



Project CodeNetメタデータを使用すると、問題のあるビューから承認済みのビューへの展開を追跡することもできます。これを使用して、自動コード修正について学習できます。各コードサンプルには、CPUランタイムとメモリサイズのラベルが付いています。これは、回帰分析と予測に役立ちます。



多くの言語で記述されたプログラムが豊富にあることを考えると、Project CodeNetは、ソースからソースへの翻訳の参照データセットとして機能し、AIに対して実行し、ImageNetデータセットが何年も前にコンピュータービジョンに対して実行したことをコーディングできると考えています。



ソフトウェアインフラストラクチャのアップグレードと保守 、ビジネスの観点から重要です。昨年、IBMがいくつかの発表をしたときに触れました 情報技術パイプラインを自動化するアプリケーションを最新化するためのIBMWatsonAIOpsおよびAcceleratorを含む新機能



たとえば、自動車の大口顧客は、IBMに3,500の多世代Javaファイルの2億ドルの資産のアップグレードを支援するように依頼しました。これらのファイルは、多世代のJavaテクノロジを使用して10年以上にわたって開発された100万行を超えるコードで構成されていました。



これは複雑なモノリシックアプリケーションコードであり、クラウド環境には適していませんでした。 AIスタックをコードに適用することで、1年間のコード移行ビジネスプロセスを4週間に短縮し、レガシーモノリシックアプリケーションコードをリファクタリングすることで、25を超える新しいクラウドマイクロサービスを最新化して構築しました。



私たちのチームは、研究者や開発者に、使いやすく理解しやすいデータセットと一連のテクノロジーを提供すると同時に、コードのAIを推進するアルゴリズムの設計を支援できることを誇りに思っています。 Project CodeNetが、企業がITの旅に出るときに、ビジネス価値を提供することを願っています。 GitHub



ProjectCodeNet開き プレプリント



画像



私はひもを持っていましたが、今は自由です。私にはひもがありません



All Articles