Techinside Google News
Techinside Google News

Yapay zekadaki gelişmeler, Python’u değişime itiyor!

Python var olan en popüler programlama dillerinden biri. Öğrenmesi ve kullanımı kolay, yıllardır ortalıkta dolaşıyor ve bu nedenle birbirlerini destekleyen geniş bir Python geliştirici topluluğu var.

Python, bu sayede de kullanıcıların ihtiyaç duydukları işlevlere erişmelerine olanak tanıyan bir kütüphane ekosistemi oluşturdu. Ancak bazı dezavantajları da var; programları yavaş çalışma eğiliminde ve süreçleri paralel çalıştırma konusunda verimsiz olduğu için en yeni yapay zeka (AI) programlarından bazılarına pek uygun değil.

Bu zorlukların üstesinden gelmeyi ümit eden bilgisayar bilimcisi Chris Lattner, Python’ın kullanım kolaylığını sunan ancak C++ veya Rust gibi daha karmaşık dillerin performansını sunan yeni bir dil olan Mojo’yu yaratmaya koyuldu. Ocak 2022’de Modular’ı oluşturmak için Google‘da çalışırken tanıştığı Tim Davis ile bir araya geldi. Lattner’in icra kurulu başkanı ve Davis’in ürün sorumlusu olduğu şirket, yapay zeka üzerinde çalışan ve gelişmekte olan şirketlere destek sağlıyor.

- Advertisement -

Lattner, modern bir yapay zeka programlama yığınının en üstünde Python’un bulunduğunu; ancak bunun verimsiz bir dil olması nedeniyle, uygulamayı yönetmek için altında C++’ın bulunduğunu söylüyor. 

C++’ın daha sonra performans hızlandırıcılarla veya grafik işlem birimleriyle (GPU’lar) iletişim kurması gerekiyor; böylece geliştiriciler, bu GPU’ları verimli bir şekilde kullanmak için Compute Unified Device Architecture (CUDA) gibi bir platform ekler. Lattner, “Mojo, ölçeği büyütüp küçültebilen birleşik bir çözüm oluşturabilmek için yığının bu üç farklı parçasını birleştirme ihtiyacından doğdu.” diyor.

Sonuç, Python ile aynı sözdizimine sahip bir dil, dolayısıyla Python’da programlamaya alışkın olan kişiler onu çok az zorlukla benimseyebilir, ancak bazı ölçümlere göre 35.000 kata kadar daha hızlı çalışabilir. Yapay zeka için Mojo, birçok sinir ağında kullanılan matris çarpımlarını gerçekleştirmede özellikle hızlı. Çünkü çarpma kodunu CUDA’yı atlayarak doğrudan GPU üzerinde çalışacak şekilde derler.

Lattner, programlama dilleri geliştirmeye yabancı değil. Illinois Üniversitesi’ndeki yüksek lisans tezi için kendisi ve bazı meslektaşları, diğer programları optimize etmek için bir dizi derleyici ve programlama aracı olan LLVM’yi yarattı. Ayrıca geliştiricilerin Apple’ın iOS işletim sistemi için kendi uygulamalarını yazmasına olanak tanıyan Apple için Swift programlama dilini de buldu.

en popüler programlama dili

Avustralya’nın Queensland Üniversitesi’nde bilgisayar bilimi fahri profesörü, ücretsiz kodlama kursları ve derin öğrenme uygulamaları için bir yazılım kütüphanesi sağlayan fast.ai şirketinin kurucu ortağı Jeremy Howard, çok fazla veri işleyen ve bu nedenle hızlı çalışması gereken sinir ağlarının uygulanması için Python’dan daha iyi bir şeye ihtiyaç duyulduğunu söylüyor. 

Aynı zamanda Modular’ın danışmanı olan Howard, genel olarak konuşursak, programcıların bu tür programları C, C++ veya Rust gibi dillerde yazdığını ve bu dillerin Python’dan 100.000 ila 1 milyon kat daha hızlı çalıştığını söylüyor. “Sorun şu ki, artık sinir ağınızı nasıl uygulayacağınızı düşünmekten başka pek çok şey yapmanız gerekiyor. Belleği tahsis etmek, onu yeniden serbest bırakmak ve dize sonlandırmayla uğraşmak gibi şeyleri düşünmeniz gerekiyor.” diyor. “C’de bir şey yazmak istersem, bu Python’da yazmaktan belki 10 kat, belki 100 kat daha uzun sürecektir.

