一、软件简介
TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 [1-2] 。TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API)。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码 。
1.1、组件与工作原理
1)核心组件
TensorFlow的代码结构分布式TensorFlow的核心组件(core runtime)包括:分发中心(distributed master)、执行器(dataflow executor/worker service)、内核应用(kernel implementation)和最底端的设备层(device layer)/网络层(networking layer)。分发中心从输入的数据流图中剪取子图(subgraph),将其划分为操作片段并启动执行器。分发中心处理数据流图时会进行预设定的操作优化,包括公共子表达式消去(common subexpression elimination)、常量折叠(constant folding)等。执行器负责图操作(graph operation)在进程和设备中的运行、收发其它执行器的结果。分布式TensorFlow拥有参数器(parameter server)以汇总和更新其它执行器返回的模型参数。执行器在调度本地设备时会选择进行并行计算和GPU加速 [13] 。内核应用负责单一的图操作,包括数学计算、数组操作(array manipulation)、控制流(control flow)和状态管理操作(state management operations)。内核应用使用Eigen执行张量的并行计算、cuDNN库等执行GPU加速、gemmlowp执行低数值精度计算,此外用户可以在内核应用中注册注册额外的内核(fused kernels)以提升基础操作,例如激励函数和其梯度计算的运行效率 [13] 。单进程版本的TensorFlow没有分发中心和执行器,而是使用特殊的会话应用(Session implementation)联系本地设备。TensorFlow的C语言API是核心组件和用户代码的分界,其它组件/API均通过C语言API与核心组件进行交互。
2)低阶API
张量(tf.Tensor)
张量是TensorFlow的核心数据单位,在本质上是一个任意维的数组。可用的张量类型包括常数、变量、张量占位符和稀疏张量。张量的秩是它的维数,而它的形状是一个整数元组,指定了数组中每个维度的长度 。张量按NumPy数组的方式进行切片和重构。张量有23种数据类型,包括4类浮点实数、2类浮点复数、13类整数、逻辑、字符串和两个特殊类型,数据类型之间可以互相转换 。TensorFlow中的张量是数据流图中的单位,可以不具有值,但在图构建完毕后可以获取其中任意张量的值,该过程被称为“评估(evaluate)。TensorFlow无法直接评估在函数内部或控制流结构内部定义的张量。如果张量取决于队列中的值,那么只有在某个项加入队列后才能评估。
变量(tf.Variable)
变量是可以通过操作改变取值的特殊张量。变量必须先初始化后才可使用,低阶API中定义的变量必须明确初始化,高阶API例如Keras会自动对变量进行初始化。TensorFlow可以在tf.Session开始时一次性初始化所有变量,对自行初始化变量,在tf.Variable上运行的tf.get_variable可以在定义变量的同时指定初始化器
Tensorflow提供变量集合以储存不同类型的变量,默认的变量集合包括 :
- 本地变量:tf.GraphKeys.LOCAL_VARIABLES
- 全局变量:tf.GraphKeys.GLOBAL_VARIABLES
- 训练梯度变量:tf.GraphKeys.TRAINABLE_VARIABLES
数据流图(tf.Graph)和会话(tf.Session)
TensorFlow在数据流编程下运行,具体地,使用数据流图(tf.Graph)表示计算指令间的依赖关系,随后依据图创建会话(tf.Session)并运行图的各个部分 。tf.Graph包含了图结构与图集合两类相关信息,其中图结构包含图的节点(tf.Operation)和边缘(张量)对象,表示各个操作组合在一起的方式,但不规定它们的使用方式,类似于汇编代码;图集合是在tf.Graph中存储元数据集合的通用机制,即对象列表与键(tf.GraphKeys)的关联。例如当用户创建变量时,系统将其加入变量集合,并在后续操作中使用变量集合作为默认参数。
构建tf.Graph时将节点和边缘对象加入图中不会触发计算,图构建完成后将计算部分分流给tf.Session实现计算。tf.Session拥有物理资源,通常与Python的with代码块中使用,在离开代码块后释放资源。在不使用with代码块的情况下创建tf.Session,应在完成会话时明确调用tf.Session.close结束进程。调用Session.run创建的中间张量会在调用结束时或结束之前释放。tf.Session.run是运行节点对象和评估张量的主要方式,tf.Session.run需要指定fetch并提供供给数据(feed)字典,用户也可以指定其它选项以监督会话的运行。
保存和恢复
TensorFlow的低阶API可以保存模型和学习得到的变量,对其进行恢复后可以无需初始化直接使用。对张量的保存和恢复使用tf.train.Saver。使用检查点工具tf.python.tools.inspect_checkpoint可以查看文件中保存的张量。TensorFlow保存的模型使用SavedModel文件包,该文件包含是一种独立于语言(language-neutral)且可恢复的序列化格式,使较高级别的系统和工具可以创建、使用和转换 TensorFlow模型为SavedModel。tf.saved_model API可以直接与SavedModel进行交互,tf.saved_model.simple_save用于保存模型,tf.saved_model.loader.load用于导入模型。
3)高阶API
Estimators
Estimators是TensorFlow自带的高阶神经网络API [29] 。Estimators封装了神经网络的训练、评估、预测、导出等操作。Estimators的特点是具有完整的可移植性,即同一个模型可以在各类终端、服务中运行并使用GPU或TPU加速而无需重新编码 [29] 。Estimators模型提供分布式训练循环,包括构建图、初始化变量、加载数据、处理异常、创建检查点(checkpoint)并从故障中恢复、保存TensorBoard的摘要等。Estimators包含了预创建模型,其工作流程如下 [29] :
- 建立数据集导入函数:可以使用TensorFlow的数据导入工具tf.data.Dataset或从NumPy数组创建数据集导入函数。
- 定义特征列:特征列(tf.feature_column)包含了训练数据的特征名称、特征类型和输入预处理操作。
- 调出预创建的Estimator模型:可用的模型包括基础统计学(baseline)、梯度提升决策树(boosting desicion tree)和深度神经网络的回归、分类器。调出模型后需提供输入特征列、检查点路径和有关模型参数(例如神经网络的隐含层结构)。
- 训练和评估模型:所有预创建模型都包含train和evaluate接口用于学习和评估。
Estimator提供“层函数(tf.layer) ”和其它有关工具以支持用户自定义新模型,这些工具也被视为“中层API”。由于自定义完整模型过程繁琐,因此可首先使用预构建模型并完成一次训练循环,在分析结果之后尝试自定义模型。
Estimators的模型参数无需另外保存,在使用模型时提供检查点的路径即可调出上次学习获得的参数重新初始化模型。Estimators也支持用户自定义检查点规则。
除使用检查点作为对模型进行自动保存的工具外,用户也可使用低阶API将模型保存至SavedModel文件。
Keras是一个支持TensorFlow、Thenao和Microsoft-CNTK的第三方高阶神经网络API。Keras以TensorFlow的Python API为基础提供了神经网络、尤其是深度网络的构筑模块,并将神经网络开发、训练、测试的各项操作进行封装以提升可扩展性和简化使用难度。在TensorFlow下可以直接导出Keras模块使用。
Eager Execution
Eager Execution是基于TensorFlow Python API的命令式编程环境,帮助用户跳过数据流编程的图操作,直接获取结果,便于TensorFlow的入门学习和模型调试,在机器学习应用中可以用于快速迭代小模型和小型数据集 。Eager Execution环境只能在程序的开始,即导入tensorflow模块时启用。
Eager Execution使用Python控制流,支持标准的Python调试工具,状态对象的生命周期也由其对应的Python对象的生命周期,而不是tf.Session决定。Eager Execution支持大多数TensorFlow操作和GPU加速,但可能会使某些操作的开销增加。
Data
tf.data是TensorFlow中进行数据管理的高阶API。在图像处理问题中,tf.data可以对输入图像进行组合或叠加随机扰动,增大神经网络的训练收益;在文字处理问题中,tf.data负责字符提取和嵌入(embedding),后者将文字转化为高维向量,是进行机器学习的重要步骤。tf.data包含两个类:tf.data.Dataset和tf.data.Iterator,Dataset自身是一系列由张量构成的组元,并包含缓存(cache)、交错读取(interleave)、预读取(prefetch)、洗牌(shuffle)、投影(map)、重复(repeat)等数据预处理方法、Iterator类似于Python的循环器,是从Dataset中提取组元的有效方式。tf.data支持从NumPy数组和TFRecord中导入数据,在字符数据处理时时,tf.data.TextLineDataset可以直接输入ASCII编码文件。tf.data可用于构建和优化大规机器学习的输入管道(input pipline),提升TensorFlow性能。一个典型的输入管道包含三个部分:
- 提取(Extract):从本地或云端的数据存储点读取原始数据
- 转化(Transform):使用计算设备(通常为CPU)对数据进行解析和后处理,例如解压缩、洗牌(shuffling)、打包(batching)等
- 加载(Load):在运行机器学习算法的高性能计算设备(GPU和TPU)加载经过后处理的数据
在本地的同步操作下,当GPU/TPU进行算法迭代时,CPU处于闲置状态,而当CPU分发数据时,GPU/TPU处于闲置状态。tf.data.Dataset.prefetch在转化和加载数据时提供了预读取技术,可以实现输入管道下算法迭代和数据分发同时进行,在当前学习迭代完成时能更快地提供下一个迭代的输入数据。tf.data.Dataset.prefetch的buffer_size参数通常为预读取值的个数。tf.data支持输入管道的并行,tf.contrib.data.parallel_interleave可以并行提取数据;映射函数tf.data.Dataset.map能够并行处理用户的指定操作。对于跨CPU并行,用户可以通过num_parallel_calls接口指定并行操作的等级。一般而言,并行等级与设备的CPU核心数相同,即在四核处理器上可定义num_parallel_calls=4。在大数据问题中,可使用tf.contrib.data.map_and_batch并行处理用户操作和分批操作。
1.2、优化器
模型优化工具
Tensorflow提供了模型优化工具(Model Optimization Toolkit)对模型的尺度、响应时间和计算开销进行优化。模型优化工具可以减少模型参数的使用量(pruning)、对模型精度进行量化(quantization)和改进模型的拓扑结构,适用于将模型部署到终端设备,或在有硬件局限时运行模型,因此有很多优化方案是TensorFlow Lite项目的一部分。其中量化能够在最小化精度损失的情况下显著减小模型尺度和缩短响应时间,并是优化深度学习模型的重要手段。
XLA
线性代数加速器(Accelerated Linear Algebra, XLA)是一个特殊的编译器,用于优化TensorFlow中的线性代数计算,其目标是优化内存使用,提升TensorFlow的运行速度和跨平台,尤其是移动终端的可移植性。XLA工作的前端输入为“高层优化器(High Level Optimizer, HLO)”定义的数据流图,随后XLA使用多种独立于计算设备的算法优化方案对图进行分析,并将HLO计算送入后端。后端会进一步进行基于特定设备,例如GPU的优化。截至TensorFlow的1.12版本,XLA依然处于早期开发状态,暂不能提供显著的性能优化,其硬件支持包括JIT和AOT编译的x86-64 CPU、NVIDIA GPU。
二、安装
2.1 使用源码编译安装
以TensorFlow1.15为例,在rocm镜像内编译
docker pull rocm/dev-centos-7:3.5
git clone -b rocm3.5_r1.15.3 ssh://git@10.0.100.3:10022/dcutoolkit/deeplearing/tensorflow.git
TF_PKG_LOC=/tmp/tensorflow_pkg_1.14_v2
rm -f $TF_PKG_LOC/tensorflow*.whl
yes "" | TF_NEED_ROCM=1 PYTHON_BIN_PATH=`which python3` ./configure
pip3 uninstall -y tensorflow || true
bazel build --config=opt --config=rocm --action_env=HIP_PLATFORM=hcc //tensorflow/tools/pip_package:build_pip_package --verbose_failures &&
bazel-bin/tensorflow/tools/pip_package/build_pip_package $TF_PKG_LOC &&
whl安装
pip3 install tensorflow*.whl
Conda安装
conda install tensorflow*.whl
docker 内使用
docker pull rocm/tensorflow:latest
docker run -it --network=host --name=rocm_tf --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /data/:/data/ ImageID bash
virtualenv安装
//创建虚拟环境
mkdir virtualenv-test
cd virtualenv-test
virtualenv -p python3 --system-site-packages venv
//启动虚拟环境
source venv/bin/activate
pip3 install tensorflow*.whl
说明
rocm生态下上述深度学习计算框架,在编译和使用时,需要保证基础库环境一致。
三、使用
以计算框架分类,分别介绍其训练不同网络的方法。
代码:https://github.com/tensorflow/benchmarks/tree/cnn_tf_v1.14_compatible/scripts/tf_cnn_benchmarks
计算服务平台ac.sugon.com加载TensorFlow方法:
#目前平台上已部署TensorFlow 1.14/1.15.3/2.2/2.5版本,可以使用module av查看软件具体名称
module switch compiler/rocm/4.0.1
module load apps/TensorFlow/tf1.15.3-rocm4.0.1/hpcx-2.4.1-gcc-7.3.1
或者
module load apps/TensorFlow/tf2.5.0-rocm4.0.1/hpcx-2.4.1-gcc-7.3.1
Classification bench
- TensorFlow 框架 训练 图像分类相关网络的代码,tensorflow 官方基准测试程序,使用的数据集是 imagenet。
测试运行
- 测试代码分为两部分,基础性能测试和大规模性能测试。
基础 benchmark
- 创建 TensorFlow 运行时环境后,以 resnet50 网络为例,计算其 batch_size=32 num_gpu=1 条件下不同精度的性能,分为训练和推理两部分
fp32 train
python3 benchmark_cnn_tf_v1.14_compatible/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py —model=resnet50 —batch_size=32 —num_gpus=1 —num_epochs=90
fp16 train
python3 benchmark_cnn_tf_v1.14_compatible/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py —model=resnet50 —use_fp16=true —fp16_enable_auto_loss_scale=true —batch_size=32 —num_gpus=1 —num_epochs=90
fp32 inference
python3 benchmark_cnn_tf_v1.14_compatible/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py —model=resnet50 —batch_size=1 —num_gpus=1 —forward_only —num_batches=500
fp16 inference
python3 benchmark_cnn_tf_v1.14_compatible/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py —use_fp16=true —fp16_enable_auto_loss_scale=true —model=resnet50 —batch_size=1 —num_gpus=1 —forward_only —num_batches=500
大规模测试
单卡
HIP_VISIBLE_DEVICES=0 python3 tensorflow_synthetic_benchmark.py —model=ResNet50 —batch-size=128 —num-iters=500
多卡
mpirun -np ${num_gpu} —hostfile hostfile —bind-to none scripts-run/single_process.sh
参考资料
benchmarks/scripts/tf_cnn_benchmarks at cnn_tf_v1.14_compatible · tensorflow/benchmarks · GitHub
https://github.com/horovod/horovod/tree/master/examples/tensorflow
Classification Acc
本测试用例用于图像分类ResNet50模型在ROCm平台的精度验证,测试流程如下。
加载环境变量
下载tensorflow官方github中的model
设置python变量:
export PYTHONPATH=$PYTHONPATH:/path/to/tensorflow/model
ROCm平台使用MIOpen进行加速,以下变量设置可以参考使用:
export MIOPEN_DEBUG_DISABLE_FIND_DB=1
export MIOPEN_USER_DB_PATH=/path/to/{miopen_save_dir}
export LD_LIBRARY_PATH=/path/to/devtoolset7:$LD_LIBRARY_PATH
运行示例
可以使用单卡或多卡运行,4卡运行指令如下:
cd official/resnet
python3 imagenet_main.py —data_dir=/path/to/{ImageNet-tensorflow_data_dir} —model_dir=/path/to/{model_save_dir} —batch_size=512 —num_gpus=4
参考
models/official/resnet at r1.13.0 · tensorflow/models · GitHub
Objection-Faster-rcnn/SSD
- 目标检测程序,支持Faster-rcnn和SSD
环境部署
(1)升级 pip
pip3 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
(2)pip3 install -r requirements.txt
protobuf
pillow
lxml
jupyter
matplotlib
Cython
contextlib2
gast
(3)安装 horovod
git clone --recusive https://github.com/ROCmSoftwarePlatform/horovod.git
HOROVOD_WITH_TENSORFLOW=1 python3 setup.py install
(4)安装 cocoapi
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools /path/to/Objection/research
(5)安装 slim
cd slim
python3 setup install
(6)升级 pandas
pip3 install --upgrade pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
(7)Protobuf Compilation
wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
unzip protobuf.zip
./bin/protoc /path/to/Objection/research/object_detection/protos/ *.proto --python_out=.
(8)添加 PYTHONPATH
export LD_LIBRARY_PATH=/public/home/tianlh/tool/devtoolset7:$LD_LIBRARY_PATH
export PYTHONPATH=$PYTHONPATH:/path/to/Objection/research:/path/to/Objection/research/slim
export LD_LIBRARY_PATH=/path/to/Objection/research/slim:$LD_LIBRARY_PATH
如遇python文件调用问题,清理缓存,重新设置环境变量
rm -rf ~/.cache/ *
rm -rf {MIOPEN_USER_DB_PATH}/ *
2、创建数据集
wget https://github.com/tensorflow/models/blob/master/research/object_detection/dataset_tools/create_coco_tf_record.py
python3 object_detection/dataset_tools/create_coco_tf_record.py --logtostderr \
--train_image_dir="/path/to/COCO2017/images/train2017" \
--val_image_dir="/path/to/COCO2017/images/val2017" \
--train_annotations_file="/path/to/COCO2017/annotations/instances_train2017.json" \
--val_annotations_file="/path/to/COCO2017/annotations/instances_val2017.json" \
--output_dir="/path/to/COCO2017-TF/"
3、下载预训练模型
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
wget *
tar -zxf *.tar.gz
4、确认数据集&预训练模型路径
vim samples/configs/ssd_inception_v2_coco.config
修改“PATH_TO_BE_CONFIGURED”
5、测试执行
SSD
单卡
python3 legacy/train.py --pipeline_config_path=samples/configs/ssd_inception_v2_coco.config --train_dir=result/ssd_inceptionV2_1gpu --num_clones=1 --ps_tasks=0 --alsologtostderr
4 卡
numactl --cpunodebind=0,1,2,3 --membind=0,1,2,3 python3 legacy/train.py --pipeline_config_path=samples/configs/ssd_inception_v2_coco.config --train_dir=result/ssd_inceptionV2_4gpu --num_clones=4 --ps_tasks=1 --alsologtostderr
Fastercnn
| 参数 | 解释 | 示例 |
|---|---|---|
| PIPELINE_CONFIG_PATH | train config 路径 | faster_rcnn_inception_v2_coco.config |
| CPKT_PATH | 输出文件保存路径 | - |
| NUM_CLONES | 计算显卡数量 | - |
| PS_TASKS | 任务数 | - |
WORK_DIR=pwd
python3
{PIPELINE_CONFIG_PATH} —train_dir=
{NUM_CLONES} —ps_tasks=${PS_TASKS} —alsologtostderr
参考资料
models/research/object_detection at master · tensorflow/models · GitHub
Objection-Mask R-CNN
- Tensorflow训练Mask R-CNN模型
环境准备
1)安装工具包
- ```
- rocm3.3环境安装tensorflow1.15
- 安装pycocotools
pip3 install pycocotools -i http://pypi.douban.com/simple/ —trusted-host pypi.douban.com - 更新pandas
pip3 install -U pandas -i http://pypi.douban.com/simple/ —trusted-host pypi.douban.com - 安装dllogger
git clone —recursive https://github.com/NVIDIA/dllogger.git
python3 setup.py install
```
2)数据处理(train 和 val)
cd dataset/
git clone http://github.com/tensorflow/models tf-models
cd tf-models/research
wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip protobuf.zip
unzip protobuf.zip
./bin/protoc object_detection/protos/.proto --python_out=.
返回dataset目录vim create_coco_tf_record.py
注释掉310 316行
PYTHONPATH="tf-models:tf-models/research" python3 create_coco_tf_record.py \
--logtostderr \
--include_masks \
--train_image_dir=/path/to/COCO2017/images/train2017 \
--val_image_dir=/path/to/COCO2017/images/val2017 \
--train_object_annotations_file=/path/to/COCO2017/annotations/instances_train2017.json \
--val_object_annotations_file=/path/to/COCO2017/annotations/instances_val2017.json \
--train_caption_annotations_file=/path/to/COCO2017/annotations/captions_train2017.json \
--val_caption_annotations_file=/path/to/COCO2017/annotations/captions_val2017.json \
--output_dir=coco2017_tfrecord
生成coco2017_tfrecord文件夹
3)预训练模型下载
生成的模型文件结构如下:
weights/
>mask-rcnn/1555659850/
https://storage.googleapis.com/cloud-tpu-checkpoints/mask-rcnn/1555659850/saved_model.pb
>>variables/
https://storage.googleapis.com/cloud-tpu-checkpoints/mask-rcnn/1555659850/variables/variables.data-00000-of-00001
https://storage.googleapis.com/cloud-tpu-checkpoints/mask-rcnn/1555659850/variables/variables.index
>resnet/
>>extracted_from_maskrcnn/
>>resnet-nhwc-2018-02-07/
https://storage.googleapis.com/cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07/checkpoint
>>>model.ckpt-112603/
https://storage.googleapis.com/cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07/model.ckpt-112603.data-00000-of-00001
https://storage.googleapis.com/cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07/model.ckpt-112603.index
https://storage.googleapis.com/cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07/model.ckpt-112603.meta
>>resnet-nhwc-2018-10-14/
测试
单卡训练
python3 scripts/benchmark_training.py --gpus {1,4,8} --batch_size {2,4}
python3 scripts/benchmark_training.py --gpus 1 --batch_size 2 --model_dir save_model --data_dir /public/home/tianlh/AI-application/Tensorflow/MaskRCNN_tf2/dataset/coco2017_tfrecord --weights_dir weights
多卡训练
python3 scripts/benchmark_training.py --gpus 2 --batch_size 4 --model_dir save_model_2dcu --data_dir /public/home/tianlh/AI-application/Tensorflow/MaskRCNN_tf2/dataset/coco2017_tfrecord --weights_dir weights
推理
python3 scripts/benchmark_inference.py --batch_size 2 --model_dir save_model --data_dir /public/home/tianlh/AI-application/Tensorflow/MaskRCNN_tf2/dataset/coco2017_tfrecord --weights_dir weights
参考资料
Objection-YOLOv3
- YOLOv3, 目标检测网络的巅峰之作
测试流程
1)预训练模型/权重:
使用预训练模型COCO的权重
$ cd checkpoint
$ wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
若网速较慢,可手动下载上传至计算环境
$ tar -xvf yolov3_coco.tar.gz
$ cd ..
$ python3 convert_weight.py --train_from_coco
可能会安装python包
2)训练:
确认core/config.py中的参数batchsize、数据路径等
- ```
- 单卡运行:
python3 train.py - 多卡运行:
mpirun -np 2 -H localhost:2 python3 train_hvd.py - 多机运行:
mpirun -np 4 -H b02r1n02:2,b02r1n04:2 python3 train_hvd.py
```
3) 推理
$ python3 evaluate.py
$ cd mAP
$ python3 main.py -na
参考资料
Segmentation-Unet_Industrial
本用例用于图像分割Unet_Industrial模型在ROCM平台TensorFlow框架下的训练和推理benchmark测试,测试流程如下
测试流程
下载数据集
DAGM2007
数据结构如下
raw_images
private
Class1
Class2
……
Class10public
Class1
Class1_def
……
Class6
Class6_def
zip_files
private
Class1.zip
Class2.zip
……
Class10.zippublic
Class1.zip
Class1_def.zip
……
Class6.zip
Class6_def.zip
运行指令
训练性能benchmark
./scripts/benchmarking/DGX1vtrainbench{FP16, FP32, FP32AMP, FP32FM}_{1, 4, 8}GPU.sh
示例,使用Class 1进行单卡训练
./scripts/DGX1v_trainbench_FP32_4GPU.sh /path/to/{save_dir} /path/to/{DAGM2007_dir} 1
多卡运行时在DGX1v_trainbench_FP32_4GPU.sh中加入mpirun命令即可
推理性能benchmark
./scripts/benchmarking/DGX1v_evalbench_FP16_1GPU.sh
训练
./UNet_FP32_1GPU.sh
推理
./UNet_FP32_EVAL.sh
参考
https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Segmentation/UNet_Industrial
Segmentation-vnet
本用例用于图像分割VNet模型在ROCm平台的训练性能和推理性能的测试,已在rocm3.3 tensorflow1.1.5.0版本下进行验证。测试流程如下
测试流程
下载数据集
medical segmentation decathlon(MSD)
安装工具包
安装SimpleITK,下载whl包
wget https://files.pythonhosted.org/packages/f8/d8/53338c34f71020725ffb3557846c80af96c29c03bc883551a2565aa68a7c/SimpleITK-1.2.4-cp36-cp36m-manylinux1_x86_64.whl
运行指令
benchmark
单卡训练benchmark
python3 examples/vnet_benchmark.py \
--data_dir /path/to/{MSD_Task04_Hippocampus_dir} \
--model_dir /path/to/{model_save_dir} \
--mode train \
--gpus 1 \
--batch_size 8
4卡训练benchmark
python3 examples/vnet_benchmark.py \
--data_dir /path/to/{MSD_Task04_Hippocampus_dir} \
--model_dir /path/to/{model_save_dir} \
--mode train \
--gpus 4 \
--batch_size 32
推理benchmark
python3 examples/vnet_benchmark.py \
--data_dir /path/to/{MSD_Task04_Hippocampus_dir} \
--model_dir /path/to/{model_save_dir} \
--mode predict \
--gpus 1 \
--batch_size 8
训练示例
python3 examples/vnet_train.py \
--data_dir /path/to/{MSD_Task04_Hippocampus_dir} \
--model_dir /path/to/{model_save_dir} \
--mode train \
--gpus 1 \
--batch_size 260 \
--epochs 1
推理示例
python3 examples/vnet_predict.py \
--data_dir /path/to/{MSD_Task04_Hippocampus_dir} \
--model_dir /path/to/{model_save_dir} \
--batch_size 4
参考
https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Segmentation/VNet


1868

被折叠的 条评论
为什么被折叠?



