Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【修复】关于Windows下faster-whisper使用GPU推理导致崩溃的处理方法 #31

Closed
Ladbaby opened this issue Jun 5, 2024 · 9 comments · Fixed by #37
Closed
Labels
【文档/doc】 项目的补充文档

Comments

@Ladbaby
Copy link

Ladbaby commented Jun 5, 2024

本 issue 严格意义上并非此项目的问题,根本原因出在了 faster-whisper 库中。以防有人遇到和我同样的问题,仅在此分享我的解决方式。

问题描述

在Windows的NVidia GPU环境下,选择使用本地的 faster-whisper 进行视频转文字的任务时,由于 faster-whisper 库自身存在的已知 issue,可能导致 faster_whisper_result 函数在被调用完毕即将返回结果时崩溃,表现为终端在输出类似以下内容后:

- whisper识别内容:
柔らかそうな感じなんですよ!

紧接着就会直接崩溃,不会产生任何报错信息。pdb 等调试器同样不会返回报错。在 Windows 的 Event Viewer 中可以看到程序的错误退出日志。

临时解决办法

由于是 faster-whisper 自身的问题,参考该库 issue 中的临时解决方式,可以使用多进程来规避主进程的崩溃。这样 faster-whisper 所在的进程崩溃了也不会导致本项目主程序的崩溃。

具体代码改动可以参考这个 commit。核心修改为 project/utils/utils2.py 中添加一个 runWhisperSeperateProc 函数,之中使用新的进程调用原本的 faster_whisper_result 函数。

本解法已知缺点

  • 由于并没有实际解决 faster-whisper 自己的崩溃,所以视频转文字的时候还是会观察到崩溃时的鼠标转圈圈
  • 多进程会让 streamlit 库在终端输出警告。不过由于调用的函数本身不需要访问 st.session_state,所以理论上应该是安全的

和本 issue 内容无直接关联的PS: 重构后的界面挺好的;在个人的测试中,本地 LLM 的翻译能力 aya:8B 较为出众

@Chenyme Chenyme pinned this issue Jun 5, 2024
@Chenyme
Copy link
Owner

Chenyme commented Jun 5, 2024

非常感谢您的说明!!!

@Eisaichen
Copy link
Contributor

Eisaichen commented Jun 9, 2024

感谢,这项目折腾了一天才跑起来,运用了你的commit修复
感觉这项目上限很高,但还很不成熟,遵循文档都跑不起来...

@Chenyme release V0.8.3是否应该撤回一下,因为这个commit下文件夹还是“models”但代码里路径已经改了,导致本地模型直接报错
我在英文系统下,一直因为代码里的中文运行不起来,提示"decode unicode charmap"什么的,通过设置环境变量PYTHONIOENCODING='utf-8'才解决

@Chenyme
Copy link
Owner

Chenyme commented Jun 13, 2024

你好!感谢反馈!
个人水平时间有限,目前安装有点复杂,等考完后,会考虑其他办法简化步骤。


commit下文件夹还是“models”但代码里路径已经改了 我看了一下commit,路径应该是和0.8.3一样的。
在英文系统下,一直因为代码里的中文运行不起来 代码中有许多是中文说明,可能这是出错的原因。

@Eisaichen
Copy link
Contributor

@Chenyme 麻烦你检查0.8.3a25de34里文件夹是命名为Models,再看看这个Commit下的project/video.py第18行

@Chenyme
Copy link
Owner

Chenyme commented Jun 13, 2024

了解啦。由于我之前操作有误,导致所有的Tag标签中,每个标签对应的项目代码都是上一个版本的内容,一直未做调整。实在不好意思啊(┬┬﹏┬┬)

所以Git项目,请以main分支为准。
直接下载,还请以releases各版本中的压缩包为准。
感谢

@Eisaichen
Copy link
Contributor

@Chenyme 另外请问下要如何本地加载原版的Whisper模型?
选whisper后会报错 (同环境下fast-whisper可正常使用)

Logs
chenyme-aavt  | 2024-06-13 01:50:55.905 Uncaught app exception
chenyme-aavt  | Traceback (most recent call last):
chenyme-aavt  |   File "C:\Users\ContainerAdministrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 600, in _run_script
chenyme-aavt  |     exec(code, module.__dict__)
chenyme-aavt  |   File "C:\app\Chenyme-AAVT.py", line 41, in <module>
chenyme-aavt  |     video()
chenyme-aavt  |   File "C:\app\project\video.py", line 425, in video
chenyme-aavt  |     result = faster_whisper_result(output_file, device, model, whisper_prompt_setting, temperature_setting, vad_setting, lang_setting, beam_size_setting, min_vad_setting)
chenyme-aavt  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
chenyme-aavt  |   File "C:\app\project\utils\utils2.py", line 107, in faster_whisper_result
chenyme-aavt  |     model = WhisperModel(model_name, device)
chenyme-aavt  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
chenyme-aavt  |   File "C:\Users\ContainerAdministrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\faster_whisper\transcribe.py", line 144, in __init__
chenyme-aavt  |     self.model = ctranslate2.models.Whisper(
chenyme-aavt  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
chenyme-aavt  | RuntimeError: Unsupported model binary version. This executable supports models with binary version v6 or below, but the model has binary version v67324752. This usually means that the model was generated by a later version of CTranslate2. (Forward compatibility is not guaranteed.)

模型是直接从hf上clone的

File list
C:\CONTAINERS\CHENYME-AAVT\MODEL\WHISPER-LARGE-V3
    .gitattributes
    added_tokens.json
    config.json
    flax_model.msgpack
    generation_config.json
    merges.txt
    model.fp32-00001-of-00002.safetensors
    model.fp32-00002-of-00002.safetensors
    model.safetensors
    model.safetensors.index.fp32.json
    normalizer.json
    preprocessor_config.json
    pytorch_model.bin
    pytorch_model.bin.index.fp32.json
    pytorch_model.fp32-00001-of-00002.bin
    pytorch_model.fp32-00002-of-00002.bin
    README.md
    special_tokens_map.json
    tokenizer.json
    tokenizer_config.json
    vocab.json

@Chenyme
Copy link
Owner

Chenyme commented Jun 13, 2024

启用本地模型只支持fast-whisper的模型哈
因为fast-whisper使用的模型是基于CTranslate2 转换的,因此原openai的不支持。
该模型从huggingface/Systran下载ヾ(≧▽≦*)o

具体使用可参考AAVT文档中的本地模型加载使用说明

@Eisaichen
Copy link
Contributor

Eisaichen commented Jun 26, 2024

@Chenyme 主贴的这个fix能整合一下嘛?这个问题我这里100%会出现,每次新版本我都得改代码
这个issue在faster-whisper提出1年多了都没修,大概是指望不上了,只能先workaround

@Chenyme
Copy link
Owner

Chenyme commented Jun 26, 2024

@Chenyme 主贴的这个fix能整合一下嘛?这个问题我这里100%会出现,每次新版本我都得改代码

这个issue在faster-whisper提出1年多了都没修,大概是指望不上了,只能先workaround

好滴!最近期末考,可能晚点会合并😃

@Chenyme Chenyme added the 【文档/doc】 项目的补充文档 label Jul 27, 2024
@Chenyme Chenyme changed the title 关于Windows下faster-whisper使用GPU推理导致崩溃的处理方法 【修复】关于Windows下faster-whisper使用GPU推理导致崩溃的处理方法 Jul 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
【文档/doc】 项目的补充文档
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants