(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-16
(45)【発行日】2022-05-24
(54)【発明の名称】タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
(51)【国際特許分類】
G06F 9/48 20060101AFI20220517BHJP
G06F 9/38 20060101ALI20220517BHJP
【FI】
G06F9/48 300H
G06F9/38 370X
(21)【出願番号】P 2019568198
(86)(22)【出願日】2018-09-28
(86)【国際出願番号】 CN2018108298
(87)【国際公開番号】W WO2019095873
(87)【国際公開日】2019-05-23
【審査請求日】2019-12-09
(31)【優先権主張番号】201711484410.8
(32)【優先日】2017-12-29
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201711157341.X
(32)【優先日】2017-11-20
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201810084077.X
(32)【優先日】2018-01-29
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201810083577.1
(32)【優先日】2018-01-29
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】519323517
【氏名又は名称】シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】SHANGHAI CAMBRICON INFORMATION TECHNOLOGY CO.,LTD.
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100165191
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100133835
【氏名又は名称】河野 努
(72)【発明者】
【氏名】ウー リンヤン
(72)【発明者】
【氏名】モン シアオフー
(72)【発明者】
【氏名】チャオ ヨンウェイ
(72)【発明者】
【氏名】クオ チー
(72)【発明者】
【氏名】チェン シュンユイ
(72)【発明者】
【氏名】ワン カンユイ
【審査官】田中 幸雄
(56)【参考文献】
【文献】特表2016-536692(JP,A)
【文献】国際公開第2017/163442(WO,A1)
【文献】特開平9-171503(JP,A)
【文献】MIDONNET, Serge et al.,A processor workload distribution algorithm for massively parallel applications,Proceedings of 2016 International Symposium on Computer Architecture and High Performance Computing Workshops,米国,IEEE,2016年10月26日,pages25-30,https://ieeexplore.ieee.org/document/7803671
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
タスク並列処理方法であって、
プログラムにおける操作要求および/またはデータに応じてプログラムを分割して実行すべきタスクを取得し、前記データは、プログラムにおける操作要求に関連する入力データまたは出力データであり、前記実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築し、
前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクをプロセッサの複数の異なるワークキューに割り当て、
前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御することを含むことを特徴とする、タスク並列処理方法。
【請求項2】
前記した、プログラムにおける操作
要求に応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および/または前記モデルの入力データを分割して実行すべきタスクを取得することを含み、前記モデルは、ニューラルネットワークにおける重みモデルであることを特徴とする、請求項
1に記載の方法。
【請求項3】
前記した、前記モデル有りの操作要求のモデル、および/または前記モデルの入力データを分割して実行すべきタスクを取得するステップは、
モデルを分割して取得する各前記実行すべきタスクに対応する重みを設定し、
各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定するか、または、
予め設定されたルールに従ってモデルのウィンドウ方向および/またはチャンネル方向において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得するか、または、
予め設定されたルールに従ってデータのウィンドウ方向において前記モデル有りの操作の入力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項
2に記載の方法。
【請求項4】
前記した、プログラムにおける操作
要求に応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得し、前記モデルは、ニューラルネットワークにおける重みモデルであり、
前記した、前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記入力データおよび/または出力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項
1に記載の方法。
【請求項5】
前記した、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てるステップは、
前記タスク有向非巡回グラフDAGをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、
各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、
前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てることを含むことを特徴とする、請求項1~
4のいずれか1項に記載の方法。
【請求項6】
前記した、前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するステップは、
前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクに対して参照カウントを設定し、
依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、
前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御することを含むことを特徴とする、請求項1~
4のいずれか1項に記載の方法。
【請求項7】
プロセッサによって実行されると請求項1~
6のいずれか1項に記載の方法のステップを実現するコンピュータプログラムを記憶したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項8】
タスク並列処理システムであって、
メモリと、第1プロセッサと、第2プロセッサとを含み、
前記メモリには、前記第1プロセッサと前記第2プロセッサ上で実行するコンピュータプログラムが記憶されており、
前記第1プロセッサは、分割アルゴリズムを実行可能で、
第2プロセッサは、マルチコアプロセッサであり、
前記第1プロセッサと第2プロセッサが前記コンピュータプログラムを実行すると、請求項1~
6のいずれか1項に記載の方法のステップが実現されることを特徴とする、タスク並列処理システム。
【発明の詳細な説明】
【関連出願】
【0001】
本願は、2017年11月20日に出願された出願番号が201711157341.Xで、名称が「タスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステム」である中国特許出願と、2017年12月29日に出願された出願番号が201711484410.8で、名称が「命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体」である中国特許出願と、2018年1月29日に出願された出願番号が201810084077.Xで、名称が「コンピュータ機器、データ処理方法および記憶媒体」である中国特許出願と、2018年1月29日に出願された出願番号が201810083577.1で、名称が「コンピュータ機器、データ処理方法および記憶媒体」である中国特許出願に基づく優先権を主張するものであり、これらの出願の全内容は参照により本明細書に組み込まれる。
【技術分野】
【0002】
本願は、コンピュータの技術分野に関し、特にタスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器に関する。
【背景技術】
【0003】
従来技術では、CUDA(Compute Unified Device Architecture:ビデオカードメーカーであるNVIDIAが提供しているコンピューティングプラットフォーム)、Cudnn(CUDA Deep Neural Network library:NVIDIAが提供しているディープニューラルネットワークアクセラレーションライブラリ)、Cublas(CUDA Basic Linear Algebra Subprograms:NVIDIAが提供しているマトリクスコンピューティングアクセラレーションライブラリ)などのアクセラレーターAPIを介してプログラミングして、畳み込みニューラルネットワークのプログラム命令を実現することができる。しかし、CUDA、Cudnn、CublasなどのアクセラレーターAPIを介してプログラミングして実現する畳み込みニューラルネットワークの各命令間には相互依存関係が無く、プログラミング命令を順次実行することしかできない。
【0004】
ニューラルネットワークは、実際には一連のキュー関数であり、グラフ構造である。畳み込みニューラルネットワークのプログラム命令を実現する際に、タスクブランチが存在する。現在、tensorflow(GoogleがDistBeliefに基づいて開発した第2世代の人工知能学習システム)またはCaffe(Convolutional Architecture for Fast Feature Embedding、畳み込みニューラルネットワークフレームワーク)などのフレームワークアプリケーションにより畳み込みニューラルネットワークのプログラムのタスク並列を実現することができる。しかし、上記フレームワークプログラムによりタスク並列を実現する場合、ソフトウェアの追加インストールが必要となるだけでなく、プログラムインタフェースの非互換性の問題も生じ、使い勝手が悪い。
【発明の概要】
【0005】
以上に鑑みて、tensorflowまたはCaffeなどのフレームワークアプリケーションでタスク並列を実現することによる使い勝手の悪さの問題に対して、タスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムを提供する必要がある。
【0006】
本願は、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築し、
前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当て、
前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御することを含むタスク並列処理方法を提供している。
【0007】
一実施例において、前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築するステップの前に、
プログラムにおける操作ノードおよび/またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得することを含む。
【0008】
一実施例において、前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および/または前記モデルの入力データを分割して実行すべきタスクを取得することを含む。
【0009】
一実施例において、前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
モデルを分割して取得する各前記実行すべきタスクに対応する重みを設定し、
各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定することを含む。
【0010】
一実施例において、前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってモデルのウィンドウ方向および/またはチャンネル方向において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得することを含む。
【0011】
一実施例において、前記した、前記モデル有りの操作要求の入力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記モデル有りの操作の入力データを分割して実行すべきタスクを取得することを含む。
【0012】
一実施例において、前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得することを含む。
【0013】
一実施例において、前記した、前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記入力データおよび/または出力データを分割して実行すべきタスクを取得することを含む。
【0014】
一実施例において、前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築するステップは、
取得した各前記実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフDAGにおける並列ノードと順序ノードを決定し、
前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフDAGを構築することを含む。
【0015】
一実施例において、前記した、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てるステップは、
前記タスク有向非巡回グラフDAGをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、
各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、
前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てることを含む。
【0016】
一実施例において、前記した、前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するステップは、
前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクに対して参照カウントを設定し、
依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、
前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御することを含む。
【0017】
本願は、プロセッサによって実行されると上記方法に記載のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供している。
【0018】
本願は、メモリと、マルチコアプロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含み、前記マルチコアプロセッサは、分割アルゴリズムを実行可能で、前記マルチコアプロセッサが前記コンピュータプログラムを実行すると、上記方法に記載のステップが実現されるタスク並列処理システムを提供している。
【0019】
本願は、メモリと、第1プロセッサと、第2プロセッサとを含み、前記第1プロセッサは、分割アルゴリズムを実行可能で、第2プロセッサは、マルチコアプロセッサであり、前記第1プロセッサと第2プロセッサが前記コンピュータプログラムを実行すると、上記方法に記載のステップが実現されるタスク並列処理システムをさらに提供している。
【0020】
これに対応して、本願は、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築するDAGグラフ構築ユニットと、
前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当てるタスク割り当てユニットと、
前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するスケジューリング制御ユニットとを含むタスク並列処理装置をさらに提供している。
【0021】
従来技術に比べて、本願で提供するタスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムは以下の有利な効果を有する。
【0022】
本願で提供するタスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムにおいて、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築し、さらにタスク有向非巡回グラフDAGに応じて、実行すべきタスクの割り当てと制御を行い、ワークキューの再スケジューリングによってマルチコアプロセッサのタスク並列を実現して、データ処理効率を向上させる。本実施例で提供するタスク並列処理方法の実施はtensorflowまたはCaffeなどのフレームワークプログラムに依存しないため、プログラムの設計時にインタフェースの互換性などの問題を考慮する必要がない。
【0023】
本願は、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、前記スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得し、
各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、
予め設定されたルールに従って、対応順位の前記選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定することを含む命令リストスケジューリング方法をさらに提供している。
【0024】
一実施例において、前記した、予め設定されたルールに従って、対応順位の前記選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、
現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしている選択ノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0025】
一実施例において、前記方法は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新することを含む。
【0026】
一実施例において、前記した、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0027】
一実施例において、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【0028】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【0029】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【0030】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【0031】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、
深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【0032】
一実施例において、前記した、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
現在アクセスしている選択ノードに対応する最短実行時間を取得し、
現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0033】
一実施例において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定することを含む。
【0034】
一実施例において、前記方法は、現在選択ノードの具体的な内容および/またはタイプに応じて各命令の優先度を設定することを含む。
【0035】
一実施例において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定することを含む。
【0036】
命令スケジューリング装置であって、
スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、各命令間のデータ依存関係に応じて、命令スケジューリング過程における命令選択毎に対応する全ての選択ノードを取得する取得ユニットと、
スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得するデータ依存分析ユニットと、
予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する評価ユニットとを含む。
【0037】
メモリと、プロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含むコンピュータ機器であって、前記プロセッサは、上記方法に記載のステップを実行する。
【0038】
コンピュータ読み取り可能な記憶媒体であって、プロセッサによって実行されると上記方法に記載のステップを実現するコンピュータプログラムを記憶した。
【0039】
従来技術に比べて、本願で提供する命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体は以下の有利な効果を有する。
【0040】
スケジューリング対象の命令のデータ依存関係を分析し、命令スケジューリング過程において行われる命令選択毎に対応する全ての選択ノードを取得し、さらに各順位に対応する選択ノードに対する評価結果に基づいてスケジューリング後の命令リストにおける各順位の命令を決定する。当該方法によれば、命令選択毎に、選択された命令が現在状態における最適結果であることを確保でき、これらの最適結果を用いて取得したスケジューリング後の命令リストにおいて、各命令間の配置がよりコンパクトになり、元の命令リストにおける命令シーケンスの実行時間の短縮化が図れる。
【0041】
本願は、第1プロセッサと、第2プロセッサと、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと前記第1プロセッサ上で実行可能なランタイムシステムとを記憶したメモリと、を含み、
前記ランタイムシステムは、
前記メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含むデータ処理装置と、
前記第2プロセッサを起動または停止するように制御する機器管理装置と、
前記現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように前記第2プロセッサを制御するタスク実行装置とを含むコンピュータ機器をさらに提供している。
【0042】
一実施例において、前記データ処理装置は、
前記メモリから各前記現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルを解析するオフラインモデルロードユニットと、
前記メモリから前記現在オリジナルネットワークに対応する入力データを取得する入力データロードユニットとを含む。
【0043】
一実施例において、前記データ処理装置は、前記第2プロセッサが前記現在オリジナルネットワークに対応する入力データを実行できるように、前記入力データロードユニットが取得した前記現在オリジナルネットワークに対応する入力データに対して前処理を行い、前記第2プロセッサが取得した出力データを前記メモリに記憶する入力データ前処理ユニットをさらに含む。
【0044】
一実施例において、前記コンピュータ機器は、前記ランタイムシステム上で実行可能なアプリケーションソフトウェアをさらに含み、
前記データ処理装置は、オフラインモデルAPIおよび入力データAPIを提供可能で、
前記機器管理装置は、第2プロセッサ駆動APIを提供可能で、
前記タスク実行装置は、第2プロセッサ実行APIを提供可能で、
前記アプリケーションソフトウェアは、前記オフラインモデルAPIおよび入力データAPI、前記第2プロセッサ駆動API、および前記第2プロセッサ実行APIを呼び出し可能である。
【0045】
一実施例において、前記第2プロセッサの数は複数であるか、または前記第2プロセッサは複数の処理ユニットを含み、
前記タスク実行装置は、さらにタスク割り当てAPIを提供可能で、前記アプリケーションソフトウェアは、さらに、複数の前記第2プロセッサまたは前記第2プロセッサの複数の処理ユニットを制御するために前記タスク割り当てAPIを呼び出し可能である。
【0046】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するようにデータ処理装置を制御し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
機器管理装置によって、前記コンピュータ機器の第2プロセッサを起動するように制御し、
タスク実行装置によって、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークを実行して前記現在オリジナルネットワークの出力データを取得するように前記コンピュータ機器の第2プロセッサを制御し、
前記現在オリジナルネットワークの出力データを前記メモリに記憶するように前記データ処理装置を制御することを含むデータ処理方法をさらに提供している。
【0047】
一実施例において、前記方法は、
前記現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得し、
前記現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況が第1プリセット割合以上であれば、前記コンピュータ機器の第2プロセッサを起動するように制御する前記ステップを実行することをさらに含む。
【0048】
一実施例において、前記方法は、前記メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するステップの前に、
前記現在オリジナルネットワークに対応するオフラインモデルに対して解析および前処理を行い、
前記現在オリジナルネットワークに対応する入力データに対して前処理を行うことをさらに含む。
【0049】
また、本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
オフラインモデルAPIを呼び出し、現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
入力データAPIを呼び出し、前記現在オリジナルネットワークの入力データを取得し、
第2プロセッサ駆動APIを呼び出し、前記コンピュータ機器における第2プロセッサを起動するように制御し、
第2プロセッサ実行APIを呼び出し、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークの出力データを取得するように前記第2プロセッサを制御し、
第2プロセッサ駆動APIを呼び出し、第2プロセッサを停止するように制御することを含むデータ処理方法をさらに提供している。
【0050】
また、本願は、1つまたは複数のプロセッサによって実行されると上記のいずれか1項に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。
【0051】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、データ処理装置によって、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、当該コンピュータ機器の第2プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行して、現在オリジナルネットワークの出力データを取得することができる。各オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータのみを含むので、オリジナルネットワークのオフラインモデルのデータ量は当該オリジナルネットワークのデータ量よりも遥かに小さい。これにより、コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデル(ライト級)を実行することで、コンピュータ機器によるヘビー級のデータのニューラルネットワークデータに対する処理過程を実現することができる。また、当該コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを直接実行することにより、現在オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【0052】
本願は、コンピュータ機器であって、第1プロセッサ、第2プロセッサ、第1メモリおよび第2メモリを含み、前記第1メモリには、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと、前記第1プロセッサ上で実行可能なランタイムシステムとが記憶され、前記第2メモリには、前記第1プロセッサまたは前記第2プロセッサ上で実行可能なオペレーティングシステムが記憶されており、
前記ランタイムシステムは、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであり、前記第1メモリはセキュア記憶媒体であり、前記ランタイムシステムは、前記第1プロセッサ上で実行されると、前記第1メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記第2プロセッサが前記現在オリジナルネットワークに対応するオフラインモデルを実行するように制御することができ、
前記現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記オリジナルネットワークにおける各計算ノードのインタフェースデータを含むコンピュータ機器をさらに提供している。
【0053】
一実施例において、前記ランタイムシステムは、
前記第1メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するためのオフラインモデルAPIおよび入力データAPIを提供可能なデータ処理装置と、
前記第2プロセッサを起動または停止するように制御するための第2プロセッサ駆動APIを提供可能な機器管理装置と、
前記現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように前記第2プロセッサを制御するための第2プロセッサ実行APIを提供可能なタスク実行装置とを含む。
【0054】
一実施例において、前記データ処理装置は、
前記第1メモリから各前記現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルを解析するためのオフラインモデルAPIを提供可能なオフラインモデルロードユニットと、
前記第1メモリから現在オリジナルネットワークに対応する入力データを取得するための入力データAPIを提供可能な入力データロードユニットとを含む。
【0055】
一実施例において、前記データ処理装置は、前記第2プロセッサが前記現在オリジナルネットワークの入力データを実行できるように、前記現在オリジナルネットワークの入力データに対して前処理を行い、前記第2プロセッサが取得した出力データを前記第1メモリに記憶するためのデータ前処理APIを提供可能な入力データ前処理ユニットをさらに含む。
【0056】
一実施例において、前記第2プロセッサの数は複数であるか、または前記第2プロセッサは複数の処理ユニットを含み、
前記タスク実行装置は、さらに、複数の前記第2プロセッサまたは前記第2プロセッサの複数の処理ユニットを制御するためのタスク割り当てAPIを提供可能である。
【0057】
一実施例において、前記コンピュータ機器は、前記ランタイムシステム上で実行可能なセキュアなアプリケーションソフトウェアをさらに含み、前記アプリケーションソフトウェアは、前記オフラインモデルAPIおよび入力データAPI、前記第2プロセッサ駆動API、および前記第2プロセッサ実行APIを呼び出し可能である。
【0058】
一実施例において、前記第1メモリと前記第2メモリとは、物理的に互いに独立して設けられるか、または、前記第1メモリと前記第2メモリは、一体に集積され、かつ論理的に互いに独立して設けられる。
【0059】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
第1メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
前記コンピュータ機器の第2プロセッサを起動するように制御し、
前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークを実行して前記現在オリジナルネットワークの出力データを取得するように前記コンピュータ機器の第2プロセッサを制御し、
前記現在オリジナルネットワークの出力データを前記第1メモリに記憶することを含むデータ処理方法をさらに提供している。
【0060】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
オフラインモデルAPIを呼び出し、第1メモリから現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
入力データAPIを呼び出し、前記現在オリジナルネットワークの入力データを取得し、
第2プロセッサ駆動APIを呼び出し、前記コンピュータ機器における第2プロセッサを起動するように制御し、
第2プロセッサ実行APIを呼び出し、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークの出力データを取得するように前記第2プロセッサを制御し、
第2プロセッサ駆動APIを呼び出し、第2プロセッサを停止するように制御することを含むデータ処理方法をさらに提供している。
【0061】
一実施例において、前記方法は、
データ前処理APIを呼び出し、前記現在オリジナルネットワークの出力データを前記第1メモリに記憶することをさらに含む。
【0062】
一実施例において、前記方法は、前記した、入力データAPIを呼び出し、前記現在オリジナルネットワークの入力データを取得するステップの後に、
前記第2プロセッサが前記入力データを実行できるように、データ前処理APIを呼び出し、取得した前記現在オリジナルネットワークの入力データに対して前処理を行うことをさらに含む。
【0063】
また、本願は、1つまたは複数のプロセッサによって実行されると上記のいずれか1項に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。
【0064】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、ランタイムシステムのデータ処理装置によって、第1メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、コンピュータ機器の第2プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行する。現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、TEEなどのトラステッド実行環境に基づいて構築されたセキュアなランタイムシステムによるニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【図面の簡単な説明】
【0065】
【
図1】
図1は、一実施例で提供するタスク並列処理システムの構成模式図である。
【
図2】
図2は、一実施例で提供するタスク並列処理システムの構成模式図である。
【
図3】
図3は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【
図4】
図4は、一実施例で提供するモデル無しの操作要求の入力データと出力データを分割する模式図である。
【
図5】
図5は、一実施例で提供するニューラルネットワークモデルの畳み込み操作(conv)の入力出力の模式図である。
【
図6】
図6は、一実施例で提供するconvモデルを分割する模式図である。
【
図7】
図7は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【
図8】
図8は、一実施例において構築されたタスク有向非巡回グラフDAGである。
【
図9】
図9は、一実施例における実行すべきタスクの割り当て結果の模式図である。
【
図10】
図10は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【
図11】
図11は、一実施例において構築されたタスク有向非巡回グラフDAGである。
【
図12】
図12は、一実施例における実行すべきタスクの割り当て結果の模式図である。
【
図13】
図13は、一実施例で提供するタスク並列処理装置の構成模式図である。
【
図14】
図14は、一実施例で提供するコンピュータシステムの構成模式図である。
【
図15】
図15は、一実施例における命令リストスケジューリング方法のステップのフローチャートである。
【
図16】
図16は、一実施例において取得したスケジューリング対象の命令のデータ依存関係図である。
【
図17】
図17は、一実施例で取得した選択ノードの関連図である。
【
図18】
図18は、一実施例で提供する命令リストスケジューリング装置の構成模式図である。
【
図19】
図19は、一実施例で提供するコンピュータ機器の内部構成図である。
【
図20】
図20は、一実施例におけるコンピュータ機器の構成ブロック図である。
【
図24】
図24は、
図20におけるコンピュータ機器の一実施例のデータ処理方法のフローチャートである。
【
図25】
図25は、
図20におけるコンピュータ機器の別の実施例のデータ処理方法のフローチャートである。
【
図26】
図26は、一実施例のオフラインモデル生成方法のフローチャートである。
【
図27】
図27は、別の実施例のオフラインモデル生成方法のフローチャートである。
【
図28】
図28は、一実施例のニューラルネットワークのネットワーク構成図である。
【
図29】
図29は、
図28におけるニューラルネットワークのオフラインモデルの生成過程の模式図である。
【
図30】
図30は、別の実施例におけるコンピュータ機器の構成ブロック図である。
【
図31】
図31は、
図30におけるコンピュータ機器の一実施例のデータ処理方法のフローチャートである。
【
図32】
図32は、
図30におけるコンピュータ機器の他の実施例のデータ処理方法のフローチャートである。
【発明を実施するための形態】
【0066】
本願の目的、技術的手段および技術効果がより明確になるように、以下、図面を参照しながら本願の具体的な実施例について説明する。本願に記載された具体的な実施例は、本願を限定するものではなく、本願を説明するためのものに過ぎないことを理解すべきである。なお、本願における実施例および実施例における特徴は、矛盾しない限り、互いに組み合わせることができる。本実施例における「第1」、「第2」などは、記載された対象を区別するためのものに過ぎず、順序または技術的意味が一切ないことは明らかである。
【0067】
図1は、本願の実施例で提供するタスク並列処理システム600(区別の便宜上、以下、第1タスク並列処理システムという)の構成模式図を示す。前記プロセッサシステムは、プロセッサ620と、プロセッサ620により実行可能な命令を記憶したメモリ610とを含み、プロセッサ620は、それぞれ内部バスを介して通信し、異なるタスクを実行可能な複数のプロセッサコアを含む。プロセッサ620のプロセッサコアは、分割アルゴリズムを実行することができる。
【0068】
図2は、本願の実施例で提供する別のタスク並列処理システム700(区別の便宜上、以下、第2タスク並列処理システムという)の構成模式図を示す。当該タスク並列処理システムは、第1プロセッサ710と、第2プロセッサ720と、メモリ730とを含む。メモリ730には、第1プロセッサ710および/または第2プロセッサ720により実行可能な命令が記憶されている。第1プロセッサ710のプロセッサコアは、分割アルゴリズムを実行する能力を持つ必要があり、第2プロセッサ720は、分割アルゴリズムを実行する能力を持たなくてもよい。第1プロセッサ710と第2プロセッサ720のそれぞれのプロセッサコアは、内部バスを介して通信し、異なるタスクを実行する。第1プロセッサ710と第2プロセッサ720とは、バスを介して通信し、協働して作動する。1つの選択可能な実施形態として、第1プロセッサ710は、マルチコアプロセッサであってもよいし、シングルコアプロセッサであってもよい。第2プロセッサ720はマルチコアプロセッサであってもよい。
【0069】
図3は、本願で提供するタスク並列処理方法のステップのフローチャートである。当該方法は、
図1または
図2に示すタスク並列処理システムに適用でき、下記ステップは命令として上記タスク並列処理システムのメモリに記憶されてもよく、当該タスク並列処理方法は以下のステップを含みうる。
【0070】
ステップS301において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築する。
【0071】
本実施例における有向非巡回グラフDAGは、実行すべきタスク間の駆動依存関係を示すものである。DAG(Directed Acyclic Graph、有向非巡回グラフ)は、有向グラフの一種であり、イベント間の駆動依存関係を示し、タスク間のスケジューリングを管理するためによく用いられる。DAGのこれらの特性によれば、取得した実行すべきタスク間の論理関係をDAGを用いて記述することができる。
【0072】
実行すべきタスク間の依存関係とは、ある実行すべきタスクの実行は、他の実行タスクの実行結果に依存する必要があることをいう。例えば、A命令の読み取りは、A命令の書き込みという操作に依存する必要がある。
【0073】
1つの選択可能な実施形態として、実行すべきタスクは、第1タスク並列処理システム600におけるプロセッサ620のプロセッサコアが予め設定された分割アルゴリズムを実行して実行すべきプログラムを分割することによって得られる。
【0074】
1つの選択可能な実施形態として、実行すべきタスクは、第2タスク並列処理システム700における第1プロセッサ710のプロセッサコアが予め設定された分割アルゴリズムを実行して実行すべきプログラムを分割することによって得られる。
【0075】
本実施ステップS301は、第1タスク並列処理システム600におけるプロセッサ620のプロセッサコア、または第2タスク並列処理システム700における第1プロセッサのプロセッサコアにより実行されてもよい。
【0076】
ステップS302において、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てる。
【0077】
第1タスク並列処理システム600におけるプロセッサのプロセッサコア、または第2タスク並列処理システム700におけるプロセッサコアは、いずれも1つまたは複数のワークキューを含みうる。
【0078】
ワークキュー(work queue)は、タスクを遅延実行するメカニズムであり、入れられた実行すべきタスクを順次実行することができる。ワークキューにおける各実行すべきタスクの実行は1つのカーネルスレッドによって制御されるため、プロセッサシステムの割り込み制御メカニズムによってワークキューの制御スレッドを調整して、タスクの再スケジューリング、ひいてはスリープを実現することができる。
【0079】
実行すべきタスクをワークキューに割り当てる場合、プログラムの実行時間を短縮するために、並列可能なタスクをできるだけ異なるワークキューに割り当てる。タスク有向非巡回グラフDAGにおける並列ノードに関連付けられた下流の実行すべきタスクは一般的に並列可能な実行すべきタスクであるため、構築されたタスク有向非巡回グラフDAGに応じて、実行すべきタスクの割り当てを行うことができる。
【0080】
なお、本実施ステップS302は、第1タスク並列処理システム600におけるプロセッサコアのいずれかにより実行されてもよいし、第2タスク並列処理システム700におけるプロセッサコアのいずれかにより実行されてもよい。
【0081】
ステップS303において、前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御する。
【0082】
各ワークキューが独立して実行されるため、あるワークキューにおいて他のワークキューにおける実行すべきタスクの出力結果に依存する必要がある実行すべきタスクが存在する場合、実行すべきタスクをスケジューリングしなければ、実行エラーが発生する。よって、プログラムが正しい結果を出力するのを確保するために、タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて各ワークキューにおける各実行すべきタスクをスケジューリングして、各実行すべきタスクの実行を制御する必要がある。
【0083】
なお、本実施ステップは、第1タスク並列処理システム600におけるプロセッサコアのいずれかにより実行されてもよいし、第2タスク並列処理システム700におけるプロセッサコアのいずれかにより実行されてもよい。本実施例で提供するタスク並列処理方法において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築し、さらにタスク有向非巡回グラフDAGに応じて、実行すべきタスクの割り当てと制御を行い、ワークキューの再スケジューリングによってマルチコアプロセッサのタスク並列を実現して、データ処理効率を向上させる。本実施例で提供するタスク並列処理方法の実施はtensorflowまたはCaffeなどのフレームワークプログラムに依存しないため、プログラムの設計時にインタフェースの互換性などの問題を考慮する必要がない。
【0084】
一実施例において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築するステップの前に以下のことを含む。
【0085】
プログラムにおける操作ノードおよび/またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得する。実行されるプログラムは複数の操作要求(例えば、conv、pool、active、addなど)を含み、各操作要求の間には操作ノードが存在する。よって、操作ノードに応じてプログラムを分割して実行すべきタスクを取得することができる。
【0086】
ある実行されるプログラムに含まれる操作要求は、すべて順次実行される必要があるものである可能性がある。この場合、タスク並列の可能性を高くするために、実行されるプログラムのデータレベル(コードレベル)で分割を行うことが考えられ、また、プログラムにおけるデータノードに応じて分割を行うことも考えられる。
【0087】
本実施ステップにおいて、第1タスク並列処理システム600におけるプロセッサ620のプロセッサコア、または第2タスク並列処理システム700における第1プロセッサ710のプロセッサコアにより予め設定された分割アルゴリズムを実行して、プログラムにおける操作ノードおよび/またはデータノードに応じて実行すべきプログラムを分割して実行すべきタスクを取得する必要がある。
【0088】
なお、実行されるプログラムを分割する場合、操作ノードのみに応じて分割を行ってもよいし、直接にデータレベルでデータノードに応じて分割を行ってもよいし、この両者の組合わせで分割を行ってもよい。実行されるプログラムを細かく分割するほど、タスク並列の可能性も高くなるが、タスク並列時の調整制御の難しさも高くなる。このため、実行されるプログラムを分割する場合、実際の必要に応じて分割方法を選択する必要があり、これについて本願では限定しない。
【0089】
一実施例において、第1タスク並列処理システム600におけるプロセッサ620のプロセッサコア、または第2タスク並列処理システム700における第1プロセッサ710のプロセッサコアがプログラムにおける操作ノードに応じてプログラムを分割する場合、1)プログラムがモデル無しの操作要求を含むケースと、2)プログラムがモデル有りの操作要求を含むケースとの2つのケースを含む。
【0090】
ケース1)では、前記プログラムがモデル無しの操作要求(例えば、pool、batchnorm、Lrn、active、addなど)を含む場合、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは以下のことを含む。
【0091】
前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得する。
【0092】
モデル無しの操作要求の入力データおよび/または出力データを分割する場合、予め設定されたルールに従ってデータのウィンドウ方向(height width方向、hw方向)において前記入力データおよび/または出力データを分割して実行すべきタスクを取得することができる。
【0093】
図4は、データのウィンドウ方向においてモデル無しの操作要求の入力データと出力データを分割する模式図を示す。この分割において、ウィンドウが位置する平面上で入力データと出力データを均等に分割することを予め設定されたルールとする。
【0094】
出力データY=入力データXとし、ここで、X=x1+x2+x3+x4、Y=y1+y2+y3+y4である。
【0095】
なお、データのウィンドウ方向において入力データと出力データを均等に分割して実行すべきタスクを取得することは、本実施例で提供する、データのウィンドウ方向において入力データと出力データを分割する具体的な形態に過ぎない。実際の場合には、非均等分割によりデータのウィンドウ方向においてデータを分割するか、または異なる均等分割方法でデータのウィンドウ方向においてデータを分割してもよい。一定のルールに従って入力データと出力データを分割できれば本ステップの目的を達成でき、具体的にどのように分割するかについて、本願では限定しない。
【0096】
なお、本願において、データのウィンドウ方向において入力データと出力データを分割することは、複数の実行すべきタスクを取得することを目的とし、入力データと出力データを分割すれば本ステップの目的を達成できる。よって、モデル無しの操作要求を分割して実行すべきタスクを取得する場合、入力データのみを分割してもよいし、出力データのみを分割してもよいし、入力データと出力データの両方を分割してもよい。上記のいずれの場合においても、本ステップの実施目的を達成でき、具体的にどのように分割するかについて、具体的な操作および実際の必要に応じて柔軟に選択可能である。
【0097】
ケース2)では、前記プログラムがモデル有りの操作要求(例えば、conv、mlpなど)を含む場合、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは以下のことを含む。
【0098】
前記モデル有りの操作要求のモデルを分割するか、および/または前記モデルの入力データを分割して実行すべきタスクを取得する。
【0099】
前記モデル有りの操作要求のモデルを分割する場合、モデルを分割して取得する各前記実行すべきタスクに対応する重みを予め設定する必要がある。さらに各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定する。
【0100】
前記モデル有りの操作要求のモデルを分割する場合、予め設定されたルールに従ってモデルのウィンドウ方向(height width方向、hw方向)において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得してもよいし、モデルのチャンネル方向(channel方向、C方向)において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得してもよいし、この両者の組み合わせで実行すべきタスクを取得してもよい。
【0101】
また、hw平面上でモデル有りの操作の入力データを分割して実行すべきタスクを取得してもよい。
【0102】
図5は、ニューラルネットワークモデルの畳み込み操作(conv)の入力出力の模式図を示す。
図6は、チャンネル方向においてconvモデルを分割する模式図を示す。
【0103】
convモデルは、出力データY=入力データXに従って入力出力を行うとする。この場合、mlp(Multi-Layer Perceptron、多層パーセプトロン)タスクをモデルのC方向において3つのサブタスクに分ける。入力データXはx1、x2、x3に分割され、対応する出力データはy1、y2、y3である。
【0104】
ニューラルネットワーク自体の特殊な構造のため、分割された入力データは処理される他、対応する重みSiが乗じられて対応する出力データy1、y2、y3が取得される(ここで、iはX分割数である)。すなわち、y1=x1*S1+x2*S2+x3*S3、y2=x1*S4+x2*S5+x3*S6、y3=x1*S7+x2*S8+x3*S9である。最後に、y1、y2、y3に対して演算処理を行うことによって出力データYを取得することができる。
【0105】
hw平面上でモデル有りの操作の入力データを分割する方法は、hw平面上でモデル無しの操作要求の入力データを分割する方法に類似するため、ここで詳細な説明は省略する。
【0106】
なお、モデル有りの操作要求を分割する場合、モデルのC方向のみにおいて分割を行ってもよいし、モデルのhw平面上のみにおいて分割を行ってもよいし、モデルのC方向とモデルのhw平面上の両方において分割を行ってもよい。複数種類の分割方法はタスク並列の可能性を高くすることができ、理論的にはプログラムの実行時間を短縮することができるが、それに応じて実現の難しさも高くなる。また、実際の適用において、分割された実行すべきタスクを実行する場合、実際の実行時間は理論的な実行時間よりもやや長いため、どのようにモデル有りの操作要求を分割するかについては、さらに実際の場面に応じて選択する必要があり、本願では限定しない。
【0107】
上記2つのケースで提供する、実行すべきタスクを取得する方法を用いて取得される実行すべきタスクの並列の可能性が高く、構築されたタスク有向非巡回グラフDAGにおいて並列ノードがより多くなり、さらに、実行すべきプログラムをより効率良く実行することができる。
【0108】
一実施例において、第1タスク並列処理システム600または第2タスク並列処理システム700のプロセッサコアが、取得した前記実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築することは以下のことを含む。
【0109】
取得した各実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフDAGにおける並列ノードと順序ノードを決定する。
【0110】
そして、前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフDAGを構築する。
【0111】
取得した実行すべきタスクの間に依存関係がある場合もあれば依存関係がない場合もある。2つの実行すべきタスクの間に依存関係がない場合、2つの実行すべきタスクは一般的に、並列可能なタスクである。2つの実行すべきタスクの間に依存関係がある場合、2つの実行すべきタスクは一般的に、シリアルタスクである。よって、各実行すべきタスク間の依存関係に応じてタスク有向非巡回グラフDAGにおける並列ノードと順序ノードを決定し、決定した異なるタイプのノードに応じて、各タスクをタスク有向非巡回グラフDAGの対応位置に入れ、タスク有向非巡回グラフDAGの構築を完成する。
【0112】
なお、実行すべきプログラムを分割して実行すべきタスクを取得する必要がある場合、タスク並列処理システムは、プログラムを分割して実行すべきタスクを取得するための、分割アルゴリズムを実行可能なプロセッサを少なくとも1つ含むことを確保する必要がある。
【0113】
一実施例において、第1タスク並列処理システム600または第2タスク並列処理システム700のプロセッサコアが、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てることは以下のステップを含む。
【0114】
ステップS2021において、タスク有向非巡回グラフDAGをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得する。
【0115】
ステップS2022において、各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得する。
【0116】
ステップS2023において、前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てる。
【0117】
本実施例において、プロセッサコアはタスクを割り当てる場合、タスクを分割アルゴリズムを実行する能力を持つプロセッサコアのワークキュー、例えば第1タスク並列プロセッサシステム600におけるプロセッサ620のプロセッサコアのワークキューに割り当ててもよいし、タスクを分割アルゴリズムを実行する能力を持たないプロセッサコアのワークキュー、例えば第2タスク並列処理システム700における第2プロセッサ720のプロセッサコアのワークキューに割り当ててもよい。プロセッサコアが割り当てられたタスクを実行できれば、並列の方法で実行すべきプログラムを実行するのを確保できる。実行すべきタスクを実行するプロセッサコアが分割アルゴリズムを実行する能力を持つか否かは、プログラムの実行に影響しないので、本願では限定しない。
【0118】
本実施例において、タスクのトポロジカルソートシーケンスの最長経路に応じて実行すべきタスクを割り当て、プログラムの実行時間を最適化することができる。すなわち、理論的には、最長のトポロジカルソートシーケンスにおけるタスクを実行する時間がプログラムの実行時間となり、これにより、実行すべきプログラムの実行が最短の時間で完了するのを確保できる。
【0119】
一実施例において、第1タスク並列処理システム600または第2タスク並列処理システム700のプロセッサコアが、前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を調整制御することは以下のステップを含む。
【0120】
ステップS3031において、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクに対して参照カウントを設定する。
【0121】
ステップS3032において、依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更する。
【0122】
ステップS3033において、前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクを実行するように制御する。
【0123】
図7は、タスク並列処理方法のステップのフローチャートを示す。当該方法は以下のステップを含む。
【0124】
ステップS701において、実行すべきプログラムにおける操作ノードに応じて、実行されるプログラムを分割して実行すべきタスクA3、B2、C2、D4、E5、F1を取得し、実行すべきタスクA3、B2、C2、D4、E5、F1間の依存関係に応じて、
図8に示すようなタスク有向非巡回グラフDAGを構築する。
【0125】
ステップS702において、
図8に示すタスク有向非巡回グラフDAGに応じて、実行すべきタスクA3、B2、C2、D4、E5、F1を前記ワークキュー1、ワークキュー2、ワークキュー3に割り当てる。割り当て結果は
図9に示すとおりである。
【0126】
ステップS703において、タスク有向非巡回グラフDAGに応じて、実行すべきタスクA3、B2、C2、D4、E5、F1に対して参照カウントを設定し、設定した参照カウントに応じてA3、B2、C2、D4、E5、F1の実行を制御する。
【0127】
本実施例において、参照カウントが0になると、ワークキューにおける実行すべきタスクの実行を開始するとする。例えば、実行すべきタスクA3の参照カウントが0である場合、実行すべきタスクA3はワークキューに入れられると直接実行可能である。実行すべきタスクE5は実行すべきタスクB2と実行すべきタスクC2の実行結果に依存する必要があるので、実行すべきタスクE5の参照カウントを2に設定する。実行すべきタスクB2の実行が完了すると、実行すべきタスクE5の参照カウントを1に調整し、実行すべきタスクC2の実行が完了すると、実行すべきタスクE5の参照カウントをさらに0に調整し、参照カウントが0になると、実行すべきタスクE5は実行を開始できる。実行すべきタスクF1の実行についても同様に制御し、最終、実行すべきプログラムの実行を完了する。
【0128】
図10は、タスク並列処理方法のステップのフローチャートを示す。当該方法は以下のステップを含む。
【0129】
ステップS6001において、下記の実行すべきプログラムにおけるデータノードを取得し、実行すべきプログラムを分割して実行すべきタスクを取得し、実行すべきタスク間の依存関係に応じて、
図11に示すようなタスク有向非巡回グラフDAGを構築する。
B=conv(A);
C=pool(B);
D=active(B);
E=add(C,D)。
ここで、A、B、C、D、Eはデータノードであり、conv、pool、active、addは操作ノードである。
【0130】
本実施例のタスク有向非巡回グラフDAGにおいて、データEの取得は、データCとデータDに対する処理結果に依存し、データCとデータDの取得は、データBに対する処理結果に依存し、データBの取得は、データAに対する処理結果に依存する。
【0131】
ステップS6002において、
図11に示すタスク有向非巡回グラフDAGに応じて、各実行すべきタスクをワークキュー1’とワークキュー2’に割り当てる。割り当て結果は
図12に示すとおりである。
【0132】
ステップS6003において、タスク有向非巡回グラフDAGに応じて、実行すべきタスクに対して参照カウントを設定し、設定した参照カウントに応じて各実行すべきタスクの実行を制御する。
【0133】
本実施例において、参照カウントの値が0になると、ワークキューにおける実行すべきタスクの実行を開始し、さもなければ開始しないとする。参照されるタスクが実行されると、タスクの参照カウントが1だけ減算され、0になって初めて当該タスクが実行可能になる。初期設定では、実行すべきタスクB=conv(A)の参照カウントを0、実行すべきタスクC=pool(B)の参照カウントを1、実行すべきタスクD=active(B)の参照カウントを1、実行すべきタスクE=add(C,D)の参照カウントを2とする。実行すべきタスクB=conv(A)の実行が完了すると、実行すべきタスクC=pool(B)と実行すべきタスクD=active(B)の参照カウントはいずれも1だけ減算されて0になり、このときに、実行すべきタスクC=pool(B)と実行すべきタスクD=active(B)の実行を開始する。同様に、タスクC=pool(B)とタスクD=active(B)の実行が完了すると、実行タスクE=add(C,D)の参照カウントが0になり、このときに、実行すべきタスクEの実行を開始し、実行すべきタスクEの実行完了は実行すべきプログラムの実行完了を意味する。
【0134】
同様の出願思想に基づいて、本願は、プロセッサによって実行されると上記実施例に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供している。
【0135】
同様の出願着想に基づいて、本願は、
図13に示すように、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフDAGを構築するDAGグラフ構築ユニット410と、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当てるタスク割り当てユニット420と、前記タスク有向非巡回グラフDAGにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するスケジューリング制御ユニット430とを含むタスク並列処理装置を提供している。
【0136】
一実施例において、DAGグラフ構築ユニット410は、プログラムにおける操作ノードおよび/またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得する。
【0137】
一実施例において、DAGグラフ構築ユニット410は、前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および/または前記モデルの入力データを分割して実行すべきタスクを取得する。
【0138】
一実施例において、DAGグラフ構築ユニット410は、前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび/または出力データを分割して実行すべきタスクを取得する。
【0139】
一実施例において、前記DAGグラフ構築ユニット410は、取得した実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフDAGにおける並列ノードと順序ノードを決定し、前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフDAGを構築する。
【0140】
一実施例において、タスク割り当てユニット420は、前記タスク有向非巡回グラフDAGをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てる。
【0141】
一実施例において、スケジューリング制御ユニット430は、前記タスク有向非巡回グラフDAGに応じて、各前記実行すべきタスクに対して参照カウントを設定し、依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御する。
【0142】
以上の実施形態についての説明によって、当業者は、ハードウェア、またはソフトウェアと必要な汎用ハードウェアプラットフォームとの組み合わせによって本願を実現できることを明確に理解できる。このような理解に基づいて、本願の技術的手段は、ソフトウェア製品の形式で具現化されてもよく、当該ソフトウェア製品は、不揮発性記憶媒体(CD-ROM、USBフラッシュディスク、モバイルハードディスクなどであってもよい)に記憶されてもよく、1台のコンピュータ機器(パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい)に本願の各実施形態の方法を実行させるための複数の命令を含む。
【0143】
上記処理システムの第1タスク並列処理システムにおけるプロセッサまたは第2タスク並列処理システムにおける第1プロセッサのプロセッサコアは、対応する命令リストに応じて異なる命令を並列処理することができ、当該コンピュータシステムの処理効率を向上させる。しかし、上記コンピュータシステムの処理システムにおいて、各プロセッサコアに対応する命令リストにおける命令の順序は合理的でない可能性があり、例えば、命令リストにおける命令を可能な限り並列させたものではない。このため、処理システムの処理効率を向上させることができず、または効率向上の効果が良くない。よって、どのように命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体を提供して命令リストにおける命令の順序を調整することで、命令リストにおける各命令間の配置をよりコンパクトにして、命令リストの実行時間を短縮するかは、解決すべき課題となっている。
【0144】
図14に示すように、一実施例のコンピュータシステム300は、マルチコアプロセッサコンピュータシステム(Multi-core processor Computing System)、ヘテロジニアスコンピュータシステム(Heterogeneous Computing System)などの、複数のプロセッサを含むマルチプロセッサコンピュータシステム(Multi-processor Computing System)であってもよい。選択可能な形態として、当該コンピュータシステムは具体的に命令リストスケジューリング装置310、複数の第1プロセッサ320およびメモリ330を含んでもよく、複数の第1プロセッサ320は同時に命令リストスケジューリング装置310に接続されてもよく、命令リストスケジューリング装置310は複数の第1プロセッサ320の命令リストの再スケジューリングに用いられてもよい。選択可能な形態として、当該命令リストスケジューリング装置310は第2プロセッサを含んでもよい。選択可能な形態として、当該第2プロセッサは取得ユニット、データ依存分析ユニット、評価ユニット、演算ユニットおよび制御ユニットなどを含んでもよく、当該取得ユニットはIO(Input入力/Output出力)インタフェースなどのハードウェアユニットであってもよく、演算ユニットおよび制御ユニットはいずれもハードウェアユニットである。
【0145】
複数の第1プロセッサ320は、当該コンピュータシステムの処理効率を向上させるために、命令リストに応じて異なる命令を並列処理することができる。選択可能な形態として、命令リストは1つまたは複数の命令を含んでもよく、各命令はいずれもリソースへの参照操作を1組含み、命令の読み取りまたは実行によって、当該命令の参照するリソースを把握することができる。すなわち、第1プロセッサなどは、当該命令を実行するときに、当該命令の参照するリソースを呼び出して特定の操作を実現することができる。例えば、当該命令は、ロード命令(Load)、計算命令(computing)またはストア命令(store)などであってもよく、もちろん、当該命令はニューラルネットワークのN層計算であってもよく、N>0であり、Nは整数であってもよいし、非整数であってもよい。
【0146】
さらに、当該命令リストにおける各命令は実行順序に従って並べられ、当該命令リストにおける各命令が参照するリソースは、仮想メモリオブジェクトであってもよいし、物理メモリオブジェクトであってもよい。当該仮想メモリオブジェクトは、メモリブロック、レジスタ、またはその他の、データを記憶可能な記憶装置のソフトウェアロジック上の仮想記憶空間であってもよい。本実施例における命令スケジューリング過程は、元の命令リストのセマンティクスを変更しないことを確保するという前提をもとに、命令リストにおける命令を再ソートする過程である。これにより、当該命令リストにおける各命令間の配置をよりコンパクトにすることができ、命令リストの実行時間を短縮してシステムの処理効率を向上させる。
【0147】
例えば、命令リストはN個の命令を含む。ここで、N≧1で、Nは正の整数であり、N個の命令は実行タイミングに従って1番目の命令、2番目の命令、・・・、N番目の命令と表記される。当該命令リストに対するスケジューリング過程は、上記N個の命令を再ソートする過程である。
【0148】
具体的には、命令リストをスケジューリングする場合、命令リストスケジューリング装置310は、まず、スケジューリング対象の命令リストにおける各命令のデータ依存関係を取得してよい。選択可能な形態において、当該データ依存関係として、RAW(Read After Write、リードアフターライト)/WAR(Write After Read、ライトアフターリード)/WAW(Write After Write、ライトアフターライト)を含んでもよい。選択可能な形態として、当該データ依存関係は、データ依存グラフDDG(Data Dependence Graph、データ依存グラフ)で記述することができる。さらに、命令リストスケジューリング装置310の第2プロセッサは、その取得ユニットによってスケジューリング対象の命令リストを取得し、そのデータ依存分析ユニットによってスケジューリング対象の命令リストにおける命令をデータ依存分析して上記命令間のデータ依存関係を取得してよい。具体的には、データ依存分析ユニットは、スケジューリング対象の命令リストにおける各命令に対してリソース走査追跡を行い、さらに各命令間のデータ依存関係を分析してよい。本実施例において、命令間のデータ依存とは、現在の命令の実行は他の命令の実行結果に依存する必要があるか否かをいう。簡単に例を挙げて説明すると、「書き込み命令Bが書き込んだデータを読み取る」命令Aが存在すれば、当該命令Aは命令Bの実行結果に依存する。その後、取得ユニットは、取得した各命令間のデータ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得してよい。
【0149】
その後、命令リストスケジューリング装置は評価ユニットによって、予め設定されたルールに従って、対応順位の全ての選択ノードからスケジューリング後の命令リストにおける各順位の命令を決定する。選択可能な形態として、第2プロセッサは、その評価ユニットによって現在順位に対応する選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、評価結果に基づいて現在順位に対応する命令を決定してもよい。各選択ノードは、当該選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを記録する。選択可能な形態として、評価ユニットは、各命令の優先度に従って現在順位に対応する選択ノードを評価する。選択可能な形態として、第2プロセッサは現在選択ノードの具体的な内容および/またはタイプに応じて命令の優先度を設定してもよい。
【0150】
選択可能な形態として、命令リストスケジューリング装置310は、命令スケジューリングを行うときに、スケジューリング対象の命令リストにおける命令に対応する第1プロセッサを調整してもよい。例えば、当該スケジューリング対象の命令に対応する第1プロセッサは、命令のタイプまたは当該スケジューリング対象の命令の具体的な内容に応じて決定されてもよい。
【0151】
図15は、本願の一実施例の命令リストスケジューリング方法のステップのフローチャートであり、当該命令リストスケジューリング方法は
図14に示すコンピュータシステムに適用できる。上記コンピュータシステムは、メモリ330および複数の第1プロセッサ320を含みうる。当該命令リストスケジューリング方法は、上記コンピュータシステムにおける複数の第1プロセッサに対応する命令リストにおける命令の再スケジューリングを実現して、コンピュータの処理効率を向上させるためのものである。具体的には、上記方法は以下のステップを含みうる。
【0152】
ステップS100において、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得する。
【0153】
具体的には、第2プロセッサは、その取得ユニットによってスケジューリング対象の命令リストのスケジューリング対象の命令セットを取得し、データ依存分析ユニットによって上記命令のデータ依存関係を取得することができる。本実施例におけるスケジューリング対象の命令セットは、スケジューリング対象の命令リストにおける複数のスケジューリング対象の命令からなる。選択可能な形態として、スケジューリング対象の命令セットは、スケジューリング対象の命令リストにおけるセマンティクス無しの命令(例えば同期命令など)を含まない。さらに、取得ユニットがスケジューリング対象の命令リストのスケジューリング対象の命令セットを取得するステップは、スケジューリング対象の命令リストを取得し、スケジューリング対象の命令リストにおけるセマンティクス無しの命令を削除して、スケジューリング対象の命令セットを取得することを含む。
【0154】
例えば、取得ユニットが取得したスケジューリング対象の命令セットは6個の命令{L1、L2、C1、C2、S1、S2}を含む。ここで、L1、C1、S1は順次実行される必要があり、L2、C2、S2は順次実行される必要があり、その他の命令はデータ依存関係を有しない。L1、L2、S1、S2はI/O命令であり、C1、C2は計算命令である。データ依存分析ユニットは、上記スケジューリング対象の命令に対してデータ依存分析を行い、スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得し、
図16に示すようなDDG(Data Dependence Graph、データ依存グラフ)を用いて上記データ依存関係を記述する。
【0155】
上記スケジューリング対象の命令リストにおける各スケジューリング対象の命令が参照するリソースは、仮想メモリオブジェクトであってもよいし、物理メモリオブジェクトであってもよい。当該仮想メモリオブジェクトは、メモリブロック、レジスタ、またはその他の、データを記憶可能な記憶装置のソフトウェアロジック上の仮想記憶空間であってもよい。
【0156】
ステップS200において、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得する。
【0157】
各選択ノードは、当該選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを記録する。選択可能な形態として、全ての選択ノードを取得する過程は、第2プロセッサがその取得ユニットによってまず第1回目の命令選択時の全ての第1選択ノードを取得し、具体的には、各第1選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを取得する過程であってもよい。これらのスケジューリング対象の命令セットにおける各命令にはデータ依存関係があることは明らかである。その後、第2プロセッサは、その取得ユニットによって各第1選択ノードのデータ依存関係に応じて、各第1選択ノードに関連付けられた全ての第2選択ノードを取得し、第2選択ノードは第2回目の命令選択に対応する。上記ステップを繰り返すことで第3選択ノード、・・・、第N選択ノードを取得し、N≧3で、Nは正の整数である。上記ステップにおいて取得した第1選択ノード、・・・、第N選択ノードの合計は、命令選択が行われる全ての選択ノードを構成する。
【0158】
例えば、取得したスケジューリング対象の命令リストにおけるスケジューリング対象の命令セットは合計6つの命令{L1、L2、C1、C2、S1、S2}を含み、図
16でこの6つの命令間のデータ依存関係を示す。
図16から分かるように、上記スケジューリング対象の命令セットにおける6つの命令のうちL1、L2は、他の命令の実行に依存しなくてもよいので、第1回目の命令選択を行う時に、L1、L2から選択する必要がある。すなわち、取得した第1選択ノードは、命令L1またはL2を選択した2つのケースに対応する。第1回目の命令選択時にL1を選択した場合、L1はソート済み命令となり、このとき、第1選択ノードは、ソート済み命令L1、および命令L1が削除されたスケジューリング対象の命令セット{L2、C1、C2、S1、S2}を記録する。同様に、第1回目の命令選択時にL2を選択した場合、もう1つの第1選択ノードが取得され、当該第1選択ノードは、ソート済み命令L2、および命令L2が削除されたスケジューリング対象の命令セット{L1、C1、C2、S1、S2}を記録する。上記過程を繰り返すことで第2回目の命令選択時の第2選択ノード、・・・、第6回目の命令選択時の第6選択ノードを取得することができる。
【0159】
本実施ステップにおいて、命令選択を行う都度に、その前の命令選択によって取得したスケジューリング対象の命令セット、例えば図
16に対応するスケジューリング対象の命令セットに依る必要がある。第1回目の命令選択時に選択した命令がL1である場合(1つの第1選択ノードに対応)、スケジューリング対象の命令セット{L2、C1、C2、S1、S2}を取得し、当該第1選択ノードのスケジューリング命令セットにおける命令L2、C1は他の命令の実行に依存しなくてもよく、この場合、第2回目の命令選択を行う時に、L2、C1から選択する必要がある(2つの第2選択ノードが存在することに対応)。第1回目の命令選択時に選択した命令がL2である場合(もう1つの第1選択ノードに対応)、スケジューリング対象の命令セット{L1、C1、C2、S1、S2}を取得し、当該第1選択ノードのスケジューリング命令セットにおける命令L1、C2は他の命令の実行に依存しなくてもよく、この場合、第2回目の命令選択を行う時に、L1、C2から選択する必要がある(同様に、2つの第2選択ノードが存在することに対応)。このように、本実施例において取得した全ての選択ノード同士は関連付けられ、このような各選択ノードの関連付けを
図17で示すことができる。
【0160】
ステップS300において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。選択可能な形態として、第2プロセッサは、その評価ユニットによって現在順位に対応する選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、評価結果に基づいて現在順位に対応する命令を決定してもよい。例えば、現在順位が第2命令である場合は
図17における第2選択ノードに対応し、予め設定されたルールに従って
図17における4つの第2選択ノードを評価し、評価結果に基づいて、スケジューリング後の命令リストにおける第2命令を取得する。選択可能な形態として、評価ユニットは、各命令の予め設定された優先度に従って現在順位に対応する選択ノードを評価し(例えば、L2の優先度が最も高く、C1がその次、・・・)、評価結果を取得する。選択可能な形態として、第2プロセッサは現在選択ノードの具体的な内容および/またはタイプに応じて各命令の優先度を設定してもよい。
【0161】
選択可能な形態として、評価ユニットは、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定してもよい。例えば、
図17における命令L1に対応する第1選択ノードは、対応する命令シーケンスの最短実行時間がt
1であり、命令L2に対応する第1選択ノードは、対応する命令シーケンスの最短実行時間がt
2であり、t
1>t
2であれば、L2をスケジューリング後の命令リストにおける第1命令として決定する。同様に、スケジューリング後の命令リストの第2命令、・・・、第6命令を決定する。
【0162】
本実施例で提供する命令リストスケジューリング方法において、スケジューリング対象の命令のデータ依存関係を分析し、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、さらに各順位に対応する選択ノードに対する評価結果に基づいてスケジューリング後の命令リストにおける各順位の命令を決定する。当該方法によれば、命令選択毎に、選択された命令が現在状態における最適結果であることを確保でき、これらの最適結果を用いて取得したスケジューリング後の命令リストにおいて、各命令間の配置がよりコンパクトになり、元の命令リストにおける命令シーケンスの実行時間の短縮化が図れる。
【0163】
1つの選択可能な実施形態として、評価ユニットが、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは以下のことを含む。
【0164】
ステップaにおいて、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得する。評価ユニットがアクセスする選択ノードは第1選択ノード、第2選択ノード、・・・、第N選択ノードであってもよい。
【0165】
ステップbにおいて、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間T0よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応する命令として決定する。ここで、初期実行時間はスケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0166】
本実施ステップにおいて、現在アクセスしている選択ノードに対応する最長実行時間とは、現在アクセスしているノードに対応する命令シーケンスの並べが最も不適切な場合の実行時間をいう。例えば、
図17において左側から1番目の第2選択ノードに対応する最長実行時間は、T
1=t
1+t
2+t
3+t
4+t
5である。ここで、t
1はソート済み命令L1-L2の実行時間、t
2は命令C1の実行時間、t
3は命令S1の実行時間、t
4は命令C2の実行時間、t
5は命令S2の実行時間である。これは、当該選択ノードに対応する未ソート命令C1、C2、S1、S2が全く並列せず、ソートが最も不適切な場合のケースである。T
1<T
0であれば、L1、L2をそれぞれスケジューリング後の命令リストにおける第1命令と第2命令とする。
【0167】
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短いので、本実施例で提供する命令リストスケジューリング方法によって得られる命令シーケンスの実行時間がスケジューリング対象の命令リストにおける命令シーケンスよりも大きいことはない。
【0168】
本実施例の評価ユニットは、現在順位の選択ノードのみに応じて命令リストにおける命令をスケジューリングするのではなく、予め設定されたルールに従ってアクセスされる選択ノードにアクセスするので、決定された現在順位の命令が後の命令選択に影響することを避けることができる。特に、大きい計算量を必要とする命令を含む命令リスト、選択可能な形態としてニューラルネットワーク演算命令を含む命令リストをスケジューリングするのに適する。例えば、命令リストがN個の命令を含み、当該N個の命令は1つの重みロード命令Aと1つのニューラルネットワーク畳み込み層計算命令Bを含む場合、従来の方法では、当該命令Aと命令Bとを並列させてシステムを最高の処理効率に到達させることができない可能性があるが、本実施例の命令リストスケジューリングによれば、スケジューリング後の命令リストおいて命令Aと命令Bとを並列させることを実現できる。
【0169】
一実施例において、上記方法は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新することをさらに含んでもよい。例えば、上記実施例において、T1<T0の場合、L1、L2をそれぞれスケジューリング後の命令リストにおける第1命令と第2命令とするとともに、T1を初期実行時間として更新する。
【0170】
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短い場合、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することで、取得したスケジューリング後の命令リストにおける命令シーケンスの実行時間がより短くなるのを確保できることは明らかである。上記した初期実行時間の更新は、命令のソートをさらに最適化し、システムの処理効率を向上させるためのものである。
【0171】
1つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。
【0172】
予め設定されたアクセス期間内に選択ノードにアクセスし、予め設定されたアクセス期間内における各選択ノードに対応する最長実行時間を取得する。本実施例において、上記実施例で提供する方法によってスケジューリング後の命令リストの各順位の命令を決定する必要がある。
【0173】
一般的に、命令リストにはスケジューリング対象の命令が複数存在し、これらのスケジューリング対象の命令に応じて取得される選択ノードは数多く、実際の操作では、全ての選択ノードをトラバースするのに十分な時間を確保するのは困難である。本願で提供する命令リストスケジューリング方法は、命令リストにおける命令を並べ替えることで命令リストの実行時間をさらに短縮することを目的としている。これにより、本願で提供する命令リストスケジューリング方法によって得られる新たな命令リストが実行時間を短縮できれば、本願の目的は達成できる。よって、本願で提供する命令リストスケジューリング方法を実際に適用して命令の再ソートを行う場合、一般的に、実際の必要に応じてアクセス期間を設定して命令のスケジューリング時間を制御する。
【0174】
1つの選択可能な実施形態として、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【0175】
本実施例において、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければスケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとすることは、上記実施例で提供する命令リストスケジューリング方法に対する最適化である。取得したスケジューリング後の命令リストにおける命令シーケンスが予め設定された期間内で取得される最適結果であることを確保できる。
【0176】
1つの選択可能な実施形態として、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。
【0177】
ステップcにおいて、評価ユニットは、現在アクセスしている選択ノードに対応する最短実行時間を取得する。
【0178】
ステップdにおいて、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間T0よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。例えば、命令L2に対応する第2選択ノードの最短実行時間はT2であり、T2は、当該選択ノードに対応する未ソート命令C1、C2、S1、S2が完全に並列され、ソートが最も合理的である場合に対応する。T2>T0であれば、当該第2選択ノードに関連付けられた第3選択ノード、およびこれら第3選択ノードに関連付けられた第4選択ノード、・・・、第6選択ノードへのアクセスを終了する。
【0179】
評価ユニットの選択ノードへのアクセス毎に時間がかかるため、本実施例の技術的手段は選択ノードへの無効なアクセスを排除し、命令リストのスケジューリング効率を向上させることができる。
【0180】
1つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、ランダム優先(例えば、MCTS:Monte Carlo Tree Search、モンテカルロ木探索)に従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0181】
1つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、幅優先(BFS:Breadth First Search、幅優先探索)のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。具体的には、本実施例における幅優先とは、現在アクセスしている選択ノードと同一順位の選択ノードを優先的に選択してアクセスすることをいう。例えば、現在アクセスしているのが第2選択ノードであれば、次にアクセスする選択ノードとして、他の第2選択ノードを優先的に選択する。
【0182】
1つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、深さ優先(BFS:Breadth First Search、深さ優先探索)のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。具体的には、本実施例における深さ優先とは、現在アクセスしている選択ノードに関連付けられた次の順位の選択ノードを優先的に選択してアクセスすることをいう。例えば、現在アクセスしているのが第2選択ノードであれば、次にアクセスする選択ノードとして、当該第2選択ノードに関連付けられた第3選択ノードを優先的に選択する。
【0183】
選択可能な形態として、評価ユニットは、ランダム優先+深さ優先のルール、または幅優先+深さ優先のルールに従って前記選択ノードを選択してアクセスしてもよい。具体的には、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。選択可能な形態として、上記の対応順位の予め設定された値は経験値または予備実験結果に基づいて決定される。
【0184】
アクセス期間を設定して命令リストスケジューリングを行う場合、命令リストスケジューリング装置の評価ユニットは全ての選択ノードをトラバースするのに十分な時間がない。この場合、単に深さ優先または幅優先のルールに従って前記選択ノードを選択してアクセスすると、最終的にアクセスする選択ノードの関与範囲が比較的に限定される(例えば、ある選択ノードに関連付けられた選択ノードのみにアクセスしたり、上位のいくつかの順位の選択ノードのみにアクセスしたりする)。また、単にランダム優先のルールに従って前記選択ノードを選択してアクセスすると、最終的にアクセスする選択ノードのランダム性が強すぎる。よって、上記ランダム優先+深さ優先のルール、または幅優先+深さ優先のルールに従って前記選択ノードを選択してアクセスすることが好ましい。
【0185】
上記フローチャートにおける各ステップは矢印の指示に従って示されているが、これらのステップは必ずしも矢印の指示順序に従って実行される必要がないことを理解すべきである。本明細書に明確な説明がない限り、これらのステップの実行順序について厳格な限定はなく、これらのステップは他の順序に従って実行されてもよい。そして、上記フローチャートにおける少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は必ずしも同一時刻に実行完了する必要がなく、異なる時刻に実行されてもよく、これらのサブステップまたは段階の実行順序は必ずしも行われる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交互に実行されてもよい。
【0186】
図18は、一実施例で提供する命令リストスケジューリング装置の構成模式図を示す。当該装置は、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、各命令間のデータ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得する取得ユニット510と、スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得するデータ依存分析ユニット520と、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する評価ユニット530とを含む。
【0187】
一実施例において、前記評価ユニット530は、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしている選択ノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0188】
一実施例において、前記命令スケジューリング装置は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する更新ユニットをさらに含む。
【0189】
一実施例において、前記評価ユニット530は、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0190】
一実施例において、前記評価ユニット530は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【0191】
一実施例において、前記評価ユニット530は、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0192】
一実施例において、前記評価ユニット530は、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0193】
一実施例において、前記評価ユニット530は、深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0194】
一実施例において、前記評価ユニット530は、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0195】
一実施例において、前記評価ユニット530は、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0196】
一実施例において、前記評価ユニット530は、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【0197】
一実施例において、前記評価ユニット530は、現在選択ノードの具体的な内容および/またはタイプに応じて各命令の優先度を設定する。
【0198】
一実施例において、前記評価ユニット530は、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【0199】
命令リストスケジューリング装置に関する具体的なものについて、上記した命令リストスケジューリング方法に関する記載を参照してよく、ここで詳細な説明は省略する。上記命令リストスケジューリング装置における各ユニットは、その全部または一部がソフトウェア、ハードウェアおよびそれらの組み合わせによって実現されてもよい。プロセッサが上記した各ユニットに対応する操作を呼び出して実行するように、上記各ユニットはハードウェアとしてコンピュータ機器におけるプロセッサに組み込まれるか、またはコンピュータ機器におけるプロセッサとは独立して設けられてもよいし、ソフトウェアとしてコンピュータ機器におけるメモリに記憶されてもよい。
【0200】
一実施例において、コンピュータ機器を提供しており、当該コンピュータ機器は端末であってもよく、その内部構成図は
図19に示すものであってもよい。当該コンピュータ機器は、システムバスを介して接続されたプロセッサ、メモリ、ネットワークインタフェース、ディスプレイ及び入力装置を含む。当該コンピュータ機器のプロセッサは、計算および制御能力を提供するものである。当該コンピュータ機器のメモリは、不揮発性記憶媒体、内部メモリを含む。当該不揮発性記憶媒体は、オペレーティングシステムとコンピュータプログラムを記憶している。当該内部メモリは、不揮発性記憶媒体におけるオペレーティングシステムおよびコンピュータプログラムの実行のために環境を提供する。当該コンピュータ機器のネットワークインタフェースは、ネットワークを介して外部の端末と接続され通信するためのものである。当該コンピュータプログラムは、プロセッサによって実行されると上記実施例に記載の検証励起の生成方法および/またはチップ検証方法を実現する。当該コンピュータ機器のディスプレイは、液晶ディスプレイまたは電子インクディスプレイであってもよく、当該コンピュータ機器の入力装置は、ディスプレイに被覆されたタッチ層であってもよいし、コンピュータ機器の筐体に設定されたボタン、トラックボールまたはタッチパッドであってもよいし、外付けのキーボード、タッチパッドまたはマウスなどであってもよい。
【0201】
当業者であれば、
図19に示した構造は、本願の技術的手段に関連する一部の構造のブロック図に過ぎず、本願の技術的手段が適用されるコンピュータ機器を限定するものではなく、具体的なコンピュータ機器は、図に示したものよりも多いまたは少ない構成要素を含んだり、いくつかの構成要素を組み合わせてなったものであったり、異なる構成要素レイアウトを備えたものであったりすることができることを理解できる。
【0202】
一実施例において、メモリと、プロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含むコンピュータ機器を提供しており、プロセッサがコンピュータプログラムを実行すると、以下のステップが実現される。すなわち、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得し、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。
【0203】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0204】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する。
【0205】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令に基づいて命令シーケンスをランダムに生成し、前記ランダムに生成された命令シーケンスを用いて前記スケジューリング対象の命令リストの命令シーケンスを更新する。
【0206】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0207】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0208】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0209】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0210】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0211】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0212】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【0213】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在選択ノードの具体的な内容および/またはタイプに応じて各命令の優先度を設定する。
【0214】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【0215】
一実施例において、プログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供しており、コンピュータプログラムがプロセッサによって実行されると、以下のステップが実現される。すなわち、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得し、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。
【0216】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0217】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する。
【0218】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0219】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【0220】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0221】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0222】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0223】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【0224】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【0225】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【0226】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在選択ノードの具体的な内容および/またはタイプに応じて各命令の優先度を設定する。
【0227】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【0228】
一般的に、プロセッサがニューラルネットワークモデルを実行する場合、例えばCaffeネットワークモデルを実行する場合、その都度、当該ニューラルネットワークモデルにおける各計算ノードをそれぞれコンパイルし解析した後、当該ニューラルネットワークモデルの構成方式に従って一定の方式で各計算ノードを実行する必要がある。ここで、ニューラルネットワークモデルおよびネットワーク構成は、トレーニング済みまたは未トレーニングの人工ニューラルネットワークモデルデータであってもよい。上記のニューラルネットワークに対する処理方法はプロセッサの処理速度に影響を与えてしまい、処理効率が低下する。
【0229】
本願の実施例において、オフラインモデルの生成方法をさらに提供している。当該オフラインモデルの生成方法は、クラウドサーバまたはニューラルネットワーク専用プロセッサ上で実行され、取得したオリジナルネットワークのオフラインモデルをメモリ130に記憶することができる。当該クラウドサーバまたはニューラルネットワーク専用プロセッサは、ニューラルネットワークなどのヘビー級のデータを実行可能なプロセッサであり、上記コンピュータ機器に含まれなくてもよい。具体的に、上記方法は、
図26に示すように
、以下のステップを含む。
【0230】
S010において、オリジナルネットワークのモデルデータセットおよびモデル構成パラメータを取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの取得ユニットによって、オリジナルネットワークのモデルデータセットおよびモデル構成パラメータを取得し、当該オリジナルネットワークのモデルデータセットおよびモデル構成パラメータによって当該オリジナルネットワークのネットワーク構成図を取得することができる。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータなどのデータを含み、
図28に示すニューラルネットワークにおけるW1~W6が計算ノードのモデルパラメータを示すものである。モデル構成パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係および各計算ノードの計算属性を含む。ここで、計算ノードの接続関係は、計算ノードの間にデータ転送があるか否かを示すものであり、例えば、複数の計算ノードの間にデータストリームの転送があれば、複数の計算ノードの間に接続関係があることを意味する。さらに、計算ノードの接続関係は、入力関係と出力関係などを含んでもよい。
図28に示すように、計算ノードF1の出力は計算ノードF4とF5の入力となり、この場合、計算ノードF1と計算ノードF4との間に接続関係があり、計算ノードF1と計算ノードF4との間に接続関係があることを意味する。また、計算ノードF1と計算ノードF2の間にはデータ転送が無く、この場合、計算ノードF1と計算ノードF2との間に接続関係がないことを意味する。
【0231】
各計算ノードの計算属性は、かかる計算ノードの計算タイプおよび計算パラメータを含んでもよい。ここで、計算ノードの計算タイプとは、当該計算ノードがどのような計算を実現するためのものであるかをいう。例えば、計算ノードの計算タイプとして、加算演算、減算演算および畳み込み演算などを含んでもよく、これに対応して、当該計算ノードは、加算演算を実現するための計算ノード、減算演算を実現するための計算ノードまたは畳み込み演算を実現するための計算ノードなどであってもよい。計算ノードの計算パラメータは、当該計算ノードに対応する計算タイプを実現するために必要なパラメータであってもよい。例えば、計算ノードの計算タイプは加算演算を実現するための計算ノードであってもよく、これに対応して、当該計算ノードの計算パラメータは、加算演算における加数であってもよく、当該加算演算における被加数は入力データとして取得ユニットによって取得されてもよく、または、当該加算演算における被加数は、当該計算ノードの直前の計算ノードの出力データなどであってもよい。
【0232】
選択可能な形態として、当該オリジナルネットワークは、TensorFlow、MXNet、CaffeとPyTorchなどのディープラーニングシステムをもとに、CPU、GPUまたはDSPなどの汎用プロセッサに対して構築された人工ニューラルネットワークであってもよいし、IPUなどのインテリジェンスプロセッサに対して構築された人工ニューラルネットワークであってもよい。例えば、当該オリジナルネットワークがCaffeをもとに構築されたニューラルネットワークである場合、当該Caffeネットワークのモデルデータセット(caffemodel)およびモデル構成パラメータ(prototxt)を取得してよい。ここで、モデルデータセット(caffemodel)は、当該Caffeネットワークのモデルパラメータなどのデータを含み、モデル構成パラメータ(prototxt)は当該Caffeネットワークの各計算ノードの計算属性および複数の計算ノード間の接続関係などを含む。
【0233】
S101において、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいてオリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて当該オリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサの取得ユニットは、さらに当該オリジナルネットワークの入力データを取得することができ、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークの入力データ、ネットワークモデルデータセット、モデル構成パラメータに基づいてオリジナルネットワークを実行し、当該オリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。さらには、上記した当該オリジナルネットワークを実行して各計算ノードの命令を取得する過程は、実質上、コンパイルを行う過程であり、当該コンパイルを行う過程は、クラウドサーバまたはニューラルネットワーク専用プロセッサまたは仮想デバイスによって実現されてもよい。すなわち、クラウドサーバまたはニューラルネットワーク専用プロセッサまたは仮想デバイスは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいてオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間で仮想化されたプロセッサ実行空間をいう。
【0234】
本実施例においてオリジナルネットワークを実行するとは、クラウドサーバまたはニューラルネットワーク専用プロセッサが人工ニューラルネットワークモデルデータを用いてある機械学習アルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することをいうことは明らかである。
【0235】
S103において、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令に基づいて、オリジナルネットワークに対応するオフラインモデルを生成し、前記オリジナルネットワークに対応するオフラインモデルを不揮発性メモリに記憶する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの制御ユニットは、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令に基づいて、当該オリジナルネットワークに対応するオフラインモデルを生成することができる。例えば、当該クラウドサーバまたはニューラルネットワーク専用プロセッサの制御ユニットは、オフラインモデルの生成および記憶を実現するために、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を不揮発性の第2メモリに記憶することができる。ここで、オリジナルネットワークの各計算ノードに対して、当該計算ノードのモデルパラメータと命令とが一対一に対応して記憶される。これにより、当該オリジナルネットワークを再実行すると、当該オリジナルネットワークに対応するオフラインモデルを不揮発性メモリから直接取得し、対応するオフラインモデルに基づいてオリジナルネットワークを実行することができ、当該オリジナルネットワークの各計算ノードをオンラインでコンパイルして命令を取得することが不要となり、システムの実行速度および効率が向上する。
【0236】
本実施例において、当該オリジナルネットワークに対応するオフラインモデルを直接実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することをいうことは明らかである。
【0237】
選択可能な形態として、
図27に示すように、上記ステップS102は以下のステップを含んでもよい。
【0238】
S104において、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークにおける各計算ノードの接続関係に基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得することができる。例えば、
図28に示すように、計算ノードF4の入力データは計算ノードF1の出力データおよび計算ノードF2の出力データであり、計算ノードF6の入力データは計算ノードF4の出力データおよび計算ノードF5の出力データである。よって、
図28に示すニューラルネットワークにおける各計算ノードの実行順序は、F1-F2-F3-F4-F5-F6またはF1-F3-F2-F5-F4-F6などであってもよい。もちろん、計算ノードF1、F2、F3は並列実行されてもよく、計算ノードF4、F5も並列実行されてもよい。ここでは単に例示的なものであり、その実行順序を具体的に限定しない。
【0239】
S105において、オリジナルネットワークにおける各計算ノードの実行順序に従ってオリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令をそれぞれ取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークにおける各計算ノードの実行順序に従って当該オリジナルネットワークを実行してオリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。すなわち、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデルデータセットなどのデータをコンパイルして各計算ノードに対応する命令を取得することができ、各計算ノードに対応する命令から、当該計算ノードがどのような計算機能を実現するためのものかを把握でき、すなわち、当該計算ノードの計算タイプおよび計算パラメータなどの計算属性を取得することができる。
【0240】
さらに、
図27に示すように、上記ステップS103は以下のステップをさらに含む。
【0241】
S106において、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、オリジナルネットワークのメモリ割り当て方法を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、オリジナルネットワークのメモリ割り当て方法を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得し、オリジナルネットワークにおける各計算ノードの実行順序に基づいて現在ネットワークのメモリ割り当て方法を決定することができる。例えば、各計算ノードの実行順序に従って各計算ノードの実行過程における関連データを1つのスタック内に格納する。ここで、メモリ割り当て方法とは、オリジナルネットワークにおける各計算ノードに関連するデータ(入力データ、出力データ、モデルパラメータおよび中間結果データなどを含む)の、メモリ空間(例えば、第1メモリ)における記憶位置を決定することをいう。例えば、データテーブルを用いて各計算ノードに関連するデータ(入力データ、出力データ、モデルパラメータおよび中間結果データなど)とメモリ空間とのマッピング関係を記憶することができる。
【0242】
S107において、オリジナルネットワークのメモリ割り当て方法に基づいて、オリジナルネットワークの実行過程における関連データを第1メモリに記憶する。ここで、オリジナルネットワークの実行過程における関連データは、オリジナルネットワークの各計算ノードに対応するモデルパラメータ、命令、入力データ、中間計算結果および出力データなどを含む。例えば、
図28に示すように、X1、X2は、当該ニューラルネットワークの入力データを示し、Yは当該ニューラルネットワークの出力データを示し、クラウドサーバまたはニューラルネットワーク専用プロセッサは、当該ニューラルネットワークの出力データを、ロボットまたは異なるデジタルインタフェースを制御する制御コマンドに変換することができる。W1~W6は、計算ノードF1、F2、F3に対応するモデルパラメータを示すものであり、計算ノードF1~F5の出力データを中間計算結果とすることができる。クラウドサーバまたはニューラルネットワーク専用プロセッサは、決定されたメモリ割り当て方法に基づいて、オリジナルネットワークの実行過程における関連データを第1メモリ、例えば内部メモリまたはキャッシュなどの揮発性メモリに記憶することができ、具体的な記憶方法について、
図29における左半分の記憶空間を参照してよい。
【0243】
S108において、第1メモリからオリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を取得し、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を第2メモリに記憶し、オフラインモデルを生成する。ここで、第2メモリは、外部メモリなどの不揮発性メモリであってもよい。当該オフラインモデルの生成過程について、
図29を参照してよい。
図29に示すように、
図29における右半分の記憶空間に記憶されたのは、オリジナルネットワークに対応するオフラインモデルである。
【0244】
図28と
図29に示すように、以下、図面を参照しながら上記オフラインモデルの生成過程について説明する。
【0245】
まず、クラウドサーバまたはニューラルネットワーク専用プロセッサは、当該オリジナルネットワークのモデルデータセット、モデル構成パラメータおよび入力データを取得することができ、当該オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、当該オリジナルネットワークのネットワーク構成図を取得することができる。
図9に示すとおりである。
【0246】
次に、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークの各計算ノードの接続関係を取得し、各計算ノードの接続関係に基づいて、オリジナルネットワークにおける各計算ノードの実行順序、およびオリジナルネットワークの実行過程におけるメモリ割り当て方法を取得することができ、オリジナルネットワークの実行過程における関連データの記憶位置を取得することができる。
図29における左半分の記憶空間が示すように、オリジナルネットワークの実行過程における関連データは、各計算ノードの実行順序に従って1つのスタックに記憶されてもよい。
【0247】
最後に、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を不揮発性の第2メモリに記憶し、オフラインモデルを生成することができる。当該オフラインモデルの記憶方法について、
図29における右半分の記憶空間を参照してよい。そして、当該オフラインモデルは、当該オリジナルネットワークの実行に必要なモデルパラメータおよび命令などのデータのみを含み、オリジナルネットワークの実行過程における入力データ、出力データまたは中間計算結果などを記憶する必要がないので、第2メモリにおける記憶空間の消費を低減することができる。
【0248】
従来技術において、人工ニューラルネットワークは、ヘビー級のデータとして、数多くのノード(または、ニューロンという)を相互に接続させてなるものである。従来のコンピュータ機器はニューラルネットワークを直接読み取り、当該ニューラルネットワークの構成方式に従って一定の方式で当該ニューラルネットワークの各計算ノードを順次実行し、当該ニューラルネットワークの計算結果を取得する。すなわち、従来の計算装置では、直接にヘビー級のニューラルネットワークに対してデータ処理を行うため、コンピュータ機器のデータ処理速度および効率に影響する。そして、人工ニューラルネットワークデータの特徴によれば、ライト級のデータしか処理できない実行環境では、当該人工ニューラルネットワークデータを実行できなくなるため、ニューラルネットワークの適用範囲が制限されることになる。
【0249】
図20に示すように、本願の一実施例はコンピュータ機器を提供しており、当該コンピュータ機器100は、ハードウェアシステムとソフトウェアシステムとを含んでよい。ここで、ハードウェアシステムは、第1プロセッサ110、第2プロセッサ120およびメモリ130を含んでよい。
図21に示すように、当該第1プロセッサ110は、計算と制御能力を提供するためのもので、第1取得ユニット111、第1演算ユニット113および第1制御ユニット112などを含んでもよい。当該第1取得ユニット111は、IO(Input入力/Output出力)インタフェースなどのハードウェアユニットであってもよく、第1演算ユニット113および第1制御ユニット112はいずれもハードウェアユニットである。例えば、第1演算ユニット113および第1制御ユニット112は、デジタル回路またはアナログ回路などであってもよい。上記ハードウェア回路の物理的な実現は、物理的なデバイスによる実現を含むが、これに限定されない。物理的なデバイスとしては、トランジスタおよびメモリスタなどを含むが、これらに限定されない。当該第2プロセッサ120も、計算と制御能力を提供するためのもので、第2取得ユニット、第2演算ユニットおよび第2制御ユニットなどを含んでよい。当該第2取得ユニットは、IO(Input入力/Output出力)インタフェースなどのハードウェアユニットであってもよく、第2演算ユニットおよび第2制御ユニットはいずれもハードウェアユニットである。第2プロセッサ120の各構成の接続関係および構成は第1プロセッサにおける各構成の接続関係および構成と同一であってもよく、具体的には上記した説明を参照してよく、ここで詳細な説明は省略する。選択可能な形態として、第1プロセッサまたは第2プロセッサは、CPU(Central Processing Unit、中央処理装置)、GPU(Graphics Processing Unit、グラフィックスプロセッサ)、DSP(Digital Signal Processing、デジタル信号処理)などの汎用プロセッサまたはIPU(Intelligence Processing Unit、インテリジェンスプロセッサ)などのニューラルネットワーク専用プロセッサであってもよい。
【0250】
図20に示すように、メモリ130は、複数のオリジナルネットワークに対応するオフラインモデル、入力データおよび当該コンピュータ機器のソフトウェアシステムを記憶するものである。当該コンピュータ機器のソフトウェアシステムは、オペレーティングシステム、コンピュータプログラム、アプリケーションソフトウェアおよびランタイムシステム131などの、第1プロセッサ110または第2プロセッサ120上で実行可能なソフトウェアを含んでもよい。さらに、当該メモリ130は、各オリジナルネットワークの出力データ(すなわち、各オリジナルネットワークの計算結果)を記憶してもよい。さらには、当該メモリ130は、オフラインモデルを記憶する第1記憶ユニットと、入力データを記憶する第2記憶ユニットと、出力データを記憶する第3記憶ユニットと、ランタイムシステムを記憶する第4記憶ユニットとを含んでもよい。または、メモリ130の数は2つ以上であってもよく、例えば、メモリ130の数は2つで、それぞれ、オリジナルネットワークに対応するオフラインモデルと入力データを記憶する第1メモリと、ランタイムシステムを記憶する第2メモリとして表記してもよい。選択可能な形態として、当該メモリ130は、不揮発性メモリであってもよく、例えば、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)またはフラッシュメモリであってもよい。
【0251】
ランタイムとは、あるプログラムを実行している(またはプログラムが実行されている)状態をいい、ランタイムは、ある期間内にいずれのプログラムが実行されていることを示すことは明らかである。ランタイムシステムとは、プロセスレベルの仮想マシンをいい、プログラムの実行環境を示すものである。具体的には、ランタイムシステムは、コンピュータソフトウェアによって構築されたソフトウェアシステムであってもよく、当該ソフトウェアシステムは、特定のデータ処理機能を実現するために、CPU(Central Processing Unit、中央処理装置)、GPU(Graphics Processing Unit、グラフィックスプロセッサ)、DSP(Digital Signal Processing、デジタル信号処理)またはIPU(Intelligence Processing Unit、インテリジェンスプロセッサ)などのプロセッサ上で実行可能である。本願の実施例におけるランタイムシステムはコンピュータ機器のオペレーティングシステムとは異なり、当該コンピュータ機器のソフトウェアシステムは上記のランタイムシステムとオペレーティングシステムとを同時に含んでもよい。
【0252】
図22に示すように、本願の実施例におけるランタイムシステム131は、第1プロセッサ110上で実行可能であり、当該ランタイムシステム131は、データ処理装置1310、機器管理装置1314およびタスク実行装置1315を含んでもよく、データ処理装置1310および機器管理装置1314はいずれもタスク実行装置1315に接続されてもよい。具体的には、第1プロセッサ110が当該ランタイムシステム131を実行すると、ランタイムシステム131は、ニューラルネットワークなどのヘビー級のデータを実行するように第2プロセッサ120を制御することができる。すなわち、ランタイムシステム131は、ニューラルネットワークのオフラインモデルおよび入力データに基づいて計算を行いニューラルネットワークの出力データを取得するように第2プロセッサ120を制御することができる。ここで、データ処理装置1310は、メモリ130から現在オリジナルネットワークに対応するオフラインモデルおよびその入力データを取得するもので、現在オリジナルネットワークのオフラインモデルと現在ネットワークの入力データとが対応して設定されている。選択可能な形態として、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報を含む。現在オリジナルネットワークのオフラインモデルは、現在オリジナルネットワークにおける各計算ノードの中間計算結果、入力データおよび出力データなどの関連データを含まないので、当該現在オリジナルネットワークのオフラインモデルのデータ量は現在オリジナルネットワークのデータ量よりも遥かに小さい。すなわち、当該現在オリジナルネットワークのオフラインモデルはライト級のデータであると考えられる。
【0253】
具体的には、各計算ノードに対応する命令は、当該計算ノードがどのような計算機能を実行するためのものであるかを示し、具体的には当該オリジナルネットワークにおける各計算ノードの計算属性を含んでもよい。当該現在オリジナルネットワークのノードインタフェースデータは、現在オリジナルネットワークの各計算ノードの接続関係を示すものである。具体的には、現在オリジナルネットワークのノードインタフェースデータは、各計算ノードの入力データのソースと出力データのソースを含んでもよい。例えば、
図28に示すように、X1、X2は現在オリジナルネットワークに対応する入力データであり、Yは現在オリジナルネットワークに対応する出力データであり、W1~W6はそれぞれ現在オリジナルネットワークにおける計算ノードF1~F3に対応するモデルパラメータである。現在オリジナルネットワークのノードインタフェースデータは、計算ノードF1、F2、F3を初期計算ノードとして含み、計算ノードF1、F2、F3の入力はそれぞれ予め設定された入力データであり、計算ノードF1の出力データは計算ノードF4と計算ノードF5の入力データであるなどとしてよい。このように、当該オリジナルネットワークを再実行する場合、当該現在オリジナルネットワークのオフラインモデルと入力データを取得さえすれば、当該現在オリジナルネットワークに対応するオフラインモデルを実行することで当該現在オリジナルネットワークの実行過程を実現することができる。
【0254】
機器管理装置1314は、第2プロセッサ120の駆動装置として、第2プロセッサ120を起動または停止するように制御することに用いられてもよい。ここで、第2プロセッサ120は、停止されると何らタスクも実行せず、起動されると計算または制御などのタスクを実行することができる。本願の実施例において、第2プロセッサ120は、現在オリジナルネットワークのオフラインモデルを実行するためのニューラルネットワークアクセラレーターであってもよい。タスク実行装置1315は、データ処理装置1310により取得した現在オリジナルネットワークのオフラインモデルおよび入力データを実行して現在オリジナルネットワークの出力データ(すなわち、ニューラルネットワークの計算結果)を取得するように第2プロセッサ120を制御することに用いられる。オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することをいうことは明らかである。
【0255】
具体的には、当該コンピュータ機器100上でニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、第1プロセッサ110上で上記ランタイムシステム131を実行して、当該ランタイムシステム131によって、当該ニューラルネットワークなどのデータを実行するように第2プロセッサ120を制御することができる。すなわち、当該コンピュータ機器100上でニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、まず、データ処理装置1310によってメモリ130から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することができる。現在オリジナルネットワークに対応するオフラインモデルおよび入力データのロードが完了した後、機器管理装置1314は第2プロセッサ120を起動するように制御することができる。その後、タスク実行装置1315は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第2プロセッサ120を制御することができ、これにより、当該現在オリジナルネットワークの実行過程を実現し、当該現在オリジナルネットワークの計算結果を取得する。
【0256】
本願の実施例において、現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、コンピュータ機器はニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【0257】
選択可能な形態として、
図22に示すように、データ処理装置1310は、オフラインモデルロードユニット1311と入力データロードユニット1312を含む。ここで、オフラインモデルロードユニット1311は、メモリ130から現在オリジナルネットワークに対応するオフラインモデルを取得し、取得した現在オリジナルネットワークのオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得することに用いられる。さらに、オフラインモデルロードユニット1311が現在オリジナルネットワークのオフラインモデルを解析する過程は、第2プロセッサ120が当該現在オリジナルネットワークのオフラインモデルを実行できるように、現在オリジナルネットワークに対応するオフラインモデルに対してデータ前処理(例えば、データフォーマット変換、正規化などの前処理)を行う過程をさらに含んでもよい。
【0258】
入力データロードユニット1312は、メモリ130から入力データを取得することに用いられ、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。
図28に示すように、X1、X2は、オリジナルネットワークの初期計算ノードの入力データである。さらに、当該入力データは、アプリケーションソフトウェアによって取得され、メモリ130に記憶されるてもよい。当該アプリケーションソフトウェアは、第1プロセッサまたは第2プロセッサ上で実行されてもよい。例えば、ユーザはアプリケーションソフトウェアのインタラクティブインタフェースを介して現在オリジナルネットワークの入力データを設定することができ、ランタイムシステムは、当該取得した現在オリジナルネットワークの入力データをメモリ130に記憶することができる。
【0259】
本願の実施例において、オフラインモデルロードユニット1311は、オフラインモデルのロードの進行状況をリアルタイムに取得することに用いられてもよく、入力データロードユニット1312は、入力データのロードの進行状況をリアルタイムに取得することに用いられてもよい。例えば、オフラインモデルロードユニット1311が現在オリジナルネットワークに対応するオフラインモデルのロードを完了し(例えば、オフラインモデルのデータロード割合が100%である)、かつ入力データロードユニット1312が現在オリジナルネットワークに対応する入力データのロードを完了した後(例えば、入力データのロード割合が100%である)、オフラインモデルロードユニット1311と入力データロードユニット1312は、機器管理装置1314にデータロード完了信号を送信することができ、機器管理装置1314は、受信したデータロード完了信号に基づいて第2プロセッサ120を起動するように制御することができる。第2プロセッサ120が起動されると、機器管理装置1314は、タスク実行装置1315に起動完了信号を送信することができ、タスク実行装置1315は、受信した起動完了信号に基づいて、現在オリジナルネットワークのオフラインモデルを実行するように第2プロセッサ120を制御することができる。
【0260】
他の実施例において、コンピュータ機器のデータ処理速度および効率をさらに向上させるために、第2プロセッサを事前に起動するように制御してもよい。そして、オフラインモデルのデータ量が入力データのデータ量よりも大きいので、オフラインモデルの必要なロード時間は入力データのロード時間よりも大きい可能性がある。このため、オフラインモデルロードユニット1311のデータロード割合が第1プリセット割合(例えば、80%)以上であれば、機器管理装置1314にロード完了信号を送信して第2プロセッサ120を事前に起動するようにすることができる。さらに、オフラインモデルロードユニット1311のデータロード割合が第1プリセット割合(例えば、80%)以上であり、かつ入力データロードユニット1312のデータロード割合が第2プリセット割合(例えば、80%)以上であれば、オフラインモデルロードユニット1311と入力データロードユニット1312は、機器管理装置1314にデータロード完了信号を送信することができ、機器管理装置1314は、受信したデータロード完了信号に基づいて第2プロセッサ120を起動するように制御することができる。
【0261】
選択可能な形態として、
図23に示すように、データ処理装置1310は、第2プロセッサ120が入力データを実行できるように、入力データに対して前処理(例えば、データフォーマット変換、正規化などの前処理)を行う入力データ前処理ユニット1313を含んでもよい。この場合、入力データロードユニット1312は、入力データのロードを完了した後、入力データ前処理ユニット1313に入力データロード完了信号を送信することができ、入力データ前処理ユニット1313は、受信した入力データロード完了信号に基づいて、現在オリジナルネットワークに対応する入力データに対して正規化、フォーマット変換などのデータ前処理操作を行うことができる。機器管理装置1314は、受信した、オフラインモデルロードユニット1311からのオフラインモデルロード完了信号、および入力データ前処理モデル1314からの前処理完了信号に基づいて、第2プロセッサ120を起動するように制御することができる。
【0262】
また、入力データ前処理ユニット1313は、第2プロセッサ120が取得した出力データをメモリ130に記憶することにも用いられる。具体的には、第2プロセッサ120は、現在オリジナルネットワークのオフラインモデルおよび入力データの実行過程を完了した後、現在オリジナルネットワークの出力データ(すなわち、計算結果)を入力データ前処理ユニット1313に転送することができ、入力データ前処理ユニット1313は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理を行い、その後、当該現在オリジナルネットワークの出力データをメモリ130に記憶することができる。
【0263】
一実施例において、当該コンピュータ機器100のソフトウェアシステムは、アプリケーションソフトウェアとオペレーティングシステム(例えば、アンドロイドオペレーティングシステム、マイクロソフトオペレーティングシステム、Linuxオペレーティングシステムなど)をさらに含み、アプリケーションソフトウェアは、オペレーティングシステムまたは上記のランタイムシステム上で実行可能であり、オペレーティングシステムおよび上記のランタイムシステムは様々なアプリケーションソフトウェアのために実行環境を提供する。具体的には、オペレーティングシステムとアプリケーションソフトウェアはメモリ130に記憶されてもよく、当該オペレーティングシステムは、第1プロセッサ110または第2プロセッサ120上で実行可能である。
【0264】
当該ランタイムシステム131の各装置は、アプリケーションソフトウェアが呼び出し可能なセキュアAPI(Application Programming Interface、アプリケーションソフトウェアインタフェース)を提供可能である。これにより、アプリケーションソフトウェアは、ランタイムシステム131によって現在オリジナルネットワークのオフラインモデルおよび入力データを取得し、第2プロセッサ120が上記現在オリジナルネットワークのオフラインモデルを実行して現在オリジナルネットワークの出力データを取得するように制御することができる。具体的には、データ処理装置1310は、オフラインモデルAPIおよび入力データAPIを提供可能で、さらに、オフラインモデルロードユニット1311は、オフラインモデルAPIを提供可能で、入力データロードユニット1312は、入力データAPIを提供可能である。ニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、アプリケーションソフトウェアは当該データ処理装置1310のオフラインモデルAPIを呼び出し可能で、これにより、オフラインモデルロードユニット1311はメモリ130から当該現在オリジナルネットワークに対応するオフラインモデルを取得することができる。現在オリジナルネットワークに対応するオフラインモデルのロードが完了した後、アプリケーションソフトウェアは、データ処理装置1310の入力データAPIを呼び出し可能で、これにより、入力データロードユニット1312はメモリ130から現在オリジナルネットワークに対応する入力データを取得することができる。さらに、当該現在オリジナルネットワークの入力データは、アプリケーションソフトウェアによって取得されてもよい。例えば、ユーザは、アプリケーションソフトウェアのインタラクティブ表示インタフェースを介して現在オリジナルネットワークに対応する入力データを手動で設定することができる。もちろん、他の実施例において、アプリケーションソフトウェアは、上記のオフラインモデルAPIと入力データAPIを同時に呼び出してもよく、これにより、現在オリジナルネットワークのオフラインモデルと入力データを同時にロードすることができる。ここでは、単に例示的なものであり、具体的な実行順序を限定しない。
【0265】
さらに、データ処理装置1310の入力データ前処理ユニット1313は、データ前処理APIを提供可能である。現在オリジナルネットワークの入力データのロードが完了した後、アプリケーションソフトウェアは、データ前処理APIを呼び出し可能で、これにより、データ前処理ユニット1313は、第2プロセッサが上記の現在オリジナルネットワークの入力データを実行できるように、現在オリジナルネットワークの入力データに対して前処理を行うことができる。
【0266】
機器管理装置1314は第2プロセッサ駆動APIを提供可能で、タスク実行装置1315は第2プロセッサ実行APIを提供可能である。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該タスク実行装置1315が提供する第2プロセッサ駆動APIを呼び出すことにより、第2プロセッサ120を起動することができる。第2プロセッサ120が起動されると、アプリケーションソフトウェアは、タスク実行装置1315が提供する第2プロセッサ実行APIを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行して現在オリジナルネットワークの出力データを取得するように第2プロセッサ120を制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、アプリケーションソフトウェアは、当該第2プロセッサ駆動APIを呼び出すことにより、第2プロセッサ120を停止することができる。
【0267】
また、現在オリジナルネットワークのオフラインモデルの実行過程が完了した後、アプリケーションソフトウェアは、さらにデータ前処理APIを呼び出すことができ、これにより、入力データ前処理ユニット1313は、現在オリジナルネットワークの出力データに対してデータ前処理を行い、現在オリジナルネットワークの出力データをメモリ130に記憶することができる。
【0268】
さらには、第2プロセッサ120の数は複数であってもよく、タスク実行装置1315はさらにタスク割り当てAPIを提供することができ、タスク実行装置1315は、複数の第2プロセッサ120間のタスクの割り当ておよびスケジューリングを実現するように、複数の第2プロセッサ120を制御することに用いられてもよい。具体的には、アプリケーションソフトウェアは、タスク実行装置1315が提供するタスク割り当てAPIを呼び出すことにより、複数の第2プロセッサ120の中から現在タスクを実行するターゲット第2プロセッサを選択することができる。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該ターゲット第2プロセッサに対応する第2プロセッサ駆動APIを呼び出すことにより、当該ターゲット第2プロセッサを起動することができる。ターゲット第2プロセッサが起動されると、アプリケーションソフトウェアは、タスク実行装置1315が提供する当該ターゲット第2プロセッサに対応する第2プロセッサ実行APIを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行するように当該ターゲット第2プロセッサを制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、当該ターゲット第2プロセッサに対応する第2プロセッサ駆動APIを呼び出すことにより、当該ターゲット第2プロセッサを停止することができる。
【0269】
選択可能な形態として、他の実施例において、当該第2プロセッサ120はマルチコアプロセッサであってもよく、すなわち、当該第2プロセッサ120は複数の処理ユニットを含んでもよい。タスク実行装置1315は、複数の第2プロセッサ120の複数の処理ユニット間のタスクの割り当ておよびスケジューリングを実現するように、複数の第2プロセッサ120の複数の処理ユニットを制御することに用いられてもよい。具体的には、アプリケーションソフトウェアは、タスク実行装置1315が提供するタスク割り当てAPIを呼び出すことにより、第2プロセッサ120における複数の処理ユニットの中から現在タスクを実行するターゲット処理ユニットを選択することができる。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該ターゲット処理ユニットに対応する第2プロセッサ駆動APIを呼び出すことにより、当該ターゲット処理ユニットを起動することができる。ターゲット処理ユニットが起動されると、アプリケーションソフトウェアは、当該ターゲット処理ユニットに対応する第2プロセッサ実行APIを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行するように当該ターゲット処理ユニットを制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、ターゲット処理ユニットに対応する第2プロセッサ駆動APIを呼び出すことにより、当該ターゲット処理ユニットを停止することができる。
【0270】
更なる改良として、ランタイムシステム131は、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであってよい。例えば、ランタイムシステム131は、TEE(Trusted Execution Environment、トラステッド実行環境)に基づいて構築されたランタイムシステムであってもよい。具体的には、TEEは、オペレーティングシステムなどの非セキュアソフトウェアシステムから隔離されたランタイムシステムを構築することができ、これにより、ソフトウェア的な隔離を実現し、オリジナルネットワークのオフラインモデルおよび入力データと出力データのセキュリティを確保することができる。上記のアプリケーションソフトウェアは、TAなどのセキュアなアプリケーションであってもよく、当該TAなどのセキュアなアプリケーションソフトウェアは、TEEに基づいて構築されたランタイムシステムで実行することができる。
【0271】
メモリ130の記憶空間は、セキュア記憶空間と非セキュア記憶空間とに分けられる。具体的には、現在オリジナルネットワークのオフラインモデルおよび入力データを記憶する記憶空間はセキュア記憶空間であり、オペレーティングシステムおよびアプリケーションソフトウェアなどのソフトウェアシステムを記憶する記憶空間は非セキュア記憶空間であり、ランタイムシステムはメモリのセキュア記憶空間または非セキュア記憶空間に記憶されてもよい。もちろん、当該メモリ130はセキュアメモリであってもよい。これにより、上記のランタイムシステム、TAおよびセキュア記憶空間は、完全なTEE実行環境を構成している。
【0272】
他の実施例において、メモリ130の数は2つ以上であってもよく、1つのメモリ130は、現在オリジナルネットワークのオフラインモデルおよび入力データを記憶するセキュア記憶空間として用いられてもよい。もう1つのメモリ130は、オペレーティングシステムおよびアプリケーションソフトウェアなどのソフトウェアシステムを記憶する非セキュア記憶空間として用いられてもよい。さらには、オペレーティングシステムおよびアプリケーションソフトウェアなどは、セキュア記憶空間に記憶されてもよい。
【0273】
本願の実施例におけるセキュア記憶空間とは、トラステッド(Trusted)記憶空間をいい、当該セキュア記憶空間は、暗号化された記憶空間であってもよいことは明らかである。具体的には、対称暗号化アルゴリズム、非対称暗号化アルゴリズムまたはランダム暗号化アルゴリズム(例えば、ランダム暗号生成器によって暗号を取得する)を用いてもよい。もちろん、セキュアな記憶空間は、指紋などで暗号化された記憶空間であってもよい。上記セキュアなランタイムシステム131およびアプリケーションソフトウェアは、暗号化アルゴリズムによって取得されてもよい。または、セキュア記憶空間は、信頼性測定方法によって取得されたセキュア記憶空間であってもよく、上記セキュアなランタイムシステム131およびアプリケーションソフトウェアは、信頼性測定方法によって取得されてもよい。
【0274】
もちろん、当該第1プロセッサ110は、セキュアチップ、例えばTPM(Trusted Platform Module、トラステッドプラットフォームモジュール)、TCM(Trusted Cryptography Module、トラステッド暗号モジュール)またはTPCM(Trusted Platform Control Module、トラステッドプラットフォーム制御モジュール)などであってもよい。さらに、第2プロセッサ120は、TPM、TCMまたはTPCMなどのセキュアチップであってもよい。
【0275】
選択可能な形態として、本願の実施例のコンピュータ機器は、プロセッサとメモリのみを含んでもよい。ここで、当該プロセッサは、マルチコアプロセッサである。具体的には、当該プロセッサは、複数の処理ユニットを含んでもよい。例えば、当該プロセッサは、第1処理ユニットと第2処理ユニットを含む。ここで、ランタイムシステムは、第1処理ユニット上で実行されてもよい。さらに、上記ランタイムシステムは、データ処理装置、機器管理装置、タスク実行装置などの構造を含んでもよい。ここで、データ処理装置は、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することに用いられ、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含む。機器管理装置は、第2処理ユニットを起動または停止するように制御することに用いられ、タスク実行装置は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第2処理ユニットを制御する。さらには、当該ランタイムシステムの他の構造は上記実施例におけるランタイムシステムのアーキテクチャと同一であり、具体的には上記した説明を参照してよく、ここで詳細な説明は省略する。
【0276】
図24に示すように、本願の実施例は、
図20に示すコンピュータ機器に用いられ、オフラインモデルによってニューラルネットワークなどのヘビー級のデータに対する処理過程を実現し、コンピュータ機器のデータ処理速度および効率を向上させることができるデータ処理方法をさらに提供している。具体的には、上記方法は以下のステップを含む。
【0277】
S110において、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するようにデータ処理装置を制御し、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータおよび命令を含む。具体的には、第1プロセッサ110が当該ランタイムシステム131を実行すると、ランタイムシステム131のデータ処理装置1310によってメモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを読み取ることができる。さらに、データ処理装置1310のオフラインモデルロードユニット1311によってメモリ130から現在オリジナルネットワークに対応するオフラインモデルを取得することができる。入力データロードユニット1312によってメモリ130から入力データを取得し、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。
【0278】
S120において、機器管理装置によってコンピュータ機器の第2プロセッサを起動するように制御する。具体的には、ランタイムシステム131の機器管理装置1314によって第2プロセッサを起動または停止するように制御することができる。すなわち、オフラインモデルロードユニット1311が現在オリジナルネットワークに対応するオフラインモデルのロードを完了し、入力データロードユニット1312が現在オリジナルネットワークに対応する入力データのロードを完了した後、オフラインモデルロードユニット1311と入力データロードユニット1312は、機器管理装置1314にデータロード完了信号を送信することができ、機器管理装置1314は、受信したデータロード完了信号に基づいて第2プロセッサ120を起動するように制御することができる。
【0279】
S130において、タスク実行装置によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第2プロセッサを制御する。具体的には、ランタイムシステム131のタスク実行装置1315によって、現在オリジナルネットワークのオフラインモデルを実行するように第2プロセッサ120を制御することができる。オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することをいうことは明らかである。
【0280】
S140において、データ処理装置によって現在オリジナルネットワークの出力データをメモリに記憶する。具体的には、データ処理装置1310によって現在オリジナルネットワークの出力データをメモリ130に記憶することができる。さらに、当該データ処理装置1310は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ130に記憶することができる。選択可能な形態として、データ処理装置1310の入力データ前処理ユニット1313は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ130に記憶することができる。
【0281】
選択可能な形態として、現在オリジナルネットワークに対応するオフラインモデルおよび入力データのロードが完了した後、第2プロセッサが取得したオフラインモデルおよび入力データを実行できるように、取得したオフラインモデルおよび入力データに対して前処理を行ってもよい。具体的には、上記ステップS110は以下のステップをさらに含んでもよい。
【0282】
S111において、取得した現在オリジナルネットワークに対応するオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得する。さらに、具体的には、オフラインモデルロードユニット1311によって、取得した現在オリジナルネットワークのオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得することができる。さらには、オフラインモデルロードユニット1311によって、解析されたデータに対してデータフォーマット変換、正規化などの前処理操作を行ってもよい。
【0283】
S112において、取得した現在オリジナルネットワークの入力データに対して前処理を行い、例えば入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。具体的には、第2プロセッサ120が入力データを実行できるように、入力データ前処理ユニット1313によって、入力データに対して前処理(例えば、データフォーマット変換、正規化などの前処理)を行うことができる。
【0284】
さらに、上記方法は、以下のステップをさらに含んでもよい。
【0285】
現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得する。具体的には、オフラインモデルロードユニット1311は、現在ネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得することができ、当該オフラインモデルのロードの進行状況は、データ割合または残り時間などで示されてもよい。
【0286】
現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況が第1プリセット割合以上であれば、前記のコンピュータ機器の第2プロセッサを起動するように制御するステップを実行する。具体的には、当該第1プリセット割合が80%~100%であってもよい。例えば、オフラインモデルロードユニット1311が現在オリジナルネットワークに対応するオフラインモデルのロードを完了した(例えば、オフラインモデルのデータロード割合が100%である)場合、オフラインモデルロードユニット1311は、機器管理装置1314にデータロード完了信号を送信することができ、機器管理装置1314は、受信したデータロード完了信号に基づいて第2プロセッサ120を起動するように制御することができる。または、オフラインモデルロードユニット1311のデータロード割合が第1プリセット割合(例えば、80%)以上であれば、機器管理装置1314にロード完了信号を送信して第2プロセッサ120を事前に起動することができる。
【0287】
オフラインモデルのデータ量が入力データのデータ量よりも大きいので、オフラインモデルの必要なロード時間は入力データのロード時間よりも大きい可能性がある。このため、オフラインモデルのロードの進行状況のみに基づいて第2プロセッサ120を起動するか否かを判断することができる。さらに、入力データロードユニット1312は、入力データのロードの進行状況をリアルタイムに取得してもよく、オフラインモデルロードユニット1311のデータロード割合が第1プリセット割合(例えば、80%)以上であり、かつ入力データロードユニット1312のデータロード割合が第2プリセット割合(例えば、80%)以上であれば、オフラインモデルロードユニット1311と入力データロードユニット1312は、機器管理装置1314にデータロード完了信号を送信することができ、機器管理装置1314は、受信したデータロード完了信号に基づいて第2プロセッサ120を起動するように制御することができる。
【0288】
また、
図25に示すように、本願の実施例は、
図20に示すコンピュータ機器に用いられ、オフラインモデルによってニューラルネットワークなどのヘビー級のデータに対する処理過程を実現し、コンピュータ機器のデータ処理効率および速度を向上させることができるデータ処理方法をさらに提供している。具体的には、上記方法は以下のステップを含む。
【0289】
S210において、オフラインモデルAPIを呼び出し、現在オリジナルネットワークに対応するオフラインモデルを取得する。具体的には、アプリケーションソフトウェアは、オフラインモデルロードユニット1311が提供するオフラインモデルAPIを呼び出し可能で、これにより、オフラインモデルロードユニット1311は、メモリ130から現在オリジナルネットワークに対応するオフラインモデルを読み取ることができる。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。ここで、オフラインモデルの生成過程について、上記した説明を参照してよい。
【0290】
S220において、入力データAPIを呼び出し、現在オリジナルネットワークの入力データを取得する。具体的には、アプリケーションソフトウェアは、入力データロードユニット1312が提供する入力データAPIを呼び出し可能で、入力データロードユニット1312によってメモリ130から現在オリジナルネットワークの入力データを取得する。さらに、アプリケーションソフトウェアは、入力データ前処理ユニット1313が提供するデータ前処理APIを呼び出すこともでき、第2プロセッサ120が上記の現在オリジナルネットワークの入力データを実行できるように、入力データ前処理ユニット1313によって、入力データロードユニット1312が取得した入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。
【0291】
S230において、第2プロセッサ駆動APIを呼び出し、コンピュータ機器における第2プロセッサを起動するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット1314が提供する第2プロセッサ駆動APIを呼び出し可能で、機器管理ユニット1314によって第2プロセッサ120を起動するように制御する。
【0292】
S240において、第2プロセッサ実行APIを呼び出し、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第2プロセッサを制御する。具体的には、アプリケーションソフトウェアは、タスク実行装置1315が提供する第2プロセッサ実行APIを呼び出し可能で、タスク実行装置1315によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第2プロセッサ120を制御する。
【0293】
S250において、第2プロセッサ駆動APIを呼び出し、第2プロセッサを停止するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット1314が提供する第2プロセッサ駆動APIを呼び出し可能で、機器管理ユニット1314によって第2プロセッサ120を停止するように制御する。
【0294】
当業者であれば、上記実施例の方法における全部または一部のフローは、コンピュータプログラムによって関連するハードウェアに命令を与えることで実現でき、コンピュータプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されてもよく、当該コンピュータプログラムは実行されると上記各方法の実施例のフローを含んでもよいことを理解できる。
【0295】
また、本願の実施例は、1つまたは複数のプロセッサによって実行されると上記の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。当該コンピュータ記憶媒体は、不揮発性および/または揮発性メモリを含んでもよい。不揮発性メモリは、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)またはフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部キャッシュメモリを含んでもよい。例示的なものとして、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、シンクリンク(Synchlink)DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、およびラムバスダイナミックRAM(RDRAM)などの様々な形態のものを利用してもよく、これについて限定しない。
【0296】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、データ処理装置によって、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、当該コンピュータ機器の第2プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行して、現在オリジナルネットワークの出力データを取得することができる。各オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータのみを含むので、オリジナルネットワークのオフラインモデルのデータ量は当該オリジナルネットワークのデータ量よりも遥かに小さい。これにより、コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを実行することで、コンピュータ機器によるヘビー級のデータのニューラルネットワークデータに対する処理過程を実現することができる。また、当該コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを直接実行することにより、現在オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【0297】
本願の他の実施例において、
図30に示すように、コンピュータ機器200は、第1プロセッサ210、第2プロセッサ220、第1メモリ230および第2メモリ240を含んでもよい。第1メモリ230には、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと、第1プロセッサ230上で実行可能なランタイムシステムとが記憶され、第2メモリ240には、第1プロセッサまたは第2プロセッサ上で実行可能なオペレーティングシステムが記憶されている。具体的には、上記第1メモリ230と第2メモリ240は、物理的に互いに独立した2つのメモリであってもよい。または、第1メモリ230と第2メモリ240は全体として集積され、第1メモリ230と第2メモリ240は、論理的に互いに独立した2つの記憶空間であってもよい。
【0298】
さらに、第1プロセッサ210の数は2つ以上であってもよい。例えば、第1プロセッサ210の数は2つであり、1つの第1プロセッサ210は上記セキュアなランタイムシステム231を実行することに用いられ、もう1つの第1プロセッサ210はオペレーティングシステムを実行することに用いられる。または、上記の第1プロセッサ210は、マルチコアプロセッサであってもよく、2つ以上の処理ユニットを含んでもよく、1つの処理ユニットは上記のランタイムシステム231を実行することに用いられ、もう1つの処理ユニットは上記のオペレーティングシステムを実行することに用いられる。このように、ハードウェア的な隔離によりコンピュータ機器をセキュア実行環境と非セキュア実行環境に区画することができる。さらには、上記第1プロセッサ210は、TCM、TPMまたはTPCMなどのセキュアチップによって実現されてもよい。
【0299】
上記のランタイムシステムは、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであり、例えば、ランタイムシステム231は、TEE(Trusted Execution Environment、トラステッド実行環境)に基づいて構築されたランタイムシステムであってもよい。具体的には、TEEは、オペレーティングシステムなどの非セキュアソフトウェアシステムから隔離されたランタイムシステムを構築することができ、これにより、ソフトウェア的な隔離を実現し、オリジナルネットワークのオフラインモデルおよび入力データと出力データのセキュリティを確保することができる。さらに、当該セキュアなランタイムシステム231は、暗号化アルゴリズムによって取得されてもよいし、信頼性測定によって取得されてもよい。第1メモリ230はセキュア記憶媒体である。ランタイムシステム231は、第1プロセッサ210上で実行されると、第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、第2プロセッサ220が現在オリジナルネットワークに対応するオフラインモデルを実行するように制御することができる。
【0300】
本願の実施例におけるセキュアとは、トラステッド(Trusted)をいい、予め設定された暗号化アルゴリズムによって実現されてもよく、例えば対称暗号化アルゴリズム、非対称暗号化アルゴリズムまたはランダム暗号化アルゴリズム(例えば、ランダム暗号生成器によって暗号を取得する)を用いてもよい。もちろん、指紋などで暗号化されてもよい。または、セキュアは、信頼性測定方法よって取得されてもよい。
【0301】
選択可能な形態として、当該ランタイムシステム231は、アプリケーションソフトウェアが呼び出し可能なセキュアAPI(Application Programming Interface、アプリケーションソフトウェアインタフェース)を提供可能で、APIは主に、鍵管理、暗号アルゴリズムおよびセキュア記憶などを含む。上記ランタイムシステム231は、データ処理装置、機器管理装置、タスク実行装置を含んでもよく、その構造は上記のランタイムシステム131の構造と類似し、
図22と
図23を参照してよい。ここで、データ処理装置は、第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するためのオフラインモデルAPIおよび入力データAPIを提供可能で、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含む。機器管理装置は、第2プロセッサ220を起動または停止するように制御するための第2プロセッサ駆動APIを提供可能である。タスク実行装置は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第2プロセッサ220を制御するための第2プロセッサ実行APIを提供可能である。
【0302】
さらに、データ処理装置は、オフラインモデルロードユニットと入力データロードユニットを含む。オフラインモデルロードユニットは、第1メモリ230から各現在オリジナルネットワークに対応するオフラインモデルを取得し、現在オリジナルネットワークに対応するオフラインモデルを解析するためのオフラインモデルAPIを提供可能である。入力データロードユニットは、第1メモリ230から現在オリジナルネットワークに対応する入力データを取得するための入力データAPIを提供可能である。
【0303】
さらには、データ処理装置は、入力データ前処理ユニットをさらに含み、入力データ前処理ユニットは、第2プロセッサ220が現在オリジナルネットワークの入力データを実行できるように、入力データロードユニットが取得した入力データに対して前処理を行い、第2プロセッサ220が取得した出力データを第1メモリ230に記憶するためのデータ前処理APIを提供可能である。
【0304】
選択可能な形態として、第2プロセッサ220の数は複数であるか、または第2プロセッサ220は複数の処理ユニットを含み、タスク実行装置は、複数の第2プロセッサ220、または第2プロセッサ220の複数の処理ユニットを制御するためのタスク割り当てAPIを提供することもできる。
【0305】
さらに、コンピュータ機器は、ランタイムシステム231上で実行可能なセキュアなアプリケーションソフトウェア(TA:Trusted Application)をさらに含み、アプリケーションソフトウェアは、オフラインモデルAPIおよび入力データAPI、第2プロセッサ駆動API、第2プロセッサ実行APIを呼び出し可能である。当該セキュアなアプリケーションソフトウェアは、暗号化アルゴリズムによって実現されてもよいし、信頼性測定方法によって実現されてもよい。
【0306】
本願の実施例におけるデータ処理装置、機器管理装置およびタスク実行装置の動作原理は上記実施例における各装置の動作原理と基本的に一致していることは明らかであり、詳細は上記した説明を参照してよい。
【0307】
図31に示すように、本願の実施例は、
図30に示すコンピュータ機器に用いられるデータ処理方法をさらに提供しており、方法は以下のステップを含む。
【0308】
S310において、第1メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得する。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。具体的には、第1プロセッサが上記セキュアなランタイムシステム231を実行すると、セキュアなランタイムシステム231は、セキュアな第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することができる。選択可能な形態として、第1プロセッサ210が当該ランタイムシステム231を実行すると、ランタイムシステム231のデータ処理装置によって第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを読み取ることができる。さらに、データ処理装置のオフラインモデルロードユニットによって第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルを取得することができる。入力データロードユニットによって第1メモリ230から入力データを取得し、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。
【0309】
S320において、コンピュータ機器の第2プロセッサを起動するように制御する。具体的には、上記セキュアなランタイムシステム231は、コンピュータ機器の第2プロセッサ220を起動するように制御することができる。選択可能な形態として、ランタイムシステム231の機器管理装置は、第2プロセッサを起動または停止するように制御することができる。オフラインモデルロードユニットが現在オリジナルネットワークに対応するオフラインモデルのロードを完了した後、オフラインモデルロードユニットは、機器管理装置にデータロード完了信号を送信することができ、機器管理装置は、受信したデータロード完了信号に基づいて第2プロセッサ220を起動するように制御することができる。
【0310】
S330において、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第2プロセッサを制御する。具体的には、上記ランタイムシステム231は、オフラインモデルおよびその対応する入力データを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第2プロセッサ220を制御することができる。選択可能な形態として、ランタイムシステム231のタスク実行装置によって、現在オリジナルネットワークのオフラインモデルを実行するように第2プロセッサ220を制御してもよい。
【0311】
オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することをいうことは明らかである。
【0312】
S340において、現在オリジナルネットワークの出力データを第1メモリに記憶する。すなわち、ランタイムシステム231は、現在オリジナルネットワークの出力データをセキュアな第1メモリ230に記憶することができる。選択可能な形態として、ランタイムシステム231のデータ処理装置によって現在オリジナルネットワークの出力データを第1メモリ230に記憶してもよい。さらに、当該データ処理装置は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第1メモリ230に記憶することができる。さらには、データ処理装置の入力データ前処理ユニットは、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第1メモリ230に記憶することができる。
【0313】
図32に示すように、本願の実施例は、
図30に示すコンピュータ機器に用いられるデータ処理方法をさらに提供しており、上記方法は以下のステップを含んでもよい。
【0314】
S410において、オフラインモデルAPIを呼び出し、第1メモリから現在オリジナルネットワークに対応するオフラインモデルを取得する。具体的には、セキュアなアプリケーションソフトウェア(TA)は、オフラインモデルAPIを呼び出し可能で、これにより、オフラインモデルロードユニットは、第1メモリ230から現在オリジナルネットワークに対応するオフラインモデルを読み取ることができる。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。
【0315】
S420において、入力データAPIを呼び出し、現在オリジナルネットワークの入力データを取得する。具体的には、セキュアなアプリケーションソフトウェアは、入力データAPIを呼び出し可能で、入力データロードユニットによって第1メモリ230から現在オリジナルネットワークの入力データを取得する。
【0316】
S430において、第2プロセッサ駆動APIを呼び出し、コンピュータ機器における第2プロセッサを起動するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第2プロセッサ駆動APIを呼び出し可能で、機器管理装置によって第2プロセッサ220を起動するように制御する。
【0317】
S440において、第2プロセッサ実行APIを呼び出し、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第2プロセッサを制御する。具体的には、セキュアなアプリケーションソフトウェアは、第2プロセッサ実行APIを呼び出し可能で、タスク実行装置によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第2プロセッサ220を制御する。
【0318】
S450において、第2プロセッサ駆動APIを呼び出し、第2プロセッサを停止するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第2プロセッサ駆動APIを呼び出し可能で、機器管理装置によって第2プロセッサ220を停止するように制御する。
【0319】
さらに、上記方法は以下のステップをさらに含む。
【0320】
データ前処理APIを呼び出し、現在オリジナルネットワークの出力データを第1メモリに記憶する。具体的には、セキュアなアプリケーションソフトウェアは、ランタイムシステム231が提供するデータ前処理APIを呼び出し可能で、これにより、データ処理装置の入力データ前処理ユニットによって、出力データに対してデータフォーマット変換、正規化などの前処理操作を行い、現在オリジナルネットワークの出力データを第1メモリ230に記憶する。
【0321】
さらには、入力データAPIを呼び出し、現在オリジナルネットワークの入力データを取得するステップの後に、上記方法は以下のステップをさらに含む。
【0322】
データ前処理APIを呼び出し、第2プロセッサが入力データを実行できるように、取得した現在オリジナルネットワークの入力データに対して前処理を行う。具体的には、セキュアなアプリケーションソフトウェアは、入力データ前処理ユニットが提供するデータ前処理APIを呼び出すこともでき、第2プロセッサ220が上記の現在オリジナルネットワークの入力データを実行できるように、入力データ前処理ユニットによって、入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。
【0323】
選択可能な形態として、本願の実施例において、オフラインモデルの生成過程をさらに含んでもよく、当該オフラインモデルの生成過程は、クラウドサーバまたはニューラルネットワーク専用プロセッサ上で実行され、取得したオリジナルネットワークのオフラインモデルを第1メモリ230に記憶することができる。当該クラウドサーバまたはニューラルネットワーク専用プロセッサは、ニューラルネットワークなどのヘビー級のデータを実行可能なプロセッサであり、上記コンピュータ機器に含まれなくてもよい。オフラインモデルの生成過程について、上記した説明を参照してよく、詳細な説明は省略する。
【0324】
当業者であれば、上記実施例の方法における全部または一部のフローは、コンピュータプログラムによって関連するハードウェアに命令を与えることで実現でき、コンピュータプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されてもよく、当該コンピュータプログラムは実行されると上記各方法の実施例のフローを含んでもよいことを理解できる。
【0325】
また、本願の実施例は、1つまたは複数のプロセッサによって実行されると上記の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。当該コンピュータ記憶媒体は、不揮発性および/または揮発性メモリを含んでもよい。不揮発性メモリは、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)またはフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部キャッシュメモリを含んでもよい。例示的なものとして、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、シンクリンク(Synchlink)DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、およびラムバスダイナミックRAM(RDRAM)などの様々な形態のものを利用してもよく、これについて限定しない。
【0326】
本願の実施例において、現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、TEEなどのトラステッド実行環境に基づいて構築されたセキュアなランタイムシステムによるニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【0327】
以上の実施例には本願のいくつかの実施形態のみが示されており、それらについて具体的かつ詳細に説明したが、本願の権利範囲を限定するものとして理解すべきではない。なお、当業者にとって、種々の変更や改良が本願の趣旨を逸脱しない限り可能であり、いずれも本願の権利範囲内に含まれることは自明である。よって、本願の権利範囲は添付された請求項を基準とすべきである。