(57)【要約】【課題】  機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法を提供する。【解決手段】  動作システムを実行する処理回路に機械学習のためのシステム及び方法が提供され、処理回路は、第１メモリ及び第２メモリに連結されている。一部の実施形態で、前記方法は、使用者レベルプロセスが、動作システムから第１メモリからの第１メモリ割当を要請し、第１メモリ割当は複数の第１セグメントを含み、複数の第１セグメントの中で第１セグメントは第１種類のデータオブジェクトを格納するのに十分なサイズを有する段階と、使用者レベルプロセスが、第１計算の結果が第１種類のデータオブジェクトであることを判断する段階と、第１計算の結果が第１種類のデータオブジェクトであることを判断することに応答して、使用者レベルプロセスが、複数の第１セグメントの中で使用されないセグメントがないことを判断する段階と、を含む。【選択図】      図１
2019160306.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリ及び第２メモリに連結されて動作システムを実行する処理回路に機械学習のための方法であって、
前記処理回路で運用する使用者レベルプロセスが、前記動作システムから前記第１メモリからの第１メモリ割当を要請し、前記第１メモリ割当は、複数の第１セグメントを含み、前記複数の第１セグメントの中で第１セグメントは、第１種類のデータオブジェクトを格納するのに十分なサイズを有する、段階と、
前記使用者レベルプロセスが、第１計算の結果が前記第１種類のデータオブジェクトであることを判断する、段階と、
前記第１計算の前記結果が前記第１種類のデータオブジェクトであることを判断することに応答して、前記使用者レベルプロセスが、前記複数の第１セグメントの全てが使用中であることを判断する、段階と、
前記使用者レベルプロセスが、前記複数の第１セグメントの全てが使用中であることを判断することに応答して、前記複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別する、段階と、
前記使用者レベルプロセスが、前記最低使用頻度第１セグメントの内容を前記第２メモリにコピーする段階と、
前記第１計算を遂行する段階と、
前記最低使用頻度第１セグメントに前記第１計算の前記結果を格納する段階と、
を含む方法。
【請求項２】
前記第１種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項１に記載の方法。
【請求項３】
前記第１種類の前記データオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である、
請求項１に記載の方法。
【請求項４】
前記方法は、さらに、
前記使用者レベルプロセスが、第１仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化する段階、を含み、
前記使用者レベルプロセスが、前記複数の第１セグメントの全てが使用中であることを判断する段階は、前記複数の第１セグメントの全てが使用中であるか否かを判断するために、前記仮想のポインタークラスのメンバー関数を実行する段階、を含む、
請求項１に記載の方法。
【請求項５】
前記最低使用頻度第１セグメントに前記第１計算の前記結果を格納する段階は、前記第１仮想のポインターのメンバー変数に前記最低使用頻度第１セグメントの物理的アドレスを割当てる段階、を含む、
請求項４に記載の方法。
【請求項６】
前記使用者レベルプロセスが、前記最低使用頻度第１セグメントの内容を前記第２メモリにコピーする段階は、前記最低使用頻度第１セグメントの前記物理的アドレスから前記第２メモリの物理的アドレスに第２仮想のポインターのメンバー変数の値を変更する段階、を含む、
請求項５に記載の方法。
【請求項７】
前記方法は、さらに、
前記使用者レベルプロセスが、前記動作システムから前記第１メモリからの第２メモリ割当を要請し、前記第２メモリ割当は、複数の第２セグメントを含み、前記複数の第２セグメントの中で第２セグメントは、第２種類のデータオブジェクトを格納するのに十分なサイズを有する、段階と、
前記使用者レベルプロセスが、第２計算の結果が前記第２種類のデータオブジェクトであることを判断する、段階と、
前記第２計算の前記結果が、前記第２種類のデータオブジェクトであることを判断することに応答して、前記使用者レベルプロセスが、前記複数の第２セグメントの中で使用されないセグメントがないことを判断する、段階と、
前記使用者レベルプロセスが、前記複数の第２セグメントの中で使用されないセグメントがないことを判断することに応答して、前記複数の第２セグメントの中で物理的アドレスを有する最低使用頻度第２セグメントを識別する段階と、
前記使用者レベルプロセスが、前記最低使用頻度第２セグメントの内容を前記第２メモリにコピーする、段階と、
前記第２計算を遂行する、段階と、
前記最低使用頻度第２セグメントに前記第２計算の前記結果を格納する、段階と、
を含む、請求項１に記載の方法。
【請求項８】
前記第２種類のデータオブジェクトは、ニューラルネットワークの加重値を含む、
請求項７に記載の方法。
【請求項９】
前記第２種類のデータオブジェクトは、さらに、前記ニューラルネットワークの加重値の勾配を含む、
請求項８に記載の方法。
【請求項１０】
前記処理回路は、グラフィック処理装置である、
請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
前記第１メモリは、前記グラフィック処理装置のメモリバスでのメモリである、
請求項１０に記載の方法。
【請求項１２】
前記第２メモリは、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じて前記グラフィック処理装置に連結される、
請求項１０または１１に記載の方法。
【請求項１３】
機械学習のための動作システムであって、
処理回路と、
前記処理回路に連結される第１メモリと、
前記処理回路に連結される第２メモリと、
命令語を格納する非一時的コンピュータ読出し可能記憶媒体と、を含み、
前記処理回路によって前記命令語が実行される場合、前記処理回路は、前記命令語に従って前記動作システムを実行し、前記動作システム内の使用者レベルプロセスを開始するようにし、
前記使用者レベルプロセスは、
前記動作システムから、前記第１メモリの第１メモリ割当を要請し、前記第１メモリ割当は、複数の第１セグメントを含み、前記複数の第１セグメントの各々は、第１種類のデータオブジェクトを格納するのに十分なサイズを有し、
第１計算の結果が前記第１種類のデータオブジェクトであることを判断し、
前記第１計算の前記結果が前記第１種類のデータオブジェクトであることを判断することに応答して、前記複数の第１セグメントの中で使用されないセグメントがないことを判断し、
前記複数の第１セグメントの中で使用されないセグメントがないことを判断することに応答して、前記複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別し、
前記最低使用頻度第１セグメントの内容を前記第２メモリにコピーし、
前記第１計算を遂行し、
前記最低使用頻度第１セグメントに前記第１計算の前記結果を格納する、
ように構成されている、
システム。
【請求項１４】
前記第１種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項１３に記載のシステム。
【請求項１５】
前記第１種類の前記データオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である、
請求項１３に記載のシステム。
【請求項１６】
前記処理回路は、グラフィック処理装置である、
請求項１３乃至１５いずれか一項に記載のシステム。
【請求項１７】
前記第１メモリは、メモリ管理ユニットを通じて前記グラフィック処理装置に連結されるメモリである、
請求項１６に記載のシステム。
【請求項１８】
前記第２メモリは、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じて前記グラフィック処理装置に連結されるメモリである、
請求項１６または１７に記載のシステム。
【請求項１９】
グラフィック処理装置と、
メモリ管理ユニットを通じて前記グラフィック処理装置に連結される第１メモリと、
ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じて前記第１メモリに連結されるホストと、を含み、
前記ホストは、
中央処理装置と、
第２メモリと、を含み、
前記グラフィック処理装置は、命令語を格納する非一時的コンピュータ読出し可能記憶媒体に連結され、
前記グラフィック処理装置によって前記命令語が実行される場合に、前記グラフィック処理装置は、前記命令語に従って動作システムを実行し、前記動作システム内の使用者レベルプロセスを開始するようにし、
前記使用者レベルプロセスは、
前記動作システムから、前記第１メモリの第１メモリ割当を要請し、前記第１メモリ割当は、複数の第１セグメントを含み、前記複数の第１セグメントの各々は、第１種類のデータオブジェクトを格納するのに十分なサイズを有し、
第１計算の結果が前記第１種類のデータオブジェクトであることを判断し、
前記第１計算の前記結果が前記第１種類のデータオブジェクトであることを判断することに応答して、前記複数の第１セグメントの中で使用されないセグメントがないことを判断し、
前記複数の第１セグメントの中で使用されないセグメントがないことを判断することに応答して、前記複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別し、
前記最低使用頻度第１セグメントの内容を前記第２メモリにコピーし、
前記第１計算を遂行し、
前記最低使用頻度第１セグメントに前記第１計算の前記結果を格納する、
ように構成されている、
システム。
【請求項２０】
前記第１種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）に関する。さらには、具体的に機械学習のためのメモリ管理システム及び方法に関する。
【背景技術】
【０００２】
データ中心型機械学習訓練（Ｄａｔａ−ｃｅｎｔｒｉｃ  ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｔｒａｉｎｉｎｇ）は、大量のデータのパターンを検討してモデルを学習する。一部の実施形態において、コンピューティングユニット及びストレージユニットは分離され、大量のデータがソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｓ、ＳＳＤｓ）で中央処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ、ＣＰＵｓ）に低速のインターフェイスを通じて伝達される。このことは、性能及びエネルギーの非効率性をもたらす。埋め込まれたグラフィック処理装置（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ、ＧＰＵｓ）に格納の最中、機械学習訓練（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｔｒａｉｎｉｎｇ）は、データをコードにさらに近く移動させる向上された解決策なので、一部の関連分野のアーキテクチャの非効率性を減少させる。
【０００３】
しかし、ＳＳＤ内にＧＰＵを集積することは、ＧＰＵ  ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）サイズと関連する新しい課題を導くことがある。ＳＳＤのパワー及びエネルギー制約はＳＳＤ内のＤＲＡＭサイズが制限されるので、ＳＳＤ内に埋め込まれたＧＰＵの機械学習訓練の効率性を減少させる。ページ単位にメモリを管理するＧＰＵのための関連分野における異種のメモリ管理スキームは、機械学習訓練動作で正しく遂行されないので、メモリ管理オーバーヘッドを増加させることがある。
【０００４】
したがって、格納の最中に機械学習訓練を可能にする、効率的なメモリ管理スキームに対する要求が提起される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国公開特許第２００５／０２４０７４５号明細書
【特許文献２】米国公開特許第２００８／０１０９１７１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の実施形態によれば、動作システムを実行する処理回路に機械学習のための方法が提供され、処理回路は、第１メモリ及び第２メモリに連結される。前記方法は、処理回路で運用する使用者レベルプロセスが、動作システムから、第１メモリからの第１メモリ割当を要請し、第１メモリ割当は、複数の第１セグメントを含み、複数の第１セグメントの中で第１セグメントは第１種類のデータオブジェクトを格納するのに十分なサイズを有する段階と、使用者レベルプロセスが、第１計算の結果が第１種類のデータオブジェクトであることを判断する段階と、第１計算の結果が第１種類のデータオブジェクトであることを判断することに応答して、使用者レベルプロセスが、複数の第１セグメントの全てが使用中であることを判断する段階と、使用者レベルプロセスが、複数の第１セグメントの全てが使用中であることを判断することに応答して、複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別する段階と、使用者レベルプロセスが、最低使用頻度第１セグメントの内容を第２メモリにコピーする段階と、第１計算を遂行する段階と、最低使用頻度第１セグメントに前記第１計算の前記結果を格納する段階と、を含む。
【０００８】
一例として、第１種類のデータオブジェクトは、ニューラルネットワークのフォワード活性化である。
【０００９】
一例として、第１種類のデータオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である。
【００１０】
一例として、前記方法は使用者レベルプロセスが、第１仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化する段階を含み、使用者レベルプロセスが複数の第１セグメントの全てが使用中であることを判断する段階は、複数の第１セグメントの全てが使用中であるか否かを判断するために、仮想のポインタークラスのメンバー関数を実行する段階を含む。
【００１１】
一例として、最低使用頻度第１セグメントに第１計算の結果を格納する段階は、第１仮想のポインターのメンバー変数に最低使用頻度第１セグメントの物理的アドレスを割当する段階を含む。
【００１２】
一例として、使用者レベルプロセスが、最低使用頻度第１セグメントの内容を第２メモリにコピーする段階は、最低使用頻度第１セグメントの物理的アドレスから第２メモリの物理的アドレスに第２仮想のポインターのメンバー変数の値を変更する段階を含む。
【００１３】
一例として、前記方法は、使用者レベルプロセスが、動作システムから第１メモリからの第２メモリ割当を要請し、第２メモリ割当は、複数の第２セグメントを含み、複数の第２セグメントの中で第２セグメントは第２種類のデータオブジェクトを格納するのに十分なサイズを有する段階と、使用者レベルプロセスが、第２計算の結果が第２種類のデータオブジェクトであることを判断する段階と、第２計算の結果が第２種類のデータオブジェクトであることを判断することに応答して、使用者レベルプロセスが、複数の第２セグメントの中で使用されないセグメントがないことを判断する段階と、使用者レベルプロセスが、複数の第２セグメントの中で使用されないセグメントがないことを判断することに応答して、複数の第２セグメントの中で物理的アドレスを有する最低使用頻度第２セグメントを識別する段階と、使用者レベルプロセスが、最低使用頻度第２セグメントの内容を第２メモリにコピーする段階と、第２計算を遂行する段階と、最低使用頻度第２セグメントに第２計算の結果を格納する段階と、を含む。
【００１４】
一例として、第２種類のデータオブジェクトは、ニューラルネットワークの加重値を含む。
【００１５】
一例として、第２種類のデータオブジェクトは、ニューラルネットワークの加重値の勾配をさらに含む。
【００１６】
一例として、処理回路は、グラフィック処理装置である。
【００１７】
一例として、第１メモリは、グラフィック処理装置のメモリバスでのメモリである。
【００１８】
一例として、第２メモリは、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じて前記グラフィック処理装置に連結される。
【００１９】
本発明の実施形態によれば、機械学習のためのシステムが提供される。システムは、処理回路と、処理回路に連結される第１メモリと、処理回路に連結される第２メモリと、命令語を格納する非一時的コンピュータ読出し可能格納媒体と、を含み、処理回路によって命令語が実行される場合、命令語は、処理回路によって動作システムを実行し、動作システム内の使用者レベルプロセスを開始するようにし、使用者レベルプロセスは、動作システムから第１メモリの第１メモリ割当を要請し、第１メモリ割当、は複数の第１セグメントを含み、複数の第１セグメントの各々は、第１種類のデータオブジェクトを格納するのに十分なサイズを有し、第１計算の結果が第１種類のデータオブジェクトであることを判断し、第１計算の結果が第１種類のデータオブジェクトであることを判断することに応答して、複数の第１セグメントの中で使用されないセグメントがないことを判断し、複数の第１セグメントの中で使用されないセグメントがないことを判断することに応答して、複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別し、最低使用頻度第１セグメントの内容を第２メモリにコピーし、第１計算を遂行し、最低使用頻度第１セグメントに第１計算の前記結果を格納する、ように構成されている。
【００２０】
一例として、第１種類のデータオブジェクトは、ニューラルネットワークのフォワード活性化である。
【００２１】
一例として、第１種類のデータオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である。
【００２２】
一例として、処理回路は、グラフィック処理装置である。
【００２３】
一例として、第１メモリは、メモリ管理ユニットを通じてグラフィック処理装置に連結される。
【００２４】
一例として、第２メモリは、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じてグラフィック処理装置に連結されるメモリである。
【００２５】
本発明の実施形態によれば、システムが提供される。システムは、グラフィック処理装置と、メモリ管理ユニットを通じてグラフィック処理装置に連結される第１メモリと、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）連結を通じて第１メモリに連結されるホストと、を含み、ホストは、中央処理装置と、第２メモリと、を含む。  グラフィック処理装置は、命令語を格納する非一時的コンピュータ読出し可能格納媒体に連結され、グラフィック処理装置によって命令語が実行される場合、命令語は、グラフィック処理装置によって動作システムを実行し、動作システム内の使用者レベルプロセスを開始するようにし、使用者レベルプロセスは、動作システムから、第１メモリの第１メモリ割当を要請し、第１メモリ割当は複数の第１セグメントを含み、複数の第１セグメントの各々は第１種類のデータオブジェクトを格納するのに十分なサイズを有し、第１計算の結果が第１種類のデータオブジェクトであることを判断し、第１計算の結果が第１種類のデータオブジェクトであることを判断することに応答して、複数の第１セグメントの中で使用されないセグメントがないことを判断し、複数の第１セグメントの中で使用されないセグメントがないことを判断することに応答して、複数の第１セグメントの中で物理的アドレスを有する最低使用頻度第１セグメントを識別し、最低使用頻度第１セグメントの内容を第２メモリにコピーし、第１計算を遂行し、最低使用頻度第１セグメントに第１計算の前記結果を格納するように構成されている。
【００２６】
一例として、第１種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である。
【発明の効果】
【００２７】
本発明によれば、機械学習訓練のためのスラブ基盤のメモリ管理を使用することによって、オーバーヘッド及びメモリ断片化（ｆｒａｇｍｅｎｔａｔｉｏｎ）が減少し、機械学習訓練の効率性を増加させることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態に係る機械学習のためのシステムのブロック図である。
【図２】本発明の実施形態に係るグラフィック処理ユニットでのメモリ接近に対するフローチャートである。
【図３】本発明の実施形態に係るメモリダイヤグラムである。
【図４】本発明の実施形態に係るスラブ基盤のメモリ管理に対する図面である。
【図５】本発明の実施形態に係るメモリオブジェクト移送に対する図面である。
【発明を実施するための形態】
【００２９】
添付された図面と関連して以下に説明する詳細な説明は、本発明によって提供される機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法の例示的な実施形態に対する説明として意図されており、本発明が構成されるか、或いは利用されることができる唯一の形式を示すことを意図するものではない。詳細な説明は、図示された実施形態と関連して本発明の特徴を説明する。しかし、同一であるか、或いは均等な機能及び構造は、また、本発明の範囲内に含まれるものと意図される他の実施形態によって達成され得ることが理解されるべきである。ここで、異なって表示されない限り、同一の図面符号は、同一の構成又は特徴を指示するように意図されている。
【００３０】
例えば、特定機械学習アプリケーションのようなＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を使用する一部のアプリケーションに対して、主要性能の出口が狭い現象がＧＰＵメモリを制限する。高速ＧＰＵメモリと結合してさらに低速やさらに大きいメモリを共に利用して大きいメモリ空間をＧＰＵに提供する異種のメモリ管理は、性能の出口が狭い現象の性能影響を減少させるのに使用され得る。しかし、このような接近法は、機械学習アプリケーションにあまりにも適合ではないことがあり得る。このように、一部の実施形態で、効率的な機械学習訓練のための機械学習訓練の独特な特性は、機械学習アプリケーションに適合されたメモリ管理システムを提供するのに使用される。
【００３１】
図１は、一部の実施形態で機械学習動作を遂行するためのシステムを図示する。システムはＭＭＵ（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ、メモリ管理ユニット）１１５を通じてホストＣＰＵ１１０に連結されるシステムメモリ１０５を有するホストを含む。ＧＰＵ１２０はＧＰＵメモリ１２５から検索されたデータを使用して計算を遂行し、動作の結果をＧＰＵメモリ１２５に格納する。ＧＰＵ１２０によるＧＰＵメモリ１２５への接近はＩＯＭＭＵ（ｉｎｐｕｔ−ｏｕｔｐｕｔ  ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ、入出力メモリ管理ユニット）１３０を通じてなされ、ＩＯＭＭＵ１３０はＣＰＵ１１０及びＧＰＵ１２０のように、（後述される）処理回路である。ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）バス及びＰＣＩｅスイッチは、メモリ管理ユニット１１５、システムメモリ１０５、ＧＰＵメモリ１２５、及び入出力メモリ管理ユニット１３０の間の連結を形成する。ＣＰＵ１１０によるメモリ接近は、仮想のメモリアドレスＶＡで遂行される。即ち、任意の与えられた仮想のアドレスは、ＭＭＵ１１５によって物理的メモリアドレスに変換される。ＧＰＵ１２０によるメモリ接近は、統合された仮想のアドレスが支援される場合、仮想のメモリアドレスを使用して遂行されるか、或いは、統合されたアドレスが支援されない場合に、装置メモリアドレスＤＡを使用して遂行されることができる。与えられたアドレスは、ＧＰＵ１２０に連結された入出力メモリ管理ユニット１３０によって該当物理的メモリアドレスに変換される。
【００３２】
メモリのデータオブジェクトを接近するのに使用されるインターコネクトは、コンピューティングユニット及びデータオブジェクトの位置に依存する。システムメモリバスは、ＣＰＵ１１０によるシステムメモリ１０５に割当されたデータオブジェクトへの接近のために使用され、ＧＰＵメモリバスは、ＧＰＵメモリ１２５に割当されたデータオブジェクトへのＧＰＵ１２０による接近のために使用される。ＧＰＵメモリ１２５のデータオブジェクトへのＣＰＵ１１０による接近のために、そして、システムメモリ１０５のデータオブジェクトへのＧＰＵ１２０による接近のために、データオブジェクト移送（ｍｉｇｒａｔｉｏｎ）が、ＰＣＩｅバスを経由して遂行される。
【００３３】
図２は、ホストからシステムメモリ１０５を低速のメモリとして使用する場合の一部の実施形態のデータオブジェクト移送の全体順序を図示する。低速のメモリは、ホストからシステムメモリである必要はなく、不揮発性メモリエクスプレス（ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ、ＮＶＭｅ）ソリッドステートドライブ（ＳＳＤ）、又は、ＳＳＤ−内部のインターコネクトを経由して接近され得るＳＳＤ装置内の内部フラッシュアレイのような任意の類型のメモリ装置である。ＳＳＤ装置内のＧＰＵは、例えばＳＳＤ−内部のインターコネクトを経由してフラッシュコントローラと通信することによって、ＳＳＤ装置のフラッシュアレイに直接接近することができる。図２に図示されるように、データオブジェクトを接近する（読み出すか、或いは書き込む）ＧＰＵコードを実行する前に、システムは２０５段階で始まる方法を採択する。システムは、先ず２１０段階で、データオブジェクトがＧＰＵメモリ内に存在するか否かを検査する。データオブジェクトがＧＰＵメモリに存在すれば、システムは、２１５段階に進行してＧＰＵコードを実行する。データオブジェクトがＧＰＵメモリに存在しなければ、システムは、２２０段階で、接近されるデータオブジェクトのためのＧＰＵメモリの空間を予約する。ＧＰＵメモリに空間を予約する前に、システムは、２２５段階で、ＧＰＵメモリに十分な空間が存在するか否かを検査し、そうでなければ、２３０段階で、他のデータオブジェクトをホストメモリ（例えば、システムメモリ１０５）に移送（ｍｉｇｒａｔｅ）する。ホストメモリに移送（又は“追い出し（ｅｖｉｃｔｉｏｎ）”）は最低使用頻度に基づいて遂行される。即ち、ＧＰＵメモリで最低使用頻度（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）データオブジェクトが、ＧＰＵメモリ１２５に空間が要求される場合、ホストメモリに移送される。空間を予約した後に、システムは、２３５段階で、データオブジェクトがホストからシステムメモリ１０５のような低速のメモリに割当されるか否かを検査する。そうであれば、システムは、２４０段階で、低速のメモリからＧＰＵメモリへのデータオブジェクトの移送を遂行し、２１５段階に進行してＧＰＵコードを実行する。データオブジェクトが、例えばシステムメモリ１０５に割当されなかったら、（接近が書込み接近であることを仮定する）システムは、２１５段階に進行してＧＰＵコードを実行する。
【００３４】
一部の実施形態で、ＧＰＵで実行する使用者レベルプロセス（例えば、ディープニューラルネットワークに対する機械学習訓練動作を遂行する使用者プロセス）は、ＣＰＵ１１０で運用する動作システムから（例えば、動作システムレベルメモリ管理を遂行するカーネルレベルプロセスから）ＧＰＵメモリ１２５に１つ以上のメモリ割当を要請することができる。そして、ＧＰＵで実行する使用者レベルプロセスは動作システムを通じて個別的なデータオブジェクトを割当及び割当解除する代わりに、（後述されるように）スラブ（ｓｌａｂ）基盤のメモリ管理を使用者プロセスレベルで遂行する。これによって、メモリ割当及び割当解除が動作システムによって遂行される場合に招来されるオーバーヘッドが防止され、メモリ断片化（ｆｒａｇｍｅｎｔａｔｉｏｎ）が防止又は減少され得る。
【００３５】
図３は、使用者レベルプロセスがデータオブジェクトに対する次後割当のための動作システムによって、割当されるメモリをどのように維持するかを図示する。単なるＧＰＵデータオブジェクトを参照するポインターを有する機械学習フレームワークでの各々のテンソル（即ち、関連された分野の具現の場合のように、ＧＰＵメモリ１２５の位置を直接示すこと）を有する代わりに、各々のテンソルは、ＧＰＵメモリセグメント（即ち、ＧＰＵメモリ１２５に格納されたデータオブジェクト）を示すか、或いは低速のメモリセグメント（即ち、例えばシステムメモリ１０５のような低速のメモリに格納されたデータオブジェクト）を示す仮想のポインターを維持する。ここで使用されるように、メモリ“セグメント（ｓｅｇｍｅｎｔ）”は、データオブジェクトを格納するのに十分に大きい連続メモリ（ｃｏｎｔｉｇｕｏｕｓ  ｍｅｍｏｒｙ）の領域である。テンソルによって指示されるＧＰＵデータオブジェクトが、データオブジェクトの再使用が予想されないので、維持される必要が無い場合に、システムは、図３に図示されるように、ＧＰＵメモリのセグメントが他のテンソルによって回収（ｒｅｃｌａｉｍ）されるように（即ち、使用者レベルプロセスによって他のテンソルを格納するのに使用されるように）、データオブジェクトが“フリー（ｆｒｅｅ）”に格納されるＧＰＵメモリのセグメントをマークする。即ち、使用者レベルプロセスが（ＧＰＵ装置ドライバーＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を経由してデータオブジェクトを割当解除する代わりに）メモリセグメントの状態を変更する。
【００３６】
一部の実施形態で、使用者レベルプロセスは、（一部の関連された分野のシステムによって遂行されるように、ページ単位にデータオブジェクトを管理する代わりに）スラブ基盤のメモリ管理を利用する。このことは、多数のデータオブジェクトが共通の類型（及びサイズ）を共有し、単一ニューラルネットワーク内で単なる制限された数のデータオブジェクト類型が存在する、ディープニューラルネットワークの特性を利用する。図４は、使用者レベルプロセスが一部の実施形態でスラブ基盤のメモリ管理をどのように遂行するかを図示する。使用者レベルプロセスは、リストのセットを維持し、リストの各々は、同一な類型のＧＰＵデータオブジェクトのリストである。フリーメモリセグメントはそれが同一な類型のオブジェクトの次後割当のために再使用されるように各々のリストで識別される。
例えば、データオブジェクトの各々は、仮想のポインターによって識別され、仮想のポインターは、仮想のポインタークラスのインスタンスである。仮想のポインターは、メンバー変数として、（ｉ）ディープニューラルネットワークのテンソル（例えば、加重値、加重値の勾配、フォワード活性化（ｆｏｒｗａｒｄ  ａｃｔｉｖａｔｉｏｎ）、又はバックプロパゲーション活性化（ｂａｃｋ  ｐｒｏｐａｇａｔｉｏｎ  ａｃｔｉｖａｔｉｏｎ））であるデータ、及び（ｉｉ）例えば、ＧＰＵメモリ１２５又は低速のメモリ（例えば、システムメモリ１０５）の中の１つのような物理的メモリの位置に対するポインターを含むことができる。
【００３７】
第１リストは、（第１セグメントサイズとして称される）第１サイズの仮想のポインターのために維持される。使用者レベルプロセスが、（第１サイズと同一なサイズを有する第１種類の複数のデータオブジェクトを収容するように）動作システムから第１割当を要請した後、使用者レベルプロセスは、第１サイズのデータオブジェクトの中の１つを格納するのに十分に大きい物理的メモリの領域又は“セグメント”の第１アドレスを各々示す“物理的ポインター”のリストを生成する。使用者レベルプロセスは、物理的ポインターの各々に、（ｉ）メモリが使用中であるか否か、フリー（ｆｒｅｅ）であるか、そしてセグメントが使用中であるかを示すフラッグ、（ｉｉ）セグメントを指す（即ち、予約される）仮想のポインターへのポインター、及び（ｉｉｉ）最も最近の使用時間、を関連付ける。このようなリストはＧＰＵメモリ１２５の空間を必要とする任意の仮想のポインターによって参照されて、既にフリー（ｆｒｅｅ）であるメモリのセグメントを予約するか、或いは、最低使用頻度データオブジェクトを追い出した後、追い出しによってフリーになったセグメントを予約する。ホストからメモリの管理は、例えば、ＧＰＵメモリ１２５から追い出す時に複数のデータオブジェクトを格納するのに使用されるシステムメモリ１２５の第１割当のような使用者レベルプロセス要請と共に、同一な方式で遂行される。
【００３８】
使用者レベルプロセスは、各々が第２サイズを有する第２種類の複数のデータオブジェクトのためのアナログ第２リストを構成し、使用者レベルプロセスは他のサイズ及び他の種類のデータオブジェクトのための他の類似なリストを構成することができる。例えば、ディープニューラルネットワークで、加重値、加重値の勾配は、全て同一なサイズ、例えば第１サイズを有する。フォワード活性化、及びバックプロパゲーション活性化は、また、全て同一なサイズ、例えば第２サイズを有する。
【００３９】
仮想のポインターは、例えば仮想のポインターのデータが最低使用頻度である場合、ＧＰＵメモリ１２５で望むセグメントサイズのシステムメモリ１０５にデータを移送することのように、図２の動作を遂行するための関数をメンバー関数として有する。仮想のポインターはデータオブジェクトのサイズに対応される単位にメモリ移送を遂行する。図４は、システムがリストの各々に対して最低使用頻度（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ、ＬＲＵ）データオブジェクトの交替政策を利用する例示を図示する。図４は、特定オブジェクト類型のリスト内で最低使用頻度ＧＰＵデータオブジェクトが、同一な類型のＧＰＵデータオブジェクトがＧＰＵメモリに割当される必要がある場合、そしてＧＰＵメモリに同一な類型のフリー又は“使用されない（ｕｎｕｓｅｄ）”セグメントが無い場合に、低速のメモリに移送されることを図示する。
【００４０】
図５は、ＬＲＵ交替政策が、ＧＰＵメモリが２つのデータオブジェクトを保有する単純化された例示でどのように動作するかを図示する。このような例示では、ＧＰＵ計算に使用される４つのデータオブジェクトが存在し、これらは図５で“１”から“４”のラベルが付けられている。データオブジェクト“３”を使用するＧＰＵコードを実行する前に、システムは、実行される次のＧＰＵ計算のために、（５１０段階で）データオブジェクト“３”をＧＰＵメモリに（即ち、ホスト“Ｈ”から装置（ＧＰＵ）“Ｄ”に）移送する。ＧＰＵメモリが２つのデータオブジェクトを保有するので、システムは、ＧＰＵメモリから低速のメモリ（ホストからシステムメモリ１０５）にデータオブジェクト“１”の移送を遂行する。データオブジェクト“１”は、図５に図示されるように使用される前に、ＧＰＵメモリに再び移送される。
【００４１】
一部の実施形態で、システムは、プロファイリングによってスラブサイズを決定する。システムは、機械学習訓練の間にデータオブジェクトの数及びサイズが他の反複処理で同一な特性を利用する。機械学習訓練の第１反複の間に、システムは、データオブジェクトの類型及び各々の類型を有するデータオブジェクトの数のようなメモリ利用パターンを収集する。第２反複を開始する前に、システムは、シミュレーションを利用して、最高の予測された性能を達成するように各々のリスト内で最適のエントリの数を決定する。このような実施形態で、スラブサイズは、ニューラルネットワークの各々に対して機械学習訓練のための最適の性能を可能にする注文形（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ）である。
【００４２】
ここで、“処理回路”という用語は、データ又はデジタル信号を処理するのに採択されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するものとして使用される。処理回路ハードウェアは、例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、汎用又は専用ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、及びＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を含み得る。処理回路では、ここで使用されるように、各々の機能は、このような機能を遂行するように構成されるハードウェア、即ちハードワイヤードによるか、或いは、非一時的格納媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）に格納される命令を実行するように構成されるＣＰＵのようなさらに汎用のハードウェアによって遂行される。処理回路は、単一ＰＣＢ（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上に製造されるか、或いは、幾つかの相互連結（インターコネクト）されたＰＣＢ上に分散され得る。処理回路は、他の処理回路を含むことができ、例えば処理回路はＰＣＢ上にインターコネクトされた２つの処理回路であるＦＰＧＡ及びＣＰＵを含み得る。
【００４３】
ここで、“第１”、“第２”、“第３”、等の用語は、多様な成分、構成要素、領域、レイヤー、及び／又はセクションを説明するように使用されるが、このような成分、構成要素、領域、レイヤー、及び／又はセクションは、このような用語に制限されてはならないことが理解される。このような用語は、単純に、１つの成分、構成要素、領域、レイヤー、及び／又はセクションを他の成分、構成要素、領域、レイヤー、及び／又はセクションと区別するように使用される。したがって、ここで説明される第１成分、構成要素、領域、レイヤー、及び／又はセクションは、本発明の思想及び範囲を逸脱することなく、第２構成要素、領域、レイヤー、及び／又はセクションと称されてよい。
【００４４】
ここで使用される用語は、単純に特定実施形態を説明する目的のためのものであり、本発明を制限するものであると意図されるものではない。ここで使用される“実質的に”、“約”という用語及び類似な用語は、程度に対する用語ではなく、近似に対する用語として使用されるものであり、当業者によって認識される測定されるか、或いは計算された値の内在された偏差を説明するものであると意図されている。ここで使用される、“主要（ｍａｊｏｒ）構成要素”という用語は、構成又は製品の任意の他の単一構成要素の量より多い量の構成、重合体、又は製品に存在する構成要素を示す。反対面に、“基本（ｐｒｉｍａｒｙ）構成要素”という用語は、構成、重合体、又は製品の重さ又は量が少なくとも５０％をなす構成要素を示す。ここで使用される“主要部（分）”という用語は、複数の物品に適用される時、物品の少なくとも半分を意味する。
【００４５】
ここで使用される単数形式“ａ”及び“ａｎ”は、文脈が異なるように明確に指示しない限り、複数形式をまた含むものであると意図されている。“含む”及び／又は“包含する”という用語は、詳細な説明に使用される時、説明された特徴、整数、段階、動作、成分、及び／又は構成要素の存在を具体化するが、１つ以上の他の特徴、整数、段階、動作、成分、構成要素、及び／又はそのグループの存在又は追加を排除することではないことがさらに理解される。ここで使用される“及び／又は”という用語は、１つ以上の連関された列挙物品の任意のすべての組み合わせを含む。“少なくとも１つ”のような表現は、成分のリストに先行する時、成分のリスト全体を変更するが、リストに対する個々の成分を変更しない。さらに、“することができる“の使用は、本発明の実施形態を説明する時、“本発明の１つ以上の実施形態”を示す。また、“例示的な”という用語は、例示又は図示を示すものであると意図されている。ここで使用される“使用する”、“使用している”、及び“使用される”という用語は、各々“利用する”、“利用している”、“利用される”という用語の同意語として考慮され得る。
【００４６】
成分又はレイヤーが他の成分又はレイヤー“上に”、“に連結される”、“に結合される”、“に隣接する”と表現される時、これは、直接的に他の成分又はレイヤー“上に”、“に連結される”、“に結合される”、“に隣接する”ことであるか、又は、１つ以上の挟まれた成分又はレイヤーが存在することであってよい。反対に、成分又はレイヤーが、他の成分又はレイヤー“上に直接”、“に直接連結される”、“に直接結合される”、“に直接隣接する”と表現される時には、挟まれた成分又はレイヤーが存在しない。
【００４７】
ここで列挙される数値的な範囲は、列挙された範囲以内に含まれる同一の数値的な程度のすべてのサブ範囲を含むものであると意図されている。例えば、“１．０から１０．０”の範囲は、列挙された最小値１．０と列挙された最大値１０．０との間の（及び含む）すべてのサブ範囲を含むものであると意図されている。即ち、例えば、２．４から７．６のように、最小値は１．０以上を有し、最大値は１０．０以下を有する。ここで列挙される任意の最大数値制限は、その内に含まれるすべてのより低い数値制限を含むものであると意図されており、列挙される最小数値制限は、その内に含まれるすべてのさらに高い数値制限を含むものであると意図されている。
【００４８】
機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法の例示的な実施形態がここで具体的に説明及び示されてきたが、多くの修正及び変形が当業者には明確である。したがって、本発明の原理にしたがって解釈される機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及びメモリは、ここで具体的に説明されるものとは異なって実施され得る。本発明は、また、以下の請求項及びその均等物で定義される。
【符号の説明】
【００４９】
１０５  システムメモリ
１１０  ＣＰＵ
１１５  ＭＭＵ
１２０  ＧＰＵ
１２５  ＧＰＵメモリ
１３０  ＩＯＭＭＵ
１３５  ＰＣＩｅスイッチ
【図１】
2019160306.tif 000003
【図２】
2019160306.tif 000004
【図３】
2019160306.tif 000005
【図４】
2019160306.tif 000006
【図５】
2019160306.tif 000007