本文將基于蝰蛇峽谷(SerpentCanyon) 詳細(xì)介紹如何在英特爾獨(dú)立顯卡上訓(xùn)練TensorFlow模型的全流程攻礼。
1.1 英特爾銳炫?獨(dú)立顯卡簡(jiǎn)介
英特爾銳炫? 顯卡基于Xe-HPG 微架構(gòu)砰诵,Xe HPG GPU 中的每個(gè) Xe 內(nèi)核都配置了一組 256 位矢量引擎囊嘉,旨在加速傳統(tǒng)圖形和計(jì)算工作負(fù)載这橙,以及新的 1024 位矩陣引擎或 Xe 矩陣擴(kuò)展,旨在加速人工智能工作負(fù)載熬丧。
1.2 蝰蛇峽谷簡(jiǎn)介
蝰蛇峽谷(SerpentCanyon) 是一款性能強(qiáng)勁笋粟,并且體積小巧的高性能迷你主機(jī),搭載全新一代混合架構(gòu)的第 12 代智能英特爾? 酷睿? 處理器,并且內(nèi)置了英特爾銳炫? A770M獨(dú)立顯卡害捕。
1.3 搭建訓(xùn)練TensorFlow模型的開(kāi)發(fā)環(huán)境
1.3.1 Windows版本要求:
訓(xùn)練TensorFlow所依賴的軟件包TensorFlow-DirectML-Plugin 包要求:
- Windows 10的版本≥1709
- Windows 11的版本≥21H2
用“Windows logo 鍵+ R鍵”啟動(dòng)“運(yùn)行”窗口唆香,然后輸入命令“winver”可以查得Windows版本。
1.3.2 下載并安裝最新的英特爾顯卡驅(qū)動(dòng)
到Intel官網(wǎng)下載并安裝最新的 英特爾顯卡驅(qū)動(dòng)
1.3.3 下載并安裝Anaconda
下載并安裝Python虛擬環(huán)境和軟件包管理工具Anaconda吨艇。安裝完畢后躬它,用下面的命令創(chuàng)建并激活虛擬環(huán)境tf2_a770:
conda create --name tf2_a770 python=3.9
conda activate tf2_a770
1.3.4 安裝TensorFlow2
在虛擬環(huán)境tf2_a770中安裝TensorFlow 2.10。需要注意的是:tensorflow-directml-plugin軟件包當(dāng)前只支持TensorFlow 2.10东涡。
pip install tensorflow-cpu==2.10
1.3.5 安裝tensorflow-directml-plugin
在虛擬環(huán)境tf2_a770中安裝tensorflow-directml-plugin冯吓,這是一個(gè)在Windows平臺(tái)上的機(jī)器學(xué)習(xí)訓(xùn)練加速軟件包。
pip install tensorflow-directml-plugin
到此疮跑,在Windows平臺(tái)上用英特爾獨(dú)立顯卡訓(xùn)練TensorFlow模型的開(kāi)發(fā)環(huán)境配置完畢组贺。
1.4 在英特爾獨(dú)立顯卡上訓(xùn)練TensorFlow模型
1.4.1 下載并解壓flower數(shù)據(jù)集
用下載器下載并解壓flower數(shù)據(jù)集
1.4.2 下載訓(xùn)練代碼啟動(dòng)訓(xùn)練
請(qǐng)下載tf2_training_on_A770.py并放入flower_photos同一個(gè)文件夾下運(yùn)行。
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)
# 導(dǎo)入Flower數(shù)據(jù)集
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)
# 啟動(dòng)預(yù)取和數(shù)據(jù)緩存
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=tf.data.AUTOTUNE)
# 創(chuàng)建模型
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'])
#訓(xùn)練模型
model.fit(train_ds,validation_data=val_ds,epochs=20)
運(yùn)行結(jié)果如下:結(jié)論:英特爾獨(dú)立顯卡支持TensorFlow模型訓(xùn)練祖娘。下一篇文章失尖,我們將介紹在英特爾獨(dú)立顯卡上訓(xùn)練PyTorch模型