Ek olarak GPU’lar ve Tensör İşleme Birimleri (TPU’lar), C tabanlı programları Merkezi İşlem Biriminin (CPU) yapabileceğinden çok daha hızlı çalıştırabilir. Ancak Howard, GPU veya TPU için C yazmanın CPU için yazmaktan daha zor olduğunu söylüyor. “Yani şimdi birkaç kat daha yavaş geliştirme süresinden bahsediyoruz.” Howard, kütüphanelerin gelişimi hızlandıracak kodlar sağlayabilmesine rağmen, diğer insanların halihazırda oluşturduğu operasyonlarla sınırlı olduğunu ve bunun da inovasyonu engelleyebileceğini savunuyor.

Bunların bilgisayar programcıları için yeterli zorluklar olduğunu ancak Python gibi genel halkın kullanabileceği bir dilin olması gerektiğini söylüyor. Howard, “Kodlar giderek artan bir şekilde bilgisayar programcıları tarafından yazılmıyor. Doktorlar, gazeteciler, kimyagerler ve oyuncular tarafından yazılıyor.” diyor. “Tüm veri bilimcileri kod yazar, ancak çok az veri bilimci kendilerini profesyonel bilgisayar programcıları olarak görür.

Mojo, Python’un bir üst kümesi olarak bu ihtiyacı karşılamaya çalışıyor. Şirket, Python’da yazılan bir programın Mojo’ya kopyalanabileceğini ve anında daha hızlı çalışacağını söylüyor. Hızlanma çeşitli faktörlerden kaynaklanıyor. Örneğin Mojo, diğer modern diller gibi, sıra yerine eşzamanlı olarak çalıştırılabilen küçük görevler olan iş parçacıklarını etkinleştiriyor. Mojo, Python’un yaptığı gibi kodu yürütmek için bir tercüman kullanmak yerine, kodu montaj diline dönüştürmek için bir derleyici kullanıyor. Ayrıca geliştiricilere veri öğelerini tanımlayan ve hata sayısını azaltan statik yazma seçeneğini kullanma seçeneği de sunuyor.

Python’u yavaşlatan faktörlerden biri, aynı anda yalnızca bir iş parçacığının yürütülmesine izin veren Global Tercüman Kilidi. Howard, Python’un 1990’ların başında yaratıldığı zaman bunun mantıklı olduğunu söylüyor, çünkü çoğu insanın çalışabileceği tek bir CPU çekirdeği vardı. Python’da bazı paralel süreçler oluşturmak mümkün olsa da bunu yapmak zahmetli ve Python birden fazla iş parçacığını verimli bir şekilde kullanamaz, dolayısıyla mevcut donanımın tüm avantajlarından yararlanamaz. Lattner, “Bir telefonun içinde sekiz CPU çekirdeği bulunur. Modern bir masaüstü bilgisayarın ise belki 16 tane olabilir. Bunlardan yalnızca birini kullanabiliyorsanız, bu, sistemin bilgi işlem gücünün 1/16’sını elde ettiğiniz anlamına gelir.” diyor.

Ek olarak şunu söylüyor: “Tercüman yerine derleyici kullanmak, büyük miktardaki yükü ortadan kaldırır.” Bu, bir programın kodu değiştirmeden 10 ila 20 kat daha hızlı çalışmasına olanak tanıyor. Diğer değişiklikler programların Python’da olduğundan yüzlerce veya binlerce kat daha hızlı çalışmasına olanak tanıyor. Şirket, farklı ölçeklerde aynı geometriye sahip bir fraktal şekil olan Mandelbrot kümesini oluşturmak için Mojo’yu kullandı. Pratik bir uygulama olmasa da bir ölçütü temsil ediyor ve Mojo, seti Python’dan 35.000 kat daha hızlı oluşturmayı başardı.

