Yüksek Performanslı Bilgi İşlemde Kod Geliştirme için Gelişmiş Yapay Zeka ve Erişimle Artırılmış Üretim
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.
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.
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. |
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 |
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ı.
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.
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.