horovodの機能追加(1)

horovodの機能追加

最近のhorovodの機能追加について

fp16の対応

fp16への変換はtf.castを利用.またOpenMPIはfp16対応していないのでhorovod内でfp16用のMPI custum opを作成

eager mode対応

tensorflowのeager modeで動作します

refactoring

codeのリファクタリング. 今までは1ファイルで集合通信系の処理を記述していた. それを変更し,lib独自の処理はNCCLAllreduce,DDLAllreduceなどのクラスに集約し,
各クラスのExecute内でallreduce処理を記述
MLSL, ddlなどライブラリの追加をしやすくするため

log機能の追加

horovodのlog機能が追加.

parameterのautotuning

beysian, gaussian processを利用して学習中にparameterのautotuningを行う. parameterはfusionのthreashold(fusionのサイズ)とcycle_time(fusionするTensorの待ち時間).あとはhierarchicalのallreduceやallgatherを利用するかどうか. 性能改善を目的とする HOROVOD_AUTOTUNEという環境変数で利用可能.

Eigenの利用

gaussian process, bayesianの計算にEigenを利用して高速化

mxnet, pysparkの対応

mxnet, pysparkに対応した.あとgluonにも.

hierarchical_allreduce

hierarchical_allreduceに対応.

allgatherにおけるfusion

allreduceに加えて,allgatherにおいてもfusionをするような処理が追加された.