(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-14
(54)【発明の名称】深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置
(51)【国際特許分類】
G06N 3/063 20060101AFI20220106BHJP
G06T 1/40 20060101ALI20220106BHJP
G06F 9/48 20060101ALI20220106BHJP
【FI】
G06N3/063
G06T1/40
G06F9/48 370
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021516427
(86)(22)【出願日】2020-06-09
(85)【翻訳文提出日】2021-03-22
(86)【国際出願番号】 CN2020095152
(87)【国際公開番号】W WO2021073125
(87)【国際公開日】2021-04-22
(31)【優先権主張番号】201910996309.3
(32)【優先日】2019-10-18
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】516262169
【氏名又は名称】北京百度網訊科技有限公司
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】王 海峰
(72)【発明者】
【氏名】胡 暁光
(72)【発明者】
【氏名】于 佃海
【テーマコード(参考)】
5B057
【Fターム(参考)】
5B057CH02
5B057CH11
5B057CH14
(57)【要約】
本願は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法及び装置を開示し、人工知能技術分野に関する。当該方法では、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。
【選択図】
図2
【特許請求の範囲】
【請求項1】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法であって、
第1のプロセッサが、ユーザから入力された、深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信することと、
前記第1のプロセッサが、第1の経路と第2の経路とから最適経路を確定し、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在することと、
前記第1のプロセッサが、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送することと、を含むことを特徴とする方法。
【請求項2】
前記第1のプロセッサが第1の経路と第2の経路とから最適経路を確定することは、
前記第1のプロセッサが、前記第1のプロセッサのビデオメモリの状態情報を確定することと、
前記第1のプロセッサが、前記状態情報に従って第1の経路と第2の経路とから最適経路を確定することと、を含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、
前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用されることを特徴とする、請求項2に記載の方法。
【請求項4】
前記最適経路が前記第2の経路であり、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、前記方法はさらに、
前記第1のプロセッサが、前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、前記第2の計算ユニットの前に位置する計算ユニットであることと、
前記第1のプロセッサが、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加することと、を含むことを特徴とする、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記第1のプロセッサが前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、前記方法はさらに、
前記第1のプロセッサが、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得することと、
前記第1のプロセッサが、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させることと、
前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させることと、
前記第1のプロセッサが、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行することと、を含むことを特徴とする、請求項4に記載の方法。
【請求項6】
前記第1のプロセッサが第1の経路と第2の経路とから最適経路を確定した後、前記方法はさらに、
前記第1のプロセッサは、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断することと、
前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放することと、を含むことを特徴とする、請求項4または5に記載の方法。
【請求項7】
前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUであることを特徴とする、請求項1~3のいずれか1項に記載の方法。
【請求項8】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置であって、
ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュールと、
第1の経路と第2の経路とから最適経路を確定するための処理モジュールであって、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュールと、
前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送するための伝送モジュールと、を含むことを特徴とする装置。
【請求項9】
前記処理モジュールは、前記第1のプロセッサのビデオメモリの状態情報を確定し、前記状態情報に従って、第1の経路と第2の経路とから最適経路を確定するために使用されることを特徴とする、請求項8に記載の装置。
【請求項10】
前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、
前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用されることを特徴とする、請求項9に記載の装置。
【請求項11】
前記最適経路が前記第2の経路であり、前記処理ユニットは、第1の経路と第2の経路とから最適経路を確定した後、さらに前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットであることを特徴とする、請求項8~10のいずれか1項に記載の装置。
【請求項12】
前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記処理ユニットは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行するために使用されることを特徴とする、請求項11に記載の装置。
【請求項13】
前記処理モジュールは、第1の経路と第2の経路とから最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放するために使用されることを特徴とする、請求項11または12に記載の装置。
【請求項14】
前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUであることを特徴とする、請求項8~10のいずれか1項に記載の装置。
【請求項15】
少なくとも1つのプロセッサ、および
前記少なくとも1つのプロセッサと通信接続されるメモリを含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行できる命令が記憶され、前記命令が、前記少なくとも1つのプロセッサによって実行されることにより、前記少なくとも1つのプロセッサに、請求項1~7のいずれか1項に記載の方法を実行させることを特徴とする、電子機器。
【請求項16】
コンピュータ命令を記憶する非一時的なコンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに請求項1~7のいずれか1項に記載の方法を実行させるために使用されることを特徴とする、コンピュータ可読記憶媒体。
【請求項17】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法であって、
第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、前記第1の計算ユニットと前記第2の計算ユニットとが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在することと、
前記第1のプロセッサが、前記経路を介して前記第2の計算ユニットに前記第1の計算ユニットの計算結果を送信することと、を含むことを特徴とする、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願の実施例は、深層学習技術分野に関し、特に、深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置に関する。
【背景技術】
【0002】
現在、深層学習(Deep Learning)は、機械学習研究の新しい分野であり、その動機は、分析と学習のために人間の脳をシミュレートするニューラルネットワークを構築し、人間の脳のメカニズムを模倣することによって、画像、声、テキストなどのデータを解釈することである。深層学習のより典型的な応用は、画像識別と音声識別などである。応用過程では、顔識別モデル、音声識別モデルなどの深層学習モデルをトレーニングする必要がある。
【0003】
通常、プロセッサ、例えば、グラフィックプロセッサ(Graphics Processing Unit、GPU)を使用して深層学習モデルをトレーニングする。GPUは、複数の計算ユニット、少数の制御ユニットと記憶ユニットを有する。GPUの計算ユニットの利用率を十分に向上させるために、毎回トレーニングのタスク数を向上させる必要があり、タスク数とは、計算ユニットがトレーニングサンプルに対して加算、減算、乗算、除算、積分などの演算を行う回数を指すものである。明らかに、毎回GPUビデオメモリにロードされるトレーニングサンプルの数が多いほど、タスク数が大きくなる。そのうち、毎回GPUビデオメモリにロードされるトレーニングサンプルの数が、バッチサイズ(batch size)ともよばれてもよい。
【0004】
ただし、GPUビデオメモリのサイズは一定であり、つまりGPUの記憶ユニットの数は一定であり、深層学習モデルがより複雑な場合、batch sizeの増加に伴い、GPUビデオメモリが大量に占有されるため、深層学習モデルのトレーニングを完了できなくなる。したがって、深層学習モデルのトレーニング過程では、どのようにGPUビデオメモリを最適化することは解決すべき緊急の問題である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法及び装置を提供し、計算結果を伝送するための最適経路を確定し、最適経路を使用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避する。
【課題を解決するための手段】
【0006】
第1の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、前記方法は、第1のプロセッサがユーザから入力された要求命令を受信し、前記要求命令が深層学習モデルのトレーニングを要求するために使用され、第1の経路と第2の経路から最適経路を確定し、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送することを含む。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0007】
1つの実行可能な設計では、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定することは、前記第1のプロセッサが前記第1のプロセッサのビデオメモリの状態情報を確定し、前記第1のプロセッサが前記状態情報に従って第1の経路と第2の経路から最適経路を確定することを含む。
【0008】
1つの実行可能な設計では、前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0009】
1つの実行可能な設計では、前記最適経路が前記第2の経路であり、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、前記方法はさらに、前記第1のプロセッサが、前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットであり、第1のプロセッサが、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加することを含む。
【0010】
1つの実行可能な設計では、前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記第1のプロセッサは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行する。
【0011】
1つの実行可能な設計では、前記第1のプロセッサは、第1の経路と第2の経路から最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送された場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放する。
【0012】
1つの実行可能な設計では、前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0013】
第2の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置を提供し、前記装置は、ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュールと、第1の経路と第2の経路から最適経路を確定するための処理モジュールであって、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュールと、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送するための伝送モジュールと、を含む。
【0014】
1つの実行可能な設計では、前記処理モジュールは、前記第1のプロセッサのビデオメモリの状態情報を確定し、前記状態情報に従って、第1の経路と第2の経路から最適経路を確定するために使用される。
【0015】
1つの実行可能な設計では、前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0016】
1つの実行可能な設計では、前記最適経路が前記第2の経路であり、前記処理ユニットは、第1の経路と第2の経路から最適経路を確定した後、さらに前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットである。
【0017】
1つの実行可能な設計では、前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記処理ユニットは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行するために使用される。
【0018】
1つの実行可能な設計では、前記処理モジュールは、第1の経路と第2の経路から最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放するために使用される。
【0019】
1つの実行可能な設計では、前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0020】
第3の態様では、本願の実施例は電子機器を提供し、前記電子機器は、少なくとも1つのプロセッサ、および前記少なくとも1つのプロセッサと通信接続されるメモリを含み、そのうち、前記メモリは、前記少なくとも1つのプロセッサによって実行できる命令を記憶し、前記命令は、前記少なくとも1つのプロセッサによって実行されて、前記少なくとも1つのプロセッサに第1の態様または第1の態様の任意の実現可能な方法を実行させることができる。
【0021】
第4の態様では、本願の実施例は、命令を含むコンピュータプログラム製品を提供し、前記製品は、電子機器コンピュータで実行されるとき、電子機器コンピュータに上記第1の態様または第1の態様の様々な可能な実現方式での方法を実行させる。
【0022】
第5の態様では、本願の実施例は、命令を記憶する記憶媒体を提供し、前記記憶媒体は、電子機器で実行されるとき、電子機器に上記第1の態様または第1の態様の様々な可能な実現方式での方法を実行させる。
【0023】
第6の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、前記方法は、第1のプロセッサが第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、前記第1のプロセッサが前記経路を介して前記第2の計算ユニットに前記第1の計算ユニットの計算結果を送信することを含む。
【発明の効果】
【0024】
上記出願の1つの実施例は以下の利点または有益な効果を有する。計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明される解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0025】
上記任意の方式が有する他の効果は、具体的な実施例と併せて以下で説明される。
【図面の簡単な説明】
【0026】
図面は、本解決手段をよりよく理解するために使用されており、本願を限定しない。
【
図1】本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の実行環境の概略図である。
【
図2】本願の第1の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法のフローチャートである。
【
図3】本願の第2の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の例の概略図である。
【
図4】本願の第3の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置の概略構造図である。
【
図5】本願の実施例の深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実現するために使用される電子機器のブロック図である。
【発明を実施するための形態】
【0027】
以下、添付図面を参照して本願の例示的な実施例を説明し、本願の実施例の様々な詳細が理解を容易にするために含まれるが、単なる例示的なものと考えられるべきである。したがって、当業者は、本願の範囲および精神から逸脱することなく、本明細書に記載された実施例に様々な変更および修正を加えることができることを理解するはずである。同様に、明確かつ簡潔にするために、以下の説明では、よく知られている機能および構造の説明は省略されている。
【0028】
現在、通常GPUを使用して深層学習モデルのトレーニングを行い、GPUは、少量の制御ユニットと記憶ユニットおよび大量の計算ユニットを含み、優れた並行性を備え、計算ユニットの数は、5120以上に達することができる。GPUの計算ユニットの利用率を向上させるためには、毎回GPUにロードされるビデオメモリのトレーニングサンプルの数を増やす必要があり、毎回GPUにロードされるビデオメモリのトレーニングサンプルの数がバッチサイズ(batch size)とも呼ばれる。しかし、GPUのビデオメモリのサイズには制限があるため、batch sizeを制限なく増やすことはできず、さらに、深層学習モデルをトレーニングして取得することはできない。
【0029】
これに鑑み、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避する。
【0030】
図1は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の実行環境の概略図である。
図1に示すように、電子機器は、端末機器またはサーバなどであってもよい。電子機器には、少なくとも2つのプロセッサ、つまり第1のプロセッサと第2のプロセッサが設置され、第1のプロセッサが、大量の計算ユニットおよび少量の記憶ユニットと制御ユニットを含み、第2のプロセッサがより大きな記憶空間を有するメモリ機器に直接接続され、メモリ機器が、メモリスティック、ソリッドステートハードディスク(Solid State DiskまたはSolid State Drive、SSD)であってもよく、第1のプロセッサの記憶ユニットが第1のプロセッサのビデオメモリと呼ばれ、第2のプロセッサに直接接続されるメモリ機器が第2のプロセッサのメモリと呼ばれ、第1のプロセッサが、GPU、テンソルプロセッサ(Tensor Processing Unit、TPU)などであってもよい。
【0031】
本願の実施例では、第1のプロセッサが、トレーニングサンプルをトレーニングして深層学習モデルを取得するために使用され、トレーニング過程中に、第2の計算ユニットが第1の計算ユニットの計算結果を使用する必要があれば、第1の計算ユニットが計算結果を出力し、当該計算結果が第1のプロセッサのビデオメモリに記憶される。第1のプロセッサは、当該計算結果がどの経路で第2の計算ユニットに到達するかを判断し、例えば、第1の経路を介して第1の計算ユニットから第2の計算ユニットに直接到達し、また例えば、ビデオメモリのスワップに基づいて第2の経路を介して第2の計算ユニットに到達する。当該計算結果がビデオメモリのスワップを介して第2の計算ユニットに到達する場合、第2のプロセッサは、スワップ(swap)操作を介して、ビデオメモリ内のデータを第2のプロセッサのメモリにスワップし、次に第2の計算ユニットに送信するために使用される。ビデオメモリ内のデータが第2のプロセッサのメモリにスワップされた後、第1のプロセッサは計算結果が占有するビデオメモリを解放することができ、それにより、ビデオメモリの最適化を実現する。
【0032】
以下、上記
図1に基づいて、本願の実施例に記載された深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を詳細に説明する。例示的に、
図2を参照してもよい。
【0033】
図2は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法のフローチャートであり、本実施例は、以下のステップを含む。
【0034】
ステップ101において、第1のプロセッサは、ユーザから入力された、深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信する。
【0035】
例示的に、顔識別モデル、画像分類モデル、音声識別モデルなどの深層学習モデルをトレーニングする必要がある場合、ユーザは、クリック操作、タッチ操作などを介して電子機器に要求命令を入力し、電子機器の第1のプロセッサは、当該深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信して識別する。
【0036】
ステップ102において、上記第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、上記第1の計算ユニットと上記第2の計算ユニットが上記第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する。
【0037】
例示的に、第1のプロセッサに含まれる各計算ユニットは、独立しているのではなく、相互に依存関係がある。例えば、第2の計算ユニットの計算が第1の計算ユニットの計算結果に依存すると同時に、第1の計算ユニットと第2の計算ユニットとの間に複数の中間計算ユニットがあり、第1の計算ユニットの計算結果は、複数の中間計算ユニットによって順次処理された後、最後の中間計算ユニット(以下、第3の計算ユニットと呼ばれる)によって第2の計算ユニットに入力される。第2の計算ユニットが第1の計算ユニットの計算結果と第3の計算ユニットの計算結果を使用する必要があるため、第1の計算ユニットが計算結果を取得した後、当該計算結果が大量のビデオメモリ空間を占有する場合、当該計算結果が第1の経路を通過するとき、つまり第1の計算ユニットから第2の計算ユニットに直接伝送されるとき、当該計算結果を第1のプロセッサのビデオメモリにずっと記憶する必要があり、このとき、第1のプロセッサのビデオメモリが占有される。このため、第1の計算ユニットの計算結果を第2の経路、即ちビデオメモリのスワップを介して第2の計算ユニットに伝送することを考え、つまり、第1の計算ユニットが計算結果を取得した後、当該計算結果が、swap操作を介して第2のプロセッサのメモリにスワップされ、第2の計算ユニットに到達される。しかし、swap操作が、計算結果を第1のプロセッサのビデオメモリから第2のプロセッサのメモリにスワップする必要があり、第2のプロセッサとメモリが、高速シリアルコンピュータ拡張(peripheral component interconnect express、PCIE)バスを介して接続され、当該PCIEバスのシステム帯域幅が低いため、第2のプロセッサからメモリへのコピーに時間がかかり、その結果、batch sizeを向上させるが、第1のプロセッサの計算ユニットの利用率が向上させない。さらに、第2の経路を採用すると、大量のビデオメモリを解放できるため、大規模パラメータの深層学習モデルのトレーニングを実現することができる。
【0038】
上記のように、第1の経路は、第1のプロセッサのビデオメモリが占有され、大規模パラメータの深層学習モデルのトレーニングを実現できないことをもたらし、第2の経路は、第1のプロセッサの計算ユニットの利用率が低いことをもたらす。したがって、本ステップでは、第1のプロセッサが第1の経路と第2の経路から最適経路を確定して、欠点を最小限に抑える。そして、第1の計算ユニットに入力されるトレーニングサンプルが持続的に変化し、第1の計算ユニットの計算結果が動的に変化するため、第1のプロセッサが確定した最適経路も動的に変化する。例えば、1つのバッチで第1のプロセッサのビデオメモリにロードされるトレーニングサンプルが1024個であり、当該1024個のトレーニングサンプルには、128、512などの長さのトレーニングサンプルが含まれると仮定すると、128の長さのトレーニングサンプルについては、第1の計算ユニットが当該トレーニングサンプルをトレーニングして取得した計算結果は小さいため、占有されたビデオメモリは小さく、第2の経路を介して当該計算結果を伝送すれば、スワップ時間を増やし、深層学習モデルのトレーニング速度が遅くなるため、第1のプロセッサで確定された最適経路は第1の経路であり、512の長さのトレーニングサンプルについては、第1の計算ユニットが当該トレーニングサンプルをトレーニングして取得した計算結果は大きいため、占有されたビデオメモリは大きく、第1の経路を介して伝送すれば、第1のプロセッサのビデオメモリを占有し、深層学習モデルのトレーニングが失敗するため、第1のプロセッサで確定された最適経路は第2の経路である。
【0039】
ステップ103において、第1のプロセッサは、上記最適経路を介して、上記第1の計算ユニットの計算結果を上記第2の計算ユニットに伝送する。
【0040】
例示的に、最適経路が第1の経路であれば、第1のプロセッサは、第1の計算ユニットの計算結果を第1のプロセッサのビデオメモリに記憶し、当該計算結果が第2の計算ユニットに到達した後、第1のプロセッサは、当該計算結果が占有するビデオメモリを解放し、最適経路が第2の経路であれば、第1のプロセッサは、第1の計算ユニットの計算結果を第2のプロセッサに送信し、第2のプロセッサに当該計算結果をスワップイン(swap_in)操作とスワップアウト(swap_out)操作などのスワップ(swap)操作を実行させる。第1の計算ユニットの計算結果が第2のプロセッサのメモリに到達した後、つまりスワップイン操作を実行した後、第1のプロセッサは、当該計算結果が占有するビデオメモリを解放する。
【0041】
本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法では、第1のプロセッサは、深層学習モデルをトレーニングすることを要求するための要求命令を受信した後、第1の経路と第2の経路から最適経路を確定し、当該第1の経路が、第1の計算ユニットから第2の計算ユニットに直接到達する経路であり、第2の経路が、ビデオメモリのスワップを介して第2の計算ユニットに到達する経路であり、次に、第1のプロセッサは、最適経路を介して第1の計算ユニットの計算結果を第2の計算ユニットに伝送する。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0042】
以下、上記実施例では、第1のプロセッサが最適経路をどのように確定するかを詳細に説明する。
【0043】
1つの実行可能な方式では、第1のプロセッサが第1の経路と第2の経路から最適経路を確定するとき、第1のプロセッサは、上記第1のプロセッサのビデオメモリの状態情報を確定し、上記状態情報に従って、第1の経路と第2の経路から最適経路を確定する。
【0044】
例示的に、第1のプロセッサのビデオメモリの状態情報は、第1のプロセッサのビデオメモリの状態を示すために使用される。第1のプロセッサは、ビデオメモリの状態情報に従って、第1の計算ユニットの計算結果を伝送する経路を確定することができる。例えば、状態情報が利用可能なビデオメモリが比較的大きいことを示す場合、ビデオメモリのスワップでのswap操作に時間がかかりすぎて深層学習モデルのトレーニング速度が遅くなる問題を回避するために、第1の経路を介して計算結果を伝送する。また例えば、第1の計算ユニットの計算結果が比較的大きい場合、第1の経路を介して伝送すると、ビデオメモリがずっと占有されている問題が生じるので、第1のプロセッサが確定した最適経路は第2の経路である。
【0045】
当該解決手段を採用して、第1のプロセッサがビデオメモリの状態情報に従って最適経路を確定する目的を実現する。
【0046】
上記実施例では、選択的に、状態情報は、バッチサイズ(batch size)、トレーニングサンプルの長さ、上記計算結果が占有する上記ビデオメモリの空間のサイズ、上記ビデオメモリのスワップ速度、上記ビデオメモリの残り空間のサイズのうちの少なくとも1つを含み、そのうち、上記バッチサイズが、上記ビデオメモリにロードされるトレーニングサンプルの数を示すために使用され、上記ビデオメモリのスワップ速度が、単位時間内に上記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0047】
例示的に、第1のプロセッサは、ビデオメモリの現在の状態情報に従って、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定することができる。以下、実現ための使用例をいくつか示す。例示的に、
図3を参照してもよく、
図3は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の例の概略図である。
【0048】
図3に示すように、第1のプロセッサに含まれる計算ユニットは、計算ユニットb、計算ユニットc、計算ユニットdおよび計算ユニットeを含み、計算ユニットbの計算結果(tensor b)が計算ユニットcと計算ユニットeによって使用され、計算ユニットcと計算ユニットdが計算ユニットbと計算ユニットeとの間の中間計算ユニットである。そのうち、第1の計算ユニットが計算ユニットbであり、第2の計算ユニットが計算ユニットcであり、第3の計算ユニットが計算ユニットdである。
【0049】
図3に示すように、第1のプロセッサが計算ユニットbに対応する演算を実行した後、計算結果、即ちtensor bが生成される。計算ユニットcと計算ユニットbが直接接続されているため、計算結果が計算ユニットcに直接伝送され、しかし、計算ユニットbと計算ユニットeの間に中間計算ユニットがあり、つまり、計算ユニットeは、計算ユニットdの計算結果tensor dが取得された後にのみ、tensor bとtensor dを使用し、当該過程では、計算ユニットeは、第1のプロセッサが計算ユニットcと計算ユニットdの対応する演算を実行するのを待つ必要がある。このとき、第1のプロセッサは、第1の経路を介してtensor bが利用されるまでtensor bをビデオメモリに記憶するか、第2の経路を介してtensor bを第2のプロセッサのメモリにスワップするかを、以下のいくつかの方式を介して判断することができる。
【0050】
方式1においては、第1のプロセッサはtensor bのサイズに従って第1の経路と第2の経路から最適経路を確定する。
【0051】
例示的に、tensor bのサイズは、tensor bが占有するビデオメモリの空間のサイズを示し、tensor bが100KBなどの特定の閾値より小さい場合、第1のプロセッサは最適経路が第1の経路であると確定し、そうでなければ、第1のプロセッサは最適経路が第2の経路であると確定する。tensor bが閾値より小さい場合に第1の経路が選択されるのは、tensor bが比較的小さい場合、節約できるビデオメモリの空間が限られるが、swap操作を実行すると時間が無駄になるからである。当該過程では、閾値の確定は、異なるサイズのtensor bがswap操作を呼び出す時間を事前に統計することによって得られることができる。
【0052】
方式2においては、第1のプロセッサは、ビデオメモリのスワップ速度に従って第1の経路と第2の経路から最適経路を確定する。
【0053】
例示的に、第2の経路を採用すれば、第1の計算ユニットの計算結果がビデオメモリから第1のプロセッサのメモリに到達する過程は、スワップアウト(swap_out)操作と呼ばれ、その後、当該計算結果が第1のプロセッサのメモリから第2のプロセッサのビデオメモリに到達する過程は、スワップイン(swap_in)操作と呼ばれる。深層学習モデルのトレーニング過程では、他の記憶スワップ操作がある。方式2を採用して最適経路を確定するとき、デフォルトで第1の経路を介してtensor bを伝送し、いくつかのトレーニングサンプルを選択して実際のテストを行い、実際のテスト結果に従ってスワップイン操作の時間長とキャッシュ操作の時間長を取得し、スワップイン操作の時間長とスワップアウト操作の時間長に従ってビデオメモリのスワップ速度を確定し、ビデオメモリのスワップ速度は、tensorとスワップ時間の比率である。ビデオメモリのスワップ速度が一定の閾値より小さい場合、第1の経路を最適経路とし、ビデオメモリのスワップ速度が一定の閾値より大きい場合、第2の経路を最適経路とする。
【0054】
方式3においては、第1のプロセッサは、トレーニングサンプルのサイズに従って第1の経路と第2の経路から最適経路を確定する。
【0055】
例示的に、トレーニングサンプルのサイズは、トレーニングサンプルの長さとも呼ばれる。深層学習モデルのトレーニングの、第1のプロセッサに対する需要は、通常、トレーニングサンプルのサイズに関し、現在トレーニングサンプルのサイズが特定の閾値より小さい場合、第1の経路を最適経路とし、現在トレーニングサンプルのサイズが特定の閾値より大きい場合、第2の経路を最適経路とする。
【0056】
方式4においては、第1のプロセッサは、異なるtensor bのswap操作が節約できるビデオメモリのサイズを比較して、第1の経路と第2の経路から最適経路を確定する。
【0057】
例示的に、第1のプロセッサは、異なる長さのトレーニングサンプルを選択し、それぞれ第1の経路と第2の経路を通り、各トレーニングサンプルのtensor bのswap操作が節約できるビデオメモリのサイズを統計し、さらに、節約できるビデオメモリのサイズに従って閾値を設定し、節約されたビデオメモリのサイズが設定された閾値を超えた場合、第2の経路を最適経路とし、節約されたビデオメモリのサイズが設定された閾値を超えない場合、第1の経路を最適経路とする。
【0058】
方式5においては、第1のプロセッサは、異なるtensor bのswap操作が節約できるビデオメモリのサイズおよび増加のスワップ時間を比較して、節約されたビデオメモリのサイズおよび増加のスワップ時間に従って、単位時間に節約されたビデオメモリのサイズを確定し、さらに単位時間に節約されたビデオメモリのサイズに従って、第1の経路と第2の経路から最適経路を確定する。そのうち、単位時間に節約されたビデオメモリのサイズは、tensor bにswap操作を実行することによって節約されたビデオメモリのサイズと増加のスワップ時間の比率に等しい。
【0059】
方式6においては、第1のプロセッサは、ビデオメモリの残り空間のサイズに従って、第1の経路と第2の経路から最適経路を確定する。
【0060】
例示的に、第1のプロセッサは、現在の入力されたサンプルの長さと事前統計の結果に従って、現在のビデオメモリの占有状況を予測し、現在の利用可能なビデオメモリのサイズに合わせて、単位時間に節約されたビデオメモリの数が大きいtensorを選択してswap操作を行い、節約後のビデオメモリの占有が現在の使用可能なビデオメモリのサイズを満たすと、残りのtensorは全部、第1の経路を最適経路とする。
【0061】
本実施例で説明した解決手段を採用して、ビデオメモリの状態情報に従って最適経路を柔軟に確定する目的を実現する。
【0062】
また
図3に示すように、最適経路が第1の経路であるとき、tensor bは、太い黒実線によって示される経路、即ち第1の経路を介して、第2の計算ユニット、即ち計算ユニットeに伝送される。最適経路が第2の経路であるとき、tensor bは、破線によって示される経路、即ち第2の経路を介して、第2の計算ユニットに伝送される。図のtensor b´とtensor bの違いは、tensor bが第1のプロセッサのビデオメモリに記憶され、tensor b´が第2のプロセッサのメモリに記憶される。さらに、図のテンソル(tensor)cは、計算ユニットcの計算結果を指し、テンソルdは、計算ユニットdの計算結果を指す。
【0063】
上記実施例では、tensor b´がスワップイン操作を早すぎて実行され、計算ユニットeに到達することを回避するため、本願の実施例では、最適経路が第2の経路であるとき、第1のプロセッサは、第1の経路と第2の経路から最適経路を確定した後、さらに上記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、上記第3の計算ユニットが、上記少なくとも1つの中間計算ユニットのうち、上記第2の計算ユニットに隣接し、且つ上記第2の計算ユニットの前に位置する計算ユニットであり、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加する。
【0064】
例示的に、また
図3に示すように、第2のプロセッサは、スワップアウト操作(swap_out)とスワップイン操作(swap_in)を含むスワップ操作を実行するために使用される。第2のプロセッサは、計算ユニットdの計算結果を取得した後、計算ユニットeに対応する演算を実行できるため、第2のプロセッサがスワップ操作のスワップイン(swap_in)操作を早すぎて実行することを避けるために、計算ユニットdのスワップイン操作への依存を増加させることにより、計算ユニットdに対応する演算が実行された後にスワップイン操作が起動される。
【0065】
本実施例では、第3の計算ユニットとスワップ操作の依存関係を増やすことにより、スワップ操作の早すぎる実行によるビデオメモリ占有を避ける。
【0066】
以下、上記実施例において、依存関係を追加した後、第1のプロセッサが深層学習モデルのトレーニングをどのように実行するかを詳細に説明する。
【0067】
1つの実行可能な方式では、第1のプロセッサは、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに上記第1の計算ユニットに対応する演算を実行して上記計算結果を取得し、上記計算結果を上記第2のプロセッサに送信することにより、上記第2のプロセッサが上記計算結果にスワップアウト操作を実行する。その後、第1のプロセッサが上記第3の計算ユニットに対応する操作を完了するかどうかを判断し、上記第1のプロセッサが上記第3の計算ユニットに対応する演算を完了すれば、上記第2のプロセッサに指示情報を送信し、上記第2のプロセッサに上記第1の計算ユニットの計算結果に対してスワップイン操作を実行させ、第1のプロセッサが、上記第3の計算ユニットの計算結果と上記スワップイン操作が実行された計算結果に従って、上記第2の計算ユニットに対応する演算を実行する。
【0068】
例示的に、また
図3に示すように、計算ユニットdとスワップイン操作の依存関係を追加した後、深層学習モデルのトレーニング過程では、第1のプロセッサは、計算ユニットb、計算ユニットc、計算ユニットdおよび計算ユニットeに対応する演算を順次実行する。第1のプロセッサが計算ユニットbに対応する演算を実行してtensor bを取得した後、当該tensor bを上記第2のプロセッサに送信することによって、上記第2のプロセッサは、上記計算結果に対してスワップアウト操作を実行し、tensor bを第1のプロセッサのビデオメモリから第2のプロセッサのメモリに移動して、tensor b´を取得する。その後、第1のプロセッサは、tensor bに従って計算ユニットcに対応する演算を実行してtensor cを取得し、さらにtensor cに従って計算ユニットdに対応する演算を実行してtensor dを取得する。第1のプロセッサは、計算ユニットdに対応する演算を完了すると判断した後、第2のプロセッサに指示情報を送信し、当該指示情報は、第2のプロセッサがtensor b´にスワップイン操作を実行するように指示するために使用される。最後に、第1のプロセッサは、tensor dとtensor b´を入力として計算ユニットeに対応する演算を実行する。
【0069】
本実施例では、第3の計算ユニットとスワップ操作の依存関係を増やすことにより、スワップ操作が早すぎる実行によるビデオメモリの占有を避ける。
【0070】
上記実施例では、上記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、さらに上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送されるかどうかを判断し、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送される場合、上記第1の計算ユニットの計算結果が占有している空間を上記ビデオメモリから解放する。
【0071】
例示的に、また
図3に示すように、最適経路が第2の経路であるとき、第1のプロセッサは、tensor bを取得した後、当該tensor bを計算ユニットcに伝送することおよびスワップアウト操作を介して第2のプロセッサのメモリに伝送することが成功すれば、ビデオメモリからtensor bが占有する空間を解放する。
【0072】
本実施例では、計算結果がスワップアウト操作を実行した後、計算結果が占有するビデオメモリを適時に解放し、ビデオメモリが占有されることによってトレーニングが遅くなり、さらにトレーニングできないことを避ける。
【0073】
上記は、本願の実施例で言及された深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の具体的な実現を紹介し、以下は、本願の装置の実施例であり、本願の方法の実施例を実施するために使用されることができる。本願の装置の実施例に開示されていない詳細については、本願の方法の実施例を参照されたい。
【0074】
図4は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置の概略構造図である。当該装置は、電子機器に集積されることも、電子機器によって実現されることもでき、電子機器は、端末機器またはサーバなどであってもよい。
図4に示すように、本実施例では、当該深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置100は、ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュール11と、第1の経路と第2の経路から最適経路を確定するための処理モジュール12であって、上記第1の経路では、第1の計算ユニットの計算結果が、上記第1の計算ユニットから第2の計算ユニットに直接到達し、上記第2の経路では、上記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、上記第2の計算ユニットに到達し、上記第1の計算ユニットと上記第2の計算ユニットが第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュール12と、上記最適経路を介して、上記第1の計算ユニットの計算結果を上記第2の計算ユニットに伝送するための伝送モジュール13と、を含んでもよい。
【0075】
1つの実行可能な設計では、上記処理モジュール12は、上記第1のプロセッサのビデオメモリの状態情報を確定し、上記状態情報に従って、第1の経路と第2の経路から最適経路を確定するために使用される。
【0076】
1つの実行可能な設計では、上記状態情報は、バッチサイズ、トレーニングサンプルの長さ、上記計算結果が占有する上記ビデオメモリの空間のサイズ、上記ビデオメモリのスワップ速度、上記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、上記バッチサイズが、上記ビデオメモリにロードされるトレーニングサンプルの数を示すために使用され、上記ビデオメモリのスワップ速度が、単位時間内に上記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0077】
1つの実行可能な設計では、上記最適経路が上記第2の経路であり、上記処理モジュール12は、第1の経路と第2の経路から最適経路を確定した後、さらに上記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、上記第3の計算ユニットが、上記少なくとも1つの中間計算ユニットのうち、上記第2の計算ユニットに隣接し、且つ上記第2の計算ユニットの前に位置する計算ユニットである。
【0078】
1つの実行可能な設計では、上記スワップ操作は、スワップアウト操作とスワップイン操作を含み、上記処理モジュール12は、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに上記第1の計算ユニットに対応する演算を実行して上記計算結果を取得し、上記計算結果を上記第2のプロセッサに送信して、上記第2のプロセッサに上記計算結果に対して上記スワップアウト操作を実行させ、上記第3の計算ユニットに対応する演算を完了するかどうかを判断し、上記第1のプロセッサが上記第3の計算ユニットに対応する演算を完了すれば、上記第2のプロセッサに指示情報を送信して、上記第2のプロセッサに上記第1の計算ユニットの計算結果に対して上記スワップイン操作を実行させ、上記第3の計算ユニットの計算結果と上記スワップイン操作が実行された計算結果に従って、上記第2の計算ユニットに対応する演算を実行するために使用される。
【0079】
1つの実行可能な設計では、上記処理モジュール12は、第1の経路と第2の経路から最適経路を確定した後、さらに、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送されるかどうかを判断し、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送される場合、上記第1の計算ユニットの計算結果が占有している空間を上記ビデオメモリから解放するために使用される。
【0080】
1つの実行可能な設計では、上記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0081】
本願の実施例によって提供される装置は、上記実施例での第1のプロセッサによって実行される方法のために使用されてもよく、その実現原理と技術効果は同様であり、ここでは繰り返して説明しない。
【0082】
本願の実施例に従って、本願は、電子機器と可読記憶媒体をさらに提供する。
【0083】
図5は本願の実施例の深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実現するために使用される電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、および他の適切なコンピュータなどさまざまな形式のデジタルコンピュータを表すことを目的としている。電子機器は、パーソナルデジタル処理、セルラー電話、スマートフォン、ウェアラブル機器および他の類似のコンピューティング装置などさまざまな形式のモバイル装置を表してもよい。本明細書に示す部品、それらの接続および関係、およびそれらの機能は、単なる例であり、本明細書で記載および/または要求される本願の実施を制限することを意図しない。
【0084】
図5に示すように、当該電子機器は、1つまたは複数のプロセッサ501、メモリ502、および高速インターフェースと低速インターフェースを含む様々な部品を接続するためのインターフェースを含む。様々な部品は、異なるバスを使用して相互に接続され、共通のマザーボードに取り付けられてもよいし、又は必要に応じて他の形態でインストールされてもよい。プロセッサは、電子機器で実行された命令を処理することができ、上記命令は、GUIのグラフィック情報を外部入力/出力装置(例えばインターフェースに結合された表示機器など)に表示するようにメモリ内またはメモリ上に記憶された命令を含む。他の実施形態では、必要に応じて、複数のプロセッサおよび/または複数のバスを、複数のメモリおよび複数のメモリと共に使用してもよい。同様に、複数の電子機器を接続して、各機器は、いくつかの必要な操作を提供してもよい(例えば、サーバーアレイ、ブレードサーバーのグループ、またはマルチプロセッサシステムとして)。
図5では、プロセッサ501を例に取る。
【0085】
メモリ502は、本願によって提供される非一時的なコンピュータ可読記憶媒体である。そのうち、上記メモリには、少なくとも1つのプロセッサによって実行可能な命令が記憶されることにより、上記少なくとも1つのプロセッサが本願によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実行する。本願の非一時的なコンピュータ可読記憶媒体には、コンピュータ命令が記憶され、当該コンピュータ命令が、本願によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法をコンピュータに実行させるために使用される。
【0086】
メモリ502は、非一時的なコンピュータ可読記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラムおよびモジュール、例えば、本願の実施例における深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法に対応するプログラム命令/モジュール(例えば、
図4に示す受信モジュール11、処理モジュール12および伝送モジュール13)を記憶するために使用できる。プロセッサ501は、メモリ502に記憶される非一時的なソフトウェアプログラム、命令およびモジュールを実行することによって、サーバの様々な機能応用およびデータ処理を実行し、即ち、上記方法の実施例における深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実施する。
【0087】
メモリ502は、プログラム記憶領域およびデータ記憶領域を含んでもよく、そのうち、プログラム記憶領域は、操作システムと少なくとも1つの機能に必要な応用プログラムを記憶してもよく、データ記憶領域には、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実行するために、電子機器によって作成されたデータなどを記憶してもよい。なお、メモリ502は、高速ランダムアクセスメモリを含んでもよく、また、少なくとも1つの磁気メモリ、フラッシュメモリ、または他の非一時的な固体メモリなどの非一時的なメモリを含んでもよい。いくつかの実施例では、メモリ502が、選択的に、プロセッサ501に対してリモートに設定されたメモリを含み、これらのリモートメモリが、ネットを介して電子機器に接続されてもよい。上記ネットの例は、インターネット、企業イントラネット、ローカルネット、モバイル通信ネット、およびこれらの組み合わせを含むが、これらに限定されない。
【0088】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の電子機器は、さらに入力装置503と出力装置504を含んでもよい。プロセッサ501、メモリ502、入力装置503および出力装置504は、バスまたは他の形態で接続されてもよいが、
図5では、バスで接続される例を示す。
【0089】
入力装置503は、入力された数字または文字情報を受信して、深層学習トレーニングタスクに向けたプロセッサビデオメモリの最適化に関連するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、指示棒、1つまたは複数のマウスボタン、トラックボール、操縦棒などの入力装置である。出力装置504は、表示機器、補助照明装置(例えば、LED)および触覚フィードバック装置(例えば、振動モーター)などを含んでもよい。当該表示機器は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイおよびプラズマディスプレイを含んでもよいが、これらに限定されない。いくつかの実施形態では、表示機器はタッチスクリーンであってもよい。
【0090】
本明細書で説明するシステムおよび技術の様々な実施形態は、数字電子回路システム、集積回路システム、特定用途向けASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実施されることができる。これらの様々な実施形態は以下を含んでもよく、1つまたは複数のコンピュータプログラムで実施され、当該1つまたは複数コンピュータプログラムは、少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行および/または解釈されることができ、当該プログラム可能なプロセッサは、専用または汎用プログラム可能なプロセッサであってもよく、記憶システム、少なくとも1つの入力装置および少なくとも1つの出力装置からデータおよび命令を受信し、そしてデータおよび命令を当該記憶システム、当該少なくとも1つの入力装置および当該少なくとも1つの出力装置に送信することができる。
【0091】
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェア応用、またはコードとも呼ばれる)は、プログラム可能なプロセッサの機械命令を含み、高級過程および/またはオブジェクトに向けたプログラミング言語、および/またはアセンブリ/機械言語を用いてこれらの計算プログラムを実施することができる。本明細書で使用されるように、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するための任意のコンピュータプログラム製品、機器、および/または装置(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能な論理装置(PLD))を指し、機械可読信号としての機械命令を受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するための任意の信号を指す。
【0092】
ユーザとの対話を提供するために、ここで説明するシステムおよび技術をコンピュータに実施することができ、当該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)、およびユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)を有する。他のタイプの装置は、さらにユーザとの対話を提供するために使用されてもよく、例えば、ユーザに提供されるフィードバックが、任意の形式の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、任意の形式(音響入力、音声入力、または触覚入力を含む)を使用して、ユーザからの入力を受信してもよい。
【0093】
本明細書で説明するシステムおよび技術は、バックグラウンド部品を含む計算システム(例えば、データサーバとして)、または中間部品を含む計算システム(例えば、応用サーバ)、または前端部品を含む計算システム(例えば、グラフィカルユーザインターフェースまたはインターネットブラウザを備えたユーザコンピュータ、ユーザが、当該グラフィカルユーザインターフェースまたは当該インターネットブラウザを通じて本明細書で説明するシステムおよび技術の実施形態と対話できる)、またはこのようなバックグラウンド部品、中間部品、または前端部品の任意の組合せを含む計算システムに実施されてもよい。任意の形式または媒体の数字データ通信(例えば、通信ネット)を通じて、システムの部品を相互に接続してもよい。通信ネットの例は、ローカルネットワーク(LAN)、広域ネットワーク(WAN)およびインターネットを含む。
【0094】
コンピュータシステムは、クライアントおよびサーバを含んでもよい。通常、クライアントとサーバは、互いに離れており、通信ネットを介して相互作用する。クライアントとサーバ間の関係は、対応するコンピューター上で実行され、互いにクライアント-サーバ関係を持つコンピュータープログラムによって生成される。
【0095】
本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法は、第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、上記第1の計算ユニットと上記第2の計算ユニットが上記第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、第1のプロセッサが、上記経路を介して上記第2の計算ユニットに上記第1の計算ユニットの計算結果を送信することを含む。
【0096】
本願の実施例の技術的解決手段に従って、第1のプロセッサは、深層学習モデルをトレーニングすることを要求するための要求命令を受信した後、第1の経路と第2の経路から最適経路を確定し、当該第1の経路が、第1の計算ユニットから第2の計算ユニットに直接到達する経路であり、第2の経路が、ビデオメモリのスワップを介して第2の計算ユニットに到達する経路であり、次に、第1のプロセッサは、最適経路を介して第1の計算ユニットの計算結果を第2の計算ユニットに伝送する。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。なお、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0097】
理解すべきものとして、上記のさまざまな形式のプロセスを使用して、ステップを順序変更、増加、または削除することができる。例えば、本願に記載された各ステップは、本願に開示された技術の解決手段の所望の結果が達成され得る限り、並列、順次、または異なる順序で実行されてもよく、本明細書に限定されない。
【0098】
上記具体的な実施形態は、本願の保護範囲に対する制限を構成しない。当業者は、設計要求および他の要因によって、様々な修正、組み合わせ、サブ組み合わせ、および置換を行うことができることを理解すべきである。本願の精神と原則の範囲内で行われた修正、同等の代替、および改善などは、いずれも本願の保護範囲に含まれるべきである。
【0099】
本願は、2019年10月18日に中国特許庁に提出された、出願番号が2019109963093であり、出願名称が「深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法及び装置」である中国特許出願の優先権を主張し、その内容全体が本願に援用される。
【手続補正書】
【提出日】2021-03-22
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本願の実施例は、深層学習技術分野に関し、特に、深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置に関する。
【背景技術】
【0002】
現在、深層学習(Deep Learning)は、機械学習研究の新しい分野であり、その動機は、分析と学習のために人間の脳をシミュレートするニューラルネットワークを構築し、人間の脳のメカニズムを模倣することによって、画像、声、テキストなどのデータを解釈することである。深層学習のより典型的な応用は、画像識別と音声識別などである。応用過程では、顔識別モデル、音声識別モデルなどの深層学習モデルをトレーニングする必要がある。
【0003】
通常、プロセッサ、例えば、グラフィックプロセッサ(Graphics Processing Unit、GPU)を使用して深層学習モデルをトレーニングする。GPUは、複数の計算ユニット、少数の制御ユニットと記憶ユニットを有する。GPUの計算ユニットの利用率を十分に向上させるために、毎回トレーニングのタスク数を向上させる必要があり、タスク数とは、計算ユニットがトレーニングサンプルに対して加算、減算、乗算、除算、積分などの演算を行う回数を指すものである。明らかに、毎回GPUビデオメモリにロードされるトレーニングサンプルの数が多いほど、タスク数が大きくなる。そのうち、毎回GPUビデオメモリにロードされるトレーニングサンプルの数が、バッチサイズ(batch size)ともよばれてもよい。
【0004】
ただし、GPUビデオメモリのサイズは一定であり、つまりGPUの記憶ユニットの数は一定であり、深層学習モデルがより複雑な場合、batch sizeの増加に伴い、GPUビデオメモリが大量に占有されるため、深層学習モデルのトレーニングを完了できなくなる。したがって、深層学習モデルのトレーニング過程では、どのようにGPUビデオメモリを最適化することは解決すべき緊急の問題である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法及び装置を提供し、計算結果を伝送するための最適経路を確定し、最適経路を使用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避する。
【課題を解決するための手段】
【0006】
第1の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、前記方法は、第1のプロセッサがユーザから入力された要求命令を受信し、前記要求命令が深層学習モデルのトレーニングを要求するために使用され、第1の経路と第2の経路から最適経路を確定し、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送することを含む。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0007】
1つの実行可能な設計では、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定することは、前記第1のプロセッサが前記第1のプロセッサのビデオメモリの状態情報を確定し、前記第1のプロセッサが前記状態情報に従って第1の経路と第2の経路から最適経路を確定することを含む。
【0008】
1つの実行可能な設計では、前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0009】
1つの実行可能な設計では、前記最適経路が前記第2の経路であり、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、前記方法はさらに、前記第1のプロセッサが、前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットであり、第1のプロセッサが、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加することを含む。
【0010】
1つの実行可能な設計では、前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記第1のプロセッサは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行する。
【0011】
1つの実行可能な設計では、前記第1のプロセッサは、第1の経路と第2の経路から最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送された場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放する。
【0012】
1つの実行可能な設計では、前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0013】
第2の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置を提供し、前記装置は、ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュールと、第1の経路と第2の経路から最適経路を確定するための処理モジュールであって、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュールと、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送するための伝送モジュールと、を含む。
【0014】
1つの実行可能な設計では、前記処理モジュールは、前記第1のプロセッサのビデオメモリの状態情報を確定し、前記状態情報に従って、第1の経路と第2の経路から最適経路を確定するために使用される。
【0015】
1つの実行可能な設計では、前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0016】
1つの実行可能な設計では、前記最適経路が前記第2の経路であり、前記処理ユニットは、第1の経路と第2の経路から最適経路を確定した後、さらに前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットである。
【0017】
1つの実行可能な設計では、前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記処理ユニットは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行するために使用される。
【0018】
1つの実行可能な設計では、前記処理モジュールは、第1の経路と第2の経路から最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放するために使用される。
【0019】
1つの実行可能な設計では、前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0020】
第3の態様では、本願の実施例は電子機器を提供し、前記電子機器は、少なくとも1つのプロセッサ、および前記少なくとも1つのプロセッサと通信接続されるメモリを含み、そのうち、前記メモリは、前記少なくとも1つのプロセッサによって実行できる命令を記憶し、前記命令は、前記少なくとも1つのプロセッサによって実行されて、前記少なくとも1つのプロセッサに第1の態様または第1の態様の任意の実現可能な方法を実行させることができる。
【0021】
第4の態様では、本願の実施例は、命令を含むコンピュータプログラム製品を提供し、前記製品は、電子機器で実行されるとき、電子機器コンピュータに上記第1の態様または第1の態様の様々な可能な実現方式での方法を実行させる。
【0022】
第5の態様では、本願の実施例は、命令を記憶する記憶媒体を提供し、前記記憶媒体は、電子機器で実行されるとき、電子機器に上記第1の態様または第1の態様の様々な可能な実現方式での方法を実行させる。
【0023】
第6の態様では、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、前記方法は、第1のプロセッサが第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、前記第1のプロセッサが前記経路を介して前記第2の計算ユニットに前記第1の計算ユニットの計算結果を送信することを含む。
【0024】
第7の態様では、本願は、コンピュータプログラムを提供し、前記コンピュータプログラムが電子機器で実行されると、第1の態様または第1の態様の様々な可能な実現方式での方法が実現される。
【発明の効果】
【0025】
上記出願の1つの実施例は以下の利点または有益な効果を有する。計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明される解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0026】
上記任意の方式が有する他の効果は、具体的な実施例と併せて以下で説明される。
【図面の簡単な説明】
【0027】
図面は、本解決手段をよりよく理解するために使用されており、本願を限定しない。
【
図1】本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の実行環境の概略図である。
【
図2】本願の第1の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法のフローチャートである。
【
図3】本願の第2の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の例の概略図である。
【
図4】本願の第3の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置の概略構造図である。
【
図5】本願の実施例の深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実現するために使用される電子機器のブロック図である。
【発明を実施するための形態】
【0028】
以下、添付図面を参照して本願の例示的な実施例を説明し、本願の実施例の様々な詳細が理解を容易にするために含まれるが、単なる例示的なものと考えられるべきである。したがって、当業者は、本願の範囲および精神から逸脱することなく、本明細書に記載された実施例に様々な変更および修正を加えることができることを理解するはずである。同様に、明確かつ簡潔にするために、以下の説明では、よく知られている機能および構造の説明は省略されている。
【0029】
現在、通常GPUを使用して深層学習モデルのトレーニングを行い、GPUは、少量の制御ユニットと記憶ユニットおよび大量の計算ユニットを含み、優れた並行性を備え、計算ユニットの数は、5120以上に達することができる。GPUの計算ユニットの利用率を向上させるためには、毎回GPUにロードされるビデオメモリのトレーニングサンプルの数を増やす必要があり、毎回GPUにロードされるビデオメモリのトレーニングサンプルの数がバッチサイズ(batch size)とも呼ばれる。しかし、GPUのビデオメモリのサイズには制限があるため、batch sizeを制限なく増やすことはできず、さらに、深層学習モデルをトレーニングして取得することはできない。
【0030】
これに鑑み、本願の実施例は、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を提供し、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避する。
【0031】
図1は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の実行環境の概略図である。
図1に示すように、電子機器は、端末機器またはサーバなどであってもよい。電子機器には、少なくとも2つのプロセッサ、つまり第1のプロセッサと第2のプロセッサが設置され、第1のプロセッサが、大量の計算ユニットおよび少量の記憶ユニットと制御ユニットを含み、第2のプロセッサがより大きな記憶空間を有するメモリ機器に直接接続され、メモリ機器が、メモリスティック、ソリッドステートハードディスク(Solid State DiskまたはSolid State Drive、SSD)であってもよく、第1のプロセッサの記憶ユニットが第1のプロセッサのビデオメモリと呼ばれ、第2のプロセッサに直接接続されるメモリ機器が第2のプロセッサのメモリと呼ばれ、第1のプロセッサが、GPU、テンソルプロセッサ(Tensor Processing Unit、TPU)などであってもよい。
【0032】
本願の実施例では、第1のプロセッサが、トレーニングサンプルをトレーニングして深層学習モデルを取得するために使用され、トレーニング過程中に、第2の計算ユニットが第1の計算ユニットの計算結果を使用する必要があれば、第1の計算ユニットが計算結果を出力し、当該計算結果が第1のプロセッサのビデオメモリに記憶される。第1のプロセッサは、当該計算結果がどの経路で第2の計算ユニットに到達するかを判断し、例えば、第1の経路を介して第1の計算ユニットから第2の計算ユニットに直接到達し、また例えば、ビデオメモリのスワップに基づいて第2の経路を介して第2の計算ユニットに到達する。当該計算結果がビデオメモリのスワップを介して第2の計算ユニットに到達する場合、第2のプロセッサは、スワップ(swap)操作を介して、ビデオメモリ内のデータを第2のプロセッサのメモリにスワップし、次に第2の計算ユニットに送信するために使用される。ビデオメモリ内のデータが第2のプロセッサのメモリにスワップされた後、第1のプロセッサは計算結果が占有するビデオメモリを解放することができ、それにより、ビデオメモリの最適化を実現する。
【0033】
以下、上記
図1に基づいて、本願の実施例に記載された深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を詳細に説明する。例示的に、
図2を参照してもよい。
【0034】
図2は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法のフローチャートであり、本実施例は、以下のステップを含む。
【0035】
ステップ101において、第1のプロセッサは、ユーザから入力された、深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信する。
【0036】
例示的に、顔識別モデル、画像分類モデル、音声識別モデルなどの深層学習モデルをトレーニングする必要がある場合、ユーザは、クリック操作、タッチ操作などを介して電子機器に要求命令を入力し、電子機器の第1のプロセッサは、当該深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信して識別する。
【0037】
ステップ102において、上記第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、上記第1の計算ユニットと上記第2の計算ユニットが上記第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する。
【0038】
例示的に、第1のプロセッサに含まれる各計算ユニットは、独立しているのではなく、相互に依存関係がある。例えば、第2の計算ユニットの計算が第1の計算ユニットの計算結果に依存すると同時に、第1の計算ユニットと第2の計算ユニットとの間に複数の中間計算ユニットがあり、第1の計算ユニットの計算結果は、複数の中間計算ユニットによって順次処理された後、最後の中間計算ユニット(以下、第3の計算ユニットと呼ばれる)によって第2の計算ユニットに入力される。第2の計算ユニットが第1の計算ユニットの計算結果と第3の計算ユニットの計算結果を使用する必要があるため、第1の計算ユニットが計算結果を取得した後、当該計算結果が大量のビデオメモリ空間を占有する場合、当該計算結果が第1の経路を通過するとき、つまり第1の計算ユニットから第2の計算ユニットに直接伝送されるとき、当該計算結果を第1のプロセッサのビデオメモリにずっと記憶する必要があり、このとき、第1のプロセッサのビデオメモリが占有される。このため、第1の計算ユニットの計算結果を第2の経路、即ちビデオメモリのスワップを介して第2の計算ユニットに伝送することを考え、つまり、第1の計算ユニットが計算結果を取得した後、当該計算結果が、swap操作を介して第2のプロセッサのメモリにスワップされ、第2の計算ユニットに到達される。しかし、swap操作が、計算結果を第1のプロセッサのビデオメモリから第2のプロセッサのメモリにスワップする必要があり、第2のプロセッサとメモリが、高速シリアルコンピュータ拡張(peripheral component interconnect express、PCIE)バスを介して接続され、当該PCIEバスのシステム帯域幅が低いため、第2のプロセッサからメモリへのコピーに時間がかかり、その結果、batch sizeを向上させるが、第1のプロセッサの計算ユニットの利用率が向上させない。さらに、第2の経路を採用すると、大量のビデオメモリを解放できるため、大規模パラメータの深層学習モデルのトレーニングを実現することができる。
【0039】
上記のように、第1の経路は、第1のプロセッサのビデオメモリが占有され、大規模パラメータの深層学習モデルのトレーニングを実現できないことをもたらし、第2の経路は、第1のプロセッサの計算ユニットの利用率が低いことをもたらす。したがって、本ステップでは、第1のプロセッサが第1の経路と第2の経路から最適経路を確定して、欠点を最小限に抑える。そして、第1の計算ユニットに入力されるトレーニングサンプルが持続的に変化し、第1の計算ユニットの計算結果が動的に変化するため、第1のプロセッサが確定した最適経路も動的に変化する。例えば、1つのバッチで第1のプロセッサのビデオメモリにロードされるトレーニングサンプルが1024個であり、当該1024個のトレーニングサンプルには、128、512などの長さのトレーニングサンプルが含まれると仮定すると、128の長さのトレーニングサンプルについては、第1の計算ユニットが当該トレーニングサンプルをトレーニングして取得した計算結果は小さいため、占有されたビデオメモリは小さく、第2の経路を介して当該計算結果を伝送すれば、スワップ時間を増やし、深層学習モデルのトレーニング速度が遅くなるため、第1のプロセッサで確定された最適経路は第1の経路であり、512の長さのトレーニングサンプルについては、第1の計算ユニットが当該トレーニングサンプルをトレーニングして取得した計算結果は大きいため、占有されたビデオメモリは大きく、第1の経路を介して伝送すれば、第1のプロセッサのビデオメモリを占有し、深層学習モデルのトレーニングが失敗するため、第1のプロセッサで確定された最適経路は第2の経路である。
【0040】
ステップ103において、第1のプロセッサは、上記最適経路を介して、上記第1の計算ユニットの計算結果を上記第2の計算ユニットに伝送する。
【0041】
例示的に、最適経路が第1の経路であれば、第1のプロセッサは、第1の計算ユニットの計算結果を第1のプロセッサのビデオメモリに記憶し、当該計算結果が第2の計算ユニットに到達した後、第1のプロセッサは、当該計算結果が占有するビデオメモリを解放し、最適経路が第2の経路であれば、第1のプロセッサは、第1の計算ユニットの計算結果を第2のプロセッサに送信し、第2のプロセッサに当該計算結果をスワップイン(swap_in)操作とスワップアウト(swap_out)操作などのスワップ(swap)操作を実行させる。第1の計算ユニットの計算結果が第2のプロセッサのメモリに到達した後、つまりスワップイン操作を実行した後、第1のプロセッサは、当該計算結果が占有するビデオメモリを解放する。
【0042】
本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法では、第1のプロセッサは、深層学習モデルをトレーニングすることを要求するための要求命令を受信した後、第1の経路と第2の経路から最適経路を確定し、当該第1の経路が、第1の計算ユニットから第2の計算ユニットに直接到達する経路であり、第2の経路が、ビデオメモリのスワップを介して第2の計算ユニットに到達する経路であり、次に、第1のプロセッサは、最適経路を介して第1の計算ユニットの計算結果を第2の計算ユニットに伝送する。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。さらに、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0043】
以下、上記実施例では、第1のプロセッサが最適経路をどのように確定するかを詳細に説明する。
【0044】
1つの実行可能な方式では、第1のプロセッサが第1の経路と第2の経路から最適経路を確定するとき、第1のプロセッサは、上記第1のプロセッサのビデオメモリの状態情報を確定し、上記状態情報に従って、第1の経路と第2の経路から最適経路を確定する。
【0045】
例示的に、第1のプロセッサのビデオメモリの状態情報は、第1のプロセッサのビデオメモリの状態を示すために使用される。第1のプロセッサは、ビデオメモリの状態情報に従って、第1の計算ユニットの計算結果を伝送する経路を確定することができる。例えば、状態情報が利用可能なビデオメモリが比較的大きいことを示す場合、ビデオメモリのスワップでのswap操作に時間がかかりすぎて深層学習モデルのトレーニング速度が遅くなる問題を回避するために、第1の経路を介して計算結果を伝送する。また例えば、第1の計算ユニットの計算結果が比較的大きい場合、第1の経路を介して伝送すると、ビデオメモリがずっと占有されている問題が生じるので、第1のプロセッサが確定した最適経路は第2の経路である。
【0046】
当該解決手段を採用して、第1のプロセッサがビデオメモリの状態情報に従って最適経路を確定する目的を実現する。
【0047】
上記実施例では、選択的に、状態情報は、バッチサイズ(batch size)、トレーニングサンプルの長さ、上記計算結果が占有する上記ビデオメモリの空間のサイズ、上記ビデオメモリのスワップ速度、上記ビデオメモリの残り空間のサイズのうちの少なくとも1つを含み、そのうち、上記バッチサイズが、上記ビデオメモリにロードされるトレーニングサンプルの数を示すために使用され、上記ビデオメモリのスワップ速度が、単位時間内に上記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0048】
例示的に、第1のプロセッサは、ビデオメモリの現在の状態情報に従って、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定することができる。以下、実現ための使用例をいくつか示す。例示的に、
図3を参照してもよく、
図3は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の例の概略図である。
【0049】
図3に示すように、第1のプロセッサに含まれる計算ユニットは、計算ユニットb、計算ユニットc、計算ユニットdおよび計算ユニットeを含み、計算ユニットbの計算結果(tensor b)が計算ユニットcと計算ユニットeによって使用され、計算ユニットcと計算ユニットdが計算ユニットbと計算ユニットeとの間の中間計算ユニットである。そのうち、第1の計算ユニットが計算ユニットbであり、第2の計算ユニットが計算ユニットcであり、第3の計算ユニットが計算ユニットdである。
【0050】
図3に示すように、第1のプロセッサが計算ユニットbに対応する演算を実行した後、計算結果、即ちtensor bが生成される。計算ユニットcと計算ユニットbが直接接続されているため、計算結果が計算ユニットcに直接伝送され、しかし、計算ユニットbと計算ユニットeの間に中間計算ユニットがあり、つまり、計算ユニットeは、計算ユニットdの計算結果tensor dが取得された後にのみ、tensor bとtensor dを使用し、当該過程では、計算ユニットeは、第1のプロセッサが計算ユニットcと計算ユニットdの対応する演算を実行するのを待つ必要がある。このとき、第1のプロセッサは、第1の経路を介してtensor bが利用されるまでtensor bをビデオメモリに記憶するか、第2の経路を介してtensor bを第2のプロセッサのメモリにスワップするかを、以下のいくつかの方式を介して判断することができる。
【0051】
方式1においては、第1のプロセッサはtensor bのサイズに従って第1の経路と第2の経路から最適経路を確定する。
【0052】
例示的に、tensor bのサイズは、tensor bが占有するビデオメモリの空間のサイズを示し、tensor bが100KBなどの特定の閾値より小さい場合、第1のプロセッサは最適経路が第1の経路であると確定し、そうでなければ、第1のプロセッサは最適経路が第2の経路であると確定する。tensor bが閾値より小さい場合に第1の経路が選択されるのは、tensor bが比較的小さい場合、節約できるビデオメモリの空間が限られるが、swap操作を実行すると時間が無駄になるからである。当該過程では、閾値の確定は、異なるサイズのtensor bがswap操作を呼び出す時間を事前に統計することによって得られることができる。
【0053】
方式2においては、第1のプロセッサは、ビデオメモリのスワップ速度に従って第1の経路と第2の経路から最適経路を確定する。
【0054】
例示的に、第2の経路を採用すれば、第1の計算ユニットの計算結果がビデオメモリから第1のプロセッサのメモリに到達する過程は、スワップアウト(swap_out)操作と呼ばれ、その後、当該計算結果が第1のプロセッサのメモリから第2のプロセッサのビデオメモリに到達する過程は、スワップイン(swap_in)操作と呼ばれる。深層学習モデルのトレーニング過程では、他の記憶スワップ操作がある。方式2を採用して最適経路を確定するとき、デフォルトで第1の経路を介してtensor bを伝送し、いくつかのトレーニングサンプルを選択して実際のテストを行い、実際のテスト結果に従ってスワップイン操作の時間長とスワップアウト操作の時間長を取得し、スワップイン操作の時間長とスワップアウト操作の時間長に従ってビデオメモリのスワップ速度を確定し、ビデオメモリのスワップ速度は、テンソルの大きさとスワップ時間の比率である。ビデオメモリのスワップ速度が一定の閾値より小さい場合、第1の経路を最適経路とし、ビデオメモリのスワップ速度が一定の閾値より大きい場合、第2の経路を最適経路とする。
【0055】
方式3においては、第1のプロセッサは、トレーニングサンプルのサイズに従って第1の経路と第2の経路から最適経路を確定する。
【0056】
例示的に、トレーニングサンプルのサイズは、トレーニングサンプルの長さとも呼ばれる。深層学習モデルのトレーニングの、第1のプロセッサに対する需要は、通常、トレーニングサンプルのサイズに関し、現在トレーニングサンプルのサイズが特定の閾値より小さい場合、第1の経路を最適経路とし、現在トレーニングサンプルのサイズが特定の閾値より大きい場合、第2の経路を最適経路とする。
【0057】
方式4においては、第1のプロセッサは、異なるtensor bのswap操作が節約できるビデオメモリのサイズを比較して、第1の経路と第2の経路から最適経路を確定する。
【0058】
例示的に、第1のプロセッサは、異なる長さのトレーニングサンプルを選択し、それぞれ第1の経路と第2の経路を通り、各トレーニングサンプルのtensor bのswap操作が節約できるビデオメモリのサイズを統計し、さらに、節約できるビデオメモリのサイズに従って閾値を設定し、節約されたビデオメモリのサイズが設定された閾値を超えた場合、第2の経路を最適経路とし、節約されたビデオメモリのサイズが設定された閾値を超えない場合、第1の経路を最適経路とする。
【0059】
方式5においては、第1のプロセッサは、異なるtensor bのswap操作が節約できるビデオメモリのサイズおよび増加のスワップ時間を比較して、節約されたビデオメモリのサイズおよび増加のスワップ時間に従って、単位時間に節約されたビデオメモリのサイズを確定し、さらに単位時間に節約されたビデオメモリのサイズに従って、第1の経路と第2の経路から最適経路を確定する。そのうち、単位時間に節約されたビデオメモリのサイズは、tensor bにswap操作を実行することによって節約されたビデオメモリのサイズと増加のスワップ時間の比率に等しい。
【0060】
方式6においては、第1のプロセッサは、ビデオメモリの残り空間のサイズに従って、第1の経路と第2の経路から最適経路を確定する。
【0061】
例示的に、第1のプロセッサは、現在の入力されたサンプルの長さと事前統計の結果に従って、現在のビデオメモリの占有状況を予測し、現在の利用可能なビデオメモリのサイズに合わせて、単位時間に節約されたビデオメモリの数が大きいtensorを選択してswap操作を行い、節約後のビデオメモリの占有が現在の使用可能なビデオメモリのサイズを満たすと、残りのtensorは全部、第1の経路を最適経路とする。
【0062】
本実施例で説明した解決手段を採用して、ビデオメモリの状態情報に従って最適経路を柔軟に確定する目的を実現する。
【0063】
また
図3に示すように、最適経路が第1の経路であるとき、tensor bは、太い黒実線によって示される経路、即ち第1の経路を介して、第2の計算ユニット、即ち計算ユニットeに伝送される。最適経路が第2の経路であるとき、tensor bは、破線によって示される経路、即ち第2の経路を介して、第2の計算ユニットに伝送される。図のtensor b´とtensor bの違いは、tensor bが第1のプロセッサのビデオメモリに記憶され、tensor b´が第2のプロセッサのメモリに記憶される。さらに、図のテンソル(tensor)cは、計算ユニットcの計算結果を指し、テンソルdは、計算ユニットdの計算結果を指す。
【0064】
上記実施例では、tensor b´がスワップイン操作を早すぎて実行され、計算ユニットeに到達することを回避するため、本願の実施例では、最適経路が第2の経路であるとき、第1のプロセッサは、第1の経路と第2の経路から最適経路を確定した後、さらに上記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、上記第3の計算ユニットが、上記少なくとも1つの中間計算ユニットのうち、上記第2の計算ユニットに隣接し、且つ上記第2の計算ユニットの前に位置する計算ユニットであり、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加する。
【0065】
例示的に、また
図3に示すように、第2のプロセッサは、スワップアウト操作(swap_out)とスワップイン操作(swap_in)を含むスワップ操作を実行するために使用される。第2のプロセッサは、計算ユニットdの計算結果を取得した後、計算ユニットeに対応する演算を実行できるため、第2のプロセッサがスワップ操作のスワップイン(swap_in)操作を早すぎて実行することを避けるために、計算ユニットdのスワップイン操作への依存を増加させることにより、計算ユニットdに対応する演算が実行された後にスワップイン操作が起動される。
【0066】
本実施例では、第3の計算ユニットとスワップ操作の依存関係を増やすことにより、スワップ操作の早すぎる実行によるビデオメモリ占有を避ける。
【0067】
以下、上記実施例において、依存関係を追加した後、第1のプロセッサが深層学習モデルのトレーニングをどのように実行するかを詳細に説明する。
【0068】
1つの実行可能な方式では、第1のプロセッサは、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに上記第1の計算ユニットに対応する演算を実行して上記計算結果を取得し、上記計算結果を上記第2のプロセッサに送信することにより、上記第2のプロセッサが上記計算結果にスワップアウト操作を実行する。その後、第1のプロセッサが上記第3の計算ユニットに対応する操作を完了するかどうかを判断し、上記第1のプロセッサが上記第3の計算ユニットに対応する演算を完了すれば、上記第2のプロセッサに指示情報を送信し、上記第2のプロセッサに上記第1の計算ユニットの計算結果に対してスワップイン操作を実行させ、第1のプロセッサが、上記第3の計算ユニットの計算結果と上記スワップイン操作が実行された計算結果に従って、上記第2の計算ユニットに対応する演算を実行する。
【0069】
例示的に、また
図3に示すように、計算ユニットdとスワップイン操作の依存関係を追加した後、深層学習モデルのトレーニング過程では、第1のプロセッサは、計算ユニットb、計算ユニットc、計算ユニットdおよび計算ユニットeに対応する演算を順次実行する。第1のプロセッサが計算ユニットbに対応する演算を実行してtensor bを取得した後、当該tensor bを上記第2のプロセッサに送信することによって、上記第2のプロセッサは、上記計算結果に対してスワップアウト操作を実行し、tensor bを第1のプロセッサのビデオメモリから第2のプロセッサのメモリに移動して、tensor b´を取得する。その後、第1のプロセッサは、tensor bに従って計算ユニットcに対応する演算を実行してtensor cを取得し、さらにtensor cに従って計算ユニットdに対応する演算を実行してtensor dを取得する。第1のプロセッサは、計算ユニットdに対応する演算を完了すると判断した後、第2のプロセッサに指示情報を送信し、当該指示情報は、第2のプロセッサがtensor b´にスワップイン操作を実行するように指示するために使用される。最後に、第1のプロセッサは、tensor dとtensor b´を入力として計算ユニットeに対応する演算を実行する。
【0070】
本実施例では、第3の計算ユニットとスワップ操作の依存関係を増やすことにより、スワップ操作が早すぎる実行によるビデオメモリの占有を避ける。
【0071】
上記実施例では、上記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、さらに上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送されるかどうかを判断し、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送される場合、上記第1の計算ユニットの計算結果が占有している空間を上記ビデオメモリから解放する。
【0072】
例示的に、また
図3に示すように、最適経路が第2の経路であるとき、第1のプロセッサは、tensor bを取得した後、当該tensor bを計算ユニットcに伝送することおよびスワップアウト操作を介して第2のプロセッサのメモリに伝送することが成功すれば、ビデオメモリからtensor bが占有する空間を解放する。
【0073】
本実施例では、計算結果がスワップアウト操作を実行した後、計算結果が占有するビデオメモリを適時に解放し、ビデオメモリが占有されることによってトレーニングが遅くなり、さらにトレーニングできないことを避ける。
【0074】
上記は、本願の実施例で言及された深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の具体的な実現を紹介し、以下は、本願の装置の実施例であり、本願の方法の実施例を実施するために使用されることができる。本願の装置の実施例に開示されていない詳細については、本願の方法の実施例を参照されたい。
【0075】
図4は本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置の概略構造図である。当該装置は、電子機器に集積されることも、電子機器によって実現されることもでき、電子機器は、端末機器またはサーバなどであってもよい。
図4に示すように、本実施例では、当該深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置100は、ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュール11と、第1の経路と第2の経路から最適経路を確定するための処理モジュール12であって、上記第1の経路では、第1の計算ユニットの計算結果が、上記第1の計算ユニットから第2の計算ユニットに直接到達し、上記第2の経路では、上記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、上記第2の計算ユニットに到達し、上記第1の計算ユニットと上記第2の計算ユニットが第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュール12と、上記最適経路を介して、上記第1の計算ユニットの計算結果を上記第2の計算ユニットに伝送するための伝送モジュール13と、を含んでもよい。
【0076】
1つの実行可能な設計では、上記処理モジュール12は、上記第1のプロセッサのビデオメモリの状態情報を確定し、上記状態情報に従って、第1の経路と第2の経路から最適経路を確定するために使用される。
【0077】
1つの実行可能な設計では、上記状態情報は、バッチサイズ、トレーニングサンプルの長さ、上記計算結果が占有する上記ビデオメモリの空間のサイズ、上記ビデオメモリのスワップ速度、上記ビデオメモリの残り空間のサイズの少なくとも1つを含み、そのうち、上記バッチサイズが、上記ビデオメモリにロードされるトレーニングサンプルの数を示すために使用され、上記ビデオメモリのスワップ速度が、単位時間内に上記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用される。
【0078】
1つの実行可能な設計では、上記最適経路が上記第2の経路であり、上記処理モジュール12は、第1の経路と第2の経路から最適経路を確定した後、さらに上記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、上記第3の計算ユニットが、上記少なくとも1つの中間計算ユニットのうち、上記第2の計算ユニットに隣接し、且つ上記第2の計算ユニットの前に位置する計算ユニットである。
【0079】
1つの実行可能な設計では、上記スワップ操作は、スワップアウト操作とスワップイン操作を含み、上記処理モジュール12は、上記第3の計算ユニットと上記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに上記第1の計算ユニットに対応する演算を実行して上記計算結果を取得し、上記計算結果を上記第2のプロセッサに送信して、上記第2のプロセッサに上記計算結果に対して上記スワップアウト操作を実行させ、上記第3の計算ユニットに対応する演算を完了するかどうかを判断し、上記第1のプロセッサが上記第3の計算ユニットに対応する演算を完了すれば、上記第2のプロセッサに指示情報を送信して、上記第2のプロセッサに上記第1の計算ユニットの計算結果に対して上記スワップイン操作を実行させ、上記第3の計算ユニットの計算結果と上記スワップイン操作が実行された計算結果に従って、上記第2の計算ユニットに対応する演算を実行するために使用される。
【0080】
1つの実行可能な設計では、上記処理モジュール12は、第1の経路と第2の経路から最適経路を確定した後、さらに、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送されるかどうかを判断し、上記第1の計算ユニットの計算結果が上記第2のプロセッサのメモリに伝送される場合、上記第1の計算ユニットの計算結果が占有している空間を上記ビデオメモリから解放するために使用される。
【0081】
1つの実行可能な設計では、上記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUである。
【0082】
本願の実施例によって提供される装置は、上記実施例での第1のプロセッサによって実行される方法のために使用されてもよく、その実現原理と技術効果は同様であり、ここでは繰り返して説明しない。
【0083】
本願の実施例に従って、本願は、コンピュータプログラムを提供し、コンピュータプログラムは、可読記憶媒体に記憶され、電子機器の少なくとも1つのプロセッサは、可読記憶媒体からコンピュータプログラムを読み取ることができ、当該コンピュータプログラムがプロセッサで実行されると、本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法が実現される。
【0084】
本願の実施例に従って、本願は、電子機器と可読記憶媒体をさらに提供する。
【0085】
図5は本願の実施例の深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実現するために使用される電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、および他の適切なコンピュータなどさまざまな形式のデジタルコンピュータを表すことを目的としている。電子機器は、パーソナルデジタル処理、セルラー電話、スマートフォン、ウェアラブル機器および他の類似のコンピューティング装置などさまざまな形式のモバイル装置を表してもよい。本明細書に示す部品、それらの接続および関係、およびそれらの機能は、単なる例であり、本明細書で記載および/または要求される本願の実施を制限することを意図しない。
【0086】
図5に示すように、当該電子機器は、1つまたは複数のプロセッサ501、メモリ502、および高速インターフェースと低速インターフェースを含む様々な部品を接続するためのインターフェースを含む。様々な部品は、異なるバスを使用して相互に接続され、共通のマザーボードに取り付けられてもよいし、又は必要に応じて他の形態でインストールされてもよい。プロセッサは、電子機器で実行された命令を処理することができ、上記命令は、GUIのグラフィック情報を外部入力/出力装置(例えばインターフェースに結合された表示機器など)に表示するようにメモリ内またはメモリ上に記憶された命令を含む。他の実施形態では、必要に応じて、複数のプロセッサおよび/または複数のバスを、複数のメモリおよび複数のメモリと共に使用してもよい。同様に、複数の電子機器を接続して、各機器は、いくつかの必要な操作を提供してもよい(例えば、サーバーアレイ、ブレードサーバーのグループ、またはマルチプロセッサシステムとして)。
図5では、プロセッサ501を例に取る。
【0087】
メモリ502は、本願によって提供される非一時的なコンピュータ可読記憶媒体である。そのうち、上記メモリには、少なくとも1つのプロセッサによって実行可能な命令が記憶されることにより、上記少なくとも1つのプロセッサが本願によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実行する。本願の非一時的なコンピュータ可読記憶媒体には、コンピュータ命令が記憶され、当該コンピュータ命令が、本願によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法をコンピュータに実行させるために使用される。
【0088】
メモリ502は、非一時的なコンピュータ可読記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラムおよびモジュール、例えば、本願の実施例における深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法に対応するプログラム命令/モジュール(例えば、
図4に示す受信モジュール11、処理モジュール12および伝送モジュール13)を記憶するために使用できる。プロセッサ501は、メモリ502に記憶される非一時的なソフトウェアプログラム、命令およびモジュールを実行することによって、サーバの様々な機能応用およびデータ処理を実行し、即ち、上記方法の実施例における深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実施する。
【0089】
メモリ502は、プログラム記憶領域およびデータ記憶領域を含んでもよく、そのうち、プログラム記憶領域は、操作システムと少なくとも1つの機能に必要な応用プログラムを記憶してもよく、データ記憶領域には、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法を実行するために、電子機器によって作成されたデータなどを記憶してもよい。なお、メモリ502は、高速ランダムアクセスメモリを含んでもよく、また、少なくとも1つの磁気メモリ、フラッシュメモリ、または他の非一時的な固体メモリなどの非一時的なメモリを含んでもよい。いくつかの実施例では、メモリ502が、選択的に、プロセッサ501に対してリモートに設定されたメモリを含み、これらのリモートメモリが、ネットを介して電子機器に接続されてもよい。上記ネットの例は、インターネット、企業イントラネット、ローカルネット、モバイル通信ネット、およびこれらの組み合わせを含むが、これらに限定されない。
【0090】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法の電子機器は、さらに入力装置503と出力装置504を含んでもよい。プロセッサ501、メモリ502、入力装置503および出力装置504は、バスまたは他の形態で接続されてもよいが、
図5では、バスで接続される例を示す。
【0091】
入力装置503は、入力された数字または文字情報を受信して、深層学習トレーニングタスクに向けたプロセッサビデオメモリの最適化に関連するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、指示棒、1つまたは複数のマウスボタン、トラックボール、操縦棒などの入力装置である。出力装置504は、表示機器、補助照明装置(例えば、LED)および触覚フィードバック装置(例えば、振動モーター)などを含んでもよい。当該表示機器は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイおよびプラズマディスプレイを含んでもよいが、これらに限定されない。いくつかの実施形態では、表示機器はタッチスクリーンであってもよい。
【0092】
本明細書で説明するシステムおよび技術の様々な実施形態は、数字電子回路システム、集積回路システム、特定用途向けASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実施されることができる。これらの様々な実施形態は以下を含んでもよく、1つまたは複数のコンピュータプログラムで実施され、当該1つまたは複数コンピュータプログラムは、少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行および/または解釈されることができ、当該プログラム可能なプロセッサは、専用または汎用プログラム可能なプロセッサであってもよく、記憶システム、少なくとも1つの入力装置および少なくとも1つの出力装置からデータおよび命令を受信し、そしてデータおよび命令を当該記憶システム、当該少なくとも1つの入力装置および当該少なくとも1つの出力装置に送信することができる。
【0093】
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェア応用、またはコードとも呼ばれる)は、プログラム可能なプロセッサの機械命令を含み、高級過程および/またはオブジェクトに向けたプログラミング言語、および/またはアセンブリ/機械言語を用いてこれらの計算プログラムを実施することができる。本明細書で使用されるように、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するための任意のコンピュータプログラム製品、機器、および/または装置(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能な論理装置(PLD))を指し、機械可読信号としての機械命令を受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するための任意の信号を指す。
【0094】
ユーザとの対話を提供するために、ここで説明するシステムおよび技術をコンピュータに実施することができ、当該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)、およびユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)を有する。他のタイプの装置は、さらにユーザとの対話を提供するために使用されてもよく、例えば、ユーザに提供されるフィードバックが、任意の形式の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、任意の形式(音響入力、音声入力、または触覚入力を含む)を使用して、ユーザからの入力を受信してもよい。
【0095】
本明細書で説明するシステムおよび技術は、バックグラウンド部品を含む計算システム(例えば、データサーバとして)、または中間部品を含む計算システム(例えば、応用サーバ)、または前端部品を含む計算システム(例えば、グラフィカルユーザインターフェースまたはインターネットブラウザを備えたユーザコンピュータ、ユーザが、当該グラフィカルユーザインターフェースまたは当該インターネットブラウザを通じて本明細書で説明するシステムおよび技術の実施形態と対話できる)、またはこのようなバックグラウンド部品、中間部品、または前端部品の任意の組合せを含む計算システムに実施されてもよい。任意の形式または媒体の数字データ通信(例えば、通信ネット)を通じて、システムの部品を相互に接続してもよい。通信ネットの例は、ローカルネットワーク(LAN)、広域ネットワーク(WAN)およびインターネットを含む。
【0096】
コンピュータシステムは、クライアントおよびサーバを含んでもよい。通常、クライアントとサーバは、互いに離れており、通信ネットを介して相互作用する。クライアントとサーバ間の関係は、対応するコンピューター上で実行され、互いにクライアント-サーバ関係を持つコンピュータープログラムによって生成される。
【0097】
本願の実施例によって提供される深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法は、第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、上記第1の計算ユニットと上記第2の計算ユニットが上記第1のプロセッサに含まれ、上記第1の計算ユニットと上記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在し、第1のプロセッサが、上記経路を介して上記第2の計算ユニットに上記第1の計算ユニットの計算結果を送信することを含む。
【0098】
本願の実施例の技術的解決手段に従って、第1のプロセッサは、深層学習モデルをトレーニングすることを要求するための要求命令を受信した後、第1の経路と第2の経路から最適経路を確定し、当該第1の経路が、第1の計算ユニットから第2の計算ユニットに直接到達する経路であり、第2の経路が、ビデオメモリのスワップを介して第2の計算ユニットに到達する経路であり、次に、第1のプロセッサは、最適経路を介して第1の計算ユニットの計算結果を第2の計算ユニットに伝送する。当該解決手段を採用して、計算結果を伝送するための最適経路を確定し、最適経路を利用して第1の計算ユニットの計算結果を第2の計算ユニットに伝送することにより、ビデオメモリの占有を回避しながら、ビデオメモリのスワップによるGPUの計算ユニットの利用率が低いという問題を回避するので、ほとんどのタスクのトレーニング速度がほとんど低下しない。なお、真実のトレーニング環境では、ビデオメモリの占有は、トレーニングサンプルの番号に伴い、通常ピークが存在し、通常、少数のサンプルだけがピークの状況に達することができる。本願の実施例で説明された解決手段を採用すると、わずかな状況にのみ動的にswap操作を増加させることにより、ピークビデオメモリの使用需要を満たし、メモリオーバーフローによるトレーニング失敗を回避することができ、ほとんどの非ピークの状況には、swap操作を増加させる必要がなく、ビデオメモリのスワップによるオーバーヘッドを回避し、トレーニング速度を確保する。
【0099】
理解すべきものとして、上記のさまざまな形式のプロセスを使用して、ステップを順序変更、増加、または削除することができる。例えば、本願に記載された各ステップは、本願に開示された技術の解決手段の所望の結果が達成され得る限り、並列、順次、または異なる順序で実行されてもよく、本明細書に限定されない。
【0100】
上記具体的な実施形態は、本願の保護範囲に対する制限を構成しない。当業者は、設計要求および他の要因によって、様々な修正、組み合わせ、サブ組み合わせ、および置換を行うことができることを理解すべきである。本願の精神と原則の範囲内で行われた修正、同等の代替、および改善などは、いずれも本願の保護範囲に含まれるべきである。
【0101】
本願は、2019年10月18日に中国特許庁に提出された、出願番号が2019109963093であり、出願名称が「深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法及び装置」である中国特許出願の優先権を主張し、その内容全体が本願に援用される。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法であって、
第1のプロセッサが、ユーザから入力された、深層学習モデルをトレーニングすることを要求するために使用される要求命令を受信することと、
前記第1のプロセッサが、第1の経路と第2の経路とから最適経路を確定し、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在することと、
前記第1のプロセッサが、前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送することと、を含む
、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項2】
前記第1のプロセッサが第1の経路と第2の経路とから最適経路を確定することは、
前記第1のプロセッサが、前記第1のプロセッサのビデオメモリの状態情報を確定することと、
前記第1のプロセッサが、前記状態情報に従って第1の経路と第2の経路とから最適経路を確定することと、を含
む、請求項1に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項3】
前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、
前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用され
る、請求項2に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項4】
前記最適経路が前記第2の経路であり、前記第1のプロセッサが第1の経路と第2の経路から最適経路を確定した後、前記方法はさらに、
前記第1のプロセッサが、前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、前記第2の計算ユニットの前に位置する計算ユニットであることと、
前記第1のプロセッサが、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加することと、を含
む、請求項1~3のいずれか1項に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項5】
前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記第1のプロセッサが前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、前記方法はさらに、
前記第1のプロセッサが、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得することと、
前記第1のプロセッサが、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させることと、
前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させることと、
前記第1のプロセッサが、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行することと、を含
む、請求項4に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項6】
前記第1のプロセッサが第1の経路と第2の経路とから最適経路を確定した後、前記方法はさらに、
前記第1のプロセッサは、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断することと、
前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放することと、を含
む、請求項4または5に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項7】
前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUであ
る、請求項1~3のいずれか1項に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項8】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置であって、
ユーザから入力された、深層学習モデルのトレーニングを要求するための要求命令を受信するための受信モジュールと、
第1の経路と第2の経路とから最適経路を確定するための処理モジュールであって、前記第1の経路では、第1の計算ユニットの計算結果が、前記第1の計算ユニットから第2の計算ユニットに直接到達し、前記第2の経路では、前記第1の計算ユニットの計算結果が、第2のプロセッサのメモリでスワップ操作が実行された後、前記第2の計算ユニットに到達し、前記第1の計算ユニットと前記第2の計算ユニットが第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在する処理モジュールと、
前記最適経路を介して、前記第1の計算ユニットの計算結果を前記第2の計算ユニットに伝送するための伝送モジュールと、を含む
、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項9】
前記処理モジュールは、前記第1のプロセッサのビデオメモリの状態情報を確定し、前記状態情報に従って、第1の経路と第2の経路とから最適経路を確定するために使用され
る、請求項8に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項10】
前記状態情報は、バッチサイズ、トレーニングサンプルの長さ、前記計算結果が占有する前記ビデオメモリの空間のサイズ、前記ビデオメモリのスワップ速度、前記ビデオメモリの残り空間のサイズの少なくとも1つを含み、
前記バッチサイズが、前記ビデオメモリにロードされるトレーニングサンプルのサイズを示すために使用され、前記ビデオメモリのスワップ速度が、単位時間内に前記ビデオメモリから第2のプロセッサのメモリに到達するデータの量を示すために使用され
る、請求項9に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項11】
前記最適経路が前記第2の経路であり、前記処理ユニットは、第1の経路と第2の経路とから最適経路を確定した後、さらに前記少なくとも1つの中間計算ユニットから第3の計算ユニットを確定し、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加するために使用され、前記第3の計算ユニットが、前記少なくとも1つの中間計算ユニットのうち、前記第2の計算ユニットに隣接し、且つ前記第2の計算ユニットの前に位置する計算ユニットであ
る、請求項8~10のいずれか1項に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項12】
前記スワップ操作は、スワップアウト操作とスワップイン操作を含み、前記処理ユニットは、前記第3の計算ユニットと前記第2のプロセッサとのスワップ操作の依存関係を追加した後、さらに、前記第1の計算ユニットに対応する演算を実行して前記計算結果を取得し、前記計算結果を前記第2のプロセッサに送信して、前記第2のプロセッサに前記計算結果に対して前記スワップアウト操作を実行させ、前記第3の計算ユニットに対応する演算を完了するかどうかを判断し、前記第1のプロセッサが前記第3の計算ユニットに対応する演算を完了すると、前記第2のプロセッサに指示情報を送信して、前記第2のプロセッサに前記第1の計算ユニットの計算結果に対して前記スワップイン操作を実行させ、前記第3の計算ユニットの計算結果と前記スワップイン操作が実行された計算結果に従って、前記第2の計算ユニットに対応する演算を実行するために使用され
る、請求項11に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項13】
前記処理モジュールは、第1の経路と第2の経路とから最適経路を確定した後、さらに、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送されるかどうかを判断し、前記第1の計算ユニットの計算結果が前記第2のプロセッサのメモリに伝送される場合、前記第1の計算ユニットの計算結果が占有している空間を前記ビデオメモリから解放するために使用され
る、請求項11または12に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項14】
前記第1のプロセッサは、テンソルプロセッサTPUまたはグラフィックプロセッサGPUであ
る、請求項8~10のいずれか1項に記載の
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための装置。
【請求項15】
少なくとも1つのプロセッサ、および
前記少なくとも1つのプロセッサと通信接続されるメモリを含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行できる命令が記憶され、前記命令が、前記少なくとも1つのプロセッサによって実行されることにより、前記少なくとも1つのプロセッサに、請求項1~7のいずれか1項に記載の方法を実行させ
る、電子機器。
【請求項16】
コンピュータ命令を記憶する非一時的なコンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに請求項1~7のいずれか1項に記載の方法を実行させるために使用され
る、コンピュータ可読記憶媒体。
【請求項17】
深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法であって、
第1のプロセッサが、第1の計算ユニットの計算結果を第2の計算ユニットに伝送するための経路を確定し、前記第1の計算ユニットと前記第2の計算ユニットとが前記第1のプロセッサに含まれ、前記第1の計算ユニットと前記第2の計算ユニットとの間に少なくとも1つの中間計算ユニットが存在することと、
前記第1のプロセッサが、前記経路を介して前記第2の計算ユニットに前記第1の計算ユニットの計算結果を送信することと、を含む
、深層学習トレーニングタスクに向けたプロセッサビデオメモリを最適化するための方法。
【請求項18】
コンピュータプログラムであって、前記コンピュータプログラムが電子機器で実行されると、請求項1~7のいずれか1項に記載の方法が実現されるコンピュータプログラム。
【国際調査報告】