GPT-SoVITS icon indicating copy to clipboard operation
GPT-SoVITS copied to clipboard

Mac 运行方法分享

Open Lion-Wu opened this issue 1 year ago • 94 comments

本项目已支持Mac训练,请不要根据本教程安装,按照README克隆原项目代码进行安装。

我修改了一些代码,让它可以在Mac上运行,支持MPS加速,给各位写个具体的方法:

  1. 我把修改后的完整项目文件传到 iCloud 中了,点击下载副本就可以了。链接
  2. 根据情况修改 webui.py 中的显存大小(可跳过):
# 检查MPS的可用性
if torch.backends.mps.is_available():
    if_mps_ok = True
    gpu_infos.append("MPS")
    mem.append(32) # 修改成显存大小,默认大约是系统内存大小的2/3,这个是用于计算batch size的,其实不改也没事,webUI可手动调
  1. 创建 Conda 环境:
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
  1. 定位到项目目录:cd 你的项目路径
  2. 安装依赖:pip install -r requirements.txt
  3. 安装特定版本的ASR依赖。最新版本的funasr依赖改了,打标时会出错,所以安装此版本:pip install funasr==0.8.7
  4. 安装nightly版本pytorch,2.1.2实测会出错:pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
  5. 如果没有安装ffmpeg,安装它:brew install ffmpeg
  6. 运行webUI即可:python webui.py

基本上大部分webUI内的功能都可使用MPS运行,不过有几个例外:

  1. UVR5 webui是使用CPU进行的,可以前往原项目地址下载Mac最新版本GUI,勾选GPU运行,速度会更快一点,可选功能也会更多。
  2. ASR功能由于使用阿里的依赖进行,更改成mps比较麻烦,不过CPU速度也快的。
  3. 我在代码中默认开启了PYTORCH_ENABLE_MPS_FALLBACK=1,遇到mps不支持的功能时自动使用cpu运行。

已知问题:存在内存泄漏,主要体现在推理时,多次推理后可能导致内存占用很高,暂时不知道如何解决。不过大体上不太影响,重启推理UI可以释放内存。

修改过程主要就是对所有分布式训练的代码进行更改,因为mps上不需要也不支持分布式训练。

代码改动较复杂,之后如果可能,我会尝试给作者提交PR。 这是我目前为止用过的效果最好的TTS项目,非常感谢作者开源! 如果有任何问题或建议欢迎提出

Lion-Wu avatar Jan 23 '24 11:01 Lion-Wu

可以pr个,你pr完我测试下win和linux的兼容性

RVC-Boss avatar Jan 23 '24 13:01 RVC-Boss

可以pr个,你pr完我测试下win和linux的兼容性

好,我试一下

Lion-Wu avatar Jan 23 '24 13:01 Lion-Wu

超級感謝!M2已經安裝完成,要來運行看看了

hwoarangkang avatar Jan 23 '24 14:01 hwoarangkang

btw, 第9項的「运行webUI即可:python wbeui.py」應更正為「运行webUI即可:python webui.py」就完美了

hwoarangkang avatar Jan 23 '24 14:01 hwoarangkang

btw, 第9項的「运行webUI即可:python wbeui.py」應更正為「运行webUI即可:python webui.py」就完美了

感谢指正!我这愚蠢的错误🤥

Lion-Wu avatar Jan 23 '24 14:01 Lion-Wu

请问下使用你云盘的包,可以升级最新版本吗?如何升级?

Stanley-baby avatar Jan 24 '24 05:01 Stanley-baby

请问下使用你云盘的包,可以升级最新版本吗?如何升级?

什么意思?

Lion-Wu avatar Jan 24 '24 05:01 Lion-Wu

Git pull

Stanley-baby avatar Jan 24 '24 05:01 Stanley-baby

这个可能不行,我不太清楚。我尽快给作者pr,等合并之后再重新下载原项目更新吧

Lion-Wu avatar Jan 24 '24 07:01 Lion-Wu

有其他mac运行成功的案例吗,想知道是不是macos系统的原因(我是macos·12)导致生成的模型推理出来没声音。

Dx-wmc avatar Jan 24 '24 08:01 Dx-wmc

有其他mac运行成功的案例吗,想知道是不是macos系统的原因(我是macos·12)导致生成的模型推理出来没声音。

我是M2 Max,系统是macOS 14.2.1,按 @Lion-Wu 提供的包和安装方法走了一遍,推理出的模型有声音,但是只是哼哼哈哈的声音...

shisaq avatar Jan 24 '24 08:01 shisaq

内存泄露确实比价严重

CleanShot 2024-01-24 at 19 24 21@2x

Stanley-baby avatar Jan 24 '24 11:01 Stanley-baby

有其他mac运行成功的案例吗,想知道是不是macos系统的原因(我是macos·12)导致生成的模型推理出来没声音。

有可能是训练本身的问题,我能输出但是效果有差距,感觉训练时间的问题

RoversX avatar Jan 24 '24 18:01 RoversX

下载部署以后在最后的推理出现了问题,推理开始挺快,到15以后逐渐变慢,然后报错,请问这个应该如何解决 截屏2024-01-25 03 41 22

CrusherStanley avatar Jan 24 '24 19:01 CrusherStanley

有其他mac运行成功的案例吗,想知道是不是macos系统的原因(我是macos·12)导致生成的模型推理出来没声音。

有可能是训练本身的问题,我能输出但是效果有差距,感觉训练时间的问题

我尝试修改了可能导致问题的代码,正在给作者pr,可以等晚点合并了再试试看有没有这个问题

Lion-Wu avatar Jan 25 '24 03:01 Lion-Wu

