Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Kodlama yardımcılarına yönelik üretken yapay zeka modelleri çoğunlukla kamuya açık kaynak kodu ve doğal dildeki metinler üzerinde eğitilir. Eğitim külliyatının büyük boyutu, modellerin yaygın olarak kullanılan işlevsellik için kod oluşturmasına olanak sağlarken, bu modeller, özel depolardaki kodlardan ve bunlarla geliştirme sırasında uygulanan ilgili kodlama stillerinden habersizdir. Sonuç olarak, oluşturulan önerilerin dahili bir arşive dahil edilmeye uygun hale gelmesinden önce yeniden yazılması gerekebilir.

Kamu koduyla eğitilmiş bir dil modelinin üzerine özel depolardaki kod bilgilerini yerleştirerek bu boşluğu kapatabilir ve ek manuel düzenlemeyi en aza indirebiliriz. Bu nedenle bir özelleştirme yeteneği geliştirdik. Amazon Kodu Fısıltı. Bu yazıda, erişim artırılmış oluşturma ve ince ayar kullanarak kodlama yardımcılarını özelleştirmenin iki olası yolunu gösteriyoruz.

CodeWhisperer'ın özelleştirme yeteneğiyle hedefimiz, kuruluşların CodeWhisperer modelini kendi özel depolarını ve kitaplıklarını kullanarak uyarlamalarına olanak tanıyarak zamandan tasarruf sağlayan, kuruluş tarzını ve kurallarını takip eden ve hataları veya güvenlik açıklarını önleyen kuruluşa özgü kod önerileri oluşturmasını sağlamaktır. Bu, kurumsal yazılım geliştirmeye fayda sağlar ve aşağıdaki zorlukların üstesinden gelinmesine yardımcı olur:

  1. Geliştiricileri, kullanımı çoğaltmak için önceden yazılmış kodu incelemeye zaman harcamaya zorlayan dahili kitaplıklar ve API'ler için seyrek belge veya bilgi.
  2. Kuruma özel kodlama uygulamaları, stilleri ve kalıplarının uygulanmasında farkındalık ve tutarlılık eksikliği.
  3. Kullanımdan kaldırılmış kodların ve API'lerin geliştiriciler tarafından yanlışlıkla kullanılması.

Dil modeli, halihazırda kod incelemelerinden geçmiş ek eğitim için dahili kod depolarını kullanarak, önceki sorun listesinin üstesinden gelen dahili API'lerin ve kod bloklarının kullanımını ortaya çıkarabilir. Referans kodu zaten incelendiğinden ve müşterinin yüksek çıtasını karşıladığından, hata veya güvenlik açıklarının ortaya çıkma olasılığı da en aza indirilir. Ayrıca, özelleştirme için kullanılan kaynak dosyaların dikkatli bir şekilde seçilmesiyle kuruluşlar, kullanımdan kaldırılmış kod kullanımını azaltabilir.

Tasarım zorlukları

