Zephyrnet Logosu

GitHub Yardımcı Pilotu ve Programlama Otomasyonunda Yapay Zeka Dil Modellerinin Yükselişi

Tarih:

GitHub Yardımcı Pilotu ve Programlama Otomasyonunda Yapay Zeka Dil Modellerinin Yükselişi

Copilot'u önceki otomatik tamamlama araçlarından (TabNine dahil) farklı kılan şeyin ne olduğu ve bu aracın neden bu kadar çok tartışma yarattığı hakkında daha fazla bilgi edinmek için okumaya devam edin.


github-copilot.png

Github Copilot'u Kullanmalı mıyım?

 
Bir yazılım mühendisiyseniz veya tanıdıklarınız arasında bunlardan herhangi birini sayıyorsanız, muhtemelen bir düzeyde zaten farkındasınızdır. Yardımcı pilot. Copilot, GitHub'ın yeni derin öğrenme kodu tamamlama aracıdır.

Programcılar için otomatik tamamlama araçları yeni bir şey değil ve Copilot derin öğrenmeyi ilk kullanan, hatta GPT dönüştürücüyü ilk kullanan kişi bile değil. Nihayet, SekmeDokuz OpenAI şap tarafından bir yaz projesinden çıktı Yakup Jackson ve kullanır GPT 2 genel amaçlı transformatör

