国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

昇騰遷移丨4個(gè)TensorFlow模型訓(xùn)練案例解讀

這篇具有很好參考價(jià)值的文章主要介紹了昇騰遷移丨4個(gè)TensorFlow模型訓(xùn)練案例解讀。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文分享自華為云社區(qū)《TensorFlow模型訓(xùn)練常見(jiàn)案例》,作者: 昇騰CANN。

基于TensorFlow的Python API開(kāi)發(fā)的訓(xùn)練腳本默認(rèn)運(yùn)行在CPU/GPU/TPU上,為了使這些腳本能夠利用昇騰AI處理器的強(qiáng)大算力,需要將其遷移到昇騰平臺(tái)。

本期分享幾個(gè)TensorFlow網(wǎng)絡(luò)遷移到昇騰平臺(tái)后執(zhí)行失敗或者執(zhí)行性能差的典型案例,并給出原因分析及解決方法。

01 數(shù)據(jù)預(yù)處理中存在資源類算子,導(dǎo)致訓(xùn)練異常

問(wèn)題現(xiàn)象

TensorFlow網(wǎng)絡(luò)執(zhí)行時(shí),報(bào)如下錯(cuò)誤:

[2021-03-19 13:50:24.895266: W tensorflow/core/framework/op_kernel.cc:1651] OP_REQUIRES failed at lookup_table_op.cc:809 : Failed precondition: Table not initialized.

[2021-03-19 13:50:24.895283: W tensorflow/core/framework/op_kernel.cc:1651] OP_REQUIRES failed at lookup_table_op.cc:809 : Failed precondition: Table not initialized.

原因分析

初始化圖中存在資源類算子HaskTableV2 ,數(shù)據(jù)預(yù)處理中存在資源類算子LookupTableFindV2,兩個(gè)算子需要配對(duì)使用。

昇騰AI處理器默認(rèn)采用計(jì)算全下沉模式,即所有的計(jì)算類算子(包括初始化圖中的資源類算子)全部在Device側(cè)執(zhí)行,數(shù)據(jù)預(yù)處理仍在Host執(zhí)行。這樣數(shù)據(jù)預(yù)處理中的LookupTableFindV2算子與初始化圖中的HaskTableV2算子未在同一設(shè)備執(zhí)行,導(dǎo)致網(wǎng)絡(luò)運(yùn)行出錯(cuò)。

解決方案

需要修改訓(xùn)練腳本,使能混合計(jì)算能力,將資源類算子的初始化圖也留在Host側(cè)執(zhí)行,訓(xùn)練腳本修改方法如下:

from npu_bridge.npu_init import *

config = tf.ConfigProto()

custom_op = config.graph_options.rewrite_options.custom_optimizers.add()

custom_op.name = "NpuOptimizer"

custom_op.parameter_map["mix_compile_mode"].b = True

config.graph_options.rewrite_options.remapping = RewriterConfig.OFF

config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF

with tf.Session(config=config) as sess:

sess.run(...)

其中配置參數(shù)“mix_compile_mode”是混合計(jì)算開(kāi)啟開(kāi)關(guān),當(dāng)此開(kāi)關(guān)配置為“True”后,會(huì)將需要成對(duì)使用的資源類算子留在前端框架在線執(zhí)行。

補(bǔ)充說(shuō)明:當(dāng)用戶的預(yù)處理腳本中存在需要成對(duì)使用的tf.contrib.lookup下Table類的API時(shí),需要參考此方法使能混合計(jì)算功能,將初始化圖中的對(duì)應(yīng)算子留在Host側(cè)執(zhí)行。

02 數(shù)據(jù)預(yù)處理中存在tf.Variable,導(dǎo)致訓(xùn)練異常

問(wèn)題現(xiàn)象

TensorFlow網(wǎng)絡(luò)執(zhí)行時(shí),報(bào)如下錯(cuò)誤:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable inference/embed_continuous from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/inference/embed_continuous/N10tensorflow3VarE does not exist.

原因分析

此問(wèn)題是由于數(shù)據(jù)預(yù)處理腳本中存在tf.Variable變量。訓(xùn)練腳本在昇騰平臺(tái)運(yùn)行時(shí),tf.Variable變量在Host側(cè)執(zhí)行,而tf.Variable變量的初始化在Device側(cè)執(zhí)行,變量執(zhí)行和變量初始化不在同一設(shè)備執(zhí)行,導(dǎo)致訓(xùn)練異常。

使用了tf.Variable的訓(xùn)練腳本代碼示例如下:

batch_size = tf.Variable(

tf.placeholder(tf.int64, [], 'batch_size'),

trainable= False, collections=[]

)

