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

添加对 Linux 纯 CPU 的支持

Open lalala-233 opened this issue 1 year ago • 2 comments

修改完后即可支持 Linux 下纯 CPU 的训练和推导。 但是这是一个破坏性更新。 修改完后会导致 MacOS 不能正常使用。

希望大佬们修改修改。

另见 https://github.com/RVC-Boss/GPT-SoVITS/issues/373

lalala-233 avatar Feb 03 '24 07:02 lalala-233

其实device可以做一个全局参数,这样就可以切换mps/cuda/cpu了

以后兼容什么musa/rocm乱七八糟的也能用

@RVC-Boss 怎么看

KakaruHayate avatar Feb 03 '24 08:02 KakaruHayate

其实device可以做一个全局参数,这样就可以切换mps/cuda/cpu了

以后兼容什么musa/rocm乱七八糟的也能用

@RVC-Boss 怎么看

你要找的是不是 infer_deviceconfig.py

xiaokang00010 avatar Feb 09 '24 13:02 xiaokang00010

感谢感谢

ZhangJianBeiJing avatar Mar 04 '24 02:03 ZhangJianBeiJing

修改完后即可支持 Linux 下纯 CPU 的训练和推导。 但是这是一个破坏性更新。 修改完后会导致 MacOS 不能正常使用。

希望大佬们修改修改。

另见 #373

我尝试用mac跑了跑训练,后面我修改了一下代码,让他变成了纯CPU训练,即使有N卡,不知道楼主说的mac不能使用是指不用MPS还是会报错?

XXXXRT666 avatar Mar 04 '24 02:03 XXXXRT666

修改完后即可支持 Linux 下纯 CPU 的训练和推导。 但是这是一个破坏性更新。 修改完后会导致 MacOS 不能正常使用。 希望大佬们修改修改。 另见 #373

我尝试用mac跑了跑训练,后面我修改了一下代码,让他变成了纯CPU训练,即使有N卡,不知道楼主说的mac不能使用是指不用MPS还是会报错?

刚刚拉到最新版本看了一下,可以直接 cherry-pick,请问「修改一下代码变成纯 CPU」是碰到了什么问题吗?

Linux 下无法训练是因为 Windows 和 Mac 会默认使用 gloo 进行训练,但 Linux 默认使用 nccl 训练,因此我将 Linux 下默认训练后端改为 gloo。

同时,默认是判断如果 cuda 无法使用就使用 mps,所以安装了 cpu 版本的 pytorch 后也会使用 mps。

因此我将所有的 "mps" 改成了 "cpu"(只有两个 train.py 需要这么改)。

所以 Mac 不能使用只是我的猜测,或许只是抛弃了使用 mps(

~话说回来,你的说话风格有点像翻译。~

lalala-233 avatar Mar 04 '24 05:03 lalala-233

修改完后即可支持 Linux 下纯 CPU 的训练和推导。 但是这是一个破坏性更新。 修改完后会导致 MacOS 不能正常使用。

希望大佬们修改修改。

另见 #373

我尝试用mac跑了跑训练,后面我修改了一下代码,让他变成了纯CPU训练,即使有N卡,不知道楼主说的mac不能使用是指不用MPS还是会报错?

刚刚拉到最新版本看了一下,可以直接 cherry-pick,请问「修改一下代码变成纯 CPU」是碰到了什么问题吗?

Linux 下无法训练是因为 Windows 和 Mac 会默认使用 gloo 进行训练,但 Linux 默认使用 nccl 训练,因此我将 Linux 下默认训练后端改为 gloo。

同时,默认是判断如果 cuda 无法使用就使用 mps,所以安装了 cpu 版本的 pytorch 后也会使用 mps。

因此我将所有的 "mps" 改成了 "cpu"(只有两个 train.py 需要这么改)。

所以 Mac 不能使用只是我的猜测,或许只是抛弃了使用 mps(

~话说回来,你的说话风格有点像翻译。~

因为看到说会报错,我就参照几个issue自己改了点,有mps的情况下也是cpu训练,应该没大问题,后面也帮别人改了个windows 有N卡 情况下cpu训练的版本,我到时候下载不改动的文件看看,给n卡用我直接把cuda那边的if判断改为了if False,然后所有的tensor强制锁精度,没有细改,反正这个代码都是给cpu训练用的,我也没有在意mps了

XXXXRT666 avatar Mar 04 '24 06:03 XXXXRT666

现在 cpu 训练和推理已经合并进主代码里了,别人的 PR。 但是是以一种我没想到的方式,禁用 mps 性能反而提高了……

lalala-233 avatar Mar 15 '24 18:03 lalala-233