JP4901097B2 - グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法 - Google Patents

グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法 Download PDF

Info

Publication number
JP4901097B2
JP4901097B2 JP2004357352A JP2004357352A JP4901097B2 JP 4901097 B2 JP4901097 B2 JP 4901097B2 JP 2004357352 A JP2004357352 A JP 2004357352A JP 2004357352 A JP2004357352 A JP 2004357352A JP 4901097 B2 JP4901097 B2 JP 4901097B2
Authority
JP
Japan
Prior art keywords
computer
machine learning
processing unit
calculating
graphics processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004357352A
Other languages
English (en)
Other versions
JP2005182785A (ja
Inventor
ダブリュ.スタインクラウス デビッド
エー.バック イアン
ワイ.シマード パトリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005182785A publication Critical patent/JP2005182785A/ja
Application granted granted Critical
Publication of JP4901097B2 publication Critical patent/JP4901097B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Description

本発明は、一般にコンピュータ処理技術に関し、より詳細にはグラフィックス処理ユニット(GPU)を使用して機械学習技術(ニューラルネットワークなど)および他の非グラフィックスのアプリケーションを処理し、その処理を速め、最適化するシステムおよび方法に関する。
グラフィックス処理ユニット(GPU)は、現代のパーソナルコンピュータ(PC)の不可欠な一部分である。GPUは、リアルタイムの3次元(3D)グラフィックスのユーザへの表示を速めるように設計された単一チッププロセッサである。当初ハイエンドのグラフィックスワークステーションの特徴であったGPUは、従来の中央処理装置(CPU)では適していなかった、または単に遅すぎたグラフィック機能のアクセラレータとしてパーソナルコンピュータバスに進出した。
コンピュータグラフィックスは、一般に変更されたオシロスコープであるカリグラフィック表示装置上の線画として始まった。こうした表示の計算は、一般の座標変換、表示装置の境界へのクリッピング、および3D表示の透視変換を含むベクトル演算を必要とした。安価な商品である半導体メモリの出現がきっかけとなって、線画システムの代わりに、フレームバッファメモリを介してテレビのような表示を再生するラスタグラフィックスプロセッサが使用されるようになった。ユーザは一般に、ほとんどのアプリケーションの場合の線画ではなく、陰影付きのベタ塗りの表面を見ることを好むため、ラスタグラフィックスは、線画を迅速に表示した。線画で使用されていたような直線セグメントではなく、ラスタグラフィックスシステムの形状の構成単位(または基本要素)は、複数の三角形の配列から構成される多面体表面であった。表示の基本要素は、フレームバッファメモリに格納されたピクセルの矩形配列であった。配列の行は、ラスタ陰極線管(CRT)ディスプレイ上の個別の走査線に対応する。
グラフィックスが線画からラスタグラフィックスに発展していくにつれて、より大きい処理能力が必要となった結果、数学コプロセッサがPCに含まれるようになった。数学コプロセッサとは、ホストCPU命令ストリームを共有し、CPUメモリにアクセスできる一体型の浮動小数点コプロセッサである。他のタイプの一体型コプロセッサは、パラレルデータパスを有し、非同期実行を行い、またCPUメモリにアクセスすることができるMultimedia Extension(MMX)、Streaming SIMD Extension(SSE)などのCPUの拡張機能である。
3Dグラフィックスでの品質の高さおよび現実感の要求が絶えず高まっていった結果、より大きなグラフィックス処理能力が必要となった。この必要性を満たすために、計算集約的なグラフィックタスクを行うGPUが導入された。これによってCPUを楽にし、開放して、CPUが別の処理タスクを行えるようにした。現在の具体化では、GPUは、メインCPUメモリへのそれ自体の専用パス、およびそれ自体の専用のグラフィックスメモリを備えるPCの重要な構成要素である。数学コプロセッサとは対照的に、GPUは、それ自体の命令ストリーム、データパス、および専用メモリを備える自律した専用プロセッサである。
GPUの設計および構成の現在の傾向によって、専用メモリがより大きくなり、グラフィックスメモリに対する帯域幅がより高くなり、また内部並列が向上している。さらに現在のGPUは、絶えず高まるプログラム可能性の度合いを考慮して設計されている。プログラム可能性の導入によって、GPUは、非グラフィックスのアプリケーションでの使い道を見つけるほど十分な柔軟性を得た。さらに、GPUのデータ並列アーキテクチャは、計算集約型アプリケーションでは、CPUに比べて劇的なパフォーマンスの向上をもたらす。代替のグラフィックスアルゴリズムへの拡張および科学的なコンピューティング問題がいくつかの実例で探求されている。
しかし、対話型使用(音声認識や手書き文字認識など)を対象としたアプリケーションには、相対的にあまり関心が集まっていない。この1つの理由は、GPUによって処理するためのこうしたアルゴリズムの実装が困難であり、いくつかの制限があったからである。汎用コンピューティングでは、GPUは本質的に制限を有するストリームプロセッサである。こうした制限を扱い、回避するには、明白でも直観的でもないプログラミングおよび処理のスタイルが必要である。
こうした対話型使用アプリケーション(interactive use application)は、一般に自明ではない解を有し、大量のデータを扱う。こうした状況では、機械学習技術が好ましいソリューション技術である。機械学習技術は、トレーニング後、入力が正しく分類されるように、アルゴリズムのパラメータを自動的に調整することによって動作する。例えば、タスクが「A」のピクセル画像に正しいASCIIラベルを割り当てることであると仮定する。残念ながら、トレーニングは一般に、それら自体何十万もの演算を有するアルゴリズムに何十万もの対(入力、ターゲット)を提示することを伴う。その結果、最も早い使用可能なマシンでさえ、トレーニングには多大な時間がかかる可能性がある。また、実社会の様々な状態でアルゴリズムをテストし、または使用することは、法外に費用がかかる可能性がある。
したがって、GPUを使用して機械学習技術を処理するシステムおよび方法が必要である。さらに、GPUの制限を回避することによって機械学習技術の処理を速め、最適化するシステムおよび方法が必要である。このことによって、機械学習技術を使用した対話型使用アプリケーション(音声認識、手書き文字認識など)の解決にGPUの十分な処理能力が確実に利用されるようになる。
本明細書で開示した本発明は、グラフィックス処理ユニット(GPU)を使用して機械学習技術を処理するシステムおよび方法に関する。本発明は、CPU処理の一部をGPUに移植することによって中央処理装置(CPU)の計算の制限を軽減する。より具体的には、本発明は、従来CPUによって処理されていた機械学習アーキテクチャをGPUに移植する。機械学習技術は、GPUへの移植に特に適している。というのは、GPUは一般にCPUより強力であり、機械学習技術は、自明ではない解を有し、音声認識、手書き文字認識など、データアクセスよりかなり多くの計算を必要とする問題の解決を伴うからである。これは、計算に比べてデータアクセスが多いメモリベースの分類または検索とは異なる。GPUへのデータ転送にかなりの時間がかかる場合、GPUで計算を行うメリットは低下する。言い換えれば、計算に必要とされるのと同じ量のデータがGPUに転送される場合、データの転送がネックとなり、どんなネットの改良も無駄になる。
本発明の方法は、GPUでのその後のテスト無しにGPUを使用して機械学習技術をトレーニングするステップと、GPUでの事前のトレーニング無しにGPUを使用して機械学習技術をテストするステップと、GPUでトレーニングおよびテストを行うステップとを含む。特に、本明細書で開示した本発明は、対話型使用のコンピュータアプリケーションを処理するコンピュータ実施方法を含む。この方法は、グラフィックス処理ユニットを使用して機械学習技術を処理して関数の解を得るステップと、対話型使用のコンピュータアプリケーションによって使用できるようにその解を出力するステップとを含む。この方法は、グラフィックス処理ユニットを使用して機械学習技術のトレーニング用学習可能パラメータを得てトレーニング済み学習可能パラメータを得るステップと、トレーニング済み学習可能パラメータを使用して解を得るステップとをさらに含む。対話型使用のコンピュータアプリケーションは、音声認識アプリケーションおよび手書き文字認識アプリケーションのうちの1つとすることができる。さらに機械学習技術は、ニューラルネットワークとすることができる。
この方法は、学習可能パラメータを中央処理装置に格納するステップと、学習可能パラメータの少なくとも一部をグラフィックス処理ユニットに格納するステップとをさらに含むことができる。関数の解は、ピクセルシェーダを使用して、ベクトル内積および行列内積のうちの少なくとも一方である内積を計算することによって取得することができる。この方法は、内積をサブ問題に分解するステップと、ピクセルシェーダを使用してサブ問題にわたって複数回のパスを実行するステップとをさらに含むことができる。関数の解の取得は、ピクセルシェーダを使用して外積を計算することによって達成することができる。この方法は、テクスチャマッピングを使用して外積を計算するステップを含むこともできる。関数の解は、ピクセルシェーダを使用して行列の転置を行うことによって取得することができる。この方法は、テクスチャマッピングを使用して行列の転置を行うステップを含むこともできる。
本明細書で開示した本発明は、グラフィックス処理ユニットを使用して機械学習技術を速め、最適化するプロセスも含む。この方法は、グラフィックス処理ユニット上でピクセルシェーダ(pixel shader)を使用して機械学習技術の学習可能パラメータをトレーニングするステップと、グラフィックス処理ユニット上でピクセルシェーダを使用し、またトレーニング済み学習可能パラメータを使用して機械学習技術から結果を取得するステップと、アプリケーションによって使用できるようにその結果を出力するステップとを含む。
このプロセスは、グラフィックス処理ユニット上で学習可能パラメータのうちの少なくとも一部を探し出すステップと、ピクセルシェーダを使用して(a)ベクトル内積、(b)行列内積、(c)外積、(d)行列の転置のうちの少なくとも1つを計算するステップとを含む。機械学習技術はニューラルネットワークとすることができ、ニューラルネットワークは、(a)マルチプレーヤの完全接続ニューラルネットワーク、(b)重畳ニューラルネットワーク(convolutional neural network)のうちの少なくとも一方とすることができる。機械学習技術は、期待値最大化(EM)アルゴリズムおよびK−means技術およびLVQ(Learning Vector Quantization)技術を使用することもできる。このプロセスは、グラフィックス処理ユニットを使用してデータを前処理するステップも含む。
本明細書で開示した本発明は、グラフィックス処理ユニットを使用して機械学習技術を処理するコンピュータ実行可能命令を有するコンピュータ可読媒体も含む。媒体は、シェーダをグラフィックス処理ユニットにロードするステップと、クエリデータを中央処理装置にロードするステップと、シェーダを呼び出して、機械学習技術を使用してグラフィックス処理ユニット上でトレーニング済み関数を処理するステップと、対話型使用アプリケーションによって使用できるように結果を取得するステップとを含む。
コンピュータ可読媒体は、少なくとも一部の学習可能パラメータをグラフィックス処理ユニットに配置するステップと、入力データを取得するためにクエリデータを前処理し、入力データをグラフィックス処理ユニットにロードするステップとをさらに含む。さらに媒体は、シェーダを使用してグラフィックス処理ユニット上で基本的な演算(primitive operation)を計算するステップを含む。基本的な演算は、(a)ベクトル内積、(b)行列内積、(c)外積、(d)行列の転置のうちの少なくとも1つを含む。
機械学習技術は、ニューラルネットワーク、および勾配降下技術(gradient descent technique)とすることができる。コンピュータ可読媒体は、勾配降下技術の調整可能パラメータのうちの少なくとも一部をグラフィックス処理ユニットに配置するステップをさらに含む。対話型使用アプリケーションは、手書き文字認識アプリケーションとすることができる。さらに、機械学習技術は、ニューラルネットワークとすることができ、ニューラルネットワークを使用して分類を行うステップをさらに含む。また、対話型使用アプリケーションは、光学文字認識アプリケーションとすることもでき、機械学習技術は、ニューラルネットワークとし、ニューラルネットワークを使用して分類を行うステップをさらに含む。機械学習技術は、勾配降下技術とすることができ、グラフィックス処理ユニットに勾配降下パラメータを格納するステップと、勾配降下パラメータを2倍にすることによって勾配降下パラメータの仮数を拡張するステップとを含むことができる。
本発明は、以下の説明および本発明の態様を示した添付図面を参照することによってさらに理解することができる。他の特徴および利点は、本発明の以下の詳細な説明を添付図面と併せ読めば明らかになる。添付図面は、一例として本発明の原理を示している。
図面を参照すると、図中、同様の参照番号は、図面を通じて対応する部分を表している。
本発明の以下の説明では、その一部を構成し、本発明を実施できる特定の例を実例として示した添付図面を参照する。他の実施形態を使用してもよく、また本発明の範囲から逸脱することなく構造的な変更を加えてもよいことを理解されたい。
I.導入
グラフィックス処理ユニット(GPU)は、従来、リアルタイム3Dグラフィックス表示を速めるために使用されてきた。しかし、処理能力およびプログラム可能性の向上の結果、GPUは、他の非グラフィックス関連のプロセスを効率的に処理することもできる。こうしたプロセスは一般に、大量のデータおよび処理(計算流体力学など)を伴う代替のグラフィックスアルゴリズムおよび特定のコンピュータ問題に限定されている。しかし、音声認識および手書き文字認識などの対話型使用アプリケーションには、GPUアーキテクチャの制限および特徴のために、相対的にあまり関心が集まっていない。
本明細書に記載した機械学習GPU実行システムおよび方法は、CPU処理の一部またはすべてをGPUに移植することによって、CPUの計算の制限を軽減する。より具体的には、このシステムおよび方法は、様々な機械学習技術に使用できるアーキテクチャをCPUからGPUに転送する。GPUへの処理の転送は、制限を克服し、GPUアーキテクチャのフレームワーク内でよく働くいくつかの新しい技術を使用して達成される。こうした制限が克服された状態では、機械学習技術は、GPUでの処理に特に適している。というのは、一般にGPUは、一般のCPUよりかなり強力であるからである。さらに、グラフィックス処理と同様に、機械学習技術の処理は、自明ではない解および大量のデータの解決に関する問題を伴う。
II.動作環境の例
本明細書で開示した機械学習GPU実行エンジンおよび方法は、コンピューティング環境で動作するように設計されている。次の説明は、機械学習GPU実行エンジンおよび方法を実施できる適したコンピューティング環境の簡単な概要を提供するためのものである。
図1は、機械学習GPU実行エンジンおよび方法を実施できる適したコンピューティングシステム環境の例を示している。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境100を、動作環境100の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
機械学習GPU実行エンジンおよび方法は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。機械学習GPU実行エンジンおよび方法との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、例えばセルラー式電話やPDAなどのハンドヘルド、ラップトップ、またはモバイルコンピュータまたは通信装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
機械学習GPU実行エンジンおよび方法は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、機械学習GPU実行エンジンおよび方法は、通信ネットワークによってリンクされているリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に配置することができる。図1を参照すると、機械学習GPU実行エンジンおよび方法を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。
コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120(中央処理装置、すなわちCPUなど)、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含み得る。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISA(Industry Standard Archtecture)バス、MCA(Micro Channel Architecture)バス、EISA(Inhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスなどがある。
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。
コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。
「変調されたデータ信号」という用語は、信号に情報を符号化するように1つまたは複数のその特性が設定または変更された信号を意味することに留意されたい。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納されている。RAM132は一般に、処理ユニット120から直接アクセス可能な、かつ/または処理ユニット120が現在処理しているデータおよび/またはプログラムモジュールを含む。図1は、それだけには限定されないが一例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ141、リムーバブル不揮発性磁気ディスク152から読み取り、あるいはそこに書き込む磁気ディスクドライブ151、およびCD−ROMや他の光媒体など、リムーバブル不揮発性光ディスク156から読み取り、あるいはそこに書き込む光ディスクドライブ155を示している。
動作環境の例で使用できる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ141は一般に、インターフェース140などの非リムーバブルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インターフェース150などのリムーバブルメモリインターフェースによってシステムバス121に接続される。
上述し、図1に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110の他のデータの記憶域を提供する。図1では例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード162、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力することができる。
他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、無線受信機、またはテレビまたはブロードキャストビデオ受信機などがある。これらおよび他の入力装置は、しばしばシステムバス121に結合されているユーザ入力インターフェース160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェースおよびバス構造で接続してもよい。モニタ191または他のタイプの表示装置もまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース195を介して接続できるスピーカ197、プリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置181のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
III.概要
GPUは、リアルタイム3Dグラフィックス表示を速めるように設計されている。より優れたグラフィックスに対する要求が増えるにつれて、GPUは急速により強力でプログラム可能なものになりつつある。プログラム可能性の向上の結果、GPUは、他の多くのタイプの非グラフィックス関連プロセスの効率的な処理を行うこともできる。本明細書で開示した機械学習GPU実行エンジンおよび方法は、CPU処理の一部をGPUに移植することによってCPUの計算の制約を軽減する。より具体的には、本発明は、従来CPUによって処理されていた機械学習アーキテクチャをGPUに移植する。以下で詳述するように、これは、GPUのいくつかの制限を克服し、機械学習技術のGPU処理を速め、最適化するためのいくつかの実装技術の使用を必要とする。汎用コンピューティングでは、機械学習は、GPUへの移植に特に適している。というのは、GPUは一般のCPUより強力だからである。
図2は、本明細書で開示した機械学習GPU実行エンジンおよび方法の実装例を示すブロック図である。図2は、機械学習GPU実行エンジンおよび方法を実施し、使用できるいくつかの方法の1つにすぎないことに留意されたい。機械学習技術は、トレーニング段階およびテスト(または使用)段階中にGPUによって処理することができる。トレーニング段階とは、アルゴリズムのパラメータがトレーニングデータを使用して調整される計算を指す。テスト段階とは、システムを使用して、入力データおよびトレーニング済みパラメータに応じて有用な情報を計算する計算を指す。トレーニングは一般に時間がかかるが、行うのは一度だけでよい。テストは、配置したシステムを使用することを指し得るが、例えば文字認識または音声認識などの場合、時として非常に迅速な応答時間を必要とすることがある。トレーニングが長時間かかり、しかし最大限のハードウェア独立性が望まれる分野では、トレーニングはGPUで行われ、テストはCPUで行われる。また、テストアルゴリズムは簡単であるが、トレーニングアルゴリズムは非常に複雑でGPUでは稼動しない可能性もある(例えばニューラルネットワークにおけるトレーニング可能な重畳レイヤ(convolution layer)など)。この場合、学習アルゴリズムをCPUでトレーニングし、しかしテスト段階中はGPUを使用することができる。一部の場合には、当然、GPUでトレーニングおよびテストの両方を稼動させることが好ましいこともある。GPUの実施は、トレーニングおよびテストの両方について、機械学習処理速度を、CPUのみの実施に比べて最高で1桁スピードアップする。GPU技術は新しく、古いCPU技術より進化が早いため、この比率は増加している。
より具体的には、図2に示すように、コンピューティング装置110は、機械学習GPU実行エンジン200を含む。コンピューティング装置は、CPU120およびCPUメモリ130をさらに含む。CPUは、高速バス210(accelerated bus)を介してビデオインターフェース190と通信する。このバス210は、3Dグラフィックスのスループットに対する要求のために特に設計されたAccelerated Graphics Port(AGP)またはより新しいPCI Expressであることが好ましい。
ビデオインターフェース190は、GPU220およびGPUメモリ230を含む。GPU220は、バス210を介してCPU120にデータを転送することができる。また、機械学習GPU実行エンジン200もGPU220およびGPUメモリ230と通信する。機械学習GPU実行エンジン200は、トレーニングモジュール240およびテストモジュール250を含む。トレーニングモジュール240は、機械学習技術のトレーニング段階中に、GPUを使用して技術のパラメータを訓練するために使用される。テスト(または使用)モジュール250は、トレーニング済みパラメータおよび入力の所与の関数を計算するために使用される。計算の結果は、機械学習GPU実行エンジン200からCPU120に転送されて、音声認識など、対話型使用アプリケーションで使用される。
IV.システムの構成要素
図3は、一例として勾配降下アルゴリズムを使用する3層学習機械のトレーニングモジュールを示すブロック/フロー図である。図3は、一例として示したにすぎず、本発明を勾配降下アルゴリズムに限定するためのものではない。この例では、勾配降下を使用して学習機械の最適化が行われる。他の機械学習技術では、ベイジアンネットワーク、グラフィカルモデルなどのように、勾配の代わりに確率を伝えることもある。層の数または構成もまた制限的なものではなく、本発明はより多くの層、より少ない層、または異なる層の構成(不連続)を有することができる。パラメータをW=(W,W,W)とする。モジュール全体の入力はX、出力はY=Yである。
各層は、その入力Y、X、Wの関数Gを計算する。層の関数の観点から見ると、WまたはYは対称的であり、区別できない。これは、W、W、Wは、それ自体他の層によって計算することができることを意味する。Gは、YおよびWより多くの入力を有することもできる。各層は、その入力の関数を計算し(前方パス)、dE/dYで示した出力勾配にヤコビの転置を掛けることによって得られるその出力の導関数を伝えることによって隣接した層と通信する。これは後方パスである。定義上、GのヤコビJは、行列Jki=dY/dXとなる。式中、kは関数Gのk番目の出力、およびiは関数Gのi番目の入力の指数を表す。誤差関数Eは、費用関数を使用して最後の層の出力をターゲットTと比較する。異なる費用関数の例には、平均二乗誤差(MSE)、クロスエントロピー(CE)などがある。費用関数は、勾配、すなわち各変数が費用にどれだけ影響を与えるか、またどの方向に影響を与えるかを変数ごとに提供している。この勾配は、システムにおける変数およびパラメータごとに計算される。パラメータWは、費用関数を低減するように更新される。図4は、図3に示した3層学習機械のテストモジュールを示すブロック/フロー図である。
V.動作の概要
本明細書で開示した機械学習GPU実行エンジン200は、機械学習GPU実行方法を使用して、GPUによる機械学習技術の処理を可能にする。一般にこの方法は、GPUを使用して機械学習技術をトレーニングするトレーニング段階、およびトレーニング済み関数を使用して適用された問題を解決するテスト段階に分けることができる。次にこれらの各段階について説明する。
トレーニング段階
トレーニング段階では、機械学習GPU実行方法を使用して、機械学習技術の学習可能パラメータをトレーニングする。図5は、機械学習GPU実行方法のトレーニング段階の動作の概要を示すフロー図である。図5は、GPUで実行されるトレーニングセッションのデータフローおよび制御構造を表す。図は、任意のタイプの機械学習技術に固有のものではないことに留意されたい。多くのタイプの機械学習技術(SVM、K−means、LVQ(Learning Vector Quantization)、期待値最大化(EM)など)がこのアーキテクチャを使用することができる。上記の機械学習技術は当分野ではよく知られており、詳しい説明は行わない。図5に示すように、CPUは、命令をGPUに与え、GPUがこれらの命令を完了するまでブロックする。あるいは、CPUおよびGPUに同時に計算させることもできる。
図5を参照すると、機械学習GPU実行方法のトレーニング段階は、シェーダプログラム(P)、重みなど最初のトレーニング可能パラメータ(W)、および他の学習パラメータ(L)をロードする(ボックス500)ことによって開始する。このデータは次いでCPUからGPUに転送される(矢印505)。CPUからGPUへのデータ転送は、比較的費用がかかるため、CPUは、トレーニングループに入る前に、GPUにできる限りプリロードしておく。トレーニング可能パラメータ(W)は、GPUメモリ230に格納される(ボックス510)。好ましい実装では、学習パラメータ(L)は、ニューラルネットワーク層のそれぞれの重み、および各ユニットの閾値である。学習パラメータ(L)は、学習率と呼ばれる単一のスカラである。シェーダプログラム(P)は、順伝搬(forward propagation)および逆伝搬(backward propagation)および重みの更新に使用する様々なタイプのシェーダのためのものである。
CPUは次いでトレーニングデータに対してループを開始し、トレーニングデータ(X,T)のバッチをロードすることによってトレーニングデータの組を蓄積する(ボックス515)。(X)はピクセル画像、(T)はターゲットラベルを表す。グループ(またはバッチ)を使用する理由は、CPUとGPUとの間のデータ転送を開始する費用があるからである。いくつかのパターンのグループごとに同時にデータの転送を行うことがより効率的である。
次いでピクセル画像(X)は、(X)が(X’)に変換されるように前処理される(ボックス520)。次に(X’)および(T)はGPUに送信される(矢印525)。次いでトレーニングデータ(X’)は、トレーニングターゲットデータ(T)(ボックス535)とともにGPUメモリ230に格納される(ボックス530)。前処理には、いくつかあげると、データをよりよい形式にするためのデータの標準化、インテリジェントなまたは複雑な特徴の抽出、およびデータセットの質を高めるための歪みの生成など、多くの様々な機能があり得る。理論上、前処理は、GPUまたはCPUのいずれかで行うことができる。しかし実際には、GPUよりCPUでプログラムする方がかなり容易である。これは、前処理が計算的に高価でない場合、CPUで前処理を稼動させる方がかなり容易であることを意味する。一部の場合、演算の中には、GPUでは容易ではなく、非効率で、まったく実施できず、したがってCPUで稼動させなければならないものもある。一部の場合、前処理は、トレーニング段階およびテスト段階で異なっていてもよい。例えばトレーニング中、元のデータから人工データ(変換、回転など)を生成することができる。このプロセスは、テスト時に生成を向上させることで知られている。
前処理にトレーニング可能パラメータを含めることができることに留意されたい。これは、トレーニング可能パラメータが大域的最適化の一部であり、GPUに常駐する学習パラメータとともにトレーニングされる場合でさえも当てはまる。しかし、次のパターンが更新された前処理から利益を得るように、場合によっては、各パターンの後に、CPUに常駐するパラメータを更新するために情報(誤差勾配、負のフィードバックなど)をGPUからCPUに戻す必要があるという難問が生じる。現在、GPUからCPUへのデータフローは最適化されない。というのは、一般にグラフィックカードは、データを画面には送信するが、CPUには戻さないように設計されているからである。その結果、現在のアーキテクチャでは、すべてのトレーニング可能パラメータをGPUで保持することが好ましい。他のすべてのデータをCPUで保持し、処理はGPUで行うことが好ましい。あるいは、トレーニング可能パラメータをCPUおよびGPUの両方に配置することができる。
トレーニングデータ(X’)がGPUにロードされると、CPUは、機械学習技術の処理に必要な様々なシェーダを稼動させるようGPUに命令する(ボックス540)。一般の機械学習技術は、GPU220にロードされた学習モジュール545によって表される。学習モジュール545は、前処理された入力(X’)およびトレーニング可能パラメータ(W)に応じて関数G(X’,W)を計算する学習機械550を含む。目的は、この出力をターゲット値(T)にできるだけ近づけることである。G(X’,W)と(T)との間の誤差555が計算され、誤差信号(Wに対する勾配など)が学習機械550に送り返される。次いでG(X’,W)と(T)との間の誤差を減らすために重み(W)が更新される。
一例として、2層ニューラルネットワークをトレーニングするとき、前方および後方の伝達は、約20の異なるシェーダ(その一部は複数回呼び出される)に相当する。シェーダの数および複雑度は、当然、使用するアルゴリズムによって異なり得る。シェーダは、1つのグループ内のパターンごとに呼び出される(例えば一部の場合では500回)。確率的勾配降下の場合、グループ内の各パターンを処理した後で学習パラメータが更新される。バッチ勾配降下の場合、学習パラメータが更新される前に学習パラメータの勾配がいくつかのパターンにわたって蓄積される。確率的勾配降下を使用すべきか、バッチ勾配降下を使用すべきかは、アプリケーションおよび学習アルゴリズムにかなり依存する。SVMなど一部の学習アルゴリズムでは、問題は生じない。手書き文字認識およびニューラルネットワークでは、確率的勾配降下機械学習技術が好ましい機械学習技術である。
CPUがトレーニングループ中のGPUからフィードバックを受け取ることができるように、次の2つのプロセスを普遍性のために追加することができる。例えば、図5に示すように、CPUは、トレーニング統計値を収集し、トレーニング進捗データ(training progress data)を取得することができる(ボックス560)。これは、GPUが更新済みのトレーニング可能パラメータ(W)および誤差をCPUに送信することによって達成される(矢印565)。このプロセスは、図5の点線のボックスで示すように、オプションである。トレーニング進捗データを使用して、学習パラメータ、またはいくつかの種類のパターンの提示の頻度さえも調整することができる(ボックス570)。例えば、ニューラルネットワークでは、時として学習が進行するにつれて学習率を低下させるのが望ましいことがある。「ブースティング(boosting)」と呼ばれる別のクラスのアルゴリズムでは、いくつかのパターンの頻度、またはその学習の影響は、システムによる誤差に応じて変更することができる。
前処理でのトレーニング可能パラメータも、GPUからの誤差信号に応じて変更することができる。これは、誤差信号がCPUに戻り、CPUで学習パラメータを更新することができるようにすることによって達成される。グループのサイズは、それに応じて変更することができる。極端には、グループのサイズは1であり、これは、前処理のセクションで上述したように、誤差信号がGPUから戻るとすぐに、CPUのトレーニングパラメータがそれぞれGPUに提示された後で更新されることを意味する。
次いで、トレーニングが完了したかどうかに関する決定が行われる(ボックス575)。これは、一定の回数の反復の後、トレーニングデータのバッチのすべてが処理されたとき、または所望の誤差閾値が達成されたときに決定することができる。トレーニングが完了していない場合、トレーニングループがデータのロードから再開する(ボックス515)。そうでない場合、最後にトレーニングされたパラメータ(W)が取得される(ボックス580)。これは、GPUがパラメータ(W)をCPUに送信することによって達成される(矢印585)。次いでトレーニングが完了する(ボックス590)。
テスト段階
テスト段階では、機械学習GPU実行方法を使用して入力およびトレーニング可能パラメータの関数を計算する。図6は、機械学習GPU実行方法のテスト段階の動作の概要を示すフロー図である。図6に示すように、機械学習GPU実行方法は、一部のトレーニング可能パラメータWおよび入力Xの所与の関数Gを計算する。トレーニング可能パラメータは、GPU、CPU、または他の任意の手段によって計算されている可能性があることに留意されたい。さらに、トレーニング可能パラメータは、トレーニングの結果であっても、またはそうでなくてもよい。この点で、図6は、図5に示したトレーニング可能パラメータのトレーニングには依存していない。
図6では、図5のアーキテクチャと類似のアーキテクチャが使用されている。特に、図5および図6のアーキテクチャは、データ構造およびシェーダプログラムPを共有する。しかし1つの重要な違いは、トレーニングがすでに完了しているため、逆伝搬シェーダはもはや必要ないということである。機械学習GPU実行方法のテスト段階は、シェーダプログラムPおよびトレーニング可能パラメータWをGPUにロードする(ボックス600)ことによって開始する。トレーニング段階と同様、テスト段階は、認識/使用ループ外にできる限りダウンロードし、事前に計算しようとする。次いでシェーダプログラムPおよびトレーニング可能パラメータWは、GPUに送信される(矢印605)。特に、シェーダプログラムPは、GPU220に送信されて処理を行い、トレーニング可能パラメータW610はGPUメモリ230に格納される。
次に、関数Gが計算される1組のパターンXが収集され、ロードされる(ボックス615)。CPUとGPUとの間の通信を開始するための費用があるため、グループ分けを行うことによって、この費用をいくつかのパターンにわたって消却することができる。次いでパターンXは、CPUからGPUに送信される前に前処理されてX’になる(ボックス620)。次いでX’はGPUに送信される(矢印625)。入力データX’630は、GPUメモリ230に格納される。
前処理は、CPUまたはGPUのいずれかで行うことができる。しかし、前処理は、計算的に費用がかかりすぎない限りCPUで行われることが好ましい。前処理は、標準化、および重要な情報および特徴をデータから抽出するなどの機能に有用である。前処理後、パターンX’は、グループとしてGPUに送信される(矢印625)。
次に、CPUは、シェーダプログラムPを使用するようGPUに命令する(ボックス635)。関数モジュール640は、GPUに存在し、トレーニング済み関数645を含む。トレーニング済み関数645をシェーダプログラムとともに使用して、関数Y=G(X’,W)を計算する。GPUメモリ230内の一時計算スペース650を使用して、この計算を助けることができる。この計算から、グループの各パターンの結果Y655がGPUメモリ230に蓄積され、関数モジュールの出力として送信される(ボックス660)。次いで結果Yは、CPUに送り返され(矢印665)、結果YはCPUで取得される(ボックス670)。繰り返しになるが、GPUからCPUへの転送はかなり費用がかかるため、グループ分けを行い、Yのサイズを最低限に抑えることが有利である。手書き文字の分類の例では、Yは画像Xのクラスであるにすぎず、したがって非常に小さい。クエリデータXの追加のバッチがあるかどうかに関する決定が行われる(ボックス675)。バッチがある場合は、認識/使用ループが再開する。そうでない場合、結果Yが出力として送信される(ボックス680)。
VI.動作の詳細
機械学習の問題の説明
いくつかの機械学習技術は、非常に大きい行列演算として実行することができる計算を核として含んでいる。特に興味深いのは、大きい行列/ベクトル乗算である。一例として、手書き文字認識に使用されるニューラルネットワークは、一般に1対の層を含んでいる。図7は、ニューラルネットワークにおける1対の層の詳細図である。
図7を参照すると、次のように、隠れ変数(hidden variable)の計算が行列乗算として実行され、次いでマッピングステップが行われる(1層の場合の計算)。
[w][i]=[o’]
[o]=f([o’])
式中fはシグモイド関数
Figure 0004901097
またはtanh関数
Figure 0004901097
である。こうした2つの層はカスケードされて、結果が生成される。入力のベクトルサイズ、隠れ変数、および出力は何千にも及ぶ。図7および上記はニューラルネットワークに基づいているが、他のいくつかの機械学習問題は、上述した大きい浮動小数点ベクトルに対する反復演算の一般的なモデルに適合することに留意されたい。
GPUでの基本的な演算
幸いにも、ニューラルネットワーク、期待値最大化、および他の多くの勾配降下ベースのアルゴリズムなどの多くの機械学習技術は、簡単な基本要素(または構成単位)から成る。基本要素は、
・内積(ベクトルまたは行列とベクトルとの間)
・外積(ベクトル間)
・線形代数(ベクトルまたは行列に対するスカラによる加算、減算、乗算)
・ベクトルまたは行列に適用される非線形(tanh、シグモイド、閾値処理(thresholding))
・行列の転置
機械学習GPU実行方法は、ピクセルシェーダを使用してこれらの各演算を実施する。さらに、この方法によって、これらの各演算を共にトレーニングのために使用したり、実際の設定に使用したりできるようになる。この方法は、ニューラルネットワーク、または後述したものと同様の基本要素またはその単なる拡張から成る他の任意の学習アルゴリズムとともに使用することができることに留意されたい。
ピクセルシェーダを使用したGPU計算
機械学習GPU実行方法は、1つまたは複数のピクセルシェーダを使用して上記のすべての演算を実施する。ピクセルシェーダは、グラフィックス処理パイプラインで使用される。ピクセルシェーダは、ピクセルレンダリングハードウェア上で実行される個々のプログラムである。特に、三角形をピクセルに変えるプロセスは、「ラスタ化」と呼ばれる。ハードウェアは、三角形を入力としてみなし、三角形がレンダリングされる前にロードすることができるプログラムで指定する各ピクセルをレンダリングするよう命令することができる。これらのプログラム可能な三角形レンダラを「ピクセルシェーダ」と呼ぶ。シェーダでのプログラムの命令は、それぞれ直接的なハードウェアの実施を有するため、アセンブリ言語に近い。例えばHigh Level Shader Language(HLSL)、Nvidia(登録商標)社のC graphics(Cg)、DirectXなど、シェーダの競合する言語(およびハードウェア)がある。ピクセルシェーダによって導入された新しい柔軟性によって、表面の写実的なレンダリングだけではなく、GPUを汎用並列プロセッサにより近づけることができるようになる。
機械学習GPU実行方法は、GPUを汎用並列プロセッサとして使用する。さらにこの方法は、ピクセルシェーダを使用して、機械学習技術で使用される様々な基本的な演算を実施する。並列専用GPUハードウェアの結果、これらのアルゴリズムのトレーニングおよび使用は、GPUでは、CPUに比べて1桁速く稼働する。
DirectXのDirect3D構成要素では、頂点シェーダおよびピクセルシェーダと呼ばれる2つの要素がある。DirectXは、GPUのハードウェア加速機能をアプリケーションに利用させるMicrosoft(登録商標)社によって開発された1組のアプリケーションプログラムインターフェース(API)である。現世代のピクセルシェーダは、プログラム可能性が高い。両方のタイプのシェーダは、三角形(グラフィックオブジェクトの基本単位)の出力装置へのレンダリングと関係がある。頂点シェーダは、三角形の頂点の空間変換および動画化などのタスクに使用することができる(したがってこのように名付けられている)。単一の三角形がラスタ化されると、ピクセルシェーダを使用して個々のピクセルに陰影を付ける(または個々のピクセルのカラー値を計算する)。
ピクセルシェーダは、DirectXで定義された限られたハードウェア依存型言語であるDirectXシェーダアセンブリ言語で一連の命令として表現される。シェーダでのコードは、レンダリングされる三角形のピクセルごとに一度実行され、その唯一の影響は、そのピクセルの4ベクトルの値を設定することである。シェーダ言語の制限、および副作用の欠如は、GPUが任意の順序で、そのハードウェアがサポートできるだけの並列処理を使用して自由にピクセルをレンダリングでき、その結果非常に高いパフォーマンスが得られることを意味する。ピクセルが4ベクトルであることから、さらに別の種類の並列処理を行うことができ、ピクセルシェーダの各実行によって、4つの要素(ベクトルの4つの隣接する要素など)を同時に計算することができる。
アセンブリ言語プログラミングで使用する機能の多くは、ピクセルシェーダ内で使用することができる。これらには、定数、レジスタ、加算、減算、乗算、逆数、小さい1組の超越関数などがある。しかし、他のよく知られているルーピング、ブランチングなどの構成体は、一般には使用できない。これは、シェーダ当たりの命令の数が制限されており(一般的なGPUで96個の命令)、シェーダはレンダリングされるピクセル以外のメモリを変更することができないからである。これらの制限は、一部のアルゴリズムはGPUによる処理に適しておらず、仮に実施できたとしてもCPUに比べてGPUでの稼働の方が遅いことを意味する。特定の機械学習アルゴリズムをGPUで実行することができるかどうかを評価するために、アルゴリズムを構成する個々の演算のそれぞれを検査する必要がある。
単位演算(unit operation)の実施
機械学習GPU実行方法は、1つまたは複数のピクセルシェーダを使用して黒丸付きにした(bulleted)基本的な演算のそれぞれを実施する。第1の問題は、シェーダに結果を計算させることである。結果とはGPUメモリ内の矩形である。言い換えれば、結果は浮動小数点値(4ベクトル)の2次元行列でなければならない。しかし、ピクセルシェーダは、所与の三角形のすべてのピクセルをレンダリングする。この問題を克服するために、機械学習GPU実行方法は、三角形で矩形のビューポートを指定する。図8は、機械学習GPU実行方法によって使用される矩形メモリ技術を示している。図8は特に、レンダリングされるピクセルを含んでいる三角形800、および三角形800内の矩形ビューポイント810を示している。機械学習GPU実行方法によれば、GPUは、ビューポイント810と三角形800との共通部分のピクセルを計算するだけでよい。したがって所望の矩形領域を計算するために、領域がビューポイント810として指定され、三角形800で囲まれる。これがレンダリングターゲットとなる。
行列の代わりにベクトルをレンダリングする必要がある場合、同じ技術が適用される。唯一の違いは、わずか1ピクセルの高さのビューポイントの矩形が指定されることである。同様に、スカラ値をレンダリングするために、1×1ピクセルのビューポイントを使用することができる。
この技術およびピクセルシェーダ内で使用可能な汎用プログラミング機能では、ベクトルおよび配列についてのx=F(x)のような単項演算を実施することができる。他のオペランドから読み取る必要がある演算では、GPUメモリ構成を検査する必要がある。特に、DirectXでは、メモリの矩形領域を作業領域として割り当てることができる。図9は、機械学習GPU実行方法のGPUメモリ構成を示している。図9に示すように、作業領域900は、GPUメモリ内に生成されている。現在のハードウェアでは、作業領域は、2048×2048ピクセル(各4値)の正方形領域の最小割り振りから生成することができる。このサブ矩形910から、シェーダ演算は、t 920、t 930、t 940など他のサブ矩形からオペランドをレンダリングし、フェッチすることができる。これらのフェッチは、オペランドリード(operand read)950を介して達成される。
このメモリ構成を容易に行えるようにするDirectXの機構がテクスチャマッピングである。テクスチャマッピングは、レンダリングする面上に画像を置く必要性から生じる。例えば、木星、シマウマ、レンガ壁などのテクスチャの表面をレンダリングするとき、その面に描かれたパターン、光線の当たり方、角度、反射などを考慮する必要がある。この演算では、矩形ルックアップテーブルへのインデックスがラスタ化された三角形のターゲットエリアにわたって双線形に挿入される。(レンダリングされるエリア以外の)作業領域の矩形エリアをテクスチャとみなすことによって、こうした領域を宛先矩形にマッピングすることができる。したがって、宛先矩形内の任意のx,y位置のピクセルを計算すると、テクスチャ矩形の形状的に対応するピクセルの値へのアクセスがある。例えば、サイズa×bピクセルの宛先矩形がレンダリングされている場合、同じくa×bピクセルの別の領域をテクスチャマッピングすることができる。これによって、宛先のi番目のピクセルに対応するaおよびbのソース矩形値へのシェーダコード内での直接アクセスが得られる。この技術の簡単な適用によって、任意の行列、ベクトル、またはスカラ値を、作業領域内の同じサイズの行列、ベクトル、またはスカラなどにコピーできるようになる。あるいは、xピクセル×1ピクセルのテクスチャ領域を宛先矩形にマッピングすることができる。これは、レンダリングされる宛先ピクセルのy座標ではなくx座標に応じてその値が決まるルックアップテーブルへのアクセスを提供する。
テクスチャの有用性は、シェーダ内のレジスタ値に対する演算を使用することによって拡張することができる。レジスタは、シェーダが所与のピクセルをレンダリングするために使用できるローカル変数である。それらの値は、ピクセル間では共有することはできない(これは並列処理の前提を破ることになる)が、中間結果として(ローカルに)使用することはできる。例えば、その値を新しい位置にコピーしながら配列またはベクトルを転置することができる。その左、右、上、および下の座標がl、r、t、およびbのソース矩形を仮定する。次いで、その座標がt、b、l、およびrのテクスチャ矩形を指定する。ピクセルシェーダ内でxおよびyのテクスチャ座標が交換された後で、それらを使用して値をソースからフェッチし、宛先にコピーする。レンダリングの最後で、宛先はソースの転置を含む。
図10は、テクスチャ三角形を使用したテクスチャマッピングの使用を示している。図10に示すように、宛先1000の現在のピクセルのレンダリングは、指定されたソースベクトル1020のテクスチャ矩形1010からテクスチャ座標(15,7)を取り出す。テクスチャ値をフェッチする前に、転置される実際の真のソースベクトル1040内に配置されている位置(7,15)を有するテクスチャ矩形1030からの値が実際に読み取られるように、行および列の座標が逆にされる。
DirectXによって、テクスチャマッピングを使用して、複数のソース矩形を現在の宛先にマップすることができる。現在のハードウェアでは、各パスで少なくとも8つのこうしたマッピングを使用することができる。複数のソースでは、(ベクトルA−ベクトルB−>ベクトルC)などの演算を実施することができる。Cでの各ピクセルで、AおよびBからテクスチャマッピングされた値がフェッチされ、レジスタ値に対して基本的な計算が行われ、結果が格納される。
2つのベクトルから行列へのテクスチャマッピングも、外積(ベクトルA×ベクトルB−>C)を実施する方法を提供する。ベクトルAを1ピクセル幅の行ベクトル、およびBを1行高さの列ベクトルであると仮定する。これらの縮退矩形(degenerate rectangle)を行列Cの矩形にテクスチャマッピングする。次いでCのピクセルx、yをレンダリングすると、テクスチャのサンプリングによって、Aのy番目の要素およびBのx番目の要素が得られる。これらは単に、乗算し、格納するのに必要な値である。
4つの成分の使用
内積の実施を説明する前に、GPU作業領域が4つの成分を有しているという点から各単位演算について説明する。各ピクセルがx、y、z、およびwの値から成るためにこれらの成分が生じる。ラベルxおよびyは、ここでは、上記の説明でピクセル座標を参照するxおよびyと混同しないものとする。4つの成分は従来、4次元物体空間に座標を格納するために使用されている。機械学習GPU実行方法は、GPUプログラミングモデルおよびハードウェアのこの特徴を活用して、より速く計算を行う。成分のうちの3つを無視して、すべての計算を例えばx平面で行うこともできるが、その結果得られるプログラミングの単純化は、パフォーマンスの面で代償が高くなる。
成分を利用するために、ピクセル平面の数学的配列またはベクトル内の位置へのマッピングが定義される。ベクトルの場合、最も簡単なマッピングは、
ピクセル0:x−>要素0
ピクセル0:y−>要素1
ピクセル0:z−>要素2
ピクセル0:w−>要素3
ピクセル1:x−>要素4
などである。
これを行列に拡張するため、行列の各行(または列)がベクトルであることが観察される。上記のマッピングは、各行(または列)に適用される。4つの成分を行数(row dimension)にまとめる(collapse)か、列数(column dimension)にまとめるかは選択であり、この選択は、プログラミングを単純化する方法で行列ごとに個々に行うことができる。
行列またはベクトルの要素からピクセルおよび成分へのマッピングが与えられている場合、コピー演算はまったく影響を受けないことがわかる。シェーダ命令texldおよびmovは、多くの他のものと同様、一度に1つのピクセルに対して作用するため、それぞれ4つの値をテクスチャピクセルからレジスタに、またレジスタから宛先ピクセルに移動させる。
ベクトルに対する転置演算も変わらない。成分は常にベクトルの寸法にまとめられる。行列の場合、コードは変わらないが、まとめる方向がデータとともに転置されることに留意されたい。
数学的演算を適用することもできる。多くのシェーダ命令を適切な構文とともに4ベクトルの値、または単一の値に使用することができる。例えば、指数r1.x,r0.xは、レジスタ0のx平面をフェッチし、それをべき乗し、その結果をr1のx平面に格納する。
外積
2つのベクトルの外積を、4つすべての成分の使用で達成することができるが、別の新しい技術を導入する必要がある。この技術は、機械学習GPU実行方法によって使用され、インデクサテクスチャ技術(indexer texture technique)と呼ばれる。一般にこれは、上述したように要素にマップされたベクトルの4つの成分のうちのただ1つの成分の値を選択する方法である。
一例として、ベクトルAがサイズaの列ベクトルであると考える。ベクトルBはサイズbの行ベクトルである。外積C、すなわちa行高さおよびb列幅の行列を計算することが望ましい。Cは、その4つの成分を列数すなわちyにまとめることである。言い換えれば、ピクセルに関しては、Cのメモリ矩形はb列幅であり、しかしa/4行高さである(各ピクセル行は行列の4つの行を格納するため)。aは4の倍数である必要がある。
Cの各ピクセルを計算するシェーダルーチンが必要である。テクスチャマッピングは、Aについては単純であるが、Bについては単純ではない。Cのi番目のピクセルを計算するとき、Bのi番目の値(ピクセルではない)へのアクセスが必要である。例えば、Cのピクセル0,0の4つの成分では、以下の値を計算する必要がある。
0,0=A*B
1,0=A*B
2,0=A*B
3,0=A*B
この計算は、1つのGPU mul(乗算)命令で行うことができる。これには、(r2にA〜Aを、r3のw成分にBを格納するなど)何らかの方法で値Bをレジスタのw平面に置くことが必要である。したがって次のようになる。
mul r1,r2,r3.wwww
もう1ステップ戻って、そのピクセル内の隣接するB〜BからBを選び出す「ビットマスク」があった場合、dp4(ドット積)命令を使用してr3のw成分に値を抽出することができることになる。r5が(1,0,0,0)を含み、r4が(Bのテクスチャマッピングによってロードされた)B〜Bを含むと仮定する。次いでこの命令は、(r4.x*1+r4.y*0+r4.z*0+r4.w*0)を計算する。これはr4.xに等しいか、B
dp4 r3.w,r4,r5
となる。
内積は、行列Cの列0(0,1,0,0)がレンダリングされるとき、列1(0,0,1,0)がレンダリングされるとき、列2がレンダリングされるときなど、値(1,0,0,0)が使用可能な場合に計算することができる。これがインデクサテクスチャ技術の目的である。インデクサテクスチャ技術は、4ピクセル幅および1ピクセル高さで、次の値に初期設定される非常に小さいテクスチャを使用する。
Figure 0004901097
これら4つのピクセル値は、上述した技術を使用して個々の値をベクトルBから抽出するのに必要なすべての「ビットマスク」から成る。残るのは、インデクサテクスチャ技術の正しいピクセルをシェーダの各呼出で使用可能にする方法を見つけることである。このタスクを達成するために、機械学習GPU実行方法は、テクスチャマッピングのさらに別のアプリケーションを使用する。
この時点まで、テクスチャピクセルと宛先ピクセルとの間の1対1マッピングを保つ方法でテクスチャマッピングが使用されてきた。これは、同じ数のピクセルを含むテクスチャ座標矩形および宛先矩形を定義することによって行われた。インデクサテクスチャ技術では、次のようにインデクサテクスチャ自体のサイズ(定義上1.0×1.0テクスチャ座標単位)の倍数であるテクスチャ座標矩形が定義される。行列Cの幅がwピクセルの場合、その幅がw/4(必ず整数)であるインデクサテクスチャのテクスチャ座標矩形が指定される。Cの幅にわたる各ピクセルでシェーダが呼び出されるので、インデクサテクスチャ座標は0からw/4に及ぶ。言い換えれば、Cのピクセルを4つ通過するごとに、インデクサ座標がある整数値から次の整数値に変わる。Cの4ピクセルごとにテクスチャ座標の端数部分を考える場合、これは0から1に及ぶ。Cの各ピクセルで正しい「ビットマスク」を得るために、インデクサテクスチャをサンプリングするのに必要な値がまさにこれらの値である。
frc r3,t3 //インデクサテクスチャ座標の端数部分をレジスタ3にロードする
texld r4,r3,sl //レジスタ3のテクスチャ座標を使用してインデクサテクスチャをサンプリングする
上記の技術を使用して、2つのベクトルの外積を計算するピクセルシェーダが作成される。
内積
内積とは、(行列A*ベクトルB−>ベクトルC)と表すことができる演算である。内積は問題を提起する。というのは、いくつかの値にわたってループしている間、合計を累積することが必要となるからである。これは、隣接するピクセル間に通信がないことを前提とするシェーダアーキテクチャに反する。このため、内積は、単一のピクセルシェーダとして実施することができない。しかし、以下に示すように、一連のシェーダおよび一部の追加メモリを使用することによって内積を実施することができる。
サイズa行×b列の行列Aに、サイズaの行ベクトルであるベクトルBを掛ける。Bは通常、列ベクトルとして表されるが、行ベクトルの使用によってGPUの計算が単純化することに留意されたい。ベクトルの転置済みのコピーは、機械学習GPU実行方法を使用して作成することができるため、これは障害ではないことを思い出されたい。その結果のCは、高さbの列ベクトルである。行列Aは、上記のように、ピクセル当たりその4つの成分がy(行)数にまとめられた状態で構成される。
図11は、内積を示すブロック図である。図11の対応する式は
=A0,0*B+A0,1*B+A0,2*B+A0,3*B
=A1,0*B+A1,1*B+A1,2*B+A1,3*B
などである。
レンダターゲットCは1次元であることに留意されたい。これは、前の手法を無効にする。というのは、定義された任意のテクスチャマップはそれぞれ、Cの任意の所与のピクセルの1つの値しか有することができないからである。しかしCの各値は、B、およびAの1行内のすべての値に応じて決まる。したがって別の手法を使用して、シェーダのAおよびBから複数の値にアクセスする必要がある。この手法は、まず、複数のテクスチャマップ(現在のハードウェアでは8個が妥当な数である)を使用して、複数のオペランドを効率的に読み取る。次に、シェーダ内でアドレス計算を使用して、追加のオペランドを読み取る。
これらの技術でさえ、単一のレンダリングパスで大きい内積を計算することはできない。これは、ピクセルシェーダがブランチングやルーピングを使用することができず、また、限られた数(現在の1回の実施では96)のアセンブリ命令しか含めないからである。従って各シェーダは、命令制限に到達するまでにある量の計算しか行うことができない。幸いなことに、内積は、一度に考えられるAの列数を制限することによって1組のサブ問題に分解することができる。これは、1組の列ベクトル部分積を生成する。次いで内積結果を含む単一の列ベクトルを取得するまでこれらの部分積を繰り返し減らすことができる。
分解の技術は次のとおりである。まず、Aの12列のサブ行列にBの12列のサブベクトルを掛けるシェーダが作成される。8つのテクスチャマップが使用可能であり、6つはAに、2つはBに割り振られる。Aの6つのマップはすべて同じサイズのソース矩形を、しかし0ピクセルから5ピクセルまでの6つの異なる横方向のオフセットで有している。これによって行列の最初の6列への直接アクセスが得られる(横方向では1ピクセルは1列に等しいことを思い出されたい)。Bの2つのマップも1ピクセルだけオフセットしており、Bの最初の8列への直接アクセスが得られる(この場合、1ピクセルは4列に等しい)。
シェーダ手順は、GPUの一時(スクラッチ)メモリを使用する宛先矩形を用い、12列の部分積について実行される。Cの4行(1ピクセル)を一度に計算するシェーダ手順は、次のとおりである。
a)4つのテクスチャマップが互いに水平方向に1ピクセルだけオフセットしている状態でtexld(テクスチャのロード)命令を4回使用して、Aの最初の4つのピクセルをレジスタにロードする。各ピクセルは4つの行値を含む。別のtexldを使用してBの1ピクセル(4列)をロードする。
b)mulを使用して最初の4つの積をレジスタ0に格納する。これは、レンダリングされた第1のピクセルに関してA0,0*B、A1,0*B、A2,0*B、およびA3,0*Bを計算する。表記xxxxは、4つすべての積についてレジスタ1のx成分(つまりB)を使用することを意味する。
mul r0、r1.xxxx、r2
c)mad(乗算/加算)を使用して次の4つの積をレジスタ0に蓄積する。これは、(r3を介して)Aの第2の水平方向のピクセルにアクセスし、前の結果に積A0,1*B、A1,1*B、A2,1*B、およびA3,1*Bを追加する。Bへのアクセスにyyyyを使用する。
mad r0、rl.yyyy、r3、r0
d)madを同じように2回以上使用して次の8つの積を累積する。
mad r0、r1.zzzz、r4、r0
mad r0、rl.wwww、r5、r0
e)ここで、5番目の列から8番目の列(列番号4〜7)の準備をする。列4および5はすでに、Aに割り振られた6つのうちの残りの2つのテクスチャマップによってアクセス可能である。列6および7については、列6の座標をとり、定数c0を2回追加する。これは、1ピクセル(または作業領域幅の1/2048)に等しくなるように設定されている。列6および7のこれらの座標は、追加のレジスタに格納される。次いで4つのtexld命令を使用して、これらの値、つまりA0,4からA3,7をレジスタに格納する。
f)1ピクセルだけオフセットされているBに割り振られた第2のテクスチャマップを使用して、BからB(1ピクセルの幅)の値をロードする。
g)4つのmad命令を使用して、ステップ(b)から(d)で行われたように、r0に格納されている現在の4つの合計に16以上の積を累積する。
h)次に、部分積の最後の4つの列について準備がなされる。この時点で、すべてのテクスチャマップが使用されている。したがってまだレジスタ内にある列7のアドレスが取得され、C0が連続的にこの値に4回追加される。この結果がレジスタに格納される。同じ手順が行われて、C0がBの第2のピクセルのアドレスを含むレジスタに追加される。これは、BからB11にアクセスするように1ピクセルだけそれを進めるステップを含む。正しい座標がレジスタに存在すると、texldを再度使用してA0,8からA3,11およびBからB11の値を他のレジスタにロードする。
i)4つ以上のmad命令を使用して、最後の16個の積をr0に累積する。ここでr0は、12列の部分内積の要素C0からC3の値を含む。次いでシェーダルーチンが完了する。より多くの列がこのシェーダで処理されない理由は、シェーダごとの命令の制限に到達しているからである。
上記は、12列部分内積を計算して一時メモリ内の列ベクトルにする方法である。この方法は、次のように、12列より広い行列に拡張することができる。まず、残りの幅が12以上である限り、12列部分積が処理される。次に、第1の部分結果に直接隣接するこれらのパスの結果が一時メモリの連続ブロックに配置される。最後に、残りの8つまたは4つ(行列幅は4の倍数でなければならないことを思い出されたい)の列がある場合、8つまたは4つの列を収容するように書き込まれた変更されたシェーダが使用される。これらの技術は、12列シェーダの単純化である。
この結果、部分結果を表す1つまたは複数の隣接する列ベクトルのブロックが得られる。これらを「低減する」、つまり合計して、最後の内積を含む(また「スクラッチ」メモリの代わりに、他のルーチンによってアクセスできる明確な場所に配置される)単一の列ベクトルにする必要がある。効率上、(レジスタにおけるアドレス計算とは対照的に)テクスチャマップを使用して、低減する必要のある部分結果にアクセスする。8つのテクスチャマップをソースとして使用することによって、8つもの部分結果を一度に低減することができる。このシェーダコードは、非常に単純であり、texld命令およびadd命令から成る。プロセスを単純化するための1つの方法は、最終結果ではなく、低減された結果の位置の選択によるものである。つまり、低減された結果を次の列の既存の部分結果の右に入れることができる。このように、まさに最後の低減ステップまで、低減される1組の部分結果は常に一続きの矩形である。これらの技術および十分な一時メモリを使用して、任意のサイズの内積を計算することができる。
上記では、機械学習GPU実行方法が、ニューラルネット(および同じ演算で構成される他の任意の機械学習アルゴリズム)のトレーニングに必要なすべての演算を含んでいることを示してきた。さらに、これらの演算は、GPUでピクセルシェーダとして実施することができ、いずれの場合にもアルゴリズムは高度の並列処理に役立つ。
VII.実施例
本明細書に開示した機械学習GPU実行システムおよび方法を完全に理解するために、実施例の動作上の詳細を提示する。この実施例は、機械学習GPU実行システムおよび方法を実施できる方法を1つだけ示していることに留意されたい。
この実施例では、機械学習GPU実行システムおよび方法は、単一のプロセッサ2.8GHz Pentium(登録商標)4、ATI(登録商標)Radeon9800グラフィックスカード付きで稼働させた。9800グラフィックスカードは、94箇所の命令メモリ、および256MBの作業領域を有しており、その16MBは、読み取り/書き込みの作業領域に使用し、残りを読み取り専用データに使用した。CPUのみの参照実装は、Pentium(登録商標)4のSSE SIMD拡張を利用するようにすでに最適化されているため、SIMD対SIMDでの比較を行う。さらにGPUは、テストされた例についてほぼ1桁高速である。
この実施例は、手書き文字認識を行うために使用される機械学習GPU実行システムおよび方法を示す。タスクは、手書きの数字のピクセル画像のクラス(「0」から「9」)を見つけるためのものであった。トレーニングデータベースは、正しいラベルを有する60,000のトレーニング画像で構成されていた。このトレーニングセットは、時としてMNISTと呼ばれることもあり、Web上で入手可能であり、機械学習アルゴリズムの資料ではよく知られている。このタスクを解決するために、ニューラルネットワーク手法が使用された。特に、ニューラルネットワークは2層完全接続ニューラルネットワークであった。
逆伝搬による2層完全接続ニューラルネットワークのトレーニングが次のパスに分解された。
Figure 0004901097
ここで順伝搬は、行列W×ベクトル1、次いで関数マップ(F(x)。この場合F(x)=tanh)によりベクトルHを算出する。このニューラルネットワークには2層あるため、W、H、およびF(H)(この場合F(x)=シグモイド)について同じ演算が繰り返されて、Oが得られる。同じようにしてより多くの層を実装することができる。WおよびWは、ニューラルネットのレベルごとの重みの行列、Iは入力ベクトル、Hは隠れ層ベクトル、およびOは出力ベクトルである。また、閾値も一般に隠れユニット(unit)および出力ユニットのそれぞれに追加される。閾値は、その値が常に1であるユニットを入力および隠れ層に追加することによってエミュレートすることができる。一定ユニットを他のユニットに接続している重みは、実質上こうしたユニットの閾値である。層IおよびHが一定ユニットによって増大した場合、上記の式は、隠れ層および出力層ごとに閾値を正しく実施する。閾値パラメータは、WおよびWに埋め込まれる。誤差計算は、ターゲットベクトルと、F(x)関数の導関数D(x)を掛けたニューラルネットワークからの出力ベクトルとの差である。F(x)および対応するD(x)の式は次のとおりである。
Figure 0004901097
シェーダ言語は、成分ごとにベクトルに適用でき、またはシェーダの観点からいえば、ピクセルごとに適用することができる指数関数を有することに留意されたい。
重みの更新は、その層の誤差ベクトルおよび入力ベクトルの外積を実行することによって実行された。結果として得られた行列は、学習係数(leaning coefficient)αによってスケールされ、既存の重み行列に追加された。誤差をネットワークに伝搬するために、別の行列ベクトル乗算が計算された。つまり、誤差ベクトル付きの重み行列の転置が計算され、再度D(x)関数によってスケールされた。
まとめると、機械学習GPU実行方法を使用してGPUで次の演算が実施された。
1.行列*ベクトル−>ベクトル(内積)
2.ベクトルの要素ごとにx=f(x)(この場合fはtanhまたはロジスティック関数、またはそれらの導関数)
3.ベクトルA−ベクトルB−>ベクトルC
4.ベクトル*ベクトル−>行列(外積)
5.行列A+定数*行列B−>行列A
6.行列の置換
7.GPUメモリ内の新しい場所へのコピー(行列またはベクトル)
8.CPUメモリからGPUメモリへの、またはその逆のコピー(行列またはベクトル)(これはDirectXによって直接サポートされ、完全を期すためのみに言及される)
これらの演算のそれぞれは1回のパスで行われ、時として上述した制限によって単一のパスで計算できないときには、複数のパスで行われる。GPUでの実際の実行は、パスのリストが前処理で作成されることを必要とする。このリストは、手動または自動で作成することができる。さらに、個々の関数がコンパイルされ、GPUにダウンロードされ(これもまた前処理で)、入力値およびトレーニング値をグラフィックスメモリの作業領域にダウンロードし、三角形およびビューポイントをダウンロードして、関数をパスごとに指定する必要がある。こうした各ステップは、Direct3D(D3D)グラフィックスAPIへの呼出を介して実施された。三角形およびビューポイントのダウンロードは、パスの実行を開始することに留意されたい。上述したように、GPUでのクリップされた三角形のレンダリングは、黙示的なピクセルごとのDOループを構成する。パスごとの特定のフラグメントシェーディングプロセス(fragment shading process)が各多角形の特性としてコード化された。反復型のトレーニングでは、反復ごとにこのシーケンスが繰り返される。プログラマが進捗を監視したい場合を除いて、反復を通じてグラフィックスメモリからCPUにデータを読み戻す必要はない。グラフィックスメモリからホストメモリへの転送は、現在のハードウェアでは遅く、プログラマは一般にこうした操作を避ける。
本発明の上記の説明は、例示および説明のために提示したものである。網羅的ではなく、また本発明を開示した正確な形状に限定するためのものでもない。上記の教示に鑑みて、多くの変更および変形が可能である。本発明の範囲は、本発明のこの詳細な説明によって限定されるものではなく、本明細書に添付した特許請求の範囲によって限定されるものである。
機械学習GPU実行エンジンおよび方法を実装できる適したコンピューティングシステム環境の例を示す図である。 本発明の一実施形態に係る機械学習GPU実行エンジンおよび方法の実装例を示すブロック図である。 一例として勾配降下アルゴリズムを使用した3層学習機械のトレーニングモジュールを示すブロック/フロー図である。 図3で示した3層学習機械のテストモジュールを示すブロック/フロー図である。 機械学習GPU実行方法のトレーニング段階の動作の概要を示すフロー図である。 機械学習GPU実行方法のテスト段階の動作の概要を示すフロー図である。 ニューラルネットワークでの1対の層を示す詳細図である。 機械学習GPU実行方法によって使用される矩形メモリ技術を示す図である。 機械学習GPU実行方法のGPUメモリ構成を示す図である。 テクスチャ三角形(texture triangle)を使用したテクスチャマッピングの使用を示す図である。 内積を示すブロック図である。
符号の説明
110 コンピューティング装置
120 中央処理装置(CPU)
130 CPUメモリ
190 ビデオインターフェース
200 機械学習GPU実行エンジン
210 高速バス
220 グラフィックス処理ユニット(GPU)
230 GPUメモリ
240 トレーニングモジュール
250 テストモジュール

