Yüksek Performanslı Bilgi İşlemde Kod Geliştirme için Gelişmiş Yapay Zeka ve Erişimle Artırılmış Üretim

4


Hızla gelişen yazılım geliştirme alanında, sohbet robotları gibi yapay zeka araçları ve GitHub Yardımcı Pilotu geliştiricilerin kod yazma ve yönetme biçimini önemli ölçüde değiştirdi. Bu araçlar, üzerine inşa edilmiş büyük dil modelleri (LLM'ler), rutin kodlama görevlerini otomatikleştirerek verimliliği artırın.

Paralel hesaplama zorlukları

Bununla birlikte, paralel hesaplama kodu oluşturmada Yüksek Lisans'ların kullanılması, yüksek performanslı bilgi işlem (HPC) uygulamaları—zorluklarla karşılaştı. Paralel bilgi işlem uygulamaları, hem işlevsel programlamanın mantığı hem de kilitlenmelerden ve yarış koşullarından kaçınmak gibi birden fazla eşzamanlı işlemin yönetilmesiyle ilgili karmaşıklıkların incelikli bir şekilde anlaşılmasını gerektirir. Geleneksel yapay zeka modelleri, etkili bir şekilde seri kod üretebilir ancak eklenen bu karmaşıklıklar nedeniyle paralel yapılarda bocalar.

NVIDIA, yeni hızlandırılmış bilgi işlem yarı iletkenlerinin tasarımını destekleme bağlamında karmaşık kod üretirken de benzer bir zorlukla karşılaştı. Bu sorunu ele alan son derece alakalı çalışma, ChipNeMoSupercomputing 2023 sırasında yayınlandı. etki alanına uyarlanabilir ön eğitim (DAPT) ve geri almayla artırılmış nesil (RAG) mühendisler için bir EDA yardımcı pilotu üretme tekniklerini başarıyla uyguladı. DAPT'nin gelişmiş RAG teknikleriyle birleşimi, Sandia'daki bilim adamlarının karşılaştığı sorunla iyi bir şekilde örtüştü ve bir sonraki işbirliğini başlattı.

Bilim adamlarından oluşan bir ekip Sandia Ulusal Laboratuvarları kullanarak iddialı bir projeye girişti. NVIDIA NeMo Bu zorlukların üstesinden gelmek için nVolve-40K'ye (Gömme modeli) erken erişim gibi yazılım teklifleri. için özel olarak tasarlanmış özel bir kodlama asistanı geliştirdiler. Kokko'larPerformans açısından taşınabilir uygulamalar yazmak için size araçlar sağlayan bir C++ kitaplığıdır. Donanım karmaşıklıklarını soyutlar ve kodun farklı türdeki HPC mimarileri üzerinde verimli bir şekilde çalıştırılmasını sağlar.

Böyle spesifik bir görev için bir yapay zeka modeli oluşturmak, genellikle alana özgü bilgilerle bir temel modelin ince ayarını yapmayı gerektirir; bu, kaynak yoğun ve zaman alıcı bir süreçtir. HPC geliştiricileri, yazılım güncellemeleri ve hata düzeltmeleri konusunda çevik kalabilmek için genellikle daha esnek bir yaklaşımı tercih ediyor.

Bu asistan, yapay zekadaki en son gelişmeleri kullanarak doğru, bağlama duyarlı kod önerileri sunarak sizi desteklemeyi amaçlamaktadır.

Gelişmiş RAG'ın uygulanması

Sandia, NVIDIA ile iş birliği yaparak, devam eden veri seti değişikliklerine uyarlanabilen ve en son teknolojiye sahip modelleri piyasaya sürüldükten hemen sonra HPC iş yükleriyle entegre eden modüler bir iş akışını mümkün kılmak için gelişmiş bir RAG yaklaşımı geliştiriyor.

Buna göre Robert Hoekstra, Ph.D., Sandia'da Extreme Scale Computing'in kıdemli yöneticisi, ÖSandia da dahil olmak üzere çeşitli sektörlerdeki kuruluşlar, NVIDIA üretken yapay zeka ile değerli içgörülerin kilidini açarak kurumsal verilerinde anlamsal arama yapılmasına olanak tanıyor. Sandia ve NVIDIA, doğruluk ve performansı artırırken veri öngörülerini en üst düzeye çıkarmak için yeni ortaya çıkan üretken yapay zeka araçlarını değerlendirmek üzere iş birliği yapıyor.

Kullanan kapsamlı kod depolarını derleyerek Kokko'larSandia bilim insanları dinamik ve sürekli güncellenen bir veri kümesi oluşturdu. C programlama için özyinelemeli bir metin ayırıcı kullanılarak veri kümesi yönetilebilir parçalar halinde düzenlenebilir. Bu veri kümesi parçaları daha sonra vektör yerleştirmelerine dönüştürülür ve bir veritabanında depolanır; böylece ince ayardan daha az kaynak yoğun bir süreç elde edilir.

Bir sorgu yapıldığında, kosinüs benzerliklerine göre veritabanından ilgili kod parçalarını alan bir vektöre dönüştürülür. Bu parçalar daha sonra yanıt oluşturmak için bağlam sağlamak, gerçek dünyadaki kodlama kalıplarını ve çözümlerini içeren zengin, bilgilendirilmiş bir çıktı oluşturmak için kullanılır.

Akış şeması, LLM kullanıcı geçmişinden bağlamı içerecek şekilde genişletilen kullanıcı sorgusuyla başlar.  LLM'yi sorgulamak için beş benzer sorgu yeniden yazılmıştır.  Tüm sorgular, her biri için en iyi k belgeyi döndüren yerleştirme modeline beslenir.  Özel veriler parçalanır ve bir kayan nokta vektörü oluşturan bir yerleştirme modeline beslenir.  Kayan vektörler, vektör deposu yerleştirmeleri olarak depolanır ve anlamsal benzerliği belirler.  Çıktı sorguya göre yeniden sıralanır ve ilk 6 belge alınır.  Bu ilgili metin, nihai çıktı için yeniden yazılan sorguyla birlikte LLM'nin bağlamıdır.
Şekil 1. Kullanıcı sorguları için RAG teknikleri

RAG değerlendirmesi

Sandia'nın saf RAG'a yönelik ön değerlendirmesinde, oluşturulan kodun Sandia Kokkos geliştiricileri tarafından sağlanan standart kıyaslamalara göre etkinliğini değerlendirmek için BLEU, ChrF, METEOR ve ROUGE-L dahil çeşitli ölçümler kullanıldı. Cesaret verici bir şekilde, ilk sonuçlar RAG yaklaşımının uygulanmasıyla ölçekli ortalama değerlendirmelerde 3-4 puanlık bir artış olduğunu ortaya koydu.

Ölçeklendirilmiş ortalama = [100(BLEU+RougeL+CodeBLEU+METEOR)+ChrF]\eğik çizgi5

Gömme modelleri Yüksek Lisans'lar
BGE – büyük – EN – V 1.5 MISTRAL – 7B – TALİMAT – V0.2
E5 – taban – V2. KARIŞIM – 8X7V – TALİMAT – V 0.1
NVolve40K WIZARDCODER – 15B – V1.0
BAE – BÜYÜK – V1 MAGICOD ER – S – DS – 6.7 B.
Tablo 1. Test edilen yerleştirme modelleri ve açık kaynaklı LLM'ler
Modeli OSS ölçekli ortalama RAG ölçekli ortalama
mistralai-MIstral-7B-Instruct-v0.2 18.75 22.59
mistralai-Mixtral-8x7B-Instruct-v0.1 23.68 23.85
WizardLM_WizardCoder-15B-V1.0 25.01 28.61
ise-uiuc_MagicCoder-S-DS-6.7B 25.90 28.96
Tablo 2. Açık kaynaklı yazılım (OSS) yerleştirme modelleri ve LLM'lerin karşılaştırılması

Modüler HPC iş akışları için RAG sonuçları

Saf bir RAG işlem hattı uygulamasıyla küçük performans iyileştirmeleri sağlandı. Mixtral modeli (MoE mimarisi), eklenen Kokkos bağlamından önemli ölçüde etkilenmedi.

Üstün bir yerleştirme modeli bulunamadı. Bunun yerine, yerleştirme modellerinin ve LLM'lerin belirli eşleşmeleri en iyi sonuçları sunar.

Çoklu sorgu alımı için RAG

Sandia ekibi ayrıca ilgili içeriğin nasıl alınacağını hassaslaştırmak için gelişmiş RAG teknikleriyle deneyler yaptı.

Bu tekniklerden biri, özellikle kullanıcı sorgularının belirsiz olduğu veya belirli ayrıntılardan yoksun olduğu durumlarda, uygulanabilir kod parçacıklarına yönelik aramayı genişletmek için birden fazla ilgili sorgu oluşturmayı içeriyordu. Bu yöntem, oluşturulan kodun doğruluğunu ve kullanışlılığını artırarak daha alakalı bağlamın elde edilme olasılığını artırdı.

Grafik, Naive RAG c1024_o256'yı birkaç MultiQueryRetriever ile karşılaştırmaktadır - MQ_c1024_o256 yığın boyutu 1024 ve yığın örtüşmesi 256' MQ_c500_o100 yığın boyutu 500 ve yığın örtüşmesi 100;  ve MQ_c300_050 parça boyutu 300 ve parça örtüşmesi 50. Karşılaştırmalar BLEU, ChrF, CodeBLEU, METEOR, ROUGE-L metrikleri ve ölçek ortalaması içindir.  Orta boyutlu kod pasajı MQ_c500_o100, gelişmiş doğruluk ve kullanışlılık açısından diğer erişim yöntemlerine göre en tutarlı şekilde daha iyi (birkaç yüzde puan) puan aldı.
Şekil 2. Orta boyutlu kod örneklerine çoklu sorgu alımının uygulanması

Aşağıdaki örnek, bir sorguyu ve çoklu sorgu alıcısı tarafından oluşturulan oluşturulan sorguları gösterir.

Prompt: Create a Kokkos view of doubles with size 10 x 3

Generated Queries:

1. How can I create a Kokkos view of doubles with size 10 x 3?
2. How can I create a Kokkos view of doubles with size 10 x 3 and initialize it with random values?
3. How can I create a Kokkos view of doubles with size 10 x 3 and initialize it with values from a file?

Veri kümesi bağlamının zenginleştirilmesi

Sandia araştırmacıları aynı zamanda ana belge alma yaklaşımını da araştırıyorlar. Bu yaklaşımda veriler, genel bağlamı sağlayan büyük ana parçalara ve belirli ayrıntılara odaklanan daha küçük alt parçalara bölünür.

Bu strateji, alınan bilgilerin hem alaka düzeyini hem de kapsamlılığını optimize ederek, spesifiklik ihtiyacını bağlamın genişliği ile dengelemeye yardımcı olur.

Grafik, saf RAG c1024_o256'yı ParentDocumentRetrievers PD_parent-c1000_o200_child-c300-o0 ile ana yığın boyutu 1000 ana yığın örtüşmesi 200 alt yığın boyutu 300 alt örtüşmesi 0 ile karşılaştırır;  PD_parent-c500_o100_child-c200-o0 ana parça boyutu 500 ile üst parça örtüşmesi 100 alt parça boyutu 200 alt parça örtüşmesi 0;  ve PD_parent-c300_o75_child-c150-o0, ana parça boyutu 300 ana parça örtüşmesi 75 alt parça boyutu 150 alt parça örtüşmesi 0. Karşılaştırmalar BLEU, ChrF, CodeBLEU, METEOR, ROUGE-L metrikleri ve ölçek ortalaması içindir.  Veri kümelerini hem ana hem de alt parçalara, özellikle de en küçük boyutlara bölen bağlam zenginleştirme yaklaşımları, Kokkos'ta en önemli iyileştirmeleri sağladı.
Şekil 3. Veri kümelerini hem üst hem de alt kısa parçalara bölme

Aşağıdaki bilgi istemi örneği, veritabanında arama yapmak için kullanılan alt ve üst parçaları gösterir.

Prompt: Create a Kokkos view of doubles with size 10 x 3

Child Chunk:
// Create the Kokkos::View X_lcl.
const size_t numLclRows = 10;
const size_t numVecs = 3;
typename dual_view_type::t_dev X_lcl ("X_lcl", numLclRows, numVecs);


Parent Chunk:
// Create the Kokkos::View X_lcl.
const size_t numLclRows = 10;
const size_t numVecs = 3;
typename dual_view_type::t_dev X_lcl ("X_lcl", numLclRows, numVecs);

// Modify the Kokkos::View's data.
Kokkos::deep_copy (X_lcl, ONE);

{
lclSuccess = success ? 1 : 0;
gblSuccess = 0; // output argument
reduceAll<int, int> (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
TEST_EQUALITY_CONST(gblSuccess, 1);
if (gblSuccess != 1) {
return;
}
std::ostringstream os;
os << "Proc " << comm->getRank () << ": checkpoint 1" << std::endl;
std::cerr << os.str ();
}

HPC sonuçları için gelişmiş yapay zeka

Sandia ekibinin ilk değerlendirmeleri, BLEU (İki Dilli Değerlendirme Yardımcı Çalışması) ve ROUGE (Gisting Değerlendirmesi için Hatırlama Odaklı Yedek Çalışma) gibi standart NLP ölçümlerini kullandı.

Bununla birlikte, kod oluşturmaya daha iyi uyum sağlayan, özellikle geleneksel çıktı karşılaştırmalarına dayanmadan oluşturulan kodun sözdizimsel doğruluğunu ve operasyonel etkinliğini değerlendirebilen, daha özel bir değerlendirme metriğine olan ihtiyacın farkına vardılar.

Gelecekteki kod işlevselliğini geliştirme

Sandia bilim adamları, erişim yöntemlerini ve yapay zeka modellerini geliştirdikçe, kodlama asistanının yalnızca işlevsel olarak doğru değil, aynı zamanda bağlamsal olarak alakalı kod önerileri üretme becerisinde de daha fazla gelişme olacağını öngörüyorlar. Gelecekteki gelişmeler, NVIDIA mühendislerinin ChipNemo'da yaptıklarına benzer şekilde temel modelde ince ayar yapmaya, geri alma süreçlerini iyileştirmeye ve daha gelişmiş LLM'leri entegre etmeye ve kullanılabilir hale geldikçe yerleştirme tekniklerine odaklanacak.

HPC kod geliştirme için yapay zeka

Yapay zekanın özellikle yüksek performanslı bilgi işlem kapsamında kod geliştirmeye entegrasyonu, üretkenlik ve verimlilik açısından önemli bir ileriye doğru atılımı temsil ediyor. Konsept kanıtı, içindeki bazı tekliflerle çalışır NVIDIA NeMo Sandia ise bu dönüşümün ön saflarında yer alıyor ve yapay zekanın karmaşık bilgi işlem ortamlarında başarabileceklerinin sınırlarını zorluyor. Sandia, AI modellerini ve metodolojilerini sürekli olarak uyarlayıp geliştirerek, size yenilik yapma ve karmaşık sorunları çözme yeteneğinizi geliştiren güçlü araçlar sağlamayı amaçlamaktadır.

Bu gelişmiş RAG girişimi, yapay zekanın yazılım geliştirmedeki potansiyelini ortaya koyuyor ve teknoloji ilerlemesinde hedefe yönelik çözümlerin önemini vurguluyor.

Sandia, önemli GPU kaynakları gerektiren bu karmaşık yapay zeka modellerini barındırmak için hem şirket içi hem de harici bulut çözümlerini değerlendiriyor. Seçim, uygun donanımın mevcudiyetine ve Sandia ekipleri arasındaki kullanım ölçeğine bağlıdır. NVIDIA gibi satıcılarla ortaklık kurmak, özellikle konteyner sistemlerini Sandia'nın mevcut altyapısıyla entegre etme konusunda değerli destek sağlayabilir.

Daha fazla bilgi

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

ChipNeMo: Çip Tasarımı için Etki Alanına Uyarlanmış LLM'ler: Çip tasarımı için EDA komut dosyaları oluşturmak amacıyla RAG'ın nasıl kullanıldığına ilişkin bir açıklama içerir; bu, paralel kod için bir RAG modeli oluşturmaya yönelik bazı benzer özelliklere sahip bir zorluktur.

Kaynak: Nvidia

Doğrudan cihazınızda gerçek zamanlı güncellemeleri alın, şimdi abone olun.

Yorumlar