Whisper benchmark'i: Nvidia RTX 4090 vs M1 Pro MLX
(owehrens.com)- Apple Silicon için MLX framework ile Whisper large modeli çalıştırılarak, 10 dakikalık ses transkripsiyonunda dizüstü bilgisayar ile yüksek performanslı GPU arasındaki fark karşılaştırıldı
- Varsayılan koşullarda M1 Pro MacBook 216 saniye, RTX 4090 ise 186 saniye sürdü; RTX 4090 yaklaşık 30 saniye, yani yaklaşık %16 daha hızlıydı
- RTX 4090 üzerinde insanely-fast-whisper kullanıldığında whisper-large-v3 transkripsiyonu 8 saniyeye kadar düştü; bu da model ve uygulama optimizasyonunun donanım karşılaştırmasını büyük ölçüde değiştirebildiğini gösteriyor
- macOS MPS çalıştırması 4 dakika 23 saniye sürdü; M2 Ultra 76 GPU çekirdeği ve M3 Max 40 GPU çekirdeği, M1’den çok daha hızlı olup birbirine benzer hızlar gösterdi
- Güç artışı, boşta duruma kıyasla RTX 4090 PC’de +242W, M1 Pro MacBook’ta +38W oldu; genel sonuçlar hassas bir benchmark değil, MLX performansı hakkında fikir veren bir karşılaştırma niteliğinde
MLX ile Whisper benchmark’i çalıştırma
- Apple, Apple Silicon için makine öğrenimi framework’ü MLX’i yayımladı; beraberinde gelen örneklerden Whisper benchmark için kullanıldı
- Mevcut Whisper benchmark deposuna yeni bir dosya eklendi ve daha önce indirilmiş
whisper largemodeliyle aynı ses dosyası transkribe edildi - Çalıştırma kodu
transcribe(audio=audio_file, model='large')çağrısını yaptıktan sonra başlangıç ve bitiş zamanları arasındaki farkla toplam süreyi ölçüyor - Dönen sonuç bir segment listesidir; her segmentte
avg_logprob,compression_ratio,start,end,text,tokensgibi alanlar bulunur - Bu sonuç yapısı, RTX 4090 üzerinde Python Whisper çalıştırıldığında elde edilenle aynıdır
Temel sonuçlar: M1 Pro ve RTX 4090
- 10 dakikalık ses dosyası için M1 Pro + MLX çalışma süresi
0:03:36.296329, yani yaklaşık 216 saniyedir - Aynı dosyada Nvidia RTX 4090 çalışma süresi
0:03:06.707770, yani yaklaşık 186 saniye olarak ölçüldü - RTX 4090, M1 Pro’dan yaklaşık 30 saniye daha hızlı; oran olarak yaklaşık %16 daha hızlı seviyede
- Ölçüm sırasında M1 Pro’nun tüm grafik çekirdekleri tamamen kullanıldı; diğer programlar kapatıldı ve masaüstü arka planı gibi öğeler de devre dışı bırakıldı
- Ancak Nvidia için optimize edilmiş bir model kullanılırsa RTX 4090’ın transkripsiyon süresi 8 saniyeye kadar düşüyor
Test donanımı
-
MacBook
- 14 inç MacBook M1 Pro, 2021 modeli
- 8 CPU çekirdeği: 6 performans çekirdeği, 2 verimlilik çekirdeği
- 32GB RAM
- 16 GPU çekirdeği
-
PC
- Intel Core i7-12700KF 8×3.60GHz
- RAM 2×32GB 3200MHz DDR4 Kingston FURY Beast
- Kingston KC3000 PCIe 4.0 NVMe 1000GB SSD
- Okuma 7000MB/s, yazma 6000MB/s
- GeForce RTX 4090 24GB GDDR6X, Palit RTX 4090 GameRock OmniBlack
insanely-fast-whisper’ın karşılaştırmayı değiştirmesi
- Hacker News yorumlarında, aynı 10 dakikalık dosyanın insanely-fast-whisper ve RTX 4090 ile çalıştırıldığı bir sonuç paylaşıldı
- whisper-large-v3 ile transkripsiyon 8 saniyenin altında tamamlandı; transkripsiyon başlamadan önceki model yükleme süresi de dahil edildiğinde süre 15 saniyeydi
- Daha sonra doğrudan çalıştırılan
insanely-fast-whisper --file-name audio.mp3 --flash Truekomutunda da 8 saniyelik transkripsiyon doğrulandı - Çıktı günlüklerinde Flash Attention 2 ile ilgili uyarılar ve GPU’ya taşıma ile ilgili uyarılar vardı, ancak transkripsiyon tamamlandı ve
output.jsonoluşturuldu - macOS’te
--device mps --batch-size 4ile çalıştırılabildi ve aynı dosyanın transkripsiyonu 0:04:23 sürdü
M2 Ultra ve M3 Max güncellemesi
- Ivan, aynı ses dosyasını M2 Ultra 76 GPU çekirdeği ve M3 Max 40 GPU çekirdeği üzerinde çalıştırdı
- İki sistem de M1 Pro’dan çok daha hızlı sonuçlar verdi ve birbirlerine benzer hızdaydı
- Karşılaştırma sayıları %100 kesin bir benchmark olarak görülmemeli; diğer süreçler, yükleme süresi, cold start ve warm start sonuçları etkileyebilir
Güç tüketimi ve ölçüm sınırlamaları
- Boşta durum ile GPU çalışırkenki durum arasındaki güç farkı Shelly priz ile ölçüldü
- PC, RTX 4090 çalışırken boşta duruma kıyasla +242W arttı
- MacBook, M1 GPU’nun 16 çekirdeği çalışırken boşta duruma kıyasla +38W arttı
- Güç ölçümü de %100 kesin bir değer olmaktan çok, yönü gösteren bir referans değere daha yakın
- Genel test, bilimsel bir ölçümden ziyade MLX framework’ünün ne düzeyde performans verebildiğini kabaca gösteren bir karşılaştırmadır
Gerçek kullanım arka planı
- Testin amacı, podcast arama motoru podpodgogo.com’un işletimiyle bağlantılı
- On binlerce podcast bölümünü transkribe edip tam metin aramasına uygun hale getiriyor ve bazı veri madenciliği işlemleri de yapıyor
- Güncelleme geçmişi
- 11 Aralık: Donanım özellikleri ve model yüklemesi olmayan ek testler eklendi
- 12 Aralık: RTX 4090 en hızlı tüketici tipi grafik kartı olarak özetlendi ve M2/M3 sayıları güncellendi
- 13 Aralık: Hacker News’te Nvidia için optimize edilmiş Whisper ile ilgili yorumlar doğrulandı
1 yorum
Hacker News yorumları
Whisper 4090 üzerinde çok verimsiz çalıştırılmadıysa, bu sonuç şüpheli görünüyor
Bende 3090 ve M1 Max 32GB var; Whisper denemedim ama Llama ve Stable Diffusion çıkarım performansı farkı çok büyüktü. Özellikle Stable Diffusion’da SDXL, 3090’da yaklaşık 9 saniye, M1 Max’te ise yaklaşık 1 dakika 10 saniye sürdü
İki model mimarisinin neredeyse hiçbir ortak yanı yok; Stable Diffusion, CLIP’in önceden eğitilmiş metin kodlayıcısını kullansa da bu da encoder-decoder transformer’dan oldukça farklı
Ayrıca bu yazı yeni Apple MLX framework’ünü ele alıyor, dolayısıyla Llama veya Stable Diffusion testlerinde muhtemelen kullanılmamış olabilir
Bunun donanım sınırı mı yoksa MLX kütüphanesindeki optimizasyon eksikliği mi olduğunu bilmiyorum; ancak bu kadar belirgin kullanım senaryosunu öylece göz ardı etmiş olmaları pek olası görünmüyor
Convolution’ların yüksek hassasiyet ve çok daha büyük tile kümeleri kullanması; tüm dönüşüm GPU’ya sığmadığında pahalı context switch’ler gerektirmesi daha makul geliyor
Bu yüzden aynı yazılım ve aynı model değilse Whisper performansı hakkındaki sezgilere çok temkinli yaklaşmak gerekiyor
Aynı olsa bile platforma özgü optimizasyonlar istendiği düşünüldüğünde, karşılaştırmanın anlamı hâlâ sınırlı
Bu, OpenAI Whisper deposunu kullanıyor gibi görünüyor
Düzgün bir karşılaştırma için 4090 üzerinde faster-whisper veya insanely-fast-whisper ile MLX karşılaştırılmalı
faster-whisper sıralı çalışıyor; insanely-fast-whisper ise sesi 30 saniyelik bölümlere ayırıp işliyor
Üretimde Whisper kullanıyoruz; önceki bölüm metnini dahil etmenin kaliteyi artırdığını düşündüğümüz için faster-whisper kullanıyoruz
Kabaca faster-whisper, OpenAI/whisper’dan genelde 4–5 kat daha hızlı; insanely-fast-whisper ise faster-whisper’dan tekrar 3–4 kat daha hızlı olabilir
Buradaki modeller kuantize model değil, hâlâ fp16 gibi görünüyor; bu yüzden daha da hızlanma payı var gibi
Düzenleme: CPU çıkarımını henüz desteklemediğini gördüm; eklenirse ilginç olur
5’e ayarlandığında hız karşılaştırmasını da görmek isterim; ideal olarak bu parametre kullanıcıya açılmalı
Ses kalitesi çok kötü olan kayıtlarla uğraştığım için transkripsiyon kalitesi önemli; kaliteyi feda eden hız karşılaştırmaları benim için pek anlamlı değil
Bu yazının özü, yeni yayımlanan Apple MLX’ten yararlanması ve kodun Apple’a özgü optimizasyonlar kullanması
https://news.ycombinator.com/item?id=38539153
Whisper’ın daha hızlı uygulamaları var
Düzenleme: Madem oltaya geldim, yazıda kullanılan 10 dakikalık dosyayı indirip 4090’da insanely-fast-whisper ile çalıştırdım; kurulum iki komutla bitti
whisper-large-v3 ile dosyanın transkripsiyonu 8 saniyeden kısa sürdü; transkripsiyon başlamadan önceki model yükleme süresi dahil edildiğinde 15 saniyeydi
Bu ek süre doğal olarak ses uzunluğuna bağlı değil
Bu durumda 4090, Apple’ın en yüksek performansından 6–12 kat hızlı demek
Zaten takacak bir gaming PC’niz varsa M2 Ultra’dan çok daha ucuz; içinde 4090 olan hazır bir PC’yi sıfır alsanız bile hâlâ daha ucuz
Şaşırtıcı değil; üst seviye Mac sahibi insanların cihazlarının her şeyi iyi yaptığına inanmak isteyen hüsnükuruntusunu çok görüyorum
Apple M serisi çipler çok etkileyici ve büyük RAM de harika, ancak yüksek performanslı makine öğrenmesinde Nvidia ile rekabet etmek zor
Mac’iniz varsa o Mac’in performansını kullanırsınız; gaming PC’niz varsa o PC’nin performansını kullanırsınız
İkisi de olsa bile büyük olasılıkla her gün kullandığınız cihazda çalışan yapay zekayı kullanırsınız
insanely-fast-whisper ile karşılaştırıldığında nasıl olacağını merak ediyorum: https://github.com/Vaibhavs10/insanely-fast-whisper
Optimizasyonları kullanmazsanız bire bir karşılaştırmanın mümkün olduğunu anlıyorum; ama o optimizasyon MLX’e taşınmadıysa hâlâ 4090 kullanmak daha iyi gibi görünüyor
Son zamanlarda MLX’e baktım; Mac’te kesinlikle popülerlik kazanacak gibi, Swift bağlamaları çıkarsa iOS’te de öyle olabilir: https://github.com/ml-explore/mlx/issues/15
Ancak şu anda C++20 derleme sorunları engel oluyor olabilir
Hangi donanım benchmark’ta kazanırsa kazansın, popüler bir modelse genelde inanılmaz derecede elle optimize edilmiş bir CUDA implementasyonu çıkar ve geri kalanını ezer
Nadir istisnalar da var; örneğin PyTorch’un torch.compile’a emek vermesi sayesinde AMD’de GPT-Fast’in belirli dar kullanım senaryolarında iyi çalışması gibi
Apple Silicon’da böyle bir istisna aklıma gelmiyor
Orijinal benchmark’ların ikisini de rahatça geçer gibi geliyor, ama batch size’ı 24’ten çok daha küçük tutmak gerekecek gibi
Günümüz ölçütlerine göre Whisper’ın gerçek zamanın 3–4 katında çalışması çok yavaş sayılır; bu benchmark’ı CPU’yla bile geçebilirsiniz
Bunun başka modellere de uygulanıp uygulanmadığını, yoksa Whisper’ın seri yapısı ve tamsayı işlemleri nedeniyle özellikle mi seçildiğini merak ediyorum
https://github.com/ml-explore/mlx-examples/tree/main/stable_... buna işaret ediyor gibi
4 çekirdek çağında fena değildi, ama modern çekirdek sayıları için mantıklı değil
GPU’ların bellek ölçeklenebilirliği tüketici tarafında bile çok daha iyi
Mac M1’de Whisper çalıştırmak kolay, ancak varsayılan durumda MLX kullanmıyor
MLX kullanmasını sağlamak için neyi kurup ayarlamam gerektiğini anlamaya bir iki saat harcadım; anlaşılmaz Python hataları ve Torch hataları aldım
Sonunda vazgeçip GPU’lu bir VM kiraladım ve Whisper’ı birkaç dakika içinde çalıştırabildim
MLX kullanmıyor ama Metal kullanıyor
X işi için mutlak olarak hangi seçimin en iyi olduğu konusunda çok tartışma olur, ama bu kadar düşük güç tüketimiyle bu seviyede performans elde edilmesi hoşuma gidiyor
Bunun yerine bu Whisper türevi depoyu kullanırsanız, çoğu GPU’da 1 saatlik ses bile 1 dakikanın altında yazıya dökülüyor: https://github.com/Vaibhavs10/insanely-fast-whisper
L4’te ctranslate2’yi batch size 4 gibi düşük bir değere ayarlasanız bile, flash attention 2 kullanan A100 hariç oradaki tüm benchmark’ları geçiyor
faster-whisper’a batch mode’un bir türlü eklenmemesi üzücü; bu yüzden insanlar ctranslate2’yi kolayca deneyemiyor gibi
https://github.com/SYSTRAN/faster-whisper gibi depoların neden özgün implementasyondan hızlı olduğunu hemen anlıyorsunuz; diğerleri de kuantizasyon hassasiyetini düşürüp hızlanıyor ama sonuçlar kötüleşiyor
Fakat bunun neden daha hızlı olduğu özellikle net değil
Çok daha hızlı olduğu düşünüldüğünde daha da merak uyandırıyor
Apple’ın Vision Pro’su düşünüldüğünde özellikle ilginç
Modelleri enerji verimli çalıştırabilmek dizüstülerde herkes için önemli olmayabilir, ama zaten çok güç tüketen bir başlık için büyük bir avantaj
Yardım almak istiyorum
İyi bir açık kaynak transkripsiyon ve konuşmacı ayrıştırma uygulaması ya da iş akışı var mı?
https://github.com/thomasmol/cog-whisper-diarization ve https://about.transcribee.net/’e baktım; ikisi de çökme gibi nedenlerle düzgün çalışmadı
MP3’ü Whisper’ın işleyebileceği parçalara bölüyor, sonra API’ye tek tek gönderip transkripsiyon yaptırıyorum
Şimdiye kadar beklendiği gibi çalışıyor ve birkaç satır Python kodu yeterli