本书旨在帮助开发者应对AI推理计算性能优化这一重要挑战。随着深度学习模型的规模和复杂性日益增长,如何提升推理效率已成为开发者关注的核心问题。本书详细介绍了OpenVINOTM(Open Visual Inference and Neural Network Optimization)这款由英特尔推出的,专为深度学习模型的优化、加速推理和跨平台部署设计的开源工具套件。通过简单易用的功能,开发者可以快速上手,实现AI应用的高效落地。
本书涵盖了从OpenVINO的基础入门到高级优化的完整内容,包括设备插件、量化技术、大语言模型和生成式AI的优化与部署等,帮助开发者灵活应对不同应用场景的需求。此外,书中还介绍了端到端AI推理计算性能提升的实战案例,以及与PyTorch、ONNX Runtime等工具的集成,确保开发者在熟悉的环境中提升开发效率。书中代码获取方式见前言。
本书不仅适合AI领域的初学者,也为有经验的开发者提供了深入的技术指南。通过OpenVINO,开发者可以轻松提升AI推理计算性能,加速AI应用项目的成功落地。
封面
前折页
书名页
版权
前言
第1章 OpenVINOTM工具套件快速入门
1.1 OpenVINOTM工具套件简介
1.2 OpenVINOTM常用工具和组件
1.3 搭建OpenVINOTM Python开发环境
1.4 使用OpenVINOTM Model Converter转换模型
1.4.1 OpenVINOTM IR模型
1.4.2 使用OVC转换模型
1.5 使用benchmark_app评估模型推理计算性能
1.6 编写OpenVINOTM同步推理程序
1.6.1 OpenVINOTM同步推理程序典型流程
1.6.2 创建Core对象
1.6.3 读取并编译模型
1.6.4 获取图像数据
1.6.5 数据预处理
1.6.6 执行AI推理计算并获得推理结果
1.6.7 对推理结果进行后处理
1.6.8 运行完整的推理程序
1.7 本章小结
第2章 优化AI模型的推理计算性能
2.1 AI推理计算性能评价指标
2.1.1 AI模型的推理计算性能
2.1.2 端到端的AI程序推理计算性能
2.2 OpenVINOTM设备插件
2.2.1 CPU插件、GPU插件和NPU插件
2.2.2 自动设备选择(AUTO)
2.2.3 用代码指定计算设备
2.3 性能提示(Performance Hints)
2.3.1 LATENCY(延迟优先)
2.3.2 THROUGHPUT(吞吐量优先)
2.3.3 CUMULATIVE_THROUGHPUT(累计吞吐量)
2.3.4 用代码配置性能提示属性
2.4 计算设备的属性
2.4.1 获得属性
2.4.2 设置属性
2.5 推理请求数量(Number of Infer Requests)
2.5.1 最佳推理请求数
2.5.2 用代码设置推理请求数
2.6 自动批处理(Automatic Batching)
2.6.1 启用自动批处理
2.6.2 设置批尺寸
2.6.3 设置自动批处理超时
2.7 模型缓存(Model Caching)
2.8 线程调度(Thread Scheduling)
2.9 共享内存(Shared Memory)
2.9.1 输入共享内存
2.9.2 输出共享内存
2.10 编写带属性配置的OpenVINOTM同步推理程序
2.10.1 创建推理请求对象
2.10.2 阻塞式推理计算方法:infer()
2.10.3 基于YOLOv8-cls分类模型的同步推理程序
2.10.4 基于YOLOv8目标检测模型的同步推理程序
2.10.5 基于YOLOv8-seg实例分割模型的同步推理程序
2.11 本章小结
第3章 模型量化技术
3.1 深度学习中常见的数据类型
3.1.1 如何用二进制表示浮点数
3.1.2 不同数据类型的存储需求和计算效率
3.2 INT8量化
3.3 NNCF
3.4 搭建NNCF开发环境
3.5 基础量化
3.5.1 准备COCO验证数据集
3.5.2 编写转换函数transform_fn()
3.5.3 准备校准数据集
3.5.4 调用nncf.quantize()函数执行INT8量化
3.5.5 保存INT8量化好的模型
3.5.6 测试INT8模型性能
3.5.7 基础量化小结
3.6 带精度控制的量化
3.6.1 准备COCO128验证数据集
3.6.2 编写转换函数transform_fn()
3.6.3 准备校准数据集和验证数据集
3.6.4 准备验证函数
3.6.5 调用nncf.quantize_with_accuracy_control()函数执行INT8量化
3.6.6 保存INT8量化好的模型
3.6.7 测试INT8模型性能
3.6.8 带精度控制的量化小结
3.7 本章小结
第4章 优化端到端的AI程序推理计算性能
4.1 端到端的AI程序推理计算性能
4.2 预处理API
4.2.1 导出YOLOv8s IR模型
4.2.2 实例化PrePostProcessor对象
4.2.3 声明用户输入数据信息
4.2.4 声明原始模型输入节点的布局信息
4.2.5 定义预处理步骤
4.2.6 将预处理步骤嵌入原始AI模型
4.2.7 保存嵌入预处理的AI模型
4.2.8 内嵌预处理后的模型性能
4.3 torchvision预处理转换器
4.4 使用异步推理提升AI程序的吞吐量
4.4.1 OpenVINOTM异步推理API
4.4.2 YOLOv8异步推理范例
4.5 使用AsyncInferQueue进一步提升AI程序的吞吐量
4.6 多路视频流并行推理
4.6.1 下载无版权视频
4.6.2 下载person-detection-0202模型并准备前、后处理函数
4.6.3 编写推理线程
4.6.4 编写显示线程
4.6.5 启动多线程
4.7 本章小结
第5章 OpenVINOTM的编程生态
5.1 指定OpenVINOTM为PyTorch 2.×后端
5.1.1 torch.compile简介
5.1.2 OpenVINOTM后端
5.2 ONNX Runtime的OpenVINOTM执行提供者
5.2.1 搭建ONNX Runtime开发环境
5.2.2 OpenVINOTM执行提供者范例程序
5.3 Optimum Intel的OpenVINOTM后端
5.3.1 搭建开发环境
5.3.2 用optimum-cli对Qwen2-1.5B-Instruct模型进行INT4量化
5.3.3 编写推理程序qwen2_optimum.py
5.4 LangChain的OpenVINOTM后端
5.4.1 LangChain支持OpenVINOTM后端
5.4.2 编写推理程序qwen2_langchain.py
5.5 vLLM的OpenVINOTM后端
5.5.1 搭建OpenVINOTM+vLLM开发环境
5.5.2 vLLM的范例程序
5.6 OpenVINOTM C/C++API
5.6.1 常用OpenVINOTM C/C++API
5.6.2 搭建OpenVINOTM C++开发环境
5.6.3 运行OpenVINOTM C++范例程序
5.7 OpenVINOTM JavaScript API
5.7.1 常用OpenVINOTM JavaScript API
5.7.2 搭建OpenVINOTM JavaScript开发环境
5.7.3 运行OpenVINOTM JavaScript范例程序
5.8 OpenVINOTM C# API
5.8.1 常用OpenVINOTM C# API
5.8.2 搭建OpenVINOTM C#开发环境
5.8.3 运行OpenVINOTM C#范例程序
5.9 OpenVINOTM Java API
5.9.1 常用OpenVINOTM Java API
5.9.2 搭建OpenVINOTM Java开发环境
5.9.3 运行OpenVINOTM Java范例程序
5.10 OpenVINOTM LabVIEW API
5.10.1 常用OpenVINOTM LabVIEW API
5.10.2 搭建OpenVINOTM LabVIEW开发环境
5.10.3 运行OpenVINOTM LabVIEW范例程序
5.11 本章小结
第6章 无监督异常检测库Anomalib
6.1 为什么要使用无监督异常检测
6.2 Anomalib概述
6.2.1 Anomalib支持的视觉任务
6.2.2 Anomalib适用的数据类型
6.3 Anomalib的关键组件
6.3.1 Anomalib的算法
6.3.2 Anomalib的功能模块
6.4 Anomalib的工作流程
6.5 搭建Anomalib开发环境
6.6 使用命令实现模型的训练、测试和推理
6.6.1 训练并测试模型
6.6.2 模型推理
6.7 使用API实现模型的训练、测试和推理
6.7.1 模型训练
6.7.2 测试模型
6.7.3 导出模型
6.7.4 执行推理计算
6.8 本章小结
第7章 大语言模型的优化与部署
7.1 大语言模型简介
7.1.1 基于Transformer架构的大语言模型的技术演进
7.1.2 基于仅解码器架构的GPT系列模型的技术演进
7.1.3 大语言模型推理计算的挑战
7.1.4 键值缓存优化技术
7.1.5 有状态模型
7.2 使用OpenVINOTM优化大语言模型推理计算
7.2.1 使用Optimum Intel工具包部署Llama 3
7.2.2 使用OpenVINOTM GenAI API部署Llama 3
7.3 基于Llama 3模型实现聊天机器人
7.3.1 Gradio库简介
7.3.2 聊天机器人的代码实现
7.4 基于LangChain+Llama 3模型实现RAG
7.4.1 RAG简介
7.4.2 LangChain框架简介
7.4.3 LangChain框架对OpenVINOTM的支持
7.4.4 RAG系统的代码实现
7.5 基于LangChain+Llama 3模型实现AI Agent
7.5.1 基于LLM的AI Agent简介
7.5.2 常见的开发AI Agent的框架
7.5.3 AI Agent的代码实现
7.6 本章小结
第8章 Stable Diffusion模型的优化与部署
8.1 扩散模型简介
8.2 Stable Diffusion系列模型的技术演进
8.3 优化和部署Stable Diffusion 3 Medium模型
8.3.1 搭建开发环境
8.3.2 下载权重文件到本地
8.3.3 导出SD3 Medium的OpenVINOTM IR格式模型
8.3.4 编写推理代码,实现一键生成创意海报
8.4 本章小结
第9章 多模态大模型的优化与部署
9.1 单模态AI简介
9.2 转向多模态AI的必要性
9.3 优化和部署LLaVA-NeXT多模态模型
9.3.1 搭建开发环境
9.3.2 下载权重文件到本地
9.3.3 模型转换为OpenVINOTM IR格式
9.3.4 使用OpenVINOTM进行量化优化
9.3.5 设备选择与配置
9.3.6 推理流水线设置
9.3.7 运行推理并展示结果
9.4 本章小结
第10章 开源社区资源
10.1 英特尔开发人员专区及开发套件专区
10.2 “英特尔物联网”公众号
10.3 “英特尔创新大使”计划
后折页
封底
机械工业出版社 京icp备14043556号-1 (署)网出证(京)字第214号 Copyright (C) 2001 CmpBook. All Rights Reserved