(57)【要約】【課題】シリアライゼーションされたキーバリューアクセスを防止するマシンラーニングシステムのためのシステム及び方法を提供する。【解決手段】本発明のマシンラーニングのためのシステム及び方法において、システムは、ＧＰＵメモリを有するＧＰＵ及びＧＰＵメモリに連結されたキーバリューストレージデバイスを含む。方法は、ＧＰＵにより、キーを含むキーバリュー要請をＧＰＵメモリの入出力領域内のキーバリュー要請キューに書き込むステップと、キーバリューのストレージデバイスにより、キーバリュー要請をキーバリュー要請キューから読み取るステップと、キーバリューストレージデバイスにより、キーバリュー要請に応答して、キーバリュー要請のキーに対応するバリューをＧＰＵメモリの入出力領域に書き込むステップと、を有する。【選択図】図２
2019133662.tif 000002
【特許請求の範囲】
【請求項１】
第１グラフィックプロセッシングユニットにより、キーを含む第１キーバリュー要請を前記第１グラフィックプロセッシングユニットに連結された第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップと、
前記第１メモリに連結された第１キーバリューストレージデバイスにより、前記第１キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューから読み取るステップと、
前記第１キーバリューストレージデバイスにより、前記第１キーバリュー要請に応答して、前記第１キーバリュー要請のキーに対応する第１バリューを前記第１メモリの第１入出力領域に書き込むステップと、を有することを特徴とするマシンラーニングのための方法。
【請求項２】
前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブするステップを更に含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項３】
前記第１キーバリュー要請による書き込み領域は、前記第１バリューに割り当てられた領域であるリターンバリュー領域を含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項４】
前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップは、前記第１バリューを前記リターンバリュー領域に書き込むステップを含むことを特徴とする請求項３に記載のマシンラーニングのための方法。
【請求項５】
前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップは、前記第１バリューを前記第１メモリの第１入出力領域内のリターンバリューキューに書き込むステップを含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項６】
前記第１キーバリューストレージデバイス及び前記第１グラフィックプロセッシングユニットに連結されたホストによって、
前記第１キーバリューストレージデバイスが、前記第１メモリの第１入出力領域にアクセスしてキーバリュー要請を受信し、前記キーバリュー要請に応答してバリューを書き込むように構成するステップと、
前記第１グラフィックスプロセッシングユニットが、前記第１メモリの第１入出力領域内のキーバリュー要請を格納し、前記第１メモリの第１入出力領域からバリューを読み取るように構成するステップと、を更に含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項７】
前記ホストに連結された第２グラフィックスプロセッシングユニットにより、キーを含む第２キーバリュー要請を前記第２グラフィックスプロセッシングユニットに連結された第２メモリの入出力領域内のキーバリュー要請キューに書き込むステップと、
前記ホスト及び前記第２メモリに連結された第２キーバリューストレージデバイスにより、前記第２キーバリュー要請を前記第２メモリの入出力領域内のキーバリュー要請キューから読み取るステップと、
前記第２キーバリューストレージデバイスにより、前記第２キーバリュー要請に応答して、前記第２キーバリュー要請のキーに対応する第２バリューを前記第２メモリの入出力領域に書き込むステップと、を更に含むことを特徴とする請求項６に記載のマシンラーニングのための方法。
【請求項８】
前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブするステップと、
前記第１キーバリューストレージデバイスにより、前記キールックアップを遂行するステップと同時に、前記第２キーバリューストレージデバイスにより、前記第２キーバリューストレージデバイスで、キールックアップを遂行して前記第２バリューをリトリーブするステップと、を更に含むことを特徴とする請求項７に記載のマシンラーニングのための方法。
【請求項９】
前記第１キーバリューストレージデバイスにより、前記第１キーバリュー要請を読み取るステップは、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して前記第１キーバリュー要請を読み取るステップを含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項１０】
前記第１キーバリューストレージデバイスにより、前記第１バリューを書き込むステップは、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して前記第１バリューを書き込むステップを含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項１１】
前記第１キーバリューストレージデバイスは、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結により、前記第１グラフィックプロセッシングユニットに連結されることを特徴とする請求項１０に記載のマシンラーニングのための方法。
【請求項１２】
前記第１グラフィックプロセッシングユニットにより、前記第１キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップの後に、且つ前記第１キーバリューストレージデバイスにより、前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップの前に、前記第１グラフィックプロセッシングユニットにより、第２キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップを更に含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項１３】
前記第１グラフィックプロセッシングユニットにより、キーを含む第２キーバリュー要請を前記第１メモリの第２入出力領域内のキーバリュー要請キューに書き込むステップと、
前記第１メモリに連結された第２キーバリューストレージデバイスにより、前記第２キーバリュー要請を前記第１メモリの第２入出力領域内のキーバリュー要請キューから読み取るステップと、
前記第２キーバリューストレージデバイスにより、前記第２キーバリュー要請に応答して、前記第２キーバリュー要請のキーに対応する第２バリューを前記第１メモリの第２入出力領域に書き込むステップと、を更に含むことを特徴とする請求項１に記載のマシンラーニングのための方法。
【請求項１４】
前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブするステップと、
前記第１キーバリューストレージデバイスにより、前記キールックアップを遂行するステップと同時に、前記第２キーバリューストレージデバイスにより、前記第２キーバリューストレージデバイスで、キールックアップを遂行して前記第２バリューをリトリーブするステップと、を更に含むことを特徴とする請求項１３に記載のマシンラーニングのための方法。
【請求項１５】
グラフィックプロセッシングユニットと、
前記グラフィックプロセッシングユニットに連結されたメモリと、
キーバリューストレージデバイスと、を備え、
前記キーバリューストレージデバイスは、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結により前記グラフィックスプロセッシングユニットに連結され、
前記グラフィックスプロセッシングユニットは、前記メモリの入出力領域内のメモリがマッピングされた入力及び出力動作を遂行し、１つ以上のキーバリュー要請を前記メモリの入出力領域内のキーバリュー要請キューに書き込み、
前記キーバリューストレージデバイスは、
前記メモリの入出力領域で、メモリがマッピングされた入力及び出力動作を遂行し、
前記１つ以上のキーバリュー要請を前記キーバリュー要請キューから読み取り、
前記１つ以上のキーバリュー要請の中のキーバリュー要請に応答して、前記キーバリュー要請のキーに対応するバリューを前記メモリの入出力領域に書き込むことを特徴とするマシンラーニングのためのシステム。
【請求項１６】
前記キーバリュー要請による書き込み領域は、前記バリューに割り当てられた領域であるリターンバリュー領域を含むことを特徴とする請求項１５に記載のマシンラーニングのためのシステム。
【請求項１７】
前記バリューを前記メモリの入出力領域に書き込むことは、前記バリューを前記リターンバリュー領域に書き込むことを含むことを特徴とする請求項１６に記載のマシンラーニングのためのシステム。
【請求項１８】
前記バリューを前記メモリの入出力領域に書き込むことは、前記バリューを前記メモリの入出力領域内のリターンバリューキューに書き込むことを含むことを特徴とする請求項１５に記載のマシンラーニングのためのシステム。
【請求項１９】
グラフィックプロセッシングユニットと、
キーバリューストレージデバイスと、
前記グラフィックスプロセッシングユニットと前記キーバリューストレージデバイスとの間の通信のために共有されたメモリ手段と、を備え、
前記グラフィックプロセッシングユニットは、前記通信のために共有されたメモリ手段を介して１つ以上のキーバリュー要請を前記キーバリューストレージデバイスに伝送し、
前記キーバリューストレージデバイスは、
前記１つ以上のキーバリュー要請を受信し、
前記１つ以上のキーバリュー要請の中のキーバリュー要請に応答して、前記キーバリュー要請のキーに対応するバリューを前記通信のために共有されたメモリ手段を介して、前記グラフィックプロセッシングユニットに伝送することを特徴とするマシンラーニングのためのシステム。
【請求項２０】
前記通信のために共有されたメモリ手段は、前記グラフィックスプロセッシングユニットに連結されたメモリを含み、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結を通じたＰ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して、前記キーバリューストレージデバイスによってアクセスされることを特徴とする請求項１９に記載のマシンラーニングのためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシンラーニング（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）に関し、より詳細には、シリアライゼーション（ｓｅｒｉａｌｉｚａｔｉｏｎ）されたキーバリューアクセス（ｋｅｙ  ｖａｌｕｅ  ａｃｃｅｓｓ）を防止するマシンラーニングシステムのためのシステム及び方法に関する。
【背景技術】
【０００２】
ブロックインターフェース（ｂｌｏｃｋ  ｉｎｔｅｒｆａｃｅ）を有するいくつかの従来技術のＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）において、ＳＳＤに格納されたデータに対するキーバリューアクセス（ｋｅｙ  ｖａｌｕｅ  ａｃｃｅｓｓ）は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を含めて全体のトレーニングデータのサブセットをランダムに（ｒａｎｄｏｍｌｙ）サンプリングする確率的（ｓｔｏｃｈａｓｔｉｃ）マシンラーニング中にキーバリューインターフェースを提供することを要求する。ホストＣＰＵは、ファイルインデックスルックアップ（ｆｉｌｅ  ｉｎｄｅｘ  ｌｏｏｋｕｐ）及びファイルシステムアクセス（ｆｉｌｅ  ｓｙｓｔｅｍ  ａｃｃｅｓｓ）を遂行してデータの位置を識別するが、これはシリアライゼーションされたキーバリューアクセスをもたらす。このようなシリアライゼーションされたキーバリューアクセスは、パフォーマンスを制限する。
【０００３】
従って、データに対するキーバリューアクセスを含むマシンラーニングを遂行するための改善されたシステム及び方法が必要である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第８９９６７８１号明細書
【特許文献２】米国特許第９３３６２１７号明細書
【特許文献３】米国特許出願公開第２０１２／０３１０３７０号明細書
【特許文献４】米国特許出願公開第２０１６／００３４８０９号明細書
【特許文献５】米国特許出願公開第２０１６／０２８３１５６号明細書
【特許文献６】米国特許出願公開第２０１７／００３９２６９号明細書
【特許文献７】米国特許出願公開第２０１７／０１４８４３１号明細書
【特許文献８】米国特許出願公開第２０１７／０２８６２８４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、シリアライゼーションされたキーバリューアクセスを防止するマシンラーニングシステムのためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一態様によるマシンラーニングのための方法は、第１グラフィックプロセッシングユニット（ＧＰＵ）により、キーを含む第１キーバリュー要請を前記第１グラフィックプロセッシングユニットに連結された第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップと、前記第１メモリに連結された第１キーバリューストレージデバイス（ａ  ｆｉｒｓｔ  ｋｅｙ  ｖａｌｕｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ（例えば、ＳＳＤ））により、前記第１キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューから読み取るステップと、前記第１キーバリューストレージデバイスにより、前記第１キーバリュー要請に応答して、前記第１キーバリュー要請のキーに対応する第１バリューを前記第１メモリの第１入出力領域に書き込むステップと、を有する。
【０００７】
前記方法は、前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブ（ｒｅｔｒｉｅｖｅ）するステップを更に含み得る。
前記第１キーバリュー要請による書き込み領域は、前記第１バリューに割り当てられた領域であるリターンバリュー領域を含み得る。
前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップは、前記第１バリューを前記リターンバリュー領域に書き込むステップを含み得る。
前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップは、前記第１バリューを前記第１メモリの第１入出力領域内のリターンバリューキュー（ｒｅｔｕｒｎ  ｖａｌｕｅ  ｑｕｅｕｅ）に書き込むステップを含み得る。
前記方法は、前記第１キーバリューストレージデバイス及び前記第１グラフィックプロセッシングユニットに連結されたホストによって、前記第１キーバリューストレージデバイスが、前記第１メモリの第１入出力領域にアクセスしてキーバリューの要請を受信し、前記キーバリュー要請に応答してバリューを書き込む（ｗｒｉｔｅ）ように構成するステップと、前記第１グラフィックスプロセッシングユニットが、前記第１メモリの第１入力出力領域内のキーバリュー要請を格納し、前記第１メモリの第１入出力領域からバリューを読み取（ｒｅａｄ）るように構成するステップと、を更に含み得る。
前記方法は、前記ホストに連結された第２グラフィックスプロセッシングユニットにより、キーを含む第２キーバリュー要請を前記第２グラフィックスプロセッシングユニットに連結された第２メモリの入出力領域内のキーバリュー要請キューに書き込むステップと、前記ホスト及び前記第２メモリに連結された第２キーバリューストレージデバイスにより、前記第２キーバリュー要請を前記第２メモリの入出力領域内のキーバリュー要請キューから読み取るステップと、前記第２キーバリューストレージデバイスにより、前記第２キーバリュー要請に応答して、前記第２キーバリュー要請のキーに対応する第２バリューを前記第２メモリの入出力領域に書き込むステップと、を更に含み得る。
前記方法は、前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブ（ｒｅｔｒｉｅｖｅ）するステップと、前記第１キーバリューストレージデバイスにより、前記キールックアップを遂行するステップと同時に、前記第２キーバリューストレージデバイスにより、前記第２キーバリューストレージデバイスで、キールックアップを遂行して前記第２バリューをリトリーブするステップと、を更に含み得る。
前記第１キーバリューストレージデバイスにより、前記第１キーバリュー要請を読み取るステップは、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して前記第１キーバリュー要請を読み取るステップを含み得る。
前記第１キーバリューストレージデバイスにより、前記第１バリューを書き込む（ｗｒｉｔｅ）ステップは、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して前記第１バリューを書き込む（ｗｒｉｔｅ）ステップを含み得る。
前記第１キーバリューストレージデバイスは、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結により、前記第１グラフィックプロセッシングユニットに連結され得る。
前記方法は、前記第１グラフィックプロセッシングユニットにより、前記第１キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップの後に、且つ前記第１キーバリューストレージデバイスにより、前記第１バリューを前記第１メモリの第１入出力領域に書き込むステップの前に、前記第１グラフィックプロセッシングユニットにより、第２キーバリュー要請を前記第１メモリの第１入出力領域内のキーバリュー要請キューに書き込むステップを更に含み得る。
前記方法は、前記第１グラフィックプロセッシングユニットにより、キーを含む第２キーバリュー要請を前記第１メモリの第２入出力領域内のキーバリュー要請キューに書き込むステップと、前記第１メモリに連結された第２キーバリューストレージデバイスにより、前記第２キーバリュー要請を前記第１メモリの第２入出力領域内のキーバリュー要請キューから読み取るステップと、前記第２キーバリューストレージデバイスにより、前記第２キーバリュー要請に応答して、前記第２キーバリュー要請のキーに対応する第２バリューを前記第１メモリの第２入出力領域に書き込むステップと、を更に含み得る。
前記方法は、前記第１キーバリューストレージデバイスにより、前記第１キーバリューストレージデバイスで、キールックアップを遂行して前記第１バリューをリトリーブ（ｒｅｔｒｉｅｖｅ）するステップと、前記第１キーバリューストレージデバイスにより、前記キールックアップを遂行するステップと同時に、前記第２キーバリューストレージデバイスにより、前記第２キーバリューストレージデバイスで、キールックアップを遂行して前記第２バリューをリトリーブするステップと、を更に含み得る。
【０００８】
上記目的を達成するためになされた本発明の一態様によるマシンラーニングのためのシステムは、グラフィックプロセッシングユニットと、前記グラフィックプロセッシングユニットに連結されたメモリと、キーバリューストレージデバイスと、を備え、前記キーバリューストレージデバイスは、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結により前記グラフィックスプロセッシングユニットに連結され、前記グラフィックスプロセッシングユニットは、前記メモリの入出力領域内のメモリがマッピング（ｍａｐｐｉｎｇ）された入力及び出力動作を遂行し、１つ以上のキーバリュー要請を前記メモリの入出力領域内のキーバリュー要請キューに書き込み、前記キーバリューストレージデバイスは、前記メモリの入出力領域で、メモリがマッピングされた入力及び出力動作を遂行し、前記１つ以上のキーバリュー要請を前記キーバリュー要請キューから読み取り（ｒｅａｄ）、前記１つ以上のキーバリュー要請の中のキーバリュー要請に応答して、前記キーバリュー要請のキーに対応するバリューを前記メモリの入出力領域に書き込む。
【０００９】
前記キーバリュー要請による書き込み領域は、前記バリューに割り当てられた領域であるリターンバリュー領域を含み得る。
前記バリューを前記メモリの入出力領域に書き込むことは、前記バリューを前記リターンバリュー領域に書き込むことを含み得る。
前記バリューを前記メモリの入出力領域に書き込むことは、前記バリューを前記メモリの入出力領域内のリターンバリューキュー（ｒｅｔｕｒｎ  ｖａｌｕｅ  ｑｕｅｕｅ）に書き込むことを含み得る。
【００１０】
上記目的を達成するためになされた本発明の他の態様によるマシンラーニングのためのシステムは、グラフィックプロセッシングユニットと、キーバリューストレージデバイスと、前記グラフィックスプロセッシングユニットと前記キーバリューストレージデバイスとの間の通信のために共有されたメモリ手段と、を備え、前記グラフィックスプロセッシングユニットは、前記通信のために共有されたメモリ手段を介して１つ以上のキーバリュー要請を前記キーバリューストレージデバイスに伝送し、前記キーバリューストレージデバイスは、前記１つ以上のキーバリュー要請を受信し、前記１つ以上のキーバリュー要請の中のキーバリュー要請に応答して、前記キーバリュー要請のキーに対応するバリューを前記通信のために共有されたメモリ手段を介して、前記グラフィックプロセッシングユニットに伝送する。
【００１１】
前記通信のために共有されたメモリ手段は、前記グラフィックスプロセッシングユニットに連結されたメモリを含み、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）連結を通じたＰ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を介して、前記キーバリューストレージデバイスによってアクセスされ得る。
【発明の効果】
【００１２】
本発明によると、ホストアプリケーションによって遂行されるタスク（ｔａｓｋ）が、ＧＰＵとＳＳＤとの間の通信のための経路を設定することのみであるため、ＧＰＵ計算のシリアライゼーションを防止することができる。従って、本発明は、規模拡張（ｓｃａｌｅ  ｏｕｔ）のための多数のＧＰＵの使用を可能にして、マシンラーニングトレーニングを加速化することができる。
【図面の簡単な説明】
【００１３】
【図１】従来技術によるマシンラーニングのためのシステムの機能ブロック図である。
【図２】本発明の一実施形態によるオンボードＳＳＤを備えたグラフィックスカードのブロック図である。
【図３】本発明の一実施形態によるデータの流れ図である。
【図４】従来技術と本発明の一実施形態とを比較したタイミング図である。
【図５】従来技術と本発明の他の実施形態とを比較したタイミング図である。
【発明を実施するための形態】
【００１４】
以下、本発明のキーバリューアクセスを含むマシンラーニングを遂行するためのシステム及び方法を実施するための形態の具体例を、図面を参照しながら詳細に説明する。本発明の実施形態は、本発明が構成されたり、活用されたりする唯一の形態を示すものとして意図しない。実施形態の説明は、図示した実施形態に関連する本発明の特徴を提供する。しかし、同一又は同等の機能及び構造は、本発明の範囲内に含まれるものとして意図する他の実施形態によって達成される。本明細書の他の箇所でも表示しているように、類似の構成要素の符号は類似の構成要素又は特徴を示すものとして意図する。
【００１５】
従来技術のマシンラーニング（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）プラットフォーム（ｐｌａｔｆｏｒｍ）は、全体のトレーニング（ｔｒａｉｎｉｎｇ）データのサブセットをランダムに（ｒａｎｄｏｍｌｙ）サンプリングする確率的（ｓｔｏｃｈａｓｔｉｃ）マシンラーニングトレーニングに利用される場合に欠点を有する。このようなマシンラーニングのプラットフォームは、確率的マシンラーニングトレーニング中にキーバリューアクセスによる低いＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：グラフィックスプロセッシングユニット）の活用で問題になり、これはＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を含めてＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）バスを横切って（ｔｒａｖｅｒｓｉｎｇ）、キーバリューインターフェース及びデータ伝送を提供することを要求するからである。上述した通り、いくつかの従来技術のシステムにおいて、ホストＣＰＵは、ファイルインデックスルックアップ（ｌｏｏｋｕｐ）及びファイルシステムアクセスを遂行してデータの位置を識別するが、これはシリアライゼーションされたキーバリューアクセスにつながる。一方、いくつかの実施形態で、ＣＰＵがオンボード（ｏｎｂｏａｒｄ）ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）に格納されたデータに対するキーバリューアクセスでは、関与しないため、性能は向上する。ＧＰＵは、オンボードのキーバリューストレージデバイス（例えば、オンボードのキーバリューＳＳＤ）、例えば非同期（ａｓｙｎｃｈｒｏｎｏｕｓ）のキーバリューアクセスを可能にしてアクセス待機時間（ｌａｔｅｎｃｙ）の効果を減らす、ＧＰＵ及びオンボードのキーバリューＳＳＤを含むグラフィックスカード（ｏｎ  ａ  ｇｒａｐｈｉｃｓ  ｃａｒｄ）上にキーバリューのコマンドを直接伝送する。本明細書で使用するものとして、「キーバリューストレージデバイス」は、このような各要請に応答して、要請に含まれるキーに対応するバリューを返すことで、キーバリュー要請（それぞれは、キーを含む）に応答するように構成される（ＳＳＤのような）永久ストレージデバイスである。
【００１６】
図１は、従来技術によるマシンラーニングのためのシステムの機能ブロック図であり、ＧＰＵマシンラーニングトレーニング中に、ソフトウェアキーバリューのストアを利用して、ブロックインターフェースを有するＳＳＤ上に格納されたデータに対するキーバリューアクセスの全体的な流れを示している。先ず、ホストアプリケーション１０５は、「ＧＥＴ」要請（或いは取得要請）をソフトウェアキーバリューストア１１０（ソフトウェアキーバリューストア（Ｓ／Ｗ  ＫＶ  Ｓｔｏｒｅ）とも称される）に伝送することにより、キーバリューアクセスを開始する。あるキーに対応するデータの位置を識別するために、ソフトウェアキーバリューストア１１０は、指定された（ｓｐｅｃｉｆｉｅｄ）キーに対応するデータのファイルオフセット（ｏｆｆｓｅｔ）を格納するインデックステーブルにアクセスする。そうすると、ソフトウェアキーバリューストア１１０は、ファイルオフセットを有するファイルシステム１１５にアクセスし、ファイルシステム１１５は、ブロックインターフェース１２０を有するＳＳＤにアクセスし、指定されたキーに対応するデータをフェッチ（ｆｅｔｃｈ）する。一旦バリューがホストアプリケーションで使用可能になると、ホストアプリケーションは、ＧＰＵ計算のためのＧＰＵメモリ１２５にバリューを伝送してＧＰＵカーネル（ｋｅｒｎｅｌ）を開始する（ｌａｕｎｃｈ）。ブロックインターフェースを有する従来技術のＳＳＤを有するソフトウェアキーバリューストアのため、これらに対する全ての動作は、順次的に（ｓｅｑｕｅｎｔｉａｌｌｙ）遂行される。
【００１７】
図１に示したように、ブロックインターフェースを有するＳＳＤに対するキーバリューアクセスは、指定されたキーに対応するデータの位置を識別するためにホスト上で実行されるいくつかの計算ステップを含む。ＧＰＵはソフトウェアキーバリューストアの計算が終わった後にのみ計算を遂行することができる。ＧＰＵは、他のＧＰＵからのキーバリューアクセスの完了を待たなければならず、これはＧＰＵ計算のシリアライゼーションにつながるため、より多くのＧＰＵがシステムで使用されている場合、キーバリューアクセスの待ち時間は増加する。結果的に、ブロックインターフェースを有する従来技術のＳＳＤに対するキーバリューアクセスは、システムで生産的に使用可能なＧＰＵの数を制限する。
【００１８】
本実施形態において、キーバリューインターフェース（又は「キーバリューＳＳＤ」）を有するオンボードＳＳＤを搭載したグラフィックスカードが、従来技術のシステムの短所の一部を克服するために使用される。図２は、本発明の一実施形態によるオンボードＳＳＤを備えたグラフィックスカードのブロック図であり、このようなデバイスを有する例示的なシステムを示す。ストレージとＧＰＵとの間のデータの移動がグローバルＰＣＩｅバスを横切るデータ伝送を要請し、これはＧＰＵからのデータアクセスの待機時間を増加させる従来技術のシステムとは異なり、オンボードのキーバリューＳＳＤ２０５を有するグラフィックスカードは、オンボードのキーバリューＳＳＤ２０５とＧＰＵ２１０との間のＰ２Ｐ（ｐｅｅｒ  ｔｏ  ｐｅｅｒ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を利用することにより、オーバーヘッド（ｏｖｅｒｈｅａｄ）を減らすことができ、完全なＰ２Ｐ  ＤＭＡ制御をＧＰＵ２１０に与える。いくつかの実施形態で、オンボードのキーバリューＳＳＤ２０５は、非標準的な（ｎｏｎ−ｓｔａｎｄａｒｄ）コマンドとしてキーバリューコマンドを提供する。例えば、キーバリュー要請キュー（ｑｕｅｕｅ、以下でより詳細に説明する）は、ＮＶＭｅ（ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）コマンドキューとして具現され、ＮＶＭｅコマンドは、キーバリューＳＳＤ２０５のファームウェア（ｆｉｒｍｗａｒｅ）及びＧＰＵ上のドライバソフトウェアで定義されたベンダー固有の（ｖｅｎｄｏｒ−ｓｐｅｃｉｆｉｃ）コマンドであり、キーバリューコマンド、即ちキーバリューＳＳＤ２０５からコマンドの一部として提供されるキーに対応するバリューを要請するために使用されるコマンドに対応する。
【００１９】
本実施形態におけるシステムは、オンボードのキーバリューＳＳＤにおける非同期のキーバリューアクセスを提供するために使用され、本実施形態は、トレーニングデータのランダムサンプリングのためにグラフィックスカードにおけるキーバリューＳＳＤを活用する。図３は、本発明の一実施形態によるデータの流れ図であり、マシンラーニングトレーニング中のキーバリューアクセスの流れを示している。本実施形態と従来技術のシステムとの間の重要な違いは、本実施形態におけるＧＰＵは、キーバリューコマンドをキーバリューＳＳＤ２０５に直接伝送することである。先ず、ホストアプリケーションの実行の初期ステップで、ホストアプリケーション１０５は、特定のＧＰＵデバイスのメモリをＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）ＢＡＲ（ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒｓ）メモリ領域にマッピング（ｍａｐｐｉｎｇ）して、キーバリューＳＳＤ２０５とＧＰＵとの間の直接的な通信を設定（ｅｓｔａｂｌｉｓｈ）する。このプロセスにより、キーバリューＳＳＤ２０５とＧＰＵとの間の通信（例えば、メモリがマッピング（ｍａｐｐｉｎｇ）された入出力によって）に割り当てられたＧＰＵメモリの領域は、ＧＰＵメモリの「入出力領域」として本明細書で指称する。ＧＰＵ及びキーバリューＳＳＤ２０５の両方によって直接的にアクセス可能なＧＰＵメモリの入出力領域は、共有されたメモリとして機能的に動作する。ＧＰＵアプリケーション３０５は、キーバリューＳＳＤ２０５上でメモリがマッピングされたＩＯ（入出力）を遂行し、露出されたＧＰＵメモリのバスアドレスを供給することにより、キーバリューＳＳＤ２０５にＧＥＴ要請を発行する。キーバリューＳＳＤ２０５内のファームウェアは、キールックアップを遂行して、キーに対応するバリューをリトリーブした後に、ホストアプリケーション１０５の仲裁（ｉｎｔｅｒｍｅｄｉａｔｉｏｎ）なしに、そのバリューをマッピングされたＧＰＵデバイスのメモリに（即ち、ＧＰＵメモリの入出力領域に）書き込む（ｗｒｉｔｅ）。
【００２０】
本実施形態において、ＧＰＵが二番目の次の要請をする前に、一番目の要請に対する応答を待つ必要がないという意味で、キーバリュー要請キュー（ｋｅｙ  ｖａｌｕｅ  ｒｅｑｕｅｓｔ  ｑｕｅｕｅ：ＫＶＲＱ）３１０が使用され、キーバリューアクセスは、非遮断的（ｎｏｎ−ｂｌｏｃｋｉｎｇ）である。代わりに、ＧＰＵは、キーバリュー要請をキーバリュー要請キュー３１０に配置し、そして要請は、キーバリューＳＳＤ２０５によって順番に処理される。このように、ＧＰＵアプリケーションが要請をキーバリュー要請キュー３１０に入れることで、要請動作が完了する。キーバリュー要請キュー３１０のエントリの個数がキーバリュー要請の個数であるように、キーバリュー要請キュー３１０は、完了していない要請を有している（ｈｏｌｄ）。キーバリューＳＳＤ２０５内のファームウェアは、バリューがＧＰＵメモリに伝送された場合、指定されたキーに対応するキーバリュー要請キューのエントリを開放する（ｒｅｌｅａｓｅ）。
【００２１】
各ＧＰＵの個々のキーバリューアクセスは、多数のＧＰＵからのキーバリューアクセスを重ねる（重畳させる）こと（又はＧＰＵからのオーバーラッピング（ｏｖｅｒｌａｐｐｉｎｇ）キーバリューアクセス）を可能にする。例えば、二つのＧＰＵを搭載したシステムで、各ＧＰＵは、それぞれのキーバリューＳＳＤに連結され、２つのＧＰＵは、同時に要請を発行し、そしてそれらのそれぞれのキーバリューＳＳＤは同時に応答することができる。図４は、従来技術と本発明の一実施形態とを比較したタイミング図であり、それぞれのキーバリューＳＳＤにそれぞれ連結された二つのＧＰＵを含む例の動作を示す。図４は、またＧＰＵ計算がシリアライゼーションされた従来技術のアプローチと比較して、キーバリューアクセスを重ねることが二個のＧＰＵにより遂行されることを示す、本実施形態で、システムにより節約された時間を示している。いくつかの実施形態で、３つ以上の（例えば、任意の個数）ＧＰＵは、それぞれのキーバリューＳＳＤにそれぞれ連結され、キーバリューの動作を（例えば、同時に）重ねることを遂行する。
【００２２】
本実施形態において、キーバリューアクセスのための要請及び応答の分離は、非同期のキーバリューアクセスを可能にし、例えばＧＰＵから多数の要請のバッチング（ｂａｔｃｈｉｎｇ）が可能である。図５は、従来技術と本発明の他の実施形態とを比較したタイミング図であり、２つのキーバリューコマンドをバッチングする場合の非同期のキーバリューアクセスの例を図示する。従来技術によるＧＰＵ計算及びＳＳＤデバイスのアクセスがシリアライゼーションされる同期のキーバリューアクセスと比較して、本実施形態の非同期のキーバリューアクセスは、ＧＰＵの計算を有する多数のキーバリューコマンドの重なり（オーバーラッピング）を可能にする。この例で、ＧＰＵは、前の要請の完了のためにその度に待機する代わりに、ＧＥＴ要請を連続的に発行する。いくつかの実施形態で、３つ以上の（例えば、任意の個数）ＧＰＵは、それぞれのキーバリューＳＳＤにそれぞれ連結され、キーバリューの動作を（例えば、同時に）重ねることを遂行する。
【００２３】
本実施形態において、キーバリューＳＳＤがキーバリュー要請に応答してバリューをリトリーブ（ｒｅｔｒｉｅｖｅ）する場合、それはキーバリュー要請キューに、即ちこの目的のためにキーバリュー要請内の割り当てられたメモリの領域（又は「リターンバリュー（ｒｅｔｕｒｎ−ｖａｌｕｅ）領域」）に再びリトリーブ（ｒｅｔｒｉｅｖｅ）されたバリューを書き込む（ｗｒｉｔｅ）。他の実施形態で、キーバリューＳＳＤはＧＰＵメモリの入出力領域に割り当てられた分離されたキュー（又は「リターンバリューキュー」）にリトリーブ（ｒｅｔｒｉｅｖｅ）されたバリューを代わりに書き込む（ｗｒｉｔｅ）。本実施形態で、各ＧＰＵは、それがキーバリュー要請を伝送する一つの専用のキーバリューＳＳＤを有する代わりに、一つのＧＰＵが複数のキーバリューＳＳＤを有する。本実施形態で、複数のキーバリュー要請キューは、それぞれのキーバリューＳＳＤに対してそれぞれＧＰＵメモリ内に割り当てられる。他の実施形態で、いくつかのＧＰＵは１つのキーバリューＳＳＤに連結され、１つのキーバリューＳＳＤは、例えばラウンドロビン（ｒｏｕｎｄ−ｒｏｂｉｎ）方式で、ＧＰＵのそれぞれのキーバリュー要請キューで、キーバリュー要請を提供する。
【００２４】
本実施形態において、ホストアプリケーションによって遂行されるタスク（ｔａｓｋ）は、ＧＰＵとＳＳＤとの間の通信のための経路を設定することのみを必要とし、ＧＰＵの計算のシリアライゼーションを防止することにより本実施形態の拡張性（ｓｃａｌａｂｉｌｉｔｙ）を向上させる。従来技術ではＧＰＵ計算のシリアライゼーションが防止されず、ＣＰＵ上のホストアプリケーションによって遂行されるキーバリューアクセス動作が発生する。このように、本実施形態は、規模拡張（ｓｃａｌｅ  ｏｕｔ）された多数のＧＰＵの使用がマシンラーニングトレーニングを加速化させる。複雑なキーバリューソフトウェアを単純なデバイスのインターフェースに交替することにより、本実施形態は、またそれ以外のホスト上に課せられるＣＰＵコアの個数の要請を含むリソースの要請を減らす。これらの要請を防止することは、より良いエネルギー効率を生じさせる。
【００２５】
上述の実施形態は、一つ以上のプロセッシング回路を用いて構成される。本明細書で使用した「プロセッシング回路」という用語は、データ又はデジタル信号を処理するために利用されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味する。プロセッシング回路のハードウェアは、例えばＡＳＩＣｓ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ）、一般的な目的の又は特定の目的のＣＰＵｓ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ）、ＤＳＰｓ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒｓ）、ＧＰＵｓ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ）、及びＦＰＧＡｓ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙｓ）のようなプログラマブル（ｐｒｏｇｒａｍｍａｂｌｅ）ロジックデバイスを含む。本明細書で使用したように、プロセッシング回路の各機能は、機能を遂行するために構成されたハードウェア（即ち、ハードウェアに内蔵（ｈａｒｄ−ｗｉｒｅｄ））、又は非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）記憶媒体に格納されたコマンドを実行するように構成されたＣＰＵのようなより一般的な目的のハードウェアのいずれか一つによって行われる。プロセッシング回路は、一つのＰＣＢ（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上で製造されるか、又は相互連結された複数のＰＣＢに分散される。プロセッシング回路は、他のプロセッシング回路を含み、例えばプロセッシング回路は、ＰＣＢ上に相互連結された二つのプロセッシング回路、ＦＰＧＡ、及びＣＰＵを含む。
【００２６】
多様な構成要素、成分、領域、階層、及び／又はセクションを説明するために、「第１」、「第２」、「第３」などを本明細書で使用したが、これらの構成要素、成分、階層、及び／又はセクションはこれらの用語によって制限されない。これらの用語は、単に一つの構成要素、成分、領域、階層、又はセクションを他の構成要素、成分、領域、階層、又はセクションから区別するために使用される。従って、本明細書で議論された第１の構成要素、成分、領域、階層、又はセクションは、本発明の思想及び範囲を逸脱せずに、第２の構成要素、成分、領域、階層、又はセクションと称される。
【００２７】
本明細書で使用した用語は、特定の実施形態を説明するためのものであり、本発明を制限しようと意図するものではない。本明細書で使用したように、「実質的に」、「約」という用語及び類似の用語は、近似の用語として使用されて、程度の用語として使用されず、当業者によって識別されて測定された、又は計算されたバリューの固有の変動を考慮するためのものである。本明細書で使用したように、「主（ｍａｊｏｒ）成分」という用語は、組成物、ポリマー、又は組成物若しくは生成物の任意の他の一つの成分の量よりも大きい量の生成物に存在する成分を示す。一方、「主（ｐｒｉｍａｒｙ）成分」という用語は、組成物、ポリマー、又は生成物の重量の少なくとも５０％以上を構成する成分を示す。本明細書で使用したように、「主な部分」という用語は、複数の項目に適用される場合、項目の少なくとも半分を意味する。
【００２８】
本明細書で使用したように、文脈上明らかに違うように示さない限り、単数表現は複数の形態も含むものとして意図する。「包含する（ｃｏｍｐｒｉｓｅｓ）」及び／又は「包含する（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書で使用する場合、記述された特徴、数字、ステップ、動作、構成要素、及び／又は成分の存在を明示するが、一つ以上の他の特徴、数字、ステップ、動作、構成要素、成分、及び／又はこれらのグループの存在又は付加を排除しない。本明細書で使用したように、用語の「及び／又は」は、関連して列挙された項目の一つ以上の任意且つ全ての組み合わせを含む。「少なくとも一つの」のような表現は、要素のリストに先立つ場合、要素の全体リストを修正し、リストの個々の要素を修正しない。なお、「できる（ｍａｙ）」の使用は、本発明の実施形態を説明する場合、本発明の一つ以上の実施形態を示す。なお、「例示的な」という用語は、例示又は図示を示すものとして意図する。本明細書で使用したように、「利用する（ｕｓｅ）」、「利用する（ｕｓｉｎｇ）」、及び「使用された（ｕｓｅｄ）」という用語は、「活用する（ｕｔｉｌｉｚｅ）」、「活用する（ｕｔｉｌｉｚｉｎｇ）」、及び「活用された（ｕｔｉｌｉｚｅｄ）」という用語と同じことを意味するものと見なされる。
【００２９】
構成要素又は階層が、他の構成要素又は階層「上の」、「連結された」又は「隣接の」として称される場合、それは直接的に、他の構成要素又は階層上の、連結された又は隣接のものであり、一つ以上の中間構成要素又は階層が存在する。一方、構成要素又は階層が、他の構成要素又は層「に直接的に」、「に直接的に連結された」、「のすぐ隣接して」として称される場合、中間要素又は階層は存在しない。
【００３０】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【００３１】
本発明は、ＧＰＵ計算におけるシリアライゼーションを防止することにより、多数のＧＰＵの使用を可能にして、マシンラーニングトレーニングを加速化するマシンラーニングシステムに有用である。
【符号の説明】
【００３２】
１０５    ホストアプリケーション
１１０    ソフトウェアキーバリューストア
１１５    ファイルシステム
１２０    ブロックインターフェース
１２５    ＧＰＵメモリ
２０５    （オンボードの）キーバリューＳＳＤ
２１０    ＧＰＵ
３０５    ＧＰＵアプリケーション
３１０    キーバリュー要請キュー
【図１】
2019133662.tif 000003
【図２】
2019133662.tif 000004
【図３】
2019133662.tif 000005
【図４】
2019133662.tif 000006
【図５】
2019133662.tif 000007