2 poin oleh GN⁺ 2023-12-14 | 1 komentar | Bagikan ke WhatsApp
  • Menjalankan model Whisper large dengan framework MLX untuk Apple Silicon, lalu membandingkan selisih antara laptop dan GPU berperforma tinggi pada transkripsi audio 10 menit
  • Dalam kondisi dasar, MacBook M1 Pro mencatat 216 detik, sementara RTX 4090 mencatat 186 detik, sehingga RTX 4090 sekitar 30 detik, atau sekitar 16%, lebih cepat
  • Jika memakai insanely-fast-whisper di RTX 4090, transkripsi whisper-large-v3 turun hingga 8 detik, sehingga optimasi model dan implementasi dapat sangat mengubah perbandingan hardware
  • Eksekusi macOS MPS memakan waktu 4 menit 23 detik, dan M2 Ultra 76 GPU core serta M3 Max 40 GPU core jauh lebih cepat daripada M1 sambil menunjukkan kecepatan yang mirip satu sama lain
  • Kenaikan daya adalah +242W untuk PC RTX 4090 dibanding idle, dan +38W untuk MacBook M1 Pro, sementara hasil keseluruhan ini bukan benchmark presisi melainkan perbandingan untuk melihat gambaran performa MLX

Menjalankan benchmark Whisper dengan MLX

  • Apple merilis framework machine learning MLX untuk Apple Silicon, dan contoh Whisper yang disediakan bersama rilis itu dipakai untuk benchmark
  • Menambahkan file baru ke repositori benchmark Whisper yang sudah ada, lalu mentranskripsikan file audio yang sama dengan model whisper large yang sudah diunduh sebelumnya
  • Kode eksekusi memanggil transcribe(audio=audio_file, model='large'), lalu mengukur total waktu dari selisih waktu mulai dan selesai
  • Hasil yang dikembalikan adalah daftar segmen, dan setiap segmen berisi field seperti avg_logprob, compression_ratio, start, end, text, dan tokens
  • Struktur hasil ini sama seperti saat menjalankan Python Whisper di RTX 4090

Hasil dasar: M1 Pro dan RTX 4090

  • Untuk file audio 10 menit, waktu eksekusi M1 Pro + MLX adalah 0:03:36.296329, sekitar 216 detik
  • Pada file yang sama, waktu eksekusi Nvidia RTX 4090 diukur sebagai 0:03:06.707770, sekitar 186 detik
  • RTX 4090 sekitar 30 detik lebih cepat daripada M1 Pro, atau sekitar 16% lebih cepat secara persentase
  • Selama pengukuran, semua core grafis pada M1 Pro digunakan penuh, dan program lain ditutup serta elemen seperti wallpaper desktop juga dinonaktifkan
  • Namun, bila menggunakan model yang dioptimalkan untuk Nvidia, waktu transkripsi RTX 4090 bisa turun hingga 8 detik

Hardware pengujian

  • MacBook

    • MacBook M1 Pro 14 inci, model tahun 2021
    • 8 core CPU: 6 performance core, 2 efficiency core
    • RAM 32GB
    • 16 core GPU
  • PC

    • Intel Core i7-12700KF 8×3.60GHz
    • RAM 2×32GB 3200MHz DDR4 Kingston FURY Beast
    • Kingston KC3000 PCIe 4.0 NVMe 1000GB SSD
    • Baca 7000MB/s, tulis 6000MB/s
    • GeForce RTX 4090 24GB GDDR6X, Palit RTX 4090 GameRock OmniBlack

Perbandingan yang berubah karena insanely-fast-whisper

  • Di komentar Hacker News, muncul hasil menjalankan file 10 menit yang sama dengan insanely-fast-whisper dan RTX 4090
  • Untuk whisper-large-v3, transkripsi selesai dalam kurang dari 8 detik, dan jika waktu loading model sebelum transkripsi ikut dihitung, totalnya 15 detik
  • Setelah itu, eksekusi langsung dengan perintah insanely-fast-whisper --file-name audio.mp3 --flash True juga mengonfirmasi transkripsi 8 detik
  • Log output menampilkan peringatan terkait Flash Attention 2 dan pemindahan ke GPU, tetapi transkripsi tetap selesai dan output.json berhasil dibuat
  • Di macOS, ini bisa dijalankan dengan --device mps --batch-size 4, dan transkripsi file yang sama memakan waktu 0:04:23

