Bir dil modeline “yalnızca JSON üret” dediğinizde çoğu zaman JSON alırsınız; ama bazen model açıklama ekler, biçimi bozar veya hiç beklemediğiniz bir cevap verir. Prompt mühendisliği, model davranışını sihirli sözcüklerle kesin olarak programlamak değil, olasılıkları istenen yöne doğru itmektir. Bu ayrım önemlidir: Prompt bir sözleşmeye benzese de geleneksel programlama dilindeki katı bir komut değildir.
Devamı...
Programlama öğrenirken doğrudan boş bir editörle karşılaşmak bazen yüzme bilmeden havuza atılmaya benzer. Öğrenci problemi, sözdizimini, algoritmayı ve hata mesajlarını aynı anda yönetmeye çalışır. Worked example, yani adım adım açıklanmış çözülmüş örnek yaklaşımı, bu yükü azaltmayı amaçlar. Peki öğrenciye önce çözüm mü gösterilmeli, yoksa düşünmesi için önce problem mi verilmelidir?

Devamı...
Bir oyun dünyasını kare kare elle tasarlamak romantik görünebilir; ta ki milyonuncu ağacı yerleştirmeniz gerekene kadar! Prosedürel üretim, içeriği önceden saklamak yerine matematiksel kurallarla ihtiyaç anında oluşturur. Perlin gürültüsü ise rastgeleliğin kaotik görüntüsünü yumuşatarak dağlar, vadiler, adalar ve biyomlar üretmemizi sağlayan en kullanışlı araçlardan biridir.
Devamı...
Bir oyun çalışırken ekrandaki karakterler hareket eder, fizik hesaplanır, oyuncu girdileri okunur ve görüntü yeniden çizilir. Bütün bu işleri durmaksızın yöneten yapıya oyun döngüsü, yani game loop denir. Ancak ekran kartı saniyede 144 kare üretirken fiziğin aynı hızda güncellenmesi oyunu farklı bilgisayarlarda tutarsızlaştırabilir. Sağlam bir mimarinin sırrı, görüntüleme ile simülasyonu birbirinden ayırmaktır.

Devamı...
Programlama öğrenirken verilen ilk öğüt genellikle “Bol bol kod yaz” olur. Elbette klavyeyle arayı iyi tutmak önemlidir; fakat yalnızca kod yazarak ilerlemek, konuşmayı öğrenmek için sürekli monolog yapmaya benzer. Başkalarının kodlarını okumak ise farklı kelimeleri, anlatım biçimlerini ve problem çözme yollarını görmemizi sağlar. Bu nedenle kod okumanın kod yazmaktan önce gelmesi gerektiği fikri, tartışılmayı hak eden güçlü bir yaklaşımdır.

Devamı...
Bir işlemcinin saniyede milyarlarca komut çalıştırabilmesi etkileyicidir; fakat ihtiyaç duyduğu veriyi beklerken hiçbir şey yapamaması pek havalı değildir. Modern bilgisayarlarda L1, L2 ve L3 önbelleklerin bulunmasının temel nedeni bu beklemeyi azaltmaktır. Veriler işlemci çekirdeğinden uzaklaştıkça erişim süresi artar; kapasite büyürken hız katman katman düşer.
Devamı...

Bir yapay zekâ modelini telefonda çalıştırmak, taşınma günü dev bir koltuğu küçücük asansöre sokmaya benzer. Modelin milyarlarca parametresi belleği doldurur, hesaplamaları yavaşlatır ve pili neşeyle tüketir. Model kuantizasyonu, bu sayıları daha az bit kullanarak temsil eder; yani koltuğu parçalamadan, daha kompakt hâle getirir. Üstelik doğru uygulandığında modelin yeteneklerinin çoğu korunur.
Devamı...
Büyük bir restoranda her yemeği tek aşçının hazırladığını düşünün. Aşçı yetenekli olsa bile suşiden tatlıya kadar her konuda aynı derecede başarılı olması zordur. Mixture of Experts (MoE) mimarisi de benzer bir problemi çözer: Tek ve devasa bir sinir ağı yerine, farklı girdilerde uzmanlaşabilen alt ağlar kullanır. Üstelik her girdi bütün uzmanlara gönderilmez; bir yönlendirici, o girdi için en uygun birkaç uzmanı seçer.
Devamı...
Milyarlarca parametreye sahip bir dil modelini kendi verilerimizle eğitmek kulağa pahalı ekran kartlarıyla dolu bir veri merkezi gerektiriyormuş gibi gelebilir. LoRA, yani Low-Rank Adaptation, modelin tamamını değiştirmek yerine küçük ve eğitilebilir ek matrisler kullanarak bu maliyeti ciddi biçimde azaltır. Böylece tek bir güçlü tüketici ekran kartıyla bile alan odaklı modeller geliştirmek mümkün hâle gelir.
Devamı...
Bir işlemcinin komutları sırayla çalıştırmasına alışkınsanız, FPGA dünyası ilk bakışta biraz büyülü görünebilir. Verilog ile birkaç satır yazıyor, ardından kabloların, mantık kapılarının ve register’ların gerçekten oluşmasını sağlıyorsunuz. Ancak burada önemli bir ayrım var: Verilog, klasik anlamda donanıma ne yapacağını söyleyen bir yazılım dili değil; donanımın nasıl davranacağını ve bağlanacağını tanımlayan bir donanım tanımlama dilidir.

