MusicGPT部署实战:基于musicgen的文字到音乐生成模型
前言
MusicGen模型是由Meta公司开发的开源音乐生成模型,而MusicGPT是GitHub上的一个开源项目。MusicGPT将MusicGen模型和使用方法封装在一起,提供友好的用户界面(webui)、快速部署、GPU加速、推理速度优化等功能,为本地音乐生成提供了简单的入门方案。
实际上这个仓库相对有些过时,musicgen模型早已更新v2,支持立体声音乐生成;而这个项目仍使用初代模型,只能生成最大30s的单声道音乐,且不支持melody模型。不过对于中端消费级计算机来说仍然是不错的入门选择。
项目
仓库地址:https://github.com/gabotechs/MusicGPT
Release下载地址:https://github.com/gabotechs/MusicGPT/releases
本文基于Windows,直接下载musicgpt-x86_64-pc-windows-msvc.exe即可。
运行前准备
MusicGPT支持两种运行方式:CPU和GPU。
- 如果你拥有一块显存6G以上的NVIDIA显卡,在下载CUDA、cuDNN并做好配置后可以使用GPU运行,生成速度会相对较快。
- 否则,你可以使用CPU来运行。实际速度并不会慢太多,但需要更多的内存。
CPU运行配置:
CPU:推荐桌面端i7-9700、移动端i7-11800H或更强的处理器
内存:至少16G,建议32G;推荐DDR4-3200或更高速率
硬盘:在C盘需预留3-20GB空间(取决于运行的模型),推荐固态硬盘
网络:国际互联网连接
GPU运行配置:
显卡:支持CUDA 12的NVIDIA GPU,建议3060及以上显卡
内存:建议不少于8G
硬盘:在C盘需预留3-20GB空间(取决于运行的模型),推荐固态硬盘
网络:国际互联网连接
由于模型会在初次运行时自动下载,因此需要稳定(最好是高速)的国际互联网连接。
- small模型约需下载2GB数据,medium模型约7.5GB。
开始使用
下载程序后,放在一个特定文件夹中,可以直接双击运行。
不带任何参数启动时,会默认下载/使用small模型,并采用CPU运行。
程序下载的模型位置:%APPDATA%\gabotechs\musicgpt\data\v1
其他数据位置:%APPDATA%\gabotechs\musicgpt\data
运行成功后,将主程序重命名为musicgpt.exe或其他方便的名字,随后编写批处理脚本方便后续使用。如果希望直接以想要的模型开始,也可以先写脚本再启动。
脚本示例1:使用GPU运行small模型
1 |
|
脚本示例2:使用GPU运行medium模型
1 |
|
启动成功后,网页会自动打开,直接在界面中进行对话即可。这也是这个项目的一大特色功能,即提供了类似chatGPT的聊天界面来生成音乐。发送你要生成的提示词即可生成。
程序在运行后无法切换模型,如果要切换则必须重新以不同的参数启动软件。
解决GPU问题
在初次运行时出现的错误一般是网络导致的,考虑使用代理服务器。
我个人遇到最大的问题是GPU运行错误。CPU模式下运行正常,但加入--gpu
参数后程序报错。
典型的错误信息包含以下内容:
1 |
|
(因为这篇文章是一段时间之后写的了,部分内容是靠回忆写的,但大体的含义是一样的)
遇到这个信息说明硬件加速的环境配置有问题。我在网上查询了很长时间,最终在NVIDIA开发者论坛中找到了最终解决方案。但在此之间,请先进行健全性检查:
- 在cmd中运行
nvcc --version
,检查cuda是否安装、配置正确,以及是否为正确的版本(需要12以上);如果版本不正确则重新安装新版本,如果无法执行命令则环境变量没有配置好,请参考网上的cuda安装教程来配置环境变量。 - 参照网上的教程安装cuDNN,这一步非常关键,MusicGPT采用的onnx硬件加速是需要cuDNN的,因此不安装或版本有误都会导致运行错误。
如果经过以上两个步骤仍然无法解决,则请出最终杀手:依赖项检查。
- 在GitHub下载Dependencies:https://github.com/lucasg/Dependencies
- 解压程序,运行DependenciesGui.exe
- 找到报错信息中后面的dll文件路径,通常位于
%APPDATA%\gabotechs\musicgpt\data\dynlibs\1.20.1\onnxruntime-win-x64-gpu-1.20.1\lib\onnxruntime_providers_cuda.dll
- 将这个dll文件拖进刚才的DependenciesGui.exe窗口中,看左边列表中是否有缺失的依赖库(如图就缺失了一个,原因是电脑中安装的cuDNN版本是8,而程序需要9)
- 根据缺失的信息可以上网搜索如何解决,将对应的文件补全后程序应该可以正常运行。