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

Apple 芯片Mac模型本地推理和预处理 #93

Open
RoversX opened this issue Jan 19, 2024 · 40 comments
Open

Apple 芯片Mac模型本地推理和预处理 #93

RoversX opened this issue Jan 19, 2024 · 40 comments

Comments

@RoversX
Copy link

RoversX commented Jan 19, 2024

本教程已过时,请参照Lion-Wu的教程,目前已经支持MPS训练和推理: #93 (comment)



Mac 训练比较困难,mps训练目前没测试成功,本地推理和预处理是可以的,效果挺不错,(稍微有吞字问题),感谢作者开源! Screenshot 2024-01-18 at 2 23 51 PM Screenshot 2024-01-18 at 4 44 01 PM

推理

文件可以在Colab或者云服务商上训练然后把模型下载下来
整合包参考:#4

1.首先需要先把webui跑起来

python web.py
Screenshot 2024-01-19 at 2 06 21 PM

2.点Allow到浏览器打开

Screenshot 2024-01-19 at 2 07 08 PM

3. 选好GPT模型和SOVITS 模型

点击是否开启TTS推理WebUI

这个时候可能会报错,需要修改GPT_SoVITS/inference_webui.py用CPU推理

4. 需要改两个地方

  1. 把CUDA改成CPU
  2. 把半精度改成全精度 model.half() ---> model.float()
Screenshot 2024-01-18 at 2 03 36 PM Screenshot 2024-01-18 at 2 06 08 PM

修改好保存然后重新运行下就可以运行了。

python web.py

参考文件:https://github.com/RoversX/GPT-SoVITS/blob/main/GPT_SoVITS/inference_webui.py

Screenshot 2024-01-18 at 2 09 15 PM

预处理

https://github.com/RoversX/GPT-SoVITS/tree/main/GPT_SoVITS/prepare_datasets
替换文件夹下面的文件
主要就是改成device="cpu"

参考:
#61

English Version will be provided on myblog

@Dx-wmc
Copy link

Dx-wmc commented Jan 20, 2024

你好,我m1芯片用conda安装gxx和pytorch-cuda=11.8的时候提示`Could not solve for environment specs
Encountered problems while solving:

  • nothing provides requested gxx
  • nothing provides cuda 11.8.* needed by pytorch-cuda-11.8-h8dd9ede_2

The environment can't be solved, aborting the operation`这个有解决办法吗

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 20, 2024

你好,我m1芯片用conda安装gxx和pytorch-cuda=11.8的时候提示`Could not solve for environment specs Encountered problems while solving:

  • nothing provides requested gxx
  • nothing provides cuda 11.8.* needed by pytorch-cuda-11.8-h8dd9ede_2

The environment can't be solved, aborting the operation`这个有解决办法吗

M芯片怎么能装cuda的呀,得装Mac版本的:conda install pytorch::pytorch torchvision torchaudio -c pytorch,另外 gxx 参照 ChatGPT的回答:
要在带有Apple M1芯片的Mac上安装gxx(GNU C++编译器),你可以通过Homebrew这个包管理器来安装。以下是基本步骤:

  1. 确保你的Mac上安装了Homebrew。如果尚未安装,你可以从Homebrew的官网获取安装指令。

  2. 使用Homebrew安装GCC,这通常会包括gxx。在终端中运行brew install gcc来安装GCC。

  3. 安装完成后,可以通过在终端中运行g++ --version来检查是否成功安装了gxx

不要通过install.sh安装,会出问题

@Dx-wmc
Copy link

Dx-wmc commented Jan 20, 2024