Devamı...
Bir karakterin zıpladığında süzülmesi, bir sandığın darbeyle kayması veya yarış arabasının virajda ağırlığını hissettirmesi yalnızca güzel animasyonlarla açıklanamaz. Oyuncunun “Bu nesne gerçekten ağır!” demesini sağlayan görünmez kahraman, fizik motorudur. Ancak iyi oyun fiziği her zaman gerçek dünyanın birebir kopyası değildir; çoğu zaman gerçekliğin kontrollü biçimde abartılmış, hızlandırılmış ve eğlenceli hâlidir.
Devamı...

Bir oyunda oyuncu, düşman, uçan düşman, zehirli uçan düşman derken sınıf ağacınız aile albümüne dönebilir. Entity-Component-System (ECS), bu karmaşaya farklı bir soru sorarak yaklaşır: “Bu nesne nedir?” yerine “Hangi verilere sahip ve hangi davranışlara katılıyor?” Böylece oyun nesneleri derin kalıtım zincirleriyle değil, küçük parçaların bir araya getirilmesiyle oluşturulur.
Devamı...

Bir televizyonun karıncalı ekranına uzun süre bakıp içinden bir kedi resmi çıkmasını beklemek pek mantıklı görünmeyebilir. Difüzyon modelleri ise tam olarak bunu yapar: Rastgele gürültüyle başlayan veriyi, öğrendikleri örüntüler sayesinde adım adım anlamlı bir görsele dönüştürür. Stable Diffusion ve benzeri üretken yapay zekâ sistemlerinin arkasındaki bu yaklaşım, kontrollü bir bozma ve onarma sürecine dayanır.
Devamı...
Programlamaya yeni başlayan bir öğrenci için kod çoğu zaman gizemli bir kutudur: Metin yazılır, “Çalıştır” düğmesine basılır ve ekranda ya doğru sonuç ya da kırmızı bir hata belirir. Debugger kullanmayı öğrenmek bu kutunun kapağını açar. Öğrenci yalnızca hatayı bulmayı değil, programın zaman içinde nasıl ilerlediğini, değişkenlerin nasıl dönüştüğünü ve bilgisayarın kodu hangi sırayla yorumladığını görmeye başlar.
Devamı...

Bir oyun karakteri duvarın içinden geçiyorsa, top zemine değmeden zıplıyorsa veya iki uzay gemisi birbirine çarpmasına rağmen yollarına devam ediyorsa suçlu çoğunlukla çarpışma tespitidir. Bilgisayarlar nesneleri gerçekten “görmez”; koordinatlar ve geometrik şekiller üzerinde yapılan matematiksel testlerle iki nesnenin temas edip etmediğine karar verir.
Devamı...
Bir parola denetimi yalnızca “doğru” veya “yanlış” cevabı veriyor gibi görünebilir. Fakat işlem süresi de istemeden bilgi taşıyorsa saldırgan, kapının anahtarını görmeden kilidin sesini dinleyebilir. Zamanlama saldırıları, yazılımın ne söylediğinden çok cevabı ne kadar sürede verdiğini inceleyen yan kanal saldırılarıdır.
Devamı...
Bir veritabanı sunucusu tam sipariş kaydedilirken kapanırsa ne olur? Para hesaptan düşmüş, fakat sipariş oluşmamış olabilir mi? Modern veritabanları bu korku filmini Write-Ahead Log (WAL) sayesinde mutlu sonla bitirir. WAL, değişiklikleri asıl veri dosyasına uygulamadan önce dayanıklı bir günlükte kaydederek sistemin çöküş sonrasında ne yaptığını hatırlamasını sağlar.

Devamı...
Uygulamanız büyüdükçe tek bir veritabanı sunucusu; işlemci, bellek, disk ve bağlantı sınırlarına yaklaşır. Daha güçlü bir sunucuya geçmek dikey ölçekleme olarak adlandırılır, ancak bunun hem fiziksel hem de ekonomik bir tavanı vardır. Sharding, satırları birden fazla bağımsız veritabanına dağıtarak yatay ölçekleme sağlar. Kısacası dev bir dosya dolabını büyütmeye çalışmak yerine, belgeleri düzenli biçimde farklı dolaplara yerleştiririz.
Devamı...

Klasik arama motorları kelimeleri eşleştirir; vektör veritabanları ise kelimelerin arkasındaki anlamı yakalamaya çalışır. Örneğin “uygun fiyatlı dizüstü bilgisayar” araması, metinde birebir “ucuz laptop” yazsa bile doğru sonucu bulabilir. Bu yeteneğin merkezinde embedding modelleri, benzerlik ölçümleri ve milyonlarca vektör arasında hızla komşu bulabilen özel indeksler bulunur.
Devamı...

Bir TCP bağlantısı, verileri mümkün olduğunca hızlı göndermek ister; fakat ağın gerçek kapasitesini doğrudan bilemez. Fazla temkinli davranırsa bant genişliği boşa gider, fazla saldırgan davranırsa yönlendirici kuyrukları dolar ve paketler kaybolur. TCP tıkanıklık kontrolü algoritmaları, işte bu görünmez sınırı tahmin etmeye çalışan trafik polisleridir. Reno’dan BBR’a uzanan yolculuk ise kaybı izlemekten ağ modellemeye geçişin hikâyesidir.
Devamı...