FastChat搭建踩坑记录

发布于 2023-04-15  1599 次阅读


FastChat是一个支持节点式部署和多模型的AI对话WebUI。我在尝试部署它的过程中踩了不少坑(其实也怪我自己,没有认真阅读文档)。但是我觉得这一系列排错的过程十分有趣,所以便记录了下来。

1、环境

这是第一个坑,由于llama过于新了,所以必须使用最新版的transformer

# Install the latest main branch of huggingface/transformers
pip3 install git+https://github.com/huggingface/transformers

同时,还需要注意protobuf的版本。我最后使用的版本是transformer 4.28.0.dev0,protobuf 4.22.1。

2、模型

这里是最大的坑。

FastChat提供了基于llama的Vicuna权重。但是实际上它们只是附加权重,你必须将它们与同样参数的llama模型权重合并。

首先得去下载llama模型,可以直接通过BT下载之前流传到网络上的泄露包:

magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA

然后将llama模型转换为与抱抱脸transformer所兼容的格式:

python convert_llama_weights_to_hf.py     --input_dir F:/LLaMA --model_size 7B --output_dir /output/hf_llama_7b

接着去抱抱脸下载你所需要的附加权重。

然后,根据GitHub页面上的说明,将Vicuna权重附加到转换后的llama模型上。

cd F:\FastChat\FastChat\fastchat\model
python apply_delta.py     --base F:\LLaMA\llama-7b-hf     --target F:/FastChat/vicuna-13b-bundle   --delta F:/FastChat/vicuna-7b-delta-v0

注意,转换时需要修改tokenizer_config.json里的类名,从LlaMATokenizer修改为LlamaTokenizer,否则附加权重时会出错。

3、启动

接下来就顺利多了,按照要求启动控制节点、worker节点和web节点就不会报错了。

最后更新于 2023-04-15