İnternette İstediğiniz Gibi Çevrimiçi Para Kazanma!

Google AI, yazılım mühendisliği faaliyetlerine yönelik makine öğrenimi modellerini eğitmek amacıyla DIDACT’ı tanıttı

Gönderiyi okuyorsunuz: Google AI, yazılım mühendisliği faaliyetleri için makine öğrenimi modellerini eğitmek amacıyla DIDACT’ı tanıtıyor

Yazılım oluşturmak tek bir büyük adımla gerçekleşmez. Bir kod deposuyla birleştirilmeye hazır olana kadar adım adım gelişir: düzenleme, birim testlerini çalıştırma, derleme hatalarını düzeltme, kod incelemelerine yanıt verme, biraz daha düzenleme, linterleri tatmin etme ve ek hataları düzeltme.

Google’ın yeni çalışması, yazılım mühendisliği bağlamında büyük makine öğrenimi (ML) modellerini eğitmeye yönelik bir teknik olan DIDACT’ı tanıtıyor. DIDACT, son yazılım geliştirme ürününden ve tüm süreçten eğitim verilerini çıkarması açısından alışılmadık bir durumdur. Model, yazılım geliştirmenin dinamikleri hakkında bilgi edinebilir ve geliştiricilerin gözlemlediği bağlamlara maruz kalması durumunda geliştiricilerin zamanlarını nasıl harcadıklarıyla daha uyumlu hale gelebilir. Aynı zamanda eylemleriyle birlikte bu senaryolara tepki olarak da işlev görürler. Ekip, geliştirici etkinliği verilerinin hacmini ve çeşitliliğini önceki araştırmaların ötesinde önemli ölçüde artırmak için Google yazılım geliştirme araçlarını kullanıyor.

Google yazılım mühendisleri, yazılım mühendisliği projeleri üzerinde çalışırken öneriler sağlamak veya gerçekleştirdikleri eylemleri iyileştirmek için mühendisler ve araçlar arasındaki etkileşimlere dayandığı için DIDACT ML modellerinden yararlanabilir. Bu hedefe ulaşmak için ekip, başarısız bir yapıyı düzeltmek, bir kod inceleme yorumunu tahmin etmek ve yanıtlamak, bir değişkeni yeniden adlandırmak, bir dosyayı değiştirmek vb. gibi tek bir geliştiricinin eylemlerine dayalı bir dizi görev oluşturdu. Her göreve, bir durumu (bir kod dosyası), bir amacı (kod inceleme yorumları veya derleyici çökmeleri dahil, çalışmaya özgü ek açıklamalar) kabul eden ve bir eylem (sorunun gerçek çözümü) döndüren aynı formalizm kullanılarak yaklaşılır. . Durum-niyet-eylem formalizminin yardımıyla kullanıcılar genel olarak çeşitli görevleri temsil edebilir. Bu eylem, yeni özellikleri barındıracak şekilde genişletilebilecek minyatür bir programlama dili olarak düşünülebilir. Kod biçimlendirme, yorumlar, değişken yeniden adlandırma, hata vurgulama vb. içerir. Bu betik dili “DevScript” olarak bilinir.

DIDACT belirli yardım faaliyetlerinde iyi çalışır. DIDACT’ın daha büyük ölçeklerde ortaya çıkan davranışları çağrıştıran çok modlu yapısı nedeniyle bazı beklenmedik yetenekler ortaya çıkıyor. Geçmişi geliştirme, istek üzerine kullanılabilecek özelliklerden biridir. Model, önceki eylemlerine dayanarak geliştiriciye daha bilinçli bir öneri sunabilir. Artırılmış geçmişle kod tamamlama, bu potansiyeli gösteren etkili bir görev örneğidir.

Modelin “video düzenleme”de sonraki doğru adımları belirleme yeteneği, bağlamın kullanılabilirliğiyle büyük ölçüde artırılır. Model, önceki düzenlemelere dayanarak bir sonraki düzenlemenin nerede gerçekleştirileceğine karar verebilir, bu da düzenleme tahminini daha da güçlü bir artırılmış geçmiş görevi haline getirir. Bir geliştiricinin bir işlev parametresini kaldırması buna bir örnektir: (1) Model, kaldırılan parametreyi kaldıran (insan geliştiricinin imleci manuel olarak oraya yerleştirmesine gerek kalmadan) belge dizisindeki (2) bir güncellemeyi doğru bir şekilde tahmin etmek ve bir ifadeyi güncellemek için geçmişi kullanır. fonksiyon (3)’te sözdizimsel (ve muhtemelen anlamsal) olarak doğru bir şekilde. Bağlam olmadan model, geliştiricinin bir özellik parametresini kasıtlı olarak mı (daha büyük bir düzenlemenin parçası olarak) yoksa yanlışlıkla mı (bu durumda sıfırlanması gerekir) kaldırdığını bilemez.

Modelin potansiyeli daha fazla. Örneğin, modele boş bir dosya verilir ve kodun tamamını yazana kadar bundan sonra hangi değişikliklerin yapılması gerektiğini tahmin etmesi söylenir. Araştırmacılar, şaşırtıcı bir şekilde modelin, kodu bir programcının anlayabileceği mantıklı ve adım adım yazdığını söylüyor. Süreç, içe aktarmaları, bayrakları ve bir ana işlevi içeren işlevsel bir iskeletin geliştirilmesiyle başladı. Daha sonra, dosyanın tamamında yeni bayraklar eklemek gibi değişiklikler yapılmasını gerektiren, kullanıcı tarafından sağlanan bir düzenli ifadeyi kullanarak dosyalara okuma ve yazma ve satırları filtreleme gibi işlemlere izin verecek şekilde genişletildi.