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节点就不会报错了。
Comments NOTHING