我用intel的Mac,请问可以完全用cpu跑吗?慢一点没关系

Stone-0211 avatar Jan 25 '24 03:01 Stone-0211

下载部署以后在最后的推理出现了问题,推理开始挺快,到15以后逐渐变慢,然后报错,请问这个应该如何解决 截屏2024-01-25 03 41 22

查看一下是否内存占用过高,出现了使用了swap内存交换导致的性能下降

Lion-Wu avatar Jan 25 '24 03:01 Lion-Wu

我用intel的Mac,请问可以完全用cpu跑吗?慢一点没关系

这个我不确定,可以尝试一下,当然可能需要更改一些代码。

Lion-Wu avatar Jan 25 '24 03:01 Lion-Wu

大概要改哪些地方的啊?😂

Stone-0211 avatar Jan 25 '24 03:01 Stone-0211

大概要改哪些地方的啊?😂

主要就是把所有device = "mps"改成device = "cpu",把.to("mps")换成.to("cpu"),还有一个地方我记得会提示只能用GPU训练,你可以把那一行删掉后试一下

Lion-Wu avatar Jan 25 '24 03:01 Lion-Wu

大概要改哪些地方的啊?😂

如果只是用来推理只需要改inference.py

你可以参考https://github.com/RVC-Boss/GPT-SoVITS/issues/93#issue-2091450808

这个是用CPU推理的,intel应该可以

RoversX avatar Jan 25 '24 03:01 RoversX

根据 #93 改了一下,但仍然一直报错 FileNotFoundError: [Errno 2] No such file or directory: 'logs/ss/2-name2text-0.txt'

Stone-0211 avatar Jan 25 '24 03:01 Stone-0211

根据 #93 改了一下,但仍然一直报错 FileNotFoundError: [Errno 2] No such file or directory: 'logs/ss/2-name2text-0.txt'

这个只能用于推理,应该没法训练,你可以尝试云端训练,再本地推理

Lion-Wu avatar Jan 25 '24 03:01 Lion-Wu

ok我试试

Stone-0211 avatar Jan 25 '24 03:01 Stone-0211

有人对比过CPU与GPU的推理速度吗?GPU运行有更快吗?

Lion-Wu avatar Jan 25 '24 09:01 Lion-Wu

Traceback (most recent call last): File "/Users/xxx/workspace/GPT-SoVITS/tools/damo_asr/cmd-asr.py", line 23, in inference_pipeline = pipeline( File "/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/pipelines/builder.py", line 170, in pipeline return build_pipeline(cfg, task_name=task) File "/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/pipelines/builder.py", line 65, in build_pipeline return build_from_cfg( File "/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/utils/registry.py", line 215, in build_from_cfg raise type(e)(f'{obj_cls.name}: {e}') ImportError: AutomaticSpeechRecognitionPipeline: dlopen(/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so, 0x0002): tried: '/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (no such file), '/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))

summerHearts avatar Jan 25 '24 10:01 summerHearts

有其他mac运行成功的案例吗,想知道是不是macos系统的原因(我是macos·12)导致生成的模型推理出来没声音。

我是M2 Max,系统是macOS 14.2.1,按 @Lion-Wu 提供的包和安装方法走了一遍,推理出的模型有声音,但是只是哼哼哈哈的声音...

我又测试了一下不同的生成模型,结果发现GPT_weights的模型数值越高的越逼真(e15.pthe5.pth的语气更连贯);但SoVITS_weights只能选e4_s32.pth,选e8就开始有口齿不清的状况,选e12就会出现只有哼哼哈哈的状况了。SoVITS_weights这是越训练效果越差吗...

shisaq avatar Jan 25 '24 14:01 shisaq

有人对比过CPU与GPU的推理速度吗?GPU运行有更快吗?

区别不大

RoversX avatar Jan 25 '24 17:01 RoversX

Traceback (most recent call last): File "/Users/xxx/workspace/GPT-SoVITS/tools/damo_asr/cmd-asr.py", line 23, in inference_pipeline = pipeline( File "/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/pipelines/builder.py", line 170, in pipeline return build_pipeline(cfg, task_name=task) File "/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/pipelines/builder.py", line 65, in build_pipeline return build_from_cfg( File "/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/modelscope/utils/registry.py", line 215, in build_from_cfg raise type(e)(f'{obj_cls.name}: {e}') ImportError: AutomaticSpeechRecognitionPipeline: dlopen(/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so, 0x0002): tried: '/Users/xxxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (no such file), '/Users/xxx/anaconda3/envs/GPTSoVits/lib/python3.9/site-packages/hdbscan/_hdbscan_linkage.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))

Intel chip用CPU推理吧

RoversX avatar Jan 25 '24 17:01 RoversX

各位久等了,我优化了一下代码,并提交了PR,原项目已支持mps,不过代码还是有些问题,请等待这个PR合并后克隆仓库最新代码并按照README进行安装。 关于推理效果、吞字情况可参考 #51、#70 中的描述,也许不是mps的问题。也希望更多人可以反馈运行的效果,谢谢各位。 内存泄漏问题仍然存在,如果出现问题的可以修改代码切换到CPU推理(我还没试过,CPU推理应该没有内存泄漏吧) 另外仓库中的代码应该已经支持自动对不支持GPU推理的设备使用CPU推理,不过没有对CPU训练进行优化,是否可行还没有测试。 附MPS支持条件:带有Apple 芯片或AMD GPU的Mac,macOS 12.3或更高版本,Python 3.7或更高版本,已安装Xcode command-line tools: xcode-select --install

另外碰到其他问题还请提出,谢谢各位了

Lion-Wu avatar Jan 25 '24 18:01 Lion-Wu