
# 压缩NLP大模型
在大模型部署过程中，通常会遇到模型体积大、推理资源消耗高的问题，这不仅增加了部署成本，还可能影响模型的推理速度和性能。为了应对这一挑战，可以通过模型压缩技术来降低模型的推理显存占用，从而节省推理资源并提高推理性能。
#### 约束限制
1. 仅支持对NLP大模型进行压缩。
2. "模型广场"预置NLP模型不支持压缩。支持对"模型广场"的NLP模型做二次训练后的模型做压缩操作。支持压缩的模型清单请详见《产品介绍》\> "模型能力与规格 \> [盘古NLP大模型](https://support.huaweicloud.com/productdesc-pangulm/pangulm_01_0009.html)"。
 
#### NLP模型压缩步骤
1. 登录ModelArts Studio大模型开发平台，在"我的空间"模块，单击进入所需空间。
   图1我的空间   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601606693.png) 
2. 在左侧导航栏中选择"模型开发 \> 模型压缩"，单击界面右上角"创建压缩任务"。
3. 在"选择模型"页面，选择"模型广场 \> 大语言模型 \> 模型"，单击"确定"进入"创建压缩任务"页面。
4. 在"创建压缩任务"页面，参考[表1]完成压缩任务参数设置后，单击"立即创建"。
   当压缩任务状态为"已完成"时，表示模型已完成压缩操作。
    表1模型压缩任务参数说明 
   | 参数类别                                                       | 参数名称     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 压缩配置             | 选择模型     | 可以修改如下信息： - 来源：选择"我的资产"。  - 类型：选择"大语言模型"，并选择要进行压缩的模型和版本。                                                                                                                                                                                                                                                                                                                                                   |
   | 压缩配置             | 压缩策略     | 盘古大模型使用INT4（W4A16）/INT8（W8A8，W8A16）压缩策略。同等QPS目标下，INT8可以降低推理显存占用，与INT8相比，INT4可以进一步降低模型的存储需求和计算复杂度。 当前平台支持的量化策略包括：W4A16量化，W8A8量化和W8A16量化等策略。 - W4A16量化：能显著降低模型显存以及需要部署的卡数（约75%）。大幅降低小batch下的增量推理时延。  - W8A8量化：能降低模型显存以及需要部署的卡数，也能同时降低首token时延和增量推理时延。  - W8A16量化：不仅可以保证精度在可接受的范围内，同时也有一定的性能收益。   |
   | 资源配置    | 计费模式     | 选择压缩当前任务的计费模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 资源配置    | 训练单元     | 选择压缩模型所需的训练单元。 当前展示的完成本次压缩所需要的最低训练单元要求。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 资源配置    | 训练单元总数   | 用户当前拥有的训练单元总数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 资源配置    | 优先级      | 优先级相同的任务，先创建先执行。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 订阅提醒                                                       | 订阅提醒     | 该功能开启后，平台支持两种订阅类型，预置通知和SMN通知。 预置通知：系统将在任务状态完成或失败时，通过短信或邮件将提醒发送给用户。 SMN通知：用户可在SMN云服务创建主题并维护订阅信息，在创建训练时选择对应主题以及需要通知的状态。训练状态范围：停止，失败，完成。用户手工触发的停止操作不通知用户，而资源到期的停止需通知用户。                                                                                                                                                                                                                                                                                                                                                                               |
   | 发布模型     | 是否开启自动发布 | 关闭，训练完成后手动发布到模型资产。 开启，配置可见性、模型名称和描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 发布模型     | 模型可见性    | 选择发布模型的可见范围。 本空间可见：发布的模型仅当前工作空间可见。 全空间可见：发布的模型在所有空间均可见。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 发布模型     | 模型名称     | 要发布的模型资产名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 发布模型     | 描述（可选）   | 要发布的模型资产的相关描述，选填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 基本信息                                                       | 任务名称     | 模型压缩任务的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 基本信息                                                       | 压缩后模型名称  | 设置压缩后的模型名称。（开启自动发布，无该配置项）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 基本信息                                                       | 描述       | 模型压缩任务的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      
   
 
#### 蒸馏NLP大模型
- 模型蒸馏介绍：模型蒸馏是一种模型压缩技术，通过训练一个小模型（学生模型）去模仿一个性能更强但体积更大的模型（教师模型）的行为。蒸馏过程包括：先训练好教师模型，然后用其输出作为"软标签"指导学生模型学习，以提升学生模型的泛化能力。该方法能在保持较高性能的同时，显著减少模型参数量与推理开销，广泛应用于边缘计算、移动设备部署等场景。
- 构建蒸馏数据
  NLP模型蒸馏数据要求：
  - **高质量语料**：需使用覆盖面广、语义丰富的文本数据，有助于学生模型学习教师模型的语义表达和语言理解能力。
  
  - **与任务相关**：蒸馏数据应贴近目标任务（如分类、问答、翻译等），可使用原始训练集、增强数据或无标签文本。
  
  - **数据量充足**：虽然学生模型规模较小，但蒸馏通常需大量样本以充分吸收教师模型的知识，特别是对大模型蒸馏。
  
  - **一致性处理**：输入文本格式确保学生模型学习的输入与教师一致。
   
  蒸馏数据获取：
  1. 在ModelArts Studio中，单击"数据获取"，单击"创建导入数据"，导入只有问题没有答案的数据对，如[图2]。
     图2导入单轮问答类数据集   
     ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047500.png) 
  
  2. 单击"数据加工 \> 创建加工任务"，选中导入的单轮问答类数据集，单击"下一步"，选择预置指令"数据蒸馏"如[图3]，配置模型信息，单击下一步，配置资源池信息，选择自动生成数据集，启动即可，任务执行成功后，获得了蒸馏数据集。
     图3创建数据蒸馏任务   
     ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726649.png) 
  
  3. 单击"数据发布"，将生成的蒸馏数据集发布到模型训练。
  
  
  使用蒸馏后的数据进行模型训练：可查看[训练NLP大模型](https://support.huaweicloud.com/usermanual-pangulm/pangulm_04_0167.html)进行操作。
  
 
