JP7029554B2 - 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム - Google Patents

深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム Download PDF

Info

Publication number
JP7029554B2
JP7029554B2 JP2020572679A JP2020572679A JP7029554B2 JP 7029554 B2 JP7029554 B2 JP 7029554B2 JP 2020572679 A JP2020572679 A JP 2020572679A JP 2020572679 A JP2020572679 A JP 2020572679A JP 7029554 B2 JP7029554 B2 JP 7029554B2
Authority
JP
Japan
Prior art keywords
section
training
description information
model description
deep learning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020572679A
Other languages
English (en)
Other versions
JP2022515302A (ja
Inventor
ホー、ティエンジェン
リウ、イー
トン、ターシアン
マー、イェンジュン
ユイ、ティエンハイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2022515302A publication Critical patent/JP2022515302A/ja
Application granted granted Critical
Publication of JP7029554B2 publication Critical patent/JP7029554B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Machine Translation (AREA)
  • Stored Programmes (AREA)

Description

本出願は、2019年11月25日に提出された、出願番号が201911162586.0であり、出願人がベイジン バイドゥ ネットコム サイエンスアンドテクノロジー カンパニー リミテッドであり、発明の名称が「深層学習モデルをトレーニングするための方法及び装置」である中国特許出願の優先権を主張するものであり、当該出願の全文を引用することにより本出願に組み込む。
本開示の実施例は、コンピュータ技術分野に関し、具体的に深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラムに関する。
現在の深層学習モデルは、より深いレベル、より広い表現及びより複雑な構造等の多方向に向かって発展するにつれて、高効率計算力を有するGPU(Graphics Processing Unit,グラフィックスプロセッシングユニット)が当分野で不可欠な計算リソースとなっている。一般的な並列手法は、モデル並列とデータ並列との2通りのアプローチに分けられる。
モデル並列の手法は、全てのモデルパラメータを異なる装置に割り当てて計算を実行し、各装置はパラメータの一部を保守する。異なる装置の計算は、先行装置の計算コンテキストに依存するので、GPU等の計算装置の利用率を向上させるために、モデル並列パイプラインは、1つの大きなバッチサイズのデータを複数のミニバッチに分割することによって、異なるミニバッチのデータの計算を複数の計算装置で並列実行することを可能にする。モデル並列パイプラインは、同期計算と非同期計算との2つのタイプにさらに細分化されてもよい。同期計算モードでは、全ての計算装置は、全てのミニバッチのフォワード計算タスクを完了した後に、バックワード計算に必要なコンテキストをブロックして待つか、又は全てのバックワード計算を完了した後に、パラメータの同期更新を待つことで、計算装置の利用が不十分になってしまう。非同期計算では、異なる大きなバッチサイズの計算を同時点で行いながら、異なるミニバッチのバックワード計算及びパラメータ更新を可能な限り前進させる。しかしながら、該手法は各段階の計算力が異なる条件下で、計算力の高い装置を十分に利用することができない。
データ並列は別の並列手法である。データ並列パイプラインは、計算装置を異なるバッチのデータに割り当て、装置間の計算が当然ながら並列特性を有し、装置の利用率が高い。しかしながら、該手法は、異種装置を十分に利用しておらず、つまり全てのデータストリームが単一の種類の装置上でのみ実行され、異なる装置の計算リソースの割り当てをサポートするまではなおさらである。
本開示の実施例は、深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラムを提供している。
第1の態様によれば、本開示の実施例は、深層学習モデルのモデル記述情報及び構成情報を取得するステップであって、モデル記述情報は変数及び操作を含み、構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含むステップと、構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するステップと、あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存することと、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得ることと、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にすることと、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力することとを含むトレーニングステップを実行する、ステップと、トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するステップと、を含む深層学習モデルをトレーニングするための方法を提供している。
いくつかの実施例において、構成情報は、各セクションに割り当てられたリソースの割合をさらに含み、及び各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するステップは、各セクションに割り当てられたリソースの割合に基づいて、セクションごとに割り当て対象であるリソースの数を計算することと、各セクションに割り当てられたリソースの名称及び数に基づいて、モデル記述情報を対応するリソースにロードして実行することと、を含む。
いくつかの実施例において、構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するステップは、分割点変数を終点とするフォワードセクションを第1のセクションとして確定することと、分割点変数からの残りのフォワードセクションに損失セクションから分割点変数までに対応する勾配変数を加算したものを第2のセクションとして確定することと、分割点変数に対応する勾配変数からの残りのバックワードセクションを第3のセクションとして確定することと、を含む。
いくつかの実施例において、深層学習モデルのモデル記述情報及び構成情報を取得するステップは、モデル記述情報の操作に基づいてメモリの頻繁なインタラクション操作と計算集約型操作との間の変換変数を分割点変数として確定することと、メモリの頻繁なインタラクション操作をCPUに割り当てて実行することと、計算集約型操作をGPUに割り当てて実行することと、を含む。
いくつかの実施例において、該方法は、トレーニングサンプルを所定部数に分けるステップと、各部のトレーニングサンプルを用いてトレーニングして1組の深層学習モデルのパラメータを得るステップと、所定のラウンド毎に、各組の深層学習モデルのパラメータを1回同期するステップと、をさらに含む。
いくつかの実施例において、コンテキスト情報はキューを介して伝送される。
第2の態様によれば、本開示の実施例は、深層学習モデルのモデル記述情報及び構成情報を取得するように構成される取得ユニットであって、モデル記述情報は変数及び操作を含み、構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含む取得ユニットと、構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するように構成される分割ユニットと、あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存することと、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得ることと、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にすることと、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力することとを含むトレーニングステップを実行するように構成されるトレーニングユニットと、トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するように構成される反復ユニットと、を含む深層学習モデルをトレーニングするための装置を提供している。
いくつかの実施例において、構成情報は、各セクションに割り当てられたリソースの割合をさらに含み、及び分割ユニットはさらに、各セクションに割り当てられたリソースの割合に基づいて、セクションごとに割り当て対象であるリソースの数を計算し、各セクションに割り当てられたリソースの名称及び数に基づいて、モデル記述情報を対応するリソースにロードして実行するように構成される。
いくつかの実施例において、分割ユニットはさらに、分割点変数を終点とするフォワードセクションを第1のセクションとして確定し、分割点変数からの残りのフォワードセクションに損失セクションから分割点変数までに対応する勾配変数を加算したものを第2のセクションとして確定し、分割点変数に対応する勾配変数からの残りのバックワードセクションを第3のセクションとして確定するように構成される。
いくつかの実施例において、取得ユニットはさらに、モデル記述情報の操作に基づいてメモリの頻繁なインタラクション操作と計算集約型操作との間の変換変数を分割点変数として確定し、メモリの頻繁なインタラクション操作をCPUに割り当てて実行し、計算集約型操作をGPUに割り当てて実行するように構成される。
いくつかの実施例において、該装置は、トレーニングサンプルを所定部数に分け、各部のトレーニングサンプルを用いてトレーニングして1組の深層学習モデルのパラメータを得、所定のラウンド毎に、各組の深層学習モデルのパラメータを1回同期するように構成される統合ユニットをさらに含む。
いくつかの実施例において、コンテキスト情報はキューを介して伝送される。
第3の態様によれば、本開示の実施例は、1つ又は複数のプロセッサと、1つ又は複数のプログラムが格納されている記憶装置と、を含む電子機器であって、1つ又は複数のプログラムが1つ又は複数のプロセッサによって実行される場合に、1つ又は複数のプロセッサに第1の態様のいずれかの方法を実現させる電子機器を提供している。
第4の態様によれば、本開示の実施例は、コンピュータプログラムが格納されているコンピュータ可読媒体であって、プログラムがプロセッサによって実行される場合に、第1態様のいずれかの方法を実現するコンピュータ可読記憶媒体を提供している。
第5の態様によれば、本開示の実施例は、コンピュータプログラムであって、前記コンピュータプログラムがプロセッサによって実行されると、第1態様のいずれかの方法を実現するコンピュータプログラムを提供している。
本開示の実施例に係る深層学習モデルをトレーニングするための方法及び装置は、非同期パイプラインフレームワークを提供し、異種計算装置の自由な組み合わせを(CPU、GPU及びネットワークカードなどに限定されず、具体的な計算が操作によってサポートされる)可能にし、異なる装置の特徴を十分に発揮させることを目的とし、例えば、メモリのインタラクション速度が高いCPUにおいてEmbedding Lookup(埋め込み検索)の計算及び更新操作を行い、演算速度がより高いGPUにおいて行列乗算のような計算集約型操作を実行する。また、異なる特徴の操作に対して異なる割合の計算リソースを割り当てて非同期で並列実行することにより、異なる計算装置の演算能力を十分に発揮させ、全体のスループットを向上させることができる。
本開示の他の特徴、目的及び利点は、以下の図面を参照してなされる非限定的な実施例に係る詳細な説明を読むことにより、より明らかになるであろう。
本開示の一実施例を適用できる例示的なシステムアーキテクチャを示す図である。 本開示に係る深層学習モデルをトレーニングするための方法の一実施例を示すフローチャートである。 本開示に係る深層学習モデルをトレーニングするための方法の一適用シナリオを示す概略図である。 本開示に係る深層学習モデルをトレーニングするための方法の一適用シナリオを示す概略図である。 本開示に係る深層学習モデルをトレーニングするための方法のもう一つの実施例を示すフローチャートである。 本開示に係る深層学習モデルをトレーニングするための方法のもう一つの適用シナリオを示す概略図である。 本開示に係る深層学習モデルをトレーニングするための装置の一実施例を示す構造概略図である。 本開示の実施例を実施するための電子機器に適するコンピュータシステムを示す構造概略図である。
以下、添付図面及び実施例を参照しながら、本開示をより詳細に説明する。ここで説明する具体的な実施例は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではないことを理解されたい。また、説明の便宜上、図面には発明に関連する部分のみが示されていることに留意されたい。
なお、本開示の実施例及び実施例における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、添付図面及び実施例を参照しながら、本開示を詳細に説明する。
図1は、本開示の深層学習モデルをトレーニングするための方法又は深層学習モデルをトレーニングするための装置を適用できる実施例の例示的なシステムアーキテクチャ100が示されている。
図1に示すように、システムアーキテクチャ100は、端末装置101、102、103、ネットワーク104及びサーバ105を含んでもよい。ネットワーク104は端末装置101、102、103とサーバ105との間に通信リンクの媒体を提供するために用いられる。ネットワーク104は、有線、無線通信リンク又は光ファイバケーブル等のような、様々な接続タイプを含んでもよい。
ユーザはメッセージ等を受信又は送信するために、端末装置101、102、103を使用してネットワーク104を介してサーバ105とインタラクティブすることができる。端末装置101、102、103には、例えば、モデルトレーニングアプリケーション、ウェブブラウザアプリケーション、ショッピング系アプリケーション、検索系アプリケーション、インスタントメッセンジャー、メールボックスクライアント、ソーシャルプラットフォームソフトウェア等のような様々な通信クライアントアプリケーションがインストールされていてもよい。
端末装置101、102、103は、ハードウェアであってもよいし、ソフトウェアであってもよい。端末装置101、102、103がハードウェアである場合には、スマートフォン、タブレットコンピュータ、電子書籍リーダー、MP3プレーヤー(Moving Picture Experts Group Audio Layer III,エムピースリー)、MP4(Moving Picture Experts Group Audio Layer IV,エムピーフォー)プレーヤー、ラップトップポータブルコンピュータ、デスクトップコンピュータ等を含むがこれらに限定されない、トレーニングサンプルのアップロードをサポートする様々な電子機器であってもよい。端末装置101、102、103がソフトウェアである場合には、上記の電子機器にインストールされてもよい。これは、複数のソフトウェア又はソフトウェアモジュール(例えば、分散サービスを提供するために用いられる)として実現されてもよく、単一のソフトウェア又はソフトウェアモジュールとして実現されてもよい。ここでは、特に限定されない。
サーバ105は、例えば、端末装置101、102、103に用いられる深層学習モデルをサポートするバックグラウンドトレーニングサーバ等の、様々なサービスを提供するサーバであってもよい。バックグラウンドトレーニングサーバは受信したトレーニングサンプルを含むトレーニングリクエスト等のデータに対して分析などの処理を行うとともに、処理結果(例えば、トレーニング済み深層学習モデル)を端末装置にフィードバックすることができる。
サーバ105の計算ユニットは一般的に、CPU(central processing unit,中央処理装置)、GPU及びネットワークカード(説明の便宜上、ネットワークカード間の通信も計算と見なされる)の3つの部分から構成される。これらの3つの部分は異なる機能及び特徴を有するので、1つのシステムにおいて、通常に以下のように作業を割り当てる。
CPUは機能の汎用化のため、フロー制御及び論理処理が得意であり、特に不規則なデータ構造又は予測不可能な格納構造に対する処理能力が強い。深層学習タスクにおいて、CPUは一般的にデータのロード、前処理及びダンプを担当し、GPUでのデータ転送及び関数呼び出しを起動し、ネットワーク伝送等を起動する。
GPUはコアが多いため、データ並列計算がより得意であり、特に規則的なデータ構造に対して記憶モードを予測することができ、巨大な速度優勢を占める。したがって、深層学習タスクにおいて、GPUは一般的に計算を担当し、深層学習における最も重要な要素である。
ネットワークカードはデータとモデルとのアップロード及びダウンロード、分散トレーニングにおける通信を担当する。
明らかに、GPUの利用率を向上させるためには、GPU利用率が低い操作をCPUに移して実行する一方で、個々の計算装置間の計算を並列実行することにより、CPU、GPU及びネットワークカードの三者の計算シリアルによるGPUアイドルを防止する必要がある。
なお、サーバはハードウェアであってもよいし、ソフトウェアであってもよい。サーバがハードウェアである場合には、複数のサーバからなる分散サーバクラスタとして実現されてもよいし、単一のサーバとして実現されてもよい。サーバがソフトウェアである場合には、複数のソフトウェア又はソフトウェアモジュール(例えば、分散サービスを提供するための複数のソフトウェア又はソフトウェアモジュール)として実現されてもよいし、単一のソフトウェア又はソフトウェアモジュールとして実現されてもよい。ここでは、特に限定されない。
なお、本開示の実施例に係る深層学習モデルをトレーニングするための方法は一般的にサーバ105によって実行され、それに応じて、深層学習モデルをトレーニングするための装置は一般的にサーバ105に設けられている。
図1における端末装置、ネットワーク及びサーバの数は単なる例示的なものに過ぎないことを理解されたい。必要に応じて、端末装置、ネットワーク及びサーバの数を任意に加減してもよい。
引き続き図2を参照して、本開示に係る深層学習モデルをトレーニングするための方法の一実施例を示すフロー200が示されている。該深層学習モデルをトレーニングするための方法はステップ201~ステップ204を含む。
ステップ201:深層学習モデルのモデル記述情報及び構成情報を取得する。
本実施例において、深層学習モデルをトレーニングするための方法の実行主体(例えば、図1に示すサーバ)は、有線接続方式又は無線接続方式によりユーザがモデルをトレーニングする端末からトレーニングリクエストを受信することができる。トレーニングリクエストは深層学習モデルのモデル記述情報及び構成情報を含んでもよい。トレーニングリクエストはさらにトレーニングサンプルを含んでもよい。モデル記述情報は変数及び操作を含み、構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含む。まず、いくつかの名詞を定義する。1つの完全な深層学習モデルはProgram(モデル記述情報)により記述し、主に操作(即ちOP)と変数(Variable)との2つのエンティティを含む。例えば、全結合操作、embedding検索操作がOPと見なされてもよい。また、ネットワークのパラメータ及び様々なデータの中間表現はVariableにより記述されている。Python言語を用いてモデル記述情報を記述してもよい。バックエンドは、実行可能なC++プログラムに変換することによって、指定されたリソース(CPU又はGPU)上で動作する。
ステップ202:構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行する。
本実施例において、構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含む。ユーザは構成情報に基づいてどこで分割するか、及び分割した各セクションのモデル記述情報がどの装置で動作するかを設定する。分割点変数を手動で絞り込むようにしてもよいし、プログラムによりフォワード計算と損失値計算との交わりの変数を分割点変数として確定するようにしてもよい。通常のトレーニングにおいて、1つの完全なProgramは、GPU又はCPUのようなある装置上で実行される。パイプラインはProgramを少なくとも2つのセクション(Sectionと呼ばれる)に分割することを並列サポートし、各Sectionに対してProgramが動作する装置を指定することができる。ここでもモデル並列の考え方を利用している。具体的には、ユーザは、フォワードをカスタマイズするProgramでパイプライン分割点(分割点はいずれもVariable又はVariableのリストであり、即ち、複数の分割点変数を有してもよい)を指定することができ、サーバはこれに基づいてフォワード、バックワード及び最適化を含む完全なProgramを複数のSectionに分割して、分割して得られたSectionのProgramによりそれぞれの計算を記述する。フォワードセクションはニューラルネットワークトレーニングの順伝播プロセスに関し、バックワードセクション(逆方向セクションとも呼ばれる)は、ニューラルネットワークトレーニングの逆伝播に関する。さらに一部は損失値の計算に用いられる。そのまま分割点変数で分割してもよいし、分割点変数に対応する勾配変数を他の分割点変数に自動設定して分割してもよい。つまり、1つの分割点変数を設定することで、3つのセクションに分割することができる。K個の分割点変数を設定すると、2K+1のセクションに分割することができる。
図3aは完全な例を記述している。1つの完全なProgramはフォワード(左)及びバックワード(右)の2つのセクションを含む。ユーザがcut_varというVariableを分割点として指定すると、パイプラインフレームワークはProgram全体を、
1、cut_varを終点とするフォワードセクション(図中のsection0)、
2、cut_varからの残りのフォワードセクションに、lossからcut_var@GRADまでのバックワードセクションを加算したセクション(図中のsection1)。なお、cut_var@GRADはcut_varのバックワードネットワークにおける対応する勾配変数である。
3、cut_var@GRADからの残りのバックワードセクション(図中のsection2)という3つのセクションに分割することができる。
上記のようにProgramに対する分割を完了した後、構成情報はSection毎に、動作する装置を指定することができる。例えば、section0はCPU上で動作し、section1はGPU上で動作するようにする。該機能により、パイプライン並列フレームワークを用いてトレーニングすることは、1台の機器により提供される各々の装置を十分に利用することができる。割り当ての原則は、データのロード、前処理及びダンプ、GPUでのデータ転送及び関数呼び出しの起動、ネットワーク伝送の起動など、メモリと頻繁にインタラクティブするモデル記述情報がCPUで動作するように特定する。集約型計算に関するモデル記述情報をGPUに割り当てて実行する。メモリとのインタラクション速度が高いCPUでEmbedding Lookupの計算及び更新操作を行う一方で、演算速度が高いGPUで行列乗算のような計算集約型操作を行う。また、異なる特徴の操作に対して異なる割合の計算リソースを割り当てて非同期で並列に実行することにより、異なる計算装置の演算能力を十分に発揮させ、全体のスループットを向上させることができる。
モデル記述情報は、Python言語で作成された後、C++等の実行可能なプログラムに変換されて割り当てられたリソース上で実行され得る。
ステップ203:あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存し、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にする。
本実施例において、Paddle深層学習フレームワークの汎用性を考慮し、Paddleフレームワークの基本概念を踏まえ、一部のエンティティに簡単な改善及び拡張を加えることで本機能を実現する。ユーザがPython側でネットワークを記述する際に指定したProgram分割点、各Sectionが動作する装置の種類及び並列度等の構成情報を、protoフォーマットでバックエンド(c++)トレーニングエンジンに送ることで、バックエンドが動作時に様々な構成情報を取得し、後続の初期化及び計算等の一連の操作を行うことができる。
以下に頻繁に使用される概念であるScopeについて簡単に説明する。ScopeはPaddleにおいて重要な汎用概念であり、バッチサンプル計算プロセスにおける中間変数等のコンテキスト情報を格納するために用いられる。同一のProgramが複数の異なるScopeで実行される場合に、異なるScopeは変数を互いに干渉しないように分離する。パイプライン並列の設計において、Scopeは隣接するSection間の通信エンティティとして転送され、プログラム全体の実行に当たって、一貫して作成されたとともに、実行中にSection間で順次転送される。以下、Scope QueueはScopeを格納するキューである。
PaddleフレームワークはあるSectionにおける計算の全プロセスを管理するためのコンポーネント(クラス)Section Worker(セクションワーカー)を含む。主な動作は、
1、初期化段階では、入力されたproto構成情報に基づいて、該SectionにおけるOPを作成することと、
2、実行段階では、ブロックして待機するとともに、入力QueueからScopeリソースを取得し、現在のScopeに基づいてProgramに記述される計算を完成し、計算結果を含むScopeを出力Queueに入れることと、を含む。
Paddleフレームワークは、複数のSection Workerのライフサイクルを管理するためのコンポーネント(クラス)Pipeline Trainer(パイプライントレーナー)を含む。主な動作は、
1、Section Workerの作成、Section Worker毎のOPリストの生成、隣接するSection間のScopeキュー等のエンティティの作成のような、グローバルリソースの空間開拓及び初期化作業を行うことと、
2、パイプライン並列の起動及び必要なスケジューリング等の動作を実現することと、を含む。
例えば、Section Worker毎に実行スレッド及びスレッド間の同期等のロジックを作成する。
なお、Scopeの計算において要求されたストレージリソースを多重化するために、Pipeline Trainerは初期化時に十分な量のScopeを一括して作成するとともに、トレーニング終了後に廃棄する。
上記コンテンツの直感的な表現は、図3bに示される。
ステップ204:トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力する。
本実施例において、トレーニング終了条件は損失値が所定値未満であるか、又はトレーニング回数が上限に達したこと等を含んでもよい。トレーニング終了時に深層学習モデルを出力する。端末装置に返送するようにしてもよいし、配信サーバに送信して他のユーザに配信して利用するようにしてもよい。トレーニングが終了していないと、次のバッチのトレーニングサンプルを更新してステップ203を実行し続ける。
さらに、深層学習モデルをトレーニングするための方法の別の実施例のフロー400が示される図4を参照する。該深層学習モデルをトレーニングするための方法のフロー400は、ステップ401~ステップ405を含む。
ステップ401:深層学習モデルのモデル記述情報及び構成情報を取得する。
ステップ401はステップ201とほぼ同様であるので、ここでは説明を省略する。
ステップ402:構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの割合に基づいてセクションごとに割り当て対象であるリソースの数を計算する。
ステップ402は、ステップ202とほぼ同様であり、構成情報には各セクションに割り当てられたリソースの割合、即ちセクション毎の並列度が含まれている点が異なる。例えば、CPU上で動作するsection0はいくつかのスレッドを用いてトレーニングするか、GPU上で動作するsection1はいくつかのGPUカードを用いてトレーニングするか等である。このような計算リソースの割合を構成することをサポートする方式は、異なる装置の計算速度の違いによる待ち時間を十分に埋めることができる。例えば、上記のネットワークにおいて、section1の計算時間がsection2の5倍であると、section1とsection2との計算リソースを5:1に構成することで、2つのsectionの実行時間を接近させて、各装置の計算リソースを十分に利用することができる。
ステップ403:各セクションに割り当てられたリソースの名称及び数に基づいてモデル記述情報を対応するリソースにロードして実行する。
ステップ404:あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存し、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にする。
ステップ405:トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力する。
ステップ403~ステップ405はステップ202~204とほぼ同様であるので、ここでは説明を省略する。
図4から分かるように、図2に対応する実施例に比べ、本実施例に係る深層学習モデルをトレーニングするための方法のフロー400は、異種装置の特性を革新的に利用し、計算リソースの割合を構成することをサポートすることで、高スループットの計算装置を最大限に利用することができ、システムの全体性能が最大化されることができ、図5に示すように、横縞:縞なし:縦縞のリソースの使用割合を2:1:2にすることにより、全ての装置の利用率を十分に満足させることができる。ここで、1~4、a~dはそれぞれ処理対象のデータを表す。横縞及び縦縞は2つのCPUによる処理を表し、縞なしは1つのGPUによる処理を表す。GPUはCPUよりも処理速度が速いため、横方向に占める時間幅が小さい。
本発明は、上記の革新点に加えて、さらに当然ながらデータ並列拡張をサポートする。即ち、上記のように改善されたProgramを完全に複数部コピーした後、データを対応する部数に分割して、トレーニングを同時に行う。
本発明は、モデル並列及びデータ並列の両方の能力を兼ね備えていることが分かる。両者の能力を統合すると同時に、異種装置をサポートする機能と異なる装置への計算リソース割り当てをサポートする機能を追加し、さらにトレーニングモードを多様化にする。
さらに図6を参照して、上記の各図に示される方法の実施態様として、本開示は図2に示される方法の実施例に対応する深層学習モデルをトレーニングするための装置の一実施例を提供し、当該装置は具体的に様々な電子機器に適用可能である。
図6に示すように、本実施例に係る深層学習モデルをトレーニングするための装置600は取得ユニット601、分割ユニット602、トレーニングユニット603、反復ユニット604を含む。取得ユニット601は、深層学習モデルのモデル記述情報及び構成情報を取得するように構成され、モデル記述情報は変数及び操作を含み、構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含み、分割ユニット602は、構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するように構成され、トレーニングユニット603は、あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存し、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にし、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力するトレーニングステップを実行するように構成され、反復ユニット604は、トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するように構成される。
本実施例において、深層学習モデルをトレーニングするための装置600の取得ユニット601、分割ユニット602、トレーニングユニット603、反復ユニット604の具体的な処理は、図2に対応する実施例におけるステップ201、ステップ202、ステップ203、ステップ204を参照することができる。
本実施例のいくつかの選択可能な実施形態において、構成情報は各セクションに割り当てられたリソースの割合をさらに含み、及び分割ユニット602はさらに、各セクションに割り当てられたリソースの割合に基づいて、セクションごとに割り当て対象であるリソースの数を計算し、各セクションに割り当てられたリソースの名称及び数に基づいて、モデル記述情報を対応するリソースにロードして実行するように構成される。
本実施例のいくつかの選択可能な実施形態において、分割ユニット602はさらに、分割点変数を終点とするフォワード部分を第1のセクションとして確定し、分割点変数からの残りのフォワード部分に損失部分から分割点変数までに対応する勾配変数を加算したものを第2のセクションとして確定し、分割点変数に対応する勾配変数からの残りのバックワード部分を第3のセクションとして確定するように構成される。
本実施例のいくつかの選択可能な実施形態において、取得ユニット601はさらに、モデル記述情報の操作に基づいてメモリの頻繁なインタラクション操作と計算集約型操作との間の変換変数を分割点変数として確定し、メモリの頻繁なインタラクション操作をCPUに割り当てて実行し、計算集約型操作をGPUに割り当てて実行するように構成される。
本実施例のいくつかの選択可能な実施形態において、装置600は、トレーニングサンプルを所定部数に分け、各部のトレーニングサンプルを用いてトレーニングして1組の深層学習モデルのパラメータを得、所定のラウンド毎に、各組の深層学習モデルのパラメータを1回同期するように構成される統合ユニット(図示せず)をさらに含む。例えば、各組の深層学習モデルのパラメータの平均値を、段階的な深層学習モデルのパラメータとして確定して同期する。
本実施例のいくつかの選択可能な実施形態において、コンテキスト情報がキューを介して転送される。
以下、本開示の実施例を実現するのに適した電子機器(例えば、図1におけるサーバ又は端末装置)700の構造概略図が示される図7を参照する。本開示の実施例に係る端末装置は、携帯電話、ノートパソコン、デジタル放送受信装置、PDA(パーソナルデジタルアシスタント)、PAD(タブレットPC)、PMP(ポータブルマルチメディアプレイヤー)、車載端末(例えば、カーナビゲーション端末)などの携帯端末、及びデジタルTV、デスクトップ型コンピュータ等の固定端末等を含み得るが、これらに限定されない。図7に示される端末装置/サーバはただの例示に過ぎず、本開示の実施例の機能及び使用範囲にいかなる限定を加えるものではない。
図7に示すように、電子機器700は、読み出し専用メモリ(ROM)702に格納されているプログラム又は記憶デバイス708からランダムアクセスメモリ(RAM)703にロードされたプログラムによって様々な適当な動作及び処理を実行することができる処理デバイス(例えば、中央処理装置、グラフィックプロセッサ等)701を含んでもよい。RAM703には、電子機器700の操作に必要な様々なプログラム及びデータがさらに格納されている。処理デバイス701、ROM702及びRAM703がバス704を介して互いに接続されている。入力/出力(I/O)インタフェース705もバス704に接続されている。
通常、I/Oインタフェース705には、例えば、タッチスクリーン、タッチパッド、キーボード、マウス、カメラ、マイク、加速度計、ジャイロ等を含む入力デバイス706、例えば、液晶ディスプレイ(LCD)、スピーカ、バイブレータ等を含む出力デバイス707、例えば磁気テープ、ハードディスク等を含む記憶デバイス708及び通信デバイス709が接続されてもよい。通信デバイス709は、電子機器700が他のデバイスと無線又は有線で通信してデータを交換することを可能にする。図7は、様々なデバイスを有する電子機器700が示されているが、示されたデバイスの全てを実施又は具備するように要求しないことを理解されたい。これより多い又は少ないデバイスが代替的に実施され又は具備されてもよい。図7に示すそれぞれのブロックは、1つのデバイスを示すものであってもよいし、必要に応じて複数のデバイスを示すものであってもよい。
特に、本開示の実施例によれば、以上でフローチャートを参照して記述されたプロセスは、コンピュータソフトウェアプログラムとして実現されてもよい。例えば、本開示の実施例は、コンピュータ可読媒体に担持されるコンピュータプログラムを備えるコンピュータプログラム製品を備え、該コンピュータプログラムはフローチャートで示される方法を実行するためのプログラムコードを含む。このような実施例において、該コンピュータプログラムは、通信デバイス709を介してネットワークからダウンロードされてインストールされてもよく、又は記憶デバイス708からインストールされてもよく、又はROM702からインストールされてもよい。該コンピュータプログラムが処理デバイス701によって実行される場合に、本開示の実施例の方法で限定された上記の機能を実行する。注意すべきなのは、本開示の実施例に記載のコンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体、又はこれらの任意の組み合わせであってもよい。コンピュータ可読記憶媒体は、例えば、電気的、磁気的、光学的、電磁的、赤外線の、又は半導体のシステム、装置又はデバイス、或いはこれらの任意の組み合わせであってもよいがこれらに限定されない。コンピュータ可読記憶媒体のより具体的な例としては、1本又は複数の導線を有する電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM若しくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、光メモリ、磁気メモリ、又はこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。本開示の実施例において、コンピュータ可読記憶媒体は、命令実行システム、装置若しくはデバイスで使用可能な、又はそれらに組み込まれて使用可能なプログラムを包含又は格納する任意の有形の媒体であってもよい。本開示の実施例において、コンピュータ可読信号媒体は、ベースバンド内で、又はキャリアの一部として伝送される、コンピュータ可読プログラムコードが担持されたデータ信号を含んでもよい。このような伝送されたデータ信号は、様々な形態をとることができ、電磁信号、光信号、又はこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。コンピュータ可読信号媒体は、さらにコンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってもよい。該コンピュータ可読信号媒体は、命令実行システム、装置若しくはデバイスによって使用されるか、又はそれらに組み込まれて使用されるプログラムを、送信、伝送又は転送することができる。コンピュータ可読媒体に含まれるプログラムコードは任意の適切な媒体で伝送することができ、有線、光ケーブル、RF(無線周波数)など、又はこれらの任意の適切な組み合わせを含むが、これらに限定されない。
上記のコンピュータ可読媒体は、上記の電子機器に含まれるものであってもよく、独立に存在して該電子機器に組み込まれていないものであってもよい。上記コンピュータ可読媒体には1つ又は複数のプログラムが担持され、上記1つ又は複数のプログラムが該電子機器に実行される場合に、深層学習モデルのモデル記述情報及び構成情報を取得するステップであって、モデル記述情報は変数及び操作を含み、構成情報は分割点変数、各セクションに割り当てられたリソースの名称を含むステップと、構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するステップと、あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存し、第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にし、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力するトレーニングステップを実行するステップと、トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するステップと、を該電子機器に実行させる。
1つ又は複数種のプログラミング言語又はそれらの組み合わせで、本開示の実施例の操作を実行するためのコンピュータプログラムコードを編集することができ、前記プログラミング言語には、オブジェクト指向プログラミング言語、例えばJava、Smalltalk、C++が含まれ、通常のプロシージャ向けプログラミング言語、例えば「C」言語又は類似しているプログラミング言語も含まれる。プログラムコードは、完全にユーザーコンピュータで実行されてもよいし、部分的にユーザーコンピュータに実行されてもよいし、スタンドアロンソフトウェアパッケージとして実行されてもよいし、部分的にユーザーコンピュータで、部分的にリモートコンピュータで実行されてもよい、又は完全にリモートコンピュータ又はサーバで実行されてもよい。リモートコンピュータに係る場合に、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介して、ユーザーコンピュータ、又は、外部コンピュータに接続できる(例えば、インターネットサービスプロバイダによりインターネットを介して接続できる)。
図面におけるフローチャート及びブロック図は、本開示の各実施例に係るシステム、方法及びコンピュータプログラム製品により実現可能なアーキテクチャ、機能及び操作を示す。ここで、フローチャート又はブロック図における各ブロックは、モジュール、プログラムセクション若しくはコードの一部を示してもよく、該モジュール、プログラムセグメント、又はコードの一部は、規定されたロジック機能を達成するための1つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様において、ブロック内に示された機能は、図面に示された順番とは異なるもので実行されてもよい。例えば、連続して示された2つのブロックは、実際には関連する機能に応じて、ほぼ並列に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図及び/又はフローチャートにおける各ブロック、並びに、ブロック図及び/又はフローチャートにおけるブロックの組み合わせは、規定された機能若しくは操作を実行する、ハードウェアに基づく専用システムで実現されてもよく、又は専用ハードウェアとコンピュータ命令との組み合わせで実行されてもよい。
本開示の実施例に係るユニットは、ソフトウェアの形式で実現されてもよいし、ハードウェアの形式で実現されてもよい。記述されたユニットは、プロセッサに設けられてもよく、例えば、取得ユニット、分割ユニット、トレーニングユニット及び反復ユニットを備えるプロセッサと記述されてもよい。ここで、これらのユニットの名称は、該ユニット自体を限定するものではなく、例えば、取得ユニットがさらに「深層学習モデルのモデル記述情報及び構成情報を取得するユニット」と記述されてもよい。
以上の記載は、本開示の好ましい実施例、及び使用される技術的原理に関する説明に過ぎない。本開示に係る発明の範囲が、上記の技術的特徴の特定の組み合わせからなる技術案に限定されるものではなく、上記の本発明の趣旨を逸脱しない範囲で、上記の技術的特徴又はそれらの同等の特徴を任意に組み合わせてなる他の技術案も含むべきであることを、当業者に理解されたい。例えば、上記の特徴と、本開示に開示された類似の機能を持っている技術的特徴(これらに限定されていない)とを互いに置き換えてなる技術案が挙げられる。

Claims (15)

  1. 深層学習モデルのモデル記述情報及び構成情報を取得するステップであって、前記モデル記述情報は変数及び操作を含み、前記構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含む、ステップと、
    前記構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するステップと、
    あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存することと、前記第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得ることと、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にすることと、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力することとを含むトレーニングステップを実行する、ステップと、
    トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するステップと、
    を含む深層学習モデルをトレーニングするための方法。
  2. 前記構成情報は各セクションに割り当てられたリソースの割合をさらに含み、
    前記各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するステップは、
    各セクションに割り当てられたリソースの割合に基づいて、セクションごとに割り当て対象であるリソースの数を計算することと、
    各セクションに割り当てられたリソースの名称及び数に基づいて、モデル記述情報を対応するリソースにロードして実行することと、を含む請求項1に記載の方法。
  3. 前記の前記構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するステップは、
    分割点変数を終点とするフォワードセクションを第1のセクションとして確定することと、
    分割点変数からの残りのフォワードセクションに損失セクションから前記分割点変数までに対応する勾配変数を加算したものを第2のセクションとして確定することと、
    前記分割点変数に対応する勾配変数からの残りのバックワードセクションを第3のセクションとして確定することと、を含む請求項1に記載の方法。
  4. 前記深層学習モデルのモデル記述情報及び構成情報を取得するステップは、
    前記モデル記述情報の操作に基づいてメモリの頻繁なインタラクション操作と計算集約型操作との間の変換変数を分割点変数として確定することと、
    メモリの頻繁なインタラクション操作をCPUに割り当てて実行することと、
    計算集約型操作をGPUに割り当てて実行することと、を含む請求項1に記載の方法。
  5. 前記方法は、
    トレーニングサンプルを所定部数に分けるステップと、
    各部のトレーニングサンプルを用いてトレーニングして1組の深層学習モデルのパラメータを得るステップと、
    所定のラウンド毎に、各組の深層学習モデルのパラメータを1回同期するステップと、をさらに含む請求項1に記載の方法。
  6. コンテキスト情報はキューを介して伝送される請求項1~5のいずれか一項に記載の方法。
  7. 深層学習モデルのモデル記述情報及び構成情報を取得するように構成される取得ユニットであって、前記モデル記述情報は変数及び操作を含み、前記構成情報は分割点変数と、各セクションに割り当てられたリソースの名称とを含む取得ユニットと、
    前記構成情報における分割点変数に基づいてモデル記述情報を少なくとも2つのセクションに分割するとともに、各セクションに割り当てられたリソースの名称に基づいてモデル記述情報を対応するリソースにロードして実行するように構成される分割ユニットと、
    あるバッチのトレーニングサンプルを取得して該バッチのトレーニングサンプルを第1のセクションのモデル記述情報に対応するリソースに入力してトレーニングを開始し、得られた中間結果を第1のコンテキスト情報に保存することと、前記第1のコンテキスト情報を次のセクションのモデル記述情報に対応するリソースに入力し、第2のコンテキスト情報を得ることと、このように類推して最後のセクションのモデル記述情報に対応するリソースの実行結果を得るまで同様にすることと、トレーニング終了条件が満たされると、トレーニング済み深層学習モデルを出力することとを含むトレーニングステップを実行するように構成されるトレーニングユニットと、
    トレーニング終了条件が満たされない場合、トレーニング終了条件が満たされるまで次のバッチのトレーニングサンプルを取得して前記トレーニングステップを実行するように構成される反復ユニットと、を含む深層学習モデルをトレーニングするための装置。
  8. 前記構成情報は各セクションに割り当てられたリソースの割合をさらに含み、
    前記分割ユニットはさらに、
    各セクションに割り当てられたリソースの割合に基づいて、セクションごとに割り当て対象であるリソースの数を計算し、
    各セクションに割り当てられたリソースの名称及び数に基づいて、モデル記述情報を対応するリソースにロードして実行するように構成される請求項7に記載の装置。
  9. 前記分割ユニットはさらに、
    分割点変数を終点とするフォワードセクションを第1のセクションとして確定し、
    分割点変数からの残りのフォワードセクションに損失セクションから前記分割点変数までに対応する勾配変数を加算したものを第2のセクションとして確定し、及び
    前記分割点変数に対応する勾配変数からの残りのバックワードセクションを第3のセクションとして確定するように構成される請求項7に記載の装置。
  10. 前記取得ユニットはさらに、
    前記モデル記述情報の操作に基づいてメモリの頻繁なインタラクション操作と計算集約型操作との間の変換変数を分割点変数として確定し、
    メモリの頻繁なインタラクション操作をCPUに割り当てて実行し、
    計算集約型操作をGPUに割り当てて実行するように構成される請求項7に記載の装置。
  11. 前記装置は、
    トレーニングサンプルを所定部数に分け、
    各部のトレーニングサンプルを用いてトレーニングして1組の深層学習モデルのパラメータを得、
    所定のラウンド毎に、各組の深層学習モデルのパラメータを1回同期するように構成される統合ユニットをさらに含む請求項7に記載の装置。
  12. コンテキスト情報はキューを介して伝送される請求項7~11のいずれか一項に記載の装置。
  13. 1つ又は複数のプロセッサと、
    1つ又は複数のプログラムが格納されている記憶装置と、を含む電子機器であって、
    前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行される場合に、前記1つ又は複数のプロセッサに請求項1~6のいずれか一項に記載の方法を実現させる電子機器。
  14. コンピュータプログラムが格納されているコンピュータ可読媒体であって、 前記プログラムがプロセッサによって実行される場合に、請求項1~6のいずれか一項に記載の方法を実現するコンピュータ可読記憶媒体。
  15. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサによって実行されると、請求項1~6のいずれか1項に記載の方法を実現するコンピュータプログラム。
JP2020572679A 2019-11-25 2020-06-09 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム Active JP7029554B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201911162586.0 2019-11-25
CN201911162586.0A CN110889492B (zh) 2019-11-25 2019-11-25 用于训练深度学习模型的方法和装置
PCT/CN2020/095192 WO2021103479A1 (zh) 2019-11-25 2020-06-09 用于训练深度学习模型的方法和装置

Publications (2)

Publication Number Publication Date
JP2022515302A JP2022515302A (ja) 2022-02-18
JP7029554B2 true JP7029554B2 (ja) 2022-03-03

Family

ID=69748561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020572679A Active JP7029554B2 (ja) 2019-11-25 2020-06-09 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム

Country Status (5)

Country Link
US (1) US20210216875A1 (ja)
EP (1) EP3876161A4 (ja)
JP (1) JP7029554B2 (ja)
CN (1) CN110889492B (ja)
WO (1) WO2021103479A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110889492B (zh) * 2019-11-25 2022-03-08 北京百度网讯科技有限公司 用于训练深度学习模型的方法和装置
CN111859904A (zh) * 2020-07-31 2020-10-30 南京三百云信息科技有限公司 Nlp模型优化方法、装置以及计算机设备
CN112329919B (zh) * 2020-11-05 2022-07-29 北京百度网讯科技有限公司 模型训练方法及装置
CN112508188A (zh) * 2020-12-01 2021-03-16 北京奇艺世纪科技有限公司 一种分布式模型训练系统、方法、装置、设备和存储介质
CN112508191A (zh) * 2020-12-14 2021-03-16 北京地平线信息技术有限公司 训练深度学习模型的方法及装置、电子设备及存储介质
CN112966829A (zh) * 2021-03-03 2021-06-15 山东英信计算机技术有限公司 一种深度学习模型的训练方法、装置、设备及可读介质
CN113032117A (zh) * 2021-03-10 2021-06-25 北京百度网讯科技有限公司 深度学习框架的训练方法、装置及存储介质
CN113177632B (zh) * 2021-04-13 2022-10-14 支付宝(杭州)信息技术有限公司 一种基于流水线并行的模型训练方法、装置以及设备
CN113065666A (zh) * 2021-05-11 2021-07-02 海南善沙网络科技有限公司 一种神经网络机器学习模型训练用分布式计算方法
CN113961351B (zh) * 2021-10-28 2022-12-30 北京百度网讯科技有限公司 深度学习模型的分布式训练方法、装置、设备及存储介质
CN114091688B (zh) * 2021-11-25 2022-05-20 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质
CN114169427B (zh) * 2021-12-06 2022-10-04 北京百度网讯科技有限公司 基于端到端自适应的分布式训练方法、装置、设备
CN114723012A (zh) * 2022-04-14 2022-07-08 支付宝(杭州)信息技术有限公司 基于分布式训练系统的计算方法和装置
CN114841341B (zh) * 2022-04-25 2023-04-28 北京百度网讯科技有限公司 图像处理模型训练及图像处理方法、装置、设备和介质
CN116596091B (zh) * 2022-11-08 2024-02-02 北京百度网讯科技有限公司 模型训练方法、装置、设备以及存储介质
CN117540071B (zh) * 2024-01-09 2024-04-02 南京华芯科晟技术有限公司 一种针对查找引擎的属性表项的配置方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016189675A1 (ja) 2015-05-27 2016-12-01 株式会社日立製作所 ニューラルネットワークの学習装置及び学習方法
US20190073590A1 (en) 2017-09-01 2019-03-07 Facebook, Inc. Sparse Neural Network Training Optimization
JP2019185784A (ja) 2018-04-12 2019-10-24 ジルファルコン テクノロジー インコーポレイテッドGyrfalcon Technology Inc. モジュール接続されているcnnベース集積回路を用いた深層学習画像処理システム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106033554A (zh) * 2015-03-13 2016-10-19 中国科学院声学研究所 一种基于分段的两级深度学习模型的大数据处理方法
CN106156810B (zh) * 2015-04-26 2019-12-03 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
JP6776696B2 (ja) * 2016-07-26 2020-10-28 富士通株式会社 並列情報処理装置、情報処理方法、およびプログラム
CN106502791B (zh) * 2016-10-14 2019-06-25 浪潮电子信息产业股份有限公司 一种任务分配方法及装置
US10776714B2 (en) * 2016-11-04 2020-09-15 Google Llc Constructing and processing computational graphs for dynamically structured machine learning models
CN107766148B (zh) * 2017-08-31 2021-02-19 北京百度网讯科技有限公司 一种异构集群及任务处理方法和装置
CN108734193A (zh) * 2018-03-27 2018-11-02 合肥麟图信息科技有限公司 一种深度学习模型的训练方法及装置
US10769526B2 (en) * 2018-04-24 2020-09-08 Intel Corporation Machine learning accelerator architecture
CN109902818B (zh) * 2019-01-15 2021-05-25 中国科学院信息工程研究所 一种面向深度学习训练任务的分布式加速方法及系统
CN109976903B (zh) * 2019-02-22 2021-06-29 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统
CN110889492B (zh) * 2019-11-25 2022-03-08 北京百度网讯科技有限公司 用于训练深度学习模型的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016189675A1 (ja) 2015-05-27 2016-12-01 株式会社日立製作所 ニューラルネットワークの学習装置及び学習方法
US20190073590A1 (en) 2017-09-01 2019-03-07 Facebook, Inc. Sparse Neural Network Training Optimization
JP2019185784A (ja) 2018-04-12 2019-10-24 ジルファルコン テクノロジー インコーポレイテッドGyrfalcon Technology Inc. モジュール接続されているcnnベース集積回路を用いた深層学習画像処理システム

Also Published As

Publication number Publication date
WO2021103479A1 (zh) 2021-06-03
EP3876161A1 (en) 2021-09-08
JP2022515302A (ja) 2022-02-18
CN110889492A (zh) 2020-03-17
CN110889492B (zh) 2022-03-08
EP3876161A4 (en) 2022-10-12
US20210216875A1 (en) 2021-07-15

Similar Documents

Publication Publication Date Title
JP7029554B2 (ja) 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム
Agliamzanov et al. Hydrology@ Home: a distributed volunteer computing framework for hydrological research and applications
CN111475235B (zh) 函数计算冷启动的加速方法、装置、设备及存储介质
CN114020470B (zh) 资源分配方法、装置、可读介质及电子设备
CN111580974B (zh) Gpu实例分配方法、装置、电子设备和计算机可读介质
CN114610474A (zh) 一种异构超算环境下多策略的作业调度方法及系统
CN110764892A (zh) 任务处理方法、设备及计算机可读存储介质
Kovachev et al. Beyond the client-server architectures: A survey of mobile cloud techniques
CN114675964A (zh) 基于联邦决策树模型训练的分布式调度方法、系统及介质
CN110909527B (zh) 文本处理模型的运行方法、装置、电子设备、及存储介质
CN114995997A (zh) 任务处理方法
CN116261718A (zh) 用于调谐大规模深度学习工作负载的超参数的资源分配
CN115775199B (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
CN110120959A (zh) 大数据推送方法、装置、系统、设备及可读存储介质
CN111813541B (zh) 一种任务调度方法、装置、介质和设备
Thanapal et al. A framework for computational offloading to extend the energy of mobile devices in mobile cloud computing
CN115525425B (zh) 基于云原生技术的联邦学习计算引擎编排方法及其设备
CN114153620B (zh) Hudi运行环境资源优化分配方法及装置
CN112148448B (zh) 资源分配方法、装置、设备和计算机可读介质
CN117827386A (zh) 调度方法、调度装置、电子设备及存储介质
CN116932140A (zh) 基于跨主机资源的数据处理方法及相关产品
CN118035618A (en) Data processor, data processing method, electronic device, and storage medium
CN112416931A (zh) 信息生成方法、装置和电子设备
CN116388388A (zh) 配用电终端交互方法、装置、计算机设备和存储介质
CN117667411A (zh) 模型任务的分配方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220218

R150 Certificate of patent or registration of utility model

Ref document number: 7029554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150