whisper在不同 GPU 的性能基准测试

打印 上一主题 下一主题

主题 1945|帖子 1945|积分 5835

        

做了一些实验来查看不同 GPU 上转录的时间本钱。结果可能有助于您选择购买或租用哪种范例的 GPU。


  • 环境:Pytorch 1.13 CUDA 11.6 Ubuntu 18.04
  • 数据集:LJSpeech 从 LJ001-0001.wav 到 LJ001-0150.wav 总长度为 971.26 秒
图形处理器中等 FP16中等 FP32大型 FP16大型 FP32现实时间本钱2080Ti148.18秒219.39秒255.30秒448.24 秒3.7x3080Ti109.24秒107.81秒172.35秒186.32 秒1.6倍3090145.53秒122.58秒214.87秒186.12秒1.6倍409099.60秒79.99秒149.03秒120.05秒1xV100203.25秒174.18秒284.62 秒253.42秒2.1xA4000135.99秒128.12秒205.21 秒214.69秒1.8xA5000143.97秒124.50秒205.43秒198.11秒1.7倍A6000139.25秒115.63秒194.95秒175.97秒1.5倍A100 PCIE 40G133.01 秒113.94秒196.19秒175.62秒1.5倍A100 SXM4 40G123.66秒105.85秒172.36秒162.67秒1.4x
代码
  1. import torch
  2. import time
  3. import whisper
  4. import os
  5. device = torch.device('cuda')
  6. model_list = ['medium', 'large-v2']
  7. fp16_bool = [True, False]
  8. path = './benchmark/'
  9. file_list = os.listdir(path)
  10. for i in model_list:
  11.     for k in fp16_bool:
  12.         model = whisper.load_model(name=i, device=device)
  13.         duration_sum = 0
  14.         for idx, j in enumerate(file_list):
  15.             audio = whisper.load_audio(path + j, sr=16000)
  16.             start = time.time()
  17.             result = model.transcribe(audio, language='en', task='transcribe', fp16=k)
  18.             end = time.time()
  19.             duration_sum = duration_sum + end - start
  20.         print("{} model with fp16 {} costs {:.2f}s".format(i, k, duration_sum))
  21.         del model
复制代码
 其他测试结果

问:
我也想买 4070,但担心 12GB 是否适合 Large-v3 型号。
答:
        我认为 10GB 卡对于 large-v3 型号来说已经足够了。我购买了 3080 10G 卡,它运行 large-v3 型号就很好了。
答 2 
购买 4 块 RTX 4070 后,我们进行了一些基准测试,您确实对此非常满意。不同 GPU 之间在 Whisper 转录方面的性能差别好像与您在光栅化性能方面看到的差别非常相似。我们将 T4 与 RTX 4070 和 RTX 4060 Ti 进行了测试,并得出结论:RTX 4070 具有最佳的性价比。
Macbook Pro 14 M2 Max
配备 32GB 内存的 Macbook Pro 14 M2 Max 得到以下结果:
配备 fp32 的中型模子耗时 546.83 秒,
配备 fp32 的大型 v2 模子耗时 904.46 秒,耗时
7.537 倍
我使用免费层硬件对 Huggingface 空间进行了基准测试:
  1. Hugging Face Space Free Tier 2 vCPUs 16GBs ram
  2. tiny.en model with fp16 False costs 430.07s
  3. base.en model with fp16 False costs 563.06s
  4. small.en model with fp16 False costs 1822.23s
  5. medium model with fp16 False costs 4142.89s
  6. large-v2 model with fp16 False costs 7335.92s
复制代码
以及 I9 13900K:
  1. NVIDIA GeForce RTX 3090
  2. Python 3.11.4 (main, Jul  5 2023, 13:45:01) [GCC 11.2.0]
  3. Torch 2.1.0+cu121
  4. Whisper 20230918
  5. tiny.en model with fp16 True costs 10.22s
  6. tiny.en model with fp16 False costs 5.65s
  7. base.en model with fp16 True costs 9.75s
  8. base.en model with fp16 False costs 8.06s
  9. medium.en model with fp16 True costs 44.88s
  10. medium.en model with fp16 False costs 43.01s
  11. large-v2 model with fp16 True costs 75.89s
  12. large-v2 model with fp16 False costs 66.34s
