paddle18-推理部署 【后续学习】

推理部署

5. 推理部署: 服务器部署已经训练好的模型进行预测

5.1 服务器端部署
5.1.1 安装与编译 Linux 预测库
  • 直接下载安装
  • 从源码编译
    • Server 端 预测源码编码

    • NVIDIA Jetson 嵌入式硬件预测库源码编译

        1. 准备环境
        1. 编译 paddle inference 预测库
        1. 样例测试
5.1.2 安装与编译 window 预测库
5.1.3 C++ 预测API介绍
  • 使用 Predictor 进行高性能预测
    paddle inference 采用 Predictor(非线程安全)进行预测。 Predictor 是一个高性能预测引擎,该引擎通过对计算图的分析,完成对计算图的一系列优化(如OP融合、内存/显存的优化、TensorRT等底层加速库的支持),能够大大提升预测性能。

  • Predictor 预测实例:
    ```
    #include "paddle_inference_api.h"

      namespace paddle_infer{
      void CreateConfig(Config* config, const std::string& model_dirname){
          // 模型 从磁盘进行加载  
          config->SetModel(model_dirname + "/model",
                           model_dirname + "/params");
          
          // 如果从内存中加载, 可以使用 SetModelBuffer 接口 
          // config->SetModelBuffer(prog_buffer,
                                    prog_size,
                                    params_buffer,
                                    params_size)
    
          config->EnableUseGpu(100 /*设定GPU初始显存池MB*/,     0 /*设定GPU ID为0*/);   // 开始GPU预测 
      }
    
    
      void RunAnalysis(int batch_size, std::string model_dirname){
          // 1. 创建 AnalsisConfig  
          Config config;
          CreateConfig(&config, model_dirname);
    
          // 2.根据config 创建 predictor  
          auto predictor = CreatePredictor(config)
          int channels = 3;
          int height = 224;
          int width = 224;
          float = input[batch_size * channels * height * width] = {0};
    
          // 3.创建输入 
    
          // 4. 运行预测引擎 
          CHECK(predictor->Run()) 
    
          // 5. 获取输出
      }   
      }   // namespace paddle_infer 
    
      int main(){
          paddle_infer::RunAnalysis(1, ",/mobilenet");
          return 0
      }
      ```
    
    • 使用 Config 管理预测配置
      config 管理 Predictor 的预测配置,提供了 模型路径设置、预测引擎运行设备选择、多种优化预测流程的选项。
      • 通用优化配置
      config->SwitchInOptim(true);    // 开启计算图分析优化,包括OP融合等; 
      config->EnableMemory;           // 开启内存/显存复用;
      
      • 设置模型和参数路径
        从磁盘加载模型时,根据模型和参数文件存储方式不同,设置Config 加载模型和参数的路径有两种方式:

        • 非combine模式: 模型文件夹model_dir下存在一个模型文件和多个参数文件时,传入模型文件夹路径,模型文件名默认为 model.
        config->SetModel("./model_dir");
        
        • combine形式: 模型文件夹model_dir下只有一个模型文件model和一个参数文件 params时,传入模型文件和参数文件路径。
        config->SetModel("./model_dir/model", "./model_dir/params");
        
      • 配置CPU预测:

      • 配置GPU预测:

  • 使用 Tensor 管理输入输出

  • 使用 PredictorPool 在多线程下进行预测

  • C++ 预测样例编译测试

  • 性能调优

  • 推理升级指南

5.1.4 C 预测API介绍
5.1.5 python 预测API介绍
5.2 移动端部署
5.3 模型压缩: PaddleSlim 模型压缩工具库,包含 模型裁剪、定点量化、知识蒸馏、超参搜索、模型结构搜素等一些列模型压缩策略。
原文地址:https://www.cnblogs.com/zhangtao-0001/p/14747051.html