Claims (29)

  1. コンピュータアプリケーションを処理するコンピュータ実施方法であって、
    グラフィックス処理ユニットが、機械学習技術のトレーニング可能パラメータ、トレーニングデータ、及びターゲットデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したトレーニング可能パラメータ及び該入力したトレーニングデータに基づいた関数を計算することにより、第1の結果を取得するステップと、
    前記第1の結果と前記ターゲットデータとの誤差が小さくなるように、前記トレーニング可能パラメータの値を更新するステップと、
    前記グラフィックス処理ユニットが、クエリデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したクエリデータ及び該更新されたトレーニング可能パラメータに基づいた関数を計算することにより、第2の結果を取得するステップと、
    前記第2の結果を使用して前記コンピュータアプリケーションによって使用できるように解を提供するステップとを備え、
    前記計算するステップ及び前記取得するステップは、行列と列ベクトルとの内積を計算するステップをさらに含み、
    前記内積を計算するステップは、
    前記行列のうちの12列の行列と前記列ベクトルのうちの12列の列ベクトルとの内積を計算するためのピクセルシェーダを使用することにより、複数の列ベクトル部分積を計算するステップと、
    該計算された複数の列ベクトル部分積を合計することにより、単一の列ベクトルを取得するステップと
    をさらに含むことを特徴とする方法。
  2. 前記コンピュータアプリケーションは(a)音声認識アプリケーション、(b)手書き文字認識アプリケーションのうちの一方の対話型使用コンピュータアプリケーションであることを特徴とする請求項1に記載のコンピュータ実施方法。
  3. 前記機械学習技術はニューラルネットワークであることを特徴とする請求項1に記載のコンピュータ実施方法。
  4. 前記グラフィックス処理ユニットに前記更新されたトレーニング可能パラメータの少なくとも一部を格納するステップをさらに含むことを特徴とする請求項1に記載のコンピュータ実施方法。
  5. 前記計算するステップ及び前記取得するステップは、前記ピクセルシェーダを使用して外積を計算するステップをさらに含むことを特徴とする請求項1に記載のコンピュータ実施方法。
  6. テクスチャマッピングを使用して前記外積を計算するステップをさらに含むことを特徴とする請求項5に記載のコンピュータ実施方法。
  7. 前記計算するステップ及び前記取得するステップは、前記ピクセルシェーダを使用して行列の転置を行うステップをさらに含むことを特徴とする請求項1に記載のコンピュータ実施方法。
  8. テクスチャマッピングを使用して前記行列の転置を行うステップをさらに含むことを特徴とする請求項7に記載のコンピュータ実施方法。
  9. 請求項1に記載の前記コンピュータ実施方法を実行するためのコンピュータ実行可能命令を格納したことを特徴とするコンピュータ可読記録媒体。
  10. グラフィックス処理ユニットを使用して機械学習技術を処理するプロセスであって、
    グラフィックス処理ユニットが、前記機械学習技術のトレーニング可能パラメータ、トレーニングデータ、及びターゲットデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したトレーニング可能パラメータ及び該入力したトレーニングデータに基づいた関数を計算することにより、第1の結果を取得するステップと、
    前記第1の結果と前記ターゲットデータとの誤差が小さくなるように、前記トレーニング可能パラメータの値を更新するステップと、
    前記グラフィックス処理ユニットが、クエリデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したクエリデータ及び該更新されたトレーニング可能パラメータに基づいた関数を計算することにより、第2の結果を取得するステップと、
    アプリケーションによって使用できるように前記第2の結果を出力するステップとを含み、
    前記計算するステップ及び前記取得するステップは、行列と列ベクトルとの内積を計算するステップをさらに含み、
    前記内積を計算するステップは、
    前記行列のうちの12列の行列と前記列ベクトルのうちの12列の列ベクトルとの内積を計算するためのピクセルシェーダを使用することにより、複数の列ベクトル部分積を計算するステップと、
    該計算された複数の列ベクトル部分積を合計することにより、単一の列ベクトルを取得するステップと
    をさらに含むことを特徴とするプロセス。
  11. 前記ピクセルシェーダはグラフィックカードに存在することを特徴とする請求項10に記載のプロセス。
  12. 前記ピクセルシェーダを使用して、外積、行列の転置のうちの少なくとも1つを計算するステップをさらに含むことを特徴とする請求項10に記載のプロセス。
  13. 前記機械学習技術はニューラルネットワークであることを特徴とする請求項10に記載のプロセス。
  14. 前記機械学習技術は期待値最大化(EM)技術を使用することを特徴とする請求項10に記載のプロセス。
  15. 前記機械学習技術は(a)K−means技術、(b)LVQ(Learning Vector Quantization)技術のうちの少なくとも一方であることを特徴とする請求項10に記載のプロセス。
  16. 前記グラフィックス処理ユニットを使用して前記トレーニングデータを前処理するステップをさらに含むことを特徴とする請求項10に記載のプロセス。
  17. 前記前処理するステップは、(a)前記トレーニングデータを標準化してそれを入力のためにより適した形式にするステップと、(b)前記トレーニングデータから情報および特徴を抽出するステップと、(c)入力データを取得して前記入力データを前記グラフィックス処理ユニットにロードするステップとのうちの少なくとも1つを含むことを特徴とする請求項16に記載のプロセス。
  18. 1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに請求項10の前記プロセスを実施させるためのコンピュータ可読命令を格納したことを特徴とする1つまたは複数のコンピュータ可読記録媒体。
  19. グラフィックス処理ユニットを使用して機械学習技術を処理するためのコンピュータ実行可能命令を格納したコンピュータ可読記録媒体であって、
    グラフィックス処理ユニットが、前記機械学習技術のトレーニング可能パラメータ及びピクセルシェーダを入力するステップと、
    前記グラフィックス処理ユニットが、前記機械学習技術のトレーニングデータ及びターゲットデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したトレーニング可能パラメータ及び該入力したトレーニングデータに基づいた関数を計算することにより、第1の結果を取得するステップと、
    前記第1の結果と前記ターゲットデータとの誤差が小さくなるように、前記トレーニング可能パラメータの値を更新するステップと、
    前記グラフィックス処理ユニットが、クエリデータを入力するステップと、
    前記グラフィックス処理ユニットが、該入力したクエリデータ及び該更新されたトレーニング可能パラメータに基づいた関数を計算することにより、対話型使用アプリケーションによって使用するように第2の結果を取得するステップとを含み、
    前記計算するステップ及び前記取得するステップは、行列と列ベクトルとの内積を計算するステップをさらに含み、
    前記内積を計算するステップは、
    前記行列のうちの12列の行列と前記列ベクトルのうちの12列の列ベクトルとの内積を計算するための前記ピクセルシェーダを使用することにより、複数の列ベクトル部分積を計算するステップと、
    該計算された複数の列ベクトル部分積を合計することにより、単一の列ベクトルを取得するステップと
    をさらに含むことを特徴とするコンピュータ可読記録媒体。
  20. 少なくとも一部のトレーニング可能パラメータを前記グラフィックス処理ユニットに配置するステップをさらに含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  21. 前記クエリデータを前処理して入力データを取得するステップと、
    前記グラフィックス処理ユニットに前記入力データをロードするステップと
    をさらに含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  22. 前記ピクセルシェーダを使用して、外積、行列の転置のうちの少なくとも1つを計算するステップをさらに含むことを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  23. 前記機械学習技術はニューラルネットワークであることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  24. 前記機械学習技術は勾配降下技術であることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  25. 前記勾配降下技術の調整可能パラメータの少なくとも一部を前記グラフィックス処理ユニットに配置するステップをさらに含むことを特徴とする請求項24に記載のコンピュータ可読記録媒体。
  26. 前記対話型使用アプリケーションは手書き文字認識アプリケーションであることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  27. 前記機械学習技術はニューラルネットワークであり、前記ニューラルネットワークを使用して分類を行うステップをさらに含むことを特徴とする請求項26に記載のコンピュータ可読記録媒体。
  28. 前記対話型使用アプリケーションは光学文字認識アプリケーションであることを特徴とする請求項19に記載のコンピュータ可読記録媒体。
  29. 前記機械学習技術はニューラルネットワークであり、前記ニューラルネットワークを使用して分類を行うステップをさらに含むことを特徴とする請求項28に記載のコンピュータ可読記録媒体。
