深層学習モデルを開発するためのディープラーニングフレームワーク

ReNom | DL

ReNom DLはGRIDが自社で開発・提供する、深層学習モデル開発のための自動微分ライブラリであり、ReNomプラットフォーム上で提供するツールのほぼ すべての基盤となります。さまざまな業種・分野においてIoT 化が推進され、データの可視化や分析を実施するインフラや土壌は整備されてきましたが、 その先にある予測や自動化のための AI モデル開発は専門性が強い領域とされ、人材確保が難しく、研究開発や試行錯誤に膨大な時間とコストを要するもの でした。ReNom DLは数値・時系列データの回帰モデル作成や、画像における物体検出や画像分類、セグメンテーションを実施するために必要なアルゴリズム、 前処理等のユーティリティをライブラリとして実装しており、洗練された CUI・API を用いて、ユーザーの課題に応じた高度なモデルの開発が可能なツール です。またReNomプラットフォームではReNom DLをベースに、開発目的別にGUI開発アプリケーションを提供し、簡単なAI開発(画像認識や回帰・ 予測モデル)については、専門技術者でなくてもAI開発の開発工程を高速で行うことが可能です。

 

スキルに関係なく、高速かつ省メモリなNeural Networkを実装
ReNom DL version 3 は、「ユーザーのプログラミングスキルによらず、 高速かつ省メモリなNeural Networkを作れること」(powerful)をコンセ プトに開発が行われています。これまでにさまざまな組織によって開発されて きた数多の Deep Learning フレームワークを用いることで、さまざまな Neural Network を作ることはできました。しかしながら、ユーザーのプロ グラミングスキルによって、Neural Network のパフォーマンスは1~2倍 ほど大きく変動します。なぜならば、パフォーマンスの高いNeural Networkを実装するためには、GPUコンピューティング、並列計算、キャッシュ、 データのメモリ上の配置などの知識が要求されるからです。世界的にディープ ラーニングの研究が進むなか、よりディープで複雑な構造を持つ Neural Network が提案されている昨今では、プログラミングスキルの差によって 生まれるパフォーマンス差はより大きくなり得るでしょう。ReNom DL version 3 は、ユーザーが実装した Neural Network における順伝播計算、 逆伝播計算、データ入力、前処理、後処理、勾配法に基づく重みの更新等の すべての処理をオペレーションノードとして扱い、それらノードのつながりを 計算グラフとして保持します。そして計算グラフ上に存在する並列化可能な オペレーションノードや、学習過程において必要が無いオペレーションノード を自動で発見し、並列実行や処理をスキップするといった最適化を行います。 このように、ReNom DL version 3 は「ユーザーが定義した Neural Network に対し、データ入力、前処理、重み更新まで含めて最適化を実行 すること」(optimized)から、「ユーザーのプログラミングスキルによらず パフォーマンスの良い Neural Network を実装すること」(easy)が可能 となります。

ReNomDLの特長
一般的にディープラーニングフレームワークには2種類のアーキテクチャが 存在します。 ひとつは Defined by Run と呼ばれる、Python や MxNet の ように、データを実際にNeural Networkに与え、順伝播計算履歴を取得し、 その計算履歴を元に誤差逆伝播計算を行う方法です。もうひとつは、 Define and Run と呼ばれる Tensorflow や Theano のように、最初に Neural Network 上におけるデータの扱われ方を定義し、ネットワーク構造 の最適化をかけ、その後データを実際に与え順伝播計算や誤差逆伝播を実行 するという方法です。Defined by Run 方式は、与えられた入力データに 対して毎回計算履歴を作成し、それを元に誤差逆伝播計算を行うので、入力 データの形に対して柔軟な Neural Network を定義することができます。 これは例えば、自然言語処理のようなデータの長さが可変長なデータを扱う 場合に有効です。また、Neural Network 内における計算履歴を追いやすい (デバッグがしやすい)という利点もあります。その反面、データが与えられ ないと、Neural Networkの構造が定まらないため、Neural Network構造 の全体最適化を行うことができません。反対に Define and Run 方式では、 最初に想定される入力データ形式を定め、Neural Network アーキテクチャ を固定してから順伝播計算や誤差逆伝播計算を実行するので、Neural Network 全体に対する最適化を行うことができます。こちらは画像認識の ような固定された形式のデータを扱うのに適したアーキテクチャです。 ReNom DL version 3 では、Defined by Run 方式に基づく実行方法と Define and Run 方式に基づく実行方法の両方を提供しています。それぞれ の実行方法をEager Mode、Executor Modeと呼びます。

Eager Mode 
Eager Mode では、Defined by Run 方式の特徴であるデータを与えながら Neural Network を構築できるという利点を活かすことができます。具体的には、 ソースコードのようにデータが与えられるたびに、新たな計算履歴を作り直す ようなプログラムを書くことができます。

Executor Mode
Executor Modeでは、Define and Run方式の特徴であるNeural Networkの 定義とその全体最適化を行った後にデータを与え、効率的に計算を実行すると いう特徴を活かすことができます。具体的には、最初に与えたデータ形式で計算 グラフを抽出し、その計算グラフを何度も再利用することができます。

使用可能な関数
ReNom DL version 3 では、過去のバージョンと同様に、さまざまな Neural Networkを構築するために必要な関数を提供しています。 以下はその一部のリストアップです。

<使用可能な関数一覧(一部を抜粋)>
Dense(全結合層)
N-dimentional Convolution(N次元畳み込み層)
N-dimentional Deconvolution(N次元逆畳み込み層)
N-dimentional Pooling(N次元プーリング層)
N-dimentional Unpooling(N次元逆プーリング層)
Lrn(局所レスポンス正規化)
Lstm(Long short time memory層)
Gru(Gated recurrent unit層)
Batch Normalization(バッチ正規化層)
Weight Normalization(重み正規化層)
Layer Normalize(レイヤ正規化層)
各種活性化関数
各種二項演算子
各種単行演算子

 

 

 

 

 

 

 

Page top