Sequoia 项目介绍
Sequoia项目旨在提供一个可伸缩、稳健且兼具硬件意识的推测解码系统。该项目专注于提升解码性能,并支持多种现代硬件配置。
环境准备
为了成功运行Sequoia项目,需要按照以下命令设置环境:
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
pip install transformers==4.36.2
pip install accelerate==0.26.1
pip install datasets==2.16.1
pip install einops
pip install protobuf
pip install sentencepiece
pip install typing-extensions
评估
若要重现项目的主要结果,可以执行以下命令:
cd tests
bash run_L40.sh
bash run_A100.sh
其中,命令格式如下:
python testbed.py --model JackFram/llama-68m --target meta-llama/Llama-2-7b-hf \
--T 0.6 --P 1.0 --start 0 --end 200 --M 384 \
--growmap ../A100_growmaps/68m_7b/growmaps/A100-CNN-68m-7b-stochastic.pt \
--Mode greedy --dataset cnn
此命令中,不同参数具备以下功能:
--model
和--target
: 分别指定草案模型和目标模型(目前仅支持Llama模型)。--T
和--P
: 分别表示生成温度和top-p值。--dataset
: 可设置为cnn, openwebtext, c4
。--start
和--end
: 决定要评估的样本数量。--growmap
: 指定树结构位置,项目中已准备好部分growmaps。--M
: 必须至少设定为#tree + 256
。
如何获取接受率向量
接受率向量用于tree_search.py
中,可通过以下命令获取:
python test_accept.py --model JackFram/llama-68m --target meta-llama/Llama-2-7b-hf \
--T 0.6 --P 1.0 --start 0 --end 200 --M 288 --W 32 \
--ALG stochastic --dataset cnn
--ALG
可以是随机(stochastic)或贪心(greedy)。--W
为最大宽度,--M
至少为 --W + 256
。
若需快速获取接受率向量:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5 python fast_test.py --model meta-llama/Llama-2-7b-hf \
--target meta-llama/Llama-2-70b-hf --T 1.1 --P 1.0 --DP 1.1 --W 32 --start 0 --end 200
接受率向量将会输出并存储,默认保存位置为../acceptance-rate-vector.pt
。
如何生成growmaps
生成growmaps可以通过以下命令实现:
python tree_search.py --config demo-config.json
可修改demo-config.json
的内容以生成不同的growmaps。项目中已准备好相关实验所需的growmaps。
待办事项
- 支持其他开源模型
- 支持多轮对话
- 支持 INT4/8 量化
- 支持多 GPU 配置
希望Sequoia项目可以为大家的项目和研究带来帮助,请参考项目文献进行引用。具体文献格式已在项目中提供。