Skip to content

Latest commit

 

History

History
executable file
·
110 lines (72 loc) · 9.66 KB

tensorflow_models.md

File metadata and controls

executable file
·
110 lines (72 loc) · 9.66 KB

TensorFlow 使用Orion vGPU

在我们的Quick Start中的各个场景均以TensorFlow 1.12作为示例:

读者在阅读Quick Start后,应该对于如何在TensorFlow框架下使用Orion vGPU加速模型训练与推理有了直观的认识。

因此,本文将不再提供step by step的使用范例,而是总结我们对TensorFlow模型的支持情况,并列举出经过我们大量测试的TensorFlow模型。

支持情况

Orion vGPU软件对TensorFlow 1.8 - 1.4, TensorFlow 2.0 版本提供深度支持。

其余TensorFlow模型均能正确高效地使用位于多物理GPU上的多块Orion vGPU进行训练和推理。

下面,我们列举出一部分Orion vGPU软件所支持的,经过大量测试的TensorFlow模型。

Orion vGPU软件对TensorFlow官方教程中的例子提供全面的支持。下面,我们列举一部分例子,用户可以在自己的环境中部署Orion vGPU软件运行这些模型。

由于许多教程是以Juypter Notebook的形式提供的,用户可以参考Quick Start中Docker容器章节在容器/KVM虚拟机/裸机上运行Jupyter Notebook。

  • DCGAN 在MNIST数据集上训练模型以生成手写数字

  • Convolutional VAE 在MNIST数据集上训练模型以生成手写数字

  • pix2pix 在CMP Facade数据集上训练condition GAN以实现图片到图片的生成

  • Neural Style Transfer Finetune VGG19模型以实现图片风格迁移

  • Image Segmentation 在Kaggle Carvana数据集上训练U-Net进行图像分割

  • CIFAR10 Estimator: 在CIFAR10数据集上使用TF Estimator API训练CNN模型

  • Neural Translation with Attention 训练含有Attention机制的seq2seq模型,实现西班牙语到英语的翻译

  • Image Captioning with Attention 在MSCOCO2014数据集上训练带有Attention机制的Image Caption模型

  • LSTM PTB 根据论文"RECURRENT NEURAL NETWORK REGULARIZATION"的内容,在PTB数据集上训练LSTM网络

  • Quick, Draw! 在Quick, Draw!数据集的一个子集上,训练多层LSTM-CNN网络以识别涂鸦。

    注意,教程上运行模型训练时的命令参数不完整,在处理完TFRecord数据后,用户可以用下述命令使用cuDNN LSTM cell进行模型训练,共1000000步。

    python3 train_model.py \
        --training_data rnn_tutorial_data/training.tfrecord-?????-of-????? \
        --eval_data rnn_tutorial_data/eval.tfrecord-?????-of-????? \
        --model_dir /tmp/quickdraw_model/ \
        --cell_type cudnn_lstm \
        --classes_file rnn_tutorial_data/training.tfrecord.classes \
        --steps 1000000

    其间,训练过程不会输出到屏幕,用户需要使用TensorBoard监视训练过程:

    tensorboard --logdir /tmp/quickdraw_model
  • Simple Audio RecognitionSpeech Command数据集上训练模型以识别简单语音命令。

在Quick Start的远程RDMA章节,我们展示了如何在没有GPU的节点上通过Orion vGPU软件,使用远程节点上的物理GPU运行TensorFlow CNN Benchmarks进行CNN模型训练。

具体地,我们展示了使用Benchmark生成的随机数据(synthetic data),以及转换为TFRecord格式的真实Imagenet数据训练inception3模型。我们使用两块Orion vGPU,每块Orion vGPU显存设置为15500MB (ORION_GMEM=15500),因此位于远程节点的两块显存均为16GB的Telsa V100计算卡上。

除了这个例子以外,我们针对各种不同场景、参数设置进行了大量正确性、稳定性和性能测试:

  • VGG16, Resnet50, Resnet152, Inception_v3等CNN模型
  • 裸机/容器/KVM虚拟机内在RDMA模式下使用远程节点物理GPU,以及容器/KVM虚拟机在共享内存模式下使用本地节点物理GPU
  • 使用单张/多张Orion vGPU,多张Orion vGPU可以位于同一块物理GPU上,也可以位于多块物理GPU上
  • TensorFlow Datasets的不同数据加载模式,例如打开/关闭prefetching,等

每种设置下,我们都用真实Imagenet数据训练模型,达到与native环境下TF使用本地物理GPU非常接近的性能(imgs/sec)。此外,我们对比了使用物理GPU和使用Orion vGPU时的训练效果,包括Loss下降速度,以及top-1、top-5训练精度,验证这两种情况下效果高度一致(训练过程本身存在随机性)。

对于Inference (evaluation)模式,我们从同样的模型checkpoints加载模型权重,对比使用本地物理GPU和使用Orion vGPU时的测试结果,包括测试集上的top-1和top-5精度,验证两种情况下结果完全一致

更多的TensorFlow官方模型

  • BERT 使用Orion vGPU对BERT-Base模型在Microsoft Research Paraphase Corpus (MRPC)语料集上,或者在SQuAD 1.1任务数据集上进行finetuning。
  • Transformer 使用Orion vGPU训练模型,实现英语到德语的翻译。

值得注意的是,此repo中的模型代码均基于Python 2.7环境,因此建议用户使用Python 2.7版本的镜像:

git pull virtaitech/orion-client:cu9.0-tf1.12-py2

或者在KVM虚拟机、裸物理机上配置好Python 2.7环境,然后安装TensorFlow 1.12 GPU版本,

apt install python-dev python-pip
pip install tensorflow-gpu==1.12.0

再根据Quick Start中相应章节配置好Orion Client运行时。

如果用户一定要在Python 3环境中运行TensorFlow Research Models,几乎每个模型都需要改动部分代码以实现Python代码的兼容。

下面,我们列举部分兼容TensorFlow 1.12版本的模型。