IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特許7311981機械学習訓練のためのスラブ基盤のメモリ管理
<>
  • 特許-機械学習訓練のためのスラブ基盤のメモリ管理 図1
  • 特許-機械学習訓練のためのスラブ基盤のメモリ管理 図2
  • 特許-機械学習訓練のためのスラブ基盤のメモリ管理 図3
  • 特許-機械学習訓練のためのスラブ基盤のメモリ管理 図4
  • 特許-機械学習訓練のためのスラブ基盤のメモリ管理 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-11
(45)【発行日】2023-07-20
(54)【発明の名称】機械学習訓練のためのスラブ基盤のメモリ管理
(51)【国際特許分類】
   G06N 3/063 20230101AFI20230712BHJP
   G06N 3/084 20230101ALI20230712BHJP
   G06N 20/00 20190101ALI20230712BHJP
   G06F 12/02 20060101ALI20230712BHJP
【FI】
G06N3/063
G06N3/084
G06N20/00
G06F12/02 510A
【請求項の数】 19
(21)【出願番号】P 2019034564
(22)【出願日】2019-02-27
(65)【公開番号】P2019160306
(43)【公開日】2019-09-19
【審査請求日】2022-01-07
(31)【優先権主張番号】62/642,994
(32)【優先日】2018-03-14
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/976,765
(32)【優先日】2018-05-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】李 周桓
(72)【発明者】
【氏名】奇 亮▲そく▼
【審査官】加藤 優一
(56)【参考文献】
【文献】米国特許出願公開第2017/0286284(US,A1)
【文献】米国特許出願公開第2017/0083997(US,A1)
【文献】国際公開第2016/063482(WO,A1)
【文献】特表2015-524979(JP,A)
【文献】鈴木 順、ほか4名,複数GPU向けミドルウェアにおけるデータ管理手法の検討,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2015年07月28日,Vol.115 No.174,第191頁-第196頁,ISSN:0913-5685
【文献】鈴木 順、ほか5名,リソース分離アーキテクチャのためのアクセラレータミドルウェアVictreamの提案,情報処理学会 研究報告 システムソフトウェアとオペレーティング・システム(OS) 2016-OS-138 [online],一般社団法人情報処理学会,2016年08月01日,第1頁-第8頁,ISSN:2188-8795
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
G06F 12/00 -12/128
G06F 13/16 -13/18
G06F 18/00 -18/40
G06T 1/00 - 1/40
G06T 3/00 - 5/50
(57)【特許請求の範囲】
【請求項1】
第1メモリ及び第2メモリに接続されてオペレーティングシステムを実行する処理回路に機械学習のための方法であって、
前記処理回路で実行されているユーザレベルプロセスが、前記オペレーティングシステムから前記第1メモリからの第1メモリ割当を要請し、前記第1メモリ割当は、複数の第1セグメントを含み、前記複数の第1セグメントの中で第1セグメントは、第1種類のデータオブジェクトを格納するのに十分なサイズを有する、段階と、
前記ユーザレベルプロセスが、第1計算の結果が前記第1種類のデータオブジェクトであることを判断する、段階と、
前記第1計算の前記結果が前記第1種類のデータオブジェクトであることを判断することに応答して、前記ユーザレベルプロセスが、前記複数の第1セグメントの全てが使用中であることを判断する、段階と、
前記ユーザレベルプロセスが、前記複数の第1セグメントの全てが使用中であることを判断することに応答して、前記複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別する、段階と、
前記ユーザレベルプロセスが、前記最長時間未使用第1セグメントの内容を前記第2メモリにコピーする段階と、
前記第1計算を遂行する段階と、
前記最長時間未使用第1セグメントに前記第1計算の前記結果を格納する段階と、
を含み、
前記方法は、さらに、
前記ユーザレベルプロセスが、第1仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化する段階、を含み、
前記ユーザレベルプロセスが、前記複数の第1セグメントの全てが使用中であることを判断する段階は、前記複数の第1セグメントの全てが使用中であるか否かを判断するために、前記仮想のポインタークラスのメンバー関数を実行する段階、
を含む、方法。
【請求項2】
前記第1種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項1に記載の方法。
【請求項3】
前記第1種類の前記データオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である、
請求項1に記載の方法。
【請求項4】
前記最長時間未使用第1セグメントに前記第1計算の前記結果を格納する段階は、前記第1仮想のポインターのメンバー変数に前記最長時間未使用第1セグメントの物理的アドレスを割当てる段階、を含む、
請求項に記載の方法。
【請求項5】
前記ユーザレベルプロセスが、前記最長時間未使用第1セグメントの内容を前記第2メモリにコピーする段階は、前記最長時間未使用第1セグメントの前記物理的アドレスから前記第2メモリの物理的アドレスに第2仮想のポインターのメンバー変数の値を変更する段階、を含む、
請求項に記載の方法。
【請求項6】
前記方法は、さらに、
前記ユーザレベルプロセスが、前記オペレーティングシステムから前記第1メモリからの第2メモリ割当を要請し、前記第2メモリ割当は、複数の第2セグメントを含み、前記複数の第2セグメントの中で第2セグメントは、第2種類のデータオブジェクトを格納するのに十分なサイズを有する、段階と、
前記ユーザレベルプロセスが、第2計算の結果が前記第2種類のデータオブジェクトであることを判断する、段階と、
前記第2計算の前記結果が、前記第2種類のデータオブジェクトであることを判断することに応答して、前記ユーザレベルプロセスが、前記複数の第2セグメントのいずれも未使用でないことを判断する、段階と、
前記ユーザレベルプロセスが、前記複数の第2セグメントのいずれも未使用でないことを判断することに応答して、前記複数の第2セグメントの中で物理的アドレスを有する最長時間未使用第2セグメントを識別する段階と、
前記ユーザレベルプロセスが、前記最長時間未使用第2セグメントの内容を前記第2メモリにコピーする、段階と、
前記第2計算を遂行する、段階と、
前記最長時間未使用第2セグメントに前記第2計算の前記結果を格納する、段階と、
を含む、請求項1に記載の方法。
【請求項7】
前記第2種類のデータオブジェクトは、ニューラルネットワークの加重値を含む、
請求項に記載の方法。
【請求項8】
前記第2種類のデータオブジェクトは、さらに、前記ニューラルネットワークの加重値の勾配を含む、
請求項に記載の方法。
【請求項9】
前記処理回路は、グラフィック処理装置である、
請求項1乃至いずれか一項に記載の方法。
【請求項10】
前記第1メモリは、前記グラフィック処理装置のメモリバスでのメモリである、
請求項に記載の方法。
【請求項11】
前記第2メモリは、PCIe(peripheral component interconnect express)接続を通じて前記グラフィック処理装置に接続される、
請求項9または10に記載の方法。
【請求項12】
機械学習のためのオペレーティングシステムであって、
処理回路と、
前記処理回路に接続される第1メモリと、
前記処理回路に接続される第2メモリと、
命令語を格納する非一時的コンピュータ読出し可能記憶媒体と、を含み、
前記処理回路によって前記命令語が実行される場合、前記処理回路は、前記命令語に従って前記オペレーティングシステムを実行し、前記オペレーティングシステム内のユーザレベルプロセスを開始するようにし、
前記ユーザレベルプロセスは、
前記オペレーティングシステムから、前記第1メモリの第1メモリ割当を要請し、前記第1メモリ割当は、複数の第1セグメントを含み、前記複数の第1セグメントの各々は、第1種類のデータオブジェクトを格納するのに十分なサイズを有し、
第1計算の結果が前記第1種類のデータオブジェクトであることを判断し、
前記第1計算の前記結果が前記第1種類のデータオブジェクトであることを判断することに応答して、前記複数の第1セグメントのいずれも未使用でないことを判断し、
前記複数の第1セグメントのいずれも未使用でないことを判断することに応答して、前記複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別し、
前記最長時間未使用第1セグメントの内容を前記第2メモリにコピーし、
前記第1計算を遂行し、
前記最長時間未使用第1セグメントに前記第1計算の前記結果を格納する、
ように構成されており、さらに、
前記ユーザレベルプロセスは、第1仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化し、
前記ユーザレベルプロセスが、前記複数の第1セグメントのいずれも未使用でないことを判断することは、前記複数の第1セグメントいずれも未使用でないか否かを判断するために、前記仮想のポインタークラスのメンバー関数を実行すること、を含む、
システム。
【請求項13】
前記第1種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項12に記載のシステム。
【請求項14】
前記第1種類の前記データオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である、
請求項12に記載のシステム。
【請求項15】
前記処理回路は、グラフィック処理装置である、
請求項12乃至14いずれか一項に記載のシステム。
【請求項16】
前記第1メモリは、メモリ管理ユニットを通じて前記グラフィック処理装置に接続されるメモリである、
請求項15に記載のシステム。
【請求項17】
前記第2メモリは、PCIe(peripheral component interconnect express)接続を通じて前記グラフィック処理装置に接続されるメモリである、
請求項15または16に記載のシステム。
【請求項18】
グラフィック処理装置と、
メモリ管理ユニットを通じて前記グラフィック処理装置に接続される第1メモリと、
PCIe(peripheral component interconnect express)接続を通じて前記第1メモリに接続されるホストと、を含み、
前記ホストは、
中央処理装置と、
第2メモリと、を含み、
前記グラフィック処理装置は、命令語を格納する非一時的コンピュータ読出し可能記憶媒体に接続され、
前記グラフィック処理装置によって前記命令語が実行される場合に、前記グラフィック処理装置は、前記命令語に従ってオペレーティングシステムを実行し、前記オペレーティングシステム内のユーザレベルプロセスを開始するようにし、
前記ユーザレベルプロセスは、
前記オペレーティングシステムから、前記第1メモリの第1メモリ割当を要請し、前記第1メモリ割当は、複数の第1セグメントを含み、前記複数の第1セグメントの各々は、第1種類のデータオブジェクトを格納するのに十分なサイズを有し、
第1計算の結果が前記第1種類のデータオブジェクトであることを判断し、
前記第1計算の前記結果が前記第1種類のデータオブジェクトであることを判断することに応答して、前記複数の第1セグメントのいずれも未使用でないことを判断し、
前記複数の第1セグメントのいずれも未使用でないことを判断することに応答して、前記複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別し、
前記最長時間未使用第1セグメントの内容を前記第2メモリにコピーし、
前記第1計算を遂行し、
前記最長時間未使用第1セグメントに前記第1計算の前記結果を格納する、
ように構成されており、
前記ユーザレベルプロセスは、第1仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化し、
前記ユーザレベルプロセスが、前記複数の第1セグメントのいずれも未使用でないことを判断することは、前記複数の第1セグメントいずれも未使用でないか否かを判断するために、前記仮想のポインタークラスのメンバー関数を実行すること、を含む、
システム。
【請求項19】
前記第1種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である、
請求項18に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習(machine learning)に関する。さらには、具体的に機械学習のためのメモリ管理システム及び方法に関する。
【背景技術】
【0002】
データ中心型機械学習訓練(Data-centric machine learning training)は、大量のデータのパターンを検討してモデルを学習する。一部の実施形態において、コンピューティングユニット及びストレージユニットは分離され、大量のデータがソリッドステートドライブ(solid state drives、SSDs)で中央処理装置(central processing units、CPUs)に低速のインターフェイスを通じて伝達される。このことは、性能及びエネルギーの非効率性をもたらす。埋め込まれたグラフィック処理装置(graphics processing units、GPUs)に格納の最中、機械学習訓練(machine learning training)は、データをコードにさらに近く移動させる向上された解決策なので、一部の関連分野のアーキテクチャの非効率性を減少させる。
【0003】
しかし、SSD内にGPUを集積することは、GPU DRAM(dynamic random access memory)サイズと関連する新しい課題を導くことがある。SSDのパワー及びエネルギー制約はSSD内のDRAMサイズが制限されるので、SSD内に埋め込まれたGPUの機械学習訓練の効率性を減少させる。ページ単位にメモリを管理するGPUのための関連分野における異種のメモリ管理スキームは、機械学習訓練動作で正しく遂行されないので、メモリ管理オーバーヘッドを増加させることがある。
【0004】
したがって、格納の最中に機械学習訓練を可能にする、効率的なメモリ管理スキームに対する要求が提起される。
【先行技術文献】
【特許文献】
【0005】
【文献】米国公開特許第2005/0240745号明細書
【文献】米国公開特許第2008/0109171号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の実施形態によれば、オペレーティングシステムを実行する処理回路に機械学習のための方法が提供され、処理回路は、第1メモリ及び第2メモリに接続される。前記方法は、処理回路で実行されているユーザレベルプロセスが、オペレーティングシステムから、第1メモリからの第1メモリ割当を要請し、第1メモリ割当は、複数の第1セグメントを含み、複数の第1セグメントの中で第1セグメントは第1種類のデータオブジェクトを格納するのに十分なサイズを有する段階と、ユーザレベルプロセスが、第1計算の結果が第1種類のデータオブジェクトであることを判断する段階と、第1計算の結果が第1種類のデータオブジェクトであることを判断することに応答して、ユーザレベルプロセスが、複数の第1セグメントの全てが使用中であることを判断する段階と、ユーザレベルプロセスが、複数の第1セグメントの全てが使用中であることを判断することに応答して、複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別する段階と、ユーザレベルプロセスが、最長時間未使用第1セグメントの内容を第2メモリにコピーする段階と、第1計算を遂行する段階と、最長時間未使用第1セグメントに前記第1計算の前記結果を格納する段階と、を含む。
【0008】
一例として、第1種類のデータオブジェクトは、ニューラルネットワークのフォワード活性化である。
【0009】
一例として、第1種類のデータオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である。
【0010】
一例として、前記方法はユーザレベルプロセスが、第1仮想のポインターを仮想のポインタークラスのインスタンスとしてインスタンス化する段階を含み、ユーザレベルプロセスが複数の第1セグメントの全てが使用中であることを判断する段階は、複数の第1セグメントの全てが使用中であるか否かを判断するために、仮想のポインタークラスのメンバー関数を実行する段階を含む。
【0011】
一例として、最長時間未使用第1セグメントに第1計算の結果を格納する段階は、第1仮想のポインターのメンバー変数に最長時間未使用第1セグメントの物理的アドレスを割当する段階を含む。
【0012】
一例として、ユーザレベルプロセスが、最長時間未使用第1セグメントの内容を第2メモリにコピーする段階は、最長時間未使用第1セグメントの物理的アドレスから第2メモリの物理的アドレスに第2仮想のポインターのメンバー変数の値を変更する段階を含む。
【0013】
一例として、前記方法は、ユーザレベルプロセスが、オペレーティングシステムから第1メモリからの第2メモリ割当を要請し、第2メモリ割当は、複数の第2セグメントを含み、複数の第2セグメントの中で第2セグメントは第2種類のデータオブジェクトを格納するのに十分なサイズを有する段階と、ユーザレベルプロセスが、第2計算の結果が第2種類のデータオブジェクトであることを判断する段階と、第2計算の結果が第2種類のデータオブジェクトであることを判断することに応答して、ユーザレベルプロセスが、複数の第2セグメントのいずれも未使用でないことを判断する段階と、ユーザレベルプロセスが、複数の第2セグメントのいずれも未使用でないことを判断することに応答して、複数の第2セグメントの中で物理的アドレスを有する最長時間未使用第2セグメントを識別する段階と、ユーザレベルプロセスが、最長時間未使用第2セグメントの内容を第2メモリにコピーする段階と、第2計算を遂行する段階と、最長時間未使用第2セグメントに第2計算の結果を格納する段階と、を含む。
【0014】
一例として、第2種類のデータオブジェクトは、ニューラルネットワークの加重値を含む。
【0015】
一例として、第2種類のデータオブジェクトは、ニューラルネットワークの加重値の勾配をさらに含む。
【0016】
一例として、処理回路は、グラフィック処理装置である。
【0017】
一例として、第1メモリは、グラフィック処理装置のメモリバスでのメモリである。
【0018】
一例として、第2メモリは、PCIe(peripheral component interconnect express)接続を通じて前記グラフィック処理装置に接続される。
【0019】
本発明の実施形態によれば、機械学習のためのシステムが提供される。システムは、処理回路と、処理回路に接続される第1メモリと、処理回路に接続される第2メモリと、命令語を格納する非一時的コンピュータ読出し可能格納媒体と、を含み、処理回路によって命令語が実行される場合、命令語は、処理回路によってオペレーティングシステムを実行し、オペレーティングシステム内のユーザレベルプロセスを開始するようにし、ユーザレベルプロセスは、オペレーティングシステムから第1メモリの第1メモリ割当を要請し、第1メモリ割当、は複数の第1セグメントを含み、複数の第1セグメントの各々は、第1種類のデータオブジェクトを格納するのに十分なサイズを有し、第1計算の結果が第1種類のデータオブジェクトであることを判断し、第1計算の結果が第1種類のデータオブジェクトであることを判断することに応答して、複数の第1セグメントのいずれも未使用でないことを判断し、複数の第1セグメントのいずれも未使用でないことを判断することに応答して、複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別し、最長時間未使用第1セグメントの内容を第2メモリにコピーし、第1計算を遂行し、最長時間未使用第1セグメントに第1計算の前記結果を格納する、ように構成されている。
【0020】
一例として、第1種類のデータオブジェクトは、ニューラルネットワークのフォワード活性化である。
【0021】
一例として、第1種類のデータオブジェクトは、ニューラルネットワークのバックプロパゲーション活性化である。
【0022】
一例として、処理回路は、グラフィック処理装置である。
【0023】
一例として、第1メモリは、メモリ管理ユニットを通じてグラフィック処理装置に接続される。
【0024】
一例として、第2メモリは、PCIe(peripheral component interconnect express)接続を通じてグラフィック処理装置に接続されるメモリである。
【0025】
本発明の実施形態によれば、システムが提供される。システムは、グラフィック処理装置と、メモリ管理ユニットを通じてグラフィック処理装置に接続される第1メモリと、PCIe(peripheral component interconnect express)接続を通じて第1メモリに接続されるホストと、を含み、ホストは、中央処理装置と、第2メモリと、を含む。 グラフィック処理装置は、命令語を格納する非一時的コンピュータ読出し可能格納媒体に接続され、グラフィック処理装置によって命令語が実行される場合、命令語は、グラフィック処理装置によってオペレーティングシステムを実行し、オペレーティングシステム内のユーザレベルプロセスを開始するようにし、ユーザレベルプロセスは、オペレーティングシステムから、第1メモリの第1メモリ割当を要請し、第1メモリ割当は複数の第1セグメントを含み、複数の第1セグメントの各々は第1種類のデータオブジェクトを格納するのに十分なサイズを有し、第1計算の結果が第1種類のデータオブジェクトであることを判断し、第1計算の結果が第1種類のデータオブジェクトであることを判断することに応答して、複数の第1セグメントのいずれも未使用でないことを判断し、複数の第1セグメントのいずれも未使用でないことを判断することに応答して、複数の第1セグメントの中で物理的アドレスを有する最長時間未使用第1セグメントを識別し、最長時間未使用第1セグメントの内容を第2メモリにコピーし、第1計算を遂行し、最長時間未使用第1セグメントに第1計算の前記結果を格納するように構成されている。
【0026】
一例として、第1種類の前記データオブジェクトは、ニューラルネットワークのフォワード活性化である。
【発明の効果】
【0027】
本発明によれば、機械学習訓練のためのスラブ基盤のメモリ管理を使用することによって、オーバーヘッド及びメモリ断片化(fragmentation)が減少し、機械学習訓練の効率性を増加させることができる。
【図面の簡単な説明】
【0028】
図1】本発明の実施形態に係る機械学習のためのシステムのブロック図である。
図2】本発明の実施形態に係るグラフィック処理ユニットでのメモリ接近に対するフローチャートである。
図3】本発明の実施形態に係るメモリダイヤグラムである。
図4】本発明の実施形態に係るスラブ基盤のメモリ管理に対する図面である。
図5】本発明の実施形態に係るメモリオブジェクト移送に対する図面である。
【発明を実施するための形態】
【0029】
添付された図面と関連して以下に説明する詳細な説明は、本発明によって提供される機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法の例示的な実施形態に対する説明として意図されており、本発明が構成されるか、或いは利用されることができる唯一の形式を示すことを意図するものではない。詳細な説明は、図示された実施形態と関連して本発明の特徴を説明する。しかし、同一であるか、或いは均等な機能及び構造は、また、本発明の範囲内に含まれるものと意図される他の実施形態によって達成され得ることが理解されるべきである。ここで、異なって表示されない限り、同一の図面符号は、同一の構成又は特徴を指示するように意図されている。
【0030】
例えば、特定機械学習アプリケーションのようなGPU(graphics processing unit)を使用する一部のアプリケーションに対して、主要性能の出口が狭い現象がGPUメモリを制限する。高速GPUメモリと結合してさらに低速やさらに大きいメモリを共に利用して大きいメモリ空間をGPUに提供する異種のメモリ管理は、性能の出口が狭い現象の性能影響を減少させるのに使用され得る。しかし、このような接近法は、機械学習アプリケーションにあまりにも適合ではないことがあり得る。このように、一部の実施形態で、効率的な機械学習訓練のための機械学習訓練の独特な特性は、機械学習アプリケーションに適合されたメモリ管理システムを提供するのに使用される。
【0031】
図1は、一部の実施形態で機械学習動作を遂行するためのシステムを図示する。システムはMMU(memory management unit、メモリ管理ユニット)115を通じてホストCPU110に接続されるシステムメモリ105を有するホストを含む。GPU120はGPUメモリ125から検索されたデータを使用して計算を遂行し、動作の結果をGPUメモリ125に格納する。GPU120によるGPUメモリ125への接近はIOMMU(input-output memory management unit、入出力メモリ管理ユニット)130を通じてなされ、IOMMU130はCPU110及びGPU120のように、(後述される)処理回路である。PCIe(peripheral component interconnect express)バス及びPCIeスイッチは、メモリ管理ユニット115、システムメモリ105、GPUメモリ125、及び入出力メモリ管理ユニット130の間の接続を形成する。CPU110によるメモリ接近は、仮想のメモリアドレスVAで遂行される。即ち、任意の与えられた仮想のアドレスは、MMU115によって物理的メモリアドレスに変換される。GPU120によるメモリ接近は、統合された仮想のアドレスが支援される場合、仮想のメモリアドレスを使用して遂行されるか、或いは、統合されたアドレスが支援されない場合に、装置メモリアドレスDAを使用して遂行されることができる。与えられたアドレスは、GPU120に接続された入出力メモリ管理ユニット130によって該当物理的メモリアドレスに変換される。
【0032】
メモリのデータオブジェクトを接近するのに使用されるインターコネクトは、コンピューティングユニット及びデータオブジェクトの位置に依存する。システムメモリバスは、CPU110によるシステムメモリ105に割当されたデータオブジェクトへの接近のために使用され、GPUメモリバスは、GPUメモリ125に割当されたデータオブジェクトへのGPU120による接近のために使用される。GPUメモリ125のデータオブジェクトへのCPU110による接近のために、そして、システムメモリ105のデータオブジェクトへのGPU120による接近のために、データオブジェクト移送(migration)が、PCIeバスを経由して遂行される。
【0033】
図2は、ホストからシステムメモリ105を低速のメモリとして使用する場合の一部の実施形態のデータオブジェクト移送の全体順序を図示する。低速のメモリは、ホストからシステムメモリである必要はなく、不揮発性メモリエクスプレス(nonvolatile memory express、NVMe)ソリッドステートドライブ(SSD)、又は、SSD-内部のインターコネクトを経由して接近され得るSSD装置内の内部フラッシュアレイのような任意の類型のメモリ装置である。SSD装置内のGPUは、例えばSSD-内部のインターコネクトを経由してフラッシュコントローラと通信することによって、SSD装置のフラッシュアレイに直接接近することができる。図2に図示されるように、データオブジェクトを接近する(読み出すか、或いは書き込む)GPUコードを実行する前に、システムは205段階で始まる方法を採択する。システムは、先ず210段階で、データオブジェクトがGPUメモリ内に存在するか否かを検査する。データオブジェクトがGPUメモリに存在すれば、システムは、215段階に進行してGPUコードを実行する。データオブジェクトがGPUメモリに存在しなければ、システムは、220段階で、接近されるデータオブジェクトのためのGPUメモリの空間を予約する。GPUメモリに空間を予約する前に、システムは、225段階で、GPUメモリに十分な空間が存在するか否かを検査し、そうでなければ、230段階で、他のデータオブジェクトをホストメモリ(例えば、システムメモリ105)に移送(migrate)する。ホストメモリに移送(又は“追い出し(eviction)”)は最長時間未使用に基づいて遂行される。即ち、GPUメモリで最長時間未使用(least recently used)データオブジェクトが、GPUメモリ125に空間が要求される場合、ホストメモリに移送される。空間を予約した後に、システムは、235段階で、データオブジェクトがホストからシステムメモリ105のような低速のメモリに割当されるか否かを検査する。そうであれば、システムは、240段階で、低速のメモリからGPUメモリへのデータオブジェクトの移送を遂行し、215段階に進行してGPUコードを実行する。データオブジェクトが、例えばシステムメモリ105に割当されなかったら、(接近が書込み接近であることを仮定する)システムは、215段階に進行してGPUコードを実行する。
【0034】
一部の実施形態で、GPUで実行するユーザレベルプロセス(例えば、ディープニューラルネットワークに対する機械学習訓練動作を遂行するユーザプロセス)は、CPU110で運用するオペレーティングシステムから(例えば、オペレーティングシステムレベルメモリ管理を遂行するカーネルレベルプロセスから)GPUメモリ125に1つ以上のメモリ割当を要請することができる。そして、GPUで実行するユーザレベルプロセスはオペレーティングシステムを通じて個別的なデータオブジェクトを割当及び割当解除する代わりに、(後述されるように)スラブ(slab)基盤のメモリ管理をユーザプロセスレベルで遂行する。これによって、メモリ割当及び割当解除がオペレーティングシステムによって遂行される場合に招来されるオーバーヘッドが防止され、メモリ断片化(fragmentation)が防止又は減少され得る。
【0035】
図3は、ユーザレベルプロセスがデータオブジェクトに対する次後割当のためのオペレーティングシステムによって、割当されるメモリをどのように維持するかを図示する。単なるGPUデータオブジェクトを参照するポインターを有する機械学習フレームワークでの各々のテンソル(即ち、関連された分野の具現の場合のように、GPUメモリ125の位置を直接示すこと)を有する代わりに、各々のテンソルは、GPUメモリセグメント(即ち、GPUメモリ125に格納されたデータオブジェクト)を示すか、或いは低速のメモリセグメント(即ち、例えばシステムメモリ105のような低速のメモリに格納されたデータオブジェクト)を示す仮想のポインターを維持する。ここで使用されるように、メモリ“セグメント(segment)”は、データオブジェクトを格納するのに十分に大きい連続メモリ(contiguous memory)の領域である。テンソルによって指示されるGPUデータオブジェクトが、データオブジェクトの再使用が予想されないので、維持される必要が無い場合に、システムは、図3に図示されるように、GPUメモリのセグメントが他のテンソルによって回収(reclaim)されるように(即ち、ユーザレベルプロセスによって他のテンソルを格納するのに使用されるように)、データオブジェクトが“フリー(free)”に格納されるGPUメモリのセグメントをマークする。即ち、ユーザレベルプロセスが(GPU装置ドライバーAPI(application programming interface)を経由してデータオブジェクトを割当解除する代わりに)メモリセグメントの状態を変更する。
【0036】
一部の実施形態で、ユーザレベルプロセスは、(一部の関連された分野のシステムによって遂行されるように、ページ単位にデータオブジェクトを管理する代わりに)スラブ基盤のメモリ管理を利用する。このことは、多数のデータオブジェクトが共通の類型(及びサイズ)を共有し、単一ニューラルネットワーク内で単なる制限された数のデータオブジェクト類型が存在する、ディープニューラルネットワークの特性を利用する。図4は、ユーザレベルプロセスが一部の実施形態でスラブ基盤のメモリ管理をどのように遂行するかを図示する。ユーザレベルプロセスは、リストのセットを維持し、リストの各々は、同一な類型のGPUデータオブジェクトのリストである。フリーメモリセグメントはそれが同一な類型のオブジェクトの次後割当のために再使用されるように各々のリストで識別される。
例えば、データオブジェクトの各々は、仮想のポインターによって識別され、仮想のポインターは、仮想のポインタークラスのインスタンスである。仮想のポインターは、メンバー変数として、(i)ディープニューラルネットワークのテンソル(例えば、加重値、加重値の勾配、フォワード活性化(forward activation)、又はバックプロパゲーション活性化(back propagation activation))であるデータ、及び(ii)例えば、GPUメモリ125又は低速のメモリ(例えば、システムメモリ105)の中の1つのような物理的メモリの位置に対するポインターを含むことができる。
【0037】
第1リストは、(第1セグメントサイズとして称される)第1サイズの仮想のポインターのために維持される。ユーザレベルプロセスが、(第1サイズと同一なサイズを有する第1種類の複数のデータオブジェクトを収容するように)オペレーティングシステムから第1割当を要請した後、ユーザレベルプロセスは、第1サイズのデータオブジェクトの中の1つを格納するのに十分に大きい物理的メモリの領域又は“セグメント”の第1アドレスを各々示す“物理的ポインター”のリストを生成する。ユーザレベルプロセスは、物理的ポインターの各々に、(i)メモリが使用中であるか否か、フリー(free)であるか、そしてセグメントが使用中であるかを示すフラッグ、(ii)セグメントを指す(即ち、予約される)仮想のポインターへのポインター、及び(iii)最も最近の使用時間、を関連付ける。このようなリストはGPUメモリ125の空間を必要とする任意の仮想のポインターによって参照されて、既にフリー(free)であるメモリのセグメントを予約するか、或いは、最長時間未使用データオブジェクトを追い出した後、追い出しによってフリーになったセグメントを予約する。ホストからメモリの管理は、例えば、GPUメモリ125から追い出す時に複数のデータオブジェクトを格納するのに使用されるシステムメモリ125の第1割当のようなユーザレベルプロセス要請と共に、同一な方式で遂行される。
【0038】
ユーザレベルプロセスは、各々が第2サイズを有する第2種類の複数のデータオブジェクトのためのアナログ第2リストを構成し、ユーザレベルプロセスは他のサイズ及び他の種類のデータオブジェクトのための他の類似なリストを構成することができる。例えば、ディープニューラルネットワークで、加重値、加重値の勾配は、全て同一なサイズ、例えば第1サイズを有する。フォワード活性化、及びバックプロパゲーション活性化は、また、全て同一なサイズ、例えば第2サイズを有する。
【0039】
仮想のポインターは、例えば仮想のポインターのデータが最長時間未使用である場合、GPUメモリ125で望むセグメントサイズのシステムメモリ105にデータを移送することのように、図2の動作を遂行するための関数をメンバー関数として有する。仮想のポインターはデータオブジェクトのサイズに対応される単位にメモリ移送を遂行する。図4は、システムがリストの各々に対して最長時間未使用(least recently used、LRU)データオブジェクトの交替政策を利用する例示を図示する。図4は、特定オブジェクト類型のリスト内で最長時間未使用GPUデータオブジェクトが、同一な類型のGPUデータオブジェクトがGPUメモリに割当される必要がある場合、そしてGPUメモリに同一な類型のフリー又は“使用されない(unused)”セグメントが無い場合に、低速のメモリに移送されることを図示する。
【0040】
図5は、LRU交替政策が、GPUメモリが2つのデータオブジェクトを保有する単純化された例示でどのように動作するかを図示する。このような例示では、GPU計算に使用される4つのデータオブジェクトが存在し、これらは図5で“1”から“4”のラベルが付けられている。データオブジェクト“3”を使用するGPUコードを実行する前に、システムは、実行される次のGPU計算のために、(510段階で)データオブジェクト“3”をGPUメモリに(即ち、ホスト“H”から装置(GPU)“D”に)移送する。GPUメモリが2つのデータオブジェクトを保有するので、システムは、GPUメモリから低速のメモリ(ホストからシステムメモリ105)にデータオブジェクト“1”の移送を遂行する。データオブジェクト“1”は、図5に図示されるように使用される前に、GPUメモリに再び移送される。
【0041】
一部の実施形態で、システムは、プロファイリングによってスラブサイズを決定する。システムは、機械学習訓練の間にデータオブジェクトの数及びサイズが他の反複処理で同一な特性を利用する。機械学習訓練の第1反複の間に、システムは、データオブジェクトの類型及び各々の類型を有するデータオブジェクトの数のようなメモリ利用パターンを収集する。第2反複を開始する前に、システムは、シミュレーションを利用して、最高の予測された性能を達成するように各々のリスト内で最適のエントリの数を決定する。このような実施形態で、スラブサイズは、ニューラルネットワークの各々に対して機械学習訓練のための最適の性能を可能にする注文形(application-specific)である。
【0042】
ここで、“処理回路”という用語は、データ又はデジタル信号を処理するのに採択されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するものとして使用される。処理回路ハードウェアは、例えば、ASIC(application specific integrated circuit)、汎用又は専用CPU(central processing unit)、DSP(digital signal processor)、GPU(graphics processing unit)、及びFPGA(field programmable gate array)を含み得る。処理回路では、ここで使用されるように、各々の機能は、このような機能を遂行するように構成されるハードウェア、即ちハードワイヤードによるか、或いは、非一時的格納媒体(non-transitory storage medium)に格納される命令を実行するように構成されるCPUのようなさらに汎用のハードウェアによって遂行される。処理回路は、単一PCB(printed circuit board)上に製造されるか、或いは、幾つかの相互接続(インターコネクト)されたPCB上に分散され得る。処理回路は、他の処理回路を含むことができ、例えば処理回路はPCB上にインターコネクトされた2つの処理回路であるFPGA及びCPUを含み得る。
【0043】
ここで、“第1”、“第2”、“第3”、等の用語は、多様な成分、構成要素、領域、レイヤー、及び/又はセクションを説明するように使用されるが、このような成分、構成要素、領域、レイヤー、及び/又はセクションは、このような用語に制限されてはならないことが理解される。このような用語は、単純に、1つの成分、構成要素、領域、レイヤー、及び/又はセクションを他の成分、構成要素、領域、レイヤー、及び/又はセクションと区別するように使用される。したがって、ここで説明される第1成分、構成要素、領域、レイヤー、及び/又はセクションは、本発明の思想及び範囲を逸脱することなく、第2構成要素、領域、レイヤー、及び/又はセクションと称されてよい。
【0044】
ここで使用される用語は、単純に特定実施形態を説明する目的のためのものであり、本発明を制限するものであると意図されるものではない。ここで使用される“実質的に”、“約”という用語及び類似な用語は、程度に対する用語ではなく、近似に対する用語として使用されるものであり、当業者によって認識される測定されるか、或いは計算された値の内在された偏差を説明するものであると意図されている。ここで使用される、“主要(major)構成要素”という用語は、構成又は製品の任意の他の単一構成要素の量より多い量の構成、重合体、又は製品に存在する構成要素を示す。反対面に、“基本(primary)構成要素”という用語は、構成、重合体、又は製品の重さ又は量が少なくとも50%をなす構成要素を示す。ここで使用される“主要部(分)”という用語は、複数の物品に適用される時、物品の少なくとも半分を意味する。
【0045】
ここで使用される単数形式“a”及び“an”は、文脈が異なるように明確に指示しない限り、複数形式をまた含むものであると意図されている。“含む”及び/又は“包含する”という用語は、詳細な説明に使用される時、説明された特徴、整数、段階、動作、成分、及び/又は構成要素の存在を具体化するが、1つ以上の他の特徴、整数、段階、動作、成分、構成要素、及び/又はそのグループの存在又は追加を排除することではないことがさらに理解される。ここで使用される“及び/又は”という用語は、1つ以上の連関された列挙物品の任意のすべての組み合わせを含む。“少なくとも1つ”のような表現は、成分のリストに先行する時、成分のリスト全体を変更するが、リストに対する個々の成分を変更しない。さらに、“することができる“の使用は、本発明の実施形態を説明する時、“本発明の1つ以上の実施形態”を示す。また、“例示的な”という用語は、例示又は図示を示すものであると意図されている。ここで使用される“使用する”、“使用している”、及び“使用される”という用語は、各々“利用する”、“利用している”、“利用される”という用語の同意語として考慮され得る。
【0046】
成分又はレイヤーが他の成分又はレイヤー“上に”、“に接続される”、“に結合される”、“に隣接する”と表現される時、これは、直接的に他の成分又はレイヤー“上に”、“に接続される”、“に結合される”、“に隣接する”ことであるか、又は、1つ以上の挟まれた成分又はレイヤーが存在することであってよい。反対に、成分又はレイヤーが、他の成分又はレイヤー“上に直接”、“に直接接続される”、“に直接結合される”、“に直接隣接する”と表現される時には、挟まれた成分又はレイヤーが存在しない。
【0047】
ここで列挙される数値的な範囲は、列挙された範囲以内に含まれる同一の数値的な程度のすべてのサブ範囲を含むものであると意図されている。例えば、“1.0から10.0”の範囲は、列挙された最小値1.0と列挙された最大値10.0との間の(及び含む)すべてのサブ範囲を含むものであると意図されている。即ち、例えば、2.4から7.6のように、最小値は1.0以上を有し、最大値は10.0以下を有する。ここで列挙される任意の最大数値制限は、その内に含まれるすべてのより低い数値制限を含むものであると意図されており、列挙される最小数値制限は、その内に含まれるすべてのさらに高い数値制限を含むものであると意図されている。
【0048】
機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及び方法の例示的な実施形態がここで具体的に説明及び示されてきたが、多くの修正及び変形が当業者には明確である。したがって、本発明の原理にしたがって解釈される機械学習訓練のためのスラブ基盤のメモリ管理のためのシステム及びメモリは、ここで具体的に説明されるものとは異なって実施され得る。本発明は、また、以下の請求項及びその均等物で定義される。
【符号の説明】
【0049】
105 システムメモリ
110 CPU
115 MMU
120 GPU
125 GPUメモリ
130 IOMMU
135 PCIeスイッチ
図1
図2
図3
図4
図5