Whisper 벤치마크: Nvidia RTX 4090 vs M1 Pro MLX
(owehrens.com)- Apple Silicon용 MLX 프레임워크로 Whisper large 모델을 돌려, 10분 오디오 전사에서 노트북과 고성능 GPU의 격차를 비교함
- 기본 조건에서는 M1 Pro MacBook이 216초, RTX 4090이 186초로 RTX 4090이 약 30초, 약 16% 더 빨랐음
- RTX 4090에서 insanely-fast-whisper를 쓰면 whisper-large-v3 전사가 8초까지 줄어, 모델·구현 최적화가 하드웨어 비교를 크게 바꿀 수 있음
- macOS MPS 실행은 4분 23초가 걸렸고, M2 Ultra 76 GPU 코어와 M3 Max 40 GPU 코어는 M1보다 훨씬 빠르면서 서로 비슷한 속도를 보임
- 전력 증가는 RTX 4090 PC가 유휴 대비 +242W, M1 Pro MacBook이 +38W였으며, 전체 결과는 정밀 벤치마크가 아니라 MLX 성능 감을 보는 비교임
MLX로 Whisper 벤치마크 실행
- Apple이 Apple Silicon용 머신러닝 프레임워크 MLX를 공개했고, 함께 제공된 예제 중 Whisper가 벤치마크에 사용됨
- 기존 Whisper 벤치마크 저장소에 새 파일을 추가하고, 이미 내려받은
whisper large모델로 같은 오디오 파일을 전사함 - 실행 코드는
transcribe(audio=audio_file, model='large')를 호출한 뒤 시작·종료 시각 차이로 전체 시간을 측정함 - 반환 결과는 세그먼트 목록이며, 각 세그먼트에는
avg_logprob,compression_ratio,start,end,text,tokens같은 필드가 포함됨 - 이 결과 구조는 RTX 4090에서 Python Whisper를 실행했을 때와 동일함
기본 결과: M1 Pro와 RTX 4090
- 10분 오디오 파일 기준 M1 Pro + MLX 실행 시간은
0:03:36.296329, 약 216초임 - 같은 파일에서 Nvidia RTX 4090 실행 시간은
0:03:06.707770, 약 186초로 측정됨 - RTX 4090은 M1 Pro보다 약 30초 빠르고, 비율로는 약 16% 빠른 수준임
- 측정 중 M1 Pro의 모든 그래픽 코어가 완전히 사용됐고, 다른 프로그램을 종료하고 데스크톱 배경 같은 요소도 비활성화함
- 단, Nvidia 최적화 모델을 사용하면 RTX 4090의 전사 시간은 8초까지 줄어듦
테스트 하드웨어
-
MacBook
- 14인치 MacBook M1 Pro, 2021년 모델
- CPU 코어 8개: 성능 코어 6개, 효율 코어 2개
- RAM 32GB
- GPU 코어 16개
-
PC
- Intel Core i7-12700KF 8×3.60GHz
- RAM 2×32GB 3200MHz DDR4 Kingston FURY Beast
- Kingston KC3000 PCIe 4.0 NVMe 1000GB SSD
- 읽기 7000MB/s, 쓰기 6000MB/s
- GeForce RTX 4090 24GB GDDR6X, Palit RTX 4090 GameRock OmniBlack
insanely-fast-whisper가 바꾼 비교
- Hacker News 댓글에서 같은 10분 파일을 insanely-fast-whisper와 RTX 4090으로 실행한 결과가 나옴
- whisper-large-v3 기준 전사는 8초 미만에 끝났고, 전사 시작 전 모델 로딩 시간까지 포함하면 15초였음
- 이후 직접 실행한
insanely-fast-whisper --file-name audio.mp3 --flash True명령에서도 8초 전사가 확인됨 - 출력 로그에는 Flash Attention 2 관련 경고와 GPU 이동 관련 경고가 있었지만, 전사는 완료되어
output.json이 생성됨 - macOS에서는
--device mps --batch-size 4로 실행할 수 있었고, 같은 파일 전사에 0:04:23이 걸림
M2 Ultra와 M3 Max 업데이트
- Ivan이 같은 오디오 파일을 M2 Ultra 76 GPU 코어와 M3 Max 40 GPU 코어에서 실행함
- 두 시스템은 M1 Pro보다 훨씬 빠른 결과를 냈고, 서로는 비슷한 속도였음
- 비교 수치는 100% 정확한 벤치마크로 보기 어렵고, 다른 프로세스, 로딩 시간, 콜드 스타트와 웜 스타트가 결과에 영향을 줄 수 있음
전력 소비와 측정 한계
- 유휴 상태와 GPU 실행 상태의 전력 차이는 Shelly 플러그로 측정함
- PC는 RTX 4090 실행 시 유휴 대비 +242W 증가함
- MacBook은 M1 GPU 16코어 실행 시 유휴 대비 +38W 증가함
- 전력 측정 역시 100% 정확한 수치라기보다 방향성을 보여주는 참고값에 가까움
- 전체 테스트는 과학적 측정보다는 MLX 프레임워크가 어느 정도 성능을 낼 수 있는지 대략 보여주는 비교임
실제 사용 배경
- 테스트 목적은 팟캐스트 검색 엔진 podpodgogo.com 운영과 연결됨
- 수만 개의 팟캐스트 에피소드를 전사하고, 전문 검색이 가능하게 만들며, 일부 데이터 마이닝도 수행함
- 업데이트 내역
- 12월 11일: 하드웨어 사양과 모델 로딩 없는 추가 테스트를 더함
- 12월 12일: RTX 4090을 가장 빠른 소비자용 그래픽 카드로 정리하고 M2/M3 수치를 업데이트함
- 12월 13일: Hacker News에서 Nvidia 최적화 Whisper 관련 댓글을 확인함
댓글과 토론
Hacker News 의견들
-
Whisper를 4090에서 매우 비효율적으로 돌린 게 아니라면, 이 결과는 의심스럽게 보임
3090과 M1 Max 32GB를 갖고 있는데 Whisper는 안 해봤지만 Llama와 Stable Diffusion 추론 성능 차이는 엄청났고, 특히 Stable Diffusion에서 SDXL은 3090이 약 9초, M1 Max는 1분 10초 정도 걸렸음- SDXL 같은 잠재 확산 모델 추론 수치를 가져와서 Whisper 같은 인코더-디코더 트랜스포머 추론으로 일반화하고 있음
두 모델 구조는 공통점이 거의 없고, Stable Diffusion이 CLIP의 사전학습 텍스트 인코더를 쓰긴 하지만 그것도 인코더-디코더 트랜스포머와는 꽤 다름 - Apple Silicon에서 Whisper 최적화는 이미 많이 이루어졌고, whisper.cpp가 그 장점을 잘 활용하는 예임
게다가 이 글은 새 Apple MLX 프레임워크를 다루고 있어서, Llama나 Stable Diffusion 테스트에서는 아마 쓰지 않았을 가능성이 큼 - 아직 초기 문서이긴 하지만 MLX 문서를 보면, GAN과 특히 Stable Diffusion에서 많이 쓰는 합성곱은 MLX에서 의미 있는 향상을 거의 못 보고 있고, 어떤 경우에는 CPU보다 느리기도 해 보임
하드웨어 한계인지 MLX 라이브러리 최적화 부족인지는 모르겠지만, 이렇게 두드러진 사용 사례를 그냥 무시했을 것 같지는 않음
합성곱이 높은 정밀도와 훨씬 큰 타일 집합을 써서, 전체 변환이 GPU에 맞지 않을 때 비싼 문맥 전환이 필요해지는 쪽이 더 그럴듯함 - 4090과 M1 Max 64GB를 갖고 있는데, Llama 2에서는 4090이 훨씬 우월함
- Whisper를 많이 써보니, 같은 품질에서 메모리는 덜 쓰면서 성능이 한두 자릿수 더 좋은 버전들이 있었고, 이유는 완전히 이해하지 못함
그래서 같은 소프트웨어와 같은 모델이 아니라면 Whisper 성능에 대한 직감은 매우 조심해야 함
설령 같더라도 플랫폼별 최적화를 원한다는 점을 보면 비교 의미가 여전히 제한적임
- SDXL 같은 잠재 확산 모델 추론 수치를 가져와서 Whisper 같은 인코더-디코더 트랜스포머 추론으로 일반화하고 있음
-
이건 OpenAI Whisper 저장소를 쓰는 것 같음
제대로 비교하려면 4090에서 faster-whisper나 insanely-fast-whisper와 MLX를 비교해야 함
faster-whisper는 순차 실행이고, insanely-fast-whisper는 오디오를 30초 구간으로 묶어서 처리함
프로덕션에서 Whisper를 쓰고 있는데, 이전 구간 텍스트를 포함하면 품질이 더 좋다고 봐서 faster-whisper를 사용함
대략 faster-whisper는 OpenAI/whisper보다 보통 4~5배 빠르고, insanely-fast-whisper는 다시 faster-whisper보다 3~4배 더 빠를 수 있음- insanely-fast-whisper가 CPU에서도 실시간 전사 가능할 만큼 빠른지 궁금함
여기 모델들은 양자화 모델이 아니라 여전히 fp16으로 보이니, 더 빨라질 여지가 있어 보임
수정: 아직 CPU 추론을 지원하지 않는다고 봤고, 추가되면 흥미로울 듯 - insanely-fast-whisper가 빔 크기 5를 쓰는지 1을 쓰는지 궁금함
5로 설정했을 때 속도 비교도 알고 싶고, 이상적으로는 그 매개변수를 사용자에게 노출해야 함
음질이 매우 나쁜 오디오를 다루고 있어서 전사 품질이 중요하니, 품질을 희생한 속도 비교는 내게 의미가 약함
- insanely-fast-whisper가 CPU에서도 실시간 전사 가능할 만큼 빠른지 궁금함
-
이 글의 핵심은 새로 공개된 Apple MLX를 활용하고 있고, 코드가 Apple 전용 최적화를 사용한다는 점임
https://news.ycombinator.com/item?id=38539153- 최적화된 Nvidia 구현과 비교한 것도 아님
Whisper에는 더 빠른 구현들이 있음
수정: 낚인 김에 글에서 쓴 10분짜리 파일을 내려받아 4090에서 insanely-fast-whisper로 돌려봤고, 설치는 명령 두 개면 됐음
whisper-large-v3 기준으로 파일 전사는 8초 미만에 끝났고, 전사 시작 전 모델 로딩 시간까지 포함하면 15초였음
이 추가 시간은 당연히 오디오 길이에 의존하지 않음
그러면 4090은 Apple의 최고 성능보다 6~12배 빠른 셈임
이미 꽂을 게이밍 PC가 있다면 M2 Ultra보다 훨씬 싸고, 4090이 들어간 완제품 PC를 새로 사도 여전히 더 저렴함
놀랄 일이 아닌데, 고급 Mac을 가진 사람들이 자기 장비가 모든 걸 잘한다고 믿고 싶어 하는 희망적 사고가 많이 보임
Apple M 시리즈 칩은 매우 인상적이고 큰 RAM도 훌륭하지만, 고성능 머신러닝에서는 Nvidia와 경쟁하기 어렵다 - 솔직히 왜 신경 써야 하는지 모르겠음
Mac이 있으면 그 Mac의 성능을 쓰게 되고, 게이밍 PC가 있으면 그 PC의 성능을 쓰게 됨
둘 다 있어도 결국 매일 쓰는 장비에서 돌아가는 AI를 쓸 가능성이 큼
- 최적화된 Nvidia 구현과 비교한 것도 아님
-
insanely-fast-whisper와 비교하면 어떨지 궁금함: https://github.com/Vaibhavs10/insanely-fast-whisper
최적화를 쓰지 않으면 1:1 비교가 가능하다는 점은 알겠지만, 그 최적화가 MLX로 포팅되지 않았다면 여전히 4090을 쓰는 편이 나을 것 같음
최근 MLX를 살펴봤는데 Mac에서는 확실히 인기를 얻을 것 같고, Swift 바인딩이 나오면 iOS에서도 그럴 듯함: https://github.com/ml-explore/mlx/issues/15
다만 지금은 C++20 컴파일 문제가 막고 있을 수도 있음- Nvidia의 강점이 바로 이 부분임
어떤 하드웨어가 벤치마크에서 이기더라도, 인기 모델이면 대개 엄청나게 손으로 최적화된 CUDA 구현이 나와서 나머지를 압도함
드문 예외도 있긴 한데, 예를 들어 PyTorch가 torch.compile에 공들인 덕분에 AMD에서 GPT-Fast가 특정 좁은 사용 사례에서 잘 되는 정도임
Apple Silicon에서는 그런 예외가 하나도 떠오르지 않음 - 제대로 비교하려면 4090에서 insanely-fast-whisper 코드를 돌려봐야 함
원문 벤치마크 둘 다 가볍게 이길 것 같지만, 배치 크기는 24보다 훨씬 작게 잡아야 할 듯함
요즘 기준으로 Whisper가 실시간의 3~4배면 매우 느린 편이라, 이 벤치마크는 CPU로도 이길 수 있음 - 글이 insanely-fast 결과로 업데이트됐음
- Nvidia의 강점이 바로 이 부분임
-
이게 다른 모델에도 적용되는지, 아니면 Whisper의 직렬적 특성과 정수 연산 때문에 골라낸 건지 궁금함
https://github.com/ml-explore/mlx-examples/tree/main/stable_...를 보면 그런 쪽을 암시하는 듯함At the time of writing this comparison convolutions are still some of the least optimized operations in MLX.
핵심은 CPU/GPU에 직접 붙은 64GB 이상의 매우 빠른 RAM을 쓸 수 있고, 지연시간과 공동 접근성 측면에서 이점이 있다는 사실 같음
이 시스템들의 전력 패키지를 보면 숫자는 확실히 인상적임
다만 최소 RAM 구성의 M3 Max 시스템 가격이 4090의 약 2배라는 점도 고려해야 함- Apple Silicon의 메모리가 빠르다는 건, 오랫동안 2채널 메모리에 머문 소비자용 CPU와 비교할 때의 얘기임
4코어 시대에는 괜찮았지만 현대적인 코어 수에서는 말이 안 됨
GPU의 메모리 확장성은 소비자용에서도 훨씬 좋음
- Apple Silicon의 메모리가 빠르다는 건, 오랫동안 2채널 메모리에 머문 소비자용 CPU와 비교할 때의 얘기임
-
Mac M1에서 Whisper를 실행하는 건 쉽지만, 기본 상태로는 MLX를 쓰지 않음
MLX를 쓰게 하려면 뭘 설치하고 설정해야 하는지 알아보느라 한두 시간을 썼고, 알 수 없는 Python 오류와 Torch 오류가 났음
결국 포기하고 GPU가 있는 VM을 빌렸더니 몇 분 안에 Whisper를 실행할 수 있었음- macOS용 Whisper GUI인 https://goodsnooze.gumroad.com/l/macwhisper를 꽤 잘 쓰고 있음
MLX는 쓰지 않지만 Metal은 사용함 - M2 Max 장비에서 예제를 따라 몇 분 만에 MLX로 실행할 수 있었음: https://github.com/ml-explore/mlx-examples/tree/main/whisper
- Whisper용으로 이 제품을 쓰고 있음: https://betterdictation.com/
- 지난주에 나온 거라 한두 달은 줘야 함
- macOS용 Whisper GUI인 https://goodsnooze.gumroad.com/l/macwhisper를 꽤 잘 쓰고 있음
-
X 작업에 절대적으로 어떤 선택이 최고인지 논쟁은 많겠지만, 이렇게 낮은 전력 소비로 이 정도 성능이 나오는 점이 마음에 듦
-
대신 이 Whisper 파생 저장소를 쓰면, 대부분의 GPU에서 1시간짜리 오디오도 1분 이하로 전사됨: https://github.com/Vaibhavs10/insanely-fast-whisper
- 체감상 ctranslate2가 insanely-fast-whisper보다 더 빠르기도 했음
L4에서 ctranslate2를 배치 크기 4처럼 낮게 잡아도, flash attention 2를 쓴 A100을 제외하면 그쪽 벤치마크를 모두 이김
faster-whisper에 배치 모드가 끝내 들어가지 않은 게 아쉬운데, 그 때문에 사람들이 ctranslate2를 쉽게 시도하지 못하는 듯함 - 이게 어떻게 가능한지, 그리고 원본과 비교해 품질 차이가 있는지 자세히 알고 싶음
https://github.com/SYSTRAN/faster-whisper 같은 저장소는 왜 원래 구현보다 빠른지 바로 이해되고, 다른 것들도 양자화 정밀도를 낮춰서 빨라지지만 결과가 나빠지는 식임
그런데 이건 왜 더 빠른지 특히 명확하지 않음
훨씬 더 빠르다는 점을 고려하면 더 궁금함
- 체감상 ctranslate2가 insanely-fast-whisper보다 더 빠르기도 했음
-
Apple의 Vision Pro를 생각하면 특히 흥미로움
모델을 전력 효율적으로 돌릴 수 있다는 게 노트북에서는 모두에게 중요하지 않을 수 있지만, 이미 전력을 많이 먹는 헤드셋에는 큰 이점임 -
도움을 구하고 싶음
좋은 오픈소스 전사와 화자 분리 앱이나 작업 흐름이 있을까?
https://github.com/thomasmol/cog-whisper-diarization와 https://about.transcribee.net/를 봤는데, 둘 다 크래시가 나는 등 잘 작동하지 않았음- 자체 솔루션을 만들었는데 꽤 단순함
MP3를 Whisper가 처리할 수 있는 조각으로 나눈 다음, API에 하나씩 보내 전사하게 함
지금까지는 예상대로 동작하고, Python 코드 몇 줄이면 됨
- 자체 솔루션을 만들었는데 꽤 단순함