Update M2 Ultra dan M3 Max

  • Ivan menjalankan file audio yang sama pada M2 Ultra 76 GPU core dan M3 Max 40 GPU core
  • Kedua sistem menghasilkan performa yang jauh lebih cepat daripada M1 Pro, dan satu sama lain menunjukkan kecepatan yang serupa
  • Angka perbandingan ini sulit dianggap sebagai benchmark yang 100% akurat, karena proses lain, waktu loading, cold start, dan warm start dapat memengaruhi hasil

Konsumsi daya dan keterbatasan pengukuran

  • Selisih daya antara kondisi idle dan saat GPU berjalan diukur dengan Shelly plug
  • PC meningkat +242W dibanding idle saat RTX 4090 dijalankan
  • MacBook meningkat +38W dibanding idle saat M1 GPU 16-core dijalankan
  • Pengukuran daya ini juga lebih merupakan nilai acuan untuk menunjukkan arah daripada angka yang 100% akurat
  • Keseluruhan pengujian ini lebih merupakan perbandingan kasar untuk menunjukkan kira-kira performa yang bisa dihasilkan framework MLX, bukan pengukuran ilmiah

Latar belakang penggunaan nyata

  • Tujuan pengujian ini terhubung dengan pengoperasian mesin pencari podcast podpodgogo.com
  • Sistem tersebut mentranskripsikan puluhan ribu episode podcast, membuat pencarian full-text memungkinkan, dan juga melakukan sebagian data mining
  • Riwayat pembaruan
    • 11 Desember: menambahkan spesifikasi hardware dan pengujian tambahan tanpa loading model
    • 12 Desember: merapikan RTX 4090 sebagai kartu grafis konsumen tercepat dan memperbarui angka M2/M3
    • 13 Desember: mengonfirmasi komentar di Hacker News tentang Whisper yang dioptimalkan untuk Nvidia

