单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布


新智元报导

修改:好困

**【新智元导读】**刚刚,UC 伯克利、CMU、斯坦福等,联手发布了最新开源模型骆马(Vicuna)的权重。

3 月 31 日,UC 伯克利联手 CMU、斯坦福、UCSD 和 MBZUAI,推出了 130 亿参数的 Vicuna,俗称「羊羔驼」(骆马),仅需 300 美元就能完成 ChatGPT 90% 的功能。

今日,团队正式发布了 Vicuna 的权重——只需单个 GPU 就能跑!

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

项目地址:github.com/lm-sys/Fast…

130 亿参数,90% 对抗 ChatGPT

Vicuna 是经过在 ShareGPT 搜集的用户同享对话上对 LLaMA 进行微调练习而来,练习本钱近 300 美元。

研究人员规划了 8 个问题类别,包含数学、写作、编码,对 Vicuna-13B 与其他四个模型进行了功能测试。

测试过程运用 GPT-4 作为评判标准,成果显示 Vicuna-13B 在超过 90% 的情况下完成了与 ChatGPT 和 Bard 相对抗的能力。一起,在在超过 90% 的情况下胜过了其他模型,如 LLaMA 和斯坦福的 Alpaca。

练习

Vicuna-13B 的练习流程如下:

首先,研究人员从 ChatGPT 对话分享网站 ShareGPT 上,搜集了大约 70K 对话。接下来,研究人员优化了 Alpaca 提供的练习脚本,使模型能够更好地处理多轮对话和长序列。之后利用 PyTorch FSDP 在 8 个 A100 GPU 进步行了一天的练习。

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

内存优化:

为了使 Vicuna 能够了解长上下文,将最大上下文长度从 Alpaca 的 512 扩展到 2048,这大大增加了 GPU 内存需求。在此,研究人员经过运用梯度检查点和闪存注意力来处理内存压力。

多轮对话:

经过调整练习丢失以考虑多轮对话,并仅在谈天机器人的输出上计算微调丢失。

经过 Spot 实例降低本钱:

采用 SkyPilot 保管的 Spot 实例来降低本钱,将 7B 模型的练习本钱从 500 美元降低到约 140 美元,将 13B 模型的练习本钱从约 1000 美元降低到 300 美元。

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

评价

在模型的质量评价方面,研究人员创立了 80 个不同的问题,并用 GPT-4 对模型输出进行了评价。

为了比较不同的模型,研究人员将每个模型的输出组合成一个单独的提示,然后让 GPT-4 评价哪个模型给出的答复更好。

其中,GPT-4 在超过 90% 的问题中更喜欢 Vicuna,而不是现有的 SOTA 开源模型(LLaMA、Alpaca)。

在 45% 的问题中,GPT-4 认为 Vicuna 的答复和 ChatGPT 差不多甚至更好。

归纳来看,Vicuna 在总分上到达 ChatGPT 的 92%。

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

装置运用

装置

办法一:

# Install FastChat
pip3 install fschat
# Install a specific commit of huggingface/transformers
# Our released weights do not work with commits after this due to some upstream changes in the tokenizer.
pip3 install git+https://github.com/huggingface/transformers@c612628045822f909020f7eb6784c79700813eda

办法二:

  1. clone 版本库并改变目录到 FastChat 文件夹

  2. 装置 Package

权重

根据 LLaMA 模型的答应,权重将以 delta 的形式发布。只需将其加到本来的 LLaMA 权重上,就能够取得终究的 Vicuna 权重。

  1. 按照 huggingface 上的阐明,取得原始的 LLaMA 权重

  2. 经过脚本,主动从团队的 Hugging Face 账户上下载 delta 权重

python3 -m fastchat.model.apply_delta \
    --base /path/to/llama-13b \
    --target /output/path/to/vicuna-13b \
    --delta lmsys/vicuna-13b-delta-v0

运用

单个 GPU

Vicuna-13B 需求大约 28GB 的 GPU 显存。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights

多个 GPU

假如没有满足的显存,则能够运用模型并行来聚合同一台机器上多个 GPU 的显存。

python3-mfastchat.serve.cli--model-name/path/to/vicuna/weights--num-gpus2

仅用 CPU

假如想在 CPU 上运转,则需求大约 60GB 的内存。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --device cpu

WebUI

发动控制器

python3 -m fastchat.serve.controller

发动 model worker

python3 -m fastchat.serve.model_worker --model-path /path/to/vicuna/weights

当进程完成模型的加载后,会看到「Uvicorn running on …」。

发送测试音讯

python3 -m fastchat.serve.test_message --model-name vicuna-13b

发动 gradio 网络服务器

python3 -m fastchat.serve.gradio_web_server

现在,你就能够翻开浏览器和模型谈天了。

微调

数据

Vicuna 是经过运用从 ShareGPT 搜集到的大约 7 万个用户同享的对话与公共 API 来微调一个 LLaMA 基础模型而创立的。

为了确保数据质量,团队将 HTML 转换回 markdown,并过滤掉一些不合适或低质量的样本。此外,团队还将冗长的对话分成较小的片段,以符合模型的最大上下文长度。

代码和超参数

团队运用斯坦福大学 Alpaca 的代码对模型进行微调,并做了一些修改以支持梯度检查点和 Flash 注意力。此外,团队也运用与斯坦福 Alpaca 相似的超参数。

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

用 SkyPilot 在云服务进步行微调

SkyPilot 是由加州大学伯克利分校建立的一个框架,能够在任何与一个云服务(AWS、GCP、Azure、Lambda 等)上轻松、经济地运转 ML 作业负载。

装置阐明:skypilot.readthedocs.io/en/latest/g…

# Install skypilot from the master branch
pip install git+https://github.com/skypilot-org/skypilot.git

Vicuna 能够在 8 个拥有 80GB 内存的 A100 GPU 进步行练习。下面的命令将主动发动一个满足要求的节点,在上面设置并运转练习作业。

sky launch -c vicuna -s scripts/train-vicuna.yaml --env WANDB_API_KEY

关于 Alpaca 来说,练习作业会在具有 4 个 A100-80GB GPU 的单一节点上发动。

sky launch -c alpaca -s scripts/train-alpaca.yaml --env WANDB_API_KEY
 运用本地GPU进行微调

Vicuna 也能够用以下代码在 8 个 A100 GPU 上练习,显存为 80GB。

假如要在更少的 GPU 上练习,则能够减少 per_device_train_batch_size,并相应地增加 gradient_accumulation_steps,以保持大局批巨细不变。要设置环境,能够拜见 scripts/train-vicuna.yaml 中的设置部分。

参考资料:

github.com/lm-sys/Fast…

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布