零成本带你体验手搓AIGC模型

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 零成本带你体验手搓AIGC模型

顺着ChatGPT的潮流,相信大家除了研究各种应用以外,对手搓AIGC模型是不是也很感兴趣。但是碍于囊中羞涩,没有机器,怎么体验手搓模型呢?不要怕,得益于开源社区的发展,现在想体验自建AIGC模型,只要零成本!没错,就是零成本!只要有办公电脑和手就可以了!

“零成本”的准备

虽说是零成本,但是还需要有一定的准备的:

1、需要一台Mac电脑或者Linux服务器

2、电脑安装了Python3.9或者以上的版本

3、了解GPT模型的基本原理,理解为什么训练或者微调出来的模型,只能做到“接龙”的能力,可以参考我之前写的这个文章:https://developer.aliyun.com/article/1191601?spm=a2c6h.13148508.setting.14.1d604f0eVR1TyR

训练模型-NanoGPT

地址:https://github.com/karpathy/nanoGPT

NanoGPT可以说是体验手搓模型的最好的入门工程,可以在感官上感觉一下如何手搓模型。

1、checkout 代码

git clone https://github.com/karpathy/nanoGPT.git

2、安装依赖

pip install pytorch
pip install numpy
pip install transformers
pip install datasets
pip install tiktoken
pip install wandb
pip install tqdm

3、准备数据

这一步是为了把数据分割处理,这里用了莎士比亚的一个文集,大概1MB。把文集切割成几万个字符。

python data/shakespeare_char/prepare.py

4、训练命令(以单机Macbook来举例子)

关键参数是需要把--device设置为cpu

python train.py config/train_shakespeare_char.py --device=cpu --compile=False --eval_iters=20--log_interval=1--block_size=64--batch_size=12--n_layer=4--n_head=4--n_embd=128--max_iters=2000--lr_decay_iters=2000--dropout=0.0

这里设置的iters为2000,所以总共会经历2000轮的迭代,loss会一直减少。根据你的机器配置,会有不同的时间,我的破Mac需要跑接近2小时才能跑完。

5、测试效果

经历过久久的等待,当跑完2000个迭代以后,就会在out-shakespeare-char里面生成一个文件(实际上是在训练过程中不断更新这个文件)。

如果需要在Mac上测试效果,需要先修改sample.py文件,把device = 'cuda'改成device = 'cpu'。然后使用下面的命令来测试,原理是模型会按照莎士比亚文集的学习,来模拟字符的接龙。你还可以通过--start命令指定接龙的开头。

python sample.py --out_dir=out-shakespeare-char
python sample.py --out_dir=out-shakespeare-char --start="To be or not to be"python sample.py --out_dir=out-shakespeare-char --start="Your tale, sir"

效果大概是这样的:

image.png

只能说,他真的接龙了,好像真的有那么一回事,但是云里雾里。毕竟是1MB的训练集嘛,要理解机器。

微调模型-NanoGPT

还是基于https://github.com/karpathy/nanoGPT

Finetune也叫做微调,是说在一个成熟的模型上,给他训练我们想要他学习的东西。这个项目引入了GPT-2的模型做微调,虽然GPT-2在现在来说比较落后的模型,但是最小的GPT-2模型,也有1.24亿个参数,是非常大的模型。实测我的破笔记本是做不到(或者说做得到但loss一直不理想)。但也不是不能尝试,下面是强行在Mac上运行微调的命令。

1、准备数据

python data/shakespeare/prepare.py

2、微调

实测下面的参数比较不容易爆内存,但如果你的电脑内存比较大,可以考虑调整下参数

python train.py config/finetune_shakespeare.py --device=cpu --compile=False --eval_iters=20--log_interval=1--block_size=64--batch_size=12--n_layer=4--n_head=4--n_embd=128--max_iters=2000--lr_decay_iters=2000--dropout=0.0

如果你有GPU服务器,比如有一个T4,这样就轻松很多。(这个命令不是最优的,内存只使用了4GB)

python train.py config/finetune_shakespeare.py --eval_iters=20--log_interval=1--block_size=64--batch_size=12--n_layer=4--n_head=4--n_embd=128--max_iters=1000--lr_decay_iters=1000--dropout=0.0

