Kasım 25, 2024

Play of Game

Türkiye'den ve dünyadan siyaset, iş dünyası, yaşam tarzı, spor ve daha pek çok konuda son haberler

AI sistemi, on yılı aşkın bir süredir kod sıralamada ilk iyileştirmeleri yapıyor – Ars Technica

AI sistemi, on yılı aşkın bir süredir kod sıralamada ilk iyileştirmeleri yapıyor – Ars Technica

Hiç şüphe yok ki, temel bilgisayar bilimi okuyan herkes, bir sıralama algoritması – sırasız bir öğe listesini alıp bunları artan veya azalan düzene sokan kod – tasarlamak için zaman harcamıştır. Bu ilginç bir zorluk çünkü bunu yapmanın pek çok yolu var ve insanlar bu sıralamayı olabildiğince verimli bir şekilde nasıl yapacaklarını bulmak için çok zaman harcadılar.

Sıralama o kadar basittir ki, algoritmalar programlama dillerinin çoğu standart kitaplığında yerleşiktir. Ve LLVM derleyicisiyle birlikte kullanılan C++ kitaplığı söz konusu olduğunda, on yıldan uzun bir süredir koda dokunulmadı.

Ancak Google’ın DeepMind AI grubu, önce insan kodu örnekleri konusunda eğitim almadan yüksek düzeyde optimize edilmiş algoritmalar geliştirebilen bir pekiştirmeli öğrenme aracı geliştirdi. İşin püf noktası, onu programlamayı bir oyun olarak ele almaya hazırlamaktı.

Hepsi bir oyun

DeepMind, diğerlerinin yanı sıra, kendi kendine oyun oynamayı öğreten yazılımlar geliştirmesiyle tanınır. Bu yaklaşımın oldukça etkili olduğu kanıtlanmıştır, satranç kadar çeşitli oyunları fetheder, O giderVe Yıldız Gemisi. Detaylar, uğraştığı oyuna göre değişmekle birlikte, program kendi kendine oynayarak öğrenir ve skoru en üst düzeye çıkarmasını sağlayan seçenekleri keşfeder.

İnsanlar tarafından oynanan oyunlar konusunda eğitilmediği için DeepMind sistemi, insanların aklına gelmeyen oyunları oynamanın yollarını bulabilir. Elbette, her zaman kendi aleyhine oynadığı için, insanların yararlanabileceği kör noktalar geliştirdiği durumlar vardır.

Bu yaklaşım programlama ile yakından ilgilidir. Harika dil paradigmaları, çok sayıda insan örneği gördükleri için verimli kodlar yazarlar. Ancak bu nedenle, insanların daha önce yapmadığı bir şeyi geliştirmeleri pek olası değil. Sıralama işlevleri gibi iyi anlaşılan algoritmaları geliştirmek istiyorsak, bir şeyi mevcut insan koduna dayandırmak en iyi ihtimalle size eşdeğer performans sağlayacaktır. Ancak bir yapay zekanın gerçekten yeni bir yaklaşım seçmesini nasıl sağlarsınız?

READ  Gemini Live uygulaması zaten Samsung ve Pixel telefonlarda yayınlandı

DeepMind’daki insanlar, satrançta uyguladıkları yaklaşımı benimsediler ve O gider: Kod optimizasyonunu bir oyuna dönüştürdüler. AlphaDev sistemi, kod gecikmesini bir isabet olarak ele alan ve kodun hatasız tamamlanmasını sağlarken bu isabeti en aza indirmeye çalışan x86 derleme algoritmaları geliştirdi. Takviyeli öğrenme yoluyla AlphaDev, yüksek verimli ve sağlam kod yazma becerisini kademeli olarak geliştirir.

AlphaDev’in İçinde

Sistemin gecikmeyi iyileştirdiğini söylemek, nasıl çalıştığını açıklamaktan oldukça farklı bir konudur. Diğer çoğu karmaşık AI sistemi gibi, AlphaDev de birkaç farklı bileşenden oluşur. Biri, geliştirilmekte olan kodun genel performansını izleyen temsil işlevidir. Bu, algoritmanın genel yapısının yanı sıra x86 yazmaçlarının ve belleğin kullanımını içerir.

Sistem, bir kullanıcı tarafından seçilen montaj talimatlarını ayrı ayrı ekler. Monte Carlo ağacını bulun– yine, oyun sistemlerinden ödünç alınan bir yaklaşım. Bu yaklaşımın “ağaç” yönü, sistemin geniş bir olası talimat yelpazesinden sınırlı bir alana hızla daralmasına izin verirken, Monte Carlo o daldan seçilen kesin talimatlara bir derece rastgelelik ekler. (Bu bağlamda “yardım”ın, geçerli, eksiksiz bir derleme oluşturmak için seçilen belirli kayıtlar gibi şeyleri içerdiğini unutmayın.)

