RoPE编码类型

RoPE(Rotary Position Embedding)编码是一种高效的位置编码方式,有以下特点:

通过RoPE编码与RazorAttention结合,可分析注意力头对位置编码的依赖性,来决定哪些头可以被压缩,以优化模型的存储、传输和计算效率,提高模型在实际应用中的可部署性和实用性。

目前支持对表1中RoPE编码的大模型进行长序列压缩(包括但不限于)。

表1 已验证模型列表

模型名称

框架

Qwen2-72b-instruct

PyTorch

llama3.1-70b

PyTorch

前提条件

功能实现流程

关键步骤说明如下:

  1. 用户准备原始模型。
  2. 调用RARopeCompressConfig接口生成压缩配置,并新建模型的压缩脚本run.py。
  3. 调用RARopeCompressor启动长序列压缩任务,进行长序列压缩。
  4. 调用get_compress_heads接口导出需保留的Head信息,并在指定路径获取.pt文件。
  5. 用户可根据.pt文件进行压缩
  6. 压缩后的文件可用于后续的推理部署,具体请参见MindIE的“加速库支持模型列表”章节中已适配量化的模型。

压缩步骤(以Qwen2-72b-instruct为例)

  1. 用户准备原始模型。

    用户需要自行准备模型、权重文件。本样例以Qwen2-72b-instruct为例,从该网站下载权重文件,并上传至服务器的“Qwen2-72b-instruct”文件夹内,目录示例如下:
    config.json
    generation_config.json
    merges.txt
    model-00001-of-00037.safetensors
    ......
    model-00037-of-00037.safetensors
    model.safetensors.index.json
    tokenizer.json
    tokenizer config.json
    vocab.json

  2. 新建模型的量化脚本run.py,并将如下样例代码导入run.py文件,并执行以下命令。

    import torch
    from msmodelslim.pytorch.ra_compression import RARopeCompressConfig, RARopeCompressor
    from transformers import AutoTokenizer, AutoModelForCausalLM
    import torch_npu
    torch.npu.set_compile_mode(jit_compile=False)
    config = RARopeCompressConfig(induction_head_ratio=0.14, echo_head_ratio=0.01)
    save_path = "./win.pt" 
    model_path = "./Qwen2-72B-Instruct/"
     
    model = AutoModelForCausalLM.from_pretrained(
            pretrained_model_name_or_path=model_path,
            torch_dtype=torch.bfloat16, 
            trust_remote_code=True,
            device_map="auto",
        ).eval()
     
    tokenizer = AutoTokenizer.from_pretrained(
            pretrained_model_name_or_path=model_path,
            pad_token='<|extra_0|>',
            eos_token='<|endoftext|>',
            padding_side='left',
            trust_remote_code=True
        ) 
    ra = RARopeCompressor(model, tokenizer, config) 
    ra.get_compress_heads(save_path)

  3. 启动长序列压缩任务,并在“Qwen2-72b-instruct”文件夹的路径下获取需要保留KV Cached的Head信息的.pt文件。
  4. 用户可根据.pt文件进行压缩。
  5. 压缩后的文件可用于后续的推理部署,具体请参见MindIE的“加速库支持模型列表”章节中已适配量化的模型。

    python3 run.py