Python dinamik olarak yazıldığı için türler kodun derlenmesi yerine çalışma zamanına kadar kontrol edilmez, bu da programın yavaşlamasına neden olur. Mojo, geliştiricilerin isterlerse dinamik yazmayı kullanmaya devam etmelerine olanak tanıyor, ancak aynı zamanda statik yazma seçeneği de sunuyor. Lattner, “Statik davranış iyidir çünkü performansa yol açar. Statik davranış da iyidir çünkü daha fazla doğruluk ve güvenlik garantisi sağlar.” diyor.

Eklediği yeniliklerden biri, programcının programın çeşitli yönleri için bir dizi değer sağladığı otomatik ayarlama. Örneğin, bir döşemenin 2, 4, 8 veya 16 boyutunda olabileceğini veya belirli bir işlevin çeşitli yöntemlerden herhangi biriyle uygulanabileceğini belirtebilirler. Derleyici daha sonra bu değişkenlerin tüm farklı kombinasyonlarını uygular ve hangisinin en hızlı olduğunu görmek için bunları çalıştırır. Bu şekilde program, üzerinde çalışacağı donanıma göre otomatik olarak optimize edilebilir.

Python’u yaratan ve 2018’de bu rolden çekilene kadar dilin “hayırsever diktatörü” olarak bilinen programcı Guido van Rossum, Mojo’nun nasıl geliştiğini ve Lattner’ın büyük hedeflerine ulaşıp ulaşamayacağını izlemekle ilgilendiğini söylüyor. Mojo’nun bunu başarabileceğinden henüz emin değil ancak dilin ilk aşamalarında olduğunu ve Temmuz 2023 itibarıyla Mojo’nun henüz indirilmeye sunulmadığını vurguluyor.

Van Rossum, Mojo’nun C++ veya Rust’ta nasıl verimli kod yazılacağını zaten bilen deneyimli geliştiriciler için daha faydalı olabileceğini düşünüyor. “Yeni başlayan bir Python kullanıcısı, birdenbire Python’da olduğundan çok daha hızlı çalışan Mojo kodu türünü yazamaz.” diyor.

Mayıs ayında Modular, insanların kodla oynamasına olanak tanıyan etkileşimli bir geliştirme ortamı olan Jupyter not defterinde Mojo’yu bazı kullanıcılar için erişilebilir hale getirdi. Şirket, indirmelere 2023 sonbaharında izin verilmesini beklediğini (Linux için yerel olarak Eylül ayında ve MacOS için Ekim ayında piyasaya sürüldü), tam sürümün ise muhtemelen 2024 yazında yayınlanmasının beklendiğini söyledi.

Lattner, Python’un Mojo’da çalışmayan parçaları olabileceğini ancak bunların önemsiz olacağını söylüyor. Mojo’nun Python ile C++’ın C ile olan ilişkisiyle aynı şekilde ilişkili olduğunu, sınıflar ve şablonlar gibi eklemelerin C’yi daha yüksek seviyeli bir dile dönüştürdüğünü söylüyor. “C’de yazabileceğiniz, aynı şekilde çalışmayan veya C++’ta derlenmeyen programlar var, ancak bunlar o kadar küçük ki fark etmiyor. Aynı şey Mojo için de geçerli.” diyor. “Hedefimiz, önemli olan tüm durumlarda mümkün olduğunca uyumlu olmak ve mevcut ekosistemle çalıştığımızdan emin olmak. Çünkü Python’u kırmak istemiyoruz, Python’u daha iyi hale getirmek istiyoruz.”

Yeni programlama dilleri hakkında yazan bir yazılım mimarı olan Doug Meil, Mojo’nun aslında yapay zeka için Python++ olduğunu söylüyor. Meil, “Python’u desteklemek ve insanlarla bulundukları yerde tanışmak için çok çalışıyor, bence bu son derece pragmatik bir davranış.” diyor. “Tamamen yeni bir sözdizimi geliştirmiyorlar ve birden çok donanım platformunda ölçeklendirme açısından çok daha hızlı olacak. Yani bu gerçekten harika.

Siz bu konu hakkında ne düşünüyorsunuz? Görüşlerinizi yorumlarda paylaşın!

SON VİDEO

TÜMÜ

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

İlginizi çekebilir