(57)【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
複数のハードウェアデバイス上での分散処理のために配置されるべき機械学習モデルを指定するデータを受け取るステップと、
前記機械学習モデルを指定する前記データから、オペレーション埋込みのシーケンスを生成するステップであって、前記シーケンスでの各オペレーション埋込みが、前記機械学習モデルの前記分散処理を行うことの一部である1つまたは複数のそれぞれのオペレーションを特徴づける、ステップと、
配置リカレントニューラルネットワークの複数のネットワークパラメータの第1の値に従って、前記配置リカレントニューラルネットワークを使用して、オペレーション埋込みの前記シーケンスを処理するステップであって、
前記配置リカレントニューラルネットワークが、前記複数のデバイスにわたる前記シーケンスでの前記オペレーション埋込みによって特徴づけられた前記オペレーションの配置を定義するネットワーク出力を生成するために、前記第1の値に従ってオペレーション埋込みの前記シーケンスを処理するように構成される、ステップと、
前記ネットワーク出力によって定義された前記配置に従って前記複数のデバイスに前記オペレーションを配置することによって、前記複数のハードウェアデバイスによる処理のために前記機械学習モデルをスケジュールするステップと
を含む、方法。
【請求項２】
前記オペレーション埋込みによって特徴づけられた前記オペレーションが、前記機械学習モデルを訓練することの一部であるオペレーションである、請求項1に記載の方法。
【請求項３】
前記オペレーション埋込みによって特徴づけられた前記オペレーションが、前記機械学習モデルを使用して推論を行うことの一部であるオペレーションである、請求項1に記載の方法。
【請求項４】
前記機械学習モデルを指定する前記データが、オペレーションを表す頂点と、前記オペレーション間のデータ通信を表すエッジとを有する計算グラフを表すデータである、請求項1に記載の方法。
【請求項５】
オペレーション埋込みの前記シーケンスを生成するステップが、
前記計算グラフ中の頂点によって表される前記オペレーションの2つ以上が、同じデバイス上に併置されるべきであることを決定するステップと、
それに応じて、前記2つ以上のオペレーションを特徴づける単一のオペレーション埋込みを生成するステップと
を含む、請求項4に記載の方法。
【請求項６】
特定のオペレーションを特徴づけるオペレーション埋込みを生成するステップが、
前記特定のオペレーションのオペレーションタイプのタイプ埋込みを生成するステップと、
前記特定のオペレーションによって生成される出力のサイズを特徴づける出力サイズ埋込みを生成するステップと、
入力を提供し、前記特定のオペレーションによって生成された出力を受け取るオペレーションを識別する隣接性埋込みを生成するステップと、
前記特定のオペレーションを特徴づける前記オペレーション埋込みを生成するために、前記タイプ埋込み、前記出力サイズ埋込み、および前記隣接性埋込みを結合するステップと
を含む、請求項1に記載の方法。
【請求項７】
前記配置リカレントニューラルネットワークが、前記シーケンスでの前記オペレーション埋込みの各々に対して、前記複数のデバイスの各々に対するそれぞれのスコアを含むスコアのセットを生成するように構成され、
オペレーション埋込みの前記シーケンスを処理するステップが、前記オペレーションを特徴づける前記オペレーション埋込みのためのスコアの前記セットを使用して前記オペレーションの各々に対してデバイスを選択するステップを含む、
請求項1に記載の方法。
【請求項８】
前記オペレーションの各々に対して前記デバイスを選択するステップが、前記オペレーションを特徴づける前記オペレーション埋込みのためのスコアの前記セットに従って、最も高いスコアを有する前記デバイスを選択するステップを含む、請求項7に記載の方法。
【請求項９】
前記オペレーションの各々に対して前記デバイスを選択するステップが、前記オペレーションを特徴づける前記オペレーション埋込みのためのスコアの前記セットによって定義された確率に従って、前記複数のデバイスからデバイスをサンプリングするステップを含む、請求項7に記載の方法。
【請求項１０】
前記配置リカレントニューラルネットワークが、
前記オペレーション埋込みの各々に対してそれぞれのエンコーダ隠れ状態を生成するために、オペレーション埋込みの前記シーケンスを処理するように構成されたエンコーダリカレントニューラルネットワークと、
前記オペレーション埋込みの各々に対して、
デコーダ入力を受け取ることと、
前記オペレーション埋込みのためのスコアの前記セットを生成するために、前記デコーダ入力および前記エンコーダ隠れ状態を処理することと
を行うように構成された、デコーダニューラルネットワークと
を備える、請求項7に記載の方法。
【請求項１１】
前記シーケンスでの第1のオペレーション埋込み後の前記オペレーション埋込みの各々に対する前記デコーダ入力が、前記シーケンスでの先行するオペレーション埋込みによって表される前記1つまたは複数のオペレーションに選択されるデバイスを識別する、請求項10に記載の方法。
【請求項１２】
前記ネットワークパラメータの初期値から、前記ネットワークパラメータの前記第1の値を決定するステップであって、
前記複数のデバイスにわたる前記オペレーションの1つまたは複数の配置を選択するために、配置リカレントニューラルネットワークの複数のネットワークパラメータの現在の値に従って、前記配置リカレントニューラルネットワークを使用して、オペレーション埋込みの現在のシーケンスを処理することと、
各選択された配置に対して、
前記配置に従って前記複数のデバイスにわたる前記オペレーションで前記機械学習モデルの前記処理を行い、
前記処理が完了するために必要な時間を決定することと、
前記選択された配置の各々に対して前記処理が完了するために必要な前記時間から導出される報酬を使用する強化学習技法を使用して前記複数のネットワークのパラメータの前記現在の値を調整することと
を繰り返し行うことによって、前記ネットワークパラメータの前記第1の値を決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項１３】
前記強化学習技法がREINFORCE技法である、請求項12に記載の方法。
【請求項１４】
前記強化学習技法が、前記必要な時間の移動平均であるベースラインを含む、請求項12に記載の方法。
【請求項１５】
前記パラメータの前記現在の値を調整するステップが、前記強化学習技法の一部として前記現在のシーケンスでの前記オペレーション埋込みを調整することをさらに含む、請求項12に記載の方法。
【請求項１６】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
複数のハードウェアデバイス上での分散処理のために配置されるべき機械学習モデルを指定するデータを受け取るステップと、
前記機械学習モデルを指定する前記データから、オペレーション埋込みのシーケンスを生成するステップであって、前記シーケンスでの各オペレーション埋込みが、前記機械学習モデルの前記分散処理を行うことの一部である1つまたは複数のそれぞれのオペレーションを特徴づける、ステップと、
配置リカレントニューラルネットワークの複数のネットワークパラメータの第1の値に従って、前記配置リカレントニューラルネットワークを使用して、オペレーション埋込みの前記シーケンスを処理するステップであって、
前記配置リカレントニューラルネットワークが、前記複数のデバイスにわたる前記シーケンスでの前記オペレーション埋込みによって特徴づけられた前記オペレーションの配置を定義するネットワーク出力を生成するために、前記第1の値に従ってオペレーション埋込みの前記シーケンスを処理するように構成される、ステップと、
前記ネットワーク出力によって定義された前記配置に従って前記複数のデバイスに前記オペレーションを配置することによって、前記複数のハードウェアデバイスによる処理のために前記機械学習モデルをスケジュールするステップと
を行わせる命令を記憶した1つまたは複数のストレージデバイスと
を備える、システム。
【請求項１７】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
複数のハードウェアデバイス上での分散処理のために配置されるべき機械学習モデルを指定するデータを受け取るステップと、
前記機械学習モデルを指定する前記データから、オペレーション埋込みのシーケンスを生成するステップであって、前記シーケンスでの各オペレーション埋込みが、前記機械学習モデルの前記分散処理を行うことの一部である1つまたは複数のそれぞれのオペレーションを特徴づける、ステップと、
配置リカレントニューラルネットワークの複数のネットワークパラメータの第1の値に従って、前記配置リカレントニューラルネットワークを使用して、オペレーション埋込みの前記シーケンスを処理するステップであって、
前記配置リカレントニューラルネットワークが、前記複数のデバイスにわたる前記シーケンスでの前記オペレーション埋込みによって特徴づけられた前記オペレーションの配置を定義するネットワーク出力を生成するために、前記第1の値に従ってオペレーション埋込みの前記シーケンスを処理するように構成される、ステップと、
前記ネットワーク出力によって定義された前記配置に従って前記複数のデバイスに前記オペレーションを配置することによって、前記複数のハードウェアデバイスによる処理のために前記機械学習モデルをスケジュールするステップと
を行わせる命令を記憶した1つまたは複数のコンピュータ記憶媒体。
【請求項１８】
特定のオペレーションを特徴づけるオペレーション埋込みを生成するステップが、
前記特定のオペレーションのオペレーションタイプのタイプ埋込みを生成するステップと、
前記特定のオペレーションによって生成される出力のサイズを特徴づける出力サイズ埋込みを生成するステップと、
入力を提供し、前記特定のオペレーションによって生成された出力を受け取るオペレーションを識別する隣接性埋込みを生成するステップと、
前記特定のオペレーションを特徴づける前記オペレーション埋込みを生成するために、前記タイプ埋込み、前記出力サイズ埋込み、および前記隣接性埋込みを結合するステップと
を含む、請求項17に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項１９】
前記配置リカレントニューラルネットワークが、前記シーケンスでの前記オペレーション埋込みの各々に対して、前記複数のデバイスの各々に対するそれぞれのスコアを含むスコアのセットを生成するように構成され、
オペレーション埋込みの前記シーケンスを処理するステップが、前記オペレーションを特徴づける前記オペレーション埋込みのためのスコアの前記セットを使用して前記オペレーションの各々に対してデバイスを選択するステップを含む、
請求項17に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項２０】
前記オペレーションの各々に対して前記デバイスを選択するステップが、前記オペレーションを特徴づける前記オペレーション埋込みのためのスコアの前記セットに従って、最も高いスコアを有する前記デバイスを選択するステップを含む、請求項19に記載の1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2017年3月24日に出願された米国仮出願第62/476,618号の優先権を主張する。先行出願の開示は、本出願の開示の一部とみなされ、参照により本開示に組み込まれる。
【０００２】
本明細書は、複数のデバイスにわたる機械学習モデルオペレーション(machine learning model operation)の配置を決定することに関する。
【背景技術】
【０００３】
ニューラルネットワークは、受け取った入力に対する出力を予測するために非線形ユニットの1つまたは複数の層を用いる機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って、受け取った入力から出力を生成する。
【０００４】
いくつかのニューラルネットワークは、リカレントニューラルネットワークである。リカレントニューラルネットワークは、入力シーケンスを受け取り、入力シーケンスから出力シーケンスを生成するニューラルネットワークである。詳細には、リカレントニューラルネットワークは、現在の時間ステップで出力を計算する際に、前の時間ステップからネットワークの内部状態の一部または全部を使用することができる。リカレントニューラルネットワークの一例は、長短期記憶(LSTM)ニューラルネットワークであり、LSTMニューラルネットワークは1つまたは複数のLSTMメモリブロックを含む。各LSTMメモリブロックは、1つまたは複数のセルを含むことができ、セルは各々が、入力ゲートと、忘却ゲートと、出力ゲートとを含み、これらはたとえば現在の活性化を生成する際に使用するために、またはLSTMニューラルネットワークの他の構成要素に提供されるように、セルについての前の状態をセルが記憶することを可能にする。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Sutskeverら、「Sequence to sequence learning with neural networks」、Neural Information Processing Systems、2014
【非特許文献２】Bahdanau, Dzmitryら、「Neural machine translation by jointly learning to align and translate」、International Conference on Learning Representations、2015
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書は、複数のハードウェアデバイスにわたる機械学習モデルオペレーションの配置を決定する、1つまたは複数の位置における1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されるシステムについて述べる。
【０００７】
本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するために、特定の実施形態で実装することができる。複数のデバイスにわたる機械学習モデルオペレーションの配置を決定するためにリカレントニューラルネットワークを使用することによって、デバイスを使用する機械学習モデルのオペレーションを実行する効率は向上する。詳細には、処理のために利用可能なハードウェア構成に適合する配置であって、モデルの処理のための実行時間がより短いものとなる配置を生成することができる。実行時間から導出される報酬のある強化学習を使用してニューラルネットワークを訓練することによって、リカレントニューラルネットワークは、ハードウェアにおける計算と通信との複雑なトレードオフを含む、現在のハードウェア環境の特性を学習し、訓練されたニューラルネットワークが、利用可能なリソースをより効率的に利用するより良く動作する配置を生成することを可能にする。すなわち、システムは、環境におけるデバイスの計算能力に対応するために、およびデバイス間の通信によって引き起こされる遅延を最小にし、オペレーションの性能を最大にするために、配置を現在のハードウェア環境に効果的に適応させることができる。
【０００８】
本明細書は、機械学習モデルオペレーションを配置することについて説明するが、本明細書において説明する技法は、複数のハードウェアデバイスにわたって計算グラフによって説明できるオペレーションの任意の集まりを配置するために使用することができる。
【０００９】
本明細書の主題の1つまたは複数の実施形態の詳細について、添付の図面および以下の説明に示す。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００１０】
【図１】機械学習モデルオペレーションのための配置を決定する例示的なデバイス配置システムを示す図である。
【図２】配置リカレントニューラルネットワークの例示的なアーキテクチャを示す図である。
【図３】訓練中に配置リカレントニューラルネットワークのネットワークパラメータの値を更新するための例示的なプロセスの流れ図である。
【図４】例示的な計算グラフおよび複数のデバイス上でのグラフの計算グラフオペレーションの例示的な配置を示す図である。
【発明を実施するための形態】
【００１１】
様々な図面における同じ参照番号および名称は、同じ要素を示す。
【００１２】
図1は、複数のハードウェアデバイスにわたる機械学習モデルのオペレーションのための配置を決定するデバイス配置システム100を示す。デバイス配置システム100は、1つまたは複数の位置における1つまたは複数のコンピュータ上にコンピュータプログラムとして実装することができる。
【００１３】
配置される機械学習モデルは、任意の種類のデジタルデータ入力を受け取ることと、入力に基づいて任意の種類のスコア、分類、または回帰出力を生成することとを行うように構成することができる。
【００１４】
たとえば、機械学習モデルへの入力が、画像または画像から抽出された特徴である場合、所与の画像に対して機械学習モデルによって生成される出力は、物体カテゴリのセットの各々に対するスコアであってもよく、各スコアは、画像がカテゴリに属する物体の画像を含んでいる推定尤度(estimated likelihood)を表す。
【００１５】
別の例として、機械学習モデルへの入力がインターネットリソース(たとえば、ウェブページ)、文書、または文書の一部、またはインターネットリソース、文書、もしくは文書の一部から抽出された特徴である場合、所与のインターネットリソース、文書、または文書の一部に対して機械学習モデルによって生成される出力は、トピックのセットの各々に対するスコアであってもよく、各スコアは、インターネットリソース、文書、または文書一部分がトピックに関するものである推定尤度を表す。
【００１６】
別の例として、機械学習モデルへの入力が、ユーザに対する個人化された推薦の特徴、たとえば、推薦のためのコンテキストを特徴づける特徴、たとえば、ユーザがとった前のアクションを特徴づける特徴である場合、機械学習モデルによって生成される出力は、コンテンツ項目のセットの各々に対するスコアであってもよく、各スコアは、ユーザがコンテンツ項目の推薦に好意的に反応する推定尤度を表す。
【００１７】
別の例として、機械学習モデルへの入力が1つの言語でのテキストのシーケンスである場合、機械学習モデルによって生成される出力は、別の言語でのいくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、その別の言語でのテキストが、入力されたテキストを別の言語に適切に翻訳したものである推定尤度を表す。
【００１８】
別の例として、機械学習モデルへの入力が、口頭発話を表すシーケンスである場合、機械学習モデルによって生成される出力は、いくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、テキストが発話に対する正しい文字起こしである推定尤度を表す。
【００１９】
詳細には、デバイス配置システム100は、複数のハードウェアデバイス上での分散処理のために配置されるべき機械学習モデルを指定する入力データ110を受け取る。ハードウェアデバイスは、一般的には異種混在であり、任意の適切なハードウェアデバイス、たとえば、CPU、GPU、ASICまたは他の専用ハードウェア、FPGAなどのいずれかの組合せを含むことができる。
【００２０】
機械学習モデルを指定する入力データ110は、計算グラフを表すデータを含んでよい。計算グラフは、オペレーションを表す頂点(vertex)と、オペレーション間のデータ通信を表すエッジ(edge)とを有する。
【００２１】
たとえば、入力データ110は、M個のオペレーション{o1,o2,...oM}を表す頂点を有する計算グラフGを表すデータを含む。M個のオペレーションは、機械学習モデルを訓練するためのオペレーション、または機械学習モデルがすでに訓練されていれば、機械学習モデルを使用して、受け取られた入力から出力を生成するためのオペレーションとすることができる。M個のオペレーションを仮定すると、デバイス配置システム100は、配置P={p1,p2,...,pM}を決定することを目指す。配置Pは、D個の利用可能なハードウェアデバイスのセットに属するデバイスpi、すなわちpi∈{1,...,D}への、各オペレーションoi∈Gの割当てである。
【００２２】
例示的な計算グラフおよび複数のハードウェアデバイスに関するグラフの計算グラフオペレーションの例示的な配置について、図4に関して詳細に説明する。
【００２３】
配置を決定するために、システム100は、デバイスにわたってオペレーションの配置を定義する出力を生成する配置リカレントニューラルネットワーク102を訓練する。配置リカレントニューラルネットワーク102が訓練されると、システム100は、最終的な配置を生成すことができる。一例として、システム100は、訓練された配置リカレントニューラルネットワーク102を実行し、最終的な配置を決定するために、訓練された配置リカレントニューラルネットワーク102の出力を使用してよい。別の例では、システム100は、訓練中に最終的な配置と見なされる最良の配置を使用してよい。
【００２４】
システム100は、次いで、複数のハードウェアデバイスによる処理のために機械学習モデルをスケジュールすることができ、すなわち、機械学習モデルのオペレーションを最終的な配置に従って実行させることができる。いくつかの他の場合では、システム100は、機械学習モデルの実行を管理する別のシステムに、最終的な配置を識別するデータを提供することができ、別のシステムが、最終的な配置に従ってデバイスにわたってオペレーションを配置できるようにする。
【００２５】
配置リカレントニューラルネットワークの訓練の一部として、システム100は、入力データ110から、オペレーション埋込み(operation embedding)のシーケンス108を生成する。シーケンスの各オペレーション埋込み108は、機械学習モデルの処理を行うために必要な1つまたは複数のそれぞれのオペレーションを特徴づける。埋込みは、数値の順序付き集まり、たとえば、浮動小数点値、または量子化された浮動小数点値のベクトルまたは行列である。
【００２６】
いくつかの場合では、システムは、シーケンス中の各オペレーションに対して単一のオペレーション埋込みを生成するために、複数の異なる埋込みを結合する。
【００２７】
より詳細には、特定のオペレーションを特徴づけるオペレーション埋込みを生成するために、システム100は、特定のオペレーションのオペレーションタイプのタイプ埋込み(type embedding)を生成する。たとえば、オペレーションタイプは、オペレーションの基礎をなす計算(たとえば、行列乗算、または2次元畳み込みもしくは1次元畳み込み、または非線形活性化関数)を記述してよく、タイプ埋込みは、オペレーションタイプの調整可能な埋込みベクトルであってよく、すなわち、同じタイプの各オペレーションが、同じタイプ埋込みを共有するようにする。
【００２８】
システム100は、特定のオペレーションによって生成される出力のサイズを特徴づける出力サイズ埋込み(output size embedding)を生成する。たとえば、システム100は、特定のオペレーションによって生成された出力(たとえば、出力テンソル)の各々のサイズを記録し、出力形状(たとえば、固定サイズのゼロ埋めリスト)にするために、記録されたサイズを連結してよい。出力形状は、特定のオペレーションの出力サイズ埋込みである。
【００２９】
システム100は、入力を提供し、特定のオペレーションによって生成された出力を受け取るオペレーションを識別する隣接性埋込み(adjacency embedding)(たとえば、one-hotエンコーディングベクトル)を生成する。
【００３０】
システム100は、埋込みの組合せから特定のオペレーションを特徴づけるオペレーション埋込みを生成する。システム100によって使用される埋込みの組合せは、変わることがある。たとえば、いくつかの場合では、システム100は、特定のオペレーションを特徴づけるオペレーション埋込みを生成するために、上記の3種類の埋込み、たとえば、タイプ埋込み、出力サイズ埋込み、および隣接性埋込みを組み合わせてよい。たとえば、システム100は、オペレーション埋込みを生成するために、タイプ埋込み、出力サイズ埋込み、および隣接性埋込みを連結してよい。いくつかの他の場合では、システム100は、オペレーション埋込みを生成するために、上記の3種類の埋込みのうちの2つを結合してよい。いくつかの他の場合では、システム100は、オペレーション埋込みを生成するために、上記の3種類の埋込みのうちの1つまたは複数を、新しい種類の埋込みと結合してよい。
【００３１】
いくつかの実装形態では、オペレーション埋込みのシーケンスの生成の一部として、システム100は、計算グラフ中の頂点によって表されるオペレーションの2つ以上が、同じデバイス上に併置されるべきであることを決定し、それに応じて、システム100は、2つ以上のオペレーションを特徴づける単一のオペレーション埋込みを生成する。
【００３２】
配置リカレントニューラルネットワーク102の訓練の各反復の間、システム100は、配置リカレントニューラルネットワーク102のネットワークパラメータの現在の値に従って、配置リカレントニューラルネットワーク102を使用して、オペレーション埋込みのシーケンス108を処理する。配置リカレントニューラルネットワーク102は、ネットワーク出力112を生成するために現在の値に従ってオペレーション埋込みのシーケンス108を処理するように構成される。ネットワーク出力112は、複数のデバイスにわたるシーケンスのオペレーション埋込みによって特徴づけられるオペレーションの配置を定義する。
【００３３】
詳細には、配置リカレントニューラルネットワーク102は、シーケンスでのオペレーション埋込み108の各々に対して、利用可能なハードウェアデバイスのセットでの各ハードウェアデバイスに対するそれぞれのスコアを含むスコアのセットを生成するように構成される。各ハードウェアデバイスに対するそれぞれのスコアは、ハードウェアデバイスがオペレーション埋込みによって特徴づけられるオペレーションを割り当てるのに最良のデバイスである可能性の程度を表す尤度である。ニューラルネットワーク102は、次いで、オペレーション埋込みのためのスコアのセットを使用してオペレーションの各々に対してデバイスを選択するように構成される。いくつかの場合では、ニューラルネットワーク102は、オペレーション埋込みのためのスコアのセットに従って最も高いスコアを有するデバイスを選択してよい。いくつかの他の場合では、ニューラルネットワーク102は、オペレーションを特徴づけるオペレーション埋込みのためのスコアのセットによって定義された確率に従って、複数のデバイスからデバイスをサンプリングしてよい。
【００３４】
オペレーションの各々に対してデバイスが選択されると、ニューラルネットワーク102は、複数のハードウェアデバイスにわたってオペレーションの配置を定義するネットワーク出力112を出力する。
【００３５】
システム100は、ネットワーク出力112によって定義された配置に従って複数のハードウェアデバイス上にオペレーションを配置することによって、複数のデバイスによる処理のために機械学習モデルをスケジュールしてよい。
【００３６】
一般的に、配置リカレントニューラルネットワーク102は、長短期記憶(LSTM)ニューラルネットワーク層を有するシーケンスツーシーケンス(sequence-to-sequence)モデルおよびコンテンツベースのアテンション(attention)メカニズムを含むリカレントニューラルネットワークとすることができる。例示的なシーケンスツーシーケンスモデル(sequence-to-sequence model)は、Sutskeverらの「Sequence to sequence learning with neural networks」、Neural Information Processing Systems、2014に記載されている。例示的なコンテンツベースのアテンションメカニズムは、Bahdanau, Dzmitryらの「Neural machine translation by jointly learning to align and translate」、International Conference on Learning Representations、2015に記載されている。
【００３７】
配置リカレントニューラルネットワーク102のアーキテクチャは、2つの部分、すなわちエンコーダリカレントニューラルネットワーク104と、デコーダニューラルネットワーク106とに分割することができる。
【００３８】
エンコーダリカレントニューラルネットワーク104は、入力としてオペレーション埋込みのシーケンスを受け取るように構成される。エンコーダリカレントニューラルネットワーク104は、オペレーション埋込みの各々に対してそれぞれのエンコーダ隠れ状態を生成するためにオペレーション埋込みのシーケンスを処理する。
【００３９】
オペレーション埋込みの各々に対して、デコーダニューラルネットワーク106は、デコーダ入力を受け取ることと、オペレーション埋込みのためのスコアのセットを生成するために、デコーダ入力およびエンコーダ隠れ状態を処理することとを行うように構成される。シーケンスでの第1のオペレーション埋込み後のオペレーション埋込みの各々に対するデコーダ入力は、シーケンスでの先行するオペレーション埋込みによって表される1つまたは複数のオペレーションに選択されるデバイスを識別する。第1のオペレーション埋込みに対して、デコーダニューラルネットワーク106は、第1のオペレーション埋込みのためのスコアのセットを生成するために、エンコーダ隠れ状態のみを処理してよい。
【００４０】
配置リカレントニューラルネットワーク102の例示的なアーキテクチャについては、図2に関して以下でより詳細に説明する。
【００４１】
システム100は、図3に関して以下で詳細に説明するプロセスを使用して、実行時間に基づいて配置リカレントニューラルネットワーク102のネットワークパラメータの値を更新することができる。
【００４２】
図2は、配置リカレントニューラルネットワークの例示的なアーキテクチャを示す。配置リカレントニューラルネットワークは、エンコーダ292と、デコーダ294とを含む。
【００４３】
エンコーダリカレントニューラルネットワーク292は、入力として、オペレーション埋込みのシーケンス(たとえば、埋込み211、212...、220)を受け取るように構成される。オペレーション埋込みのシーケンスは、複数のハードウェアデバイス上で機械学習モデルの処理を行うために必要なオペレーションを特徴づける。エンコーダリカレントニューラルネットワーク292は、オペレーション埋込みの各々に対してそれぞれのエンコーダ隠れ状態を生成するためにオペレーション埋込みのシーケンスを処理する。たとえば、図2に示すように、エンコーダリカレントニューラルネットワーク292は、オペレーション埋込みx1、x2、...、xMに対するエンコーダ隠れ状態e1、e2、...eMのリストを生成し、ここでMは、機械学習モデルの処理を行うために必要なオペレーションの数である。
【００４４】
デコーダニューラルネットワーク294は、LSTM隠れ状態d1、d2、...、dMを維持し、各復号時間ステップにおいてそれぞれのオペレーション埋込みのためのデバイスを出力するように構成される。各復号時間ステップは、1つのオペレーション埋込みに対応する。
【００４５】
具体的には、オペレーション埋込みの各々に対して、デコーダニューラルネットワーク294は、デコーダ入力を受け取ることと、オペレーション埋込みのためのスコアのセットを生成するために、デコーダ入力および適切なエンコーダ隠れ状態のセットを処理することとを行うように構成される。デコーダニューラルネットワーク294は、ソフトマックスニューラルネットワーク層を使用してオペレーション埋込みのためのスコアのセットを生成してよい。オペレーション埋込みのためのスコアのセットは、複数のハードウェアデバイス中の各ハードウェアデバイスに対するそれぞれのスコアを含む。各ハードウェアデバイスに対するそれぞれのスコアは、そのハードウェアデバイスがオペレーション埋込みによって特徴づけられるオペレーションを割り当てるのに最良のデバイスである可能性の程度を表す尤度である。デコーダニューラルネットワーク294は、次いで、オペレーション埋込みのためのスコアのセットを使用してオペレーションの各々に対してデバイスを選択するように構成される。いくつかの場合では、デコーダ294は、オペレーション埋込みのためのスコアのセットに従って最も高いスコアを有するデバイスを選択してよい。いくつかの他の場合では、デコーダ294は、オペレーションを特徴づけるオペレーション埋込みのためのスコアのセットによって定義された確率に従って、複数のデバイスからデバイスをサンプリングしてよい。
【００４６】
デコーダニューラルネットワーク294は、各復号時間ステップにおいて使用されるべき適切なエンコーダ隠れ状態のセットを決定するために、アテンションメカニズムを使用することができる。シーケンスでの第1のオペレーション埋込み後のオペレーション埋込みの各々に対するデコーダ入力は、シーケンスでの先行するオペレーション埋込みによって表される1つまたは複数のオペレーションに選択されるデバイスを識別する。たとえば、シーケンスでの第2のオペレーション埋込みに対するデコーダ入力262は、第1のオペレーション埋込みに選択されるデバイス251を識別するデバイス埋込みである。第1のオペレーション埋込みに対して、デコーダニューラルネットワーク106は、第1のオペレーション埋込みのためのスコアのセットを生成するために、適切なエンコーダ隠れ状態のみを処理してよい。
【００４７】
図3は、配置リカレントニューラルネットワーク(たとえば、図1の配置リカレントニューラルネットワーク102)のネットワークパラメータの値を更新するために配置リカレントニューラルネットワークを訓練するための例示的なプロセス300の流れ図である。便宜上、プロセス300は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって行われるものとして説明する。たとえば、本明細書に従って適切にプログラムされたデバイス配置システム、たとえば、図1のデバイス配置システム100は、プロセス300を行うことができる。
【００４８】
一般的に、複数のハードウェアデバイス上で機械学習モデルの処理(または訓練)を行うために必要なM個のオペレーション{o1,o2,...oM}を表す頂点を有する計算グラフG(computational graph G)を仮定すると、訓練された配置リカレントニューラルネットワークが、その配置の下での機械学習モデルの処理を行うのに最小時間を必要とする配置を決定することが望ましい。配置(placement)P={p1,p2,...,pM}は、D個のハードウェアデバイスのセットに属するデバイスpi、すなわちpi∈{1,...,D}へのオペレーションoi∈Gの割当てである。r(P)は、配置Pの下での計算グラフGにおいてM個のオペレーションの完全な実行を行うのにかかる時間を指す(以下、実行時間(running time)と呼ぶ)。システムは、実行時間r(P)が最小化されるようなPを見つけるために、配置リカレントニューラルネットワークを訓練する。
【００４９】
配置リカレントニューラルネットワークのネットワークパラメータの値を(たとえば、ネットワークパラメータの初期値または現在の値から)更新するために、システムは、以下のようにステップ302〜306を繰り返して行う。
【００５０】
システムは、複数のデバイスにわたるオペレーションの1つまたは複数の配置(たとえば、K個の配置)を選択するために、配置リカレントニューラルネットワークのネットワークパラメータの現在の値に従って、配置リカレントニューラルネットワークを使用して、オペレーション埋込みの現在のシーケンスを処理する。
【００５１】
たとえば、K個の配置を選択するために、システムは、配置リカレントニューラルネットワークによって定義される配置の確率分布からK個の配置を引き出すために、配置リカレントニューラルネットワークをK回実行することができる。すなわち、システムは、K個の同一の入力例のバッチを配置リカレントニューラルネットワークに与える。バッチ中の各入力例は、オペレーション埋込みの同じ現在のシーケンスである。バッチ中の各入力例に対して、配置リカレントニューラルネットワークは、図1に関して上記で詳細に説明したような方法で、配置リカレントニューラルネットワークによって定義される(すなわち、配置リカレントニューラルネットワークのソフトマックスニューラルネットワーク層によって定義される)配置の確率分布に従って配置を生成するために、エンコーダリカレントニューラルネットワークおよびデコーダニューラルネットワークを介してオペレーション埋込みの現在のシーケンスを処理するように構成される。
【００５２】
システムは、各選択された配置に対してステップ304を行う。詳細には、システムは、配置に従って複数のデバイスにわたるオペレーションを有する機械学習モデルの処理を行い、次いで、処理が完了するのに必要な時間を決定する。すなわち、各選択された配置に対して、システムは、選択された配置に従ってオペレーションが配置された機械学習モデルの処理を監視し、処理が完了するのに必要な時間を識別することができる。
【００５３】
システムは、選択された配置の各々に対して処理が完了するために必要な時間から導出される報酬を使用する強化学習技法を使用してパラメータの現在の値を調整する(ステップ306)。一般的に、配置ニューラルネットワークがより短い実行時間を有する配置を生成するよう促すために、報酬は、実行時間がより短いとき、より高くなる。
【００５４】
詳細には、システムは、報酬の負数を定義する以下の目的関数を最小にすることによって報酬を最大にするために、配置リカレントニューラルネットワークを訓練する。
【００５５】
【数１】
0006790286.tif 000002
【００５６】
ここでθは、配置リカレントニューラルネットワークのネットワークパラメータを指し、  
【００５７】
【数２】
0006790286.tif 000003
【００５８】
は、配置リカレントニューラルネットワークによって定義される配置の確率分布を指し、
【００５９】
【数３】
0006790286.tif 000004
【００６０】
は、実行時間
【００６１】
【数４】
0006790286.tif 000005
【００６２】
の平方根である。目的関数は、計算グラフ
【００６３】
【数５】
0006790286.tif 000006
【００６４】
を仮定すると、システムによって(たとえば、配置の確率分布
【００６５】
【数６】
0006790286.tif 000007
【００６６】
からK個の配置を引き出すために配置リカレントニューラルネットワークをK回実行することによって)選択されたK個の配置に対するK個の実行時間の平方根の期待値を計算する。
【００６７】
システムは、強化学習技法、たとえば、REINFORCE技法を使用して、目的関数の勾配を決定する。REINFORCE技法を使用すると、目的関数の勾配は、以下のように表すことができる。
【００６８】
【数７】
0006790286.tif 000008
【００６９】
ここでpは、配置リカレントニューラルネットワークによって配置に割り当てられた確率であり、すなわち、個々の配置に対して配置リカレントニューラルネットワークによって生成されたスコアの積である。
【００７０】
勾配の変化を減少させるために、システムは、K個の実行時間の移動平均であるベースライン項Bを使用して、以下のように勾配の近似値を求めることができる。
【００７１】
【数８】
0006790286.tif 000009
【００７２】
システムは、配置リカレントニューラルネットワークのネットワークパラメータの各々に対するそれぞれの更新された値を決定するために、目的関数の勾配を逆伝播することができる。
【００７３】
ネットワークパラメータの現在の値を調整すると同時に、システムは、場合によっては、強化学習技法の一部として、すなわち、オペレーション埋込みに勾配を逆伝播することによって、現在のシーケンスのオペレーション埋込みを調整することができる。
【００７４】
図4は、例示的な計算グラフ452、およびシステム454の複数のデバイス上でのグラフ452の計算グラフオペレーションの例示的な配置を示す。計算グラフ452は、オペレーション402〜416を表す頂点を含む。計算グラフ452は、オペレーション402〜416間で通信されるデータを表すエッジ432〜450をさらに含む。たとえば、計算グラフ452は、TensorFlow計算グラフであることがあり、その頂点はオペレーションを表し、エッジはオペレーション間で通信される多次元データアレイ(テンソル)を表す。
【００７５】
オペレーション402〜416の各々が、特定の配置、たとえば配置リカレントニューラルネットワーク(たとえば、図1の配置リカレントニューラルネットワーク102)を使用してデバイス配置システム(たとえば、図1のデバイス配置システム100)によって決定された配置に従って、システム454のデバイス418〜424の1つに割り当てられることがある。図4は、オペレーション402および410がデバイス418に割り当てられ、オペレーション404、406、および412がデバイス420に割り当てられ、オペレーション408がデバイス422に割り当てられ、オペレーション414および416がデバイス424に割り当てられる例示的な配置を示す。
【００７６】
デバイス418〜424は、一般的には異種混在であり、任意の適切なハードウェアデバイス、たとえば、CPU、GPU、ASICまたは他の専用ハードウェア、FPGAなどのいずれかの組合せを含むことができる。たとえば、いくつかの実装形態では、システム454は、1つまたは複数のCPUと、1つまたは複数のGPUとを有する単一の機械であることがあり、オペレーション402〜416の各々を、特定の配置に従って、CPUおよびGPUのうちの1つに割り当てることができる。いくつかの他の実装形態では、システム454は、GPUと、ASICまたはFPGAとを有する複数の機械を含むことができ、オペレーション402〜416の各々を、特定の配置に従って機械のうちの1つのデバイスに割り当てることができる。
【００７７】
1つまたは複数のコンピュータのシステムが特定のオペレーションまたはアクションを行うように構成されるとは、オペレーション時にシステムにオペレーションまたはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをシステムがインストールしていることを意味する。1つまたは複数のコンピュータが特定のオペレーションまたはアクションを行うように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置にオペレーションまたはアクションを行わせる命令を含むことを意味する。
【００７８】
本明細書で説明する主題および機能的オペレーションの実施形態は、デジタル電子回路において、有形に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書で開示する構造およびそれらの構造的に同等のものを含む、コンピュータハードウェアにおいて、またはそれらの1つもしくは複数の組合せにおいて、実装されることがある。本明細書で説明する主題の実装形態は、1つまたは複数のコンピュータプログラムとして実装されることがあり、すなわち、データ処理装置によって実行されるように、またはデータ処理装置のオペレーションを制御するために、有形の非一時的プログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることがある。代替的にまたは追加として、プログラム命令は、人為的に生成された伝搬信号、たとえば、データ処理装置による実行のために好適な受信装置に送信するための情報を符号化するために生成される機械生成の電気、光、または電磁信号上で符号化されることがある。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであることがある。しかしながら、コンピュータ記憶媒体は伝搬信号ではない。
【００７９】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを構成するコードを含むことができる。
【００８０】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれる、もしくは説明される場合もある)コンピュータプログラムは、コンパイラ型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、プログラム言語の任意の形態で書くことができ、またコンピュータプログラムは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに適した他のユニットとしてなど、任意の形態で配備されることがある。コンピュータプログラムは、ファイルシステム内のファイルに対応する場合があるが、対応する必要はない。プログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトを入れたファイルの一部分に、当該プログラムに専用の単一ファイルに、あるいは複数の協調ファイル、たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに、記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置され、もしくは複数のサイトにわたって分散し、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【００８１】
本明細書において使用される、「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装入出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなど、機能の符号化されたブロックであることがある。各エンジンは、1つまたは複数のプロセッサと、コンピュータ可読媒体とを含む任意の適切なタイプのコンピューティングデバイス、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子ブックリーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または他の据置型もしくは携帯型デバイス上に実装することができる。加えて、エンジンの2つ以上が、同じコンピューティングデバイス上に、または異なるコンピューティングデバイス上に実装される場合がある。
【００８２】
本明細書で説明するプロセスおよび論理フローは、入力データで動作し、出力を生成することによって機能を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラマブルコンピュータが実行することによって実行可能である。プロセスおよび論理フローはまた、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行可能であり、装置もまたこれらとして実装可能である。たとえば、プロセスおよび論理フローは、グラフィックス処理ユニット(GPU)によって実行されることがあり、また装置は、GPUとして実装されることがある。
【００８３】
コンピュータプログラムの実行に好適なコンピュータは、一例として、汎用もしくは専用マイクロプロセッサ、または両方、または他の種類の中央処理ユニットを含み、これらに基づくことがある。一般的に中央処理ユニットは、読取り専用メモリ、またはランダムアクセスメモリ、または両方から命令およびデータを受け取ることになる。コンピュータの必須要素は、命令を行うまたは実行するための中央処理ユニット、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的にコンピュータはまた、データを記憶するための1つもしくは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むことになり、またはこれらからデータを受け取ること、もしくはこれらにデータを転送すること、もしくはその両方を行うために動作可能に結合されることになる。しかしながら、コンピュータがそのようなデバイスを有する必要はない。さらに、コンピュータが別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュデバイスに埋め込まれることがある。
【００８４】
コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含み、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路によって補われる、または専用論理回路に組み込まれることがある。
【００８５】
ユーザとの対話を可能にするために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータへの入力を行うことができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータに実装されることがある。ユーザとの対話を可能にするために他の種類のデバイスが使用されることもあり、たとえばユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響入力、音声入力、または」触覚入力など、任意の形態で受け取ることができる。加えて、コンピュータが、ユーザによって使用されるデバイスに文書を送り、そのデバイスから文書を受け取ることによって、たとえば、ウェブブラウザから受け取られる要求に応じてユーザのクライアントデバイス上のウェブブラウザにウェブページを送ることによって、ユーザと対話することができる。
【００８６】
本明細書で説明する主題の実施形態は、たとえばデータサーバとして、バックエンド構成要素を含むコンピューティングシステム、あるいはミドルウェア構成要素、たとえばアプリケーションサーバを含むコンピューティングシステム、あるいはフロントエンド構成要素、たとえば、それによりユーザが本明細書で説明する主題の実装形態と対話することができるグラフィカルユーザインタフェース、もしくはウェブブラウザを有するクライアントコンピュータを含む、コンピューティングシステム、あるいは1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装可能である。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークによって、相互接続可能である。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)、およびワイドエリアネットワーク(「WAN」)、たとえばインターネットが含まれる。
【００８７】
コンピューティングシステムは、クライアントと、サーバとを含むことができる。クライアントおよびサーバは、一般的に互いから遠くにあり、典型的には通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータで実行している、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【００８８】
本明細書は、多くの特定の実装形態の詳細を含むが、これらは任意の発明の範囲への、または特許請求される可能性のあるものの範囲への制限として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に固有である場合がある特徴の説明として解釈されるべきである。本明細書で別個の実施形態の文脈で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装されることもある。逆に、単一の実施形態の文脈で説明される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的組合せで実装されることもある。さらに、特徴は、ある組合せで機能するものとして上記で説明され、さらに当初はそのように特許請求される場合があるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されることがあり、特許請求される組合せは、部分的組合せ、または部分的組合せの変形を対象とすることがある。
【００８９】
同様に、オペレーションは、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、このようなオペレーションが図示された特定の順序でもしくは順次に行われること、または例示したすべてのオペレーションが行われることを必要とするものと理解されるべきではない。いくつかの環境では、マルチタスクおよび並列処理が有利である場合がある。さらに、上記で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載するプログラム構成要素およびシステムは、一般的に単一のソフトウェア製品に統合される、または複数のソフトウェア製品にパッケージ化されることがあると理解されるべきである。
【００９０】
主題の特定の実施形態について説明してきた。他の実施形態も、以下の特許請求の範囲内である。たとえば、特許請求の範囲に記載するアクションは、異なる順序で行われ、やはり望ましい結果を実現することがある。一例として、添付図に示すプロセスは、望ましい結果を達成するために、図示した特定の順序、または一連の順序を必ずしも必要としない。いくつかの実装形態では、マルチタスクおよび並列処理が有利である場合がある。
【符号の説明】
【００９１】
100  デバイス配置システム
102  配置リカレントニューラルネットワーク
104  エンコーダリカレントニューラルネットワーク
106  デコーダニューラルネットワーク
108  オペレーション埋込み
110  入力データ110
112  ネットワーク出力
211〜220  埋込み
251  デバイス
262  デコーダ入力
292  エンコーダ
294  デコーダ
402〜416  オペレーション
418〜424  デバイス
432〜450  エッジ
452  計算グラフ
454  システム
【図１】
0006790286.tif 000010
【図２】
0006790286.tif 000011
【図３】
0006790286.tif 000012
【図４】
0006790286.tif 000013