YOLO26 ile tanış: yeni nesil görsel AI.
Ultralytics
Ultralytics YOLO

Ultralytics'te YOLO modellerini favori çipinde nasıl daha hızlı hale getiriyoruz

Ultralytics'in YOLO modellerini CPU'lar, GPU'lar ve uç cihazlarda hız için nasıl optimize ettiğini öğren. Çipler, bellek ve niceleme (quantization), birleştirme (fusion) ve budama (pruning) gibi akıllı teknikleri açıklayacağız.

FRFrancesco Mattioli
8 min read
CPU'lar, GPU'lar ve uç çipler genelinde YOLO modellerini optimize etme

Ultralytics'te bilgisayarlı görü modelleri üretiyoruz; temel olarak bilgisayarlara görmeyi öğretiyoruz! Bu modelleri devasa matematiksel tarifler olarak düşünebilirsin. Bunlar operasyonlardan (biz bunlara katman diyoruz) ve ağırlık adını verdiğimiz devasa bir sayı yığınından oluşur.

Ultralytics YOLO modellerimiz görüntüleri gerçekte oldukları gibi, yani sayı dizileri olarak işler! Her piksel aslında sadece renk değerlerinden, yani görüntüyü oluşturan her bir nokta için Kırmızı, Yeşil ve Mavi (yani RGB) miktarlarından ibarettir. Bu sayı dizilerine "tensors" (tensörler) diyoruz çünkü bu, "sayı üstüne sayı dizilmiş" demekten veya "çok boyutlu matrisler" demekten çok daha havalı geliyor.

Modelimize bir görüntü verdiğinde, bu görüntü ağ boyunca destansı bir yolculuğa çıkar. Tensörünün katman katman süzüldüğünü, dönüştüğünü, kıvrıldığını ve matematiksel olarak mümkün olan en güzel şekilde harmanlandığını hayal et. Bunu, sayıların birbirine karıştığı ve bir kediyi kedi yapan ya da bir arabayı araba yapan şeyin özünü çıkardığı bir dans partisi gibi düşün. Bu sürece öznitelik çıkarımı diyoruz.

Diğer taraftan ne çıkıyor? Daha fazla sayı! Anlamlı sayılar. Tespit görevlerinde, bu sayılar sana görüntüdeki şeylerin tam olarak nerede olduğunu ve büyük ihtimalle ne olduklarını söyler. "Hey, (x, y) koordinatlarında bir köpek olma ihtimali %95!" Bu sihirli işleme çıkarım (inference) diyoruz.

Şimdi, modellerimiz sihirlerini gerçekleştirebilmeden önce okula gitmeleri, yani eğitilmeleri gerekiyor. Eğitim kısmı işlerin yoğunlaştığı yerdir.

Eğitim sırasında, ağa her görüntü sunduğumuzda sadece bir yanıt almıyoruz. İki adet fazlasıyla ağır işlem gerçekleştiriyoruz. İlk olarak, ağın ne kadar hatalı olduğunu hesaplıyoruz (buna kayıp diyoruz, temelde hedefin merkezinden olan uzaklık). İkinci ve önemli olan kısım ise, bu kayba dayanarak ağdaki her bir sayıyı (veya ağırlığı) güncelliyoruz. Bunu, her ayarın ağın her seferinde daha doğru sonuç vermesini sağlayacak şekilde hesaplandığı, aynı anda binlerce küçük düğmeyi ayarlamak gibi düşünebilirsin.

Ağı esasen düzeltme yoluyla eğitiyoruz: her hata ona neyi yapmaması gerektiğini öğretir ve tüm bu ağırlıkları, benzer bir görüntüyü tekrar gördüğünde doğru cevaba daha yaklaşacak şekilde ayarlarız. Temelde ağ, tahminleri tutturmaya başlayana kadar hata hata doğru yöne itilerek öğrenir.

Kaç sayıdan bahsediyoruz? Şirin küçük YOLO11n modelimizin birkaç milyon parametresi var. Peki ya YOLO11x? O canavar 50 milyondan fazla parametre ile çalışıyor! Daha fazla parametre, boya kalemleriyle çizim yapmak ile tam bir sanatçı paletine sahip olmak arasındaki fark gibi, kodlayabileceğin daha fazla detay anlamına gelir.

Çıkarım sırasında bu parametre sayısı kritik hale gelir. 3 milyon parametreli bir ağı çalıştırmak mahallede koşu yapmak gibidir. 50 milyon parametreli bir ağ mı? İşte bu, yanan meşalelerle jonglörlük yaparken maraton koşmaya benzer.

Peki hesaplama tam olarak NEDİR? Tüm bu sayı hesaplama işi aslında nasıl gerçekleşiyor? Bunu nasıl daha hızlı hale getiriyoruz? Ve "hesaplamayı optimize etmek" ne anlama geliyor?

Link to this sectionÇipler matematiği nasıl yapar#

Hesaplama çiplerle gerçekleşir. Silikondan yapılmış bu küçük kareler aslında evrenin en düzenli kumdan kaleleridir. Bilgisayarının yaptığı her bir işlem, her toplama, her karşılaştırma, her "eğer şu ise bu olsun" komutu fiziksel olarak silikona kazınmıştır. Çipin belirli alanlarında sayıları toplamak için ayrılmış gerçek fiziksel devreler ve mantık işlemleri için başkaları vardır. Farklı mahallelerin farklı matematik türlerinde uzmanlaştığı küçük bir şehir gibi.

Bir bilgisayar bilimcisi olsan bile bu kulağa tuhaf geliyor olabilir. Bunun nedeni, son 40 yılımızı, en alt plakayı bile göremeyeceğimiz kadar yükselen teknolojik bir lazanya gibi, üst üste soyutlama katmanları inşa ederek harcamış olmamızdır. İşleri o kadar basitleştirdik ki bugün çoğu programcı silikonda hesaplamanın gerçekte nasıl gerçekleştiğini bilmiyor. Kendi hataları değil, tasarım gereği!