运行1000或者2000个迭代后,就会在out-shakespeare里面生成一个文件夹,存放结果。

3、查看结果

python sample.py --out_dir=out-shakespeare --start='To be or not to be'

image.png

基于GPT-2进行莎士比亚文集的微调后,明显感觉接龙的质量高了很多。感觉前后文有一定的逻辑了。

运行模型-pyllama

上面自己训练出来的模型都太傻了,只能接着你说的话进行接龙。那么有没有一个模型可以直接对话的呢?当然有啦。

LLaMA模型是Meta开源的大语言模型,宣称已经达到了GPT-3的水平。由于是开源的,所以是拿来运行的好模型。但是LLaMA本身有一个比较大的问题,就是下载模型需要填表等回复邮件。实测他一般是不会给你回复的。所以下载LLaMA模型最好的方法还是下载其社区版。

而工程pyllama就把下载模型和运行模型这些工作都打包好了,这就是我们零成本体验的最好工程。

地址:https://github.com/juncongmoo/pyllama

(因为我的Mac配置实在不行,下面的命令都以单GPU的服务器为例子,在其他人的Mac上实测其实也是可以运行起来的)

1、安装依赖

pip install pyllama -U

2、下载模型

下载最小的7B为例子

python -m llama.download --model_size 7B

模型会被下载到当前目录./pyllama_data/这里

3、运行模型

python inference.py --ckpt_dir ./pyllama_data/7B --tokenizer_path ./pyllama_data/tokenizer.model

image.png

效果大概是这样子

4、网页版运行

python ./app/gradio/webapp_single.py --ckpt_dir ./pyllama_data/7B --tokenizer_path ./pyllama_data/tokenizer.model

image.png

image.png

效果大概是这样子。

总结

上面的这些过程,算是带大家体验一把训练模型的快感,在体感上感觉下AIGC模型的原理和训练微调过程。但是很显然,这些东西并不具备任何实际作用。训练出来的模型都太基础或者太落后了,但是可以初步形成模型的一些概念。而“零成本”也是一个噱头,实测下来NanoGPT的话我的Mac还能应付, LLaMA运行的话还是需要比较高配置的Mac的,但如果想进一步对LLaMA进行处理,Mac肯定是做不到的了。

比如LLaMA对中文支持非常差,实际上还有一些融合中文训练语料的工程,那种工程的话,就不是Mac可以体验的了,就彻底不是“零成本”不在这篇文章的讨论范围。下一篇可以讲讲中文LLaMA和它的微调。

相关文章
|
4月前
|
人工智能 算法
52个AIGC视频生成算法模型介绍(中)
52个AIGC视频生成算法模型介绍(中)
263 4
|
2月前
|
机器学习/深度学习 数据采集 自然语言处理
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC-Transformer 模型
8月更文挑战第6天
|
1月前
|
人工智能 弹性计算 芯片
就AI 基础设施的演进与挑战问题之AIGC场景下训练和推理的成本的问题如何解决
就AI 基础设施的演进与挑战问题之AIGC场景下训练和推理的成本的问题如何解决
|
2月前
|
自然语言处理
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
|
2月前
|
机器学习/深度学习 运维 算法
「AIGC算法」K-means聚类模型
**K-means聚类模型概览:** - 是无监督学习算法,用于数据集自动分组。 - 算法步骤:初始化质心,分配数据点,更新质心,迭代直至收敛。 - 关键点包括K的选择、初始化方法、收敛性和性能度量。 - 优点是简单快速,适合大样本,但对初始点敏感,需预设K值,且仅适于球形簇。 - 应用场景包括图像分割、市场分析、异常检测等。 - 示例展示了使用scikit-learn对Iris数据集和自定义CSV数据进行聚类。
41 0
「AIGC算法」K-means聚类模型
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC领域中的模型
7月更文挑战第6天
|
2月前
|
机器学习/深度学习 人工智能 大数据
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
|
2月前
|
人工智能
AIGC使用问题之视觉大模型如何提高AIGC的感知能力
AIGC使用问题之视觉大模型如何提高AIGC的感知能力
|
3月前
|
人工智能 自然语言处理 机器人
【AIGC】大型语言模型在人工智能规划领域模型生成中的探索
【AIGC】大型语言模型在人工智能规划领域模型生成中的探索
76 6