如何在英特尔独立显卡上训练TensorFlow模型的全流程

描述

本文将基于蝰蛇峡谷(Serpent Canyon) 详细介绍如何在英特尔独立显卡上训练 TensorFlow 模型的全流程。

1.1 英特尔 锐炫 独立显卡简介

英特尔

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

1.2 蝰蛇峡谷简介

英特尔

蝰蛇峡谷(Serpent Canyon) 是一款性能强劲,并且体积小巧的高性能迷你主机,搭载全新一代混合架构的第 12 代智能英特尔 酷睿 处理器,并且内置了英特尔 锐炫 A770M 独立显卡

搭建训练 TensorFlow 模型的开发环境

Windows 版本要求

训练 TensorFlow 所依赖的软件包 TensorFlow-DirectML-Plugin 包要求:

Windows 10的版本≥1709

Windows 11的版本≥21H2

用“Windows logo 键+ R键”启动“运行”窗口,然后输入命令“winver”可以查得Windows版本。

英特尔

下载并安装最新的英特尔显卡驱动

到英特尔官网下载并安装最新的英特尔显卡驱动。驱动下载链接:

https://www.intel.cn/content/www/cn/zh/download/726609/intel-arc-iris-xe-graphics-whql-windows.html

下载并安装Anaconda

下载并安装 Python 虚拟环境和软件包管理工具Anaconda:

https://www.anaconda.com/

安装完毕后,用下面的命令创建并激活虚拟环境tf2_a770:

 

conda create --name tf2_a770 python=3.9
conda activate tf2_a770

 

向右滑动查看完整代码

安装TensorFlow2

在虚拟环境 tf2_a770 中安装 TensorFlow 2.10。需要注意的是:tensorflow-directml-plugin软件包当前只支持TensorFlow 2.10

 

pip install tensorflow-cpu==2.10

 

向右滑动查看完整代码

安装 tensorflow-directml-plugin

在虚拟环境 tf2_a770 中安装 tensorflow-directml-plugin,这是一个在 Windows 平台上的机器学习训练加速软件包。

 

  // @brief 加载推理数据
        // @param input_node_name 输入节点名
        // @param input_data 输入数据数组
        public void load_input_data(string input_node_name, float[] input_data) {
            ptr = NativeMethods.load_input_data(ptr, input_node_name, ref input_data[0]);
        }
        // @brief 加载图片推理数据
        // @param input_node_name 输入节点名
        // @param image_data 图片矩阵
        // @param image_size 图片矩阵长度
        public void load_input_data(string input_node_name, byte[] image_data, ulong image_size, int type) {
            ptr = NativeMethods.load_image_input_data(ptr, input_node_name, ref image_data[0], image_size, type);
        }

 

向右滑动查看完整代码

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

在英特尔独立显卡上训练 TensorFlow 模型

下载并解压 flower 数据集

用下载器(例如,迅雷)下载并解压 flower 数据集,下载链接:

https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz

英特尔

下载训练代码启动训练

请下载 tf2_training_on_A770.py 并放入 flower_photos 同一个文件夹下运行。链接:

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

 

from pathlib import Path
import tensorflow as tf
data_dir  = Path("flower_photos")
image_count = len(list(data_dir.glob('*/*.jpg')))
print("Number of image files:", image_count)
# 导入Flower数据集
train_ds = tf.keras.utils.image_dataset_from_directory(data_dir, validation_split=0.2,
  subset="training", seed=123, image_size=(180, 180), batch_size=32)
val_ds = tf.keras.utils.image_dataset_from_directory(data_dir, validation_split=0.2, subset="validation", seed=123, image_size=(180, 180), batch_size=32)
# 启动预取和数据缓存
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=tf.data.AUTOTUNE)
# 创建模型
model = tf.keras.Sequential([
  tf.keras.layers.Rescaling(1./255),
  tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(5)
])
# 编译模型
model.compile(optimizer='adam',
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['accuracy'])
#训练模型
model.fit(train_ds,validation_data=val_ds,epochs=20)

 

向右滑动查看完整代码

  英特尔

总结

英特尔独立显卡支持 TensorFlow 模型训练。下一篇文章,我们将介绍在英特尔独立显卡上训练 PyTorch 模型。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分