Microsoft (GitHub'ın sahibi) kendi IntelliSense en az 1996'dan beri programlama ürünleri ile kod tamamlama aracı ve otomatik tamamlama ve metin düzeltme 1950'lerden beri aktif bir araştırma alanı olmuştur.

Copilot'u önceki otomatik tamamlama araçlarından (TabNine dahil) farklı kılan şeyin ne olduğu ve bu aracın neden bu kadar çok tartışma yarattığı hakkında daha fazla bilgi edinmek istiyorsanız okumaya devam edin.

Telif Hakkı Tartışması

 

GitHub Copilot'un Quake III'teki hızlı ters karekök işlevini ezberden okuma hevesini gösteren ekran görüntüsü.
Ekran görüntüsü Armin Ronacher GitHub Copilot'un okuma hevesini gösteren hızlı ters karekök Quake III'ün işlevi.

 

Copilot, başlangıcından bu yana, ürün ve olası telif hakkı sonuçları hakkında hararetli bir tartışma başlattı. Bu büyük ölçüde modelin eğitilme biçiminden kaynaklanmaktadır. GitHub Copilot, kod üzerinde ince ayar yapılmış bir GPT-3 çeşidi olan OpenAI Codex'e dayanmaktadır. GPT 3 OpenAI'nin 175 milyar parametresidir (Codex, görünüşe göre GPT-12'ün 3 milyar parametreli versiyonuna dayanmaktadır) genel amaçlı transformatördür ve elbette herhangi bir dev transformatörün etkili olması için dev bir eğitim veri setine ihtiyacı vardır. GitHub, böyle bir veri kümesini ve Copilot'un eğitim veri kümesini bulabileceğiniz yerdir. tüm genel kod dahil GitHub tarafından barındırılmaktadır.

Bu, projeyle ilgili tartışmayı aşan, projeyi çevreleyen temel bir tartışma kaynağıdır. yazılım mühendisliğini otomatikleştirme ve Copilot gibi araçların programlamanın geleceği üzerindeki etkisi. Model ve sınırlamaları hakkında daha fazla teknik bilgi şurada bulunabilir: Arxiv üzerine kağıt.


Edmond de Belamy'nin portresi.” Collective Obvious, parçayı oluşturmak için açık kaynak kodunu kullandı ve daha sonra müzayedede 400,000 doların üzerinde bir fiyata sattı, bu da kodunu kullandıkları Robbie Barrat'ı çok üzdü.

 

Bazı programcılar, kodlarının açık izinleri olmadan ücretli bir ürüne dönüşmesi muhtemel olan şeye katkıda bulunduğu için üzgündür ve bu konuda birkaç yorumcu vardır. hacker haberleri platformdan ayrılmayı tartışıyor.

Bazı yönlerden Copilot'a verilen tepki, GAN tarafından oluşturulan "resim” açık artırmada yaklaşık yarım milyon dolara satıldı. NS sanat eseri açık kaynak katkıları üzerine oluşturuldu hiçbiri, müzayededeki çalışmanın kayda değer başarısı için ödül olarak bildiğimiz herhangi bir tazminat almadı.

The kod resmi üretmek için kullanıldı ve potansiyel olarak önceden eğitilmiş model ağırlıkları, kendi çalışmaları önceki açık kaynak projelerine dayanan ve daha sonra lisansı değiştiren modelin yazarı Robbie Barrat tarafından bir BSD lisansı altında kamuya açık hale getirildi. önceden eğitilmiş ağırlıkların ticari kullanımına izin vermez. Programcıların, çalışmalarının kârlı kullanımlarının dışında bırakıldığında hayal kırıklığına uğraması anlaşılabilir, ancak Copilot'u çevreleyen telif hakkı tartışmasında bundan daha fazlası var.

”github Copilot, kendi kabulleriyle, dağlar kadar gpl kodu üzerinde eğitilmiştir, bu yüzden bunun nasıl ticari çalışmalara açık kaynak kodu aklama biçimi olmadığı konusunda net değilim.başlıklı bir kılavuz yayınladı-Twitter kullanıcısı eevee.

GitHub Copilot, açık kaynak topluluğundaki birçok kişinin GPL gibi lisans şartlarını ihlal ettiğini düşündüğü, copyleft kodunun genişletilmiş bölümlerini yeniden üretebilir.

Yardımcı pilot, aşağıdakiler gibi izin verilen açık kaynak lisansları da dahil olmak üzere tüm genel kodlar konusunda eğitildi. MİT Lisans. Ancak, aynı zamanda telif hakkı lisansları Affero Genel Kamu Lisansı (AGPL) kullanım ve modifikasyona izin verir, ancak değiştirilmiş çalışmaların aynı lisans altında sunulmasını gerektirir. Bazı tefsirlerde, oluşturulan kod GitHub tarafından Copilot, orijinal eğitim verilerinin türevi olarak kabul edilebilir ve belki de daha problemli bir şekilde Copilot bazen kodu yeniden üret eğitim veri kümesinden kelimesi kelimesine. Bu, Copilot'u, örneğin, telif hakkıyla korunan verileri kazımak için genellikle adil kullanımın temel taşı olarak belirtilen Google kitap tarama emsalinden daha zor bir durum haline getirir.

Muhtemel yasal konular hakkındaki tartışma, ABD'den çok az fikir birliği ile devam ediyor. ya yan Şimdilik tartışmanın konusu ve konu büyük olasılıkla mahkemelerin çözmesi gereken bir sorun haline gelebilir.

Copilot'un yasal olarak tamamen açık olduğunu varsaysak bile, ürünü kullanmanın başka riskleri olabilir. Yardımcı pilotun eğitimi adil kullanım olarak kabul edilirse ve çıktısı türev veya telif hakkı/copyleft ihlali yapan çalışma olarak kabul edilmezse, yine de bir doktora öğrencisinin tez araştırması için kod yazması gibi bir bağlamda intihal kriterlerine kolayca uyan çıktılar üretebilir. Şu an için Copilot'u dikkatli kullanmak iyi bir fikir olabilir, ancak Copilot'un trend olan bir tartışma konusu olmasının başka bir nedeni daha var: Yardımcı pilot, yaygın programlama görevlerine şaşırtıcı derecede iyi çözümler sunabilir ve önceki otomatik tamamlama araçlarından hem nicelik hem de nitelik olarak daha yetenekli görünmektedir.

GitHub'ın Yardımcı Pilotu Ne Kadar İyi?

 

Github yardımcı pilotunun leetcode mülakat sorularını nasıl ezdiğini gösteren Youtube videosu
GitHub Yardımcı Pilot Ezilir Leetcode Mülakat Soruları! Kaynak

 

Bir programcı olmasanız bile, muhtemelen bir cep telefonunda tahmini metin biçiminde otomatik tamamlama konusunda biraz deneyiminiz olmuştur. Bu, yazmaya başladığınızda bir sonraki kelimeyi otomatik olarak önerecek ve mevcut cümleyi bitirmek gibi biraz daha uzun bir devam önerebilir.

Çoğu programlama otomatik tamamlama aracı için önerilerin miktarı ve karmaşıklığı, bir cep telefonu klavyesinde bulacağınız şeye kabaca benzer, ancak tüm kod tamamlama araçları modern (diğer bir deyişle derin öğrenme) makine öğrenimini kullanmaz.

Örneğin, vim'deki varsayılan otomatik tamamlama, bir kullanıcının daha önce girdiği kelimelere dayalı olarak önerilen tamamlamaların bir listesini sunar. Daha yakın zamanda geliştirilen kod tamamlama araçları gibi SekmeDokuz or Uçurtma biraz daha karmaşıktır ve bir veya iki satırın geri kalanının tamamlanmasını önerebilir. Kite web sitesi, bunun bir programcıyı kullanılan tuş vuruşlarının sayısı açısından neredeyse iki kat daha verimli hale getirmek için yeterli olduğunu öne sürüyor, ancak Github Copilot çok uzun bir adımla da olsa bunu bir adım daha ileri götürüyor.

Yardımcı pilot, temel aldığı standart GPT-3 diline benzer tamamlama yeteneklerine sahiptir ve kod tamamlama aracıyla çalışmak, “hızlı programlamaGPT-3 deneycilerinin modelle çalışırken benimsediği. Yardımcı pilot, bir belge dizisinin içeriğini yorumlayabilir ve eşleşecek bir işlev yazabilir veya verilen bir işlev ve uygun şekilde adlandırılmış bir test işlevinin başlangıcında birim testleri oluşturabilir. Bu, bir programcının tuş vuruşlarının %50'sinden çok daha fazlasını kurtarır.

Mantıksal sonucuna bakıldığında, Copilot mükemmel çalıştığında, bir yazılım mühendisinin işini kod yazmaktan çok sürekli kod incelemesi gibi görünen bir şeye dönüştürür.

Teknik önizleme sürümüne erken erişime sahip birkaç programcı-blog yazarı, görüşme düzeyindeki programlama sorunlarını çözmek için modele esasen meydan okuyarak Copilot'u teste tabi tuttu. Yardımcı pilot oldukça etkileyici ne kadar iyi bu tür zorlukları çözebilir, ancak çıktısını önce dikkatlice gözden geçirmeden kullanmayı garanti edecek kadar iyi değildir.

Birkaç çevrimiçi yazılım mühendisi, “AI çifti programlayıcısını” (GitHub'ın söylediği gibi) teste tabi tuttu. bölümünde tanımlanan bazı noktaların üzerinden geçeceğiz. Arxiv kağıdı Codex'in yetersiz kaldığı ve teknik önizlemede yer alan programcılar tarafından yürütülen deneylerde örnekler bulmaya çalıştığı senaryolar olarak.

HumanEval Veri Kümesi

 
OpenAI Codex, kod üzerinde ince ayar yapılmış ~12 milyar GPT-3 parametresidir ve Codex-S, Codex'in kendisinin en gelişmiş çeşididir. Bu modelin performansını değerlendirmek için OpenAI, HumanEval veri kümesi olarak adlandırdıkları şeyi oluşturdu: karşılık gelen birim testleriyle birlikte 164 elle yazılmış programlama zorluğu koleksiyonu, aşağıdaki gibi bir kodlama uygulama sitesinde bulabileceğiniz türden. Kod Sinyali, Kod Kuvvetleri veya HackerRank.

HumanEval'de, problem özellikleri fonksiyon belgelerine dahil edilmiştir ve problemlerin tamamı Python programlama dili için yazılmıştır.

Kod spesifik olmayan farklılaşmamış bir GPT-3, HumanEval veri setindeki sorunların hiçbirini çözemezken (en azından ilk denemede), ince ayarlı Codex ve Codex-S, %28.8 ve %37.7'sini çözebildi. sırasıyla sorunlar. Codex-S, problemlere yönelik ilk 100 deneme arasından seçim yaparak, sorunların %77.5'ini daha da çözebildi.

Bunu yorumlamanın bir yolu, eğer bir programcı Codex kullanıyorsa, ilk 100 öneriyi gözden geçirerek veya hatta körü körüne atma girişiminde bulunarak bir soruna (kabaca teknik görüşmelerde karşılaşılan karmaşıklık düzeyinde) geçerli bir çözüm bulmayı bekleyebilirler. çözümler, geçene kadar geçerli bir birim test setinde. Bu, bir programcı Codex'ten gelen önerileri ilk birkaç öneriden birinde değiştirmeye istekliyse, daha iyi bir çözümün bulunamayacağı anlamına gelmez.

Ayrıca, yaklaşık 200 örnek üreterek ve “geçer@k” olarak rapor ettikleri birim testlerini geçen örneklerin oranının yansız bir tahmin edicisini hesaplayarak her bir problemi çözmek için daha karmaşık bir tahmin edici kullandılar, burada k 100'dür, numune sayısı tahmini. Bu yöntem, pass@k'yi doğrudan bildirmekten daha düşük bir varyansa sahiptir.

En İyi Kodeks Modeli Bir Bilgisayar Bilimi Öğrencisinin Hala Yetersiz Performansını Gösteriyor

 
Codex'in yazarları, GitHub'dan yüz milyonlarca kod satırında 150 GB'ın üzerinde eğitim alan modelin, bir insan programcının kariyerleri boyunca okumayı bekleyebileceğinden çok daha fazla kod üzerinde eğitildiğini belirtiyor. Bununla birlikte, en iyi Codex modeli (12 milyar parametreli Codex-S), acemi bir bilgisayar bilimi öğrencisinin veya birkaç öğleden sonrasını mülakat tarzı kodlama zorlukları uygulayarak geçiren birinin yeteneklerinin altında performans gösteriyor.

Özellikle, bir sorun belirtiminde birkaç işlemi birbirine zincirlerken Codex performansı hızla düşer.

Aslında, Codex'in birbirine zincirlenmiş birkaç işlemi çözme yeteneği, problem belirtimindeki her ek talimat için 2 kat veya daha kötü düşer. Bu etkiyi ölçmek için OpenAI'deki yazarlar, sıralı olarak çalışabilen (küçük harfe geç, diğer her karakteri belirli bir karakterle değiştir, vb.) Tek bir dizi işleme için, Codex sorunların yaklaşık %25'ini geçti, birbirine zincirlenmiş 10 dizi işleme için %2'un biraz altına, 5 için %3 vb.

Çok adımlı sorunları çözmedeki hızlı düşüş, erken bir Yardımcı Pilot inceleme uzmanı tarafından görüldü Giuliano Giacaglia Medium'da. Giuliano, Copilot'a bir giriş dizesindeki her bir kelimedeki harfleri tersine çevirmeye ilişkin bir sorun açıklaması verdiğini bildiriyor, ancak bunun yerine Copilot, kelimelerden oluşan bir cümledeki harfleri değil, bir cümledeki kelimelerin sırasını tersine çeviren bir işlev önerdi ("Dünya Merhaba" yerine " olleH dlrow"). Ancak yardımcı pilot, kendi uygulaması için başarısız olan bir test yazmayı başardı.

Giuliano ve OpenAI tarafından Copilot'u test etmek için kullanılan çok adımlı dizi manipülasyon paradigmasına bağlı kalmamakla birlikte, Kumar Shubham Copilot, ekran görüntüsü almak için sistem programlarını çağırmayı, görüntü üzerinde optik karakter tanımayı çalıştırmayı ve son olarak metinden e-posta adreslerini çıkarmayı içeren çok adımlı bir sorun tanımını başarıyla çözdüğünde etkileyici bir sonuç keşfetti. Ancak bu, Yardımcı Pilotun kullanılamayan, güncel olmayan veya güvenilmeyen dış bağımlılıklara dayanan kod yazabileceği sorununu gündeme getirir. Bu, OpenAI tarafından, modelin önyargıya duyarlılığı, güvenlik açıkları oluşturma yeteneği ve makalelerinin riskleri tartışan bölümünde potansiyel ekonomik ve enerji maliyetlerinin yanı sıra gündeme getirilen bir noktadır.

YouTubers'dan Copilot'un diğer incelemeleri DevOps Yönergesi ve Benjamin Carlson Copilot'a röportaj tarzı sorularla meydan okurken etkileyici sonuçlar buldu. leetcode.com, bir dizi basit dize manipülasyonunu birbirine zincirlemekten önemli ölçüde daha karmaşık görünenler de dahil olmak üzere. Copilot'un oluşturabileceği kodun karmaşıklığı ile Copilot'un anlayabileceği sorun özelliklerinin karmaşıklığı arasındaki fark dikkat çekicidir.

Belki de eğitim veri setinde görüşme alıştırma soruları tarzında yazılmış kodun yaygınlığı, Copilot'un bu tür problemlere gereğinden fazla uymasına yol açmaktadır veya belki de modüler işlevselliğin birkaç adımını birbirine zincirlemek, büyük bir yığın oluşturmaktan daha zordur. modelin daha önce gördüğü bir şeye çok benzeyen karmaşık kod. Kötü tanımlanmış ve kötü yorumlanmış spesifikasyonlar, mühendisler ve insan çeşitliliğinin yöneticileri için zaten yaygın bir şikayet kaynağıdır, bu yüzden belki de bir AI kodlama asistanının karmaşık problem spesifikasyonlarını ayrıştırmada başarısız olduğunu bulmak o kadar şaşırtıcı olmamalıdır.

Yardımcı Pilot Alternatifleri

 
Bu yazı itibariyle, Copilot hala, programa kaydolacak kadar şanslı olan programcılarla sınırlıdır. Teknik Önizleme, ama korkmayın: sayısız diğer kod tamamlama asistanı (derin öğrenme kullanıyor olsun ya da olmasın) denemek için hazır ve yazılım mühendisliği için artan otomasyonun ne anlama gelebileceğini düşünmek için kötü bir zaman değil.

Daha önce bahsettiğimiz SekmeDokuz, kısmen OpenAI'nin GPT-2 transformatörüne dayanan bir kod tamamlama aracı. Başlangıçta Jacob Jackson tarafından inşa edilmiş ve şimdi sahibi olduğu Codota, TabNine, OpenAI yazarları tarafından kullanılan pass@7.6 metriğinde HumanEval karşılaştırmasının %100'sını çözebildi. Bu, GPT-3 modellerinin sorun açıklamalarından kod üretme potansiyelinden açıkça ilham alan Codex'in aksine, TabNine'ın daha pratik bir kod tamamlama çözümü olarak tasarlandığını düşünürsek oldukça etkileyici. TabNine 2018'den beri piyasada ve hem ücretsiz hem de ücretli sürümleri var.

Uçurtma TabNine ile aynı damarda, ücretsiz (masaüstü) ve ücretli (sunucu) sürümleri olan ve kullanılan modelin boyutu 25 kat değişen başka bir kod tamamlama aracıdır. Kite'ın kullanım istatistiklerine göre, kodlayıcılar önerilenleri kullanmayı seçerler. tamamlamalar, her satırı manuel olarak yazmaya kıyasla tuş vuruşlarını yarıya indirmeye yetiyor ve Kite, kullanıcılarının bildirdiği %18'lik verimlilik artışından bahsediyor. Kite, web sitelerindeki animasyonlu demolardan yola çıkarak hem TabNine hem de Copilot'tan kesinlikle daha kısa tamamlamalar önerir. Bu, çoğunlukla yalnızca biraz daha uzun tamamlamalar öneren TabNine'den derece olarak farklıdır, ancak Copilot'tan niteliksel olarak farklıdır: Yardımcı pilot, genişletilmiş kod blokları önerebilir ve deneyimi en iyi tamamlamayı seçmekten, soruna yönelik önerilen birkaç yaklaşımı gözden geçirmeye kadar değiştirir.

Yardımcı Pilot İşinizi mi Almak İçin Burada yoksa Sadece Kodunuzu mu?

 
GitHub Copilot'ta bazı yazılım mühendisleri, yıllardır inşa ettikleri otomasyonun nihayet eve geldiğini ve yakında hepimizin işsiz kalacağını söyleyerek şaka yapıyor. Gerçekte, programlamanın sadece kod yazmaktan daha fazlası olduğu için, bunun uzun yıllar boyunca böyle olması pek olası değildir.

Ayrıca, bir dizi yazılım spesifikasyonunda bir müşterinin veya yöneticinin tam olarak ne istediğini yorumlamanın bile bir bilimden çok bir sanat olduğu sık sık tekrarlanan bir mecazdır.

Öte yandan, Copilot ve bunun gibi diğer doğal dil kod tamamlama araçları (ve bize güvenin, daha fazlası geliyor) gerçekten de yazılım mühendislerinin işlerini yapma biçimleri üzerinde büyük bir etkiye sahip olacak. Mühendisler, incelenen kodun bir AI modeli veya bir mühendis tarafından yazılmış olup olmadığına bakılmaksızın, kodu gözden geçirmek ve testleri kontrol etmek için muhtemelen daha fazla zaman harcayacaktır. Makine öğrenimi programlama yardımcılarının “hızlı programlaması” yaygınlaştıkça, muhtemelen programlama sanatının başka bir meta katmanını da göreceğiz.

siberpunk yazarı olarak William Gibson, tüm bu yıllar önce ortaya koydu: "gelecek zaten burada - sadece eşit olarak dağıtılmamış."

Copilot ayrıca telif hakkı, copyleft ve her türlü açık kaynak lisansı ve iyi teknoloji geliştirme felsefesi hakkında bir tartışmayı ateşledi; bu, er ya da geç yapılması gereken bir tartışmadır. Ek olarak, fikri mülkiyetin çağdaş yorumlarının çoğu, bir eserin telif hakkı için uygun olması için bir insan yazar gerektirir. İnsanlar yerine makine öğrenimi modelleri tarafından daha büyük oranlarda daha fazla kod yazıldığından, bu eserler oluşturulduktan sonra yasal olarak kamu malı olacak mı?

Kim bilir? Copilot'un büyük-büyük-büyük halefi, sadık bir açık kaynak savunucusu haline geldiğinden ve yalnızca özgür ve açık kaynaklı yazılım üzerinde çalışmakta ısrar ettiğinden, belki de açık kaynak topluluğu sonunda kazanacaktır.

 
Bio: kevin vu Exxact Corp blogunu yönetir ve Derin Öğrenmenin farklı yönleri hakkında yazan yetenekli yazarlarının çoğuyla çalışır.

orijinal. İzinle yeniden yayınlandı.

İlgili:


Plato Ai. Web3 Yeniden Düşünüldü. Güçlendirilmiş Veri Zekası.
Erişmek için buraya tıklayın.

Kaynak: https://www.kdnuggets.com/2021/09/github-copilot-rise-ai-language-models-programming-automation.html

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?