(57)【要約】      （修正有）【課題】マシンラーニングシステムにおいて、特定のデータオブジェクトで不要に割り当てられたメモリによって、パフォーマンスが影響を受けられないメモリ管理の向上されたシステム及び方法を提供する。【解決手段】メモリの管理方法は、１つ以上のタスク識別子及び１つ以上のオブジェクト識別子を含む従属構造を生成する。従属構造は、１つ以上のデータオブジェクト識別子の中で第１データオブジェクト識別子に対する１つ以上の従属性のリストを含み、第１タスクが実行を完了したか否かを判定するステップと、第１タスクが実行を完了したと判定されたことに基づいて第１データオブジェクト識別子に対する従属性の個数であるカウントを１だけ減少させるステップと、カウントが基準値よりも小さいか否かを判定するステップと、カウントが基準値よりも小さいと判定されたことに基づいて第１データオブジェクトの割り当てを解除するステップと、を有する。【選択図】図１
2019133666.tif 000002
【特許請求の範囲】
【請求項１】
メモリの管理方法であって、
１つ以上のタスク識別子及び１つ以上のデータオブジェクト識別子を含む従属構造を生成し、前記従属構造は、前記１つ以上のデータオブジェクト識別子の中の第１データオブジェクト識別子に対する１つ以上の従属性のリストとして、前記第１データオブジェクト識別子によって識別された第１データオブジェクトが入力である第１タスクを識別する第１従属性を含む前記リストを含むステップと、
前記第１データオブジェクト識別子に対する従属性の個数であるカウントを判定するステップと、
前記第１タスクが実行を完了したと判定するステップと、
前記第１タスクが実行を完了したと判定したことに基づいて前記カウントを１（ｏｎｅ）だけ減少させるステップと、
前記カウントが第１基準値よりも小さいと判定するステップと、
前記カウントが第１基準値よりも小さいと判定したことに基づいて前記第１データオブジェクトの割り当てを解除するステップと、を有することを特徴とする方法。
【請求項２】
前記第１基準値は、１（ｏｎｅ）であることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１タスクに関連する従属性の個数を判定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１タスクは、ニューラルネットワークの第１レイヤーにおける演算動作であることを特徴とする請求項１に記載の方法。
【請求項５】
前記第１データオブジェクトは、前記第１レイヤーに対する活性化（ａｃｔｉｖａｔｉｏｎ）であることを特徴とする請求項４に記載の方法。
【請求項６】
前記第１タスクは、逆方向のパスの間に、
前記活性化で勾配を演算するステップと、
加重値で勾配を演算するステップと、を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１データオブジェクトは、前記第１レイヤーにおける入力に対する勾配であることを特徴とする請求項４に記載の方法。
【請求項８】
前記第１タスクは、逆方向のパスの間に、
活性化で勾配を演算するステップと、
加重値で勾配を演算するステップと、を含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記第１データオブジェクトは、前記第１レイヤーにおける加重値に対する勾配であることを特徴とする請求項４に記載の方法。
【請求項１０】
前記第１タスクは、前記加重値に対する勾配に対応する加重値の内部的アップデートを遂行することを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
０（ｚｅｒｏ）以上のパス持続データオブジェクト識別子（ｐａｓｓ−ｐｅｒｓｉｓｔｅｎｔ  ｄａｔａ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒ）のリストを生成するステップと、
逆方向のパスが完了したと判定するステップと、
前記逆方向のパスが完了したと判定したことに基づいて前記第１データオブジェクトの割り当てを解除するステップと、をさらに含み、
第１パス持続データオブジェクト識別子は、ニューラルネットワークで第１データオブジェクトを識別することを特徴とする請求項１に記載の方法。
【請求項１２】
前記第１データオブジェクトは、前記ニューラルネットワークの第１レイヤーに対する活性化であることを特徴とする請求項１１に記載の方法。
【請求項１３】
０（ｚｅｒｏ）以上のトレーニング持続データオブジェクト識別子（ｔｒａｉｎｉｎｇ−ｐｅｒｓｉｓｔｅｎｔ  ｄａｔａ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒｓ）のリストとして、ニューラルネットワークにおいて第１データオブジェクトを識別する第１トレーニング持続オブジェクト識別子を含む前記リストを生成するステップと、
前記ニューラルネットワークのトレーニングが完了したと判定するステップと、
前記ニューラルネットワークの前記トレーニングが完了したと判定したことに基づいて、前記第１データオブジェクトの割り当てを解除するステップと、をさらに有することを特徴とする請求項１に記載の方法。
【請求項１４】
前記第１データオブジェクトは、前記ニューラルネットワークの第１レイヤーにおける加重値であることを特徴とする請求項１３に記載の方法。
【請求項１５】
マシンラーニング（機械学習）のためのシステムであって、
グラフィックスプロセシングユニットと、
前記グラフィックスプロセシングユニットに連結されたメモリと、を備え、
前記グラフィックスプロセシングユニットは、
非再利用検出器を呼び出し、
前記非再利用検出器を呼び出した後に、グラフィックスプロセシングユニットのカーネルを起動（ｌａｕｎｃｈ）し、
前記非再利用検出器は、
第１データオブジェクトが入力である１つ以上のタスクによって定義される持続性を有する前記第１データオブジェクトを識別し、
前記第１データオブジェクトを識別する第１データオブジェクト識別子、及び前記第１データオブジェクトが入力である１つ以上のタスクの中の第１タスクを含む従属構造を生成し、
前記第１データオブジェクト識別子に対する従属性の個数であるカウントを判定し、
前記第１タスクが実行を完了したと判定し、
前記第１タスクが実行を完了したと判定したことに基づいて前記カウントを１ずつ減少させ、
前記カウントが第１基準値よりも小さいと判定し、
前記カウントが第１基準値よりも小さいと判定したことに基づいて前記第１データオブジェクトの割り当てを解除することを特徴とするシステム。
【請求項１６】
前記第１基準値は、１（ｏｎｅ）であることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記第１タスクは、ニューラルネットワークの第１レイヤーにおける演算動作であることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記第１データオブジェクトは、前記第１レイヤーに対する活性化（ａｃｔｉｖａｔｉｏｎ）であることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記第１タスクは、逆方向のパスの間に、
前記活性化で勾配を演算し、
加重値で勾配を演算することを特徴とする請求項１８に記載のシステム。
【請求項２０】
マシンラーニング（機械学習）のための方法であって、
ニューラルネットワークで第１データオブジェクトに対するメモリを割り当てるステップと、
前記第１データオブジェクトが、前記第１データオブジェクトが入力である１つ以上のタスクによって定義された持続性を有すると判定するステップと、
前記第１データオブジェクトが入力である１つ以上のタスクの中の最後のタスクが実行を完了したと判定するステップと、
前記第１データオブジェクトが入力である１つ以上のタスクの中の最後のタスクが実行を完了したと判定したこと、及び前記第１データオブジェクトが入力である１つ以上のタスクによって定義された持続性を有すると判定したことに基づいて、前記第１データオブジェクトの割り当てを解除するステップと、を有することを特徴とする方法。
【請求項２１】
前記ニューラルネットワークで第２データオブジェクトに対するメモリを割り当てるステップと、
前記第２データオブジェクトが逆方向のパスの完了によって定義された持続性を有すると判定するステップと、
前記第２データオブジェクトが逆方向のパスの完了によって定義された持続性を有すると判定したことに基づいて、前記逆方向の完了時に前記第２データオブジェクトの割り当てを解除するステップと、をさらに含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記ニューラルネットワークで第３データオブジェクトに対するメモリを割り当てるステップと、
前記第３データオブジェクトが前記ニューラルネットワークのトレーニングの完了によって定義された持続性を有すると判定するステップと、
前記第３データオブジェクトが前記ニューラルネットワークのトレーニングの完了によって定義された持続性を有すると判定したことに基づいて、前記ニューラルネットワークのトレーニングの完了時に前記第３データオブジェクトの割り当てを解除するステップと、をさらに含むことを特徴とする請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理に関し、より詳しくは、マシンラーニング（機械学習）のためにメモリを管理するシステム及び方法に関する。
【背景技術】
【０００２】
マシンラーニング（機械学習）がグラフィックスプロセシングユニット（ＧＰＵ）上で遂行される場合、ＧＰＵメモリに関連するパフォーマンスのボトルネックを被る。結果的に、特定のデータオブジェクトが遂行される演算に対して、これ以上必要でない場合に、特定のデータオブジェクトに不要に割り当てられたメモリによって、パフォーマンスが影響を受ける。
したがって、メモリ管理の向上されたシステム及び方法が必要である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９６０７３５５号明細書
【特許文献２】米国特許第９６３９３３６号明細書
【特許文献３】米国特許出願公開第２０１６／０３１４５５５号明細書
【特許文献４】米国特許出願公開第２０１６／０３７９１３７号明細書
【特許文献５】米国特許出願公開第２０１７／００３２４８７号明細書
【特許文献６】米国特許出願公開第２０１７／０２８６２８４号明細書
【特許文献７】米国特許出願公開第２０１７／０２８７１０４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、マシンラーニング（機械学習）システムにおいて特定のデータオブジェクトで不要に割り当てられたメモリによって、パフォーマンスが影響を受けないメモリ管理の向上されたシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するためになされた本発明の一態様による方法は、メモリの管理方法であって、１つ以上のタスク識別子及び１つ以上のデータオブジェクト識別子を含む従属構造を生成し、前記従属構造は、前記一つ以上のデータオブジェクト識別子の中の第１データオブジェクト識別子に対する１つ以上の従属性のリストを含み、前記リストの第１従属性は、前記第１データオブジェクト識別子によって識別された第１データオブジェクトが入力である第１タスクを識別するステップと、前記第１データオブジェクト識別子に対する従属性の個数であるカウントを判定するステップと、前記第１タスクが実行を完了したか否かを判定するステップと、前記第１タスクが実行を完了したと判定されたことに基づいて前記カウントを１（ｏｎｅ）だけ減少させるステップと、前記カウントが第１基準値よりも小さいと判定するステップと、前記カウントが前記第１基準値よりも小さいと判定されたことに基づいて前記第１データオブジェクトの割り当てを解除するステップと、を含むことを特徴とする。
【０００６】
前記第１基準値は、１（ｏｎｅ）であることが好ましい。
前記方法は、前記第１タスクに関連した従属性の個数を判定するステップをさらに含み得る。
前記第１タスクは、ニューラルネットワークの第１レイヤーでの演算動作（ｃｏｍｐｕｔｅ  ｏｐｅｒａｔｉｏｎ）であり得る。
前記第１データオブジェクトは、前記第１レイヤーでの活性化（ａｃｔｉｖａｔｉｏｎ）であり得る。
前記第１タスクは、逆方向のパスの間に、前記活性化で勾配を演算するステップと、加重値で勾配を演算するステップと、を含み得る。
前記第１データオブジェクトは、前記第１レイヤーの入力に対する勾配であり得る。
前記第１タスクは、逆方向のパスの間に活性化（ａｃｔｉｖａｔｉｏｎ）で勾配を演算するステップと、加重値で勾配を演算するステップと、を含み得る。
前記第１データオブジェクトは、前記第１レイヤーにおける加重値に対する勾配であり得る。
前記第１タスクは、前記加重値に対する勾配に対応する加重値の内部的アップデートを遂行することを含み得る。
【０００７】
前記方法は、０（ｚｅｒｏ）以上のパス持続データオブジェクト識別子（ｐａｓｓ−ｐｅｒｓｉｓｔｅｎｔ  ｄａｔａ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒ）のリストを生成し、第１パス持続データオブジェクト識別子は、ニューラルネットワークにおいて第１データオブジェクトを識別するステップと、逆方向のパスが完了したか否かを判定するステップと、前記逆方向のパスが完了したと判定されたことに基づいて、前記第１データオブジェクトの割り当てを解除するステップと、をさらに含み得る。
前記第１データオブジェクトは、ニューラルネットワークの第１レイヤーの活性化であり得る。
【０００８】
前記方法は、０（ｚｅｒｏ）以上のトレーニング持続データオブジェクト識別子（ｔｒａｉｎｉｎｇ−ｐｅｒｓｉｓｔｅｎｔ  ｄａｔａ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒ）のリストを生成し、第１トレーニング持続オブジェクト識別子は、ニューラルネットワークにおいて第１データオブジェクトを識別するステップと、前記ニューラルネットワークのトレーニングが完了したか否かを判定するステップと、前記ニューラルネットワークの前記トレーニングが完了したと判定されたことに基づいて、前記第１データオブジェクトの割り当てを解除するステップと、をさらに含み得る。
前記第１データオブジェクトは、前記ニューラルネットワークの第１レイヤーの加重値であり得る。
【０００９】
上記目的を達成するためになされた本発明の一態様によるシステムは、マシンラーニング（機械学習）のためのシステムであって、グラフィックスプロセシングユニットと、前記グラフィックスプロセシングユニットに連結されたメモリと、を備え、前記グラフィックスプロセシングユニットは、非再利用検出器を呼び出し、前記非再利用検出器を呼び出した後に、グラフィックスプロセシングユニットのカーネルを起動（ｌａｕｎｃｈ）し、前記再利用検出器は、第１データオブジェクトが入力である１つ以上のタスクによって定義される持続性を有する前記第１データオブジェクトを識別し、前記第１データオブジェクトを識別する第１データオブジェクト識別子、及び前記第１データオブジェクトが入力である前記１つ以上のタスクの中の第１タスクを含む従属構造を生成し、前記第１データオブジェクト識別子に対する従属関係の個数であるカウントを判定し、前記第１タスクが実行を完了したか否かを判定し、前記第１タスクが実行を完了したと判断されたことに基づいて、前記カウントを１（ｏｎｅ）ずつ減少させ、前記カウンタが第１基準値よりも小さいか否かを判定し、前記カウントが前記第１基準値よりも小さいと判定されたことに基づいて、前記第１データオブジェクトの割り当てを解除することを特徴とする。
【００１０】
前記第１基準値は、１（ｏｎｅ）であり得る。
前記第１タスクは、ニューラルネットワークの第１レイヤーの演算動作であり得る。
前記第１データオブジェクトは、前記第１レイヤーの活性化（ａｃｔｉｖａｔｉｏｎ）であり得る。
前記第１タスクは、逆方向のパスの間に、前記活性化の勾配を演算し、加重値の勾配を演算し得る。
【００１１】
上記目的を達成するためになされた本発明の他の態様による方法は、マシンラーニング（機械学習）のための方法であって、ニューラルネットワークにおいて、第１データオブジェクトに対するメモリを割り当てるステップと、前記第１データオブジェクトが、前記第１データオブジェクトが入力である１つ以上のタスクによって定義された持続性を含むか否かを判定するステップと、前記第１データオブジェクトが入力である前記１つ以上のタスクの中の最後のタスクが実行を完了したか否かを判定するステップと、前記第１データオブジェクトが入力である前記１つ以上のタスクの中の最後のタスクが実行を完了したと判定されたこと、及び前記前記第１データオブジェクトが入力である１つ以上のタスクによって定義された持続性を含むと判定されたことに基づいて、前記第１データオブジェクトの割り当てを解除するステップと、を含むことを特徴とする。
【００１２】
前記方法は、前記ニューラルネットワークで第２データオブジェクトに対するメモリを割り当てるステップと、前記第２データオブジェクトが逆方向のパスの完了によって定義された持続性を含むか否かを判定するステップと、前記第２データオブジェクトが前記逆方向のパスの完了によって定義された前記持続性を含むと判定されたことに基づいて、前記逆方向の完了時に前記第２データオブジェクトの割り当てを解除するステップと、をさらに含み得る。
【００１３】
前記方法は、前記ニューラルネットワークで第３データオブジェクトに対するメモリを割り当てるステップと、前記第３データオブジェクトが前記ニューラルネットワークのトレーニングの完了によって定義された持続性を含むか否かを判定するステップと、前記第３データオブジェクトが前記ニューラルネットワークのトレーニングの完了によって定義された前記持続性を含むと判断されたことに基づいて、前記ニューラルネットワークのトレーニングの完了時に前記第３データオブジェクトの割り当てを解除するステップと、をさらに含み得る。
【発明の効果】
【００１４】
本発明によれば、ＧＰＵ上のマシンラーニングのために大容量のメモリを提供することができ、これにより、機械学習システムのパフォーマンスを向上させる効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態によるシステムの全体構成を示すブロック図である。
【図２】本発明の一実施形態による方向性非循環グラフ（ｄｉｒｅｃｔｅｄ  ａｃｙｃｌｉｃ  ｇｒａｐｈ）の図面である。
【図３】本発明の一実施形態による方法の一例における順方向のパスのデータフロー図である。
【図４】本発明の一実施形態による方法の一例における逆方向のパスのデータフロー図である。
【図５ａ】本発明の一実施形態による方法の一例を示すベクトル加算図である。
【図５ｂ】本発明の一実施形態による方法の一例を示すデータフロー図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明によるマシンラーニング（機械学習）のためのメモリ管理システム及び方法の例示的な実施形態を詳細に説明するが、本発明はこれに限定されない。詳細な説明は、記載された実施形態に関連して、本発明の特徴を示している。しかし、同一又は均等な機能及び構造が、本発明の技術範囲に含まれると見なされる他の実施形態によって達成される。特に、記載しない限り、類似の参照符号は、類似のエレメント又は特徴を示す。
【００１７】
いくつかの関連する技術分野において、メモリは、マシンラーニング（機械学習）トレーニング中にデータオブジェクトのために割り当てられ、データオブジェクトは、それらが自由になるまで維持され、データオブジェクトの一部は、ＧＰＵメモリにキャッシングされる。ＧＰＵメモリが最大容量に達すると、システムは、オペレーティングシステム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）のレベルでページグラニュラリティ（ｐａｇｅ  ｇｒａｎｕｌａｒｉｔｙ（粒度））で、ＧＰＵに割り当てられたデータオブジェクトをシステムメモリに移動する。このような方法は、パフォーマンスの損失を引き起こす。
【００１８】
ＧＰＵ上でのマシンラーニング（ＭＬ：  Ｍａｃｈｉｎｅ  ｌｅａｒｉｎｇ、機械学習）のオペレーションにおいて、パフォーマンスのボトルネックは、限られたＧＰＵメモリによって発生する。したがって、いくつかの実施形態は、高速のＧＰＵメモリとともに、低速だがより大きな容量のメモリを活用することで、大容量のメモリを効率的なマシンラーニングトレーニングのためにＧＰＵに提供する。
【００１９】
図１は、本発明の一実施形態によるシステムの全体構成を示すブロック図であり、高速のＧＰＵメモリ１００及びホスト上の低速のシステムメモリ１０５を活用して、大容量のメモリをＧＰＵに提供するシステムの全体的な流れを示している。本発明の一実施形態によるシステムは、マシンラーニング（機械学習）実行エンジン１１０、マシンラーニング（機械学習）メモリマネージャー１１５、及び非再利用検出器（ｒｅｕｓｅ  ｄｅｔｅｃｔｏｒ）１２０を備える。機械学習実行エンジン１１０は、ＧＰＵのコードを実行して、機械学習メモリマネージャー１１５を呼び出すことにより、データオブジェクトにアクセスする。機械学習メモリマネージャー１１５は、機械学習実行エンジン１１０によって実行されるＧＰＵコードによってアクセスされるデータオブジェクトを管理するスラブ（ｓｌａｂ）ベースのユーザーレベルのメモリ管理エンジンである。非再利用検出器１２０は、データオブジェクトのタイプ（又は、以下で詳細に説明する「カテゴリー」）により、データオブジェクトを区別し、ニューラルネットワークの方向性非循環グラフ（ＤＡＧ：ｄｉｒｅｃｔｅｄ  ａｃｙｃｌｉｃ  ｇｒａｐｈ）を検査することにより、維持される必要がないデータオブジェクトをマーキング（ｍａｒｋｉｎｇ）する。これにより、機械学習メモリマネージャー１１５は、データオブジェクトの割り当てを解除する。非再利用検出器１２０の呼び出し（ｉｎｖｏｃａｔｉｏｎ）は、各ＧＰＵコードを実行した後に機械学習実行エンジン１１０によって遂行される。
【００２０】
本実施形態において、非再利用検出器は、機械学習トレーニングの特徴を利用して、ＧＰＵ上での機械学習トレーニングの間に不必要に大きなＤＲＡＭサイズを要請する、パフォーマンスによくない非効率性を軽減する。非再利用検出器は、再利用されていないデータオブジェクトを識別してマーキングし、機械学習メモリマネージャーは、このようなデータオブジェクトの割り当てを解除して、データオブジェクトのマイグレーション（ｍｉｇｒａｔｉｏｎ）のオーバーヘッドを減少させる。
【００２１】
非再利用検出器は、図２に示す実施形態のように、ニューラルネットワークのＤＡＧをチェック（検査）して、再利用されないデータオブジェクトを識別する。例えば、図２は、「Ｂ」及び「Ｃ」を演算した後に、「Ｄ」及び「Ｅ」を演算する演算が実行のため準備されたことを示す。このような実施形態で、非再利用検出器は、「Ａ」を必要とする追加の演算（又はタスク）がないことを確認して、「Ａ」を「非再利用（Ｎｏ  Ｒｅｕｓｅ）」にマーキングする。これにより、「Ａ」は、機械学習メモリマネージャーによって割り当てを解除される。
【００２２】
図３及び図４は、非再利用検出器が、機械学習トレーニングのために使用される方法の一例を示す図であり、図３は、順方向のパスのデータフロー図であり、図４は、逆方向のパスのデータフロー図である。
【００２３】
ニューラルネットワークの各レイヤーの演算は、正方向のパスに沿って、左から右に、逆方向のパスでは、右から左に向かう順序で実行される。図３の第１レイヤーが入力「Ｘ」及び加重値「Ｗｘ」を使用して、出力「Ｙ」を演算し、第２レイヤーが入力「Ｙ」及び加重値「Ｗｙ」を使用して、出力「Ｚ」を演算する。予測された出力「Ｚ」が演算された後に、損失関数（ｌｏｓｓ  ｆｕｎｃｔｉｏｎ）は、「Ｚ」を実際の出力「Ｚ＊」と比較して、エラー「Ｅ」を演算する。
【００２４】
図４を参照すると、逆方向のパスは、入力「Ｚ」及びエラーの勾配「ｄＥ」を使用して損失の勾配（ｇｒａｄｉｅｎｔ  ｏｆ  ｌｏｓｓ）（又は入力の勾配（ｇｒａｄｉｅｎｔ  ｆｏｒ  ｉｎｐｕｔ））「ｄＺ」を演算すること（即ち、演算動作）により、開始される。以後、次のレイヤーは、入力「ｄＺ」、「Ｙ」、及び「Ｗｙ」を使用して勾配「ｄＹ」を演算する。加重値「Ｗｙ」の「Ｗｙ＊」への内部的なアップデートを遂行する演算は、入力「ｄＷｙ」が使用可能になるときに実行される。図４の最左側のレイヤーの逆方向のパスは、勾配「ｄＹ」が使用可能になるとき、同様に遂行される。
【００２５】
本実施形態において、非再利用検出器は、それぞれに対応するタスク（例えば、正方向のパスの間に出力「Ｙ」を演算するタスク、逆方向のパスの間に入力に対する勾配「ｄＺ」を演算するタスク、並びに逆方向のパスの間に加重値「Ｗｙ」で勾配「ｄＷｙ」及び活性化「Ｙ」で勾配「ｄＹ」を演算するタスク）をそれぞれ識別する１つ以上のタスク識別子と、１つ以上のデータオブジェクト識別子（例えば、（正方向の方パスの間に、出力「Ｙ」を演算する作業に対する）「Ｘ」及び「Ｗｘ」に対する識別子、又は（逆方向のパスの間に、勾配「ｄＹ」及び勾配「ｄＷｙ」を演算するタスクに対する）「Ｙ」及び「ｄＺ」識別子のようなタスクに対する入力であるデータオブジェクトの識別子）と、を含む従属構造（ｄｅｐｅｎｄｅｎｃｙ  ｓｔｒｕｃｔｕｒｅ）を生成する。
【００２６】
従属構造は、データオブジェクトの識別子を、それらが入力として必要とされるタスクに連結する。たとえば、従属構造は、第１データオブジェクト識別子（例えば、「Ｘ」に対する識別子）に対する１つ以上の従属性のリストを含む。リストの第１従属性は、第１データオブジェクト識別子によって識別されたデータオブジェクト（「Ｘ」）が入力である第１タスク（例えば、正方向のパスの間に、出力「Ｙ」を演算するタスク）を識別する。非再利用検出器は、例えば、第１データオブジェクト識別子に対する従属性（ｄｅｐｅｎｄｅｎｃｙ）の個数をカウンティングし、第１タスクが実行を完了した場合、１（ｏｎｅ）ずつカウントを減少させ、カウントが０（ｚｅｒｏ）に到達した場合、第１データオブジェクトの割り当てを解除（ｄｅａｌｌｏｃａｔｅ）する。このような方式で、第１データオブジェクトの持続性（ｐｅｒｓｉｓｔｅｎｃｅ）は、第１データオブジェクトが入力である１つ以上のタスクによって定義される（又は、少なくとも定義されるか、又は少なくとも部分的に定義される）。
【００２７】
このような実施形態において、非再利用検出器は、正方向のパスの間の各レイヤーの出力（図３及び図４の「Ｘ」、「Ｙ」、及び「Ｚ」）を、これらのデータオブジェクトが勾配（図４の「ｄＸ」、「ｄＹ」、及び「ｄＺ」）を演算するために使用された後に、もはや使用されないという特性を利用することによって、逆方向のパスの間に「非再利用（Ｎｏ  Ｒｅｕｓｅ）」としてマーキングする。たとえば、データオブジェクト「Ｚ」は、勾配「ｄＺ」を演算した後に再び参照されない。「Ｚ」の値は、次の反復（次のデータ項目を処理する機械学習トレーニング）のために維持される必要がない。これは、次の反復で「Ｚ」の値が前の反復での「Ｚ」の値に従わないからである。
【００２８】
いくつかの実施形態で、非再利用検出器は、このカテゴリーのデータオブジェクトのリスト、又は「パス持続」データオブジェクト（「ｐａｓｓ−ｐｅｒｓｉｓｔｅｎｔ」ｄａｔａ  ｏｂｊｅｃｔｓ）（すなわち、活性化（ａｃｔｉｖａｔｉｏｎ））を維持し、逆方向のパスが完了する時にそれらの割り当てが解除されるように、それらを逆方向のパスの最後で、「非再利用（Ｎｏ  Ｒｅｕｓｅ）」としてマーキングする。非再利用検出器は、「トレーニング持続」データオブジェクト識別子（「ｔｒａｉｎｉｎｇ−ｐｅｒｓｉｓｔｅｎｔ」ｄａｔａ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒ）をさらに維持する。「トレーニング持続」データオブジェクト識別子の各々は、トレーニングが完了したときにのみ割り当てを解除されるデータオブジェクト（たとえば、「Ｗｘ」のような加重値）を識別する。
【００２９】
いくつかの実施形態において、非再利用検出器は、加重値をアップデートするデータオブジェクトを使用した後に、逆方向のパスの間に、演算された加重値の勾配（図４の「ｄＷｘ」及び「ｄＷｙ」）を「非再利用（Ｎｏ  Ｒｅｕｓｅ）」にマーキングするために従属構造を使用する。
【００３０】
図５ａ及び図５ｂは、モメンタムアップデート（ｍｏｍｅｎｔｕｍ  ｕｐｄａｔｅ）を使用する加重値のアップデート（ｗｅｉｇｈｔ  ｕｐｄａｔｅ）の例を示す。複数の加重値をアップデートの方法と同様に、モメンタムアップデートは、加重値の勾配（図５ｂの「ｄＷｘ」）の移動平均（ｒｕｎｎｉｎｇ  ａｖｅｒａｇｅ）（図５ａの「ｍＷｘ」）を維持して、ロー勾配（ｒａｗ  ｇｒａｄｉｅｎｔ）を適用する代わりに、移動平均を適用して加重値をアップデート（図５ｂの「Ｗｘ」を「Ｗｘ＊」に）する。ロー勾配（ｒａｗ  ｇｒａｄｉｅｎｔ）（図５ｂの「ｄＷｘ」）は、加重値及び移動平均に対する内部のアップデートを遂行して演算した後には、もはや必要ない。逆方向のパスで演算された加重値の勾配と正方向の出力の割り当てを解除することはＧＰＵ上の機械学習トレーニングの間にＧＰＵメモリ上のメモリプレッシャー（ｍｅｍｏｒｙ  ｐｒｅｓｓｕｒｅ）を減少させ、これにより、ＧＰＵメモリ及びＧＰＵ上のシステムメモリとの間の不要なマイグレーション（ｍｉｇｒａｔｉｏｎ）が減少される。
【００３１】
「プロセッシング回路（ｐｒｏｃｅｓｓｉｎｇ  ｃｉｒｃｕｉｔ）」の用語が、データ又はデジタル信号を処理するために使用されているハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するように本明細書で使用される。プロセシング回路のハードウェアは、例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、汎用又は特定の中央処理ユニット（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｏｒ  ｓｐｅｃｉａｌ  ｐｕｒｐｏｓｅ  ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、及びＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のようなプログラム可能なロジックデバイスを含む。プロセシング回路で、本明細書で使用されるように、（つまり、ハードウェアに内蔵された）機能を遂行するように構成されたハードウェア、又は非一時的記録媒体に格納されたコマンドを実行するように構成されたＣＰＵなどのような、より汎用的なハードウェアの中のいずれか１つにより各機能が遂行される。プロセシング回路は、単一のＰＣＢ（ｓｉｎｇｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上に具現されるか、又は多数の相互連結されたＰＣＢ上に分散される。プロセシング回路は、他のプロセシング回路を含む。例えば、プロセシング回路は、ＰＣＢ上で相互連結された２つのプロセシング回路、ＦＰＧＡ、及びＣＰＵを含む。
【００３２】
「第１」、「第２」、「第３」などの用語が多様なエレメント、コンポーネント、領域、レイヤー、及び／又はセクションを説明するために本明細書で使用されるが、このようなエレメント、コンポーネント、領域、レイヤー、及び／又はセクションは、これらの用語によって限定されない。これらの用語は、単に１つのエレメント、１つのコンポーネント、１つの領域、１つのレイヤー、又は１つのセクションを、他のエレメント、他のコンポーネント、他の領域、他のレイヤー、又は他のセクションから区別するために使用される。つまり、本明細書で説明する第１エレメント、第１コンポーネント、第１領域、第１レイヤー、又は第１セクションは、本発明の技術的思想及び範囲から逸脱せずに、第２エレメント、第２コンポーネント、第２領域、第２レイヤー、又は第２セクションを指す。
【００３３】
本明細書で使用される用語は、単に特定の実施形態を説明するためのものであり、本発明を限定するものではない。本明細書で使用される「実質的に（ｓｕｂｓｔａｎｔｉａｌｌｙ）」、「約（ａｂｏｕｔ）」の用語及び類似の用語は、大略的な用語として使用され、程度の用語ではなく、測定された又は演算された値から内在的な派生を説明する。
【００３４】
本明細書で使用されるように、単数形の用語は、文脈（コンテクスト）で明確に別の意味と示されない限り、複数の形態を含む。「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」の用語は、本明細書で使用されるとき、列挙された特徴、整数、ステップ、オペレーション、エレメント、及び／又はコンポーネントの存在を意味するが、１つ以上の特徴、整数、ステップ、オペレーション、エレメント、コンポーネント、及び／又はそれらの組み合わせの追加又は存在を排除しない。本明細書で使用されているように、「及び／又は（ａｎｄ／ｏｒ）」の用語は、関連して列挙されたリストの１つ以上の組み合わせの全体又は一部を包む。「少なくとも一つ（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」のような表現がエレメントのリストの前に使用されるときは、エレメントの全体リストを変形し、リストの個々の要素を変形しない。なお、「することができる（ｍａｙ）」の用語は、本発明の実施形態を説明するとき、「本発明の１つ以上の実施形態」を指す。また、「例示的な（ｅｘｅｍｐｌａｒｙ）」の用語は、実施形態又は説明を参照することを指す。本明細書で使用されているように、「使用（ｕｓｅ、ｕｓｉｎｇ、ｕｓｅｄ）」の用語は、「活用（ｕｔｉｌｉｚｅ、ｕｔｉｌｉｚｉｎｇ、ｕｔｉｌｉｚｅｄ）」の用語と同意語である。
【００３５】
１つのエレメント又はレイヤーが他の要素又はレイヤーに対して「上の（ｏｎ）」、「連結された（ｃｏｎｎｅｃｔｅｄ  ｔｏ、ｃｏｕｐｌｅｄ  ｔｏ）」、又は「隣接の（ａｄｊａｃｅｎｔ  ｔｏ）」と称される場合、それは他のエレメント又はレイヤーと直接的に（ｄｉｒｅｃｔｌｙ）連結されたり、隣接したりするか、又は１つ以上の中間エレメント又はレイヤーが存在する。対照的に、１つのエレメント又はレイヤーが他のエレメント又はレイヤーと直接的に連結（「ｄｉｒｅｃｔｌｙ  ｏｎ」、「ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ  ｔｏ」、「ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ  ｔｏ」）又は「すぐ隣接の（ｉｍｍｅｄｉａｔｅｌｙ  ａｄｊａｃｅｎｔ  ｔｏ）」と称される場合、中間エレメント又はレイヤーは存在しない。
【００３６】
以上、機械学習のためのメモリを管理するシステム及び方法の例示的な実施形態を、具体的に本明細書で説明及び図示したが、本発明は当業者によって多様に変形及び変更して実施することが可能である。したがって、本発明に基づいて構成された機械学習のためのメモリ管理方法及びシステムは、具体的に本明細書に記載されたものと異なるように具現され得ることが理解される。
【産業上の利用可能性】
【００３７】
本発明は、マシンラーニング（機械学習）において特定のデータオブジェクトでパフォーマンスが影響を受けずにメモリ管理の向上されたシステムに有用である。
【符号の説明】
【００３８】
１００    ＧＰＵメモリ
１０５    システムメモリ
１１０    マシンラーニング（機械学習）実行エンジン
１１５    マシンラーニング（機械学習）メモリマネージャー
１２０    非再使用検出器
【図１】
2019133666.tif 000003
【図２】
2019133666.tif 000004
【図３】
2019133666.tif 000005
【図４】
2019133666.tif 000006
【図５ａ】
2019133666.tif 000007
【図５ｂ】
2019133666.tif 000008