Hadi bu katmanları soyalım. Şu çok basit Python kodunu ele alalım:

x = 1
if x == 1:
    y = x + 1

x adında bir değişken oluşturuyoruz, onu 1'e eşitliyoruz ve eğer x 1'e eşitse (sürpriz: öyle), y'yi x artı 1 değeriyle oluşturuyoruz. Üç satır. Kolay.

Ama işin ilginçleştiği yer burası. O üç masum satır ile silikonun içinden geçen gerçek elektronlar arasında EN AZ dört devasa çeviri katmanı gerçekleşiyor (aslında daha fazlası var ama Dijital İçerik Yöneticimiz kelime sayımın onda kaygı yarattığını söylüyor). Seni bu akıllara durgunluk veren yolculukta gezdireyim:

Katman 1: Python → Bytecode Öncelikle, Python kodunu okur ve bilgisayarların sindirmesi daha kolay olan ancak okumaya çalışsan gözlerini kanatacak ara bir dil olan bytecode'a derler.

Katman 2: Bytecode → Makine Kodu Python yorumlayıcısı (CPython gibi), o bytecode'u alır ve işlemcinin anladığı gerçek talimatlar olan makine koduna çevirir. İşte senin zarif "if x == 1" komutunun "YÜKLE register, KARŞILAŞTIR register, JUMP eğer sıfır bayrağı ayarlıysa" gibi bir şeye dönüştüğü yer burasıdır.

Katman 3: Makine Kodu → Mikro kod Hikayede ters köşe! Modern işlemciler makine kodunu bile doğrudan yürütmezler. Onu mikro koda, yani çipin iç bileşenlerinin işleyebileceği daha da küçük işlemlere ayırırlar. Tek bir "TOPLA" komutun birden fazla mikro işleme dönüşebilir.

Katman 4: Mikro kod → Fiziksel Elektronik Sonunda silikona ulaşıyoruz. Bu mikro işlemler, transistörlerden geçen gerçek elektrik sinyallerini tetikler. Milyarlarca küçük anahtar açılıp kapanır, elektronlar dikkatlice tasarlanmış yollardan geçer ve sihirli bir şekilde 1 + 1, 2 olur.

Her katman, altındaki katmanın çılgın karmaşıklığını gizlemek için vardır. Rus matruşka bebekleri gibi, tek farkla: her bebek tamamen farklı bir dil konuşuyor ve en küçük bebek kelimenin tam anlamıyla kuma hapsolmuş şimşekten yapılmış.

İronisi ne mi? O üç satırlık Python kodu muhtemelen MİLYONLARCA transistör anahtarını tetikliyor. Ancak bu soyutlamalar sayesinde bunların hiçbirini düşünmene gerek yok. Sadece "y = x + 1" yazıyorsun ve silikonun derinliklerinde bir yerde sihrin gerçekleştiğine güveniyorsun.

Link to this sectionMimari#

Her bir işlem silikonda fiziksel olarak uygulanır ve çip üzerinde NEREDE gerçekleşeceği tamamen çipin topolojisine bağlıdır. Elektronlar için şehir planlaması yapmak gibi. Toplayıcı burada yaşıyor, çarpıcı orada, ve hepsi birbirleriyle verimli bir şekilde konuşmak zorunda.