JP2004357352A 2003-12-09 2004-12-09 グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法 Expired - Fee Related JP4901097B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US52857803P 2003-12-09 2003-12-09
US60/528,578 2003-12-09
US10/837,382 2004-04-30
US10/837,382 US7219085B2 (en) 2003-12-09 2004-04-30 System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit

Publications (2)

Publication Number Publication Date
JP2005182785A JP2005182785A (ja) 2005-07-07
JP4901097B2 true JP4901097B2 (ja) 2012-03-21

Family

ID=34636692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004357352A Expired - Fee Related JP4901097B2 (ja) 2003-12-09 2004-12-09 グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法

Country Status (5)

Country Link
US (1) US7219085B2 (ja)
EP (2) EP2648132B1 (ja)
JP (1) JP4901097B2 (ja)
KR (1) KR101137107B1 (ja)
CN (1) CN100468320C (ja)

Families Citing this family (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US20050243087A1 (en) * 2004-04-30 2005-11-03 Shmuel Aharon GPU-based Finite Element
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7598953B2 (en) * 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US7403784B2 (en) * 2005-03-10 2008-07-22 Avaya Technology Corp. Method and apparatus for positioning a set of terminals in an indoor wireless environment
JP4327175B2 (ja) * 2005-07-12 2009-09-09 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックプロセッサシステム、グラフィックプロセッサおよび描画処理方法
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US8624909B2 (en) * 2005-11-21 2014-01-07 Vixs Systems Inc. Image processing system and method thereof
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
US7599861B2 (en) 2006-03-02 2009-10-06 Convergys Customer Management Group, Inc. System and method for closed loop decisionmaking in an automated care system
US7809663B1 (en) 2006-05-22 2010-10-05 Convergys Cmg Utah, Inc. System and method for supporting the utilization of machine language
US8379830B1 (en) 2006-05-22 2013-02-19 Convergys Customer Management Delaware Llc System and method for automated customer service with contingent live interaction
EP2275835B1 (en) * 2006-06-20 2012-10-31 Qualcomm Incorporated Receiver for radio positioning signals
US8134566B1 (en) * 2006-07-28 2012-03-13 Nvidia Corporation Unified assembly instruction set for graphics processing
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US8648867B2 (en) * 2006-09-25 2014-02-11 Neurala Llc Graphic processor based accelerator system and method
KR100915329B1 (ko) * 2006-12-02 2009-09-03 한국전자통신연구원 그래픽 프로세서의 범용 계산을 위한 성능 테스트 방법
US7907138B2 (en) * 2006-12-29 2011-03-15 Intel Corporation System co-processor
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US8548215B2 (en) 2007-11-23 2013-10-01 Pme Ip Australia Pty Ltd Automatic image segmentation of a volume by comparing and correlating slice histograms with an anatomic atlas of average histograms
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2011065929A1 (en) 2007-11-23 2011-06-03 Mercury Computer Systems, Inc. Multi-user multi-gpu render server apparatus and methods
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9177368B2 (en) * 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8234228B2 (en) * 2008-02-07 2012-07-31 Nec Laboratories America, Inc. Method for training a learning machine having a deep multi-layered network with labeled and unlabeled training data
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US20090234603A1 (en) * 2008-03-17 2009-09-17 Anritsu Company System and method for accelerating an electrical measurement instrument using a graphical processing unit
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
JP2011524049A (ja) * 2008-06-04 2011-08-25 エヌイーシー ラボラトリーズ アメリカ インク 超並列アクセラレータを使用して学習機械の訓練と分類とを並列化し高速化するシステム及び方法
US8274516B2 (en) * 2008-08-04 2012-09-25 Microsoft Corporation GPU scene composition and animation
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US20100188412A1 (en) * 2009-01-28 2010-07-29 Microsoft Corporation Content based cache for graphics resource management
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US20100223213A1 (en) * 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
CN101664583B (zh) * 2009-09-09 2012-05-09 深圳市海博科技有限公司 基于cuda的剂量计算优化方法和系统
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
US8560466B2 (en) * 2010-02-26 2013-10-15 Trend Micro Incorporated Method and arrangement for automatic charset detection
RU2458384C1 (ru) * 2011-02-17 2012-08-10 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военный авиационный инженерный университет" (г. Воронеж) Министерства обороны Российской Федерации Устройство для контроля эвм
US8489529B2 (en) * 2011-03-31 2013-07-16 Microsoft Corporation Deep convex network with joint use of nonlinear random projection, Restricted Boltzmann Machine and batch-based parallelizable optimization
US20130054566A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Acceleration of ranking algorithms using a graphics processing unit
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
JP5879899B2 (ja) * 2011-10-12 2016-03-08 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
TW201322006A (zh) * 2011-11-18 2013-06-01 Ind Tech Res Inst 資料處理方法及其裝置
US20130163195A1 (en) * 2011-12-22 2013-06-27 Nvidia Corporation System, method, and computer program product for performing operations on data utilizing a computation module
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
CN102841881A (zh) * 2012-08-21 2012-12-26 浪潮电子信息产业股份有限公司 一种基于众核处理器的多重积分计算方法
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US8880446B2 (en) 2012-11-15 2014-11-04 Purepredictive, Inc. Predictive analytics factory
US10423889B2 (en) 2013-01-08 2019-09-24 Purepredictive, Inc. Native machine learning integration for a data management product
CN103996069B (zh) * 2013-02-20 2018-04-03 百度在线网络技术(北京)有限公司 一种基于多gpu的bpnn训练方法和装置
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9646262B2 (en) 2013-06-17 2017-05-09 Purepredictive, Inc. Data intelligence using machine learning
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
CN104809501B (zh) * 2014-01-24 2018-05-01 清华大学 一种基于类脑协处理器的计算机系统
CN104809498B (zh) * 2014-01-24 2018-02-13 清华大学 一种基于神经形态电路的类脑协处理器
CN104809426B (zh) * 2014-01-27 2019-04-05 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
US20150242741A1 (en) * 2014-02-21 2015-08-27 Qualcomm Incorporated In situ neural network co-processing
US9953646B2 (en) 2014-09-02 2018-04-24 Belleau Technologies Method and system for dynamic speech recognition and tracking of prewritten script
US9563825B2 (en) 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
US9418319B2 (en) 2014-11-21 2016-08-16 Adobe Systems Incorporated Object detection using cascaded convolutional neural networks
US10540957B2 (en) 2014-12-15 2020-01-21 Baidu Usa Llc Systems and methods for speech transcription
CN104538033A (zh) * 2014-12-29 2015-04-22 江苏科技大学 基于嵌入式gpu系统的并行化语音识别系统及方法
KR102204286B1 (ko) 2015-01-28 2021-01-18 구글 엘엘씨 배치 정규화 레이어들
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US9786026B2 (en) 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
US9881351B2 (en) 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
US10540588B2 (en) * 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
KR102505279B1 (ko) * 2015-07-24 2023-03-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
US9972063B2 (en) 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
CN108351983A (zh) * 2015-10-28 2018-07-31 谷歌有限责任公司 修改计算图
US10319374B2 (en) * 2015-11-25 2019-06-11 Baidu USA, LLC Deployed end-to-end speech recognition
US10616314B1 (en) 2015-12-29 2020-04-07 Amazon Technologies, Inc. Dynamic source routing for data transfer
US10482380B2 (en) 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
CN105631482A (zh) * 2016-03-03 2016-06-01 中国民航大学 一种基于卷积神经网络模型的危险物品图像分类方法
US20170264501A1 (en) * 2016-03-14 2017-09-14 Catalina Labs, Inc. System and method for generating advice for improving internet and wifi performance in a network using machine-learning techniques
CN107292385A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
US11797459B2 (en) 2016-06-17 2023-10-24 Hewlett-Packard Development Company, L.P. Shared machine-learning data structure
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
RU2635902C1 (ru) 2016-08-05 2017-11-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система отбора обучающих признаков для алгоритма машинного обучения
CN106327564B (zh) * 2016-08-25 2019-01-11 河南理工大学 一种图像处理方法及装置
CN106408618B (zh) * 2016-08-31 2019-05-07 上海交通大学 一种基于机器学习的图像解构方法
WO2018063840A1 (en) * 2016-09-28 2018-04-05 D5A1 Llc; Learning coach for machine learning system
CN106529679B (zh) * 2016-10-14 2020-01-14 腾讯科技(上海)有限公司 一种机器学习方法及系统
US10380222B2 (en) 2016-10-17 2019-08-13 International Business Machines Corporation Matrix factorization with two-stage data block dispatch associated with graphics processing units
US10623775B1 (en) * 2016-11-04 2020-04-14 Twitter, Inc. End-to-end video and image compression
CN106779057B (zh) * 2016-11-11 2020-04-17 北京旷视科技有限公司 基于gpu的计算二值神经网络卷积的方法及装置
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules
US11010431B2 (en) 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US10824934B2 (en) * 2017-01-12 2020-11-03 Texas Instruments Incorporated Methods and apparatus for matrix processing in a convolutional neural network
CN106951961B (zh) * 2017-02-24 2019-11-26 清华大学 一种粗粒度可重构的卷积神经网络加速器及系统
US11227543B2 (en) 2017-03-10 2022-01-18 Semiconductor Energy Laboratory Co., Ltd. Touch panel system, electronic device, and semiconductor device having a neural network
US10497084B2 (en) 2017-04-24 2019-12-03 Intel Corporation Efficient sharing and compression expansion of data across processing systems
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US20180322386A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
US10572773B2 (en) * 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
DK3568756T3 (da) * 2017-05-17 2022-09-19 Google Llc Specialformålstræningschip til neuralt netværk
TWI751500B (zh) * 2017-05-17 2022-01-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
WO2018212514A1 (ko) * 2017-05-18 2018-11-22 삼성전자 주식회사 360도 영상을 처리하는 방법 및 장치
GB2562529B (en) * 2017-05-18 2019-12-11 Samsung Electronics Co Ltd Method and apparatus for stabilising 360 degree video
WO2018234919A1 (ja) 2017-06-21 2018-12-27 株式会社半導体エネルギー研究所 ニューラルネットワークを有する半導体装置
US20190005377A1 (en) * 2017-06-30 2019-01-03 Advanced Micro Devices, Inc. Artificial neural network reduction to reduce inference computation time
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
US10599978B2 (en) * 2017-11-03 2020-03-24 International Business Machines Corporation Weighted cascading convolutional neural networks
US11710028B2 (en) * 2017-12-30 2023-07-25 Intel Corporation Efficient convolution in machine learning environments
KR102113093B1 (ko) * 2018-01-10 2020-05-20 서울대학교산학협력단 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
KR102228586B1 (ko) 2018-01-19 2021-03-16 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11468312B2 (en) * 2018-02-02 2022-10-11 Samsung Electronics Co., Ltd. Memory management for machine learning training on GPU
US10681173B2 (en) 2018-04-03 2020-06-09 International Business Machines Corporation Optimized network traffic patterns for co-located heterogeneous network attached accelerators
US10430493B1 (en) * 2018-04-05 2019-10-01 Rain Neuromorphics Inc. Systems and methods for efficient matrix multiplication
KR20190136431A (ko) 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US20190378016A1 (en) * 2018-06-07 2019-12-12 International Business Machines Corporation Distributed computing architecture for large model deep learning
CN110766147B (zh) * 2018-07-25 2022-10-11 赛灵思公司 神经网络编译器架构及编译方法
JP7216190B2 (ja) * 2018-08-20 2023-01-31 シーメンス アクチエンゲゼルシヤフト プログラマブルロジックコントローラベースの人工知能用モジュール式アクセラレーションモジュール
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
KR102277172B1 (ko) * 2018-10-01 2021-07-14 주식회사 한글과컴퓨터 인공 신경망 선택 장치 및 방법
CN109460260B (zh) * 2018-10-24 2021-07-09 瑞芯微电子股份有限公司 一种快速开机的方法和装置
CN109272110A (zh) * 2018-10-31 2019-01-25 上海交通大学 基于光子神经网络芯片的光电融合智能信号处理系统
US11526759B2 (en) * 2018-11-05 2022-12-13 International Business Machines Corporation Large model support in deep learning
CN109359120A (zh) * 2018-11-09 2019-02-19 阿里巴巴集团控股有限公司 一种模型训练中的数据更新方法、装置及设备
US11880769B2 (en) * 2018-11-14 2024-01-23 Advanced Micro Devices, Inc. Using multiple functional blocks for training neural networks
US10922790B2 (en) * 2018-12-21 2021-02-16 Intel Corporation Apparatus and method for efficient distributed denoising of a graphics frame
CN113383225A (zh) * 2018-12-26 2021-09-10 加利福尼亚大学董事会 使用深度学习将二维荧光波传播到表面上的系统和方法
US11537936B2 (en) 2019-01-17 2022-12-27 Servicenow, Inc. Data set generation for testing of machine learning pipelines
US11550971B1 (en) 2019-01-18 2023-01-10 X Development Llc Physics simulation on machine-learning accelerated hardware platforms
KR102543413B1 (ko) * 2019-02-12 2023-06-13 에스케이하이닉스 주식회사 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
US11170064B2 (en) 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US11151325B2 (en) 2019-03-22 2021-10-19 Servicenow, Inc. Determining semantic similarity of texts based on sub-sections thereof
US10671892B1 (en) 2019-03-31 2020-06-02 Hyper Labs, Inc. Apparatuses, methods, and systems for 3-channel dynamic contextual script recognition using neural network image analytics and 4-tuple machine learning with enhanced templates and context data
US11595484B2 (en) 2019-05-03 2023-02-28 Servicenow, Inc. Centralized machine learning predictor for a remote network management platform
US11586659B2 (en) 2019-05-03 2023-02-21 Servicenow, Inc. Clustering and dynamic re-clustering of similar textual documents
US11651032B2 (en) 2019-05-03 2023-05-16 Servicenow, Inc. Determining semantic content of textual clusters
JP7351641B2 (ja) * 2019-05-29 2023-09-27 理想科学工業株式会社 印刷データ生成装置
US11115432B2 (en) 2019-07-08 2021-09-07 Servicenow, Inc. Multi-application recommendation engine for a remote network management platform
CN110502975B (zh) * 2019-07-09 2023-06-23 平安科技(深圳)有限公司 一种行人重识别的批量处理系统
CN110399222B (zh) * 2019-07-25 2022-01-21 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
KR20190096872A (ko) * 2019-07-31 2019-08-20 엘지전자 주식회사 연합학습(Federated learning)을 통한 필기체 인식방법 및 이를 위한 장치
KR102147912B1 (ko) 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
JP7373840B2 (ja) * 2019-10-03 2023-11-06 株式会社 システムスクエア 検査装置
US11450712B2 (en) 2020-02-18 2022-09-20 Rain Neuromorphics Inc. Memristive device
CN111526357B (zh) * 2020-04-14 2021-06-29 艾瑞思检测技术(苏州)有限公司 一种基于pca学习的显卡接口机器测试方法
CN111522771B (zh) * 2020-04-20 2023-08-15 北京百度网讯科技有限公司 眼底图像处理方法、终端设备及存储介质
US20210374563A1 (en) * 2020-05-29 2021-12-02 Joni Jezewski Solution Automation
US11314783B2 (en) 2020-06-05 2022-04-26 Bank Of America Corporation System for implementing cognitive self-healing in knowledge-based deep learning models
US11756290B2 (en) 2020-06-10 2023-09-12 Bank Of America Corporation System for intelligent drift matching for unstructured data in a machine learning environment
US11470107B2 (en) 2020-06-10 2022-10-11 Servicenow, Inc. Matching configuration items with machine learning
US11451573B2 (en) 2020-06-16 2022-09-20 Servicenow, Inc. Merging duplicate items identified by a vulnerability analysis
US11915360B2 (en) 2020-10-20 2024-02-27 The Regents Of The University Of California Volumetric microscopy methods and systems using recurrent neural networks
CN112270413B (zh) * 2020-10-22 2024-02-27 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
CN112508188A (zh) * 2020-12-01 2021-03-16 北京奇艺世纪科技有限公司 一种分布式模型训练系统、方法、装置、设备和存储介质
US20220414492A1 (en) * 2021-06-23 2022-12-29 Joni Jezewski Additional Solution Automation & Interface Analysis Implementations
US20230044564A1 (en) * 2021-08-03 2023-02-09 Joni Jezewski Other Solution Automation & Interface Analysis Implementations
KR102543512B1 (ko) * 2022-10-31 2023-06-13 서울대학교산학협력단 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343537A (en) * 1991-10-31 1994-08-30 International Business Machines Corporation Statistical mixture approach to automatic handwriting recognition
US5592597A (en) 1994-02-14 1997-01-07 Parametric Technology Corporation Real-time image generation system for simulating physical paint, drawing media, and feature modeling with 3-D graphics

Also Published As

Publication number Publication date
JP2005182785A (ja) 2005-07-07
US7219085B2 (en) 2007-05-15
CN1627251A (zh) 2005-06-15
EP2648132B1 (en) 2018-07-11
EP1569128B1 (en) 2015-06-17
EP1569128A2 (en) 2005-08-31
US20050125369A1 (en) 2005-06-09
CN100468320C (zh) 2009-03-11
KR101137107B1 (ko) 2012-07-02
EP2648132A1 (en) 2013-10-09
KR20050056124A (ko) 2005-06-14
EP1569128A3 (en) 2011-06-15

Similar Documents

Publication Publication Date Title
JP4901097B2 (ja) グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法
US7548892B2 (en) Processing machine learning techniques using a graphics processing unit
US7567252B2 (en) Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US11847550B2 (en) Sparse convolutional neural network accelerator
US11887001B2 (en) Method and apparatus for reducing the parameter density of a deep neural network (DNN)
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
Kolb et al. Dynamic particle coupling for GPU-based fluid simulation
US9508181B2 (en) Ordering and rendering buffers for complex scenes with cyclic dependency
US20190005377A1 (en) Artificial neural network reduction to reduce inference computation time
US10397542B2 (en) Facilitating quantization and compression of three-dimensional graphics data using screen space metrics at computing devices
EP3678037A1 (en) Neural network generator
US20190371041A1 (en) Compiler-assisted techniques for memory use reduction in graphics pipeline
CN109564694A (zh) 用于基于入库的图形处理的顶点着色器
US20220165040A1 (en) Appearance-driven automatic three-dimensional modeling
US8482559B2 (en) Method and apparatus for triangle tessellation
US10552211B2 (en) Mechanism to increase thread parallelism in a graphics processor
US20210358174A1 (en) Method and apparatus of data compression
Harris et al. Iterative Solutions using Programmable Graphics Processing Units.
Ilie Optical character recognition on graphics hardware
Cabido et al. Hardware-accelerated template matching
Ohmer et al. Real-time tracking with non-rigid geometric templates using the gpu
US20210407182A1 (en) Load instruction for multi sample anti-aliasing
CN117974441A (zh) 用于图像处理的方法、设备和计算机程序产品
Strengert Parallel visualization and compute environments for graphics clusters
Ohmer Computer vision applications on graphics processing units

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111220

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111227

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150113

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350