PyTorch 与 CUDA 之间存在密切的关系。在 AI 相关的应用中,如果使用 GPU 来处理数据以提高运算速度,通常会用到 CUDA 技术。而 PyTorch 要想利用 CUDA 进行加速运算,必须对应 CUDA 支持的版本,否则程序无法正确运行。
例如,目前 CUDA 官网最新的版本是 12.4,需要找到配套的 PyTorch 版本。对于 CUDA 12.1,实测可以匹配 CUDA 12.4。如果没有 N 卡,也可以用 CPU 代替 CUDA 进行运算处理,但速度会相对较慢,并且在代码中需要做相应调整。
以Windows为例:Python:由于实用到了f-string,至少要python 3.6以上版本,推荐现在比较流行的python 3.10ffmpeg:需要把ffmpeg里bin文件夹设置path环境变量,让python可以正常调用在cmd界面运行ffmpeg,可以查看到版本信息,就是变量设置成功了cuda:如果使用GPU来处理音频,可以用cuda提速,我是3050显卡,一首歌半分钟就转完了pytorch:一定要对应cuda对应的支持版本,否则程序无法正确运行目前cuda官网最新的版本是[12.4](https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local#),对应找到配套的[Pytorch](https://pytorch.org/get-started/locally/)版本,cuda12.1,实测可以匹配cuda 12.4下载完以后默认安装就可以本地运行完成安装如果没有N卡,可以用cpu代替cuda进行运算处理,缺点就是速度慢一些,代码中可以做一些相应调整(后面会讲到)[heading1]生成MID文件[content]把源文件放在input文件夹(支持MP3,WAV)可以直接用vs code运行start.py,也可以右键点击文件夹空白,打开Powershell窗口输入在cmd环境运行原始的start.py代码里是默认cuda运行的如果用cpu跑,还得把里面的cuda改成cpu,有点麻烦,我做了个简单的条件语句,这样可以在判定cuda不可用时自动转为cpu模式。转谱完成后,在output文件夹找到对应的mid文件
python 3.8及以上版本pytorch 1.13.1及以上版本transformers 4.26.1及以上版本建议使用CUDA 11.7及以上1、仓库克隆及依赖安装2、模型权重下载([链接](https://huggingface.co/Kwai-Kolors/Kolors)):或者3、模型推理:4、Web demo:[heading3]在Diffusers中使用[content]确保您安装了最新版本的diffusers(0.30.0.dev0):注意:KolorsPipeline默认使用EulerDiscreteScheduler作为噪声调度器。我们推荐使用该调度器时搭配guidance scale=5.0及num_inference_steps=50。KolorsPipeline同时支持EDMDPMSolverMultistepScheduler。在使用该噪声调度器时,推荐使用参数guidance scale=5.0及num_inference_steps=25。除了文生图能力,KolorsImg2ImgPipeline同时也支持图文生图功能。运行以下指令进行图像生成:
报错:页面文件太小,无法完成操作。答:增大系统虚拟内存大小,方法各种地方都能搜得到,不展开了。报错:torch.cuda.OutOfMemoryError:CUDA out of memory答:爆显存了,训练遇到的话调小批量大小,推理遇到的话使用强制切片RuntimeError:DataLoader worker(pid(s)xxxx)exited unexpectedly答:把虚拟内存再调大一点。报错:CUDA error:CUBLAS_STATUS_NOT_INITIALIZED when calling 'cublasCreate(handle)'答:爆显存了,基本上跟CUDA有关的报错大都是爆显存......报错:torch.multiprocessing.spawn.ProcessExitedException:process 0 terminated with exit code 3221225477答:调大虚拟内存报错:'HParams' object has no attribute 'xxx'答:无法找到音色,一般是配置文件和模型没对应,打开配置文件拉到最下面看看有没有你训练的音色报错:The expand size of the tensor(768)must match the existing size(256)at non-singleton dimension 0。答:把dataset/44k下的内容全部删了,重新走一遍预处理流程报错:Given groups=1,weight of size[xxx,256,xxx],expected input[xxx,768,xxx]to have 256 channels,but got 768 channels instead答:vec256的模型用了vec768的配置文件,如果上面报错的256的768位置反过来了那就是vec768的模型用了vec256的配置文件,请参考本文的的旧模型兼容,确认你的配置文件和模型维度对应。报错:配置文件中的编码器与模型维度不匹配答:在修改配置文件中的"speech_encoder"时修改错了,检查配置文件中的"ssl_dim"一项,如果这项是256,那你的