train_dataset = train_dataset.batch(batch_size, drop_remainder=True)

解決方案

需要修改訓(xùn)練腳本,將tf.Variable修改成常量,修改示例如下:

batch_size = 64 train_dataset = train_dataset.batch(batch_size, drop_remainder=True)

batch_size = 64

train_dataset = train_dataset.batch(batch_size, drop_remainder=True)

03 動(dòng)態(tài)shape網(wǎng)絡(luò)執(zhí)行時(shí)報(bào)v1控制流算子不支持的錯(cuò)誤

問(wèn)題現(xiàn)象

TensorFlow 1.15版本的動(dòng)態(tài)shape網(wǎng)絡(luò)執(zhí)行時(shí),報(bào)如下錯(cuò)誤:

node node_name(node_type) is v1 control operator, which is not supported, please convert to v2 control operator

原因分析

由于當(dāng)前TensorFlow網(wǎng)絡(luò)為動(dòng)態(tài)shape網(wǎng)絡(luò),且存在V1版本的控制流算子。在昇騰AI處理器執(zhí)行TensorFlow動(dòng)態(tài)shape網(wǎng)絡(luò)當(dāng)前不支持V1版本的控制流算子,所以會(huì)造成網(wǎng)絡(luò)運(yùn)行失敗。

解決方案

將網(wǎng)絡(luò)中的TensorFlow V1版本的控制流算子轉(zhuǎn)換為V2版本,即可解決此問(wèn)題。

方法一:通過(guò)設(shè)置如下環(huán)境變量將TensorFlow V1版本的控制流算子轉(zhuǎn)換為V2版本。

export ENABLE_FORCE_V2_CONTROL=1

方法二:修改網(wǎng)絡(luò)腳本,在import tensorflow as tf后增加如下兩條指令,將TensorFlow V1版本的控制流算子轉(zhuǎn)換為V2版本。

tf.enable_control_flow_v2()

tf.enable_resource_variables()

04 網(wǎng)絡(luò)調(diào)測(cè)時(shí)ReduceSum算子執(zhí)行性能差

問(wèn)題現(xiàn)象

網(wǎng)絡(luò)調(diào)測(cè)時(shí),網(wǎng)絡(luò)整體性能較慢。通過(guò)Profiling工具獲取網(wǎng)絡(luò)的Profiling數(shù)據(jù),并進(jìn)行算子的性能數(shù)據(jù)分析,發(fā)現(xiàn)ReduceSum算子的性能很差。

查看Profiling性能數(shù)據(jù)中ReduceSum算子的詳細(xì)信息,關(guān)鍵字段如下表藍(lán)色字體所示:

op_type

block_dim

input_shape

input_data_type

input_formats

ReduceSum

1

1,256,256,3

DT_FLOAT16

NHWC

ReduceSum算子的輸入數(shù)據(jù)類型(input_data_type)為“DT_FLOAT16”,block_dim字段的值為“1”,說(shuō)明該算子未開(kāi)啟多核并行計(jì)算。

原因分析

針對(duì)昇騰AI處理器的ReduceSum算子,若輸入數(shù)據(jù)類型為float16,由于硬件限制,某些場(chǎng)景下會(huì)無(wú)法開(kāi)啟多核計(jì)算。

解決方案

ReduceSum算子輸入數(shù)據(jù)是float16的情況可能有如下兩種場(chǎng)景:

場(chǎng)景一:

網(wǎng)絡(luò)調(diào)測(cè)時(shí)未開(kāi)啟混合精度,ReduceSum算子的輸入數(shù)據(jù)本身就是float16類型,此種情況下,若ReduceSum算子的性能較差,可嘗試在ReduceSum算子前插入一個(gè)Cast算子,將算子的輸入數(shù)據(jù)類型從float16轉(zhuǎn)換為float32。

ReduceSum算子在輸入類型為float32的場(chǎng)景下,會(huì)使能多核并發(fā)計(jì)算,從而達(dá)到提升該算子性能的效果。

場(chǎng)景二:

網(wǎng)絡(luò)調(diào)測(cè)時(shí)開(kāi)啟了混合精度,將ReduceSum算子的輸入數(shù)據(jù)類型從float32轉(zhuǎn)換成了float16,此種情況下,可將ReduceSum算子加入混合精度黑名單,這樣網(wǎng)絡(luò)調(diào)測(cè)時(shí)ReduceSum算子就不會(huì)被轉(zhuǎn)換成float16類型,從而避免該算子性能的劣化。

將ReduceSum算子加入混合精度黑名單的方法如下:

