首发日期 2024-08-15, 以下为原文内容:
穷, 没有 N 卡 ! 穷, 没有 N 卡 !穷, 没有 N 卡 !! (重要的事情说 3 遍. )
最近发现了一个很新的 AI (神经网络) 文本转语音大模型:https://speech.fish.audio/
fish-speech 可以根据输入的文本, 生成高质量的人类说话声音, 效果挺好的.fish-speech 官方已经提供了容器 (docker) 镜像, 但是这个镜像很大 (好多 GB),下载速度慢, 使用并不方便.
所以决定自制容器镜像, 方便直接部署运行 (podman).那么问题来了: 把派蒙装进容器, 一共需要几步 ?
这里是 穷人小水滴, 专注于 穷人友好型 低成本技术.下面开始吧 ~
相关视频: 《win10 安装 Podman Desktop (教程)》
相关文章:
《构建 deno/fresh 的 docker 镜像》
《基于 sftp 的 NAS (局域网文件存储服务器)》
《光驱的内部结构及日常使用》
1 天下苦 N 卡久矣
2 制作 fish-speech 容器镜像
2.1 构建 python 基础镜像
2.2 构建 fish-speech 镜像
2.3 镜像的长期保存 (刻录光盘)
3 测试运行 (CPU 推理)
4 总结与展望
AI (神经网络) 大模型已经火了好几年了,但是普通人想要在本地运行 AI 大模型, 仍然面对巨大的困难:
(1) N 卡 (CUDA) 垄断.如果没有 N 卡 (没有 CUDA), 那么基本上各种 AI 都是玩儿不了的,A 卡和 I 卡基本没啥用, 只能在角落吃灰.(大部分能够本地运行的 AI 都只支持 N 卡. )
(2) 网速太慢.AI 大模型相关的软件, 通常体积巨大, 几 GB 都是小的, 几十 GB 也很常见.然而下载速度又太慢, 一个模型需要下载好久, 甚至下载失败.
在下, 作为根正苗红的穷人, 那自然是无论如何也买不起 N 卡的.只能仰天大呼: CUDA 宁有种乎 ?
于是乎, 只能祭出终极大杀器: CPU 推理 !既然被 GPU 无情抛弃, 那么就转身投入 CPU 的温暖怀抱 !
用 9 年前的弱鸡老旧 CPU (i5-6200U) 强行小马拉大车,配合 16GB 内存 (DDR3-1600MHz), 吭哧吭哧虽然很吃力, 但也不是不能运行嘛 !
什么 ? CPU 运行太慢 ??穷人嘛, 钱是没有的, 时间那可是大大的有 !反正穷人的时间又不值钱, 慢慢运行也是能出结果的啦.
总之, 买 N 卡是不可能买的, 这辈子都不可能的,也就只能是蹭蹭温暖的娇小 CPU, 在风扇声旁安然入睡这样子.
首先从这里下载源代码包: https://github.com/fishaudio/fish-speech
然后从这里下载 "模型" 数据文件: https://hf-mirror.com/fishaudio/fish-speech-1.2-sft
构建容器镜像的过程中, 需要从网络下载大量文件, 所以为了方便制作,方便修改和调试, 这里首先制作一个基础镜像, 安装好依赖的各种软件包.
Dockerfile 文件内容:
fish-speech 要求使用 python 3.10 版本, 如果 python 版本不对,可能会出现一些奇奇怪怪的问题, 所以使用 ubuntu:22.04.
构建命令:
可能需要执行较长时间, 结果如下:
此处 f-base 就是制作好的基础镜像.
首先准备所需文件, 解压源码包 fish-speech-main.zip,放入模型数据 checkpoints/fish-speech-1.2-sft/, 再放入参考音频,文件列表如下:
参考音频放在 ref_data 目录, 下级目录格式 说话者/情绪,比如此处 1paimon/e1 表示说话者 1paimon, 情绪 e1.这些目录可以随意命名.
然后里面放 参考音频, 格式为 "音频-标签" 对.比如 2003_1.wav 就是一个声音文件 (wav 格式),2003_1.lab 是这段声音对应的文本内容.注意音频文件和标签文件的名称对应.
然后使用的 Dockerfile 如下:
最后的命令 (CMD) 会运行一个 HTTP 服务器, 方便调用.--device cpu 表示使用 CPU 推理 (计算).
构建命令:
结果:
其中 fish-speech 就是构建出来的镜像, 很大, 17.1GB.
保存镜像:
获得:
压缩后大小 10GB.有了这个镜像文件, 部署运行就很方便了.
上述制作镜像的过程中, 需要通过网络下载大量的数据, 很不容易.所以制作好的镜像文件需要好好保存, 防止丢失.
此处选择使用一张 BD-R 25G 光盘来备份数据:
光盘里面的文件:
可以方便的使用 sha256sum -c sha256.txt 检查光盘中的文件是否损坏:
蓝光光盘最大读取速度可达 35MB/s.
使用 podman 运行 fish-speech 容器 (HTTP 服务器):
生成音频:
生成过程中产生的日志:
好了, 成功获得了一只神之嘴, 撒花 ~
使用 CPU 推理, 速度大约比 N 卡慢 100 倍, 生成 1 秒的音频大约需要 1 分钟.
这个速度虽然很慢, 但是也是具有一定的实用意义的,比如制作一个 10 分钟的视频, 进行配音, 所需的时间, 也就是晚上睡一觉而已,第二天起来就生成好了.
具体栗子请见视频 《win10 安装 Podman Desktop (教程)》 (链接在文章开头).
fish-speech 是一个新的 AI (神经网络) 文本转语音大模型,可以生成高质量的人类说话声音.在此感谢开发 fish-speech 并开源的巨佬们 !
通过自制 fish-speech 容器镜像, 并添加参考音频数据,窝们成功获得了一只封装好的派蒙罐头 (真·应急食品).随便放在哪里都可以直接运行, 无需网络, 很是方便好用.
CPU 推理确实很慢, 后续计划寻找无需 N 卡条件下,更快运行大模型的方法.
本文使用 CC-BY-SA 4.0 许可发布.
本文使用 Bilibili-Markdown 工具进行格式化排版:https://www.bilibili.com/read/cv18986956/