Sistem daha sonra derleme kodunun durumunu gecikme ve geçerlilik açısından değerlendirir ve ona bir puan atar ve bunu önceki puanın puanıyla karşılaştırır. Takviyeli öğrenme yoluyla, programın durumu göz önüne alındığında, ağacın farklı dallarının nasıl çalıştığıyla ilgili bilgileri ilişkilendirir. Zamanla, kazanan bir oyun koşulunu (sıralama tamamlandı) maksimum puanla, yani minimum gecikmeyle nasıl elde edeceğinizi “öğrenirsiniz”.

Bu sistemin ana yararı, eğitimin herhangi bir kod örneği içermesi gerekmemesidir. Bunun yerine, sistem kendi kod örneklerini üretir ve ardından bunları değerlendirir. Bu süreçte sıralamada hangi komut setlerinin etkili olduğu bilgisine takılır.

Yararlı kod

Karmaşık programlarda sıralama, büyük, gelişigüzel öğe gruplarını işleyebilir. Ancak standart kitaplıklar düzeyinde, yalnızca bir durumu veya birkaç durumu ele alan çok özel işlevlerden oluşan geniş bir kümeden oluşturulurlar. Örneğin, üç öğeyi, dört öğeyi ve beş öğeyi sıralamak için ayrı algoritmalar vardır. Ve maksimuma kadar isteğe bağlı sayıda öğeyi işleyebilen başka bir işlev grubu daha vardır – yani, dörde kadar öğeyi sıralayan bir tane arayabilirsiniz, ancak daha fazlasını değil.

READ  The Witcher yeniden çevrimini duyurdu - Gematsu

DeepMind, AlphaDev’i bu işlevlerin her biri için ayarlamıştır, ancak bunlar çok farklı çalışır. Belirli sayıda öğeyi işleyen işlevler için, değişkenin durumuna bağlı olarak farklı kodlar yürüttüğü dallar olmadan kod yazmak mümkündür. Sonuç olarak, bu kodun performansı genellikle gerekli talimatların sayısıyla orantılıdır. AlphaDev, tüm Sort-3, Sort-5 ve Sort-8 komutlarını ve hatta Sort-6 ve Sort-7’den daha fazlasını tıraş edebildi. İnsan kodunu geliştirmenin bir yolunu bulamadığı sadece bir tane (4. seviye) vardı. Kodun gerçek sistemlerde tekrar tekrar çalıştırılması, daha az talimatın daha iyi performansla sonuçlandığını gösterdi.

Değişken sayıda girişi sıralamak, kodda dallanmayı içerir ve farklı işlemciler, bu dalları işlemeye ayrılmış farklı miktarlarda donanıma sahiptir. Bu nedenle kod, 100 farklı cihazdaki performansına göre değerlendirildi. Burada yine AlphaDev, ekstra performansı sıkıştırmanın yollarını buldu ve bunu tek bir durumda nasıl yapacağımıza bir göz atacağız: dörde kadar öğeyi sıralayan bir işlev.

C++ kitaplığındaki mevcut uygulamada, kod, sıralamak için kaç öğeye ihtiyaç duyduğunu görmek için bir dizi test çalıştırır ve bu sayıda öğe için özel sıralama işlevini çağırır. Gözden geçirilmiş kod daha da garip bir şey yapar. İki öğe olup olmadığını test eder ve gerekirse bunları sıralamak için ayrı bir işlev çağırır. Sayı ikiden büyükse, kod ilk üçü sıralamak için çağırır. Üç öğe varsa, bu türden sonuçlar döndürülür.

Ancak, sıralanacak dört öğe varsa, sıralanmış üç öğelik bir dizide uygun yere dördüncü bir öğeyi yerleştirmede çok etkili olan özel bir kod çalıştırır. Bu garip bir yaklaşım gibi görünüyor, ancak sürekli olarak mevcut kodumdan daha iyi performans gösterdi.

üretimde

AlphaDev daha verimli kod ürettiğinden, ekip bunu LLVM standart C++ kitaplığına yeniden entegre etmek istedi. Buradaki sorun, kodun C++ yerine derlemede olmasıdır. Bu nedenle, geriye doğru çalışmak ve hangi C++ kodunun aynı derlemeyi üreteceğini bulmak zorunda kaldılar. Bu yapıldıktan sonra, kod LLVM araç zinciriyle birleştirildi – on yıldan uzun bir süredir kodun bir kısmı ilk kez değiştiriliyordu.

READ  PC'deki Original Doom artık yeni bir Mod aracılığıyla Raytracing'e sahip

Sonuç olarak, araştırmacılar AlphaDev kodunun artık günde trilyonlarca kez çalıştırıldığını tahmin ettiler.

Doğa, 2023. DOI: 10.1038/s41586-023-06004-9 (DOI’ler hakkında).