复制代码
以及同款 RTX 3090 的低调版本,以供比力:
  1. NVIDIA GeForce RTX 3090
  2. Python 3.11.4 (main, Jul  5 2023, 13:45:01) [GCC 11.2.0]
  3. Torch 2.1.0+cu121
  4. Whisper 20230918
  5. tiny.en model with fp16 True costs 10.22s
  6. tiny.en model with fp16 False costs 5.65s
  7. base.en model with fp16 True costs 9.75s
  8. base.en model with fp16 False costs 8.06s
  9. medium.en model with fp16 True costs 44.88s
  10. medium.en model with fp16 False costs 43.01s
  11. large-v2 model with fp16 True costs 75.89s
  12. large-v2 model with fp16 False costs 66.34s
复制代码
测试代码
  1. import gradio as gr
  2. import torch
  3. import time
  4. import whisper
  5. import os, sys
  6. def bench(device_name):
  7.     if device_name=="":
  8.         device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
  9.     else:
  10.         device = torch.device(device_name)
  11.     string = torch.cuda.get_device_name(0)
  12.     string += "\nPython " + sys.version
  13.     string += "\nTorch " + torch.__version__
  14.     string += "\nWhisper " + whisper.__version__ + "\n"
  15.     print(string)
  16.     model_list = ['tiny.en', 'base.en', 'medium.en', 'large-v2']
  17.     fp16_bool = [True, False]
  18.     path = 'benchmark/'
  19.     file_list = os.listdir(path)
  20.     for i in model_list:
  21.         for k in fp16_bool:
  22.             model = whisper.load_model(name=i, device=device)
  23.             duration_sum = 0
  24.             for idx, j in enumerate(file_list):
  25.                 audio = whisper.load_audio(path + j, sr=16000)
  26.                 start = time.time()
  27.                 result = model.transcribe(audio, language='en', task='transcribe', fp16=k)
  28.                 end = time.time()
  29.                 duration_sum = duration_sum + end - start
  30.             print("{} model with fp16 {} costs {:.2f}s".format(i, k, duration_sum))
  31.             string += "{} model with fp16 {} costs {:.2f}s".format(i, k, duration_sum) + "\n"
  32.             del model
  33.     return string
  34.    
  35. iface = gr.Interface(fn=bench, inputs="text", outputs="text")
  36. iface.launch()
复制代码
测试单位(PPM 每分钟处理音频/录音秒数)
RTX 4070 Super 12GBDebian 12.5 上的 Docker(裸机)17,6027,9119,11两个文件,每个文件运行四次
RTX 4070 Super 12GBWindows WSL2 上的 Podman16,8541,3824,10两个文件,每个文件运行七次
RTX 4060ti 16GBWindows WSL2 上的 Podman16,2620,7618,01两个文件,每个文件运行五次
 CPU 的环境
CPU 型号环境最小 PpM最大 PpM平均每分钟流量评论
Ryzen 7 5700G @ 3.80 GHz,8 核Windows WSL2 上的 Podman157,89214,29176,47两个文件,每个文件运行三次
i7-6700K @ 4.00 GHz,4 核Windows WSL2 上的 Podman171,43285,71两个文件,每个文件运行两次
i5-4460 @ 3.2 GHz,4 核(kein HT)Debian 12.5 上的 Docker(裸机)142,86240两个文件,各运行一次
Xeon Gold 5415+ @ 2,90 GHz,4 个 vCoreHyper-V 主机上的 Debian VM 上的 Docker71,43272,73130,43
Xeon E5-2620 v3 @ 2.40 GHz,4 个 vCoreHyper-V 主机上的 Debian VM 上的 Docker200240珠宝
另外的对比图

看来 RTX 4070 性价比比力好,待我买来了RTX4070 super 后再陈诉结果 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表