Piyasada her biri farklı amaçlar için tasarlanmış yüzlerce farklı çipimiz var. Bunların arasında ne değişiyor? Topoloji, yani işlemlerin fiziksel alanda nasıl konumlandırıldığı ve uygulandığı. İşte buna mimari diyoruz ve dostum, bunlardan elimizde çok var:

  • x86 (Intel ve AMD) - Masaüstü bilgisayarın büyükbabası, karmaşık ama güçlü
  • ARM - Telefonuna ve giderek artan bir şekilde dizüstü bilgisayarına güç veriyor, verimlilik için tasarlandı
  • RISC-V - Her yerde ilgi gören, açık kaynaklı asi
  • PowerPC - IBM'in canavarı, hala oyun konsollarında ve sunucularda çalışıyor
  • MIPS - Akademik favori, basit ve zarif
  • SPARC - Sun Microsystems'in (şimdi Oracle'ın) yüksek performanslı hesaplamaya katkısı
  • GPU mimarileri (NVIDIA'nın CUDA çekirdekleri, AMD'nin RDNA'sı) - Paralel işleme canavarları

Her mimari sadece transistörlerini farklı düzenlemekle kalmaz, aynı zamanda farklı bir dil konuşur. Bu makinelere talimat göndermek için kullandığımız soyutlamalar tamamen farklıdır. Birine yol tarifi yazman gerekiyor ama arabasına bağlı olarak Fransızca, Mandarin Çincesi veya pandomim diliyle yazman gerekiyor gibi.

Link to this sectionSilikonun kalp atışı#

Çiplerimizin yakıtı elektronlardır; çipin içine akan ve hesaplama için enerji sağlayan elektriktir. Ancak tek başına enerji yeterli değildir. Bir çipin gerçekten çalışması, veriyi karmaşık topolojisinde hareket ettirmesi için her şey tek bir kritik bileşene bağlıdır: saat. Elektronların belirli yollardan belirli zamanlarda akmasını sağlayan şey budur. O olmasaydı, hiçbir şey yapmayan enerjili silikonun olurdu.

Milyarlarca bileşenin mükemmel bir uyum içinde hareket etmesi gereken devasa bir performansı koordine etmeye çalıştığını hayal et. Bir ritim olmazsa, kaos olurdu. İşlemcin için saat tam olarak bunu yapar. İnanılmaz tutarlı bir oranda titreşen, saniyede milyarlarca kez elektrik sinyali gönderen bir kristaldir.

"3.5 GHz işlemci" duyduğunda, o GHz (gigahertz) saat hızıdır, yani saniyede 3.5 milyar vuruş. Her vuruşa saat döngüsü denir ve bu, hesaplamadaki temel zaman birimidir.

Saat döngüleri arasında HİÇBİR şey olmaz. Tüm bilgisayar bir sonraki vuruşu bekleyerek donar. Evrenin en uç "kırmızı ışık, yeşil ışık" oyunu gibi. Her "yeşil ışıkta" (saat sinyali):

  • Veri bileşenler arasında taşınır
  • Hesaplamalar yürütülür
  • Mantıksal kararlar verilir
  • Bellek okunur veya yazılır

Bazı işlemler tek bir döngü sürer (basit bir toplama), bazıları ise birçok döngü gerektirir (bölme veya RAM'den veri getirme). Milyarlarca bileşenin kendi özel operasyonlarını gerçekleştirdiği ve hepsinin bu amansız ritme senkronize olduğu hassas bir koreografidir.

Kristalin daha hızlı titreşmesini sağlayarak işlemcinize hız aşırtma (overclock) yapabilirsin; her şey daha hızlı gerçekleşir, ancak bu aynı zamanda daha fazla ısı üretir ve daha az kararlı hale gelir. Çok ileri gidersen, elektronlar ritme ayak uyduramadığı için bilgisayarın çöker.

Eskiden bu işlemler oda büyüklüğünde makinelerle yapılırdı. Ancak tüm bu hesaplamayı yapan bileşenler şaşırtıcı derecede basittir: sadece anahtarlardır. Açma-kapama anahtarları.

Yeterli sayıda anahtarı doğru düzende birbirine bağla ve işte hesaplama elinde. Tüm dijital devrim, sofistike bir anahtar düzenlemesine dayanır.

Bu basitlik, anahtarların varsa, herhangi bir anahtar, bir bilgisayar inşa edebileceğin anlamına gelir. İnsanlar su boruları ve valflerden, dominolardan, LEGO parçalarından, bilyelerden ve hatta Minecraft'ta redstone ile çalışan bilgisayarlar inşa ettiler.

Prensipler 1940'lardan beri değişmedi. Sadece anahtarları son derece küçük yapma konusunda inanılmaz iyi hale geldik. Telefonun, insanları aya gönderen tüm bilgisayarlardan daha fazla hesaplama gücüne sahip ve cebine sığıyor çünkü anahtarları atomik ölçekte nasıl yapacağımızı bulduk.

Milyonlarca parametreli sinir ağlarını çalıştırırken, bu küçük anahtarları saniyede milyarlarca kez, o kristal kalp atışına mükemmel bir şekilde senkronize ederek açıp kapatıyoruz. Her ağırlık güncellemesi, her matris çarpımı, her aktivasyon fonksiyonu, hepsi saatin ritmiyle yürür.

Modelleri eğitirken bilgisayarının sanki kalkışa geçmeye çalışıyormuş gibi ses çıkarmasına şaşmamalı!

Link to this sectionSinir Ağlarını VROOOOOM diye hızlandırmak#

Pekala, elimizde bir kristalin ritmine göre dans eden milyarlarca anahtarlı çipler var ve üzerinde milyonlarca parametreli sinir ağları çalıştırmak istiyoruz. Kolay olmalı, değil mi? Sadece sayıları çipe at ve gitsin!

Sinir ağlarını hızlı çalıştırmak, buzdolabının üç blok ötede olduğu, sadece bir tavanın olduğu ve her malzemenin 500 kilo ağırlığında olduğu bir mutfakta beş çeşit yemek pişirmeye çalışmak gibidir. Matematiğin kendisi en büyük sorun değil; sorun diğer her şey.

Link to this sectionMimari uyumsuzluğu#

Çoğu çip sinir ağlarını değil, Microsoft Word'ü çalıştırmak için tasarlandı. İşlemcin (CPU), ömrünü if-blokları, döngüler ve ara sıra vergilerini hesaplayarak (süper bilgisayarların bile duygusal olarak yıpratıcı bulduğu tek hesaplama) geçireceğini düşünerek üretildi. Ardışık işlemler için optimize edilmiştir: bunu yap, sonra şunu, sonra onu.

Ancak sinir ağları tamamen farklıdır. HER ŞEYİ AYNI ANDA yapmak isterler. Eğitim sırasında, tahminlerinin ne kadar hatalı olduğuna dayanarak milyonlarca ağırlığı güncellersin. Çıkarım sırasında (eğitilmiş modeli gerçekten kullanırken), veriyi milyonlarca hesaplama üzerinden aynı anda itersin. Bir milyon sayıyı başka bir milyon sayıyla çarpman gerektiğini hayal et. İşlemcin, iyi niyetli kalbiyle, onları birer birer yapmak ister; çok hızlı ama çok metodik bir muhasebeci gibi.

GPU'ların AI hesaplamasının bel kemiği olmasının nedeni budur. GPU'lar, milyonlarca pikselin rengini aynı anda hesaplaman gereken video oyunları için tasarlandı. Görünüşe göre, piksel renklerini hesaplamak ile sinir ağı matematiği yapmak şaşırtıcı derecede benzer: her ikisi de aynı işlemi devasa miktarda veri üzerinde paralel olarak yapmayı içeriyor.

Ama GPU'lar bile sinir ağları için mükemmel değil. Bu yüzden şirketler şimdi özelleşmiş AI çipleri (TPU'lar, NPU'lar ve PU ile biten her türlü kısaltma) inşa ediyor. Bu çipler tek bir iş için sıfırdan tasarlandı: sinir ağlarını hızlandırmak. Sadece tek bir yemek pişirmeyi bilen ama onu insanüstü bir hızla pişiren bir şef tutmak gibiler. İşlemcin matris işlemleriyle ardışık olarak boğuşurken ve GPU'n bunları paralel olarak oldukça iyi hallederken, bu özelleşmiş çipler matrisleri kahvaltıda, öğle yemeğinde ve akşam yemeğinde yer.

Link to this sectionBellek duvarı (Veya: Bitleri hareket ettirmek neden matematikten daha zordur)#

Modern sinir ağı hesaplamasında, veriyi gerçekte HESAPLAMAKTAN çok onu TAŞIMAK için daha fazla zaman ve enerji harcıyoruz.

Bilgisayar çipini, ışık hızında çalışan ancak tüm referans kitapları şehrin farklı binalarında saklanan dahi bir matematikçi gibi düşün. Her denklemi anında çözebilirler ama önce sayıları almaları gerekir ve bu yolculuk sonsuza dek sürer.

Çipin iki sayıyı bir saat döngüsünde çarpabilir (hatırla, saniyedeki milyarlarca vuruştan biri). Şimşek hızında! Ama o sayıları bellekten çipe getirmek? Bu YÜZLERCE döngü sürebilir. Matematikçinin bir problemi bir saniyede çözebilmesi ama kütüphaneye gidip gelmesinin beş dakika sürmesi gibi.

Nedeni mesafedir (ve alan). Elektrik hızlı hareket eder ama sonsuz hızlı değildir. Veri çip üzerinde ne kadar uzağa gitmek zorunda kalırsa o kadar uzun sürer. Bilgisayar tasarımcıları bunu, farklı mesafelerde birden fazla depolama konumuna sahip olmak gibi bir bellek hiyerarşisi yaratarak çözdüler:

  • Register'lar (doğrudan hesaplama birimlerinin içine yerleşik): Matematikçinin masası. Anında erişim! Ama çok küçük, burada sadece yaklaşık 32 sayı tutabilirsin. Hemen önünde yapışkan notlar olması gibi.
  • L1 Önbellek (mikrometrelerce uzakta): Ofisteki kitaplık. Bir şeyleri almak 3-4 döngü sürer. Burada birkaç bin sayı sığdırabilirsin.
  • L2 Önbellek (milimetrelerce uzakta): Koridorun sonundaki dosya dolabı. 10-15 döngü sürer ve birkaç milyon sayı sığabilir.
  • L3 Önbellek (çipin karşısında): Alt kattaki depolama odası. 30-50 döngü sürer, on milyonlarca sayıyı tutar.
  • RAM (tamamen farklı bir çip üzerinde): Şehrin öbür ucundaki depo. 100-300 döngü sürer. Milyarlarca sayının yaşadığı yer burasıdır.
  • SSD/Sabit Sürücü (kablolarla bağlı): Tamamen başka bir şehir. Milyonlarca döngü sürer. Devasa depolama, buzul hızı.

Kesin yapılar değişir, telefonunun çipi L3 önbelleğini atlayabilirken sunucu işlemcisinde devasa miktarlarda bulunabilir. Ancak prensip aynı kalır: daha yakın bellek daha hızlıdır ancak daha küçüktür.

Şimdi sinir ağları için can sıkıcı olan yer burası. Ultralytics YOLO modelinin 50 milyon parametresi olduğunu hayal et (bu arada ChatGPT milyarlarcasına sahip). Bu, bellekten hesaplama birimlerine gidip gelmesi gereken 50 milyon sayı demektir. Her sayı sadece 4 bayt olsa bile, sisteminden geçmesi gereken 200 megabaytlık veri demektir.

Çip her sayıyı tek bir döngüde işleyebilir, ancak o sayıyı RAM'den getirmek 100 döngü sürüyorsa, zamanının %99'unu teslimatı bekleyerek harcıyorsun demektir. Trafik sıkışıklığında Formula 1 yarış arabasına sahip olmak gibi. Tüm o hesaplama gücü, veri gelmesini bekleyerek öylece oturuyor.

İşte kritik içgörü: modern bilişimdeki en büyük darboğaz budur. Buna von Neumann darboğazı denir. Çipleri matematikte daha hızlı hale getirmek nispeten kolaydır. Belleği hızlandırmak ise fiziksel sınırlara çarpmaktır. AI'daki neredeyse TÜM performans optimizasyonunun bellek seviyesinde gerçekleşmesinin nedeni budur. Mühendisler sinir ağlarını hızlandırdıklarında, matematiği nadiren hızlandırırlar; veriyi daha az taşımanın, daha iyi önbelleğe almanın veya ona daha akıllıca erişmenin yollarını bulurlar.

Modern AI çipleri sadece hesaplama hızına odaklanmaz; bellek bant genişliği ve veri taşıma stratejilerine takıntılıdırlar. Veriyi önceden getirirler, önbellekte zaten bulunan değerleri yeniden kullanırlar ve bellek yolculuklarını en aza indirmek için hesaplamaları organize ederler. AI donanım yarışındaki kazananlar, en hızlı hesap makinelerine sahip olanlar değil; bu hesap makinelerini nasıl veriyle besleyeceğini bulanlardır. Tüm oyun, bellek erişim modellerini optimize etmek üzerinedir.

Her veri biti taşıdığında enerji harcarsın. Çok değil, pikojüllerden bahsediyoruz, ancak saniyede terabaytlarca veri taşıyorsan, bu HIZLA birikir. Aslında, veriyi çip üzerinde 1mm hareket ettirmek, gerçek hesaplamayı yapmaktan daha fazla enerji harcar!

Dizüstü bilgisayarının sinir ağlarını eğitirken jet motoru gibi ses çıkarmasının nedeni budur. Isıyı üreten matematik değildir; veri hareketidir. Her parametre güncellemesi, her gradyan hesaplaması, her ileri geçiş (forward pass) kelimenin tam anlamıyla odanı ısıtıyor.

Modern AI hızlandırıcıları temelde birer termodinamik egzersizidir. Çip erimeden önce ne kadar hesaplama sığdırabiliriz? Isıyı ne kadar hızlı uzaklaştırabiliriz? Hız aşırtma gibi, ama saat her zaman 11'de ve biz sadece yangın çıkarmamaya çalışıyoruz.

Link to this sectionÇözüm mü? Mimariden haberdar tasarım#

En hızlı sinir ağları mutlaka en zeki olanlar değildir, çipler düşünülerek tasarlanmış olanlardır. Şunları yaparlar:

  • Veriyi mümkün olduğunca yerel tutarlar
  • Hesaplamaları obsesif bir şekilde yeniden kullanırlar
  • Donanım yetenekleriyle mükemmel bir şekilde hizalanırlar
  • Bellek hareketini ne pahasına olursa olsun en aza indirirler

Bu, "yerel marketinden malzeme kullan" diyen bir tarif ile Tibet'ten baharat, Fransa'dan peynir ve Antarktika'dan su ithal etmeni gerektiren bir tarif arasındaki fark gibidir. İkisinin tadı da güzel olabilir ama biri kesinlikle daha pratiktir.

Ve işte sinir ağlarını hızlı hale getirmenin bir sanat biçimi olmasının nedeni budur. İyi matematiğe sahip olmak yeterli değildir; donanımı anlamalı, bellek hiyerarşisine saygı duymalı ve mimariyle mükemmel bir şekilde dans etmelisin.

Bilgisayar biliminin fizik, mühendislik ve saf büyücülükle buluştuğu dünyaya hoş geldin. Sayı taşımanın onunla hesaplama yapmaktan daha maliyetli olduğu bir yere. Paralelliğin hızlı, ancak senkronizasyonun ölüm olduğu bir yere. En büyük düşmanının karmaşıklık değil, mesafe olduğu bir yere.

Link to this sectionYOLO'yu nasıl hızlandırıyoruz#

Bir YOLO modeli eğittiğinde, eğitim kurulumunda harika çalışan bir sinir ağı elde edersin. Ama olay şu: oyun GPU'n, iPhone'un ve bir güvenlik kamerasındaki o küçük çip tamamen farklı diller konuşuyor. Farklı güçleri, farklı zayıflıkları ve veriyi nasıl işleyecekleri konusunda çok farklı fikirleri var.

Şöyle düşün: bir GPU, hepsi aynı anda çalışabilen binlerce çekirdeğe sahiptir – paralel işleme için üretilmiştir. Bu arada, bir mobil çip, özellikle AI operasyonları için tasarlanmış özel devrelere sahip olabilir ancak sadece belirli matematik türlerini işleyebilir. Kapı zilindeki o uç cihaz mı? Bir LED ampulden daha küçük bir güç bütçesiyle AI çalıştırmaya çalışıyor.

Ultralytics'te, bir düzineden fazla farklı dışa aktarma formatını destekliyoruz çünkü her biri farklı donanım için optimize edilmiştir. Bu, çok fazla seçeneğe sahip olmakla ilgili değil. SENİN özel ihtiyaçların için doğru seçeneğe sahip olmakla ilgilidir.

Link to this sectionOperasyonları birleştirmek: Azla daha fazlasını yapmak#

Orijinal YOLO modelinde birçok işlem ardışık olarak gerçekleşir. Örneğin, bir konvolüsyon yapıp sonra sonuçları normalize edip sonra bir aktivasyon fonksiyonu uygulayabiliriz. Bu üç ayrı adımdır ve her biri kendi bellek okuma ve yazma işlemlerini gerektirir.

Ama işin püf noktası şu: bu işlemleri tek bir adımda birleştirebiliriz. YOLO'yu dağıtım için dışa aktardığımızda, bu operasyonları birbirine kaynaştırıyoruz (fusing). Şunun yerine:

  1. Konvolüsyonu hesapla → Belleğe kaydet
  2. Bellekten yükle → Normalize et → Belleğe kaydet
  3. Bellekten yükle → Aktivasyon uygula → Belleğe kaydet

Şunu yapıyoruz:

  1. Konvolüsyon + normalizasyon + aktivasyonu hesapla → Belleğe kaydet

640×640 görüntü işleyen tipik bir YOLO modeli için bu basit hile, gigabaytlarca gereksiz bellek transferini ortadan kaldırır. Bir cep telefonunda bu, akıcı gerçek zamanlı tespit ile sinir bozucu gecikme arasındaki farktır.

Link to this sectionDaha küçük sayılar kullanmak: Niceleme (quantization) sihri#

YOLO, nesneleri doğru bir şekilde tespit etmek için aslında süper hassas sayılara ihtiyaç duymaz. Eğitim sırasında, her ağırlığı temsil etmek için 32 bit kullanıyoruz – bu, sandviç malzemelerini ölçmek için bilimsel hesap makinesi kullanmak gibidir. Gerçek dağıtım için mi? 8 bit gayet iyi iş görür.

Buna niceleme denir ve en güçlü optimizasyon tekniklerimizden biridir. Daha küçük sayılar kullanarak:

  • Model %75 küçülür (Ultralytics YOLO11x için 200MB'tan 50MB'a)
  • Çoğu cihazda 2-4 kat daha hızlı çalışır
  • Çok daha az güç tüketir (telefonunun bataryası sana teşekkür eder)

YOLO içindeki tüm katmanlar bu indirgemeye eşit derecede duyarlı değildir. Temel kenarları ve şekilleri tespit eden ilk katmanlar mı? Bunlar sağlamdır; 8-bit sayıları sorunsuzca kullanabiliriz. "Bu bir kedi mi yoksa köpek mi?" kararını veren son tespit katmanları biraz daha fazla hassasiyete ihtiyaç duyar. Bu yüzden hızı maksimize ederken doğruluğu korumak için gereken kadar bit kullanarak hassasiyeti katman katman ayarlarız.

Dikkatli bir niceleme ile Ultralytics YOLO'nun telefonlarda 3 kat daha hızlı çalışırken orijinal doğruluğunun %99,5'ini koruduğunu gördük. Bir araştırma modeli ile gerçek dünyada gerçekten kullanabileceğin bir şey arasındaki fark budur.

Link to this sectionEn iyi algoritmayı seçmek#

Aynı matematiksel işlemi gerçekleştirmenin düzinelerce farklı yolu vardır. Basit bir evrişim (YOLO'daki temel işlem) tamamen farklı algoritmalar kullanılarak hesaplanabilir ve en iyi seçim, donanımına ve girdi boyutuna bağlıdır.

YOLO'yu dışa aktardığımızda, optimizasyon çerçevemiz aslında farklı algoritmaları test eder ve senin özel durumun için en hızlı olanı seçer. Bu, aynı hedefe giden birden fazla rotaya sahip olmak ve mevcut trafik koşullarına göre seçim yapmak gibidir. GPU üzerinde, birçok pikseli aynı anda işleyen bir algoritma kullanabiliriz. CPU üzerinde ise sıralı işlem için optimize edilmiş bir algoritma kullanabiliriz. Matematik aynıdır, ancak uygulama stratejisi tamamen farklıdır.

Link to this sectionBellek: Gizli darboğaz#

Modern bilgi işlemde belleğin asıl darboğaz olduğu konusunu nasıl konuştuğumuzu hatırlıyor musun? Bu durum YOLO için özellikle geçerlidir. Model 50 milyon parametreye sahip olabilir ve çıkarım sırasında gigabaytlarca ara sonuç oluşturur. Tüm bu veriyi taşımak genellikle asıl hesaplamadan daha yavaştır.

Bellek hareketini en aza indirmek için birkaç numara kullanıyoruz:

Akıllı Zamanlama: İşlemleri, veriler hızlı önbellekteyken anında kullanılacak şekilde düzenliyoruz. YOLO'nun özellik piramidi ağı için bu, bellek trafiğini %40 azaltır.

Döşeme (Tiling): Tüm görüntüyü bir kerede işlemek yerine, onu önbelleğe sığan daha küçük döşemelere ayırıyoruz. Bu, işlemcinin yavaş ana bellekten sürekli veri çekmek yerine hızlı, yerel bellekle çalışabileceği anlamına gelir.

Tampon Yeniden Kullanımı: Ara sonuçlar için sürekli yeni bellek oluşturmak yerine, aynı bellek tamponlarını yeniden kullanıyoruz. Bu inanılmaz derecede verimlidir; YOLO'nun tüm omurgası sadece bir grup yeniden kullanılabilir tamponla çalışabilir.

Link to this sectionBudama: Az, çoktur#

Şaşırtıcı bir gerçek: YOLO modelleri genellikle gereğinden fazla tasarlanır. Birçok katmandaki kanalların %30'unu doğruluk üzerinde neredeyse hiçbir etkisi olmadan kaldırabiliriz. Bu sadece modeli küçültmekle kalmaz, aynı zamanda daha hızlı hale getirir, çünkü gerçekleştirilecek hesaplama sayısı kelimenin tam anlamıyla azalır.

Süreç zariftir: Ağın hangi bölümlerinin nihai tespit sonuçlarına en az katkıda bulunduğunu analiz eder, onları kaldırır ve ardından telafi etmek için modeli ince ayardan geçiririz. Budanmış bir YOLO11m modeli, orijinal doğruluğunun %99'unu korurken %30 daha hızlı olabilir. Pille çalışan cihazlarda bu verimlilik kazanımı, saatlerce fazladan çalışma süresi anlamına gelebilir.

Link to this sectionDonanım hızlandırma: Her çipin gücünden yararlanmak#

Farklı işlemciler farklı şeylerde iyidir ve performans farkları şaşırtıcıdır. Aynı YOLO11n modeli:

  • Modern bir Intel CPU üzerinde kare başına 45 milisaniye
  • NVIDIA RTX GPU üzerinde 4 milisaniye
  • Üst düzey bir telefon işlemcisinde 22 milisaniye
  • Google Coral edge TPU üzerinde 15 milisaniye sürer

Bunlar sadece saat hızlarından kaynaklanan hız farkları değil, temel mimari farklılıkları yansıtır. GPU'lar, YOLO'nun evrişimleri için mükemmel olan ve paralel çalışan binlerce çekirdeğe sahiptir. Mobil NPU'lar, özellikle sinir ağları için tasarlanmış özel devrelere sahiptir. CPU'lar ise her işi yapan, esnek ama uzmanlaşmamış işlemcilerdir.

Optimizasyonun anahtarı, YOLO'nun işlemlerini her çipin en iyi yaptığı işlerle eşleştirmektir. Bir GPU, aynı işlemi çok fazla veri üzerinde aynı anda yapmayı sever. Bir mobil NPU sadece belirli işlemleri destekleyebilir ancak bunları inanılmaz derecede verimli bir şekilde yürütür. Bir edge TPU ise sadece 8-bit tam sayılarla çalışır ancak bu kısıtlama dahilinde olağanüstü hızlara ulaşır.

Link to this sectionDerleme büyüsü#

Bir YOLO modelini dışa aktardığında, arka planda olağanüstü bir şey olur. Sadece dosya biçimini dönüştürmüyoruz; modeli hedef donanımın için özel olarak derliyoruz. Bu, Google Çeviri ile ana dili o dil olan bir konuşmacı arasındaki fark gibidir. Derleme süreci:

  1. Modelini analiz eder ve yapısını ile gereksinimlerini anlar
  2. Donanımının yeteneklerini göz önünde bulundurur – neyde iyi, neyde zorlanıyor
  3. Donanımının ana dilini konuşan optimize edilmiş kod üretir

Derleyici, işlemcinin önbelleğini daha iyi kullanmak için işlemleri yeniden düzenleyebilir, çipinin desteklediği özel komutları seçebilir veya hatta en iyi optimizasyon stratejisini bulmak için makine öğrenimini kullanabilir. Evet, AI'yı optimize etmek için AI kullanıyoruz; gelecek burada!

Bu derleme adımı, performansta 10 kat fark yaratabilir. Aynı YOLO modeli genel kodla sürünürken, uygun şekilde optimize edilmiş komutlarla uçabilir.

Link to this sectionGerçek dünya edge dağıtımı#

YOLO gerçek dünyayla, özellikle de edge cihazların zorlu dünyasıyla karşılaştığında ne olduğuna bakalım. 7/24 nesne tespiti için YOLO çalıştırması gereken bir güvenlik kamerası hayal et. Acımasız kısıtlamalarla karşı karşıyadır:

  • Bellek: Toplamda sadece 512MB ila 2GB RAM
  • Güç: Genellikle sadece 2-5 watt (bir telefon şarj cihazından daha az)
  • Soğutma: Fan yok, sadece pasif ısı dağıtımı
  • Güvenilirlik: Çökmeden sürekli çalışmalı

İşte pratikte optimizasyonun elde ettiği sonuç. YOLO11s çalıştıran bir güvenlik kamerası:

  • Orijinal model: 15 watt, 85°C'de ısınıyor, 20 FPS elde ediyor
  • Niceleme ve budama ile optimize edilmiş: 3 watt, rahat 45°C, 25 FPS elde ediyor

Güç tüketimini %80 azaltırken performansı aslında artırdık! Aşırı ısınan ve pilleri tüketen bir cihaz ile yıllarca güvenilir bir şekilde çalışan bir cihaz arasındaki fark budur.

İşin sırrı doğru takasları seçmektir. Edge cihazlarda genellikle şunları yaparız:

  • INT8 niceleme kullanırız (daha az hassasiyet, çok daha az güç)
  • Aktivite düşük olduğunda daha az kare işleriz
  • Isıyı yönetmek için işi farklı işlemcilere dağıtırız
  • Modelleri tamamen hızlı belleğe sığacak kadar küçük tutarız

Link to this sectionOptimizasyon süreci#

Ultralytics'te, optimizasyona sistematik bir yaklaşım izleriz. İlk olarak, zamanın aslında nerede harcandığını anlamak için modeli profilleriz. Çoğu zaman darboğazlar beklediğin yerlerde değildir. Belki zamanın %80'i sadece birkaç katmanda harcanıyordur veya bellek transferleri hesaplama süresine baskın geliyordur.

Daha sonra, optimizasyonları yinelemeli olarak uygularız:

  1. En büyük darboğazlarla başla
  2. Her seferinde bir optimizasyon uygula
  3. Hem hız iyileştirmesini hem de doğruluk etkisini ölç
  4. İyi takaslar sunan optimizasyonları koru
  5. Hedeflerimize ulaşana kadar tekrarla

Örneğin, bir telefonda YOLO11m dağıtımı ile:

  • Temel hat: Kare başına 200ms, 200MB model
  • Nicelemeden sonra: Kare başına 80ms, 50MB model
  • Budamadan sonra: Kare başına 60ms, 35MB model
  • İşlem birleştirmeden sonra: Kare başına 45ms, 35MB model

Her adım, orijinal doğruluğun %99'undan fazlasını korurken performansı artırır. Sonuç mu? Cebine sığan bir cihazda gerçek zamanlı nesne tespiti.

Link to this sectionGelecek: Heterojen bilgi işlem#

Modern cihazlar birden fazla işlemciyi birlikte kullanma konusunda daha akıllı hale geliyor. Telefonunda sadece bir işlemci yok, her biri farklı görevler için uzmanlaşmış birkaç işlemci var:

  • Kamera sensörü, ön işleme için bir ISP'ye (Görüntü Sinyali İşlemcisi) sahiptir
  • NPU (Sinir İşleme Birimi) YOLO çıkarımını çalıştırır
  • CPU karmaşık mantığı ve koordinasyonu yönetir
  • GPU sonuçları ekrana yansıtır

YOLO optimizasyonunun geleceği, modeli bu işlemciler arasında akıllıca bölmekle ilgilidir. Belki NPU ana evrişimleri halleder, CPU nihai tespit mantığını yapar ve GPU sonuçları görselleştirir. Her işlemci en iyi olduğu şeyi yapar ve tek bir işlemcinin başarabileceğinden daha verimli bir boru hattı oluşturur.

Sadece yeteneklerini değil, aynı zamanda aralarındaki veri taşıma maliyetini de göz önünde bulundurarak YOLO'yu mevcut işlemciler arasında bölmenin en iyi yolunu otomatik olarak bulan akıllı bölümleme algoritmaları geliştiriyoruz.

Link to this sectionÖzetle#

YOLO modellerini optimize etmek sadece dosya biçimlerini dönüştürmek değildir; en son teknoloji AI'yı gerçek dünyada gerçekten çalışan bir şeye dönüştürmektir. Niceleme (daha küçük sayılar kullanma), budama (gereksiz parçaları kaldırma), işlem birleştirme (adımları birleştirme) ve akıllı bellek yönetimi gibi tekniklerle, doğruluğu korurken 10-100 kat performans iyileştirmeleri elde ediyoruz.

Dikkat çekici olan ne mi? Evrensel bir "en iyi" optimizasyon yoktur. Sınırsız güce sahip bir bulut sunucusu, pille çalışan bir drone'dan farklı optimizasyonlara ihtiyaç duyar. Özel bir AI çipine sahip bir telefon, bir Raspberry Pi'den farklı bir işleme ihtiyaç duyar. İşte bu yüzden Ultralytics bu kadar çok dışa aktarma seçeneği sunuyor; her biri farklı senaryolar için optimize edilmiştir.

Tartıştığımız her optimizasyon tek bir amaca hizmet eder: bilgisayarlı görüyi her yerde erişilebilir kılmak. Akıllı bir kapı zili, bir drone uygulaması veya devasa bir bulut hizmeti oluşturuyor olsan, YOLO'yu kısıtlamaların dahilinde çalıştırmak için gerekli araçları sağlıyoruz.

Bir YOLO modelini Ultralytics ile dışa aktardığında, sadece bir dosya kaydetmiyorsun. Sinir ağlarını pratik hale getirme konusundaki yılların araştırmasından yararlanıyorsun. En son teknoloji bir AI modelini, gerçek donanımda, gerçek kısıtlamalarla, gerçek problemleri çözen bir şeye dönüştürüyorsun.

Ultralytics'te yaptığımız şey bu. AI araştırması ile pratik dağıtım arasındaki boşluğu dolduruyoruz. Bilgisayarlı görüyi her yerde çalışır hale getiriyoruz, çünkü AI'nın geleceği sadece en iyi modellere sahip olmakla ilgili değil; bu modelleri gerçek dünyada kullanışlı hale getirmekle ilgilidir.

Explore solutions

Real-time AI that works with your team

Robotikte AI

Daha akıllı makineleri Ultralytics YOLO modelleriyle destekle. Robotikteki Vision AI; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Lojistikte Yapay Zeka

Ultralytics YOLO modelleri ile lojistiği kolaylaştır. Görü Yapay Zekası; paket inceleme, ayıklama, araç takibi ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.

Daha fazla bilgi edin
Real-time AI that works with your team

Perakendede AI

Perakendeyi Ultralytics YOLO modelleri ile yeniden hayal et. Görü Yapay Zekası; envanter takibi, raf izleme, sıra yönetimi ve daha akıllı müşteri içgörüleri sağlar.

Daha fazla bilgi edin
Real-time AI that works with your team

Sağlıkta Yapay Zeka

Ultralytics YOLO modelleriyle sağlık çözümleri oluştur. Sağlıkta görüntü tabanlı yapay zeka; daha hızlı tıbbi görüntülemeyi, daha akıllı teşhisleri ve hasta izlemeyi güçlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Üretimde Yapay Zeka

Ultralytics YOLO modelleri ile üretimi optimize et. Görü Yapay Zekası; kalite kontrol, kusur tespiti, KKD uyumu ve montaj hattı otomasyonunu yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your operation

Otomotivde yapay zeka

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görü uygula. Görüntü tabanlı yapay zeka; yol güvenliğini, sürücü yardımını ve araç otomasyonunu daha akıllı yollar için geliştirir.

Daha fazla bilgi edin
Real-time AI tailored to your operation

Tarımda yapay zeka

Ultralytics YOLO modelleriyle akıllı tarıma görüntü tabanlı yapay zeka getir. Daha yüksek ve akıllı verimler için mahsul takibini, hayvancılık izlemeyi ve hassas tarımı güçlendir.

Daha fazla bilgi edin
Real-time AI that works with your team

Robotikte AI

Daha akıllı makineleri Ultralytics YOLO modelleriyle destekle. Robotikteki Vision AI; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Lojistikte Yapay Zeka

Ultralytics YOLO modelleri ile lojistiği kolaylaştır. Görü Yapay Zekası; paket inceleme, ayıklama, araç takibi ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.

Daha fazla bilgi edin
Real-time AI that works with your team

Perakendede AI

Perakendeyi Ultralytics YOLO modelleri ile yeniden hayal et. Görü Yapay Zekası; envanter takibi, raf izleme, sıra yönetimi ve daha akıllı müşteri içgörüleri sağlar.

Daha fazla bilgi edin
Real-time AI that works with your team

Sağlıkta Yapay Zeka

Ultralytics YOLO modelleriyle sağlık çözümleri oluştur. Sağlıkta görüntü tabanlı yapay zeka; daha hızlı tıbbi görüntülemeyi, daha akıllı teşhisleri ve hasta izlemeyi güçlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Üretimde Yapay Zeka

Ultralytics YOLO modelleri ile üretimi optimize et. Görü Yapay Zekası; kalite kontrol, kusur tespiti, KKD uyumu ve montaj hattı otomasyonunu yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your operation

Otomotivde yapay zeka

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görü uygula. Görüntü tabanlı yapay zeka; yol güvenliğini, sürücü yardımını ve araç otomasyonunu daha akıllı yollar için geliştirir.

Daha fazla bilgi edin
Real-time AI tailored to your operation

Tarımda yapay zeka

Ultralytics YOLO modelleriyle akıllı tarıma görüntü tabanlı yapay zeka getir. Daha yüksek ve akıllı verimler için mahsul takibini, hayvancılık izlemeyi ve hassas tarımı güçlendir.

Daha fazla bilgi edin
Real-time AI that works with your team

Robotikte AI

Daha akıllı makineleri Ultralytics YOLO modelleriyle destekle. Robotikteki Vision AI; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Lojistikte Yapay Zeka

Ultralytics YOLO modelleri ile lojistiği kolaylaştır. Görü Yapay Zekası; paket inceleme, ayıklama, araç takibi ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.

Daha fazla bilgi edin
Real-time AI that works with your team

Perakendede AI

Perakendeyi Ultralytics YOLO modelleri ile yeniden hayal et. Görü Yapay Zekası; envanter takibi, raf izleme, sıra yönetimi ve daha akıllı müşteri içgörüleri sağlar.

Daha fazla bilgi edin
Real-time AI that works with your team

Sağlıkta Yapay Zeka

Ultralytics YOLO modelleriyle sağlık çözümleri oluştur. Sağlıkta görüntü tabanlı yapay zeka; daha hızlı tıbbi görüntülemeyi, daha akıllı teşhisleri ve hasta izlemeyi güçlendirir.

Daha fazla bilgi edin
Real-time AI that works with your team

Üretimde Yapay Zeka

Ultralytics YOLO modelleri ile üretimi optimize et. Görü Yapay Zekası; kalite kontrol, kusur tespiti, KKD uyumu ve montaj hattı otomasyonunu yönlendirir.

Daha fazla bilgi edin
Real-time AI that works with your operation

Otomotivde yapay zeka

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görü uygula. Görüntü tabanlı yapay zeka; yol güvenliğini, sürücü yardımını ve araç otomasyonunu daha akıllı yollar için geliştirir.

Daha fazla bilgi edin
Real-time AI tailored to your operation

Tarımda yapay zeka

Ultralytics YOLO modelleriyle akıllı tarıma görüntü tabanlı yapay zeka getir. Daha yüksek ve akıllı verimler için mahsul takibini, hayvancılık izlemeyi ve hassas tarımı güçlendir.

Daha fazla bilgi edin

Yapay zekanın geleceğini birlikte inşa edelim!

Yolculuğuna makine öğreniminin geleceğiyle başla