Hi HN! Since the launch of JigsawStack.com, we've been trying to dive deeper into fully managed AI APIs built and fine tuned for specific use cases. Audio/video transcription was one of the more basic things and we wanted the best open source model at this point it is OpenAI's whisper large v3 model based on the number of languages it supports and its accuracy.
The thing is, the model is huge and requires tons of GPU power for it to run efficiently at scale. Even OpenAI doesn't provide an API for their best transcription model while only providing whisper v2 at a pretty high price. I tried running the whisper large v3 model on multiple cloud providers from Modal.com, Replicate, and Hugging faces dedicated interface and it takes a long time to transcribe any content about ~30mins long for 150mins of audio and this doesn't include the machine startup time for on-demand GPUs. Keeping in mind at JigsawStack we aim to return any heavy computation under 25s or 2mins for async cases and any basic computation under 2s.
While exploring Replicate, I came across this project https://github.com/Vaibhavs10/insanely-fast-whisper by Vaibhav Srivastav which optimises the hell out of this whisper large v3 model with a variety of techniques like batching and using FlashAttention 2. This reduces computation time by almost 30x, check out the amazing repo for more stats! Open source wins again!!
First, we tried using Replicate's dedicated on-demand GPU service to run this model but that did not help, the cold startup/booting time alone of a GPU made the benefits of the optimised model pretty useless for our use case. Then we tried Hugging face and modal.com and we got the same results, with an A100 80GB GPU, we saw around an average of ~2mins start up time to load the machine and model image. It didn't make sense for us to have an always on GPU running due to the crazy high cost. At this point, I was inches away from giving up.
The next day I got an email from Fly.io: "Congrats, Yoeven D Khemlani has GPU access!". I forgot the Fly started providing GPUs and I'm a big fan of their infra reliability and ease of deployment. We also run some of our GraphQL servers for JigsawStack on Fly's infra!
I quickly picked up some Python and Docker by referring to a bunch of other Github repos and Fly's GPU tutorials, then wrote the API layer with the optimised version of Whisper 3 and deployed it on Fly's GPU machines.
And wow the results were pretty amazing, the start up time of the machine on average was ~20 seconds compared to the other providers at ~2mins with all the performance benefits from the optimised whisper. I've added some more stats in the Github repo. The more interesting thing to me is the cost↓
Based on 10mins of audio:
- OpenAI Whisper v2 API -> $0.06/10mins
- Insanely Fast Whisper large v3 API on Fly GPU (Cold startup) -> ~$0.029/10mins
- Insanely Fast Whisper large v3 API on Fly GPU (Warm startup) -> ~$0.011/10mins
(Note: These are rough estimates I did by taking averages after running 5 rounds each)
If you guys want to run this on any other GPU providers you can as long as they support Docker.
We'll be optimising this more over the next few days specific to Fly's infrastructure allowing for global distributed instances of whisper and will soon be providing a fully managed API on JigsawStack.com. Stay tuned!