AI 小白因搞不定环境而放弃了

2023-05-08 17:49:02 环境 AI 放弃了

作为一个 AI 小白,这几天搞环境已经要把我大脑 CPU 烧毁了,也不怕你们笑话,就把这几天折腾的一些零碎的经验分享给大家。

对于刚接触 AI 想折腾个环境出来的小白应该很有用,对大佬来说或许可以勾起你们"快乐"的回忆也说不定。

首先就是前几天为了跑模型买的 4090 开整!以实现我的训练自己语言、训练自己的声音、驱动自己的三维模型的口型表情动作,然后把流程都串起来前有输入后有输出的一个实时对话的我的数字人的伟大梦想,超过云飞大佬的 AI 派蒙。

然后我连个 VITS 的环境都配不明白... 环境依赖太复杂了。

尤其是在 Windows 上,各种依赖冲突,我也不会解决,网上的大部分文章的命令都是 Unix Like 的,在 win 上各种不友好。

即便是经过几个大佬魔改的容易上手的版本 VITS-fast-fine-tuning,并且直接有现成的 Google Colab 环境,依次点击执行按钮就能出结果,我也没一次成功的。

至此变放弃了直接跑这么复杂多依赖且不稳定需要魔改的项目,并且打算装个双系统用 Ubuntu 来搞这些。

一步到位,再也不想在 win 上折腾了。

------

装双系统不难,但如果不熟悉的话就很头疼。

网上的教程和我之前的习惯一般都是制作 U 盘启动盘安装的,但我找半天也没找到一个 U 盘,索性这回就尝试下无 U 盘安装双系统的过程。

折腾好了之后发现无 U 盘装系统才是简单的方式,直接把 .iso 文件解压到一个 FAT32 的磁盘卷上,用 EasyUEFI 添加一个启动项指向它就好了。

这里因为我有两块 2T 的固态,所以就简单粗暴点,磁盘 0 直接全部留给 Ubuntu,磁盘 1 保持不变还是原来的 Windows。

这里踩了个坑,一开始我把 .iso 文件解压到了由磁盘 0 分出的开头部分的一个卷上,导致再把 Ubuntu 安装到磁盘 0 的时候出现 /cdrom 无法卸载的错误。

------

装好了 Ubuntu 之后,革命才进行了一半,还需要安装 NVIDIA 显卡驱动,以及 CUDA 编程模型。

因为 Ubuntu 使用的是开源显卡驱动 Nouveau,肯定配不上我的 4090,所以需要到 NVIDIA 官网下载专用的驱动,这一步瑟瑟发抖,看网上教程都好麻烦,而且不知道会不会遇到 NFU 的场面。

不过官方闭源的应该还好,而且我也不用 Ubuntu 打游戏,能用就行。

网上教程通过命令行方式安装都非常复杂,还需要有图形界面和文字模式来回切换的过程,搞着搞着可能屏幕就黑黢黢的不知所措了,所以找了个直接通过 Ubuntu 软件更新里的更新驱动的方式。

使用 nvidia-smi 命令看到有输出,就说明安装成功了。(我忘了截图了也懒得切回 ubuntu 截了,放一张 Google Colab 上跑的结果)

注意这里的 CUDA Version 不是表示已安装了 CUDA,而是说支持的高的 CUDA 版本,所以下一步安装 CUDA 时版本选择不能高于它。

------

没什么经验,但看到很多人都说 CUDA 11.8 版本比较稳定,索性就选择这个版本了。

CUDA 是什么,先让我助理给大家介绍一波,你可以把它理解成和打游戏用的 DirectX 是对等的概念,只不过用于不同的场景。

落实到具体实现就是你用 CUDA 语法写个程序,然后使用 NVIDIA 的 nvcc 编译器将其编译为 GPU 可识别的 PTX 指令集,也相当于屏蔽了底层细节,让程序员只需要写 C 或 C++ 代码即可,剩下的都由编译器来处理。

CUDA 本身也是包含 NVIDIA 驱动的,所以安装 CUDA 的时候如果已经有 NVIDIA 驱动了,就不需要重复安装了。所以其实你直接面向驱动编程也可以,只不过 CUDA 又帮你封装了一层,实现更更抽象的语法。

NVIDIA 官网下载驱动还是非常友好的,直接选择你的平台,下面就出下载命令,直接无脑复制就可以安装了,N 卡生态这么好也是有原因的。

但这里有个小坑,后面的 Installer Type 如果选前两个,我发现不论是哪个版本的 CUDA 命令都是一样的,都是下载的新版!不知道是故意的还是有意的。

------

前面铺垫了这么多,其实就是为了使用 Python 的 PyTorch 时可以使用 CUDA 来执行。当然没有显卡或没有 CUDA 的话使用 CPU 执行也是可以的,很多机器学习库都提供了两种方式运行。

不熟悉 Python 的话你可能觉得它的版本和一大堆库的依赖非常恶心,这也是让新手头疼的点。

不过现在有了 anaconda 或者 miniconda 这些都不是问题了。conda 是包含了 Python 解释器和包管理器的工具,而且能做到不同环境的 Python 版本和包版本相互隔离。

用 conda create -n hello python=3.9 就可以创建一个 3.9 专用的虚拟环境,里面的 python3.9 也会给你自动安装好,且不影响你主机上的 python 和其他环境的 python。

再用 conda install xxx 就可以下载相应的包,而且它自己会处理好不同版本之间的兼容性。

再加上有 notebook 以及 Google Colab 这种在线执行 python 代码和白嫖 GPU 资源的工具,其实使用 Python 进行简单的 AI 学习和实验是非常友好的。

这里给迟迟走不出 Java 舒适区的大家还有我一个鼓励,用起来还真的比 Java 顺手

------

后一步就是安装 PyTorch,直接使用 conda install pytorch 当然是简单的,但这里有坑,就是可能安装的是 CPU 版本的 pytorch,那么就无法享受 GPU 加速带来的效果了。

所以需要手动下载 GPU 版本的 pytorch,才能在里面使用 GPU 进行加速。

可能很多人不知道什么叫使用 GPU 进行加速,怎么才能让 GPU 来加速,其实很简单。

使用 python 的 pytorch 写一行代码。

这样就没有用到 GPU 加速,而是使用 CPU 进行计算并得到结果。

如果后面加上 .cuda() 那么底层就会使用 cuda 编程模型,进而使用了 GPU 来处理这行代码,也就是使用了 GPU 加速。

仅此而已,可以简单理解为 if else 两段不同的代码而已。如果后面有 .cuda(),那么底层就转化为 cuda 编程模型的代码,cuda 将其转化为可利用 GPU 并行计算优势的代码,后调用 nvidia 驱动使 GPU 工作,将结果返回给 CPU。

相关文章