(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-23
(45)【発行日】2023-10-31
(54)【発明の名称】深層学習の大規模なモデル・サポート
(51)【国際特許分類】
G06N 3/08 20230101AFI20231024BHJP
G06N 20/00 20190101ALI20231024BHJP
【FI】
G06N3/08
G06N20/00
(21)【出願番号】P 2021521954
(86)(22)【出願日】2019-10-30
(86)【国際出願番号】 IB2019059294
(87)【国際公開番号】W WO2020095155
(87)【国際公開日】2020-05-14
【審査請求日】2022-04-18
(32)【優先日】2018-11-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チョ、ミンシク
(72)【発明者】
【氏名】フィンクラー、ウルリッヒ、アルフォンス
(72)【発明者】
【氏名】ゾロトフ、ウラジミル
(72)【発明者】
【氏名】クン、デイヴィッド
【審査官】今城 朋彬
(56)【参考文献】
【文献】国際公開第2018/142764(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 30/02
(57)【特許請求の範囲】
【請求項1】
システムであって、
ディープ・ニューラル・ネットワークを訓練するためのデータを処理する画像処理装置と、
前記ディープ・ニューラル・ネットワークを訓練するための前記データの一部を記憶す
る中央処理装置メモリと
を備え、前記画像処理装置が、一連の層の第1の層から、前記ディープ・ニューラル・ネットワークに一連の出力を提供する前記一連の層の最後の層に、前記ディープ・ニューラル・ネットワークの前記一連の層を
通る前記ディープ・ニューラル・ネットワークのフォワード・パス・プロセス中
であって、前記ディープ・ニューラル・ネットワークの訓練中に、前記ディープ・ニューラル・ネットワークの前記一連の層
における前記第1の層とは異なる1つの層のための入力データを前記中央処理装置メモリに提供する、
システム。
【請求項2】
前記中央処理装置メモリに関連した中央処理装置が、前記一連の層の前記最後の層から、前記一連の層の前記第1の層に、前記ディープ・ニューラル・ネットワークの前記一連の層を
通る前記ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、前記入力データを前記画像処理装置に提供する、請求項1に記載のシステム。
【請求項3】
前記画像処理装置が、前記フォワード・パス・プロセス中に、前記ディープ・ニューラル・ネットワークの前記層からの出力データを前記画像処理装置に関連したメモリに記憶する、請求項1または2に記載のシステム。
【請求項4】
前記画像処理装置が、前記ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、前記ディープ・ニューラル・ネットワークの層からの勾配データを前記中央処理装置メモリに提供する、請求項1~3のいずれか1項に記載のシステム。
【請求項5】
前記画像処理装置が、前記ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、前記ディープ・ニューラル・ネットワークの層のためのパラメータ・データを前記中央処理装置メモリから受け取る、請求項1~4のいずれか1項に記載のシステム。
【請求項6】
前記画像処理装置が、圧縮方式を介して前記中央処理装置メモリに前記入力データを提供する、請求項1~5のいずれか1項に記載のシステム。
【請求項7】
前記画像処理装置が、半精度浮動小数点形式を介して前記中央処理装置メモリに前記入力データを提供する、請求項1~6のいずれか1項に記載のシステム。
【請求項8】
前記画像処理装置が、シリアル・マルチ・レーン通信リンクを介して前記中央処理装置メモリに連結される、請求項1~7のいずれか1項に記載のシステム。
【請求項9】
前記中央処理装置メモリが、前記画像処理装置の処理性能の改善を容易にするための前記データの前記一部を記憶する、請求項1~8のいずれか1項に記載のシステム。
【請求項10】
コンピュータ実装方法であって、
一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータを画像処理装置によって処理することと、
一連の層の第1の層から、前記ディープ・ニューラル・ネットワークに一連の出力を提供する前記一連の層の最後の層に、前記一連の層を
通る前記ディープ・ニューラル・ネットワークのフォワード・パス・プロセス中
であって、前記ディープ・ニューラル・ネットワークの訓練中に、前記一連の層
における前記第1の層とは異なる1つの層のための入力データを中央処理装置メモリに前記画像処理装置によって提供することと
を含む、コンピュータ実装方法。
【請求項11】
コンピュータ実装方法であって、
一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータの少なくとも一部を中央処理装置によって受け取ることと、
前記中央処理装置に関連したメモリに前記データの少なくとも前記一部を前記中央処理装置によって記憶することと、
前記ディープ・ニューラル・ネットワークに一連の出力を提供する前記一連の層の最後の層から、前記一連の層の第1の層に、前記ディープ・ニューラル・ネットワークの前記一連の層を
通る前記ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、前記ディープ・ニューラル・ネットワークに関連した画像処理装置に前記データの少なくとも前記一部を前記中央処理装置によって提供することと
を含む、コンピュータ実装方法。
【請求項12】
深層学習のモデル・サポートのための画像処理装置が実行するコンピュータ・プログラムであって、
前記画像処理装置に
一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータを処理することと、
一連の層の第1の層から、前記ディープ・ニューラル・ネットワークに一連の出力を提供する前記一連の層の最後の層に、前記一連の層を
通る前記ディープ・ニューラル・ネットワークのフォワード・パス・プロセス中
であって、前記ディープ・ニューラル・ネットワークの訓練中に、前記一連の層
における前記第1の層とは異なる1つの層のための入力データを中央処理装置メモリに提供することと
を行わせる、コンピュータ・プログラム。
【請求項13】
深層学習のモデル・サポートのための中央処理装置が実行するコンピュータ・プログラムであって、
前記中央処理装置が、
一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータの少なくとも一部を受け取ることと、
前記中央処理装置に関連したメモリに前記データの少なくとも前記一部を記憶することと、
前記ディープ・ニューラル・ネットワークに一連の出力を提供する前記一連の層の最後の層から、前記一連の層の第1の層に、前記ディープ・ニューラル・ネットワークの前記一連の層を
通る前記ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、前記ディープ・ニューラル・ネットワークに関連した画像処理装置に前記データの少なくとも前記一部を提供することと
を行わせる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
主題の開示は、コンピュータ・アーキテクチャに関し、より詳細には、深層学習システムに関する。深層学習は、処理層のネットワークに提供されるデータに関連した、以前に知られていなかった特徴、分類、またはパターン、あるいはその組合せを判定するために、処理層のネットワーク(例えば、入力層、一連の隠れ層、または出力層、あるいはその組合せ)に関連した訓練プロセスを用いる機械学習技法である。深層学習は、例えば、言語認識、画像認識、ビデオ処理、テキスト分析、グラフィカル・モデリング、データ分析、生命情報科学、非構造化データに関連した技術システム、または他の技術用途、あるいはその組合せなどの技術分野でしばしば用いられる。処理層のネットワークに提供されるデータは、訓練プロセスの始めに用いられる訓練セット(例えば、訓練プロセスのために用いられる既知の分類による一連のデータ)を含むことができる。訓練セットを利用して、処理層のネットワークは、特定の処理ステージ中に生成されたデータが、1つまたは複数の前の処理ステージ中に生成されたデータから判定される、反復処理ステージを実施することができる。処理ステージ中に、処理層は、入力データ、または以前に学習したデータ、あるいはその両方に基づいて、データを独立して生成することができる。一定の実装形態では、画像処理装置を、深層学習を実行するために用いることができる。例えば、画像処理装置は、処理層のネットワークを実行するために用いることができる。1つの例では、Yangら(米国特許公開第2016/0342888号)は、「GPU上で動作するCNNのための改善されたメモリ効率の効果を通じた、CNNシステムの性能を改善する技術」を開示している。それでも、画像処理装置は、一般に、オン・ボード・メモリを制限してきた。さらに、画像処理装置は、一般に、一定のタイプの深層学習ネットワーク(例えば、大規模深層学習ネットワーク、複雑な深層学習ネットワーク、等)を収容することができない。したがって、画像処理装置に関連した深層学習を改善することができる。
【発明の概要】
【0002】
以下は、本発明の1つまたは複数の実施形態を基本的に理解するための概要を提示する。本概要は、主要もしくは重要な要素を識別すること、または、特定の実施形態のいずれかの範囲、もしくは特許請求の範囲のいずれかの範囲を詳しく説明することを意図するものではない。その唯一の目的は、後で提示される、より詳細な説明の前置きとして、簡単な形で概念を提示することである。本明細書で説明する1つまたは複数の実施形態では、深層学習のモデル・サポートを容易にするデバイス、システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せを説明する。
【0003】
1つの実施形態によれば、システムは、画像処理装置と、中央処理装置メモリとを備えることができる。画像処理装置は、ディープ・ニューラル・ネットワークを訓練するためのデータを処理することができる。中央処理装置メモリは、ディープ・ニューラル・ネットワークを訓練するためのデータの一部を記憶することができる。画像処理装置は、一連の層の第1の層から、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの一連の層の1つの層のための入力データを中央処理装置メモリに提供することができる。システムは、従来の深層学習技法と比較して様々な長所をもたらすことができる。一定の実施形態では、システムは、ディープ・ニューラル・ネットワークに関連した深層学習処理の性能の改善を容易にすることができる。1つの実施形態では、中央処理装置メモリに関連した中央処理装置は、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、入力データを画像処理装置に提供することができる。別の実施形態では、画像処理装置は、フォワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの出力データを画像処理装置に関連したメモリに記憶することができる。さらに別の実施形態では、画像処理装置は、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの勾配データを中央処理装置メモリに提供することができる。さらに別の実施形態では、画像処理装置は、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層のためのパラメータ・データを中央処理装置メモリから受け取ることができる。一定の実施形態では、画像処理装置は、圧縮方式を介して中央処理装置メモリに入力データを提供することができる。一定の実施形態では、画像処理装置は、半精度浮動小数点形式を介して中央処理装置メモリに入力データを提供することができる。一定の実施形態では、画像処理装置は、シリアル・マルチ・レーン通信リンクを介して中央処理装置メモリに連結することができる。一定の実施形態では、中央処理装置メモリは、画像処理装置の処理性能の改善を容易にするためのデータの一部を記憶することができる。
【0004】
別の実施形態によれば、コンピュータ実装方法が提供される。コンピュータ実装方法は、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータを画像処理装置によって処理することを含むことができる。コンピュータ実装方法は、一連の層の第1の層から、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層に、一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、一連の層の1つの層のための入力データを中央処理装置メモリに画像処理装置によって提供することを含むこともできる。コンピュータ実装方法は、従来の深層学習技法と比較して様々な長所をもたらすことができる。一定の実施形態では、コンピュータ実装方法は、ディープ・ニューラル・ネットワークに関連した深層学習処理の性能の改善を容易にすることができる。1つの実施形態では、コンピュータ実装方法は、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、中央処理装置メモリから入力データを画像処理装置によって受け取ることを含むこともできる。別の実施形態では、コンピュータ実装方法は、画像処理装置によって、および、フォワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの出力データを画像処理装置に関連したメモリに記憶することを含むこともできる。さらに別の実施形態では、コンピュータ実装方法は、画像処理装置によって、および、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの勾配データを中央処理装置メモリに提供することを含むこともできる。さらに別の実施形態では、コンピュータ実装方法は、画像処理装置によって、および、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層のためのパラメータ・データを中央処理装置メモリから受け取ることを含むこともできる。一定の実施形態では、提供することは、圧縮方式を介して中央処理装置メモリに入力データを提供することを含むことができる。一定の実施形態では、提供することは、半精度浮動小数点形式を介して中央処理装置メモリに入力データを提供することを含む。一定の実施形態では、提供することは、画像処理装置の処理性能の改善を容易にすることを含む。
【0005】
さらに別の実施形態によれば、コンピュータ実装方法が提供される。コンピュータ実装方法は、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータの少なくとも一部を中央処理装置によって受け取ることを含むことができる。コンピュータ実装方法は、中央処理装置に関連したメモリにデータの少なくとも一部を中央処理装置によって記憶することを含むこともできる。さらに、コンピュータ実装方法は、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークに関連した画像処理装置にデータの少なくとも一部を中央処理装置によって提供することを含むことができる。コンピュータ実装方法は、従来の深層学習技法と比較して様々な長所をもたらすことができる。一定の実施形態では、コンピュータ実装方法は、ディープ・ニューラル・ネットワークに関連した深層学習処理の性能の改善を容易にすることができる。1つの実施形態では、受け取ることは、一連の層の第1の層から、一連の層の最後の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、データの少なくとも一部を受け取ることを含むことができる。別の実施形態では、受け取ることは、圧縮方式を介してデータの少なくとも一部を受け取ることを含むことができる。
【0006】
さらに別の実施形態によれば、深層学習のモデル・サポートのためのコンピュータ・プログラム製品は、プログラム命令を含んだコンピュータ可読ストレージ媒体を備えることができる。プログラム命令は、画像処理装置によって実行可能であり、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータを画像処理装置によって処理することを画像処理装置に行わせることができる。プログラム命令は、一連の層の第1の層から、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層に、一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、一連の層の1つの層のための入力データを中央処理装置メモリに画像処理装置によって提供することを画像処理装置に行わせることもできる。コンピュータ・プログラム製品は、従来の深層学習技法と比較して様々な長所をもたらすことができる。一定の実施形態では、コンピュータ・プログラム製品は、ディープ・ニューラル・ネットワークに関連した深層学習処理の性能の改善を容易にすることができる。1つの実施形態では、プログラム命令は、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、中央処理装置メモリから入力データを画像処理装置によって受け取ることを画像処理装置に行わせることもできる。別の実施形態では、プログラム命令は、画像処理装置によって、および、フォワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの出力データを画像処理装置に関連したメモリに記憶することを画像処理装置に行わせることもできる。
【0007】
さらに別の実施形態によれば、深層学習のモデル・サポートのためのコンピュータ・プログラム製品は、プログラム命令を含んだコンピュータ可読ストレージ媒体を備えることができる。プログラム命令は、中央処理装置によって実行可能であり、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータの少なくとも一部を中央処理装置によって受け取ることを中央処理装置に行わせることができる。プログラム命令は、中央処理装置に関連したメモリにデータの少なくとも一部を中央処理装置によって記憶することを中央処理装置に行わせることもできる。プログラム命令は、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークに関連した画像処理装置にデータの少なくとも一部を中央処理装置によって提供することを中央処理装置に行わせることもできる。コンピュータ・プログラム製品は、従来の深層学習技法と比較して様々な長所をもたらすことができる。一定の実施形態では、コンピュータ・プログラム製品は、ディープ・ニューラル・ネットワークに関連した深層学習処理の性能の改善を容易にすることができる。1つの実施形態では、プログラム命令は、一連の層の第1の層から、一連の層の最後の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、データの少なくとも一部を中央処理装置によって受け取ることを画像処理装置に行わせることもできる。
【図面の簡単な説明】
【0008】
【
図1】本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを容易にするための実例の非限定的なシステムを示す図である。
【
図2】本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを容易にするための別の実例の非限定的なシステムを示す図である。
【
図3】本明細書で説明する1つまたは複数の実施形態による、有限状態機械に関連した実例の非限定的なシステムを示す図である。
【
図4】本明細書で説明する1つまたは複数の実施形態による、ディープ・ニューラル・ネットワークに関連した実例の非限定的なシステムを示す図である。
【
図5】本明細書で説明する1つまたは複数の実施形態による、ディープ・ニューラル・ネットワークに関連した別の実例の非限定的なシステムを示す図である。
【
図6】本明細書で説明する1つまたは複数の実施形態による、データ圧縮に関連した実例の非限定的なシステムを示す図である。
【
図7】本明細書で説明する1つまたは複数の実施形態による、データ圧縮に関連した別の実例の非限定的なシステムを示す図である。
【
図8】本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを容易にするための実例の非限定的なコンピュータ実装方法の流れ図である。
【
図9】本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを容易にするための別の実例の非限定的なコンピュータ実装方法の流れ図である。
【
図10】本明細書で説明する1つまたは複数の実施形態を容易にすることができる実例の非限定的な動作環境のブロック図である。
【発明を実施するための形態】
【0009】
以下の詳細な説明は、例証にすぎず、実施形態、または実施形態の用途もしくは使用、あるいはその両方を限定することを意図するものではない。さらに、先行する背景技術もしくは発明の概要セクションで、または発明を実施するための形態セクションで提示した、いずれかの表現した、または意味した情報によって束縛される意図はない。
【0010】
図面を参照しながら、1つまたは複数の実施形態を次に説明するが、同様の要素を全体にわたって参照するために同様の参照番号を使用する。以下の記述では、説明のために、1つまたは複数の実施形態をより完全に理解するために非常に多くの具体的詳細を示す。それでも、これらの具体的詳細がなくても、1つまたは複数の実施形態を実践できることが様々なケースで明らかである。
【0011】
深層学習は、処理層のネットワークに提供されるデータに関連した、以前に知られていなかった特徴、分類、またはパターン、あるいはその組合せを判定するために、処理層のネットワーク(例えば、入力層、一連の隠れ層、または出力層、あるいはその組合せ)に関連した訓練プロセスを用いる機械学習技法である。深層学習は、例えば、言語認識、画像認識、ビデオ処理、テキスト分析、グラフィカル・モデリング、データ分析、生命情報科学、非構造化データに関連した技術システム、または他の技術用途、あるいはその組合せなどの技術分野でしばしば用いられる。処理層のネットワークに提供されるデータは、訓練プロセスの始めに用いられる訓練セット(例えば、訓練プロセスのために用いられる既知の分類による一連のデータ)を含むことができる。訓練セットを利用して、処理層のネットワークは、特定の処理ステージ中に生成されたデータが、1つまたは複数の前の処理ステージ中に生成されたデータから判定される、反復処理ステージを実施することができる。処理ステージ中に、処理層は、入力データ、または以前に学習したデータ、あるいはその両方に基づいて、データを独立して生成することができる。1つの実施形態では、画像処理装置を、深層学習を実行するために用いることができる。例えば、画像処理装置は、処理層のネットワークを実行するために用いることができる。それでも、画像処理装置は、一般に、オン・ボード・メモリを制限してきた。さらに、画像処理装置は、一般に、一定のタイプの深層学習ネットワーク(例えば、大規模深層学習ネットワーク、複雑な深層学習ネットワーク、等)を収容することができない。したがって、画像処理装置に関連した深層学習を改善することができる。
【0012】
従来の深層学習技法、つまり、画像処理装置を用いる深層学習、または他の従来の技術、あるいはその両方に関連した、これらの、または他の、あるいはその両方の問題に対処するために、本明細書で説明する実施形態は、深層学習のモデル・サポートのためのシステム、コンピュータ実装方法、およびコンピュータ・プログラム製品を含む。1つの態様では、深層学習がモデル・サポートを行うために、画像処理装置を用いることができる。モデルは、例えば、深層学習モデルであってもよい。さらに、モデル・サポートを行うために、ホスト・メモリを追加として用いることができる。ホスト・メモリは、例えば、中央処理装置メモリであってもよい。別の例では、ホスト・メモリは、異なる画像処理装置に関連した別の画像処理装置メモリであってもよい。それでも、ホスト・メモリは、異なるタイプのメモリであってもよいことを認識されたい。ホスト・メモリは、画像処理装置に通信連結することができる。ホスト・メモリは、画像処理装置に関連した深層学習のためのキャッシュとして用いることができる。例えば、ホスト・メモリは、画像処理装置によって実行される深層学習ネットワークのための深層学習モデルの訓練に関連したデータの少なくとも一部を記憶するためのキャッシュとして用いることができる。1つの実施形態では、画像処理装置によって実行される深層学習ネットワークに関連したフォワード・パスからのデータは、画像処理装置によって実行される深層学習ネットワークに関連したバックワード・パスで再使用することができる。フォワード・パスからのデータは、ホスト・メモリに記憶することができる。さらに、バックワード・パス中に、ホスト・メモリに記憶したデータを画像処理装置に提供することができる。フォワード・パスは、一連の層の第1の層から、深層学習ネットワークに一連の出力を提供する一連の層の最後の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断する深層学習ネットワークのフォワード・パス・プロセスであってもよい。バックワード・パスは、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断する深層学習ネットワークのバックワード・パス・プロセスであってもよい。別の実施形態では、バックワード・パスが完了した後、データの少なくとも一部を、ホスト・メモリから捨てることができる。追加として、一定の実施形態では、画像処理装置は、圧縮方式を介してホスト・メモリにデータを提供することができる。したがって、画像処理装置の処理性能を改善すること、画像処理装置の計算ボトルネックを減らすこと、または、画像処理装置の処理効率を改善すること、あるいはその組合せを行うことができる。さらに、深層学習ネットワークのためのバッチ・サイズ(例えば、フォワード・パスもしくはバックワード・パスのための訓練要素の数)、または、深層学習ネットワークによって処理されるデータの量、あるいはその両方を増やすことができる。その上、深層学習ネットワークに関連した深層学習を実施するための時間を減らすことができる。
【0013】
図1は、本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを容易にする実例の非限定的なシステム100を示す。様々な実施形態では、システム100は、深層学習技術、機械学習技術、人工知能技術、協調フィルタリング技術、推薦システム技術、信号処理技術、単語の埋め込み技術、トピック・モデル技術、画像処理技術、データ分析技術、検索エンジン技術、画像認識技術、言語認識技術、モデル縮小技術、反復法線形ソルバ(iterative linear solver)技術、データ・マイニング技術、ヘルスケア技術、製薬技術、バイオテクノロジ技術、財務技術、化学技術、材料発見技術、振動解析技術、地質学技術、産業技術、航空技術、または他のデジタル技術、あるいはその組合せなどであるがこれらに限定されない技術に関連した深層学習システムであってもよい。
【0014】
システム100は、ハードウェアまたはソフトウェアあるいはその両方を用いて、抽象的でなく、人間による一連の心の行為として実施することができない、本質的に高度に技術的な問題を解決することができる。さらに、一定の実施形態では、実施される処理のうちのいくつかは、深層学習に関連した規定のタスクを実行するために、1つまたは複数の専用コンピュータ(例えば、1つまたは複数の専用処理ユニット、専用画像処理装置、専用プロセッサ、専用中央処理装置、等)によって実施することができる。システム100またはシステム100の構成要素あるいはその両方は、上記で言及した技術、コンピュータ・アーキテクチャ、深層学習アーキテクチャ、または同様のもの、あるいはその組合せの進歩を通じて生じる新しい問題を解決するために用いることができる。システム100の1つまたは複数の実施形態は、深層学習システム、機械学習システム、人工知能システム、協調フィルタリング・システム、推薦システム、信号処理システム、単語の埋め込みシステム、トピック・モデル・システム、画像処理システム、データ分析システム、検索エンジン・システム、画像認識システム、言語認識システム、モデル縮小システム、反復法線形ソルバ・システム、データ・マイニング・システム、ヘルスケア・システム、製薬システム、バイオテクノロジシステム、財務システム、化学システム、材料発見システム、振動解析システム、地質学システム、産業システム、航空システム、または他のデジタル・システム、あるいはその組合せに技術的改善をもたらすことができる。システム100の1つまたは複数の実施形態は、画像処理装置の処理性能を改善すること、画像処理装置の計算ボトルネックを減らすこと、画像処理装置の処理効率を改善すること、または画像処理装置が深層学習処理を実施するための時間を減らすこと、あるいはその組合せによって、画像処理装置に技術的改善をもたらすこともできる。
【0015】
図1に示した実施形態では、システム100は、画像処理装置102および中央処理装置104を含むことができる。画像処理装置102は、1つまたは複数の演算を繰り返し実施するように構成された専用ハードウェア・プロセッサであってもよい。画像処理装置102は、ディスプレイ機能またはグラフィックス処理あるいはその両方を実施するために特殊化することができる。さらに、画像処理装置102は、1つまたは複数の演算を繰り返し実施することを容易にするための複数のプロセッサ・コアを含むことができる。中央処理装置104は、一連の処理スレッドを実行するように構成されたハードウェア・プロセッサであってもよい。画像処理装置102は、中央処理装置104より速い速度でデータを処理するように構成することができる。さらに、中央処理装置104は、一連の処理スレッドの実行を容易にするための少なくとも1つのプロセッサ・コアを含むことができる。中央処理装置104は、メモリ106を含むことができる。メモリ106は、例えば、中央処理装置メモリであってもよい。例えば、メモリ106は、中央処理装置104によって頻繁に用いられるデータのコピーを記憶するように構成された中央処理装置キャッシュであってもよい。1つの実施形態では、画像処理装置102は、通信リンク108を介して中央処理装置に通信連結することができる。例えば、画像処理装置102は、通信リンク108を介して中央処理装置のメモリ106に通信連結することができる。通信リンク108は、例えば、シリアル・マルチ・レーン通信リンクであってもよい。
【0016】
画像処理装置102は、ディープ・ニューラル・ネットワーク110を訓練するためのデータを処理することができる。例えば、画像処理装置102は、データを処理して、データに関連した特定のタスクを実施する(例えば、特定の分類を識別する)ようにディープ・ニューラル・ネットワーク110を構成することができる。1つの態様では、画像処理装置102は、ディープ・ニューラル・ネットワーク110の訓練中に、ディープ・ニューラル・ネットワーク110についての一連の重みの修正または判定あるいはその両方を行うことができる。ディープ・ニューラル・ネットワーク110は、一連の層を含む人工ニューラル・ネットワークであってもよい。ディープ・ニューラル・ネットワーク110の一連の層は、例えば、入力層、一連の隠れ層、および出力層を含むことができる。ディープ・ニューラル・ネットワーク110の入力層は、ディープ・ニューラル・ネットワーク110に入力されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、ディープ・ニューラル・ネットワーク110の入力層は、一連の重みに基づいて、ディープ・ニューラル・ネットワーク110に入力されたデータを処理することができる。ディープ・ニューラル・ネットワーク110の一連の隠れ層は、入力層と出力層の間にあってもよい。ディープ・ニューラル・ネットワーク110の一連の隠れ層は、1つまたは複数の隠れ層を含むことができる。さらに、ディープ・ニューラル・ネットワーク110の一連の隠れ層は、入力層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、一連の隠れ層の隠れ層は、一連の層の中の前の隠れ層によって提供されたデータを処理することができる。ディープ・ニューラル・ネットワーク110の出力層は、一連の隠れ層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。さらに、ディープ・ニューラル・ネットワーク110の出力層は、ディープ・ニューラル・ネットワーク110に一連の出力を提供することができる。別の態様では、ディープ・ニューラル・ネットワーク110は、人間の脳構造に似た、データを分析する論理構造を含む深層学習モデルであってもよい。
【0017】
中央処理装置104のメモリ106は、ディープ・ニューラル・ネットワーク110を訓練するために、用いること、分析すること、または生成すること、あるいはその組合せが行われたデータの少なくとも一部を記憶することができる。例えば、中央処理装置104のメモリ106は、画像処理装置102によって、用いること、分析すること、または生成すること、あるいはその組合せが行われたデータの少なくとも一部を記憶することができる。画像処理装置102は、ディープ・ニューラル・ネットワーク110の訓練中に、中央処理装置104のメモリ106にデータの少なくとも一部を提供することができる。一定の実施形態では、画像処理装置102は、圧縮方式を介して、中央処理装置104のメモリ106にデータの少なくとも一部を提供することができる。一定の実施形態では、画像処理装置102は、半精度浮動小数点形式を介して、中央処理装置104のメモリ106にデータの少なくとも一部を提供することができる。追加または代替として、画像処理装置102は、ディープ・ニューラル・ネットワーク110の訓練中に、中央処理装置104のメモリ106に記憶されたデータを受け取ることができる。一定の実施形態では、画像処理装置102は、圧縮方式を介して、中央処理装置104のメモリ106に記憶されたデータを受け取ることができる。一定の実施形態では、画像処理装置102は、半精度浮動小数点形式を介して、中央処理装置104のメモリ106に記憶されたデータを受け取ることができる。
【0018】
1つの実施形態では、画像処理装置102は、画像処理装置102によって実行されたディープ・ニューラル・ネットワーク110のフォワード・パス・プロセス中に、ディープ・ニューラル・ネットワーク110の一連の層の1つの層のための入力データを、中央処理装置104のメモリ106に提供することができる。フォワード・パス・プロセスは、一連の層の第1の層から、ディープ・ニューラル・ネットワーク110に一連の出力を提供する一連の層の最後の層に、ディープ・ニューラル・ネットワーク110の一連の層を通って横断するディープ・ニューラル・ネットワーク110の訓練中の処理であってもよい。一定の実施形態では、画像処理装置102は、圧縮方式を介して、中央処理装置104のメモリ106に入力データを提供することができる。一定の実施形態では、画像処理装置102は、半精度浮動小数点形式を介して、中央処理装置104のメモリ106に入力データを提供することができる。別の実施形態では、中央処理装置104は、画像処理装置102によって実行されたディープ・ニューラル・ネットワーク110のバックワード・パス・プロセス中に、メモリ106に記憶された入力データを画像処理装置102に提供することができる。メモリ106に記憶された入力データは、バックワード・パス・プロセス中に、ディープ・ニューラル・ネットワーク110によって用いることができる。バックワード・パス・プロセスは、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワーク110の一連の層を通って横断するディープ・ニューラル・ネットワーク110の訓練中の処理であってもよい。一定の実施形態では、画像処理装置102は、フォワード・パス・プロセス中に、ディープ・ニューラル・ネットワーク110の層からの出力データを、画像処理装置102のメモリ103に記憶することができる。例えば、画像処理装置102のメモリ103は、ディープ・ニューラル・ネットワーク110の別の層に関連したさらなる処理のための出力データをディープ・ニューラル・ネットワーク110が用いるまで、層からの出力データを一時的に記憶することができる。一定の実施形態では、画像処理装置102は、ディープ・ニューラル・ネットワーク110のバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワーク110の層からの勾配データを、中央処理装置104のメモリ106に提供することができる。例えば、中央処理装置104のメモリ106は、ディープ・ニューラル・ネットワーク110の別の層に関連したさらなる処理のための勾配データをディープ・ニューラル・ネットワーク110が用いるまで、層からの勾配データを一時的に記憶することができる。一定の実施形態では、画像処理装置102は、ディープ・ニューラル・ネットワーク110のバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワーク110の層のためのパラメータ・データを、中央処理装置104のメモリ106から受け取ることができる。例えば、中央処理装置104のメモリ106は、ディープ・ニューラル・ネットワーク110の別の層に関連したさらなる処理のためのパラメータ・データをディープ・ニューラル・ネットワーク110が用いるまで、層からのパラメータ・データを一時的に記憶することができる。
【0019】
画像処理装置102または中央処理装置104あるいはその両方は、人間によって実施することができない(例えば、1人の人間の心の能力より大きい)深層学習処理を実施することを認識されたい。例えば、深層学習処理についての、一定の期間にわたって画像処理装置102または中央処理装置104あるいはその両方によって処理されるデータの量、データの処理のスピード、または処理されるデータ型、あるいはその組合せは、同じ期間にわたって1人の人間の心によって処理できる量、スピード、およびデータ型より大きく、速く、かつ異なっていてもよい。また、画像処理装置102または中央処理装置104あるいはその両方は、上記で参照した行列因数分解処理も実施しつつ、1つまたは複数の他の機能を実施するために完全に動作可能であってもよい(例えば、完全に電源オンされる、完全に実行される、等)。その上、画像処理装置102によって生成された深層学習モデルは、ユーザが手動で取得できない情報を含むことができる。例えば、画像処理装置102によって生成された深層学習モデルに含まれるある量の情報、または画像処理装置102によって生成された深層学習モデルに含まれる様々な情報、あるいはその両方は、ユーザが手動で取得した情報より複雑になり得る。
【0020】
一定の実施形態では、画像処理装置102または中央処理装置104あるいはその両方の態様は、例えば、1つまたは複数の機械に関連した1つまたは複数のコンピュータ可読媒体(または複数の媒体)に含まれるなど、機械に含まれる、機械実行可能構成要素とみなされてもよい。このような構成要素は、例えば、コンピュータ、コンピューティング・デバイス、仮想マシン等といった、1つまたは複数の機械によって実行されると、説明した動作を機械に実施させることができる。1つの態様では、画像処理装置102または中央処理装置104あるいはその両方は、コンピュータ実行可能構成要素および命令を記憶するメモリも含むことができる。さらに、画像処理装置102または中央処理装置104あるいはその両方は、画像処理装置102または中央処理装置104あるいはその両方による命令(例えば、コンピュータ実行可能構成要素および対応する命令)の実行を容易にするためのプロセッサを含むこと、またはプロセッサとして実装すること、あるいはその両方を行うことができる。
【0021】
追加として、システム100は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム100は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム100を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム100を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム100を用いることによって、深層学習処理の正確さも改善することができる。その上、システム100を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0022】
図2は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム200を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0023】
システム200は、画像処理装置102、中央処理装置104、ディープ・ニューラル・ネットワーク110、または有限状態機械202、あるいはその組合せを含むことができる。1つの実施形態では、中央処理装置104は、メモリ106を含むことができる。追加として、一定の実施形態では、画像処理装置102は、メモリ103を含むことができる。有限状態機械202は、ディープ・ニューラル・ネットワーク110の訓練中に、データの記憶または伝送あるいはその両方を制御するために用いることができる。例えば、有限状態機械202は、ディープ・ニューラル・ネットワーク110をサポートするために用いることができる。1つの態様では、有限状態機械202は、ディープ・ニューラル・ネットワーク110に関連したデータの、中央処理装置104のメモリ106への伝送を制御することができる。追加または代替として、有限状態機械202は、メモリ106に記憶されたデータの、画像処理装置102への伝送を制御することができる。追加または代替として、有限状態機械202は、画像処理装置102のメモリ103へのデータの記憶を制御することができる。追加または代替として、有限状態機械202は、中央処理装置104のメモリ106へのデータの記憶を制御することができる。別の態様では、有限状態機械202は、ディープ・ニューラル・ネットワーク110の訓練中に、中央処理装置104のメモリ106が、画像処理装置102のためのキャッシュ・メモリとして用いられるべきかどうかを判定することができる。さらに別の態様では、有限状態機械202は、ディープ・ニューラル・ネットワーク110の特定の層の処理が終了したとの判定に応答して、中央処理装置104のメモリ106にデータを記憶するべきかどうかを判定することができる。1つの実施形態では、有限状態機械202は、画像処理装置102および中央処理装置104とは別個のプロセッサによって実行することができる。別の実施形態では、有限状態機械202は、画像処理装置102によって実行することができる。さらに別の実施形態では、有限状態機械202は、中央処理装置104によって実行することができる。さらに、1つの実施形態では、有限状態機械202は、メモリ103およびメモリ106とは別個のメモリに記憶することができる。別の実施形態では、有限状態機械202は、メモリ103に記憶することができる。さらに別の実施形態では、有限状態機械202は、メモリ106に記憶することができる。
【0024】
追加として、システム200は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム200は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム200を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム200を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム200を用いることによって、深層学習処理の正確さも改善することができる。その上、システム200を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0025】
図3は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム300を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0026】
システム300は、有限状態機械302を含むことができる。1つの例では、有限状態機械202は、有限状態機械302に対応し得る。有限状態機械302は、未初期化状態304、画像処理装置状態306、中央処理装置状態308、または一致状態310、あるいはその組合せを含むことができる。未初期化状態304は、有限状態機械302における状態であってよく、ここで、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータは、初期化されていない。例えば、画像処理装置102または中央処理装置104あるいはその両方は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータについて初期化されていなくてもよい。画像処理装置状態306は、有限状態機械302における状態であってよく、ここで、画像処理装置102が、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータの最新バージョンを備える。中央処理装置状態308は、有限状態機械302における状態であってよく、ここで、中央処理装置104が、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータの最新バージョンを備える。一致状態310は、有限状態機械302における状態であってよく、ここで、画像処理装置102および中央処理装置104が、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータの最新バージョンを備える。1つの態様では、未初期化状態304、画像処理装置状態306、中央処理装置状態308、または一致状態310、あるいはその組合せの間で、1つまたは複数の遷移が発生し得る。1つまたは複数の遷移は、1つまたは複数の状態(例えば、未初期化状態304、画像処理装置状態306、中央処理装置状態308、または一致状態310、あるいはその組合せ)の間で有限状態機械302を遷移させる1つまたは複数のイベントであってもよい。別の態様では、ディープ・ニューラル・ネットワーク110の層(例えば、隠れ層)の処理が完了したとの判定に応答して、未初期化状態304、画像処理装置状態306、中央処理装置状態308、または一致状態310、あるいはその組合せの間で、1つまたは複数の遷移が発生し得る。
【0027】
1つの実施形態では、未初期化状態304は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータが、画像処理装置102のメモリ103に記憶されることになるとの判定に応答して、画像処理装置状態306に遷移することができる。別の実施形態では、未初期化状態304は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータが、中央処理装置104のメモリ106に記憶されることになるとの判定に応答して、中央処理装置状態308に遷移することができる。画像処理装置状態306は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータを、画像処理装置102のメモリ103に、一定時間、記憶することができる。例えば、画像処理装置状態306は、ディープ・ニューラル・ネットワーク110の特定の層の処理が終了するまで、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータを、画像処理装置102のメモリ103に記憶することができる。1つの態様では、画像処理装置状態306は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータを中央処理装置104に伝送することができる。さらに、有限状態機械302は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータが中央処理装置104に伝送されると、画像処理装置状態306から中央処理装置状態308に遷移することができる。中央処理装置状態308は、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータを、中央処理装置104のメモリ106に、一定時間、記憶することができる。例えば、中央処理装置状態308は、ディープ・ニューラル・ネットワーク110に関連したさらなる処理のために、特定のデータが画像処理装置102によって必要とされるまで、ディープ・ニューラル・ネットワーク110を訓練するために用いる特定のデータを、中央処理装置104のメモリ106に記憶することができる。一定の実施形態では、画像処理装置状態306は、特定のデータが中央処理装置104によって必要とされるとの判定に応答して、一致状態310に遷移することができる。さらに、一致状態310は、ディープ・ニューラル・ネットワーク110の特定の層の処理が終了したとの判定に応答して、中央処理装置状態308に遷移することができる。一定の実施形態では、ディープ・ニューラル・ネットワーク110の特定の層の処理が終了したとの判定に応答して、画像処理装置状態306は、メモリ103から特定のデータを捨てること、または、未初期化状態304に遷移すること、あるいはその両方を行うことができる。一定の実施形態では、中央処理装置状態308は、特定のデータが画像処理装置102によって必要とされるとの判定に応答して、一致状態310に遷移することができる。
【0028】
追加として、システム300は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム300は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム300を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム300を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム300を用いることによって、深層学習処理の正確さも改善することができる。その上、システム300を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0029】
図4は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム400を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0030】
システム400は、ディープ・ニューラル・ネットワーク402を含むことができる。1つの例では、ディープ・ニューラル・ネットワーク110は、ディープ・ニューラル・ネットワーク402に対応し得る。1つの態様では、ディープ・ニューラル・ネットワーク402は、人間の脳構造に似た、データを分析する論理構造を含む深層学習モデルを表すことができる。ディープ・ニューラル・ネットワーク402は、入力層404、隠れ層406、隠れ層408、隠れ層410、および出力層412を含むことができる。
図4に示した1つの実施形態では、ディープ・ニューラル・ネットワーク402は、入力層404、隠れ層406、隠れ層408、隠れ層410、および出力層412を通じて順方向にディープ・ニューラル・ネットワーク402を通って横断するフォワード・パス・プロセスに関連したものであってもよい。入力層404、隠れ層406、隠れ層408、隠れ層410、および出力層412は、ディープ・ニューラル・ネットワーク402の一連の層であってもよい。入力層404は、ディープ・ニューラル・ネットワーク402に入力されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、入力層404は、一連の重みに基づいて、ディープ・ニューラル・ネットワーク402に入力されたデータを処理することができる。隠れ層406、隠れ層408、および隠れ層410は、入力層404と出力層412の間に位置する一連の隠れ層であってもよい。隠れ層406は、入力層404によって提供されたデータを処理する一連の人工ニューロンを含むことができる。隠れ層408は、隠れ層406によって提供されたデータを処理する一連の人工ニューロンを含むことができる。隠れ層410は、隠れ層408によって提供されたデータを処理する一連の人工ニューロンを含むことができる。出力層412は、隠れ層410によって提供されたデータを処理する一連の人工ニューロンを含むことができる。さらに、出力層412は、ディープ・ニューラル・ネットワーク402に一連の出力を提供することができる。1つの態様では、入力データ414を、隠れ層408に提供することができる。例えば、隠れ層406は、入力データ414を隠れ層408に提供することができる。さらに、出力データ416を、隠れ層408によって提供することができる。1つの実施形態では、入力データ414は、中央処理装置104のメモリ106にコピーすることができる。例えば、入力データ414は、隠れ層408の処理が完了したとの判定に応答して、中央処理装置104のメモリ106にコピーすることができる。追加または代替として、入力データ414は、ディープ・ニューラル・ネットワーク402のさらなる処理中に(例えば、ディープ・ニューラル・ネットワーク402のバックワード・パス・プロセス中に)、ディープ・ニューラル・ネットワーク402によって入力データ414が使用されることになるとの判定に応答して、中央処理装置104のメモリ106にコピーすることができる。別の実施形態では、出力データ416は、画像処理装置102のメモリ103に記憶することができる。
【0031】
追加として、システム400は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム400は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム400を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム400を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム400を用いることによって、深層学習処理の正確さも改善することができる。その上、システム400を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0032】
図5は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム500を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0033】
システム500は、ディープ・ニューラル・ネットワーク402を含むことができる。ディープ・ニューラル・ネットワーク402は、入力層404、隠れ層406、隠れ層408、隠れ層410、および出力層412を含むことができる。
図5に示した1つの実施形態では、ディープ・ニューラル・ネットワーク402は、出力層412、隠れ層410、隠れ層408、隠れ層406、および入力層404を通じて逆方向にディープ・ニューラル・ネットワーク402を通って横断するバックワード・パス・プロセスに関連したものであってもよい。1つの態様では、入力データ502を、隠れ層408に提供することができる。例えば、隠れ層410は、隠れ層408に入力データ502を提供することができる。さらに、出力データ504を、隠れ層408によって提供することができる。1つの実施形態では、入力データ502は、中央処理装置104のメモリ106からコピーすることができる。例えば、入力データ502は、(例えば、フォワード・パス・プロセス中に)中央処理装置104のメモリ106に記憶することができ、中央処理装置104は、ディープ・ニューラル・ネットワーク402によって用いるためにメモリ106から画像処理装置102に入力データ502を伝送することができる。1つの例では、入力データ502の少なくとも一部は、入力データ414に対応し得る。別の実施形態では、出力データ504は、隠れ層406に提供された後、捨てることができる。一定の実施形態では、入力データ502に含まれるパラメータ・データを、中央処理装置のメモリ106にコピーすることができる。パラメータ・データは、ディープ・ニューラル・ネットワーク402に関連したバックワード・パス・プロセス中に判定した1つまたは複数の学習可能パラメータを含むことができる。一定の実施形態では、出力データ504に含まれる勾配データを、中央処理装置のメモリ106にコピーすることができる。勾配データは、ディープ・ニューラル・ネットワーク402に関連したバックワード・パス・プロセス中に判定した1つまたは複数の学習可能勾配パラメータを含むことができる。したがって、ディープ・ニューラル・ネットワーク402に関連したフォワード・パス・プロセスからのデータの少なくとも一部は、ディープ・ニューラル・ネットワーク402に関連したバックワード・パス・プロセス中に再使用することができる。例えば、ディープ・ニューラル・ネットワーク402に関連したフォワード・パス・プロセスからのデータの少なくとも一部は、ディープ・ニューラル・ネットワーク402に関連したバックワード・パス・プロセス中にデータが必要とされるまで、中央処理装置104のメモリ106によって一時的に記憶することができる。さらに、中央処理装置104のメモリ106は、画像処理装置102のためのキャッシュまたは一時記憶位置あるいはその両方として用いることができる。
【0034】
追加として、システム500は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム500は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム500を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム500を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム500を用いることによって、深層学習処理の正確さも改善することができる。その上、システム500を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0035】
図6は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム600を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0036】
システム600は、データ602を含む。データ602は、画像処理装置102によって生成されたデータに対応し得る。例えば、データ602は、画像処理装置102によって実行されたディープ・ニューラル・ネットワーク(例えば、ディープ・ニューラル・ネットワーク110、ディープ・ニューラル・ネットワーク402等)における層に提供された、または層によって生成された、あるいはその両方のデータであってもよい。データ602は、データ要素のセットF0~F9を含むことができる。さらに、1つの例では、データ602は、32ビット・データ構造としてフォーマットすることができる。データ602を修正して、データ604を生成することができる。データ604は、例えば、16ビット・データ構造であってもよい。例えば、データ要素のセットF0~F9を修正して、データ要素のセットF0~F9と比較して、半精度浮動小数としてフォーマットされたデータ要素のセットH0~H9を生成することができる。したがって、データ要素のセットF0~F9に関連したビット削減を実施して、データ要素のセットH0~H9を生成することができる。追加として、データ604を修正して、データ606を生成することができる。データ606は、データ604の圧縮バージョンであってもよい。例えば、データ要素のセットH0~H9を再配置して、データ606を提供することができる。データ606は、データ602またはデータ604あるいはその両方より小さいサイズを含むデータ602またはデータ604あるいはその両方のエンコード・バージョンであってもよい。1つの実施形態では、データ606は、画像処理装置102と中央処理装置104との間で伝送されたデータに対応し得る。1つの例では、データ606は、入力データ414または入力データ502あるいはその両方に対応し得る。別の例では、データ606は、出力データ504の勾配データに対応し得る。1つの実施形態では、データ606は、半精度浮動小数点形式または圧縮形式あるいはその両方でフォーマットすることができる。一定の実施形態では、切取線605は、データ606のサイズを形成するための位置を示すために、データ要素(例えば、データ要素H4とデータ要素H5)の間に形成することができる。例えば、切取線605は、データ604をデータ606に並べ替えるための位置を示すことができる。1つの例では、データ604を並べ替えて、空のメモリ空間(例えば、空のメモリ区画)を埋めることができる。1つの態様では、データ606は、画像処理装置102と中央処理装置104との間の転送時間の低減を容易にするための、データ602の圧縮バージョンであってもよい。1つの実施形態では、画像処理装置102は、データ606(例えば、データ602の圧縮バージョン)を生成することができる。追加として、一定の実施形態では、画像処理装置102は、中央処理装置104からデータ606を受け取ることに応答して、データ606からデータ602を再現することができる。
【0037】
追加として、システム600は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム600は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム600を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム600を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム600を用いることによって、深層学習処理の正確さも改善することができる。その上、システム600を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0038】
図7は、本明細書で説明する1つまたは複数の実施形態による、実例の非限定的なシステム700を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0039】
システム700は、データ702を含む。データ702は、画像処理装置102によって生成されたデータに対応し得る。例えば、データ702は、画像処理装置102によって実行されたディープ・ニューラル・ネットワーク(例えば、ディープ・ニューラル・ネットワーク110、ディープ・ニューラル・ネットワーク402等)における層に提供された、または層によって生成された、あるいはその両方のデータであってもよい。データ702は、データ要素のセットF0~F9を含むことができる。さらに、1つの例では、データ702は、32ビット・データ構造としてフォーマットすることができる。データ702を修正して、データ704を生成することができる。データ704は、例えば、データ702の圧縮バージョンであってもよい。1つの態様では、データ702は、データ・セクション704、データ・セクション706、データ・セクション708、およびデータ・セクション710に分割することができる。データ・セクション704は、データ要素の第1のセットF0~F2を含むことができ、データ・セクション706は、データ要素の第2のセットF3~F5を含むことができ、データ・セクション708は、データ要素の第3のセットF6~F7を含むことができ、データ・セクション710は、データ要素の第4のセットF8~F9を含むことができる。さらに、データ・セクション704、データ・セクション706、データ・セクション708、またはデータ・セクション710、あるいはその組合せの再フォーマットまたは圧縮あるいはその組合せを行って、データ704を生成することができる。データ704は、データ702より小さいサイズを含むデータ702のエンコード・バージョンであってもよい。1つの実施形態では、データ704は、画像処理装置102と中央処理装置104との間で伝送されたデータに対応し得る。1つの例では、データ704は、入力データ414または入力データ502あるいはその両方に対応し得る。別の例では、データ704は、出力データ504の勾配データに対応し得る。1つの態様では、データ704は、画像処理装置102と中央処理装置104との間の転送時間の低減を容易にするための、データ702の圧縮バージョンであってもよい。1つの実施形態では、画像処理装置102は、データ704(例えば、データ702の圧縮バージョン)を生成することができる。追加として、一定の実施形態では、画像処理装置102は、中央処理装置104からデータ704を受け取ることに応答して、データ704からデータ702を再現することができる。
【0040】
追加として、システム700は、従来の深層学習技法と比較して様々な長所をもたらすことができることを認識されたい。システム700は、従来の深層学習技法に関連した問題に様々な解決策を提供することもできる。例えば、システム700を用いることによって、深層学習処理を実施するための時間を減らすことができる。さらに、システム700を用いることによって、深層学習処理を実施するために用いる計算リソースの量を減らすことができる。システム700を用いることによって、深層学習処理の正確さも改善することができる。その上、システム700を用いることによって、深層学習処理に関連した画像処理装置の品質を改善すること、深層学習処理に関連した画像処理装置の性能を改善すること、深層学習処理に関連した画像処理装置の効率性を改善すること、深層学習処理に関連した画像処理装置のタイミング特性を改善すること、深層学習処理に関連した画像処理装置の電力特性を改善すること、または深層学習処理に関連した画像処理装置の別の特性を改善すること、あるいはその組合せを行うことができる。
【0041】
図8は、本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを行うための実例の非限定的なコンピュータ実装方法800の流れ図を示す。802において、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータを画像処理装置(例えば、画像処理装置102)によって処理する。例えば、データを処理して、データに関連した特定のタスクを実施する(例えば、特定の分類を識別する)ようにディープ・ニューラル・ネットワークを構成することができる。1つの態様では、ディープ・ニューラル・ネットワークの訓練中に、ディープ・ニューラル・ネットワークについての一連の重みの修正または判定あるいはその両方を行うことができる。ディープ・ニューラル・ネットワークは、一連の層を含む人工ニューラル・ネットワークであってもよい。ディープ・ニューラル・ネットワークの一連の層は、例えば、入力層、一連の隠れ層、および出力層を含むことができる。ディープ・ニューラル・ネットワークの入力層は、ディープ・ニューラル・ネットワークに入力されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、ディープ・ニューラル・ネットワークの入力層は、一連の重みに基づいて、ディープ・ニューラル・ネットワークに入力されたデータを処理することができる。ディープ・ニューラル・ネットワークの一連の隠れ層は、入力層と出力層の間にあってもよい。ディープ・ニューラル・ネットワークの一連の隠れ層は、1つまたは複数の隠れ層を含むことができる。さらに、ディープ・ニューラル・ネットワークの一連の隠れ層は、入力層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、一連の隠れ層の隠れ層は、一連の層の中の前の隠れ層によって提供されたデータを処理することができる。ディープ・ニューラル・ネットワークの出力層は、一連の隠れ層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。さらに、ディープ・ニューラル・ネットワークの出力層は、ディープ・ニューラル・ネットワークに一連の出力を提供することができる。別の態様では、ディープ・ニューラル・ネットワークは、人間の脳構造に似た、データを分析する論理構造を含む深層学習モデルであってもよい。
【0042】
804において、一連の層の第1の層から、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層に、一連の層を通って横断するディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、一連の層の1つの層のための入力データを中央処理装置メモリに画像処理装置(例えば、画像処理装置102)によって提供する。例えば、ディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、一連の層の1つの層のための入力データを、中央処理装置メモリによって一時的に記憶することができる。1つの実施形態では、圧縮方式を介して、中央処理装置メモリに入力データを提供することができる。1つの例では、半精度浮動小数点形式を介して、中央処理装置メモリに入力データを提供することができる。
【0043】
806において、一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、中央処理装置メモリから入力データを画像処理装置(例えば、画像処理装置102)によって受け取る。例えば、中央処理装置メモリによって一時的に記憶された入力データは、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、画像処理装置に伝送することができる。1つの実施形態では、圧縮方式を介して、画像処理装置メモリに入力データを提供することができる。1つの例では、半精度浮動小数点形式を介して、画像処理装置メモリに入力データを提供することができる。
【0044】
808において、一連の層の別の層からの入力データが利用可能であるかどうかを判定する。はいの場合、コンピュータ実装方法800は、804に戻る。いいえの場合、コンピュータ実装方法800は、810に進む。
【0045】
810において、ディープ・ニューラル・ネットワークの処理が完了したかどうかを判定する。いいえの場合、コンピュータ実装方法800は、802に戻る。はいの場合、コンピュータ実装方法800は、812に進む。
【0046】
812において、ディープ・ニューラル・ネットワークのための深層学習モデルを画像処理装置(例えば、画像処理装置102)によって提供する。深層学習モデルは、例えば、ディープ・ニューラル・ネットワークについての論理構造または一連の重みあるいはその両方を含むことができる。
【0047】
一定の実施形態では、コンピュータ実装方法800は、追加または代替として、画像処理装置によって、および、フォワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの出力データを画像処理装置に関連したメモリに記憶することを含むことができる。一定の実施形態では、コンピュータ実装方法800は、追加または代替として、画像処理装置によって、および、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層からの勾配データを中央処理装置メモリに提供することを含むことができる。一定の実施形態では、コンピュータ実装方法800は、追加または代替として、画像処理装置によって、および、ディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークの層のためのパラメータ・データを中央処理装置メモリから受け取ることを含むことができる。
【0048】
図9は、本明細書で説明する1つまたは複数の実施形態による、深層学習のモデル・サポートを行うための実例の非限定的なコンピュータ実装方法900の流れ図を示す。902において、一連の層を備えるディープ・ニューラル・ネットワークを訓練するためのデータの少なくとも一部を中央処理装置によって(例えば、中央処理装置104によって)受け取る。例えば、ディープ・ニューラル・ネットワークによってデータの一部を用いて、データに関連した特定のタスクを実施する(例えば、特定の分類を識別する)ようにディープ・ニューラル・ネットワークを構成することができる。1つの態様では、ディープ・ニューラル・ネットワークの訓練中に、ディープ・ニューラル・ネットワークについての一連の重みの修正または判定あるいはその両方を行うことができる。ディープ・ニューラル・ネットワークは、一連の層を含む人工ニューラル・ネットワークであってもよい。ディープ・ニューラル・ネットワークの一連の層は、例えば、入力層、一連の隠れ層、および出力層を含むことができる。ディープ・ニューラル・ネットワークの入力層は、ディープ・ニューラル・ネットワークに入力されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、ディープ・ニューラル・ネットワークの入力層は、一連の重みに基づいて、ディープ・ニューラル・ネットワークに入力されたデータを処理することができる。ディープ・ニューラル・ネットワークの一連の隠れ層は、入力層と出力層の間にあってもよい。ディープ・ニューラル・ネットワークの一連の隠れ層は、1つまたは複数の隠れ層を含むことができる。さらに、ディープ・ニューラル・ネットワークの一連の隠れ層は、入力層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。1つの態様では、一連の隠れ層の隠れ層は、一連の層の中の前の隠れ層によって提供されたデータを処理することができる。ディープ・ニューラル・ネットワークの出力層は、一連の隠れ層によって提供されたデータを処理する一連の人工ニューロンを含むことができる。さらに、ディープ・ニューラル・ネットワークの出力層は、ディープ・ニューラル・ネットワークに一連の出力を提供することができる。別の態様では、ディープ・ニューラル・ネットワークは、人間の脳構造に似た、データを分析する論理構造を含む深層学習モデルであってもよい。
【0049】
904において、中央処理装置に関連したメモリにデータの少なくとも一部を中央処理装置によって(例えば、中央処理装置104によって)記憶する。例えば、ディープ・ニューラル・ネットワークのフォワード・パス・プロセス中に、データの少なくとも一部を、中央処理装置に関連したメモリによって一時的に記憶することができる。ディープ・ニューラル・ネットワークのフォワード・パス・プロセスは、一連の層の第1の層から、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断することができる。1つの実施形態では、圧縮方式を介して、中央処理装置に関連したメモリにデータの少なくとも一部を提供することができる。1つの例では、半精度浮動小数点形式を介して、中央処理装置に関連したメモリにデータの少なくとも一部を提供することができる。
【0050】
906において、ディープ・ニューラル・ネットワークに一連の出力を提供する一連の層の最後の層から、一連の層の第1の層に、ディープ・ニューラル・ネットワークの一連の層を通って横断するディープ・ニューラル・ネットワークのバックワード・パス・プロセス中に、ディープ・ニューラル・ネットワークに関連した画像処理装置にデータの少なくとも一部を中央処理装置によって(例えば、中央処理装置104によって)提供する。1つの実施形態では、圧縮方式を介して、画像処理装置にデータの少なくとも一部を提供することができる。1つの例では、半精度浮動小数点形式を介して、画像処理装置にデータの少なくとも一部を提供することができる。
【0051】
908において、ディープ・ニューラル・ネットワークからの他のデータが利用可能であるかどうかを判定する。はいの場合、コンピュータ実装方法900は、904に戻る。いいえの場合、コンピュータ実装方法900は、910に進む。
【0052】
910において、中央処理装置に関連したメモリからのデータの一部を中央処理装置によって(例えば、中央処理装置104によって)捨てる。例えば、データの一部は、データの一部が画像処理装置に伝送されたとの判定に応答して、メモリから消去することができる。
【0053】
説明の簡略化のために、コンピュータ実装方法は、一連の行為として描写し、説明する。主題のイノベーションは、図示した行為によって、または、行為の順序によって、あるいはその両方によって限定されず、例えば、行為は、様々な順序で、または同時に、あるいはその両方で、および、本明細書で提示も説明もしていない他の行為とともに、発生してもよいことを理解し、認識されたい。さらに、開示の主題によるコンピュータ実装方法を実装するために、全ての図示した行為が必要とされ得るわけではない。さらに、コンピュータ実装方法は、代替として、状態図またはイベントを介して一連の相関状態として表せることを当業者は、理解し、認識するであろう。追加として、本明細書の以降および全体にわたって開示したコンピュータ実装方法は、このようなコンピュータ実装方法の、コンピュータへの輸送および転送を容易にするための製品に格納できることをさらに認識されたい。用語「製品」は、本明細書で使用されるように、任意のコンピュータ可読デバイスまたはストレージ媒体からアクセス可能なコンピュータ・プログラムを包含することを意図するものである。
【0054】
その上、少なくとも、深層学習処理の実施、および深層学習モデルの生成は、電気的および機械的な構成要素および回路機器の組合せから確立されるので、人間は、本明細書で開示した画像処理装置(例えば、画像処理装置102)または中央処理(例えば、中央処理装置104)あるいはその両方によって実施された処理を複製または実施することができない。さらに、人間は、画像処理装置(例えば、画像処理装置102)と中央処理装置(例えば、中央処理装置104)との間で伝送された、深層学習処理に関連したデータを圧縮することができない。
【0055】
開示の主題の様々な態様についての背景を提供するために、
図10および以下の議論は、開示の主題の様々な態様を実装することができる適切な環境を全体的に説明することを意図するものである。
図10は、本明細書で説明する1つまたは複数の実施形態を容易にすることができる実例の非限定的な動作環境のブロック図を示す。本明細書で説明する他の実施形態で用いる同様の要素の繰返しの説明は、簡潔さのために省略する。
【0056】
図10を参照すると、本開示の様々な態様を実装するための適切な動作環境1000は、コンピュータ1012を含むこともできる。コンピュータ1012も、処理ユニット1014、システム・メモリ1016、およびシステム・バス1018を含むことができる。システム・バス1018は、システム・メモリ1016を含むがこれらに限定されないシステム構成要素を、処理ユニット1014に連結する。処理ユニット1014は、様々な利用可能なプロセッサのいずれかであってもよい。デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャも、処理ユニット1014として用いることができる。システム・バス1018は、インダストリアル・スタンダード・アーキテクチャ(ISA)、マイクロチャネル・アーキテクチャ(MSA)、拡張ISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、VESAローカル・バス(VLB)、ペリフェラル・コンポーネント・インターコネクト(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、アドバンスト・グラフィックス・ポート(AGP)、Firewire(IEEE1394)、およびスモール・コンピュータ・システム・インターフェース(SCSI)を含むがこれらに限定されない任意の多様な利用可能なバス・アーキテクチャを使用した、メモリ・バスもしくはメモリ・コントローラ、周辺機器バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含むバス構造のいくつかのタイプのいずれかであってもよい。
【0057】
システム・メモリ1016は、揮発性メモリ1020および不揮発性メモリ1022を含むこともできる。基本入出力システム(BIOS)は、スタート・アップ中などにコンピュータ1012内の要素間で情報を転送するための基本ルーチンを収め、不揮発性メモリ1022に記憶される。コンピュータ1012は、取外し可能/取外し不能な揮発性/不揮発性のコンピュータ・ストレージ媒体を含むこともできる。
図10は、例えば、ディスク・ストレージ1024を示す。ディスク・ストレージ1024は、磁気ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティック(登録商標)のようなデバイスを含むこともできるがこれらに限定されない。また、ディスク・ストレージ1024は、他のストレージ媒体と別々に、または組み合わせて、ストレージ媒体を含むことができる。ディスク・ストレージ1024の、システム・バス1018への接続を容易にするために、インターフェース1026などの取外し可能または取外し不能なインターフェースが典型的に使用される。
図10は、ユーザと、適切な動作環境1000で説明した基本的なコンピュータ・リソースとの間の中間体として機能するソフトウェアも描写する。このようなソフトウェアは、例えば、オペレーティング・システム1028を含むこともできる。オペレーティング・システム1028は、ディスク・ストレージ1024に格納することができ、コンピュータ1012のリソースを制御し、アロケートするように機能する。
【0058】
システム・アプリケーション1030は、例えば、システム・メモリ1016に、またはディスク・ストレージ1024に記憶されたプログラム・モジュール1032およびプログラム・データ1034を通じたオペレーティング・システム1028によるリソースの管理を利用する。本開示は、様々なオペレーティング・システム、またはオペレーティング・システムの組合せによって実装できることを認識されたい。ユーザは、入力デバイス1036を通じてコンピュータ1012にコマンドまたは情報を入力する。入力デバイス1036は、マウス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、TVチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラ等などのポインティング・デバイスを含むがこれらに限定されない。これらおよび他の入力デバイスは、インターフェース・ポート1038を介してシステム・バス1018を通じて処理ユニット1014に接続する。インターフェース・ポート1038は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。出力デバイス1040は、入力デバイス1036と同じタイプのポートのうちのいくつかを使用する。したがって、例えば、USBポートを使用して、コンピュータ1012への入力を行い、コンピュータ1012からの情報を出力デバイス1040に出力することができる。出力アダプタ1042は、数ある出力デバイス1040の中でも、モニタ、スピーカ、およびプリンタのようないくつかの出力デバイス1040があり、特殊なアダプタが必要であることを示すために提供される。出力アダプタ1042は、限定ではなく例証として、出力デバイス1040とシステム・バス1018との間の接続手段を提供するビデオおよびサウンド・カードを含む。リモート・コンピュータ1044などの他のデバイス、またはデバイスのシステム、あるいはその両方が、入力と出力両方の能力を提供することに留意されたい。
【0059】
コンピュータ1012は、リモート・コンピュータ1044などの、1つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモート・コンピュータ1044は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースのアプライアンス、ピア・デバイス、または他の共通ネットワーク・ノードなどであってもよく、典型的には、コンピュータ1012について説明された要素の多くまたは全てを含むこともできる。簡潔さのために、メモリ・ストレージ・デバイス1046だけを、リモート・コンピュータ1044とともに示す。リモート・コンピュータ1044は、ネットワーク・インターフェース1048を通じてコンピュータ1012に論理的に接続され、次に、通信接続部1050を介して物理的に接続される。ネットワーク・インターフェース1048は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、セルラー・ネットワーク等などの有線または無線あるいはその両方の通信ネットワークを包含する。LAN技術は、ファイバ・ディストリビューテッド・データ・インターフェース(FDDI)、カパー・ディストリビューテッド・データ・インターフェース(CDDI)、イーサネット(登録商標)、トークン・リングなどを含む。WAN技術は、ポイント・ツー・ポイント・リンク、サービス総合デジタル網(ISDN)およびその変形形態のような回線交換ネットワーク、パケット交換ネットワーク、ならびにデジタル加入者線(DSL)を含むがこれらに限定されない。通信接続部1050は、ネットワーク・インターフェース1048をシステム・バス1018に接続するために用いられるハードウェア/ソフトウェアを指す。例証的な明瞭さのために、通信接続部1050をコンピュータ1012の内側に示すが、コンピュータ1012の外部にあってもよい。ネットワーク・インターフェース1048への接続のためのハードウェア/ソフトウェアは、例示のためだけに、通常のテレフォン・グレード・モデムを含むモデム、ケーブル・モデムおよびDSLモデム、ISDNアダプタ、ならびにイーサネット(登録商標)・カードなどの内部および外部技術を含むこともできる。
【0060】
本発明は、統合の任意の可能な技術詳細レベルにおけるシステム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持し、記憶することができる有形デバイスであってもよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック(登録商標)、フロッピー(登録商標)・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含むこともできる。コンピュータ可読ストレージ媒体は、本明細書で使用するように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号であると本質的に解釈されるべきではない。
【0061】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといった、ネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えることができる。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するためにコンピュータ可読プログラム命令を転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器のための構成データ、または、Smalltalk(登録商標)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、全面的にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして実行することができ、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続することができ、または、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行うことができる。いくつかの実施形態では、例えば、プログラマブル・ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【0062】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実装するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または機械を生み出すための他のプログラム可能データ処理装置のプロセッサに提供することができる。これらのコンピュータ可読プログラム命令は、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む製品を、命令を記憶したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に記憶することもでき、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の手法で機能するように指図することができる。コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実装するべく、コンピュータ実行処理を生み出すためのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作行為を実施するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードすることもできる。
【0063】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、命令のモジュール、セグメント、または一部を表すことができ、指定の論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック内に記された機能は、図に記された順序とは異なる順序で発生してもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行することができ、またはブロックは、時には、含まれる機能に応じて、逆の順序で実行することができる。ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実現できることにも留意されたい。
【0064】
1つのコンピュータ、または複数のコンピュータ、あるいはその両方で動くコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な背景で主題を上記で説明してきたが、本開示は、他のプログラム・モジュールであること、他のプログラム・モジュールと組み合わせて実装できることを当業者は認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実施すること、または特定の抽象データ型を実装すること、あるいはその両方を行う、ルーチン、プログラム、構成要素、データ構造等を含む。その上、本発明のコンピュータ実装方法は、シングル・プロセッサまたはマルチプロセッサ・コンピュータ・システム、ミニ・コンピューティング・デバイス、メインフレーム・コンピュータ、および、コンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話)、マイクロプロセッサ・ベースのまたはプログラム可能な消費者または産業用電子機器などを含む他のコンピュータ・システム構成で実践できることを当業者は理解するであろう。図示の態様は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実施される分散コンピューティング環境で実践することもできる。それでも、本開示の全てではないにしても、いくつかの態様は、スタンド・アロン・コンピュータ上で実践することができる。分散コンピューティング環境では、プログラム・モジュールは、ローカルとリモート両方のメモリ・ストレージ・デバイス内にあってもよい。
【0065】
本出願で使用されるように、用語「構成要素(component)」、「システム」、「プラットフォーム」、「インターフェース」などは、コンピュータ関連エンティティ、または、1つもしくは複数の特定の機能を伴う動作機械に関連したエンティティを指すこと、または含むこと、あるいはその両方を行うことができる。本明細書で開示されたエンティティは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであってもよい。例えば、構成要素は、プロセッサ上で動くプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、またはコンピュータ、あるいはその組合せであってもよいがこれらに限定されない。例証として、サーバ上で動くアプリケーションと、サーバの両方が、構成要素であってもよい。1つまたは複数の構成要素は、プロセスまたは実行スレッドあるいはその両方に常駐することができ、構成要素は、1つのコンピュータに局所化すること、または、2つ以上のコンピュータの間に分散させること、あるいはその両方を行うことができる。別の例では、それぞれの構成要素は、様々なデータ構造を記憶した様々なコンピュータ可読媒体から実行することができる。構成要素は、(例えば、ローカル・システム、分散システムにおける別の構成要素と、または、インターネットなどのネットワークを横断して信号を介して他のシステムと、あるいはその両方と対話する1つの構成要素からのデータといった)1つまたは複数のデータ・パケットを有する信号によるなどして、ローカルまたはリモートあるいはその両方のプロセスを介して通信することができる。別の例として、構成要素は、電気または電子回路機器によって動作する機械部品によって提供された特定の機能を伴う装置であってもよく、プロセッサによって実行されたソフトウェアまたはファームウェア・アプリケーションによって動作する。このようなケースでは、プロセッサは、装置の内部にあっても外部にあってもよく、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部を実行することができる。さらに別の例として、構成要素は、機械部品のない電子構成要素を通じて特定の機能を提供する装置であってもよく、電子構成要素は、電子構成要素の機能を少なくとも部分的に与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の手段を含むことができる。1つの態様では、構成要素は、例えば、クラウド・コンピューティング・システム内の、仮想マシンを介して電子構成要素をエミュレートすることができる。
【0066】
さらに、用語「または(or)」は、排他的な「または」ではなく、包括的な「または」を意味することを意図するものである。すなわち、別途指定されない限り、または文脈から明らかでない限り、「XがAまたはBを用いる」は、自然の包括的な並べ替えのいずれかを意味することを意図するものである。すなわち、XがAを用いる、XがBを用いる、またはXがAとBの両方を用いる場合、「XがAまたはBを用いる」は、前述の例のいずれかのもとで満たされる。その上、主題の明細書および添付の図面で使用されるような冠詞「a」および「an」は、単数形を対象とすることが別途指定されない限り、または文脈から明らかでない限り、「1つまたは複数」を意味するものとして、全体として解釈されなければならない。本明細書において使用されるように、用語「例(example)」または「例示的(exemplary)」あるいはその両方は、例、事例、または例証として機能することを意味するために利用される。誤解を避けるために、本明細書で開示した主題は、このような例によって限定されない。さらに、「例」または「例示的」あるいはその両方として本明細書で説明した任意の態様または設計は、他の態様または設計に対して好ましいものまたは有利なものと必ずしも解釈されるわけではなく、当業者に知られた同等の例示的構造および技法を排除することを意味するものでもない。
【0067】
主題の明細書で用いられるように、用語「プロセッサ」は、シングル・コア・プロセッサ、ソフトウェア・マルチスレッド実行能力を有するシングル・プロセッサ、マルチコア・プロセッサ、ソフトウェア・マルチスレッド実行能力を有するマルチコア・プロセッサ、ハードウェア・マルチスレッド技術によるマルチコア・プロセッサ、パラレル・プラットフォーム、および分散共有メモリを有するパラレル・プラットフォームを含むがこれらに限定されない任意の計算処理ユニットまたはデバイスを実質的に指すことができる。追加として、プロセッサは、本明細書で説明する機能を実施するように設計された、集積回路、特定用途向け集積回路(ASIC)、デジタル・シグナル・プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、ディスクリート・ゲートもしくはトランジスタ・ロジック、ディスクリート・ハードウェア構成要素、またはこれらの任意の組合せを指すことができる。さらに、プロセッサは、空間使用量を最適化するため、またはユーザ機器の性能を強化するために、分子および量子ドット・ベースのトランジスタ、スイッチ、およびゲートなどであるがこれらに限定されないナノ・スケール・アーキテクチャを活用することができる。プロセッサを、計算処理ユニットの組合せとして実装することもできる。本開示では、「記憶する(store)」、「ストレージ(storage)」、「データ・ストア(data store)」、「データ・ストレージ(data storage)」、「データベース(database)」、ならびに構成要素の動作および機能に関連した実質的に他の任意の情報ストレージ構成要素などの用語を、「メモリ構成要素」、「メモリ」に含まれるエンティティ、またはメモリを備える構成要素を指すために利用する。本明細書で説明するメモリまたはメモリ構成要素あるいはその両方は、揮発性メモリもしくは不揮発性メモリであってもよく、または揮発性メモリと不揮発性メモリの両方を含むことができることを認識されたい。限定ではなく例証として、不揮発性メモリは、リード・オンリ・メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM(登録商標))、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))を含むことができる。揮発性メモリは、RAMを含むことができ、例えば、外部キャッシュ・メモリとして機能する。限定ではなく例証として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、ダイレクトRambus RAM(DRRAM)、ダイレクトRambusダイナミックRAM(DRDRAM)、およびRambusダイナミックRAM(RDRAM)などの多くの形で利用可能である。追加として、本明細書におけるシステムまたはコンピュータ実装方法の開示のメモリ構成要素は、これらおよび他の任意の適切なタイプのメモリを、含むことに限定することなく、含むことを意図するものである。
【0068】
上記で説明してきたものは、システムおよびコンピュータ実装方法の単なる例を含む。当然、本開示を説明するために、構成要素またはコンピュータ実装方法のあらゆる想像可能な組合せを説明することはできないが、本開示の多くのさらなる組合せおよび並べ替えが可能であることを当業者は認識するはずである。さらに、用語「含む(includes)」、「有する(has)」、「保有する(possesses)」などが、発明を実施するための形態、特許請求の範囲、補遺、および図面で使用される限り、このような用語は、請求項において遷移語として用いられるときに「備える(comprising)」が解釈されるように、用語「備える」と同様に包括的であることを意図するものである。
【0069】
様々な実施形態の説明を例証のために提示してきたが、網羅的であること、または開示の実施形態に限定することを意図するものではない。説明した実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用した専門用語は、実施形態の原理、実用的用途、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書で開示された実施形態を当業者が理解できるように、選ばれた。