1 komentar

 
GN⁺ 2023-12-14
Komentar Hacker News
  • Kecuali Whisper dijalankan dengan sangat tidak efisien di 4090, hasil ini terlihat meragukan
    Saya punya 3090 dan M1 Max 32GB, dan meski belum mencoba Whisper, perbedaan performa inferensi Llama dan Stable Diffusion sangat besar; khususnya untuk Stable Diffusion, SDXL memerlukan sekitar 9 detik di 3090 dan sekitar 1 menit 10 detik di M1 Max

    • Mereka mengambil angka inferensi model difusi laten seperti SDXL lalu menggeneralisasikannya ke inferensi transformer encoder-decoder seperti Whisper
      Kedua arsitektur model itu hampir tidak punya kesamaan, dan meskipun Stable Diffusion memakai encoder teks pralatih CLIP, itu pun cukup berbeda dari transformer encoder-decoder
    • Optimasi Whisper di Apple Silicon sudah banyak dilakukan, dan whisper.cpp adalah contoh yang memanfaatkan keunggulan itu dengan baik
      Selain itu, artikel ini membahas framework MLX baru dari Apple, jadi kemungkinan besar itu tidak dipakai dalam pengujian Llama atau Stable Diffusion
    • Meski dokumentasinya masih awal, dari dokumentasi MLX terlihat bahwa konvolusi, yang banyak dipakai pada GAN dan terutama Stable Diffusion, hampir tidak mendapat peningkatan berarti di MLX, dan dalam beberapa kasus bahkan tampak lebih lambat daripada CPU
      Saya tidak tahu apakah ini batasan hardware atau kurangnya optimasi pustaka MLX, tetapi rasanya kecil kemungkinan mereka begitu saja mengabaikan use case yang sejelas ini
      Yang lebih masuk akal adalah konvolusi memakai presisi tinggi dan himpunan tile yang jauh lebih besar, sehingga saat seluruh transformasi tidak muat di GPU, diperlukan pergantian konteks yang mahal
    • Saya punya 4090 dan M1 Max 64GB, dan untuk Llama 2 4090 jauh lebih unggul
    • Dari banyak memakai Whisper, saya melihat ada versi-versi yang pada kualitas sama memakai memori lebih sedikit tetapi performanya satu sampai dua orde magnitudo lebih baik, dan saya tidak sepenuhnya paham alasannya
      Jadi, kalau bukan software yang sama dan model yang sama, intuisi tentang performa Whisper harus dipakai dengan sangat hati-hati
      Bahkan kalau pun sama, kebutuhan akan optimasi spesifik platform tetap membuat makna perbandingannya terbatas
  • Ini sepertinya memakai repositori OpenAI Whisper
    Untuk perbandingan yang layak, seharusnya membandingkan faster-whisper atau insanely-fast-whisper di 4090 melawan MLX
    faster-whisper berjalan secara sekuensial, sedangkan insanely-fast-whisper memproses audio dengan mengelompokkannya ke segmen 30 detik
    Kami memakai Whisper di produksi, dan karena kualitasnya menurut kami lebih baik bila menyertakan teks dari segmen sebelumnya, kami memakai faster-whisper
    Secara kasar, faster-whisper biasanya 4–5 kali lebih cepat daripada OpenAI/whisper, dan insanely-fast-whisper bisa 3–4 kali lebih cepat lagi daripada faster-whisper

    • Saya penasaran apakah insanely-fast-whisper cukup cepat untuk transkripsi real-time bahkan di CPU
      Model-model di sini tampaknya masih fp16, bukan model terkuantisasi, jadi sepertinya masih ada ruang untuk menjadi lebih cepat
      Edit: saya lihat itu belum mendukung inferensi CPU, dan akan menarik kalau nanti ditambahkan
    • Saya penasaran apakah insanely-fast-whisper memakai beam size 5 atau 1
      Saya juga ingin tahu perbandingan kecepatannya saat disetel ke 5, dan idealnya parameter itu diekspos ke pengguna
      Saya menangani audio dengan kualitas suara yang sangat buruk, jadi kualitas transkripsi penting; perbandingan kecepatan yang mengorbankan kualitas tidak terlalu berarti bagi saya
  • Inti artikel ini adalah bahwa mereka memanfaatkan Apple MLX yang baru dirilis, dan kodenya memakai optimasi khusus Apple
    https://news.ycombinator.com/item?id=38539153

    • Ini juga bukan dibandingkan dengan implementasi Nvidia yang sudah dioptimalkan
      Ada implementasi Whisper yang lebih cepat
      Edit: setelah terpancing, saya mengunduh file 10 menit yang dipakai artikel itu dan menjalankannya di 4090 dengan insanely-fast-whisper, dan pemasangannya hanya butuh dua perintah
      Untuk whisper-large-v3, transkripsi file selesai dalam kurang dari 8 detik, dan kalau termasuk waktu memuat model sebelum mulai transkripsi, totalnya 15 detik
      Waktu tambahan ini tentu saja tidak bergantung pada panjang audio
      Jadi, 4090 berarti 6–12 kali lebih cepat daripada performa terbaik Apple
      Kalau Anda sudah punya PC gaming yang bisa dipasangi, itu jauh lebih murah daripada M2 Ultra, dan bahkan kalau membeli PC rakitan jadi baru dengan 4090 pun tetap lebih murah
      Ini tidak mengejutkan, tetapi terlihat banyak angan-angan dari pemilik Mac kelas atas yang ingin percaya bahwa perangkat mereka hebat untuk segala hal
      Chip seri Apple M memang sangat mengesankan dan RAM besar juga luar biasa, tetapi untuk machine learning berperforma tinggi, sulit bersaing dengan Nvidia
    • Sejujurnya saya tidak paham kenapa ini perlu dipedulikan
      Kalau punya Mac, Anda akan memakai performa Mac itu, dan kalau punya PC gaming, Anda akan memakai performa PC itu
      Bahkan kalau punya keduanya, pada akhirnya Anda cenderung memakai AI yang berjalan di perangkat yang Anda gunakan setiap hari
  • Penasaran bagaimana perbandingannya dengan insanely-fast-whisper: https://github.com/Vaibhavs10/insanely-fast-whisper
    Saya paham bahwa perbandingan 1:1 bisa dilakukan jika tidak memakai optimisasi, tetapi kalau optimisasi itu belum di-port ke MLX, rasanya tetap lebih baik memakai 4090
    Saya sempat melihat-lihat MLX belakangan ini, dan sepertinya ini jelas akan populer di Mac, dan kalau binding Swift keluar, tampaknya juga menjanjikan di iOS: https://github.com/ml-explore/mlx/issues/15
    Hanya saja, saat ini mungkin terhalang oleh masalah kompilasi C++20

    • Di situlah keunggulan Nvidia
      Apa pun hardware yang menang di benchmark, kalau modelnya populer biasanya akan muncul implementasi CUDA yang sangat dioptimalkan secara manual dan mengungguli yang lain
      Memang ada pengecualian langka, misalnya GPT-Fast di AMD bisa bekerja baik untuk kasus penggunaan sempit tertentu berkat upaya besar PyTorch pada torch.compile
      Saya tidak terpikir satu pun pengecualian seperti itu di Apple Silicon
    • Untuk perbandingan yang benar, kode insanely-fast-whisper harus dijalankan di 4090
      Kemungkinan besar itu akan dengan mudah mengalahkan kedua benchmark di artikel asli, tetapi ukuran batch-nya sepertinya harus dibuat jauh lebih kecil dari 24
      Menurut standar sekarang, Whisper yang hanya 3–4x real-time itu sangat lambat, jadi benchmark ini bahkan bisa dikalahkan oleh CPU
    • Artikelnya sudah diperbarui dengan hasil insanely-fast
  • Penasaran apakah ini berlaku juga untuk model lain, atau hanya dipilih karena sifat serial Whisper dan operasi integer
    https://github.com/ml-explore/mlx-examples/tree/main/stable_... tampaknya mengarah ke sana

    At the time of writing this comparison convolutions are still some of the least optimized operations in MLX.
    Intinya tampaknya adalah bahwa sistem ini bisa memakai RAM sangat cepat berkapasitas lebih dari 64GB yang terhubung langsung ke CPU/GPU, dengan keunggulan dari sisi latensi dan akses bersama
    Kalau melihat paket daya sistem-sistem ini, angkanya memang jelas mengesankan
    Tetapi perlu juga mempertimbangkan bahwa harga sistem M3 Max dengan konfigurasi RAM minimum sekitar 2x harga 4090

    • Bahwa memori Apple Silicon itu cepat, itu jika dibandingkan dengan CPU konsumen yang lama bertahan di memori 2-channel
      Itu masih masuk akal di era 4 core, tetapi tidak masuk akal untuk jumlah core modern
      Skalabilitas memori GPU jauh lebih baik bahkan di kelas konsumen
  • Menjalankan Whisper di Mac M1 itu mudah, tetapi secara default tidak memakai MLX
    Saya menghabiskan satu atau dua jam hanya untuk mencari tahu apa yang harus diinstal dan dikonfigurasi agar memakai MLX, lalu muncul error Python yang tidak jelas dan error Torch
    Akhirnya saya menyerah dan menyewa VM dengan GPU, lalu bisa menjalankan Whisper dalam beberapa menit

  • Memang ada banyak perdebatan soal pilihan apa yang absolut terbaik untuk pekerjaan X, tetapi saya suka bahwa performa seperti ini bisa didapat dengan konsumsi daya serendah ini

  • Sebagai gantinya, kalau memakai fork Whisper ini, audio 1 jam bisa ditranskripsi dalam kurang dari 1 menit di sebagian besar GPU: https://github.com/Vaibhavs10/insanely-fast-whisper

    • Dalam pengalaman saya, ctranslate2 kadang malah lebih cepat daripada insanely-fast-whisper
      Di L4, bahkan dengan batch size serendah 4, ctranslate2 mengalahkan semua benchmark itu kecuali A100 yang memakai flash attention 2
      Sayang sekali mode batch tidak pernah benar-benar masuk ke faster-whisper, dan karena itu orang-orang tampaknya tidak mudah mencoba ctranslate2
    • Saya ingin tahu lebih detail bagaimana ini bisa terjadi, dan apakah ada perbedaan kualitas dibanding versi asli
      Untuk repositori seperti https://github.com/SYSTRAN/faster-whisper, cukup mudah memahami mengapa itu lebih cepat daripada implementasi asli, dan yang lain juga biasanya lebih cepat karena menurunkan presisi kuantisasi tetapi hasilnya memburuk
      Tetapi untuk yang ini, alasan kenapa lebih cepat terasa tidak terlalu jelas
      Mengingat kecepatannya jauh lebih tinggi, saya jadi makin penasaran
  • Ini terasa sangat menarik terutama jika memikirkan Vision Pro dari Apple
    Kemampuan menjalankan model dengan efisiensi daya mungkin tidak terlalu penting bagi semua orang di laptop, tetapi ini keuntungan besar untuk headset yang memang sudah boros daya

  • Saya ingin meminta bantuan
    Adakah aplikasi atau alur kerja open-source yang bagus untuk transkripsi dan pemisahan pembicara?
    Saya sudah melihat https://github.com/thomasmol/cog-whisper-diarization dan https://about.transcribee.net/, tetapi keduanya tidak berfungsi dengan baik, termasuk sering crash

    • Saya membuat solusi sendiri, dan ternyata cukup sederhana
      Saya membagi MP3 menjadi potongan-potongan yang bisa diproses Whisper, lalu mengirimkannya satu per satu ke API untuk ditranskripsikan
      Sejauh ini bekerja sesuai harapan, dan hanya butuh beberapa baris kode Python