1) 修改網(wǎng)絡(luò)腳本,通過(guò)modify_mixlist參數(shù)指定需要修改的混合精度算子黑名單,修改示例如下:

# Estimator模式修改方法

npu_config=NPURunConfig(

...

precision_mode="allow_mix_precision",

modify_mixlist="/home/test/ops_info.json"

)

# sess.run模式修改方法

config = tf.ConfigProto()

custom_op = config.graph_options.rewrite_options.custom_optimizers.add()

custom_op.name = "NpuOptimizer"

custom_op.parameter_map["use_off_line"].b = True

custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision")

custom_op.parameter_map["modify_mixlist"].s = tf.compat.as_bytes("/home/test/ops_info.json")

2) 在ops_info.json文件中進(jìn)行算子黑名單的配置,配置示例如下:

{

"black-list": {

"to-add": ["ReduceSumD"]

}

}

補(bǔ)充說(shuō)明:僅在ReduceSum算子性能較差時(shí),且符合本案例中的問(wèn)題現(xiàn)象時(shí),可嘗試使用此方法進(jìn)行性能提升。

05 更多介紹

[1]昇騰文檔中心:https://www.hiascend.com/zh/document

[2]昇騰社區(qū)在線課程:https://www.hiascend.com/zh/edu/courses

[3]昇騰論壇:https://www.hiascend.com/forum

?

點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745511.html

