开发者实战 | 用英特尔独立显卡训练AI智能收银机分类模型

本文主要是介绍开发者实战 | 用英特尔独立显卡训练AI智能收银机分类模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章作者:罗宏裕,张晶;

英特尔独立显卡技术指导:唐文凯

outside_default.png

本文将介绍在英特尔® 独立显卡上训练 AI 智能收银机分类模型的全流程,在下一篇中将介绍基于 OpenVINO™ 工具套件在 AIxBoard 上部署训练好的模型,快速实现 AI 智能收银机解决方案基于英特尔平台从模型训练到部署的端到端的关键技术验证。

在阅读本文前,请先在 Ubuntu 22.04 上安装英特尔锐炫 独立显卡驱动程序。

01

什么是 AI 智能收银机

 “看”一眼就能结账的 AI 智能收银机极大提升了零售店智能化水平和结算效率,推动无人结算零售店时代的到来。以食堂应用场景为例,就餐者自助取餐选菜后,直接将餐盘放在智能结算台上, AI 可以自动识别菜品的种类以及对应价格,然后自动计算出整餐金额,整个过程不到一秒钟。

dcd77e9ab96289597d42dca1114fb574.jpeg

本文将以 AI 食物图片分类为例,详细介绍在英特尔锐炫 独立显卡上训练 PyTorch 版 ResNet 50模型的整个过程。

02

英特尔锐炫 独立显卡简介

英特尔锐炫 显卡基于 Xe-HPG 微架构, Xe HPG GPU 中的每个 Xe 内核都配置了一组 256 位矢量引擎,旨在加速传统图形和计算工作负载,以及新的 1024 位矩阵引擎或 Xe 矩阵扩展,旨在加速人工智能工作负载。

01503456b6d528408498560ae1cf804b.jpeg

03

搭建基于英特尔锐炫 独立显卡

训练 PyTorch 模型的开发环境

3.1 环境要求

在 Ubuntu 22.04 上基于英特尔独立显卡训练 PyTorch 模型,需要依次安装:

1.英特尔独立显卡的驱动程序

2.英特尔® oneAPI Base Toolkit 2023.0

3.torch 1.13.0a0 和 torchvision 0.14.1a0

4.intel-extension-for-pytorch

3.2 安装英特尔独立显卡的驱动程序

请参考《在 Ubuntu 22.04上安装英特尔锐炫 独立显卡驱动程序》完成英特尔独立显卡的驱动安装。安装成功后,可以在 About 窗口 Graphics 一栏看到英特尔独立显卡的型号。

0f4a5eb03dc2282ea3c9baf31105a810.jpeg

3.3 下载并安装

英特尔® oneAPI Base Toolkit

第一步,通过下面的命令下载英特尔® oneAPI Base Toolkit并启动安装程序:

wget https://registrationcenter-download.intel.com/akdlm/irc_nas/19079/l_BaseKit_p_2023.0.0.25537.sh
sudo sh ./l_BaseKit_p_2023.0.0.25537.sh

向右滑动查看完整代码

5428af6737c4d3c881f0d1b7ca38db51.jpeg

第二步,保持默认选项,完成英特尔® oneAPIBase Toolkit安装

d90a60d98e29db37a2f1bcff0e3ea873.jpeg

3.4 安装

intel-extension-for-pytorch

使用命令安装torch、torchvision和intel-extension-for-pytorch:

python -m pip install torch==1.13.0a0 torchvision==0.14.1a0 intel_extension_for_pytorch==1.13.10+xpu -f https://developer.intel.com/ipex-whl-stable-xpu

向右滑动查看完整代码

cae68889de11c6ba640bd7a155c81787.jpeg

3.5 安装xpu-smi(可选)

英特尔® XPU 管理器是一个免费的开源工具,类似 nvidia-smi,用于监测英特尔独立显卡的运行信息(例如,温度、功耗、频率、显存容量等),也可以用于诊断独立显卡的问题。

安装包下载网站:

https://github.com/intel/xpumanager/releases 

