使用英特爾獨立顯卡訓練TensorFlow模型

本文將基於蝰蛇峽谷(SerpentCanyon) 詳細介紹如何在英特爾獨立顯卡上訓練TensorFlow模型的全流程。

1.1 英特爾銳炫™獨立顯卡簡介

英特爾銳炫™ 顯卡基於Xe-HPG 微架構,Xe HPG GPU 中的每個 Xe 內核都配置了一組 256 位矢量引擎,旨在加速傳統圖形和計算工作負載,以及新的 1024 位矩陣引擎或 Xe 矩陣擴展,旨在加速人工智能工作負載

1.2 蝰蛇峽谷簡介

蝰蛇峽谷(SerpentCanyon) 是一款性能強勁,並且體積小巧的高性能迷你主機,搭載全新一代混合架構的第 12 代智能英特爾® 酷睿™ 處理器,並且內置了英特爾銳炫™ A770M獨立顯卡

1.3 搭建訓練TensorFlow模型的開發環境

1.3.1 Windows版本要求:

訓練TensorFlow所依賴的軟件包TensorFlow-DirectML-Plugin 包要求:

  • Windows 10的版本≥1709
  • Windows 11的版本≥21H2

用“Windows logo 鍵+ R鍵”啓動“運行”窗口,然後輸入命令“winver”可以查得Windows版本。

1.3.2 下載並安裝最新的英特爾顯卡驅動

到Intel官網下載並安裝最新的 英特爾顯卡驅動

1.3.3 下載並安裝Anaconda

下載並安裝Python虛擬環境和軟件包管理工具Anaconda。安裝完畢後,用下面的命令創建並激活虛擬環境tf2_a770:

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

1.3.4 安裝TensorFlow2

在虛擬環境tf2_a770中安裝TensorFlow 2.10。需要注意的是:tensorflow-directml-plugin軟件包當前只支持TensorFlow 2.10。

pip install tensorflow-cpu==2.10

1.3.5 安裝tensorflow-directml-plugin

在虛擬環境tf2_a770中安裝tensorflow-directml-plugin,這是一個在Windows平臺上的機器學習訓練加速軟件包。

pip install tensorflow-directml-plugin

到此,在Windows平臺上用英特爾獨立顯卡訓練TensorFlow模型的開發環境配置完畢

1.4 在英特爾獨立顯卡上訓練TensorFlow模型

1.4.1 下載並解壓flower數據集

用下載器下載並解壓flower數據集

1.4.2 下載訓練代碼啓動訓練

請下載tf2_training_on_A770.py並放入flower_photos同一個文件夾下運行。

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模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章