好不容易能运行了,按照RoversX的都改了,但是最后最后语音生成的时候直接error
image
代码区的报错是:Traceback (most recent call last): File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/gradio/routes.py", line 321, in run_predict output = await app.blocks.process_api( File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/gradio/blocks.py", line 1006, in process_api result = await self.call_function(fn_index, inputs, iterator, request) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/gradio/blocks.py", line 859, in call_function prediction = await anyio.to_thread.run_sync( File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread return await future File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 851, in run result = context.run(func, *args) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/gradio/utils.py", line 408, in async_iteration return next(iterator) File "/Users/dx/workdir/software/GPT-SoVITS/GPT_SoVITS/inference_webui.py", line 159, in get_tts_wav ssl_content = ssl_model.model(wav16k.unsqueeze(0))[ File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl return self._call_impl(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1527, in _call_impl return forward_call(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/transformers/models/hubert/modeling_hubert.py", line 1081, in forward extract_features = self.feature_extractor(input_values) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl return self._call_impl(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1527, in _call_impl return forward_call(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/transformers/models/hubert/modeling_hubert.py", line 354, in forward hidden_states = conv_layer(hidden_states) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl return self._call_impl(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1527, in _call_impl return forward_call(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/transformers/models/hubert/modeling_hubert.py", line 256, in forward hidden_states = self.conv(hidden_states) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl return self._call_impl(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1527, in _call_impl return forward_call(*args, **kwargs) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 310, in forward return self._conv_forward(input, self.weight, self.bias) File "/opt/anaconda3/envs/test/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 306, in _conv_forward return F.conv1d(input, weight, bias, self.stride, RuntimeError: "slow_conv2d_cpu" not implemented for 'Half' 这又咋办啊

@Dx-wmc
Copy link

Dx-wmc commented Jan 20, 2024

记录一下上面的解决方案:改一下config.py 改第二行is_half=False和第五行infer_device="cpu"

@Dx-wmc
Copy link

Dx-wmc commented Jan 20, 2024

想问一下,M1是不是训练两个模型没用啊,我训练完了以后在推理那找不到模型
image

@RoversX
Copy link
Author

RoversX commented Jan 20, 2024

想问一下,M1是不是训练两个模型没用啊,我训练完了以后在推理那找不到模型 image

Screenshot 2024-01-20 at 12 11 26 PM

模型在这两个文件夹里面,一个是GPT模型,一个是SoVITS模型

├── GPT_weights
   └── LeiJun-e15.ckpt
├── SoVITS_weights
  └── LeiJun_e10_s470.pth

Mac训练模型还是缓缓吧,你试试AutoDL上的镜像吧

@HildaM
Copy link

HildaM commented Jan 22, 2024

将cuda改为mps应该也可以吧?

@RoversX
Copy link
Author

RoversX commented Jan 22, 2024

将cuda改为mps应该也可以吧?

我目前测试下还没有支持mps,要是可以的话还请告知

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 22, 2024

各位,修改了一下代码后成功跑在MPS上了!推理和训练都可以做,负载基本都在GPU上了。我有空整理一下代码发出来

Screenshot 2024-01-22 at 23 00 36 Screenshot 2024-01-22 at 23 17 10 Screenshot 2024-01-22 at 23 18 33 Screenshot 2024-01-22 at 23 22 26

@RoversX
Copy link
Author

RoversX commented Jan 22, 2024

各位,修改了一下代码后成功跑在MPS上了!推理和训练都可以做,负载基本都在GPU上了。我有空整理一下代码发出来

Screenshot 2024-01-22 at 23 00 36 Screenshot 2024-01-22 at 23 17 10 Screenshot 2024-01-22 at 23 18 33 Screenshot 2024-01-22 at 23 22 26

👍👍👍

@Dx-wmc
Copy link

Dx-wmc commented Jan 23, 2024

大家,修改一下代码后成功跑在MPS上了!推理和训练都可以做,负载基本都在GPU上去了。我有空整理一下代码发出来

截图 2024-01-22 23 00 36 截图 2024-01-22 23 17 10 截图 2024-01-22 23 18 33 截图 2024-01-22 23 22 26

怎么做到的,我也尝试过mps但是一直失败,等着大佬出教程啊。

@Stanley-baby
Copy link

Stanley-baby commented Jan 23, 2024 via email

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 23, 2024

代码整理完毕,给各位写个具体的方法:

  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项目,非常感谢作者开源!
如果有任何问题或建议欢迎提出

@Stanley-baby
Copy link

Stanley-baby commented Jan 23, 2024 via email

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 23, 2024

一定要Python3.9吗?3.11行不行?

这个我没尝试过,readme中写的3.9我就用的3.9,你可以试试看

@Stanley-baby
Copy link

依赖怎么也装不上。。。

ERROR: Could not find a version that satisfies the requirement scipy (from versions: none)
ERROR: No matching distribution found for scipy

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 23, 2024

依赖怎么也装不上。。。

ERROR: Could not find a version that satisfies the requirement scipy (from versions: none) ERROR: No matching distribution found for scipy

不会啊,你要不试试brew install scipy或者 conda install scipy,然后把scipy从requirements.txt中删除再重新安装依赖
可以提供更多系统和版本信息吗?

@Stanley-baby
Copy link

好像可以了,请问下使用你云盘中的副本,还需要安装brew install gcc吗?还是说直接就按照你的步骤来就可以了?

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 23, 2024

好像可以了,请问下使用你云盘中的副本,还需要安装brew install gcc吗?还是说直接就按照你的步骤来就可以了?

应该不需要的吧,Mac上有Clang的

@Stanley-baby
Copy link

大佬 为什么我的界面是英文的呢?语言在哪里改呀?
CleanShot 2024-01-23 at 22 08 54@2x

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 23, 2024

大佬 为什么我的界面是英文的呢?语言在哪里改呀? CleanShot 2024-01-23 at 22 08 54@2x

这个应该是根据系统设置的语言来的,具体不太清楚,你可以先用网页翻译软件,我再看看。

@Dx-wmc
Copy link

Dx-wmc commented Jan 23, 2024

我测试了一下,完成度很高,可以说解决了mac不能构建模型的弊端。
但是有一些问题:
1.模型的微调过程可以顺利完成,但使用新创建的模型时遇到了问题,即推理的时候模型没有发出声音。相比之下,我使用之前构建好的模型还能正常运行并产生声音(表明该环境没问题,是模型的问题)。
2.推理使用mps效果并不佳,不如cpu好。我测试了之前构建且运行良好的模型时,吞字吐字现象较为严重。

注:我系统为macos12

@RoversX
Copy link
Author

RoversX commented Jan 23, 2024

目前测试下来可以正常调用👍

Screenshot 2024-01-23 at 11 26 37 AM

@RoversX
Copy link
Author

RoversX commented Jan 23, 2024

我测试了一下,完成度很高,可以说解决了mac不能构建模型的弊端。 但是有一些问题: 1.模型的微调过程可以顺利完成,但使用新创建的模型时遇到了问题,即推理的时候模型没有发出声音。相比之下,我使用之前构建好的模型还能正常运行并产生声音(表明该环境没问题,是模型的问题)。 2.推理使用mps效果并不佳,不如cpu好。我测试了之前构建且运行良好的模型时,吞字吐字现象较为严重。

注:我系统为macos12

发现同样问题

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 24, 2024

我暂时还没遇到这些问题,不知道是不是版本的问题。我使用的是macOS 14版本。不知道有没有更多人能测试一下。
吞吐字现象严重有没有可能是项目本身的问题?好像说推理的字太多会导致出现吞吐字现象

@RoversX
Copy link
Author

RoversX commented Jan 24, 2024

我暂时还没遇到这些问题,不知道是不是版本的问题。我使用的是macOS 14版本。不知道有没有更多人能测试一下。 吞吐字现象严重有没有可能是项目本身的问题?好像说推理的字太多会导致出现吞吐字现象

感觉还是训练时间或者模型本身的问题,云端训练出来的模型效果确实更好一点

@CrusherStanley
Copy link

我在最后推理的时候遇到了问题,请问各位有遇到这个情况的吗
截屏2024-01-25 03 28 44

@HuaQitian519
Copy link

HuaQitian519 commented Jan 25, 2024

代码整理完毕,给各位写个具体的方法:

  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项目,非常感谢作者开源! 如果有任何问题或建议欢迎提出

注意,第六步应该为pip install funasr==0.8.7
pip install modelscope==1.10.0不然也会报错⚠️

@Stanley-baby
Copy link

请问现在是直接 git克隆最新项目然后使用这里的文档步骤安装就可以了吗?

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 26, 2024

请问现在是直接 git克隆最新项目然后使用这里的文档步骤安装就可以了吗?

是的

@brownppfeng
Copy link

一键三连的时候,报下面错误咋搞

"/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py
"/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py
[nltk_data] Error loading averaged_perceptron_tagger: <urlopen error
[nltk_data] [Errno 60] Operation timed out>
[nltk_data] Error loading averaged_perceptron_tagger: <urlopen error
[nltk_data] [Errno 60] Operation timed out>

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 26, 2024

一键三连的时候,报下面错误咋搞

"/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py "/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py [nltk_data] Error loading averaged_perceptron_tagger: <urlopen error [nltk_data] [Errno 60] Operation timed out> [nltk_data] Error loading averaged_perceptron_tagger: <urlopen error [nltk_data] [Errno 60] Operation timed out>

检查网络问题,或者手动根据readme步骤下载预训练模型

@brownppfeng
Copy link

一键三连的时候,报下面错误咋搞
"/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py "/Users/brownfeng/miniforge3/envs/GPTSoVits/bin/python" GPT_SoVITS/prepare_datasets/1-get-text.py [nltk_data] Error loading averaged_perceptron_tagger: <urlopen error [nltk_data] [Errno 60] Operation timed out> [nltk_data] Error loading averaged_perceptron_tagger: <urlopen error [nltk_data] [Errno 60] Operation timed out>

检查网络问题,或者手动根据readme步骤下载预训练模型

谢谢大佬我看看

@kingkick
Copy link

我测试了一下,完成度很高,可以说解决了mac不能构建模型的弊端。 但是有一些问题: 1.模型的微调过程可以顺利完成,但使用新创建的模型时遇到了问题,即推理的时候模型没有发出声音。相比之下,我使用之前构建好的模型还能正常运行并产生声音(表明该环境没问题,是模型的问题)。 2.推理使用mps效果并不佳,不如cpu好。我测试了之前构建且运行良好的模型时,吞字吐字现象较为严重。

注:我系统为macos12

类似问题, macos13.6.4,intel,可能微调sovits是有问题,推理的时候声音模糊不清,sovits更换官方提供就能听清楚一些。

@kingkick
Copy link

kingkick commented Jan 30, 2024

我测试了一下,完成度很高,可以说解决了mac不能构建模型的弊端。 但是有一些问题: 1.模型的微调过程可以顺利完成,但使用新创建的模型时遇到了问题,即推理的时候模型没有发出声音。相比之下,我使用之前构建好的模型还能正常运行并产生声音(表明该环境没问题,是模型的问题)。 2.推理使用mps效果并不佳,不如cpu好。我测试了之前构建且运行良好的模型时,吞字吐字现象较为严重。
注:我系统为macos12

类似问题, macos13.6.4,intel,微调GPT这步没什么问题,可能在微调sovits时有问题,推理用微调后sovits模型声音模糊不清,sovits更换官方提供模型就能听清楚一些。

@confeitocyan
Copy link

iShot_2024-01-30_21 01 09 image 我是M1 air 內存8G macos 12.6.8, 我也有webui是英文的問題 還有我的sovits在微調時,會cuda報錯,明明已經結束了,但不會停止 然後,我的推理似乎無法成功,出來沒聲音。

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Jan 30, 2024

iShot_2024-01-30_21 01 09 image 我是M1 air 內存8G macos 12.6.8, 我也有webui是英文的問題 還有我的sovits在微調時,會cuda報錯,明明已經結束了,但不會停止 然後,我的推理似乎無法成功,出來沒聲音。

这个不是报错。训练结束后webui上应该会显示结束的,如果没有可以稍微等一会儿。推理尝试使用其他模型或者重新训练看看,应该不是mps的问题。

@belugaming
Copy link

代码整理完毕,给各位写个具体的方法:

  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项目,非常感谢作者开源! 如果有任何问题或建议欢迎提出

请问大佬可以出一个新版本吗?这个已经成功在Mac Studio使用GPU了.速度翻倍,非常感谢

@Lion-Wu
Copy link
Contributor

Lion-Wu commented Mar 19, 2024

代码整理完毕,给各位写个具体的方法:

  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项目,非常感谢作者开源! 如果有任何问题或建议欢迎提出

请问大佬可以出一个新版本吗?这个已经成功在Mac Studio使用GPU了.速度翻倍,非常感谢

使用仓库最新代码就行了,不过现在使用mps加速第一有内存泄漏,第二训练出来的模型生成的声音是很差的,所以我们暂时使用CPU,等pytorch mps优化好后再使用GPU加速。

@belugaming
Copy link

belugaming commented Mar 19, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests