LoRexxar's Blog | 信息技术分享
LoRexxar's Blog
马上订阅 LoRexxar's Blog | 信息技术分享 RSS 更新: https://lorexxar.cn/atom.xml
打造自己的AIGC应用(一)入门篇
其实细数AI的发展历程非常之久,而让AI的应用一下子出现在人们眼前的其实就是ChatGPT的出现,这意味着AIGC应用已经从概念为王变的非常实用了。伴随着ChatGPT的出现,大量的开源大模型也如雨后春笋一样出现。就现在而言,打造一个自己的AIGC应用已经非常简单了。
基础环境
我们需要配置一个环境
- python3.8+,不要太新
 - CUDA+环境
 - pytorch
 - 支持C++17的编译器
 
首先我比较推荐你配置一个anaconda的环境,因为pytorch的其他安装方法真的很麻烦
然后你需要安装CUDA的环境,正常来说只需要下载对应的CUDA版本即可
然后就是安装pytorch的环境,这个环境比较麻烦,正常来说通过conda来安装是比较靠谱的办法,当然有些时候就是安不了。

如果安装不成功,就只能用源码来编译了。
首先,clone一下源码
1  | git clone --recursive https://github.com/pytorch/pytorch  | 
然后安装一下对应的各种依赖
1  | conda install cmake ninja  | 
然后windows的源码编译有点儿复杂,具体要参考各种情况下的编译
在编译这个pytorch这个东西的时候我遇到过贼多问题,其中大部分问题我都搜不到解决方案,最终找到的最靠谱的方案是,不能用太低或者太高版本的python,会好解决很多,最终我选择了用3.10版本的python,解决了大部分的问题。
另外就是如果gpu不是很好或者显存不是很高,也可以使用cpu版本,大部分电脑的内存都会比较大,起码能跑起来。
如果是windows,那一定会用到huggingface,有个东西我建议一定要注意下。
默认的huggingface和pytorch的缓存文件夹是在~/.cache/下,是在c盘下面,而一般LLM的模型文件都贼大,很容易把C盘塞满,这个注意要改下。
在环境变量里加入**HF_HOME和TORCH_HOME ,设**置为指定变量即可。

除此之外,有的项目也会提供docker化的部署方案,如果采用这种方案,就必须在宿主机安装NVIDIA Container Toolkit,并重启docker
1  | sudo apt-get install -y nvidia-container-toolkit-base  | 
进阶构成
LLM
LLM全称**Large Language Model,大语言模型,是以ChatGPT为代表的ai对话核心模块,相比我们无法控制、训练的ChatGPT,也逐渐在出现大量的开源大语言模型,尤其是以ChatGLM、LLaMA**为代表的轻量级语言模型相当好用。
虽然这些开源语言模型相比ChatGPT差距巨大,但深度垂直领域的ai应用也在逐渐被人们所认可。与其说我们想要在开源世界寻找ChatGPT的代替品,不如说这些开源大语言模型的出现,意味着我们有能力打造自己的GPT。
- ChatGLM-6B
 - https://github.com/THUDM/ChatGLM-6B
 - ChatGLM2-6B
 - https://github.com/THUDM/ChatGLM2-6B
 
目前中文领域效果最好,也是应用最多的开源底座模型。大部分的中文GPT二次开发几乎都是在这个模型的基础上做的开发,尤其是2代之后进一步拓展了基座模型的上下文长度。最厉害的是它允许商用。
MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。
一系列基于RWKV架构的Chat模型(包括英文和中文),发布了包括Raven,Novel-ChnEng,Novel-Ch与Novel-ChnEng-ChnPro等模型,可以直接闲聊及进行诗歌,小说等创作,包括7B和14B等规模的模型。
LLM的基座模型说实话有点儿多,尤其是在最开始的几个开源之后,后面各种LLM基座就像雨后春笋一样出现了,比较可惜的是目前的的开源模型距离ChatGPT的差距非常之大,大部分的模型只能达到GPT3的级别,距离GPT3.5都有几个量级的差距,更别提GPT4了。
给大家看一个通过一些标准排名出来的LLM排行榜,这个说法比较多,一般就是看样本集的覆盖程度。...
剩余内容已隐藏