工資不漲,英偉達(dá) GPU 的售價(jià)年年漲。因此,多一個(gè)競(jìng)爭(zhēng)對(duì)手,總是好事。
近日,Google 宣布推出適用于 ROCm GPU 的 TensorFlow v1.8,其中包括 Radeon Instinct MI25。對(duì)于 AMD 正在進(jìn)行的深度學(xué)習(xí)加速工作而言,這是一座重大的里程碑。
ROCm即 Radeon 開(kāi)放生態(tài)系統(tǒng) (Radeon Open Ecosystem),是我們?cè)?Linux 上進(jìn)行 GPU 計(jì)算的開(kāi)源軟件基礎(chǔ)。而 TensorFlow 實(shí)現(xiàn)則使用了MIOpen,這是一個(gè)適用于深度學(xué)習(xí)的高度優(yōu)化 GPU 例程庫(kù)。
AMD 提供了一個(gè)預(yù)構(gòu)建的whl軟件包,安裝過(guò)程很簡(jiǎn)單,類似于安裝 Linux 通用 TensorFlow。目前 Google 已發(fā)布安裝說(shuō)明及預(yù)構(gòu)建的 Docker 映像。下面,我們就來(lái)手把手地教大家。
▌如何在 AMD 的 GPU 上運(yùn)行 TensorFlow?
首先,你需要安裝開(kāi)源 ROCm 堆棧,詳細(xì)的安裝說(shuō)明可以參考:
https://rocm.github.io/ROCmInstall.html
然后,你需要安裝其他相關(guān)的 ROCm 軟件包:
sudoaptupdatesudoaptinstallrocm-libsmiopen-hipcxlactivitylogger
最后,安裝 TensorFlow (通過(guò) Google 預(yù)先構(gòu)建的 whl 軟件包):
sudoaptinstallwgetpython3-pipwgethttp://repo.radeon.com/rocm/misc/tensorflow/tensorflow-1.8.0-cp35-cp35m-manylinux1_x86_64.whlpip3install./tensorflow-1.8.0-cp35-cp35m-manylinux1_x86_64.whl
▌ROCm-docker 安裝指南
Rocm-docker 的安裝指南:
https://github.com/RadeonOpenCompute/ROCm-docker/blob/master/quick-start.md
啟動(dòng) TensorFlow v1.8 docker 映像:
aliasdrun='sudodockerrun-it--network=host--device=/dev/kfd--device=/dev/dri--group-addvideo--cap-add=SYS_PTRACE--security-optseccomp=unconfined-v$HOME/dockerx:/dockerx-v/data/imagenet/tf:/imagenet'drunrocm/tensorflow:rocm1.8.2-tf1.8-python2
當(dāng)你使用 ROCm 容器時(shí),以下是一些常用且非常實(shí)用的 docker 命令:
一個(gè)新的 docker 容器通常不包含元數(shù)據(jù)存儲(chǔ)庫(kù)命令 apt。因此,在嘗試使用 apt 安裝新軟件之前,請(qǐng)首先確保命令 sudo apt update 的正常運(yùn)行。
出現(xiàn)如下報(bào)錯(cuò)消息,通常意味著當(dāng)前用戶無(wú)執(zhí)行 docker 的權(quán)限;你需要使用 sudo 命令或?qū)⒛愕挠脩籼砑拥?docker 組。
在正在運(yùn)行的容器中打開(kāi)另一個(gè)終端的命令:
從主機(jī)中復(fù)制文件到正在運(yùn)行的 docker 上的命令:
從正在運(yùn)行的 docker 容器中復(fù)制文件到主機(jī)上的命令:
在拉取圖像時(shí),收到設(shè)備上沒(méi)有剩余空間的消息,請(qǐng)檢查 docker 引擎正在使用的存儲(chǔ)驅(qū)動(dòng)程序。如果是“設(shè)備映射器 (device mapper)”,這意味著“設(shè)備映射器”存儲(chǔ)驅(qū)動(dòng)程序限制了圖像大小限制,此時(shí)你可以參考快速入門(mén)指南中關(guān)于更改存儲(chǔ)驅(qū)動(dòng)程序的解決方案,鏈接如下:
https://github.com/RadeonOpenCompute/ROCm-docker/blob/master/quick-start.md
▌實(shí)踐指南
1、圖像識(shí)別
我們將使用 TensorFlow 的一個(gè)教程作為 Inception-v3 圖像識(shí)別任務(wù):
https://www.tensorflow.org/tutorials/image_recognition
以下是如何運(yùn)行代碼:
cd~&&gitclonehttps://github.com/tensorflow/models.gitcd~/models/tutorials/image/imagenetpython3classify_image.py
之后,你會(huì)看到一個(gè)帶有相關(guān)分?jǐn)?shù)的標(biāo)簽列表,上面的腳本是用于對(duì)熊貓的圖像進(jìn)行分類,所以你會(huì)看到下面的結(jié)果:
giantpanda,panda,pandabear,coonbear,Ailuropodamelanoleuca(score=0.89103)indri,indris,Indriindri,Indribrevicaudatus(score=0.00810)lesserpanda,redpanda,panda,bearcat,catbear,Ailurusfulgens(score=0.00258)custardapple(score=0.00149)earthstar(score=0.00141)
接下來(lái),讓我們?cè)囋?TensorFlow 的語(yǔ)音識(shí)別教程:
https://www.tensorflow.org/tutorials/audio_recognition
以下是運(yùn)行代碼:
cd~&&gitclonehttps://github.com/tensorflow/tensorflow.gitcd~/tensorflowpython3tensorflow/examples/speech_commands/train.py
在默認(rèn)設(shè)置下運(yùn)行幾個(gè)小時(shí)后,你將看到準(zhǔn)確度越來(lái)越高的趨勢(shì):
[...]INFO:tensorflow:Step18000:Validationaccuracy=88.7%(N=3093)INFO:tensorflow:Savingto"/tmp/speech_commands_train/conv.ckpt-18000"INFO:tensorflow:set_size=3081INFO:tensorflow:ConfusionMatrix:[[25420001000000][3195551184570410][04239011910010][050220172401111][11002580400242][2501512112020213][121506024020010][113003022370120][05102113231200][030021133522510][00118130022321][0140346552010184]]INFO:tensorflow:Finaltestaccuracy=88.5%(N=3081)
如果你想測(cè)試訓(xùn)練好的模型,可以嘗試以下方法:
python3tensorflow/examples/speech_commands/freeze.py--start_checkpoint=/tmp/speech_commands_train/conv.ckpt-18000--output_file=/tmp/my_frozen_graph.pbpython3tensorflow/examples/speech_commands/label_wav.py--graph=/tmp/my_frozen_graph.pb--labels=/tmp/speech_commands_train/conv_labels.txt--wav=/tmp/speech_dataset/left/a5d485dc_nohash_0.wav
你會(huì)看到“l(fā)eft”標(biāo)簽的得分最高:
left(score=0.74686)right(score=0.12304)unknown(score=0.10759)
3、多 GPU 訓(xùn)練
最后,讓我們用多個(gè) GPU 來(lái)訓(xùn)練 ResNet-50。我們將使用 TensorBoard 來(lái)監(jiān)控進(jìn)度,因此我們的工作流程分為兩個(gè)終端和一個(gè)瀏覽器。首先,我們假設(shè)你將 ImageNet 數(shù)據(jù)集放在“/ data / imagenet”(可更改)下。
1) 第一個(gè)終端
cd~&&gitclonehttps://github.com/tensorflow/benchmarks.gitcd~/benchmarksgitcheckout-bmay22ddb23306fdc60fefe620e6ce633bcd645561cb0dMODEL=resnet50NGPUS=4BATCH_SIZE=64ITERATIONS=5000000TRAIN_DIR=trainbenchmarks${MODEL}rm-rf"${TRAIN_DIR}"python3./scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py--model=${MODEL}--data_name=imagenet--data_dir=/data/imagenet--train_dir="${TRAIN_DIR}"--print_training_accuracy=True--summary_verbosity2--save_summaries_steps10--save_model_secs=3600--variable_update=parameter_server--local_parameter_device=cpu--num_batches=${ITERATIONS}--batch_size=${BATCH_SIZE}--num_gpus=${NGPUS}2>&1|tee/dockerx/tf-imagenet.txt
2) 第二個(gè)終端
hostname-I#findyourIPaddresstensorboard--logdirtrain_benchmarks_resnet--host
3) 在瀏覽器里打開(kāi) Tensorboard
鏈接: http://
使用 TensorBoard,你可以看到 loss 越來(lái)越小、準(zhǔn)確性越來(lái)越高的趨勢(shì)。
-
gpu
+關(guān)注
關(guān)注
28文章
4700瀏覽量
128695 -
tensorflow
+關(guān)注
關(guān)注
13文章
328瀏覽量
60497
原文標(biāo)題:喜大普奔!TensorFlow終于支持A卡了
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論