Alibi编码是一种位置编码方法,与RazorAttention结合使用,通过Alibi编码来识别哪些注意力头对位置信息更为敏感,从而决定哪些头可以被压缩。Alibi编码并不直接在网络中加入显式的位置编码,而是通过在query-key注意力分数上施加一个与距离成比例的偏置实现位置信息的建模。
KV Cache的管理需考虑batch, seqlen, num_heads和head_size这四个维度,其中seqlen维度通常是压缩的重点,因为随着序列长度的增加,KV Cache的内存占用会迅速增长。传统的压缩方法可能会忽略不同注意力头(Heads)之间的差异,而RazorAttention加速技术则提供了一种更细粒度的内存压缩方法,针对使用Alibi编码的模型进行优化,可以更有效地识别哪些注意力头对于位置信息更为敏感,并据此调整压缩策略。RazorAttention加速技术支持全量加速和增量加速:
目前支持对表1中Alibi编码的大模型进行长序列压缩(包括但不限于)。
以下命令若使用非root用户安装,需要在安装命令后加上--user,例如:pip3 install numpy==1.25.2 --user。
pip3 install numpy==1.26.4 pip3 install transformers==4.43.1 pip3 install torch==2.1.0 # 安装CPU版本的PyTorch 2.1.0(不依赖torch_npu)
关键步骤说明如下:
config.json configuration_baichuan.py cut_utils.py generation_config.json generation_utils.py handler.py model-00001-of-00003.safetensors model-00002-of-00003.safetensors model-00003-of-00003.safetensors modeling_baichuan_cut.py modeling_baichuan.py model.safetensors.index.json pytorch_model.bin.index.json quantizer.py special_tokens_map.json tokenization_baichuan.py tokenizer_config.json tokenizer.model
from msmodelslim.pytorch.ra_compression import RACompressConfig, RACompressor from transformers import AutoTokenizer, AutoModelForCausalLM config = RACompressConfig(theta=0.00001, alpha=100) # 压缩类的配置,需根据实际情况进行修改 input_model_path = "/data1/models/baichuan/baichuan2-13b/float_path/" # 模型权重文件的保存路径,需根据实际情况进行修改 save_path = "./win.pt" # 生成压缩窗口的路径,需根据实际情况进行修改 tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name_or_path=input_model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(pretrained_model_name_or_path=input_model_path, trust_remote_code=True).float().cpu() # 不支持使用npu方式进行加载 ra = RACompressor(model, config) ra.get_alibi_windows(save_path)
python3 run.py