Tunggu: IBM akan mengajari AI untuk menulis kode dan membuat CodeNet

500 juta baris kode di lebih dari 55 bahasa pemrograman yang berbeda.



gambar



Persentase kiriman menurut bahasa (kiri) dan status (kanan).



  • Dataset berisi 13.916.868 tampilan, dibagi menjadi 4053 tugas, lima di antaranya tidak memiliki tampilan.
  • 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.




" Perangkat lunak memakan dunia ," tulis pengusaha Amerika Mark Andreessen pada 2011. Maju cepat hingga hari ini - perangkat lunak digunakan dalam layanan keuangan dan perawatan kesehatan, ponsel cerdas, dan rumah pintar. Bahkan mobil saat ini mengandung lebih dari 100 juta baris kode.



Namun, kode dalam jumlah besar seperti itu sulit untuk di-debug, dipelihara, dan diperbarui, terutama ketika perusahaan ingin memodernisasi infrastruktur perangkat lunak lama mereka. Akibatnya, kita berada di era baru di mana penting untuk memanfaatkan teknologi modern seperti kecerdasan buatan dan cloud hybrid untuk menciptakan solusi baru yang dapat memodernisasi proses di pipeline teknologi informasi.



Pergi ke Project CodeNet... Kumpulan data besar yang didedikasikan untuk mengajarkan pemrograman kecerdasan buatan, terdiri dari sekitar 14 juta contoh kode dan sekitar 500 juta baris kode di lebih dari 55 bahasa pemrograman yang berbeda, dari yang modern seperti C ++, Java, Python, dan Go hingga bahasa lama. sebagai COBOL, Pascal dan Fortran.



Tetapi untuk memahami arti kumpulan data ini, pertama-tama kita harus melihat ke masa lalu.



Perbatasan AI berikutnya: bahasa mesin



Ilmuwan komputer telah lama tertarik pada kemungkinan komputer pemrograman komputer. Dapatkah AI mempermudah untuk memahami, mengembangkan, dan menerapkan kode - bahasa mesin? Itu mungkin, tetapi tidak mudah untuk mencapainya.



Masalahnya ada pada sistem berbasis aturan.



Mari kita menerjemahkan ke dalam bahasa pemrograman. Jika mudah, sistem berbasis aturan akan berfungsi, dan bahasa pemrograman awal seperti COBOL akan berubah sekarang. Tetapi bahasa pemrograman memiliki konteks. Arti dari pernyataan apa pun dikontekstualisasikan, dan memperoleh serta menerjemahkannya, seperti halnya bahasa manusia, sulit dan memakan waktu.



Semakin besar programnya, semakin sulit untuk diterjemahkan. Dalam bahasa manusia, konteks dapat dibatasi pada satu paragraf atau lebih, di sini konteks dapat merujuk ke beberapa pustaka kode. Konteks adalah tantangan bagi AI.



Secara kasar, sistem berbasis aturan dapat berhasil menerjemahkan 50 hingga 60 persen program. Sebagian program dapat diterjemahkan dengan cukup baik, sisanya biasanya harus diterjemahkan dengan tangan menggunakan aturan yang rumit.



Pengembangan AI untuk kode



Di sinilah AI dapat membantu karena dapat bertindak seperti manusia.



Project CodeNet, khususnya, dapat merangsang inovasi algoritmik untuk mengekstrak konteks ini menggunakan model sekuensial, seperti yang kami gunakan dalam bahasa manusia untuk memberikan kejelasan yang lebih baik pada pemahaman mesin tentang kode serta pemrosesan kode oleh mesin.



Project CodeNet unik karena sampel kodenya dipilih dalam kontes pemrograman terbuka selama bertahun-tahun. Ini unik tidak hanya dalam ukuran dan skala, tetapi juga dalam kualitas metadata dan anotasi dengan sekumpulan informasi yang kaya, baik itu ukuran kode, ukuran memori, waktu CPU, atau status yang menunjukkan penerimaan atau jenis kesalahan.



Lebih dari 90 persen masalah dikaitkan dengan deskripsi masalah yang sesuai, berisi pernyataan singkat masalah, spesifikasi format input dan output. Untuk lebih dari setengah masalah pemrograman (yaitu, tujuh juta sampel kode), kami juga mengkurasi sampel input dan output dari deskripsi masalah, yang merupakan kunci untuk menentukan kesetaraan dua sampel kode dalam bahasa berbeda, yang dapat merangsang penguatan metode pembelajaran untuk menerjemahkan kode.



Kami menyediakannya sebagai bagian dari kumpulan data - fitur Project CodeNet yang berguna. Pengguna dapat menjalankan sampel kode yang dihosting untuk mengekstrak metadata tambahan dan memvalidasi keluaran model AI generatif. Ini akan memungkinkan peneliti untuk memprogram kesetaraan maksud saat menerjemahkan satu bahasa pemrograman ke bahasa lain.



Metadata yang kaya dan variasi contoh kode serta masalah yang mereka pecahkan membuka Project CodeNet untuk banyak kasus penggunaan. Dataset dapat digunakan untuk mencari kode dan menemukan salinan. Contoh kode di Project CodeNet ditandai dengan status Penerimaan, dan kami dapat menjelajahi teknik kecerdasan buatan untuk membedakan kode yang benar dari kode masalah.



Metadata Project CodeNet juga memungkinkan Anda melacak evolusi tampilan masalah ke tampilan yang diterima, yang dapat digunakan untuk mempelajari tentang perbaikan kode otomatis. Setiap sampel kode diberi label dengan runtime CPU dan ukuran memori, yang berguna untuk studi regresi dan prediksi.



Mengingat banyaknya program yang ditulis dalam banyak bahasa, kami percaya bahwa Project CodeNet dapat berfungsi sebagai kumpulan data referensi untuk terjemahan dari sumber ke sumber dan melakukan untuk AI dan kode apa yang dilakukan kumpulan data ImageNet untuk computer vision beberapa tahun yang lalu.



Meningkatkan dan memelihara infrastruktur perangkat lunak juga penting dari perspektif bisnis. Kami menyentuh ini tahun lalu ketika IBM mengumumkan beberapa kemampuan baru , termasuk IBM WatsonAIOps dan Accelerator untuk memodernisasi aplikasi yang mengotomatiskan jalur pipa teknologi informasi.



Misalnya, seorang pelanggan otomotif besar meminta IBM untuk membantu meningkatkan aset $ 200 juta dari 3.500 file Java multi-generasi. File-file ini terdiri dari lebih dari satu juta baris kode yang dikembangkan selama sepuluh tahun menggunakan teknologi Java multi-generasi.



Itu adalah kode aplikasi monolitik yang kompleks yang tidak cocok untuk lingkungan cloud. Dengan menerapkan AI stack ke kode, kami mengurangi proses bisnis migrasi kode selama setahun menjadi empat minggu, memodernisasi dan membangun lebih dari 25 layanan mikro cloud baru dengan memfaktorkan ulang kode aplikasi monolitik lama.



Tim kami dengan bangga memberi para peneliti dan pengembang kumpulan data dan serangkaian teknologi yang mudah digunakan dan dipahami, sambil membantu merancang algoritme yang akan mendorong AI untuk kode. Kami berharap Project CodeNet akan memberikan nilai bisnis saat bisnis memulai perjalanan TI mereka.



Buka Project CodeNet di GitHub dan baca pracetak .



gambar



Aku punya senar, tapi sekarang aku bebas. Tidak ada pamrih untukku



All Articles