Kod önerilerini bir kuruluşun özel depolarına göre özelleştirmek birçok ilginç tasarım zorluğuna sahiptir. Büyük dil modellerinin (LLM'ler) yüzey kodu önerilerine dağıtılması, kullanılabilirlik açısından sabit maliyetlere ve oluşturulan jeton sayısına dayalı çıkarım nedeniyle değişken maliyetlere sahiptir. Bu nedenle, her müşteri için ayrı özelleştirmeler yapmak ve bunları ayrı ayrı barındırmak, dolayısıyla ek sabit maliyetlere yol açmak, aşırı derecede pahalı olabilir. Öte yandan, aynı sistem üzerinde aynı anda birden fazla özelleştirmeye sahip olmak, her müşteri için özel kodun izole edilmesi için çok kiracılı altyapıyı gerektirir. Ayrıca, özelleştirme yeteneği, farklı ölçümler (örneğin, daha az hata geçmişi olan dosyalar veya depoya yakın zamanda eklenmiş kodlar) kullanarak dahili depodan uygun eğitim alt kümesinin seçimini mümkün kılmak için düğmeleri yüzeye çıkarmalıdır. Kodun bu ölçümlere göre seçilmesiyle özelleştirme, kod önerilerinin kalitesini artırabilecek daha yüksek kaliteli kod kullanılarak eğitilebilir. Son olarak, sürekli gelişen kod depolarında bile, özelleştirmeyle ilişkili maliyet, kuruluşların artan geliştirici verimliliğinden maliyet tasarrufu elde etmelerine yardımcı olmak için minimum düzeyde olmalıdır.

Özelleştirme oluşturmaya yönelik temel bir yaklaşım, modeli, (özel) kurumsal kodla birlikte mevcut (kamuya açık) ön eğitim veri kümesinden oluşan tek bir eğitim topluluğu üzerinde önceden eğitmek olabilir. Bu yaklaşım pratikte işe yarasa da, her kuruluş için genel veri kümesini kullanarak (yedek) bireysel ön eğitim gerektirir. Ayrıca, her müşteri için yalnızca o müşteriden kaynaklanan istemci isteklerine hizmet eden özelleştirilmiş bir modelin barındırılmasıyla ilişkili yedek dağıtım maliyetlerini de gerektirir. Kamu ve özel kod eğitiminin ayrılması ve özelleştirmenin çok kiracılı bir sisteme dağıtılmasıyla bu gereksiz maliyetlerden kaçınılabilir.

Nasıl özelleştirilir?

Yüksek düzeyde, iki tür olası özelleştirme tekniği vardır: almayla artırılmış oluşturma (RAG) ve ince ayar (FT).

  • Alma-artırılmış nesil: RAG, belirli bir kod parçasına benzeyen (örneğin, IDE'de imlecin hemen önünde yer alan kod) bir depo içindeki eşleşen kod parçalarını bulur ve LLM'yi sorgulamak için kullanılan istemi bu eşleşen kod parçacıklarıyla genişletir. Bu, modeli daha alakalı kod oluşturmaya itmeye yardımcı olacak istemi zenginleştirir. Literatürde bu doğrultuda araştırılan birkaç teknik vardır. Görmek Bilgi Yoğun NLP Görevleri için Erişim Arttırılmış Nesil, DİYAR, kNN-LM ve RETRO.

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

  • İnce ayar: FT, önceden eğitilmiş bir LLM'yi alır ve onu uygun depoya uyarlamak için belirli, daha küçük bir kod tabanında (ön eğitim veri kümesiyle karşılaştırıldığında) daha da eğitir. İnce ayar, LLM'nin ağırlıklarını bu eğitime göre ayarlayarak eğitimin kuruluşun benzersiz ihtiyaçlarına göre daha uygun hale getirilmesini sağlar.

Hem RAG hem de ince ayar, LLM tabanlı özelleştirmenin performansını artırmaya yönelik güçlü araçlardır. RAG, daha düşük eğitim karmaşıklığı ve maliyetiyle özel kitaplıklara veya API'lere hızla uyum sağlayabilir. Ancak, alınan kod parçacıklarının istemde aranması ve genişletilmesi, çalışma zamanındaki gecikmeyi artırır. Bunun yerine, model zaten özel kitaplıklar ve API'ler üzerinde eğitildiğinden, ince ayar yapmak bağlamda herhangi bir genişletme gerektirmez. Ancak birden fazla kurumsal müşteride birden fazla özel modelin desteklenmesi gerektiğinde, bu durum daha yüksek eğitim maliyetlerine ve modelin sunulmasında karmaşıklığa yol açar. Daha sonra tartışacağımız gibi, bu endişeler yaklaşımın daha da optimize edilmesiyle çözülebilir.

Artırılmış neslin alınması

RAG'da birkaç adım vardır:

Endeksleme

Yönetici tarafından giriş olarak özel bir depo verildiğinde, kaynak kod dosyalarının parçalara bölünmesiyle bir dizin oluşturulur. Basitçe söylemek gerekirse, parçalama, kod parçacıklarını, model için en bilgilendirici olması muhtemel ve bağlam göz önüne alındığında kolayca alınabilecek sindirilebilir parçalara dönüştürür. Bir yığının boyutu ve dosyadan nasıl çıkarıldığı, nihai sonucu etkileyen tasarım tercihleridir. Örneğin, parçalar kod satırlarına veya sözdizimsel bloklara vb. dayalı olarak bölünebilir.

Yönetici İş Akışı

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.
bağlamsal arama

İmlecin üzerindeki birkaç satır koda dayalı olarak dizine alınmış kod parçacıkları kümesini arayın ve ilgili kod parçacıklarını alın. Bu alma farklı algoritmalar kullanılarak gerçekleşebilir. Bu seçenekler şunları içerebilir:

  • Bir torba kelime (BM25) - Sorgu terimi sıklıklarına ve kod parçacığı uzunluklarına göre bir dizi kod parçacığını sıralayan bir kelime çantası alma işlevi.

BM25 tabanlı erişim

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Aşağıdaki şekil BM25'in nasıl çalıştığını göstermektedir. BM25'i kullanabilmek için öncelikle ters çevrilmiş bir indeks oluşturulur. Bu, farklı terimleri, bu terimlerin geçtiği kod parçacıklarıyla eşleştiren bir veri yapısıdır. Arama zamanında, sorguda bulunan terimlere göre kod parçacıklarına bakar ve bunları sıklığa göre puanlarız.

Anlamsal erişim

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

BM25 sözcüksel eşleştirmeye odaklanır. Bu nedenle, "ekle" ifadesinin "sil" ile değiştirilmesi, sorgudaki terimlere göre BM25 puanını değiştirmeyebilir ancak alınan işlevsellik, gerekenin tam tersi olabilir. Buna karşılık anlamsal erişim, değişken ve API adları farklı olsa bile kod pasajının işlevselliğine odaklanır. Tipik olarak, BM25 ve anlamsal geri almaların bir kombinasyonu, daha iyi sonuçlar sağlamak için birlikte iyi çalışabilir.

Artırılmış çıkarım

Geliştiriciler kod yazarken, mevcut programları, erişim dizinine gönderilen bir sorguyu formüle etmek için kullanılır. Yukarıda tartışılan tekniklerden birini kullanarak birden fazla kod parçacığını aldıktan sonra, bunları orijinal istemin başına ekliyoruz. Burada, alınacak snippet'lerin sayısı, snippet'lerin istemdeki göreceli yerleşimi ve snippet'in boyutu da dahil olmak üzere pek çok tasarım seçeneği vardır. Nihai tasarım seçimi öncelikle, temeldeki dil modeliyle çeşitli yaklaşımların keşfedilmesi yoluyla ampirik gözlemlerle yönlendirilir ve yaklaşımın doğruluğunun belirlenmesinde önemli bir rol oynar. Döndürülen parçaların içeriği ve orijinal kod birleştirilir ve özelleştirilmiş kod önerileri almak üzere modele gönderilir.

Geliştirici iş akışı

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

İnce ayar:

İnce ayar için bir dil modeli yapılır öğrenme aktarımı önceden eğitilmiş bir modelin ağırlıklarının yeni veriler üzerinde eğitildiği. Amaç, halihazırda geniş bir külliyat üzerinde eğitilmiş bir modelden uygun bilgiyi korumak ve yeni külliyattan (bizim durumumuzda yeni bir kod tabanı) geliştirmek, değiştirmek veya yeni bilgiler eklemektir. Basitçe yeni bir kod tabanı üzerinde eğitim almak, yıkıcı unutkanlık. Örneğin, dil modeli güvenlik bilgisini “unut” veya bugüne kadar kurumsal kod tabanında seyrek olarak kullanılan API'ler. Gibi çeşitli teknikler vardır. deneyim tekrarı, GEM, ve PP-TF Bu zorluğun üstesinden gelmek için kullanılanlar.

İnce ayar

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

İnce ayarın iki yolu vardır. Yaklaşımlardan biri, modele ince ayar yapma isteğini artırmadan ek verileri kullanmaktır. Diğer bir yaklaşım ise ince ayar sırasında ilgili kod önerilerini alarak istemi artırmaktır. Bu, alınan kod parçacıklarının varlığında modelin daha iyi öneriler sunma becerisinin geliştirilmesine yardımcı olur. Model daha sonra eğitildikten sonra uzatılmış bir örnek seti üzerinde değerlendirilir. Daha sonra özelleştirilmiş model devreye alınır ve kod önerilerinin oluşturulması için kullanılır.

Özel depolarda kod oluşturmak için özel LLM'ler kullanmanın avantajlarına rağmen, maliyetler küçük ve orta ölçekli kuruluşlar için engelleyici olabilir. Bunun nedeni, ekiplerin büyüklüğü göz önüne alındığında yeterince kullanılamasalar bile özel bilgi işlem kaynaklarının gerekli olmasıdır. Maliyet verimliliği elde etmenin bir yolu, aynı bilgi işlem üzerinde birden fazla modele hizmet vermektir (örneğin, SageMaker çoklu kiracılığı). Ancak dil modelleri, gecikme ve aktarım hızı kısıtlamalarını ele almak için birden fazla bölgede bir veya daha fazla özel GPU gerektirir. Bu nedenle, her GPU'da tam model barındırmanın çoklu kiracılığı mümkün değildir.

Küçük bilgisayar kullanarak aynı bilgisayar üzerinde birden fazla müşteriye hizmet vererek bu sorunun üstesinden gelebiliriz. adaptörler LLM'ye. Parametre açısından verimli ince ayar (PEFT) teknikleri gibi hızlı ayarlama, önek ayarıve Düşük Sıralı Uyarlama (LoRA) herhangi bir doğruluk kaybı olmadan eğitim maliyetlerini düşürmek için kullanılır. Özellikle LoRA, tam model ince ayarına benzer (veya daha iyi) doğruluk elde etme konusunda büyük başarı elde etti. Temel fikir, daha sonra modelin hedeflenen katmanlarının orijinal matris ağırlığına sahip matrislere eklenen düşük dereceli bir matris tasarlamaktır. Genellikle bu adaptörler daha sonra sunum için orijinal model ağırlıklarıyla birleştirilir. Bu, orijinal sinir ağıyla aynı boyuta ve mimariye yol açar. Adaptörleri ayrı tutarak aynı baz modele birçok model adaptörle hizmet verebilmekteyiz. Bu, ölçek ekonomilerini küçük ve orta ölçekli müşterilerimize geri getiriyor.

Düşük Dereceli Uyarlama (LoRA)

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Özelleştirmenin etkililiğinin ölçülmesi

Özelleştirilmiş çözümün etkinliğini değerlendirmek için değerlendirme ölçümlerine ihtiyacımız var. Çevrimdışı değerlendirme metrikleri, varsayılan modelle karşılaştırıldığında ortalamanın altında olan gönderim özelleştirmelerine karşı koruma görevi görür. Sağlanan veri havuzundan tutulan bir veri kümesinden veri kümeleri oluşturarak, verimliliği ölçmek için bu veri kümesine özelleştirme yaklaşımı uygulanabilir. Mevcut kaynak kodunu özelleştirilmiş kod önerisiyle karşılaştırmak, özelleştirmenin kullanışlılığını ölçer. Bu nicelik belirleme için kullanılan yaygın ölçüler arasında aşağıdaki gibi metrikler yer alır: benzerliği düzenle, tam eşleşme ve KodBLEU.

Özelleştirme tarafından dahili API'lerin ne sıklıkta çağrıldığını ölçerek ve bunu önceden var olan kaynaktaki çağrılarla karşılaştırarak kullanışlılığı ölçmek de mümkündür. Başarılı bir tamamlama için elbette her iki yönün de doğru olması önemlidir. Kişiselleştirme yaklaşımımız için, Özelleştirme Kalite Endeksi (CQI) olarak bilinen, 1 ile 10 arasında değişen kullanıcı dostu tek bir ölçüm olan özel hazırlanmış bir metrik tasarladık. CQI metriği, koda kıyasla özelleştirilmiş modelden gelen önerilerin kullanışlılığını gösterir. genel bir kamusal modelle öneriler.

Özet

Bu blog yazısında tartışılan önde gelen teknik tekniklerin bir karışımını temel alarak Amazon CodeWhisperer özelleştirme yeteneğini geliştirdik ve bunu Persistent Systems tarafından yürütülen geliştirici verimliliğine ilişkin kullanıcı araştırmalarıyla değerlendirdik. AWS tarafından yaptırılan bu iki çalışmada, geliştiricilerden Java'da dahili kütüphanelerinin kullanılmasını gerektiren bir tıbbi yazılım uygulaması oluşturmaları istendi. İlk çalışmada, CodeWhisperer'a erişimi olmayan geliştiricilerin görevi tamamlaması (ortalama olarak) ~8.2 saat sürerken, CodeWhisperer'ı kullananlar (özelleştirme olmadan) görevi ~62 saatte (ortalama) yüzde 3.1 daha hızlı tamamladılar.

Farklı bir geliştirici grubuyla yapılan ikinci çalışmada, kendi özel kod tabanları kullanılarak özelleştirilmiş CodeWhisperer kullanan geliştiriciler, görevi ortalama 2.5 saatte tamamladılar; bu, CodeWhisperer'ı özelleştirme olmadan kullanan ve görevi yaklaşık 28 saatte tamamlayanlara göre yüzde 3.5 daha hızlıydı. ortalama saat. CodeWhisperer gibi kod tabanınıza göre özelleştirilmiş araçların, geliştirici üretkenliğini daha da artırmada önemli bir rol oynadığına inanıyoruz ve bu aracı çalıştırmanızı öneriyoruz. Daha fazla bilgi edinmek ve başlamak için şu adresi ziyaret edin: Amazon CodeWhisperer sayfası.


yazarlar hakkında

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Qing Güneşi AWS AI Laboratuvarlarında Kıdemli Uygulamalı Bilim Adamıdır ve yapay zeka destekli üretken bir kodlama asistanı olan AWS CodeWhisperer üzerinde çalışmaktadır. Araştırma ilgi alanları Doğal Dil İşleme, AI4Code ve üretken yapay zekadır. Geçmişte, Amazon Health AI'da bir tıbbi teşhis sistemi olan Comprehend Medical ve Meta AI'da Makine Çevirisi sistemi gibi çeşitli NLP tabanlı hizmetlerde çalışmıştı. Doktora derecesini 2017 yılında Virginia Tech'ten aldı.

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Arash Farahani Amazon CodeWhisperer'a sahip bir Uygulamalı Bilim Adamıdır. Şu anki ilgi alanları üretken yapay zeka, arama ve kişiselleştirmedir. Arash, geliştiricilerin sıkıntılı noktalarını çözecek çözümler oluşturma konusunda tutkulu. CodeWhisperer'ın birçok özelliği üzerinde çalıştı ve tüm Amazon geliştiricilerini etkileyen çeşitli dahili iş akışlarına NLP çözümleri sundu. Doktora derecesini 2017 yılında Urbana-Champaign'deki Illinois Üniversitesi'nden aldı.

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Xiaofei Ma AWS AI Laboratuvarlarında Uygulamalı Bilim Yöneticisidir. 2016 yılında SCOT organizasyonunda Uygulamalı Bilim Adamı olarak Amazon'a katıldı ve daha sonra 2018'de Amazon Kendra üzerinde çalışarak AWS AI Laboratuvarlarına katıldı. Xiaofei, Kendra, Contact Lens ve en son CodeWhisperer ve CodeGuru Security dahil olmak üzere çeşitli hizmetlerde bilim yöneticisi olarak görev yapıyor. Araştırma ilgi alanları AI4Code ve Doğal Dil İşleme alanındadır. Doktora derecesini 2010 yılında Maryland Üniversitesi, College Park'tan aldı.

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Murali Krishna Ramanathan AWS AI Laboratuvarlarında Baş Uygulamalı Bilim Adamıdır ve yapay zeka destekli üretken bir kodlama yardımcısı olan AWS CodeWhisperer'ın eşbaşkanlarından biridir. Geliştirici üretkenliğini artırmaya yardımcı olacak yazılım araçları ve iş akışları oluşturma konusunda tutkulu. Geçmişte, eski özellik işaretleri nedeniyle kodu silmek için otomatik bir yeniden düzenleme aracı olan Piranha'yı geliştirdi ve Uber mühendisliğinde kod kalitesi girişimlerine liderlik etti. Google fakülte ödülü (2015), ACM SIGSOFT Seçkin makale ödülü (ISSTA 2016) ve Maurice Halstead ödülünün (Purdue 2006) sahibidir. Doktora derecesini 2008 yılında Purdue Üniversitesi'nden Bilgisayar Bilimleri alanında aldı.

Kuruluşlar için kodlama yardımcılarını özelleştirme | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Ramesh Nallapati AWS AI Laboratuvarlarında Kıdemli Baş Uygulamalı Bilim Adamıdır ve AWS'de üretken bir yapay zeka destekli kodlama ortağı olan CodeWhisperer'ın ve Titan Büyük Dil Modellerinin ortak liderliğini yürütmektedir. İlgi alanları esas olarak Doğal Dil İşleme ve Üretken Yapay Zeka alanlarıdır. Geçmişte Ramesh, Kendra, Quicksight Q ve Contact Lens gibi birçok NLP tabanlı AWS ürününün sunulmasında bilim liderliği sağladı. Stanford, CMU ve IBM Research'te araştırma pozisyonlarında bulundu ve doktora derecesini aldı. 2006 yılında Massachusetts Amherst Üniversitesi'nden Bilgisayar Bilimi alanında.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi