Yapay Zeka Modelleri Nasıl Optimize Edilir?

Yapay Zeka Modellerini Nasıl Optimize Edebilirsiniz? [Video ve Sınav]

Kısa cevap: Yapay zeka modellerini optimize etmek için, öncelikle bir temel kısıtlama (gecikme, maliyet, bellek, kalite, kararlılık veya verimlilik) seçin, ardından herhangi bir değişiklik yapmadan önce güvenilir bir temel ölçüt belirleyin. Önce işlem hattındaki darboğazları ortadan kaldırın, ardından karma hassasiyet ve gruplandırma gibi düşük riskli kazanımlar uygulayın; kalite korunursa, derleyici/çalışma zamanı araçlarına geçin ve ancak o zaman gerektiğinde nicelleştirme veya damıtma yoluyla model boyutunu küçültün.

Önemli noktalar:

Kısıtlama: Bir veya iki hedef ölçüt seçin; optimizasyon, bedava kazanımlar değil, ödünleşmeler alanıdır.

Ölçüm: p50/p95/p99 ile gerçek iş yüklerinin profilini çıkarın; verimlilik, kullanım ve bellek zirvelerini ölçün.

İşlem hattı: Modele dokunmadan önce tokenizasyon, veri yükleyiciler, ön işleme ve gruplandırma işlemlerini düzeltin.

Sunum: Önbellekleme, planlı gruplandırma, eşzamanlılık ayarlaması kullanın ve son gecikmeyi yakından takip edin.

Güvenlik Önlemleri: Her performans değişikliğinden sonra altın standart uyarıları, görev ölçümlerini ve ani kontrolleri çalıştırın.

Yapay Zeka Modellerini Nasıl Optimize Edebilirsiniz? Bilgi Grafiği

🔗 Yapay Zeka Modellerini Etkili Bir Şekilde Değerlendirme:
Modelleri adil ve güvenilir bir şekilde değerlendirmek için temel kriterler ve adımlar.

🔗 Yapay zeka performansını gerçek ölçütlerle nasıl ölçersiniz?
Karşılaştırma için kıyaslama testlerini, gecikme süresini, maliyeti ve kalite sinyallerini kullanın.

🔗 Üretim öncesinde yapay zeka modellerini nasıl test edersiniz?
Pratik test iş akışı: veri bölme, stres senaryoları ve izleme.

🔗 Yapay zekayı içerik oluşturmak için nasıl kullanabilirsiniz?
Yapılandırılmış yönlendirmeler ve yinelemelerle fikirleri daha hızlı taslaklara dönüştürün.


1) "Optimize Etmek" Pratikte Ne Anlama Geliyor (Çünkü Herkes Farklı Şekilde Kullanıyor) 🧠

İnsanlar "yapay zeka modelini optimize etmek" dediklerinde şunları kastediyor olabilirler:

  • Daha hızlı hale getirin (gecikmeyi azaltın)

  • Daha ucuz hale getirin (daha az GPU saati, daha düşük bulut harcaması)

  • Daha küçük hale getirin (bellek kullanımı, uç nokta dağıtımı)

  • Daha doğru hale getirin (kalite iyileştirmeleri, daha az yanılgı)

  • Daha istikrarlı hale getirin (daha az varyans, üretimde daha az arıza).

  • Servis sürecini kolaylaştırın (verimlilik, parti işleme, öngörülebilir performans)

İşte biraz can sıkıcı gerçek: bunların hepsini aynı anda en üst düzeye çıkaramazsınız. Optimizasyon, bir balonu sıkmaya benzer; bir tarafını içeri iterseniz diğer tarafı dışarı fırlar. Her zaman olmasa da, sık sık böyle olur, bu yüzden ödünleşmeleri planlamanız gerekir.

Bu nedenle, herhangi bir şeye dokunmadan önce, öncelikli kısıtlamanızı:

  • Kullanıcılara canlı yayın yapıyorsanız, p95 gecikmesi (AWS CloudWatch yüzdelik dilimleri) ve kuyruk performansı ("kuyruk gecikmesi" en iyi uygulaması) sizin için önemlidir 📉

  • Eğer antrenman yapıyorsanız, kaliteye ulaşma süresi ve GPU kullanımına önem veriyorsunuz demektir 🔥

  • Cihazlara uygulama dağıtıyorsanız, RAM ve güç tüketimi 🔋


2) İyi Bir Yapay Zeka Model Optimizasyonunun Nasıl Göründüğü ✅

İyi bir optimizasyon sadece "nicelleştirmeyi uygula ve dua et" demek değildir. Bir sistemdir. En iyi kurulumlar genellikle şunlara sahiptir:

  • Güvenebileceğiniz bir temel ölçüt.
    Mevcut sonuçlarınızı tekrarlayamıyorsanız, herhangi bir iyileşme sağladığınızı bilemezsiniz. Basit... ama insanlar bunu atlıyor. Sonra da bir kısır döngüye giriyorlar.

  • Net bir hedef ölçütü olan
    "Daha Hızlı" ifadesi belirsizdir. "Aynı kalite puanında p95 gecikmesini 900 ms'den 300 ms'ye düşürmek" ise gerçekçi bir hedeftir.

  • Kalite için güvenlik önlemleri:
    Her performans artışı, sessiz bir kalite gerilemesi riskini taşır. Testlere, değerlendirmelere veya en azından bir kalite kontrol paketine ihtiyacınız var.

  • Donanım farkındalığı:
    Bir GPU'da "hızlı" çalışan bir model, başka bir GPU'da çok yavaş çalışabilir. CPU'lar ise kendine özgü bir tür kaostur.

  • Tekrarlayan değişiklikler, büyük bir yeniden yazma değil.
    Beş şeyi birden değiştirdiğinizde ve performans iyileştiğinde, nedenini bilemezsiniz. Bu da... rahatsız edici.

Optimizasyon, gitar akort etmeye benzemeli - küçük ayarlamalar, dikkatlice dinleme, tekrarlama 🎸. Eğer bıçaklarla hokkabazlık yapmaya benziyorsa, bir şeyler ters gidiyor demektir.


3) Karşılaştırma Tablosu: Yapay Zeka Modellerini Optimize Etmek İçin Popüler Seçenekler 📊

Aşağıda, yaygın optimizasyon araçları/yaklaşımlarının hızlı ve biraz dağınık bir karşılaştırma tablosu bulunmaktadır. Hayır, tamamen "adil" değil; gerçek hayat da öyle değil.

Araç / Seçenek Kitle Fiyat Neden işe yarıyor?
PyTorch torch.compile (PyTorch belgeleri) PyTorch kullanıcıları Özgür Grafik yakalama + derleyici hileleri, işlem yükünü azaltabilir… bazen gerçekten sihir gibi ✨
ONNX Çalışma Ortamı (ONNX Çalışma Ortamı belgeleri) Dağıtım ekipleri Ücretsiz sayılır Güçlü çıkarım optimizasyonları, geniş destek, standartlaştırılmış sunum için ideal
TensorRT (NVIDIA TensorRT belgeleri) NVIDIA dağıtımı Ücretli titreşimler (çoğu zaman paket halinde) Agresif çekirdek birleştirme + hassas işlem, tıklandığında çok hızlı
DeepSpeed ​​(ZeRO belgeleri) Eğitim ekipleri Özgür Bellek ve veri aktarım hızı optimizasyonları (ZeRO vb.). Bir jet motoru gibi hissettirebilir
FSDP (PyTorch) (PyTorch FSDP belgeleri) Eğitim ekipleri Özgür Parçalı parametreler/eğimler, büyük modelleri daha az korkutucu hale getirir
bitsandbytes niceleme (bitsandbytes) LLM mucitleri Özgür Düşük bit ağırlıkları, muazzam bellek tasarrufu - kalite değişiyor ama vay canına 😬
Damıtma (Hinton ve ark., 2015) Ürün ekipleri “Zaman maliyeti” Daha küçük öğrenci modeli, genellikle uzun vadede en iyi yatırım getirisini sağlayan davranışları miras alır
Budama (PyTorch budama eğitimi) Araştırma + üretim Özgür Gereksiz yükü ortadan kaldırır. Yeniden eğitimle birlikte kullanıldığında daha iyi sonuç verir
Flash Attention / kaynaştırılmış çekirdekler (FlashAttention kağıdı) Performans meraklıları Özgür Daha hızlı dikkat, daha iyi hafıza davranışı. Transformatörler için gerçek bir kazanç
Triton Çıkarım Sunucusu (Dinamik gruplama) Operasyonlar/altyapı Özgür Üretim ortamına hizmet verme, gruplandırma, çok modelli işlem hatları - kurumsal bir yapıya benziyor

Biçimlendirme hatası itirafı: "Fiyat" kelimesi düzensiz çünkü açık kaynak kodlu yazılımlar hala bir hafta sonunuzu hata ayıklamaya mal olabiliyor, ki bu da... bir bedel. 😵💫


4) Ölçümle Başlayın: Profilinizi Ciddi Bir Şekilde Oluşturun 🔍

Bu kılavuzdan sadece bir şey yapacaksanız, o da şu olsun: doğru ölçüm yapın.

Kendi testlerimde, en büyük "optimizasyon atılımları" şu kadar basit bir şeyi keşfetmekten kaynaklandı:

  • Veri yükleyici GPU'yu yetersiz besliyor

  • CPU ön işleme darboğazı

  • Çekirdek başlatma yüküne neden olan küçük parti boyutları

  • yavaş tokenizasyon (tokenizasyon yapanlar sessiz kötü adamlar olabilir)

  • Bellek parçalanması (PyTorch CUDA bellek ayırıcı notları)

  • tek bir katmanın hesaplamaya hakim olması

Ne ölçülmeli (minimum set)

  • Gecikme (p50, p95, p99) (Gecikme yüzdelik dilimleri üzerinde SRE)

  • İşlem hacmi (token/sn, istek/sn)

  • GPU kullanımı (işlem gücü + bellek)

  • VRAM / RAM zirveleri

  • 1000 token başına (veya çıkarım başına)

Pratik profil oluşturma zihniyeti

  • İlginizi çeken bir senaryoyu profillendirin (oyuncak önerisi olmasın).

  • Her şeyi küçük bir "performans günlüğüne" kaydedin.
    Evet, sıkıcı... ama daha sonra kendinizi kandırmaktan sizi kurtarır.

(Başlangıç ​​için somut bir araç istiyorsanız: PyTorch Profiler (torch.profiler belgeleri) ve Nsight Systems (NVIDIA Nsight Systems) en bilinen seçeneklerdir.)


5) Veri + Eğitim Optimizasyonu: Sessiz Süper Güç 📦🚀

İnsanlar model mimarisine takılıp kalıyor ve işlem hattını unutuyor. Bu sırada işlem hattı sessizce GPU'nun yarısını tüketiyor.

Hızlı sonuç veren kolay kazanımlar

  • Karma hassasiyet kullanın (kararlıysa FP16/BF16) (PyTorch AMP / torch.amp).
    Genellikle daha hızlıdır, çoğu zaman sorunsuz çalışır - ancak sayısal tuhaflıklara dikkat edin.

  • Toplu işlem boyutu sınırlı olduğunda gradyan birikimi ( 🤗 Hızlandırma kılavuzu ) Belleği aşırı kullanmadan optimizasyonu istikrarlı tutar.

  • Gradyan kontrol noktası oluşturma (torch.utils.checkpoint)
    Bellek yerine işlem gücü kullanır - daha büyük bağlamların mümkün olmasını sağlar.

  • Etkin tokenizasyon (🤗 Tokenizer'lar)
    Tokenizasyon, büyük ölçekte darboğaz haline gelebilir. Göz alıcı değil; ama önemli.

  • Veri yükleyici optimizasyonu:
    Daha fazla işçi, sabitlenmiş bellek, önbelleğe alma - gösterişsiz ama etkili 😴➡️💪 (PyTorch Performans Optimizasyon Kılavuzu)

Parametre açısından verimli ince ayar

Büyük modelleri ince ayar yapıyorsanız, PEFT yöntemleri (LoRA tarzı adaptörler gibi) şaşırtıcı derecede güçlü kalırken eğitim maliyetini büyük ölçüde azaltabilir (🤗 Transformers PEFT kılavuzu, LoRA makalesi). Bu, "Bunu neden daha önce yapmadık?" diyeceğiniz anlardan biri.


6) Mimari Düzeyde Optimizasyon: Modelin Boyutunu Doğru Ayarlayın 🧩

Bazen en iyi optimizasyon yöntemi... iş için çok büyük olan bir modeli kullanmayı bırakmaktır. Biliyorum, bu bir saygısızlık 😄.

Birkaç temel konuda karar verin:

  • Genel zekâya sahip birine mi yoksa uzmanlaşmış birine mi ihtiyacınız olduğuna karar verin.

  • Bağlam penceresini gerektiği kadar büyük tutun, daha büyük olmasına gerek yok.

  • Yapılacak iş için eğitilmiş bir model kullanın (sınıflandırma işleri için sınıflandırma modelleri vb.).

Pratik boyutlandırma stratejileri

  • Çoğu istek için daha küçük bir omurgaya geçin, ardından "zorlu sorguları" daha büyük bir modele yönlendirin.

  • İki aşamalı bir kurulum kullanın:
    Hızlı model taslakları, daha güçlü model doğrulamaları veya düzenlemeleri.
    Bu, titiz bir arkadaşla yazmaya benzer; sinir bozucu ama etkili.

  • Çıktı uzunluğunu azaltın.
    Çıktı belirteçleri para ve zaman maliyeti getirir. Modeliniz gereksiz yere uzarsa, bunun bedelini ödersiniz.

Bazı ekiplerin, daha kısa üretim süreleri uygulayarak maliyetleri önemli ölçüde düşürdüğünü gördüm. Küçük bir şey gibi görünebilir, ama işe yarıyor.


7) Derleyici + Grafik Optimizasyonları: Hızın Kaynağı 🏎️

Bu, "bilgisayarın daha akıllıca bilgisayar işleri yapmasını sağlama" katmanıdır.

Yaygın teknikler:

Basitçe söylemek gerekirse: modeliniz matematiksel olarak hızlı olabilir, ancak operasyonel olarak yavaş olabilir. Derleyiciler bunun bir kısmını düzeltir.

Pratik notlar (diğer adıyla izler)

  • Bu optimizasyonlar, model şeklindeki değişikliklere karşı hassas olabilir.

  • Bazı modeller çok hızlanıyor, bazıları ise neredeyse hiç hareket etmiyor.

  • Bazen hızlanma olur ve kafa karıştıran bir hata ortaya çıkar - sanki bir cin yerleşmiş gibi 🧌

Yine de, işe yaradığında, en temiz zaferlerden biri oluyor.


8) Nicelleştirme, Budama, Damıtma: Çok Ağlamadan Daha Küçük (Çok Fazla) 🪓📉

İnsanların istediği bölüm burası… çünkü ücretsiz performans gibi geliyor. Öyle de olabilir, ama ameliyat gibi ele almanız gerekiyor.

Nicelleştirme (düşük hassasiyetli ağırlıklar/aktivasyonlar)

  • Çıkarım hızı ve bellek açısından harika

  • Risk: Özellikle uç durumlarda kalite düşüşü

  • En iyi uygulama: Gerçek bir test veri seti üzerinde değerlendirme yapın, kişisel izlenimlere göre değil

Sıkça duyacağınız lezzetler şunlardır:

Budama (parametreleri kaldırma)

  • Önemsiz ağırlıkları veya yapıları kaldırır (PyTorch budama eğitimi).

  • Genellikle kaliteyi yeniden kazanmak için yeniden eğitime ihtiyaç duyar

  • Dikkatli yapıldığında, insanların düşündüğünden daha iyi sonuç veriyor…

Damıtma (öğrenci öğretmenden öğrenir)

Bu benim kişisel olarak en sevdiğim uzun vadeli kaldıraç. Damıtma, benzer şekilde davranan daha küçük bir model üretebilir ve genellikle aşırı nicelemeden daha kararlıdır (Sinir Ağında Bilginin Damıtılması).

Kusurlu bir benzetme: Damıtma, karmaşık bir çorbayı filtreden geçirip daha küçük bir çorba elde etmeye benzer. Çorba böyle yapılmaz ama sanırım ne demek istediğimi anladınız 🍲.


9) Sunum ve Çıkarım: Gerçek Savaş Alanı 🧯

Bir modeli "optimize" edebilirsiniz, ancak yine de kötü bir şekilde sunabilirsiniz. Gecikme ve maliyetin gerçek anlamda arttığı yer sunum aşamasıdır.

Önemli galibiyetler sunmak

  • Toplu işlem,
    verimliliği artırır. Ancak aşırıya kaçılırsa gecikmeyi de artırır. Dengeyi sağlayın. (Triton dinamik toplu işlem)

  • Önbellekleme
    , tekrarlanan bağlamlar için oldukça büyük boyutlara ulaşabilir. (KV önbellek açıklaması)

  • Akış çıktısı:
    Kullanıcılar, toplam süre benzer olsa bile daha hızlı olduğunu düşünüyor. Algı önemlidir 🙂.

  • Jeton bazında ek iş yükünün azaltılması:
    Bazı yığınlar, her jeton için fazladan iş yapar. Bu ek iş yükünü azaltırsanız büyük kazanç elde edersiniz.

Kuyruk gecikmesine dikkat edin

Ortalama değeriniz harika görünürken, P99 değeriniz felaket olabilir. Kullanıcılar maalesef kuyrukta yaşıyorlar. (“Kuyruk gecikmesi” ve ortalamaların neden yanıltıcı olduğu)


10) Donanım Odaklı Optimizasyon: Modeli Makineye Uyarlayın 🧰🖥️

Donanım hakkında bilgi sahibi olmadan optimizasyon yapmak, lastikleri kontrol etmeden yarış arabası ayarlamaya benzer. Elbette yapabilirsiniz, ama biraz saçma.

GPU ile ilgili hususlar

  • Sınırlayıcı faktör genellikle ham işlem gücü değil, bellek bant genişliğidir

  • Daha büyük parti miktarları bir süre yardımcı olabilir, ancak bir süre sonra işe yaramaz hale gelir

  • Çekirdek birleştirme ve dikkat optimizasyonları, transformatörler için çok önemlidir (FlashAttention: G/Ç'ye duyarlı kesin dikkat mekanizması).

CPU ile ilgili hususlar

  • Çoklu iş parçacığı kullanımı, vektörleştirme ve bellek yerelliği çok önemlidir

  • Tokenizasyon maliyeti baskın olabilir (🤗 “Hızlı” tokenizasyon araçları)

  • GPU'da kullandığınızdan farklı niceleme stratejilerine ihtiyacınız olabilir

Uç nokta / mobil hususlar

  • Bellek kullanımı birinci öncelik haline geliyor

  • Gecikme varyansı önemlidir çünkü cihazlar... değişkendir

  • Daha küçük, özel amaçlı modeller genellikle büyük, genel amaçlı modellere göre daha başarılıdır


11) Kalite Güvenlik Önlemleri: Kendinizi Bir Hataya Dönüştürmeyin 🧪

Her hız yarışması zaferi bir kalite kontrolüyle birlikte gelmeli. Yoksa kutlama yaparsınız, ürünü gönderirsiniz ve sonra "Asistan neden birdenbire korsan gibi konuşmaya başladı?" gibi bir mesaj alırsınız. 🏴☠️

Pragmatik güvenlik önlemleri:

  • Altın komutlar (her zaman test ettiğiniz sabit komut seti)

  • Görev ölçütleri (doğruluk, F1, BLEU, uygun olan herhangi bir ölçüt)

  • İnsan eliyle yapılan rastgele kontroller (evet, cidden)

  • Gerileme eşikleri ("en fazla %X düşüşe izin verilir")

Ayrıca arıza durumlarını da takip edin:

  • biçimlendirme kayması

  • reddetme davranışı değişiklikleri

  • halüsinasyon sıklığı

  • yanıt süresi enflasyonu

Optimizasyon, davranışı şaşırtıcı şekillerde değiştirebilir. Tuhaf bir şekilde. Sinir bozucu bir şekilde. Sonradan bakıldığında tahmin edilebilir bir şekilde.


12) Kontrol Listesi: Yapay Zeka Modellerini Adım Adım Nasıl Optimize Edebilirsiniz ✅🤖

Yapay Zeka Modellerini Nasıl Optimize Edeceğinize dair net bir işlem sırası istiyorsanız , işte insanların akıl sağlığını korumasına yardımcı olan iş akışı:

  1. Başarıyı tanımlayın.
    1-2 temel ölçüt seçin (gecikme süresi, maliyet, verimlilik, kalite).

  2. temel profilini ölçün
    , p50/p95 değerlerini, bellek kullanımını ve maliyeti kaydedin. (PyTorch Profiler)

  3. Veri yükleme, tokenizasyon, ön işleme, gruplandırma gibi işlem hattı darboğazlarını giderme

  4. Düşük riskli hesaplama kazanımları uygulayın:
    Karma hassasiyet, çekirdek optimizasyonları, daha iyi gruplandırma.

  5. Derleyici/çalışma zamanı optimizasyonlarını deneyin:
    Grafik yakalama, çıkarım çalışma zamanları, operatör birleştirme. (torch.compile eğitim kılavuzu, ONNX Çalışma Zamanı belgeleri)

  6. Model maliyetini düşürün
    . Dikkatlice nicelleştirin, mümkünse damıtın, gerekirse budayın.

  7. Sunucu
    ayarları, önbellekleme, eşzamanlılık, yük testi ve kuyruk gecikmesi düzeltmeleri.

  8. Kaliteyi doğrulayın.
    Regresyon testlerini çalıştırın ve çıktıları yan yana karşılaştırın.

  9. yapın
    , net notlar alın, tekrarlayın. Gösterişsiz - etkili.

Evet, bu hala "Yapay Zeka Modellerini Nasıl Optimize Edebilirsiniz " kitabı olsa da, "Tırmıklara basmaktan nasıl kurtulabilirsiniz" gibi hissettiriyor. Aynı şey.


13) Sık Yapılan Hatalar (Bizim Gibi Siz de Tekrarlamayın Diye) 🙃

  • Ölçüm yapmadan önce optimizasyon yapmaya
    kalkışırsanız zaman kaybedersiniz. Ve sonra da yanlış şeyi güvenle optimize edersiniz…

  • Tek bir ölçütü kovalamak...
    Ölçütler eksik bilgi vererek yanıltır. Gerçek, iş yükünüzdür.

  • Belleği göz ardı etmek Bellek
    sorunları yavaşlamalara, çökmelere ve titremelere neden olur. (PyTorch'ta CUDA bellek kullanımını anlamak)

  • Çok erken aşırı niceleme:
    Düşük bitli niceleme harika olabilir, ancak önce daha güvenli adımlarla başlayın.

  • Geri alma planı yoksa
    , hızlı bir şekilde geri dönemezseniz her dağıtım stresli hale gelir. Stres ise hatalara yol açar.


Kapanış Notları: İnsan Odaklı Optimizasyon Yöntemi 😌⚡

Yapay Zeka Modellerini Optimize Etme, tek bir çözüm yolu değil. Katmanlı bir süreç: ölçüm yapın, işlem hattını düzeltin, derleyicileri ve çalışma ortamlarını kullanın, sunumu ayarlayın, ardından gerekirse nicelleştirme veya damıtma ile modeli küçültün. Adım adım ilerleyin, kalite standartlarını koruyun ve "daha hızlı hissettiriyor" ölçütüne güvenmeyin (hisleriniz güzeldir, ancak hisleriniz bir performans analiz aracı değildir).

En kısa özeti istiyorsanız:

  • Önce ölçün 🔍

  • Sonraki adımda işlem hattını optimize edin 🧵

  • Ardından modeli optimize edin 🧠

  • Ardından servis optimizasyonunu yapın 🏗️

  • Kalite kontrollerini her zaman yapmaya devam edin ✅

Ve eğer yardımcı olacaksa, kendinize şunu hatırlatın: amaç "mükemmel bir model" değil. Amaç, hızlı, uygun fiyatlı ve geceleri rahat uyuyabileceğiniz kadar güvenilir bir model... çoğu gece 😴.

Gerçek dünya örneği: Destek talebi özetleyicisinin optimizasyonu 🎟️⚡

Senaryo

Küçük bir SaaS ekibinin, insan bir temsilci yanıt vermeden önce gelen destek taleplerini özetlemek için bir yapay zeka modeli kullandığını hayal edin. Model çalışıyor, ancak yavaş: temsilciler özetler için çok uzun süre bekliyor ve şirket çıkarım için beklenenden daha fazla para ödüyor.

Amaç, modeli her açıdan "daha iyi" hale getirmek değil. Ekip, tek bir temel kısıtlama seçiyor: özet kalitesini kabul edilebilir seviyede tutarken p95 gecikmesini azaltmak.

Hedefleri açık:

50 biletlik bir test setinde en fazla bir ciddi özet hatasıyla, p95 gecikmesini yaklaşık 2,4 saniyeden 1,2 saniyenin altına düşürdük.

İş akışının ihtiyaçları

Bunu uygulamaya geçirmek için ekip şu kişileri bir araya getiriyor:

Kısa, orta ve düzensiz biletlerden oluşan 50 biletlik altın test seti

Beklenen özet stili: 3 madde, uydurma bilgiler yok, aciliyet açıkça belli ise belirtin

Temel ölçümler: p50, p95, p99 gecikme süresi, üretilen token sayısı, bilet başına maliyet ve hata sayısı

Basit bir insan inceleme kontrol listesi

Model günlüklerine, belirteç sayılarına ve toplu işlem/eşzamanlılık ayarlarına erişim

Kalite düşmesi durumunda geri alma seçeneği

Önemli nokta şu: nicelleştirme ile başlamıyorlar. Öncelikle, işlem hattının zaman kaybına yol açıp açmadığını kontrol ediyorlar.

Örnek talimat

Her destek talebi için, müşterinin sorununu tam olarak üç madde halinde özetleyin.

Katmak:

  • ana sorun

  • bahsedilen herhangi bir ürün alanı

  • belirtilmişse, aciliyet veya işletme üzerindeki etkisi

Eksik ayrıntıları uydurmayın. Müşteri yeterli bilgi vermezse, "belirtilmemiş" deyin.

Özeti 80 kelimeyle sınırlı tutun.

Nasıl test edilir?

Aynı 50 bileti hem eski hem de yeni kurulumda çalıştırın.

Her çalıştırma için şunları kaydedin:

p50, p95 ve p99 gecikmesi

Ortalama çıktı belirteçleri

1.000 bilet başına maliyet

Uydurma ayrıntılar içeren özet sayısı

İnsan eliyle yeniden yazılması gereken özet sayısı

Ardından birkaç zorlu durumu test edelim:

Üç ayrı sorunu içeren bir bilet

Çok kızgın bir müşteri mesajı

Üzerinde neredeyse hiç detay bulunmayan belirsiz bir bilet

Yapıştırılmış günlük kayıtlarını içeren bir bilet

Müşterinin hesabını iptal ettiğini belirttiği bir destek talebi

Bu, optimizasyonun modeli daha hızlı hale getirmesi ancak daha az dikkatli hale getirmesi gibi yaygın bir hatayı yakalar.

Sonuç

Üç optimizasyon aşamasından önce ve sonra 50 örnek biletin zamanlamasına dayalı açıklayıcı sonuç:

Başlangıç ​​değeri:

p95 gecikmesi: 2,4 saniye

p99 gecikmesi: 3,1 saniye

Ortalama çıktı uzunluğu: 142 kelime

İnsan eliyle yeniden yazılanlar: 50 üzerinden 11

Ciddi uydurma detay hataları: 50 üzerinden 3

Optimizasyon sonrasında:

p95 gecikmesi: 1,1 saniye

p99 gecikmesi: 1,6 saniye

Ortalama çıktı uzunluğu: 61 kelime

İnsan eliyle yapılan düzeltmeler: 50 üzerinden 5

Ciddi uydurma detay hataları: 50'de 1

Neler değişti:

Ekip, çıktı uzunluğunu 80 kelimeyle sınırladı

Önceliksiz biletleri 8'erli gruplar halinde topladılar

Tekrarlanan ürün politikası bağlamlarını önbelleğe aldılar

Kalitenin korunduğunu doğruladıktan sonra karma hassasiyet moduna geçtiler

Gecikme hedefi zaten karşılandığı için nicelleştirmeyi sonraya bıraktılar

Bu örnekte maliyet de düştü çünkü model daha az belirteç üretti. Eski kurulum bilet başına yaklaşık 142 kelime üretirken, yeni kurulum yaklaşık 61 kelime ürettiyse, çıktı uzunluğu yaklaşık %57 azaldı. Bu, ekibin doğrudan günlüklerden doğrulayabileceği bir ölçümdür.

Neler ters gidebilir?

En cazip hata, yalnızca hıza odaklanmaktır. Para iadesi vaadi uyduran daha hızlı bir özet, bir iyileştirme değildir.

Diğer kolay hatalar:

Sadece temiz biletlerin test edilmesi

p99 gecikmesini göz ardı etmek

Çıktı uzunluğunu karşılaştırmayı unutmak

Gruplandırma ve model ayarlarını aynı anda değiştirme

Kuyruk gecikmesi yerine ortalama gecikmeyi kullanmak

İnceleme kontrol listesi olmadan "kalite aynı kaldı" iddiasında bulunmak

Daha güvenli bir inceleme kuralı basittir: 50 özetin 2'sinden fazlası önemli ayrıntıları uyduruyorsa, geri dönün ve araştırın.

Pratik çıkarımlar

İşte sağlam bir yapay zeka model optimizasyonunun pratikteki görünümü: bir kısıtlama seçin, mevcut sistemi ölçün, önce gereksiz unsurları kaldırın, düşük riskli değişiklikler uygulayın, ardından sıradan ama değerli testlerle kaliteyi kontrol edin. Kazanım sadece daha hızlı bir model değil. Güvenebileceğiniz daha hızlı bir model elde etmektir.

SSS

Yapay zeka modelini optimize etmenin pratikte anlamı nedir?

“Optimize etmek” genellikle birincil bir kısıtlamayı iyileştirmek anlamına gelir: gecikme süresi, maliyet, bellek kullanımı, doğruluk, kararlılık veya hizmet verimliliği. Zor kısım ise ödünleşmelerdir; bir alanı zorlamak diğerini olumsuz etkileyebilir. Pratik bir yaklaşım, net bir hedef (örneğin p95 gecikme süresi veya kaliteye ulaşma süresi) seçmek ve ona doğru optimize etmektir. Bir hedef olmadan, “iyileştirmek” kolaydır ve yine de kaybedebilirsiniz.

Kaliteyi sessizce düşürmeden yapay zeka modellerini nasıl optimize edebilirsiniz?

Her hız veya maliyet değişikliğini potansiyel bir sessiz gerileme olarak değerlendirin. Altın standart uyarılar, görev metrikleri ve hızlı insan kontrolleri gibi güvenlik önlemleri kullanın. Kabul edilebilir kalite sapması için net bir eşik belirleyin ve çıktıları yan yana karşılaştırın. Bu, "daha hızlı" ifadesinin, ürün piyasaya sürüldükten sonra "üretimde neden birdenbire garipleşti?" sorusuna dönüşmesini engeller.

Optimizasyona başlamadan önce neleri ölçmelisiniz?

Gecikme yüzdelik dilimleriyle (p50, p95, p99), verimlilikle (token/saniye veya istek/saniye), GPU kullanımıyla ve en yüksek VRAM/RAM değerleriyle başlayın. Maliyet bir kısıtlama ise, çıkarım başına veya 1000 token başına maliyeti takip edin. Oyuncak bir komut istemi değil, hizmet verdiğiniz gerçek bir senaryoyu profillendirin. Küçük bir "performans günlüğü" tutmak, tahmin yürütmekten ve hataları tekrarlamaktan kaçınmanıza yardımcı olur.

Antrenman performansında hızlı ve düşük riskli kazanımlar

Karma hassasiyet (FP16/BF16) genellikle en hızlı ilk adımdır, ancak sayısal tuhaflıklara dikkat edin. Toplu işlem boyutu sınırlıysa, gradyan birikimi bellek tüketimini artırmadan optimizasyonu dengeleyebilir. Gradyan kontrol noktası oluşturma, daha az bellek kullanımı karşılığında ekstra işlem gücü sağlar ve daha büyük bağlamlara olanak tanır. Tokenizasyon ve veri yükleyici ayarlarını göz ardı etmeyin; bunlar GPU'yu sessizce yetersiz bırakabilir.

torch.compile, ONNX Runtime veya TensorRT ne zaman kullanılır?

Bu araçlar operasyonel yükü hedef alır: grafik yakalama, çekirdek birleştirme ve çalışma zamanı grafik optimizasyonları. Temiz çıkarım hızlanmaları sağlayabilirler, ancak sonuçlar model şekline ve donanıma göre değişir. Bazı kurulumlar sihir gibi görünürken, diğerleri neredeyse hiç hareket etmez. Şekil değişikliklerine ve ara sıra ortaya çıkan "küçük aksaklıklara" karşı hassasiyet bekleyin - gerçek iş yükünüzde öncesi ve sonrası ölçümlerini yapın.

Nicelleştirmenin faydalı olup olmadığı ve aşırıya kaçmaktan nasıl kaçınılacağı

Nicelleştirme, özellikle INT8 ile bellek kullanımını azaltabilir ve çıkarım hızını artırabilir, ancak uç durumlarda kalite düşebilir. Daha düşük bit seçenekleri (INT4/k-bit gibi) daha yüksek riskle daha büyük tasarruf sağlar. En güvenli yöntem, sezgisel yaklaşımdan ziyade gerçek bir test kümesi üzerinde değerlendirme yapmak ve çıktıları karşılaştırmaktır. Önce daha güvenli adımlarla başlayın, daha sonra yalnızca gerekirse daha düşük hassasiyete geçin.

Model boyutunu küçültmek için budama ve damıtma arasındaki fark

Budama, "gereksiz" parametreleri ortadan kaldırır ve özellikle agresif bir şekilde yapıldığında, kaliteyi geri kazanmak için genellikle yeniden eğitim gerektirir. Damıtma, daha büyük bir öğretmenin davranışını taklit etmek için daha küçük bir öğrenci modelini eğitir ve aşırı nicelleştirmeye göre uzun vadede daha güçlü bir yatırım getirisi sağlayabilir. Benzer şekilde davranan ve istikrarlı kalan daha küçük bir model istiyorsanız, damıtma genellikle daha temiz bir yoldur.

Sunucu iyileştirmeleri yoluyla çıkarım maliyetini ve gecikmeyi nasıl azaltabiliriz?

Optimizasyonun somut hale geldiği yer sunucu kısmıdır: Toplu işlem, verimliliği artırır ancak aşırıya kaçılırsa gecikmeyi artırabilir, bu nedenle dikkatlice ayarlanmalıdır. Bağlamlar tekrarlandığında önbellekleme (komut önbellekleme ve KV önbellek yeniden kullanımı) çok büyük olabilir. Toplam süre benzer olsa bile, akış çıktısı algılanan hızı artırır. Ayrıca, yığınınızdaki belirteç bazında ek yükü de kontrol edin - belirteç başına küçük işler hızla birikir.

Yapay zekâ modellerini optimize ederken kuyruk gecikmesinin neden bu kadar önemli olduğu

Ortalama değerler harika görünürken, p99 felaket olabilir ve kullanıcılar genellikle en düşük gecikme süresini (kuyrukta) yaşarlar. Kuyruk gecikmesi genellikle titreşimden kaynaklanır: bellek parçalanması, CPU ön işleme artışları, belirteçleme yavaşlamaları veya kötü gruplama davranışı. Bu nedenle kılavuz, yüzdelik dilimlere ve gerçek iş yüklerine vurgu yapmaktadır. Sadece p50'yi optimize ederseniz, yine de "rastgele yavaş hissettiren" bir deneyim sunabilirsiniz

Referanslar

  1. Amazon Web Services (AWS) - AWS CloudWatch yüzdelik dilimleri (istatistik tanımları) - docs.aws.amazon.com

  2. Google - Büyük Ölçekte Kuyruk (kuyruk gecikmesi en iyi uygulama yöntemi) - sre.google

  3. Google - Hizmet Düzeyi Hedefleri (SRE Kitabı) - gecikme yüzdelikleri - sre.google

  4. PyTorch - torch.compile - docs.pytorch.org

  5. PyTorch - Tamamen Parçalanmış Veri Paralelliği (FSDP) - docs.pytorch.org

  6. PyTorch - PyTorch Profil Oluşturucu - docs.pytorch.org

  7. PyTorch - CUDA semantiği: bellek yönetimi (CUDA bellek ayırıcı notları) - docs.pytorch.org

  8. PyTorch - Otomatik Karışık Hassasiyet (torch.amp / AMP) - docs.pytorch.org

  9. PyTorch - torch.utils.checkpoint - docs.pytorch.org

  10. PyTorch - Performans Ayarlama Kılavuzu - docs.pytorch.org

  11. PyTorch - Budama Eğitimi - docs.pytorch.org

  12. PyTorch - PyTorch'ta CUDA bellek kullanımını anlama - docs.pytorch.org

  13. PyTorch - torch.compile öğretici/genel bakış - docs.pytorch.org

  14. ONNX Çalışma Ortamı - ONNX Çalışma Ortamı Dokümantasyonu - onnxruntime.ai

  15. NVIDIA - TensorRT Dokümantasyonu - docs.nvidia.com

  16. NVIDIA - TensorRT nicelleştirilmiş türler - docs.nvidia.com

  17. NVIDIA - Nsight Systems - developer.nvidia.com

  18. NVIDIA - Triton Çıkarım Sunucusu - dinamik gruplama - docs.nvidia.com

  19. DeepSpeed ​​- Zero Aşama 3 dokümantasyonu - deepspeed.readthedocs.io

  20. bitsandbytes (bitsandbytes-foundation) - bitsandbytes - github.com

  21. Hugging Face - Accelerate: Gradyan Biriktirme Kılavuzu - huggingface.co

  22. Hugging Face - Tokenleştiriciler dokümantasyonu - huggingface.co

  23. Hugging Face - Transformers: PEFT kılavuzu - huggingface.co

  24. Hugging Face - Transformers: KV önbellek açıklaması - huggingface.co

  25. Hugging Face - Transformers: “Hızlı” tokenleştiriciler (tokenleştirici sınıflar) - huggingface.co

  26. arXiv - Bir Sinir Ağında Bilginin Damıtılması (Hinton vd., 2015) - arxiv.org

  27. arXiv - LoRA: Büyük Dil Modellerinin Düşük Dereceli Uyarlaması - arxiv.org

  28. arXiv - FlashAttention: IO-Farkındalığı ile Hızlı ve Bellek Açısından Verimli Kesin Dikkat Mekanizması - arxiv.org

En Yeni Yapay Zeka Ürünlerini Resmi Yapay Zeka Asistanı Mağazasında Bulun

Hakkımızda

Yapay Zeka Model Optimizasyonu Sınavı
1. Optimizasyon iş akışınızda herhangi bir değişiklik yapmadan önce atmanız gereken en kritik ilk adım nedir?
2. Kullanıcılara canlı yayın yapıyorsanız, performans düşüşünü izlemek için en kritik metrikler hangileridir?
3. Modelin gereksiz yere uzun süre çalışmasını engelleyerek maliyetleri ve gecikmeleri azaltmak için bahsedilen, mimari düzeyde oldukça etkili bir strateji nedir?
4. Boyut küçültme işleminde aşırı nicelleştirme yerine damıtma yönteminin kullanılmasının başlıca avantajı olarak ne belirtilmektedir?
5. Ortalama gecikme süresi ölçütlerine tamamen güvenmenin yaygın bir optimizasyon hatası olarak kabul edilmesinin nedeni nedir?
Bloga geri dön

SSS

  • Yapay zekâ modellerini etkili bir şekilde optimize etmeye nasıl başlayabilirim?

    Öncelikle başarı kriterlerinizi tanımlayın ve gecikme süresi veya maliyet gibi odaklanacağınız 1-2 temel ölçütü seçin. Değişiklikler yapmadan önce gerçek iş yüklerini profilleme yoluyla temel performansınızı ölçün.

  • Yapay zekâ modellerini optimize ederken kaçınılması gereken yaygın tuzaklar nelerdir?

    Sık yapılan hatalar arasında ölçüm yapmadan optimizasyon yapmak, tek bir kıyaslama ölçütünü takip etmek, bellek kullanımını göz ardı etmek ve çok erken aşırı niceleme yapmak yer alır. Olası sorunları yönetmek için bir geri alma planınız olsun.

  • Gecikme süresini ve veri aktarım hızını ölçmek neden önemlidir?

    Gecikme süresini ve işlem hızını ölçmek, modelinizin gerçek iş yükü koşulları altındaki performansını anlamanıza yardımcı olur ve böylece darboğazları ve iyileştirme alanlarını belirlemenizi sağlar.

  • Model çıkarım hızını artırmak için hangi teknikleri kullanabilirim?

    Operasyonel verimlilik için karma hassasiyetli eğitim, çekirdek optimizasyonları, gruplandırma ve PyTorch torch.compile, ONNX Runtime veya TensorRT gibi özel araçların kullanımı gibi teknikleri göz önünde bulundurun.

  • Nicelleştirme model performansını nasıl etkiler?

    Nicelleştirme genellikle bellek kullanımını azaltır ve çıkarım hızını artırır. Bununla birlikte, özellikle düşük bit seçeneklerinde kalite kaybına da yol açabilir. Nicelleştirmeden sonra modeli gerçek bir test kümesi üzerinde değerlendirmek çok önemlidir.

  • Optimizasyon sürecinde kaliteyi korumak için hangi stratejileri uygulayabilirim?

    Testler için altın standartlar kullanmak, kabul edilebilir kalite sapmaları için regresyon eşikleri belirlemek ve model davranışındaki değişiklikleri izlemek için insan denetimi yapmak gibi kalite koruma önlemleri uygulayın.

  • Sunum ve çıkarım optimizasyonları kullanıcı deneyimini nasıl etkiler?

    Etkin gruplama ve önbellekleme gibi sunum optimizasyonları, verimliliği önemli ölçüde artırabilir ve algılanan gecikmeyi azaltarak yapay zeka modelinizle olan kullanıcı deneyimini doğrudan iyileştirebilir.

  • Model budama veya damıtma işlemlerini ne zaman düşünmeliyim?

    Kaliteyi korumak için yeniden eğitim sırasında önemsiz parametreleri kaldırmak üzere modelinizi budayın. Daha büyük bir modeli taklit eden ancak istikrarı koruyan daha küçük bir model oluşturmak istediğinizde damıtma tercih edilir.