译者 | 布加迪
ChatGPT是一种人工智能(AI)语言模型,近几个月备受关注。它有两个流行的版本:GPT-3.5和GPT-4。GPT-4是GPT-3.5的升级版,生成的答案更准确。但是ChatGPT存在的主要问题是它不是开源的,也就是说,不允许用户查看和修改其源代码。这导致了许多问题,比如定制、隐私和AI民主化。
我们需要这样一种AI语音聊天机器人:可以像ChatGPT一样工作,但又是免费开源的,而且消耗的CPU资源更少。本文介绍的Alpaca LoRA就是这样一种AI模型。看完本文后,您就比较了解它,而且可以使用Python在本地机器上运行它。下面不妨先讨论一下什么是Alpaca AoRA。
Alpaca是由斯坦福大学的研究小组开发的一种AI语言模型。它使用Meta的大规模语言模型LLaMA。它使用OpenAI的GPT(text- davincii -003)来微调拥有70亿个参数的LLaMA模型。它可供学术界和研究界免费使用,对计算资源的要求很低。
该团队从LLaMA 7B模型入手,用1万亿token对其进行预训练。他们从175个由人工编写的指令输出对开始,让ChatGPT的API使用这些指令输出对生成更多对。他们收集了52000个样本对话,用来进一步微调其LLaMA模型。
LLaMA模型有几个版本,即70亿个参数、130亿个参数、300亿个参数和650亿个参数。Alpaca可扩展到70亿个参数、130亿个参数、300亿个参数和650亿个参数的模型。
图1 Aplaca 7B架构
Alpaca- LoRA是Stanford Alpaca的小型版,耗电量更少,可以在Raspberry Pie等低端设备上运行。Alpaca-LoRA使用低秩自适应(LoRA)来加快大型模型的训练,同时消耗更少的内存。
我们将创建一个Python环境在本地机器上运行Alpaca-Lora。您需要一个GPU来运行这个模型。它无法在CPU上运行(或者输出很缓慢)。如果您使用70亿个参数模型,需要至少12GB的内存。如果使用130亿参数或300亿参数模型,需要更高的内存。
如果您没有GPU,可以在Google Colab中执行相同的步骤。文末附上了Colab链接。
我们将遵循Alpaca-LoRA的这个GitHub代码存储库。
1. 创建虚拟环境
我们将在虚拟环境中安装所有库。这一步不是强制性的,而是推荐的。以下命令适用于Windows操作系统。(这一步对于Google Colab来说并非必需)。
复制
创建venv的命令:
$ py -m venv
激活它的命令:
$ .\venv\Scripts\activate
禁用它的命令:
$ deactivate
2. 克隆GitHub代码存储库
现在,我们将克隆Alpaca LoRA的代码存储库。
复制
$ git clone https://github.com/tloen/alpaca-lora.git
$ cd .\alpaca-lora\
安装库:
$ PIP install -r .\requirements.txt
3.训练
名为finettune.py的python文件含有LLaMA模型的超参数,比如批处理大小、轮次数量和学习率(LR),您可以调整这些参数。运行finetune.py不是必须的。否则,执行器文件从tloen/alpaca-lora-7b读取基础模型和权重。
复制
$ python finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path 'yahma/alpaca-cleaned' \
--output_dir './lora-alpaca' \
--batch_size 128 \
--micro_batch_size 4 \
--num_epochs 3 \
--learning_rate 1e-4 \
--cutoff_len 512 \
--val_set_size 2000 \
--lora_r 8 \
--lora_alpha 16 \
--lora_dropout 0.05 \
--lora_target_modules '[q_proj,v_proj]' \
--train_on_inputs \
--group_by_length
4. 运行模型
名为generate.py的python文件将从tloen/alpaca-lora-7b读取Hugging Face模型和LoRA权重。它使用Gradio运行用户界面,用户可以在文本框中写入问题,并在单独的文本框中接收输出。
注意:如果您在Google Colab中进行处理,请在generate.py文件的launch()函数中标记share=True。它将在公共URL上运行界面。否则,它将在localhost http://0.0.0.0:7860上运行。
复制
$ python generate.py --load_8bit --base_model 'decapoda-research/llama-7b-hf' --lora_weights 'tloen/alpaca-lora-7b'
输出:
它有两个URL,一个是公共的,另一个在本地主机上运行。如果您使用Google Colab,公共链接可以访问。
5. Docker化应用程序
如果您想要将应用程序导出到某个地方或面临一些依赖项问题,可以在Docker容器中Docker化应用程序。Docker是一个创建应用程序不可变映像的工具。然后可以共享该映像,并将其转换回成应用程序,该应用程序可在容器中运行,拥有所有必要的库、工具、代码和运行时环境。您可以从这里下载Docker for Windows:https://docs.docker.com/desktop/install/windows-install/。
注意:如果您使用Google Colab,可以跳过此步骤。
构建容器映像:
复制
$ docker build -t alpaca-lora
运行容器:
复制
$ docker run --gpus=all --shm-size 64g -p 7860:7860 -v ${HOME}/.cache:/root/.cache --rm alpaca-lora generate.py \
--load_8bit \
--base_model 'decapoda-research/llama-7b-hf' \
--lora_weights 'tloen/alpaca-lora-7b'
它将在https://localhost:7860上运行您的应用程序。
现在,我们已让Alpaca-LoRA运行起来。接下来,我们将探讨它的一些特点,让它为我们编写些东西。
图2. Alpaca-LoRA用户界面
它提供了类似ChatGPT的UI,我们可以在其中提出问题,它会相应地回答问题。它还接受其他参数,比如温度、Top p、Top k、Beams和Max Tokens。基本上,这些是在评估时使用的生成配置。
有一个复选框Stream Output。如果勾选该复选框,聊天机器人将每次回复一个token(即逐行写入输出,类似ChatGPT),如果不勾选该选项,它将一次性写入。
不妨向它提一些问题。
问题1:写一段Python代码,求一个数的阶乘。
输出:
图3. 输出-1
问题2:将“KDnuggets is a leading site on Data Science, Machine Learning, AI and Analytics.”翻译成法语。
输出:
图4. 输出-2
与ChatGPT不同,它也有一些限制。它可能无法为您提供最新的信息,因为它没有联网。此外,它可能会向社会弱势群体传播仇恨和错误信息。尽管如此,它仍是一款出色的免费开源工具,计算需求较低。它对研究人员和学者开展道德AI和网络安全活动大有助益。
谷歌Colab链接:
https://colab.research.google.com/drive/1t3oXBoRYKzeRUkCBaNlN5u3xFvhJNVVM?usp=sharing
原文标题:Learn How to Run Alpaca-LoRA on Your Device in Just a Few Steps,作者:Aryan Garg
AiBard123工具导航 2023-08-16