4ca2cf60024f46553755bd930745bba3.jpeg

 然后,通过下面的命令进行安装

sudo apt install ./xpu-smi_1.2.5_20230313.033847.f458af77.u22.04_amd64.deb

向右滑动查看完整代码

b756b7b6a4518bde781806ae3aa4a510.jpeg

xpu-smi 的使用示例如下所示:

xpu-smi dump -d 0 -m 0,1,2,3,4,5,6

向右滑动查看完整代码

b1cc8a2676cf644da3f6bad9b86f5d95.jpeg

到此,在 Ubuntu 平台上用英特尔独立显卡训练 PyTorch 模型的开发环境配置完毕。

第一步,请通过以下命令激活oneAPI环境:

source /opt/intel/oneapi/setvars.sh

向右滑动查看完整代码

f561b9ffb954d0cbde1e1e912a274d9c.jpeg

第二步,请通过以下命令激活 DPC++ 编译器和 oneMKL 环境:

source /opt/intel/oneapi/compiler/latest/env/vars.sh
source /opt/intel/oneapi/mkl/latest/env/vars.sh

向右滑动查看完整代码

1d3ab5b3c6c8b13952f5793552844e0d.jpeg

第三步,

请下载 training_on_Intel_dGPU_bf16_ipex.py 并运行,该范例代码使用了 PyTorch 自带的 Food101 数据集和 resnet50 预训练模型参数。

下载地址:             

https://gitee.com/ppov-nuc/training_on_intel_GPU/blob/main/training_on_Intel_dGPU_bf16_ipex.py

核心代码片段:

model = torchvision.models.resnet50(weights='IMAGENET1K_V2',num_classes=101)
model = model.to('xpu')
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr = LR, momentum=0.9)
model.train()
model, optimizer = ipex.optimize(model, optimizer=optimizer, dtype=torch.bfloat16)
# 训练循环
for epoch in range(epochs):tloss,vloss = 0.0, 0.0top1,top5 = 0.0, 0.0pbar = tqdm(enumerate(train_loader),total=len(train_loader), bar_format=TQDM_BAR_FORMAT)for i, (data, target) in pbar:model.train()data = data.to('xpu')target = target.to('xpu')with torch.xpu.amp.autocast():output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()optimizer.zero_grad()tloss = (tloss*i + loss.item()) / (i+1)if i == len(pbar) - 1:pred,targets,vloss = [], [], 0n = len(val_loader)# 评估训练精度model.eval()with torch.xpu.amp.autocast():for d, (images, labels) in enumerate(val_loader):images = images.to('xpu') labels = labels.to('xpu')y = model(images)pred.append(y.argsort(1, descending=True)[:, :5])targets.append(labels) vloss += criterion(y, labels).item()

向右滑动查看完整代码

运行结果,如下图所示:

a47d896d317fbd3a39ea516d92f324e2.jpeg

05

总结

本文详细介绍了在 Ubuntu 22.04下使用英特尔独立显卡进行 PyTorch 模型训练,此外,基于单卡英特尔 A750 和 Ubuntu 22.04 的环境,笔者还分别测试了基于 Food101 数据集的 Resnet50 模型和 Resnet101 模型各自的 BF16 格式和 FP32 格式的最大 batch_size 及其训练时的最大显存使用率,方便读者对 batch_size 进行修改,具体结果如下表所示。

_

BF16

FP32

Resnet50

batch_size:128

显存使用率:92.09%

batch_size:64

显存使用率:90.41%

Resnet101

batch_size:96

显存使用率:98.95%

batch_size:48

显存使用率:96.77%

--END--

你也许想了解(点击蓝字查看)⬇️➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 如何给开源项目做贡献? | 开发者节日福利➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理➡️ 图片提取文字很神奇?试试三步实现OCR!➡️【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务➡️使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2022.3

点击 阅读原文 立即体验OpenVINO 2022.3

f27454eda38fe621c4e25c463e23d7dc.png

文章这么精彩,你有没有“在看”?

这篇关于开发者实战 | 用英特尔独立显卡训练AI智能收银机分类模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542160

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装