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

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

▶ ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッドの特許一覧

特開2024-175077モデル演算子の処理方法、装置、電子デバイス及び記憶媒体
<>
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図1
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図2
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図3
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図4
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図5
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図6
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図7
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図8
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図9
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図10
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図11
  • 特開-モデル演算子の処理方法、装置、電子デバイス及び記憶媒体 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024175077
(43)【公開日】2024-12-17
(54)【発明の名称】モデル演算子の処理方法、装置、電子デバイス及び記憶媒体
(51)【国際特許分類】
   G06N 3/0499 20230101AFI20241210BHJP
【FI】
G06N3/0499
【審査請求】有
【請求項の数】33
【出願形態】OL
【公開請求】
(21)【出願番号】P 2024161279
(22)【出願日】2024-09-18
(31)【優先権主張番号】202311345985.7
(32)【優先日】2023-10-17
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】沈亮
(72)【発明者】
【氏名】曾▲錦▼▲楽▼
(72)【発明者】
【氏名】▲ハオ▼宏翔
(72)【発明者】
【氏名】▲コン▼▲偉▼宝
(72)【発明者】
【氏名】于佃海
(72)【発明者】
【氏名】王海峰
(57)【要約】      (修正有)
【課題】各演算子の再計算評価パラメータを計算することにより演算子の精密化制御を実現し、再計算評価パラメータに基づいて再計算に関与する必要がある第1の演算子を決定し、かつ、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現し、効率的なビデオメモリによる性能の向上を実現し、さらにモデルの計算性能を向上させるモデル演算子の処理方法、装置、電子デバイス及び記憶媒体を提供する。
【解決手段】方法は、数の演算子が含まれるモデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、演算子の出力テンソルが占有するメモリ量と演算子の順方向計算時にかかる計算時間とを決定し、演算子のメモリ量と計算時間とに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
モデル演算子の処理方法であって、
モデルネットワーキングの演算子集合を決定するステップであって、前記演算子集合に複数の演算子が含まれるステップと、
前記演算子集合における各演算子に対して、前記演算子の出力テンソルが占有するメモリ量と前記演算子の順方向計算時にかかる計算時間とを決定するステップと、
前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定するステップと、を含む、
モデル演算子の処理方法。
【請求項2】
前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定するステップは、
前記メモリ量と前記計算時間とに基づいて、前記演算子の再計算評価パラメータを決定するステップと、
前記演算子の再計算評価パラメータに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定するステップと、を含む、
請求項1に記載のモデル演算子の処理方法。
【請求項3】
前記メモリ量と前記計算時間とに基づいて、前記演算子の再計算評価パラメータを決定するステップは、
前記メモリ量と前記計算時間との比を取得し、前記比を前記再計算評価パラメータとして決定するステップを含む、
請求項2に記載のモデル演算子の処理方法。
【請求項4】
前記演算子の再計算評価パラメータが大きいほど、前記演算子が再計算に関与する可能性が大きくなる、
請求項2に記載のモデル演算子の処理方法。
【請求項5】
前記演算子の再計算評価パラメータに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定するステップは、
前記再計算評価パラメータに基づいて、前記演算子集合における演算子をソートし、ソート結果に基づいて前記演算子集合の中から、前記第1の演算子を選択するステップを含む、
請求項2~4のいずれかに記載のモデル演算子の処理方法。
【請求項6】
前記演算子の再計算評価パラメータに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定するステップは、
前記演算子集合における演算子の前記再計算評価パラメータと設定された閾値とを比較するステップと、
前記再計算評価パラメータが前記設定された閾値以上である演算子を選択して前記第1の演算子とするステップと、を含む、
請求項2~4のいずれかに記載のモデル演算子の処理方法。
【請求項7】
前記モデルネットワーキングの演算子集合を決定するステップは、
前記モデルネットワーキング時に必要な候補演算子を決定するステップと、
前記候補演算子の中から目標クラスの演算子を決定し、前記目標クラスの演算子に対してマージング処理を行って、前記演算子集合を取得するステップと、を含む、
請求項1~4のいずれかに記載のモデル演算子の処理方法。
【請求項8】
前記目標クラスの演算子に対してマージング処理を行って、前記演算子集合を取得するステップは、
前記目標クラスの演算子に属する任意の候補演算子に対して、前記任意の候補演算子に隣接する前の候補演算子を決定し、前記任意の候補演算子と前記前の候補演算子とを組み合わせて、マージングされた演算子を取得するステップと、
前記マージングされた演算子と残りの候補演算子とに基づいて、前記演算子集合を取得するステップと、を含む、
請求項7に記載のモデル演算子の処理方法。
【請求項9】
前記候補演算子の中から目標クラスの演算子を決定することは、
逆方向計算中に順方向入力と順方向出力を必要とされない候補演算子を決定して、前記目標クラスの演算子とすることを含む、
請求項7に記載のモデル演算子の処理方法。
【請求項10】
前記方法は、
前記マージングされた演算子に含まれる各候補演算子の出力テンソルのメモリ量と前記計算時間とに基づいて、前記マージングされた演算子の再計算評価パラメータを決定するステップをさらに含む、
請求項8に記載のモデル演算子の処理方法。
【請求項11】
前記演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定するステップの後に、
前記演算子集合の演算子の順方向論理順序に従って前記モデルの順方向計算を実行し、前記第1の演算子の中間結果をリリースするステップと、
前記演算子集合における前記第1の演算子以外の第2の演算子の順方向計算の中間結果をビデオメモリに記憶し、前記第2の演算子の中間結果に基づいて前記第2の演算子に対する後続の再計算をスキップするステップと、をさらに含む、
請求項1~4のいずれかに記載のモデル演算子の処理方法。
【請求項12】
前記第2の演算子の中間結果に基づいて前記第2の演算子に対する後続の再計算をスキップするステップは、
前記演算子集合の演算子の順方向計算の第1の論理順序に従って順方向計算を再度実行するステップと、
前記第1の演算子の順方向入力に基づいて、前記第1の演算子に対して順方向再計算を行って、前記第1の演算子の順方向計算の中間結果を取得するステップと、
順方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取るステップと、
前記第1の演算子の中間結果と前記第2の演算子の中間結果とに基づいて、前記モデルの逆方向計算を実行するステップと、を含む、
請求項11に記載のモデル演算子の処理方法。
【請求項13】
前記第1の演算子の中間結果と前記第2の演算子の中間結果とに基づいて、前記モデルの逆方向計算を実行するステップは、
前記演算子集合の演算子の逆方向計算の第2の論理順序に従って逆方向計算を実行するステップと、
前記第1の演算子に対して、前記第1の演算子の中間結果と前記第1の演算子の逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第1の演算子を逆方向計算して、前記第1の演算子の逆方向出力を取得して次の演算子に入力するステップと、
逆方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取り、前記第2の演算子の中間結果と逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第2の演算子の逆方向出力を決定し、前記第2の演算子の逆方向出力を前記第2の演算子の次の演算子に入力するステップと、を含む、
請求項12に記載のモデル演算子の処理方法。
【請求項14】
前記方法は、
前記ビデオメモリに前記モデルの最初回の順方向計算時の最初の演算子の順方向入力を記憶するステップと、
前記モデルに対して順方向計算を再度実行する場合に前記ビデオメモリから前記最初の演算子の入力を読み取って、前記最初の演算子に入力して再計算するステップと、をさらに含む、
請求項12に記載のモデル演算子の処理方法。
【請求項15】
前記再計算評価パラメータに基づいて、前記演算子集合における演算子をソートし、ソート結果に基づいて前記演算子集合の中から、前記第1の演算子を選択するステップは、
前記演算子集合における演算子に対して、前記再計算評価パラメータの大きい順にソートし、最初のN個の演算子を選択して、前記第1の演算子とするステップ、または、
前記演算子集合における演算子に対して、前記再計算評価パラメータの小さい順にソートし、最後のN個の演算子を選択して、前記第1の演算子とするステップ、を含み、
前記Nは1以上の自然数である、
請求項5に記載のモデル演算子の処理方法。
【請求項16】
モデル演算子の処理装置であって、
モデルネットワーキングの演算子集合を決定するための第1の決定モジュールであって、前記演算子集合に複数の演算子が含まれる第1の決定モジュールと、
前記演算子集合における各演算子に対して、前記演算子の出力テンソルが占有するメモリ量と前記演算子の順方向計算時にかかる計算時間とを決定するための第2の決定モジュールと、
前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定するための第3の決定モジュールと、を含む、
モデル演算子の処理装置。
【請求項17】
前記第3の決定モジュールがさらに、
前記メモリ量と前記計算時間とに基づいて、前記演算子の再計算評価パラメータを決定し、
前記演算子の再計算評価パラメータに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定する、
請求項16に記載のモデル演算子の処理装置。
【請求項18】
前記第3の決定モジュールがさらに、
前記メモリ量と前記計算時間との比を取得し、前記比を前記再計算評価パラメータとして決定する、
請求項17に記載のモデル演算子の処理装置。
【請求項19】
前記演算子の再計算評価パラメータが大きいほど、前記演算子が再計算に関与する可能性が大きくなる、
請求項17に記載のモデル演算子の処理装置。
【請求項20】
前記第3の決定モジュールがさらに、
前記再計算評価パラメータに基づいて、前記演算子集合における演算子をソートし、ソート結果に基づいて前記演算子集合の中から、前記第1の演算子を選択する、
請求項17~19のいずれかに記載のモデル演算子の処理装置。
【請求項21】
前記第3の決定モジュールがさらに、
前記演算子集合における演算子の前記再計算評価パラメータと設定された閾値とを比較し、
前記再計算評価パラメータが前記設定された閾値以上である演算子を選択して前記第1の演算子とする、
請求項17~19のいずれかに記載のモデル演算子の処理装置。
【請求項22】
前記第1の決定モジュールがさらに、
前記モデルネットワーキング時に必要な候補演算子を決定し、
前記候補演算子の中から目標クラスの演算子を決定し、前記目標クラスの演算子に対してマージング処理を行って、前記演算子集合を取得する、
請求項16~19のいずれかに記載のモデル演算子の処理装置。
【請求項23】
前記第1の決定モジュールがさらに、
前記目標クラスの演算子に属する任意の候補演算子に対して、前記任意の候補演算子に隣接する前の候補演算子を決定し、前記任意の候補演算子と前記前の候補演算子とを組み合わせて、マージングされた演算子を取得し、
前記マージングされた演算子と残りの候補演算子とに基づいて、前記演算子集合を取得する、
請求項22に記載のモデル演算子の処理装置。
【請求項24】
前記第1の決定モジュールがさらに、
逆方向計算中に順方向入力と順方向出力を必要とされない候補演算子を決定して、前記目標クラスの演算子とする、
請求項22に記載のモデル演算子の処理装置。
【請求項25】
前記第3の決定モジュールがさらに、
前記マージングされた演算子に含まれる各候補演算子の出力テンソルのメモリ量と前記計算時間とに基づいて、前記マージングされた演算子の再計算評価パラメータを決定する、
請求項23に記載のモデル演算子の処理装置。
【請求項26】
前記第3の決定モジュールがさらに、
前記演算子集合の演算子の順方向論理順序に従って前記モデルの順方向計算を実行し、前記第1の演算子の中間結果をリリースし、
前記演算子集合における前記第1の演算子以外の第2の演算子の順方向計算の中間結果をビデオメモリに記憶し、前記第2の演算子の中間結果に基づいて前記第2の演算子に対する後続の再計算をスキップする、
請求項16~19のいずれかに記載のモデル演算子の処理装置。
【請求項27】
前記第3の決定モジュールがさらに、
前記演算子集合の演算子の順方向計算の第1の論理順序に従って順方向計算を再度実行し、
前記第1の演算子の順方向入力に基づいて、前記第1の演算子に対して順方向再計算を行って、前記第1の演算子の順方向計算の中間結果を取得し、
順方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取り、
前記第1の演算子の中間結果と前記第2の演算子の中間結果とに基づいて、前記モデルの逆方向計算を実行する、
請求項26に記載のモデル演算子の処理装置。
【請求項28】
前記第3の決定モジュールがさらに、
前記演算子集合の演算子の逆方向計算の第2の論理順序に従って逆方向計算を実行し、
前記第1の演算子に対して、前記第1の演算子の中間結果と前記第1の演算子の逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第1の演算子を逆方向計算して、前記第1の演算子の逆方向出力を取得して次の演算子に入力し、
逆方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取り、前記第2の演算子の中間結果と逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第2の演算子の逆方向出力を決定し、前記第2の演算子の逆方向出力を前記第2の演算子の次の演算子に入力する、
請求項27に記載のモデル演算子の処理装置。
【請求項29】
前記装置は、さらに、
前記ビデオメモリに前記モデルの最初回の順方向計算時の最初の演算子の順方向入力を記憶し、
前記モデルに対して順方向計算を再度実行する場合に前記ビデオメモリから前記最初の演算子の入力を読み取って、前記最初の演算子に入力して再計算する、
請求項27に記載のモデル演算子の処理装置。
【請求項30】
前記第3の決定モジュールがさらに、
前記演算子集合における演算子に対して、前記再計算評価パラメータの大きい順にソートし、最初のN個の演算子を選択して、前記第1の演算子とするか、
または、
前記演算子集合における演算子に対して、前記再計算評価パラメータの小さい順にソートし、最後のNの演算子を選択して、前記第1の演算子とし、
前記Nは1以上の自然数である、
請求項20に記載のモデル演算子の処理装置。
【請求項31】
電子デバイスであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが請求項1~4のいずれかに記載の方法を実行できるように、前記少なくとも1つのプロセッサによって実行される、
電子デバイス。
【請求項32】
コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータ命令は、コンピュータに請求項1~4のいずれかに記載の方法を実行させる、
非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項33】
コンピュータプログラムであって、
当該コンピュータプログラムがプロセッサによって実行される場合、請求項1~4のいずれかに記載の方法が実現される、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は深層学習技術の分野に関し、特にモデル演算子の処理方法、装置、電子デバイス及び記憶媒体に関する。
【背景技術】
【0002】
深層学習の分野では、再計算は大型モデルトレーニングを実現する技術的経路の1つである。既存の再計算プロセスでは、演算子を一括して再計算するため、再計算の実行効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示はモデル演算子の処理のための方法、装置、電子デバイス及び記憶媒体を提供する。
【課題を解決するための手段】
【0004】
本開示の一態様によれば、モデル演算子の処理方法を提供し、モデルネットワーキングの演算子集合を決定するステップであって、前記演算子集合に複数の演算子が含まれるステップと、前記演算子集合における各演算子に対して、前記演算子の出力テンソルが占有するメモリ量と前記演算子の順方向計算時にかかる計算時間とを決定するステップと、前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定するステップと、を含む。
【0005】
本開示の別の態様によれば、モデル演算子の処理装置を提供し、前記装置は、モデルネットワーキングの演算子集合を決定するための第1の決定モジュールであって、前記演算子集合に複数の演算子が含まれる第1の決定モジュールと、前記演算子集合における各演算子に対して、前記演算子の出力テンソルが占有するメモリ量と前記演算子の順方向計算時にかかる計算時間とを決定するための第2の決定モジュールと、前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定するための第3の決定モジュールと、を含む。
【0006】
本開示の別の態様によれば、電子デバイスを提供し、前記電子デバイスは、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが上記の一態様の実施例に記載のモデル演算子の処理方法を実行できるように、前記少なくとも1つのプロセッサによって実行される。
【0007】
本出願の別の様態によれば、コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体を提供し、それにコンピュータプログラム/命令が記憶され、前記コンピュータ命令は、前記コンピュータに上記一様態の実施例に記載のモデル演算子の処理方法を実行させる。
【0008】
本開示の別の様態によれば、コンピュータプログラムを提供し、前記コンピュータプログラムはプロセッサによって実行される場合、上記の一態様の実施例に記載のモデル演算子の処理方法を実現する。
【0009】
なお、この部分に記載されている内容は、本開示の実施例の肝心または重要な特徴を特定することを意図しておらず、本開示の範囲を限定することも意図していないことを理解されたい。本開示の他の特徴は、以下の説明を通して容易に理解される。
【図面の簡単な説明】
【0010】
図面は、本技術案をよりよく理解するために使用され、本開示を限定するものではない。
図1】本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
図2】本開示の実施例によって提供される別のモデル演算子の処理方法の概略フローチャートである。
図3】本開示の実施例によって提供される別のモデル演算子の処理方法の概略フローチャートである。
図4】本開示の実施例によって提供される別のモデル演算子の処理方法の概略フローチャートである。
図5】本開示の実施例によって提供される演算子に対してマージングを行う概略図である。
図6】本開示の実施例によって提供される別のモデル演算子の処理方法の概略フローチャートである。
図7】本開示の実施例によって提供される演算子を順方向計算する概略図である。
図8】本開示の実施例によって提供される演算子を再計算する概略図である。
図9】本開示の実施例によって提供される混合並列モデルのネットワーキングの概略図である。
図10】本開示の実施例によって提供される別のモデル演算子の処理方法の概略フローチャートである。
図11】本開示の実施例によって提供されるモデル演算子の処理装置の概略構成図である。
図12】本開示の実施例のモデル演算子の処理方法を実現するための電子デバイスのブロック図である。
【発明を実施するための形態】
【0011】
以下、図面を組み合わせて本開示の例示的な実施例を説明し、理解を容易にするためにその中には本開示の実施例の様々な詳細事項が含まれており、それらは単なる例示的なものと見なすべきである。したがって、当業者は、本開示の範囲及び精神から逸脱しない限り、ここで説明される実施例に対して様々な変更と修正を行うことができることを認識されたい。同様に、わかりやすくかつ簡潔にするために、以下の説明では、周知の機能及び構造の説明を略称される。
【0012】
以下図面を参照しながら、本開示の実施例のモデル演算子の処理方法、装置及び電子デバイスを説明する。
【0013】
人工知能(Artificial Intelligence,AIと略称される)は、コンピュータに人間のある思惟過程と知能行為(学習、推理、思考、計画など)をシミュレートさせることを研究する学科であり、ハードウェアレベルの技術とソフトウェアレベルの技術ともある。人工知能ハードウェア技術は一般的にコンピュータ視覚技術、音声認識技術、自然言語処理技術及びその学習/深層学習、ビッグデータ処理技術、ナレッジグラフ技術などのいくつかの方面を含む。
【0014】
自然言語処理(Natural Language Processing、NLP)は、コンピュータ科学の分野と人工知能の分野における重要な方向である。人とコンピュータの間で自然言語で効果的に通信することを実現できるさまざまな理論と方法を研究する。自然言語処理は言語学、コンピュータ科学、数学を一体化した科学である。自然言語処理は主に機械翻訳、民情モニタリング、自動要約、観点抽出、テキスト分類、問題回答、テキスト意味対比、音声認識などの面に適用されている。
【0015】
深層学習(Deep Learning、DLと略称される)は、機械学習(Machine Learning、MLと略称される)分野における新しい研究方向であり、機械学習を最初の目標--人工知能に近づけるように導入されている。深層学習はサンプルデータの内的な規則と表示レベルを学習するものであり、これらの学習過程で取得された情報は文字、画像、及び音声などのデータの解釈に大きいに役立つ。その最終的な目標は、機械が人間のように分析学習能力を持ち、文字、画像、及び音声などのデータを認識できるようにすることである。深層学習は複雑な機械学習アルゴリズムであり、音声と画像認識面で収められる効果は以前の関連技術をはるかに超える。
【0016】
機械翻訳(machine translation)は、自動翻訳とも呼ばれ、コンピュータを利用して自然言語(ソース言語)を別の自然言語(ターゲット言語)に変換するプロセスである。それは計算言語学の分岐であり、人工知能の目標の一つである。
【0017】
図1は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0018】
図1に示すように、このモデル演算子の処理方法は以下のステップS101~S103を含むことができる。
【0019】
S101において、モデルネットワーキングの演算子集合を決定し、演算子集合に複数の演算子が含まれる。
【0020】
なお、本開示の実施例に係るモデル演算子の処理方法の実行主体は、データ処理能力を有するハードウェアデバイスおよび/または当該ハードウェアデバイスの動作を駆動するために必要なソフトウェアであってもよい。選択的に、実行主体は、サーバ、ユーザ端末、および他のスマートデバイスを含むことができる。選択的に、ユーザ端末は、携帯電話、パソコン、インテリジェント音声対話デバイスなどを含むが、これらに限定されない。選択的に、サーバは、ネットワークサーバ、アプリケーションサーバ、分散システムのサーバ、またはブロックチェーンと組み合わせたサーバなどを含むが、これらに限定されない。本開示の実施例はこれを具体的に限定しない。
【0021】
いくつかの実現では、モデルネットワーキングのアプリケーションシナリオ、構造などの情報に基づいて、モデルネットワーキングの演算子集合を決定することができる。異なるアプリケーションシナリオ及び構造は、異なる演算子集合に対応する。選択的に、モデルネットワーキングは図像処理、目標検出、音声認識、テキスト生成などのシナリオに適用される。選択的に、モデルネットワーキングの構造は混合並列+Transformer構造であってもよい。
【0022】
選択的に、混合並列はデータ並列とTransformer、モデル並列とTransformer、パイプライン並列とTransformer、モデルとパイプライン並列を含むことができるが、これらに限定されない。
【0023】
いくつかの実現では、演算子の性能と組み合わせて、モデルネットワーキングの演算子集合を決定することもできる。例えば、畳み込み演算子が図像処理のために使用される場合、画像処理シナリオでのモデルネットワーキングの演算子集合には複数の畳み込み演算子が含まれる。
【0024】
例示的な説明では、Transformerネットワーキングを例として、その演算子集合にはFA、Matmul、ReduceScatter及びAllgatherなどの演算子が含まれる。
【0025】
S102において、演算子集合における各演算子に対して、演算子の出力テンソルが占有するメモリ量と演算子の順方向計算時にかかる計算時間とを決定する。
【0026】
なお、深層学習フレームワークでは、演算子の入力と出力は通常テンソル(Tensor)の形式で表され、演算子の入力と出力テンソルはデータの形状とコンテンツを示す。ここで、テンソルは多次元配列であり、スカラー、ベクトル及び行列の拡張と見なすことができ、高次元行列として理解できる。
【0027】
いくつかの実現では、演算子入力のパラメータに基づいて、演算子の出力テンソルが占有するメモリ量を決定することができる。選択的に、バッチサイズ(batch_size、B)、シーケンスの長さ(sequence_len、S)、隠れ状態の次元(hidden_size、H)、モデル並列度mp_degree(M)、ヘッド数(num_head、A)、及びフィードフォワードニューラルネットワークの隠れ層の次元(ffn_hidden_size、H’)などのパラメータに基づいて、演算子の出力テンソルが占有するメモリ量を計算することができる。
【0028】
いくつかの実現では、演算子の順方向計算の過程の分析により、演算子の順方向計算時にかかる計算時間を決定することができる。演算子の順方向計算の過程を監視して、演算子の順方向計算の開始から終了までの時間を取得して、演算子の順方向計算時にかかる計算時間とすることもできる。
【0029】
S103において、演算子のメモリ量と計算時間とに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0030】
なお、演算子のメモリ量と計算時間は、演算子が再計算に関与するコストパフォーマンスを反映することができる。演算子のメモリ量が大きくかつ計算時間が小さいほど、演算子が再計算に関与するコストパフォーマンスが高くなることを示し、演算子のメモリ量が小さくかつ計算時間が大きいほど、演算子が再計算に関与するコストパフォーマンスが低くなることを示す。
【0031】
いくつかの実現では、演算子集合における演算子を再計算及びフィルタリングして、演算子のビデオメモリ使用効率を向上させ、計算性能を向上させることができる。選択的に、演算子の出力テンソルのストレージサイズとこの演算子の順方向計算の計算時間との比を計算し、この比に基づいて演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定することができる。
【0032】
選択的に、メモリ量と計算時間との比に基づいて、演算子集合の中から、再計算に関与するコストパフォーマンスが高い演算子を決定して、第1の演算子とすることができる。
【0033】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、演算子の出力テンソルが占有するメモリ量と演算子の順方向計算時にかかる計算時間とを取得し、さらに再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。
【0034】
図2は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0035】
図2に示すように、このモデル演算子の処理方法は以下のステップS201~S203を含むことができる。
【0036】
S201において、モデルネットワーキングの演算子集合を決定し、演算子集合に複数の演算子が含まれる。
【0037】
ステップS201に関する内容は上記の実施例を参照することができ、ここでは説明を省略する。
【0038】
S202において、演算子集合における各演算子に対して、演算子の再計算評価パラメータを決定する。
【0039】
なお、演算子の再計算評価パラメータは演算子の単位時間当たりの再計算によって節約されるビデオメモリサイズを表すことができ、演算子のビデオメモリによる性能の向上の効率を記述するために使用される。演算子の再計算評価パラメータが大きいほど、演算子が再計算を必要とされることを表す。
【0040】
いくつかの実現では、演算子の再計算評価パラメータに基づいて、演算子集合における演算子を再計算及びフィルタリングすることにより、演算子のビデオメモリ使用効率を向上させ、計算性能を向上させることができる。選択的に、各演算子の計算とビデオメモリ効率を分析することにより、演算子の再計算評価パラメータを決定することができる。
【0041】
いくつかの実現では、演算子の出力テンソルのストレージサイズとこの演算子の順方向計算の計算時間との比を計算することにより、比を再計算評価パラメータとして決定することができる。
【0042】
S203において、再計算評価パラメータに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0043】
いくつかの実現では、演算子集合に対して、再計算評価パラメータに基づいて演算子集合における各演算子をソートし、ソート結果に基づいてモデルにおける再計算に関与する第1の演算子を決定することができる。また、設定された閾値に基づいて、再計算評価パラメータの大きさと設定された閾値の大きさとを比較することにより、第1の演算子を決定することができる。
【0044】
選択的に、再計算評価パラメータを大きい順にソートすると、ソートが前にある演算子を第1の演算子として決定することができる。例えば、演算子集合における各演算子を再計算評価パラメータの大きい順にソートすると、ソート結果の前にある3つの演算子を第1の演算子として決定することができる。
【0045】
選択的に、再計算評価パラメータを小さい順にソートすると、ソートが後にある演算子を第1の演算子として決定することができる。例えば、演算子集合における各演算子を再計算評価パラメータの小さい順にソートすると、ソート結果の後にある3つの演算子を第1の演算子として決定することができる。
【0046】
選択的に、再計算評価パラメータの大きさと設定された閾値の大きさとを比較することにより、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定し、第1の演算子は再計算評価パラメータが設定された閾値以上である演算子である。
【0047】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、その再計算評価パラメータを計算することにより、さらに再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。
【0048】
図3は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0049】
図3に示すように、このモデル演算子の処理方法は以下のステップS301~S305を含むことができる。
【0050】
S301において、モデルネットワーキングの演算子集合を決定し、演算子集合に複数の演算子が含まれる。
【0051】
ステップS301に関する内容は上記の実施例を参照することができ、ここでは説明を省略する。
【0052】
S302において、演算子の出力テンソルが占有するメモリ量を決定する。
【0053】
なお、深層学習フレームワークでは、演算子の入力と出力は通常テンソル(Tensor)の形式で表され、演算子の入力と出力テンソルはデータの形状とコンテンツを示す。ここで、テンソルは多次元配列であり、スカラー、ベクトル及び行列の拡張と見なすことができ、高次元行列として理解できる。
【0054】
いくつかの実現では、演算子入力のパラメータに基づいて、演算子の出力テンソルが占有するメモリ量を決定することができる。選択的に、バッチサイズ(batch_size、B)、シーケンスの長さ(sequence_len、S)、隠れ状態の次元(hidden_size、H)、モデル並列度mp_degree(M)、ヘッド数(num_head、A)、及びフィードフォワードニューラルネットワークの隠れ層の次元(ffn_hidden_size 、H’)などのパラメータに基づいて、演算子の出力テンソルが占有するメモリ量を計算することができる。
【0055】
S303において、演算子の順方向計算時にかかる計算時間を決定する。
【0056】
いくつかの実現では、演算子の順方向計算の過程の分析により、演算子の順方向計算時にかかる計算時間を決定することができる。演算子の順方向計算の過程を監視して、演算子の順方向計算の開始から終了までの時間を取得して、演算子の順方向計算時にかかる計算時間とすることもできる。
【0057】
S304において、メモリ量と計算時間とに基づいて、演算子の再計算評価パラメータを決定する。
【0058】
いくつかの実現では、演算子の出力テンソルが占有するメモリ量と順方向計算時にかかる計算時間との比を取得し、比を演算子の再計算評価パラメータとして決定する。選択的に、再計算評価パラメータを計算する式は以下の通りである:
【数1】
【0059】
ηは演算子の再計算評価パラメータを表し、Memは演算子の出力テンソルが占有するメモリ量を表し、Timeは演算子の順方向計算時にかかる計算時間を表す。
【0060】
いくつかの実現では、再計算評価パラメータは単位時間当たりの再計算によって節約されるビデオメモリサイズを表し、すなわち、演算子の再計算評価パラメータが大きいほど、演算子が再計算に関与する可能性が大きくなる。
【0061】
例示的な説明では、Layernormのような演算子に対して、計算が速く、ビデオメモリが大きい、すなわち計算時間が短く、メモリ量が大きいため、対応する再計算評価パラメータが大きいため、Layernormの再計算が必要である。MatMul演算子にとって、計算量が多く、計算時間が長く、再計算効率が低いため、MatMulが再計算に関与する可能性が低い。
【0062】
いくつかの実現では、演算子の出力テンソルが占有するメモリ量と順方向計算時にかかる計算時間に対して、オフライン分析と計算を行うことができる。メモリ量と計算時間に対してオフライン分析と計算を行って、演算子の再計算評価パラメータを取得する。
【0063】
S305において、再計算評価パラメータに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0064】
いくつかの実現では、再計算評価パラメータに基づいて、演算子集合における演算子をソートし、ソート結果に基づいて演算子集合の中から、第1の演算子を選択することができる。再計算中に、再計算コストパフォーマンスが高い演算子を使用することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現することができる。
【0065】
選択的に、演算子集合における演算子に対して、再計算評価パラメータの大きい順にソートし、最初のN個の演算子を選択して、第1の演算子とする。選択的に、演算子集合における演算子に対して、再計算評価パラメータの小さい順にソートし、最後のN個の演算子を選択して、第1の演算子とする。Nは1以上の自然数である。
【0066】
例えば、Nが5に等しく、大きい順にソートされた最初の5つの演算子を選択して、第1の演算子とすることができる。小さい順にソートされた最後の5つの演算子を選択して、第1の演算子とすることもできる。
【0067】
いくつかの実現では、再計算評価パラメータの設定された閾値を設定することにより、設定された閾値に基づいて、演算子集合の中から第1の演算子を選択することもできる。再計算中に、再計算コストパフォーマンスが高い演算子を使用することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現することができる。
【0068】
選択的に、演算子集合における演算子の再計算評価パラメータと設定された閾値とを比較する。再計算評価パラメータが設定された閾値以上である演算子を選択して、第1の演算子とする。
【0069】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、演算子の出力テンソルが占有するメモリ量と演算子の順方向計算時にかかる計算時間とを決定し、さらに再計算評価パラメータを計算する。再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。
【0070】
図4は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0071】
図4に示すように、このモデル演算子の処理方法は以下のステップS401~S404を含むことができる。
【0072】
S401において、モデルネットワーキング時に必要な候補演算子を決定する。
【0073】
S402において、候補演算子の中から目標クラスの演算子を決定し、目標クラスの演算子に対してマージング処理を行って、演算子集合を取得する。
【0074】
いくつかの実現では、モデルネットワーキングのアプリケーションシナリオ、構造などの情報に基づいて、演算子の性能と組み合わせて、必要な候補演算子を決定することができる。
【0075】
なお、あるクラスの演算子が逆方向計算される場合に順方向の入力と出力を必要とされない場合、このクラスの演算子には特別な処理が必要である。この演算子を前の演算子にマージングし、マージングされた演算子を1つの演算子と見なし、さらにモデル計算の性能を向上させることができる。
【0076】
いくつかの実現では、逆方向計算中に順方向入力と順方向出力を必要とされない候補演算子を決定して、目標クラスの演算子とし、候補演算子の中から目標クラスの演算子を決定し、さらに目標クラスの演算子に対してマージング処理を行って、演算子集合を取得することができる。
【0077】
選択的に、目標クラスの演算子に属する任意の候補演算子に対して、任意の候補演算子に隣接する前の候補演算子を決定し、任意の候補演算子と前の候補演算子とを組み合わせて、マージングされた演算子を取得することができる。さらに、マージングされた演算子と残りの候補演算子とに基づいて、演算子集合を取得する。例えば、候補演算子は演算子A、演算子B、演算子C、演算子D及び演算子Eを含み、演算子Cが演算子Bにマージングされて、マージングされた演算子B’が取得され、演算子A、演算子D及び演算子Eが残りの候補演算子であり、マージングされた演算子B’と演算子集合を構成する。
【0078】
例示的な説明では、モデルネットワーキングが混合並列+Transformer構造である場合、あるクラスの演算子ReduceScatter通信があり、その逆方向計算に順方向の入力と出力が必要なく、その前にRowLN行列が乗っかるので、RowLN+ReduceScatterをマージングして、マージングされた演算子RowLN+ReduceScatterを取得し、すなわち、RowLN_0とReduceScatterという2つの演算子全体を1つのマージングされた演算子とする。
【0079】
図5は演算子のマージングの概略図を示す。RowLN_0とReduceScatterをマージングして、マージングされた演算子を取得し、図5における破線枠内の演算子はマージングされた演算子である。ここで、BSHReduceScatterは演算子のパラメータを表し、BSH/MはReduceScatter演算子の出力サイズを表す。ここで、Bはbatch_sizeを表し、Sはsequence_lenを表し、Hはhidden_sizeを表し、Mはmp_degreeを表す。
【0080】
S403において、演算子集合における各演算子に対して、演算子の再計算評価パラメータを決定する。
【0081】
いくつかの実現では、マージングされた演算子が複数の演算子から構成されるため、マージングされた演算子に含まれる各候補演算子の出力テンソルのメモリ量と順方向計算時間とに基づいて、マージングされた演算子の再計算評価パラメータを決定することができる。
【0082】
選択的に、各候補演算子の出力テンソルのメモリ量と順方向計算時にかかる計算時間とを取得することにより、上記の式(1)に基づいて、マージングされた演算子の再計算評価パラメータを計算する。
【0083】
S404において、再計算評価パラメータに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0084】
ステップS404に関する内容は上記の実施例を参照することができ、ここでは説明を省略する。
【0085】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングに必要な候補演算子を取得し、候補演算子の中から目標クラスの演算子を決定し、目標クラスの演算子に対してマージング処理を行って、演算子集合を取得する。演算子集合における各演算子に対して、その再計算評価パラメータを計算し、さらに再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。
【0086】
図6は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0087】
図6に示すように、このモデル演算子の処理方法は以下のステップS601~S605を含むことができる。
【0088】
S601において、モデルネットワーキングの演算子集合を決定し、演算子集合に複数の演算子が含まれる。
【0089】
S602において、演算子集合における各演算子に対して、演算子の再計算評価パラメータを決定する。
【0090】
S603において、再計算評価パラメータに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0091】
ステップS601~S605に関する内容は上記の実施例を参照することができ、ここでは説明を省略する。
【0092】
S604において、演算子集合の演算子の順方向論理順序に従ってモデルの順方向計算を実行し、第1の演算子の中間結果をリリースする。
【0093】
いくつかの実現では、第1の演算子を決定した後、モデルネットワーキングの演算子を再計算することができる。再計算は順方向計算、順方向再計算及び逆方向計算を含むことができる。順方向計算過程では、第1の演算子の再計算評価パラメータが高い場合、第1の演算子の計算にかかる時間が短いことを表し、順方向再計算にかかる時間が短いため、第1の演算子の中間結果をリリースすることで、ビデオメモリの占有を減らすことができる。
【0094】
図7は演算子を順方向計算する概略図を示す。モデルの一層(Layer)の演算子集合にOP0、OP1、OP2、OP3、OP4という5つの演算子が含まれることに対して、演算子の再計算評価パラメータにより、OP0、OP1、OP3及びOP4が第1の演算子であり、OP2が第2の演算子であると決定することができる。モデルのこの層の演算子に対して論理順序に従って順方向計算を行い、すなわちOP0、OP1、OP2、OP3及びOP4の順序に従って、演算子の中間結果を計算し、OP0、OP1、OP3及びOP4の中間結果をリリースする。
【0095】
S605において、演算子集合における第1の演算子以外の第2の演算子の順方向計算の中間結果をビデオメモリに記憶し、第2の演算子の中間結果に基づいて第2の演算子に対する後続の再計算をスキップする。
【0096】
いくつかの実現では、第1の演算子は演算子集合における再計算する必要がある演算子を指し、第2の演算子は演算子集合における再計算する必要がない演算子を指す。1回目の順方向計算をする場合、演算子の再計算評価パラメータに基づいて、第2の演算子が後続の過程で再計算する必要がないと決定するため、1回目の順方向計算時にビデオメモリに、第2の演算子の順方向計算の中間結果を記憶し、さらに第2の演算子の中間結果に基づいて第2の演算子に対する後続の再計算をスキップする。例えば、図7に示される演算子では、OP2は第2の演算子であり、順方向計算によって取得されたOP2の中間結果はC1であり、C1をビデオメモリに保存する。
【0097】
いくつかの実現では、第2の演算子の中間結果をビデオメモリに記憶した後、演算子集合の演算子の順方向計算の第1の論理順序に従って順方向計算を再度実行することができる。ここで、第1の論理順序は順方向論理順序である。
【0098】
選択的に、第1の演算子の順方向入力に基づいて、第1の演算子に対して順方向再計算を行って、第1の演算子の順方向計算の中間結果を取得する。順方向計算が第2の演算子に到達すると、ビデオメモリから第2の演算子の中間結果を読み取ることにより、順方向再計算中に、第2の演算子の順方向計算を減らし、ビデオメモリを増加させることで計算性能を向上させ、さらに再計算の全体的な時間を低減することができる。
【0099】
さらに、第1の演算子の中間結果と第2の演算子の中間結果とに基づいて、モデルの逆方向計算を実行する。選択的に、演算子集合の演算子の逆方向計算の第2の論理順序に従って逆方向計算を実行することができる。
【0100】
選択的に、第1の演算子に対して、第1の演算子の中間結果と第1の演算子の逆方向計算時の前の演算子の逆方向出力とに基づいて、第1の演算子を逆方向計算して、第1の演算子の逆方向出力を取得して、次の演算子に入力する。逆方向計算が前記第2の演算子に到達すると、ビデオメモリから第2の演算子の中間結果を読み取り、第2の演算子の中間結果と逆方向計算時の前の演算子の逆方向出力とに基づいて、第2の演算子の逆方向出力を決定し、第2の演算子の逆方向出力を第2の演算子の次の演算子に入力する。
【0101】
すなわち、第1の演算子を逆方向計算する場合、第1の演算子の中間結果と第1の演算子の前の逆方向計算の逆方向出力とを、第1の演算子に入力して、逆方向計算を行う。図8は演算子を再計算する概略図を示し、OP1を例として、逆方向計算する時に、OP1の入力はOP1の順方向計算の中間結果とOP2の逆方向出力とを含む。図中の破線部分に示すように、順方向再計算中に、ビデオメモリに記憶されたC1を読み取ることにより、OP2の再計算をスキップすることができる。
【0102】
いくつかの実現では、モデルの最初回の順方向計算時の最初の演算子の順方向入力をビデオメモリに記憶することもできる。これにより、モデルに対して順方向計算を再度実行する場合にビデオメモリから最初の演算子の入力を読み取って、最初の演算子に入力して再計算することを実現する。図7に示されるOP0を例として、OP0は最初の演算子であり、C0はOP0の順方向入力であり、OP0はC0に基づいて順方向計算して、OP0の中間結果を取得することができる。
【0103】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、その再計算評価パラメータを計算することにより、さらに再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。再計算中に、第2の演算子の中間結果をビデオメモリに保存することにより、第2の演算子の順方向計算を減らし、ビデオメモリを増加させることで計算性能を向上させることができる。
【0104】
例示的な説明では、Transformerネットワーキングを例として、再計算の過程を説明する。Transformerにとっては、関連する演算子(Operator、OP)は主にFA、Matmul、ReduceScatter及びAllgatherなどの演算子がある。演算子がマージングされた後、上記の式(1)で、再計算評価パラメータを計算して、図1に示すように再計算評価パラメータソート表を取得する。
【表1】
【0105】
表1から分かるように、演算子集合に9つの演算子が含まれ、番号1、3、6の演算子はマージングされた演算子である。再計算評価パラメータを計算し、再計算評価パラメータの小さい順にソートし、最後の4つの演算子を選択して、第1の演算子とする。最初の5つの演算子は第2の演算子である。ここで、時間の割合はいずれかの演算子を計算するのにかかる計算時間の、演算子集合全体における割合を表す。例えば。FA演算子の計算時間は、演算子集合全体の合計の計算時間に占有する時間の割合が13.8%である。ここで、計算式は演算子の出力の大きさを表し、その値はメモリ量の大きさである。式では、Bはbatch_sizeを表し、Sはsequence_lenを表し、Hはhidden_sizeを表し、Mはmp_degreeを表し、Aはnum_headを表し、H’はffn_hidden_sizeを表す。
【0106】
図9は混合並列モデルのネットワーキングの概略図を示し、この混合並列モデルはマルチヘッドアテンション(MultiHeadAttention)ネットワークと多層感知(Multilayer Perception、MLP)ネットワークとを含む。
【0107】
ここで、MultiHeadAttentionネットワークは、LayerNom演算子、ALLgather演算子、ColumnLN_0演算子、FA演算子、RowLN_0演算子及びReduceScatter演算子を含む。MLPネットワークは、LayerNom演算子、ALLgather演算子、ColumnLN_1演算子、Silu + Ele演算子、RowLN_1演算子及びReduceScatter演算子を含む。
【0108】
ここで、図9の各演算子の入力のBSH/M、BSH、BSH′/Mなどは演算子入力のパラメータを表す。Bはバッチサイズbatch_sizeを表し、Sはシーケンスの長さsequence_lenを表し、Hは隠れ状態の次元hidden_sizeを表し、Mはモデル並列度mp_degreeを表し、Aはヘッド数num_headを表し、H’はフィードフォワードニューラルネットワークの隠れ層の次元ffn_hidden_sizeを表す。FA演算子には2つの出力が存在し、LSEはFA演算子の出力の名称を表し、サイズはBAS/Mである。
【0109】
図9に示すように、破線枠内の演算子は第2の演算子である。図9は演算子の順方向論理順序をさらに示す。
【0110】
再計算中に、図9の演算子の順方向論理順序に従って順方向計算を実行し、第1の演算子の中間結果をリリースし、すなわち表1の最後の4つの演算子の中間結果をリリースする共に、ビデオメモリに第2の演算子の順方向計算の中間結果を記憶し、さらに図9の演算子の順方向論理順序に従って、第1の演算子の順方向入力に基づいて、第1の演算子に対して順方向再計算を行って、第1の演算子の順方向計算の中間結果を取得する。順方向再計算が第2の演算子に到達すると、ビデオメモリから第2の演算子の中間結果を読み取り、第1の演算子の中間結果と第2の演算子の中間結果とに基づいて、モデルの逆方向計算を実行する。
【0111】
第1の演算子の逆方向計算過程はAllgather演算子を例として、Allgatherの中間結果とColumnLN_0の逆方向出力とに基づいて、Allgatherを逆方向計算して、Allgatherの逆方向出力を取得してLayerNormに入力する。
【0112】
第2の演算子の逆方向計算過程はColumnLN_1を例として、ビデオメモリからColumnLN_1の中間結果を読み取り、ColumnLN_1の中間結果とSilu+Eleの逆方向出力とに基づいて、ColumnLN_1の逆方向出力を決定し、ColumnLN_1の逆方向出力をAllgatherに入力する。
【0113】
図10は本開示の実施例によって提供されるモデル演算子の処理方法の概略フローチャートである。
【0114】
図10に示すように、このモデル演算子の処理方法は以下のステップS1001~S1008を含むことができる。
【0115】
S1001において、モデルネットワーキング時に必要な候補演算子を決定する。
【0116】
S1002において、候補演算子の中から目標クラスの演算子を決定し、目標クラスの演算子に対してマージング処理を行って、演算子集合を取得する。
【0117】
S1003において、演算子集合における各演算子に対して、演算子の出力テンソルが占有するメモリ量を決定する。
【0118】
S1004において、演算子の順方向計算時にかかる計算時間を決定する。
【0119】
S1005において、メモリ量と計算時間とに基づいて、演算子の再計算評価パラメータを決定する。
【0120】
S1006において、再計算評価パラメータに基づいて、演算子集合の中から、モデルにおける再計算に関与する第1の演算子を決定する。
【0121】
S1007において、演算子集合の演算子の順方向論理順序に従ってモデルの順方向計算を実行し、第1の演算子の中間結果をリリースする。
【0122】
S1008において、演算子集合における第1の演算子以外の第2の演算子の順方向計算の中間結果をビデオメモリに記憶し、第2の演算子の中間結果に基づいて第2の演算子の後続の再計算をスキップする。
【0123】
本開示の実施例によって提供されるモデル演算子の処理方法によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、その再計算評価パラメータを計算することにより、さらに再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。再計算中に、第2の演算子の中間結果をビデオメモリに保存することにより、第2の演算子の順方向計算を減らし、ビデオメモリを増加させることで計算性能を向上させることができる。
【0124】
上記のいくつかの実施例によって提供されるモデル演算子の処理方法に対応して、本開示の一実施例はモデル演算子の処理装置をさらに提供し、本開示の実施例によって提供されるモデル演算子の処理装置は上記のいくつかの実施例によって提供されるモデル演算子の処理方法に対応するため、上記のモデル演算子の処理方法の実施例は本開示の実施例によって提供されるモデル演算子の処理装置にも適用され、以下の実施例では、説明を省略する。
【0125】
図11は本開示の実施例によって提供されるモデル演算子の処理装置の概略構成図である。
【0126】
図11に示すように、本開示の実施例のモデル演算子の処理装置1100は第1の決定モジュール1101、第2の決定モジュール1102及び第3の決定モジュール1103を含む。
【0127】
第1の決定モジュール1101は、モデルネットワーキングの演算子集合を決定し、前記演算子集合に複数の演算子が含まれる。
【0128】
第2の決定モジュール1102は、前記演算子集合における各演算子に対して、前記演算子の出力テンソルが占有するメモリ量と前記演算子の順方向計算時にかかる計算時間とを決定する。
【0129】
第3の決定モジュール1103は、前記演算子の前記メモリ量と前記計算時間とに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定する。
【0130】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記メモリ量と前記計算時間とに基づいて、前記演算子の再計算評価パラメータを決定し、前記演算子の再計算評価パラメータに基づいて、前記演算子集合の中から、前記モデルにおける再計算に関与する第1の演算子を決定する。
【0131】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記メモリ量と前記計算時間との比を取得し、前記比を前記再計算評価パラメータとして決定する。
【0132】
本開示の一実施例では、前記演算子の再計算評価パラメータが大きいほど、前記演算子が再計算に関与する可能性が大きくなる。
【0133】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記再計算評価パラメータに基づいて、前記演算子集合における演算子をソートし、ソート結果に基づいて前記演算子集合の中から、前記第1の演算子を選択する。
【0134】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記演算子集合における演算子の前記再計算評価パラメータと設定された閾値とを比較し、前記再計算評価パラメータが前記設定された閾値以上である演算子を選択して前記第1の演算子とする。
【0135】
本開示の一実施例では、前記第1の決定モジュール1101は、さらに前記モデルネットワーキング時に必要な候補演算子を決定し、前記候補演算子の中から目標クラスの演算子を決定し、前記目標クラスの演算子に対してマージング処理を行って、前記演算子集合を取得する。
【0136】
本開示の一実施例では、前記第1の決定モジュール1101は、さらに前記目標クラスの演算子に属する任意の候補演算子に対して、前記任意の候補演算子に隣接する前の候補演算子を決定し、前記任意の候補演算子と前記前の候補演算子とを組み合わせて、マージングされた演算子を取得し、前記マージングされた演算子と残りの候補演算子とに基づいて、前記演算子集合を取得する。
【0137】
本開示の一実施例では、前記第1の決定モジュール1101は、さらに逆方向計算中に順方向入力と順方向出力を必要とされない候補演算子を決定して、前記目標クラスの演算子とする。
【0138】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記マージングされた演算子に含まれる各候補演算子の出力テンソルのメモリ量と前記計算時間とに基づいて、前記マージングされた演算子の再計算評価パラメータを決定する。
【0139】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記演算子集合の演算子の順方向論理順序に従って前記モデルの順方向計算を実行し、前記第1の演算子の中間結果をリリースし、前記演算子集合における前記第1の演算子以外の第2の演算子の順方向計算の中間結果をビデオメモリに記憶し、前記第2の演算子の中間結果に基づいて前記第2の演算子に対する後続の再計算をスキップする。
【0140】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記演算子集合の演算子の順方向計算の第1の論理順序に従って順方向計算を再度実行し、前記第1の演算子の順方向入力に基づいて、前記第1の演算子に対して順方向再計算を行って、前記第1の演算子の順方向計算の中間結果を取得し、順方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取り、前記第1の演算子の中間結果と前記第2の演算子の中間結果とに基づいて、前記モデルの逆方向計算を実行する。
【0141】
本開示の一実施例では、前記第3の決定モジュール1103は、さらに前記演算子集合の演算子の逆方向計算の第2の論理順序に従って逆方向計算を実行し、前記第1の演算子に対して、前記第1の演算子の中間結果と前記第1の演算子の逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第1の演算子を逆方向計算して、前記第1の演算子の逆方向出力を取得して次の演算子に入力し、逆方向計算が前記第2の演算子に到達すると、前記ビデオメモリから前記第2の演算子の中間結果を読み取り、前記第2の演算子の中間結果と逆方向計算時の前の演算子の逆方向出力とに基づいて、前記第2の演算子の逆方向出力を決定し、前記第2の演算子の逆方向出力を前記第2の演算子の次の演算子に入力する。
【0142】
本開示の一実施例では、前記装置ではさらに、前記ビデオメモリに前記モデルの最初回の順方向計算時の最初の演算子の順方向入力を記憶し、前記モデルに対して順方向計算を再度実行する場合に前記ビデオメモリから前記最初の演算子の入力を読み取って、前記最初の演算子に入力して再計算する。
【0143】
本開示の一実施例では、前記第3の決定モジュール1103はさらに、前記演算子集合における演算子に対して、前記再計算評価パラメータの大きい順にソートし、最初のN個の演算子を選択して、前記第1の演算子とするか、または、前記演算子集合における演算子に対して、前記再計算評価パラメータの小さい順にソートし、最後のN個の演算子を選択して、前記第1の演算子とし、前記Nは1以上の自然数である。
【0144】
本開示の実施例によって提供されるモデル演算子の処理装置によれば、モデルネットワーキングの演算子集合を決定し、演算子集合における各演算子に対して、その再計算評価パラメータを計算することにより、さらに再計算評価パラメータに基づいて、再計算に関与する必要がある第1の演算子を決定する。これにより、再計算中に、再計算コストパフォーマンスが低い演算子を除去することを実現することができ、これによって効率的なビデオメモリによる性能の向上を実現し、単位ビデオメモリ交換あたりの計算性能を高めることができる。ビデオメモリを効率的に使用することにより、さらにモデルの計算性能を向上させる。モデルにおける各種類の演算子に対して、演算子の精密化制御を実現することができる。再計算中に、第2の演算子の中間結果をビデオメモリに保存することにより、第2の演算子の順方向計算を減らし、ビデオメモリを増加させることで計算性能を向上させることができる。
【0145】
なお、本開示の技術案では、関連するユーザ個人情報の取得、記憶、アプリケーションなどは、いずれも関連法律法規の規定に合致し、かつ公序良俗に違反しない。
【0146】
本開示の実施例によれば、本開示は、電子デバイス、及び読み取り可能な記憶媒体をさらに提供する。
本開示の実施例によれば、本開示は、コンピュータプログラムを提供し、前記コンピュータプログラムはプロセッサによって実行される場合、本開示によって提案されるモデル演算子の処理方法が実現される。
【0147】
図12は、本開示の実施例を実行するための例示的な電子デバイス1200の概略ブロック図である。電子デバイスは、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的とする。電子デバイスは、パーソナルデジタル処理、携帯電話、スマートフォン、ウェアラブルデバイス、および他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すこともできる。本明細書で示される部品、それらの接続と関係、およびそれらの機能は、単なる例であり、本明細書の説明および/または求められる本開示の実現を制限することを意図したものではない。
【0148】
図12に示すように、電子デバイス1200は、読み取り専用メモリ(ROM)1202に記憶されているコンピュータプログラム/命令または記憶ユニット1206からランダムアクセスメモリ(RAM)1203にロードされたコンピュータプログラム/命令に従って、様々な適切な動作および処理を実行する計算ユニット1201を含む。RAM 1203には、電子デバイス1200の動作に必要な各種のプログラムやデータも記憶されてもよい。計算ユニット1201、ROM 1202、及びRAM 1203は、バス1204を介して互いに接続されている。バス1204には、入力/出力(I/O)インターフェース1205も接続されている。
【0149】
電子デバイス1200の複数のコンポーネントはI/Oインターフェース1205に接続され、キーボード、マウスなどの入力ユニット1206、各タイプのディスプレイ、スピーカなどの出力ユニット1207、磁気ディスク、光ディスクなどの記憶ユニット1208、およびネットワークカード、モデム、無線通信トランシーバなどの通信ユニット1209を含む。通信ユニット1209は、電子デバイス1200が、インターネットなどのコンピュータネットワークおよび/または各種の電信ネットワークを介して他のデバイスと情報/データを向上させることを可能にする。
【0150】
計算ユニット1201は、処理および計算能力を有する様々な汎用および/または専用の処理コンポーネントであってもよい。計算ユニット1201のいくつかの例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、各種の専用の人工知能(AI)計算チップ、各種のマシン運転学習モデルアルゴリズムの計算ユニット、デジタル信号プロセッサ(DSP)、およびいずれかの適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット1201は、上記に記載された各方法及び処理、例えば、モデル演算子の処理方法を実行する。例えば、いくつかの実施例ではモデル演算子の処理方法は、記憶ユニット1206などの機械読み取り可能な媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現することができ、コンピュータプログラム/命令の一部または全部がROM 1202および/または通信ユニット1209を介して電子デバイス1200にロードおよび/またはインストールされてもよい。コンピュータプログラム/命令がRAM 1203に命令ロードされ、計算ユニット1201によって実行される場合、前文に記載されたモデル演算子の処理方法の1つまたは複数のステップが実行されてもよい。代替的に、他の実施例では、計算ユニット1201はモデル演算子の処理方法を実行するように、他のいずれかの適切な方式(例えば、ファームウェアを介して)によって配置されてもよい。
【0151】
本明細書で上記に記載のシステムと技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現することができる。これらの様々な実施形態は、1つ又は複数のコンピュータプログラム/命令で実施されることを含むことができ、当該1つ又は複数のコンピュータプログラム/命令は、少なくとも1つのプログラマブルプロセッサを含むプログラム可能なシステムで実行および/または解釈されることができ、当該プログラマブルプロセッサは、特定用途向け又は汎用プログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該ストレージシステム、当該少なくとも1つの入力装置、および当該少なくとも1つの出力装置に伝送することができる。
【0152】
本開示の方法を実行するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、プロセッサ又はコントローラによって実行された際に、フローチャートおよび/またはブロック図に規定された機能/操作が実施されるように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供されてもよい。プログラムコードは、完全に機械上で実行されるか、部分的に機械上で実行されるか、スタンドアロンソフトウェアパッケージとして、部分的に機械上で実行され、部分的にリモート機械上で実行され又は完全にリモート機械又はサーバ上で実行されてもよい。
【0153】
本開示のコンテクストでは、機械読み取り可能な媒体は、命令実行システム、装置、またはデバイスによって使用されるために、又は命令実行システム、装置、またはデバイスと組み合わせて使用するためのプログラムを含むか、又は記憶することができる有形の媒体であってもよい。機械読み取り可能な媒体は、機械読み取り可能な信号媒体または機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体システム、装置又はデバイス、または上記の任意の適切な組み合わせを含むことができるが、これらに限定されない。機械読み取り可能な記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組み合わせを含む。
【0154】
ユーザとのインタラクションを提供するために、コンピュータ上でここで説明されるシステム及び技術を実行することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、ビジョンフィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力、または、触覚入力とを含む)でユーザからの入力を受信することができる。
【0155】
ここで説明されるシステムおよび技術は、バックエンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェアコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインターフェース又はウェブブラウザを有するユーザコンピュータ、ユーザは、当該グラフィカルユーザインターフェース又は当該ウェブブラウザによってここで説明されるシステムおよび技術の実施形態とインタラクションできる)、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントのいずれかの組み合わせを含むコンピューティングシステムで実行することができる。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットと、ブロックチェーンネットワークを含む。
【0156】
コンピュータシステムは、クライアントとサーバを含むことができる。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラム/命令によってクライアントとサーバとの関係が生成される。サーバはクラウドサーバであってもよく、分散システムのサーバであってもよく、ブロックチェーンを組み込んだサーバであってもよい。
【0157】
なお、上記に示される様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除することができると理解されたい。例えば、本開示に記載の各ステップは、並列に実行されてもよいし、順次実行されてもよいし、異なる順序で実行されてもよいが、本開示で開示されている技術案が所望の結果を実現することができれば、本明細書はここで限定しない。
【0158】
上記具体的な実施形態は、本開示の保護範囲を制限するものではない。当業者は、設計要求と他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション、及び代替を行うことができると理解されたい。任意の本開示の精神と原則内で行われる修正、同等の置換、及び改善などは、いずれも本開示の保護範囲内に含まれなければならない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12