到了這里,關(guān)于昇騰遷移丨4個(gè)TensorFlow模型訓(xùn)練案例解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Tensorflow實(shí)現(xiàn)訓(xùn)練數(shù)據(jù)的加載—模型搭建訓(xùn)練保存—模型調(diào)用和加載全流程

    ?將tensorflow的訓(xùn)練數(shù)據(jù)數(shù)組(矩陣)保存為.npy的數(shù)據(jù)格式。為后續(xù)的模型訓(xùn)練提供便捷的方法。例如如下: ? 加載.npy訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)組(矩陣),加載后需要調(diào)整數(shù)據(jù)的形狀以滿足設(shè)計(jì)模型的輸入輸出需求,不然無(wú)法訓(xùn)練模型。 這里可以采用自定義層和tensorflow的API搭建

    2024年02月05日
    瀏覽(24)
  • tensorflow2 模型建立與訓(xùn)練

    模型的構(gòu)建:? tf.keras.Model ?和? tf.keras.layers 模型的損失函數(shù):? tf.keras.losses 模型的優(yōu)化器:? tf.keras.optimizer 模型的評(píng)估:? tf.keras.metrics Keras 有兩個(gè)重要的概念:? 模型(Model) ?和? 層(Layer) ?。層將各種計(jì)算流程和變量進(jìn)行了封裝(例如基本的全連接層,CNN 的卷積層

    2024年02月10日
    瀏覽(25)
  • 使用TensorFlow訓(xùn)練深度學(xué)習(xí)模型實(shí)戰(zhàn)(下)

    使用TensorFlow訓(xùn)練深度學(xué)習(xí)模型實(shí)戰(zhàn)(下)

    大家好,本文接TensorFlow訓(xùn)練深度學(xué)習(xí)模型的上半部分繼續(xù)進(jìn)行講述,下面將介紹有關(guān)定義深度學(xué)習(xí)模型、訓(xùn)練模型和評(píng)估模型的內(nèi)容。 定義深度學(xué)習(xí)模型 數(shù)據(jù)準(zhǔn)備完成后,下一步是使用TensorFlow搭建神經(jīng)網(wǎng)絡(luò)模型,搭建模型有兩個(gè)選項(xiàng): 可以使用各種層,包括Dense、Conv2D和

    2024年02月15日
    瀏覽(32)
  • 使用TensorFlow訓(xùn)練深度學(xué)習(xí)模型實(shí)戰(zhàn)(上)

    使用TensorFlow訓(xùn)練深度學(xué)習(xí)模型實(shí)戰(zhàn)(上)

    大家好,盡管大多數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)的文章都強(qiáng)調(diào)數(shù)學(xué),而TensorFlow文檔則強(qiáng)調(diào)使用現(xiàn)成數(shù)據(jù)集進(jìn)行快速實(shí)現(xiàn),但將這些資源應(yīng)用于真實(shí)世界數(shù)據(jù)集是很有挑戰(zhàn)性的,很難將數(shù)學(xué)概念和現(xiàn)成數(shù)據(jù)集與我的具體用例聯(lián)系起來(lái)。本文旨在提供一個(gè)實(shí)用的、逐步的教程,介紹如何使用

    2024年02月15日
    瀏覽(40)
  • 機(jī)器學(xué)習(xí)6:使用 TensorFlow 的訓(xùn)練線性回歸模型

    紙上得來(lái)終覺(jué)淺,絕知此事要躬行。前面 5 篇文章介紹了機(jī)器學(xué)習(xí)相關(guān)的部分基礎(chǔ)知識(shí),在本章,筆者將講解基于 TensorFlow 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的線性回歸模型,以便增強(qiáng)讀者對(duì)機(jī)器學(xué)習(xí)的體感。 目錄 1.環(huán)境準(zhǔn)備 1.1 安裝 Python3 1.2 安裝 PyCharm 1.3 安裝 TensorFlow 1.4 安裝?pandas

    2024年02月11日
    瀏覽(24)
  • 學(xué)習(xí) TensorFlow:構(gòu)建和訓(xùn)練機(jī)器學(xué)習(xí)模型的利器

    TensorFlow 是一種強(qiáng)大的開(kāi)源機(jī)器學(xué)習(xí)框架,被廣泛應(yīng)用于構(gòu)建和訓(xùn)練各種類型的神經(jīng)網(wǎng)絡(luò)模型。本文將介紹 TensorFlow 的基本概念、特點(diǎn)和學(xué)習(xí)步驟,同時(shí)提供一個(gè)項(xiàng)目案例和練習(xí)題,幫助讀者快速入門(mén)和掌握 TensorFlow。 強(qiáng)大的計(jì)算圖:TensorFlow 使用計(jì)算圖來(lái)表示計(jì)算任務(wù),將復(fù)

    2024年02月09日
    瀏覽(47)
  • Stable Diffusion模型基于 TensorFlow 或 PyTorch 訓(xùn)練

    安裝必要的軟件和庫(kù) : 安裝 Python(建議使用 Python 3.x 版本)。 安裝 TensorFlow 或 PyTorch,具體版本取決于你的模型是基于哪個(gè)框架訓(xùn)練的。 安裝其他可能需要的依賴,如 NumPy、Matplotlib 等。 獲取模型代碼和權(quán)重 : 下載或克隆 Stable Diffusion 的代碼倉(cāng)庫(kù)(如果可用)。 下載預(yù)訓(xùn)

    2024年04月28日
    瀏覽(38)
  • Tensorflow調(diào)用訓(xùn)練好的yolov5模型進(jìn)行推理

    Tensorflow調(diào)用訓(xùn)練好的yolov5模型進(jìn)行推理

    conda search找找當(dāng)前源下的CUDA與cuDNN有沒(méi)有我們要的版本: Onnx(Open Neural Network Exchange)是一種開(kāi)放的深度學(xué)習(xí)模型交換格式,用于在不同的深度學(xué)習(xí)框架之間共享模型。它提供了一個(gè)中間格式,可以將模型從一個(gè)框架轉(zhuǎn)換為另一個(gè)框架。 Tensorflow是一個(gè)廣泛使用的深度學(xué)習(xí)框

    2024年02月11日
    瀏覽(26)
  • 【VSCode部署模型】導(dǎo)出TensorFlow2.X訓(xùn)練好的模型信息

    【VSCode部署模型】導(dǎo)出TensorFlow2.X訓(xùn)練好的模型信息

    參考tensorflow2.0 C++加載python訓(xùn)練保存的pb模型 經(jīng)過(guò)模型訓(xùn)練及保存,我們得到 “OptimalModelDataSet2” 文件夾,模型的保存方法( .h5 或 .pb 文件),參考【Visual Studio Code】c/c++部署tensorflow訓(xùn)練的模型 其中“OptimalModelDataSet2”文件夾保存著訓(xùn)練好的模型數(shù)據(jù) \\\"saved_model.pb\\\"

    2024年02月15日
    瀏覽(47)
  • pytorch11:模型加載與保存、finetune遷移訓(xùn)練

    pytorch11:模型加載與保存、finetune遷移訓(xùn)練

    往期回顧 pytorch01:概念、張量操作、線性回歸與邏輯回歸 pytorch02:數(shù)據(jù)讀取DataLoader與Dataset、數(shù)據(jù)預(yù)處理transform pytorch03:transforms常見(jiàn)數(shù)據(jù)增強(qiáng)操作 pytorch04:網(wǎng)絡(luò)模型創(chuàng)建 pytorch05:卷積、池化、激活 pytorch06:權(quán)重初始化 pytorch07:損失函數(shù)與優(yōu)化器 pytorch08:學(xué)習(xí)率調(diào)整策略

    2024年02月01日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包