工资不涨,英伟达 gpu 的售价年年涨。因此,多一个竞争对手,总是好事。
近日,google 宣布推出适用于 rocm gpu 的 tensorflow v1.8,其中包括 radeon instinct mi25。对于 amd 正在进行的深度学习加速工作而言,这是一座重大的里程碑。
rocm即 radeon 开放生态系统 (radeon open ecosystem),是我们在 linux 上进行 gpu 计算的开源软件基础。而 tensorflow 实现则使用了miopen,这是一个适用于深度学习的高度优化 gpu 例程库。
amd 提供了一个预构建的whl软件包,安装过程很简单,类似于安装 linux 通用 tensorflow。目前 google 已发布安装说明及预构建的 docker 映像。下面,我们就来手把手地教大家。
▌如何在 amd 的 gpu 上运行 tensorflow?
首先,你需要安装开源 rocm 堆栈,详细的安装说明可以参考:
https://rocm.github.io/rocminstall.html
然后,你需要安装其他相关的 rocm 软件包:
sudoaptupdatesudoaptinstallrocm-libsmiopen-hipcxlactivitylogger
最后,安装 tensorflow (通过 google 预先构建的 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
启动 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
当你使用 rocm 容器时,以下是一些常用且非常实用的 docker 命令:
一个新的 docker 容器通常不包含元数据存储库命令 apt。因此,在尝试使用 apt 安装新软件之前,请首先确保命令 sudo apt update 的正常运行。
出现如下报错消息,通常意味着当前用户无执行 docker 的权限;你需要使用 sudo 命令或将你的用户添加到 docker 组。
在正在运行的容器中打开另一个终端的命令:
从主机中复制文件到正在运行的 docker 上的命令:
从正在运行的 docker 容器中复制文件到主机上的命令:
在拉取图像时,收到设备上没有剩余空间的消息,请检查 docker 引擎正在使用的存储驱动程序。如果是“设备映射器 (device mapper)”,这意味着“设备映射器”存储驱动程序限制了图像大小限制,此时你可以参考快速入门指南中关于更改存储驱动程序的解决方案,链接如下:
https://github.com/radeonopencompute/rocm-docker/blob/master/quick-start.md
▌实践指南
1、图像识别
我们将使用 tensorflow 的一个教程作为 inception-v3 图像识别任务:
https://www.tensorflow.org/tutorials/image_recognition
以下是如何运行代码:
cd~&&gitclonehttps://github.com/tensorflow/models.gitcd~/models/tutorials/image/imagenetpython3classify_image.py
之后,你会看到一个带有相关分数的标签列表,上面的脚本是用于对熊猫的图像进行分类,所以你会看到下面的结果:
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)
2、语音识别
接下来,让我们试试 tensorflow 的语音识别教程:
https://www.tensorflow.org/tutorials/audio_recognition
以下是运行代码:
cd~&&gitclonehttps://github.com/tensorflow/tensorflow.gitcd~/tensorflowpython3tensorflow/examples/speech_commands/train.py
在默认设置下运行几个小时后,你将看到准确度越来越高的趋势:
[...]info:tensorflow:step18000:validationaccuracy=88.7%(n=3093)info:tensorflow:savingto/tmp/speech_commands_train/conv.ckpt-18000info: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)
如果你想测试训练好的模型,可以尝试以下方法:
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
你会看到“left”标签的得分最高:
left(score=0.74686)right(score=0.12304)unknown(score=0.10759)
3、多 gpu 训练
最后,让我们用多个 gpu 来训练 resnet-50。我们将使用 tensorboard 来监控进度,因此我们的工作流程分为两个终端和一个浏览器。首先,我们假设你将 imagenet 数据集放在“/ data / imagenet”(可更改)下。
1) 第一个终端
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) 第二个终端
hostname-i#findyouripaddresstensorboard--logdirtrain_benchmarks_resnet--host
3) 在浏览器里打开 tensorboard
链接: http://:6006/
使用 tensorboard,你可以看到 loss 越来越小、准确性越来越高的趋势。
一文看懂7805和lm317区别及电路图分享
小米电视4a32寸怎么样 千元价位没比它更好的选择了
光耦(TLP521-4)能不能转换电压?
建立安全系统时应该从哪些方面着手?
40khz超声波电路线路板设计
如何在AMD的GPU上运行TensorFlow?
独角兽企业柔宇科技科创板IPO申请获得受理
诺瓦星云:点亮行业价值,助推产业加速
这么多公司要做芯片,芯片行业势态大好还是虚假繁荣
一种新型的电池,“摇椅电池”的原理分析
无锡大力发展以物联网为龙头的新一代信息技术产业
超声波焊接的应用及优点
苹果手机iphone已停用连接itunes是怎么回事
丰田牵手比亚迪 打造纯电动汽车
热学篇:芯片的不同封装在水冷系统不同散热方案下的热表现
谷歌为何关闭了它的“Spotlight Stories”VR电影工作室?
小米人体传感器2正式开售
TCC射频元件短缺严重 LTCC供应商扩产计划遭遇难题
金航标kinghelm电子开展新员工的流程化信息化培训
无人机反制系统是什么,无人机反制系统的分类