zoukankan      html  css  js  c++  java
  • 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 模型压缩工具库,包含 模型裁剪、定点量化、知识蒸馏、超参搜索、模型结构搜素等一些列模型压缩策略。
  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/zhangtao-0001/p/14747051.html
Copyright © 2011-2022 走看看