JP2021128757A - タスク並列処理の実現方法、装置、機器及び媒体 - Google Patents

タスク並列処理の実現方法、装置、機器及び媒体 Download PDF

Info

Publication number
JP2021128757A
JP2021128757A JP2020217476A JP2020217476A JP2021128757A JP 2021128757 A JP2021128757 A JP 2021128757A JP 2020217476 A JP2020217476 A JP 2020217476A JP 2020217476 A JP2020217476 A JP 2020217476A JP 2021128757 A JP2021128757 A JP 2021128757A
Authority
JP
Japan
Prior art keywords
operator
task
parallel
graph
execution cost
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.)
Granted
Application number
JP2020217476A
Other languages
English (en)
Other versions
JP7094352B2 (ja
Inventor
ダーシァン・ドン
Daxiang Dong
ハイフォン・ワン
Haifeng Wang
ディエンハイ・ユー
Dianhai Yu
イェンジュン・マー
Yanjun Ma
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 JP2021128757A publication Critical patent/JP2021128757A/ja
Application granted granted Critical
Publication of JP7094352B2 publication Critical patent/JP7094352B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ディープラーニングモデル計算過程の並列処理効率を向上する方法、装置、機器及び媒体を提供する。
【解決手段】方法は、ターゲットタスクの少なくとも1つの並列計算グラフを決定するステップと、演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、並列計算グラフにおける演算子タスクをクラスタ内でスケジューリングして実行するステップと、を含む。
【選択図】図1

Description

本出願の実施例は、コンピュータ技術に関し、具体的には人工知能技術及び並列処理技術に関する。
人工知能技術の発展に伴い、ディープラーニング技術がますます使用されている。ディープラーニング技術には、典型的に、ディープラーニングモデルの訓練過程、及び訓練後のディープラーニングモデルの応用過程が含まれている。
現在、ディープラーニングモデル訓練過程及び応用過程の計算量が増加するにつれて、時間を短縮するために、並列処理が徐々に採用されている。すなわち、ディープラーニングモデルの訓練又は応用タスクは、並列処理を行うために、複数のノードで構成されるクラスタに割り当てられる。例えば、GPUマルチマシンマルチカードを用いて並行訓練を行う。
従来技術において、いかにディープラーニングモデル計算過程の並列処理効率を向上できるかは、現在の研究のホットスポットの1つとなっている。
本出願の実施例は、クラスタにおけるタスクの並列処理効率を向上できるタスク並列処理の実現方法、装置、機器及び媒体を提供する。
第1の態様では、本出願の実施例は、
複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定するステップと、
前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、
決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行するステップと、を含む、タスク並列処理の実現方法を提供する。
本出願の実施例の技術案は、ターゲットタスクに並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタにおける演算子タスクのハードウェア実行コストをスクリーニング根拠として導入して考慮することにより、ターゲットタスクの実行を異なる環境状況のクラスタにより適合させ、最適な並列効率を達成することができる。
任意的には、クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するステップと、
各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するステップと、
前記総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、を含む。
上記出願の1つの選択可能な実施形態では、単一の演算子タスクのハードウェア実行コストを取得して、総実行コストを計算して決定することにより、クラスタにおける並列計算グラフ及び演算子スケジューリングスキームの総実行コストを正確に取得でき、スクリーニング効果がより正確になる。
任意的には、前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するステップは、
前記並列計算グラフの演算子タスクを、設定された規模の処理を実行するように前記クラスタにスケジューリングするステップと、
前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップと、を含む。
任意的には、各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するステップは、
前記演算子スケジューリングスキームにおけるスケジューリング順序と、前記並列計算グラフにおける各演算子タスクの並列関係とに基づき、各前記演算子タスクのハードウェア実行コストを統計し、前記総実行コストを計算するステップを含む。
任意的には、クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリング特徴、及び前記クラスタのハードウェア特徴に応じて、スケジューリングスキームモデルに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で処理される総実行コストを予測するステップと、
予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、を含む。
上記出願の1つの選択可能な実施形態では、並列計算度、演算子スケジューリングスキーム、及びクラスタの各態様の特徴、及び対応する総実行コストに対してモデル学習を行うことにより、クラスタで実測計算してハードウェア実行コストを収集することなく、モデルに基づいて総実行コストを予測することができ、それにより、リソース占有を減少させ、スケジューリングスキームのスクリーニング効率を向上させることができる。
任意的には、予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定した後に、
スクリーニングして決定した前記並列計算グラフ及び/又は演算子スケジューリングスキームの数が複数である場合、各グループの前記並列計算グラフ及び演算子スケジューリングスキームに対して、それぞれ演算子タスクを前記クラスタ内にスケジューリングして実行するステップと、
前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップと、
前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフ及び演算子スケジューリングスキームの総実行コストを計算するステップと、
計算した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームを再スクリーニングして決定するステップと、をさらに含む。
上記出願の1つの選択可能な実施形態では、モデル予測及び実測計算を組み合わせて採用し、スケジューリングスキームのスクリーニング効率及びリソースの占有状況を兼ねる。
任意的には、該方法は、
クラスタ内で実行された履歴の並列計算グラフ及び演算子スケジューリングスキームを訓練サンプルとして取得するステップと、
各訓練サンプルにおける並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、前記クラスタのハードウェアの特徴、及び結果としての総実行コストを用いて、スケジューリングスキームモデルを訓練するステップとをさらに含む。
任意的には、
前記並列計算グラフの演算子の特徴は、演算子タスクのハードウェア実行コスト、演算子タスクの数、演算子タスクのパラメータ、演算子タスクのタイプ、及び通信演算子タスクの数の少なくとも1つを含み、
前記演算子スケジューリングスキームのスケジューリングの特徴は、通信演算子タスクの入次数演算子タスク及び出次数演算子タスクの数及び種類、並びに、並列計算グラフの並列度の少なくとも1つを含み、
前記クラスタのノードハードウェア特徴は、ノードの数、及びノードのハードウェア性能指標を含み、
前記総実行コストは、正規化処理されたデータである。
任意的には、前記スケジューリングスキームモデルは、線形回帰モデルである。
任意的には、ターゲットタスクの少なくとも1つの並列計算グラフを決定するステップは、
前記ターゲットタスクのスタンドアロン計算グラフと前記クラスタ内のノード数とに基づいて、少なくとも1つの前記並列計算グラフを生成するステップを含む。
任意的には、前記演算子タスクのタイプは、計算クラスと通信クラスとを少なくとも含み、
前記計算クラスの演算子タスクは、データを計算することに用いられ、前記通信クラスの演算子タスクは、ノード間でデータを伝送することに用いられる。
上記出願の1つの選択可能な実施形態では、ターゲットタスクは、好ましくは、機器学習類タスクであり、本出願の実施例の利点は、ディープラーニングの分野で特に顕著である。ディープラーニングの分野におけるターゲットタスクは、一般には、機械学習モデルの訓練又は実際のアプリケーションの実行であり、ターゲットタスクの演算子タスクは多く、かつ関係が複雑であり、実行可能なスケジューリングスキームが複数あり、本願の実施例の技術案によれば、ディープラーニングのフレームワークが異なるハードウェア環境のクラスタで自動的に最適に近い訓練速度を得ることができる。
任意的には、前記ターゲットタスクは、機器学習モデルの訓練タスク又は運転タスクであり、前記計算クラスの演算子タスクは、数学的演算子、配列演算子、及びニューラルネットワークブロック演算子の少なくとも1つを含む。
任意的には、
前記演算子タスクのハードウェア実行コストは、前記演算子タスクの実行時間、及び前記演算子タスクのハードウェア占有データの少なくとも1つを含み、
前記ハードウェア占有データは、ビデオメモリ占有率、チップ利用率、及びネットワーク帯域幅利用率の少なくとも1つを含む。
任意的には、前記ハードウェア実行コストの種類が複数である場合、前記並列計算グラフの総実行コストが複数の種類の総実行コストの組合せ又は複数の種類の総実行コストの重み付け加算値である。
上記出願の1つの選択可能な実施形態では、ハードウェア実行コストの種類が複数であってもよく、スケジューリングスキームの総実行コストを複数の次元から決定でき、それにより、異なるニーズに応じてスケジューリングスキームをスクリーニングすることができる。
任意的には、クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
各並列計算グラフ及び初期演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフの総実行コストを決定するステップと、
前記総実行コストに基づいて複数の前記並列計算グラフをスクリーニングし、候補並列計算グラフを決定するステップと、
前記候補並列計算グラフに対して、ヒューリスティックアルゴリズムを用いて複数の候補演算子スケジューリングスキームを決定するステップと、
各グループの前記候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを決定するステップと、
前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストに基づいて、候補並列計算グラフに候補演算子スケジューリングスキームをスクリーニングするステップと、を含む。
第2の態様では、本出願の実施例は、
複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定するための計算グラフ決定モジュールと、
前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するためのスケジューリングスキームスクリーニングモジュールと、
決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行するためのタスクスケジューリング実行モジュールと、を備える、タスク並列処理の実現装置を提供する。
第3の態様では、本出願の実施例は、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されるメモリと、を備え、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令を記憶し、前記命令が前記少なくとも1つのプロセッサにより実行されることで、前記少なくとも1つのプロセッサが本出願の任意の実施例によるタスク並列処理の実現方法を実行する、電子機器を提供する。
第4の態様では、本出願の実施例は、コンピュータ命令が記憶される非一時的なコンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータ命令が実行される場合、本出願の任意の実施例によるタスク並列処理の実現方法が実行される。
第5の態様では、本出願の実施例は、コンピュータプログラムを提供し、前記コンピュータプログラムにおける命令が実行された場合に、本出願の任意の実施例によるタスク並列処理の実現方法が実行される。
上記の選択可能な形態が有する他の効果については、具体的な実施例を組み合わせて以下に説明する。
図面は、本技術案がよりよく理解されるためのものであり、本出願を限定するものではない。
本出願の第1の実施例によるタスク並列処理の実現方法のフローチャートである。 本出願の第2の実施例によるタスク並列処理の実現方法のフローチャートである。 本出願の第2の実施例が適用される並列計算グラフである。 本出願の第3の実施例によるタスク並列処理の実現方法のフローチャートである。 本出願の第4の実施例によるタスク並列処理の実現方法のフローチャートである。 本出願の第4の実施例が適用される実現過程の概略図である。 本出願の第5の実施例によるタスク並列処理の実現装置の構造概略図である。 本出願の実施例のタスク並列処理の実現方法を実現するための電子機器のブロック図である。
以下、本出願の例示的な実施例は、図面を参照して説明し、理解を容易にするためにその中には本出願の実施例の様々な詳細を含んでおり、それらは、単なる例示するものと見なされるべきである。したがって、当業者は、本出願の範囲及び趣旨から逸脱することなく、ここで説明される実施例に対して様々な変更と修正を行うことができることを理解すべきである。同様に、明確及び簡潔するために、以下の説明では、周知の機能及び構成の説明を省略する。
第1の実施例
図1は、本出願の第1の実施例によるタスク並列処理の実現方法のフローチャートである。本実施例は、ターゲットタスクをクラスタ内で並列にスケジューリングして実行する過程に適用できる。ターゲットタスクは、大量の計算を必要とする任意のタスクであってもよく、例えば、機械学習モデルの訓練過程や実行過程は、一般に大量のデータ計算を必要とするため、ターゲットタスクとすることができる。本出願の実施例に係るクラスタは、複数のノードを含み、ノードは、典型的にはCPU、GPUなど、設定されたコンピューティング機能を実行できる電子機器である。クラスタ内のノードは、異なるハードウェア性能指標を有する機器であってもよく、ソフトウェア実行環境も異なってもよい。ノード間の通信は、一定のトポロジー関係によって実現される。クラスタは、一般に、ターゲットタスクを実行するために提供されるハードウェアプラットフォームであり、クラスタごとに異なるノードハードウェア及びソフトウェアを有することができる。
本実施例によるタスク並列処理の実現方法は、以下のステップを含む。
S110:複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定する。
上記操作では、並列計算グラフは、ターゲットタスクが実行するトポロジー関係の要件を満たす複数の演算子タスクを含むグラフ構造である。演算子タスクは、独立してクラスタ内のノードにスケジューリングして実行させ得るタスクである。演算子タスクには複数のタイプがあり、典型的には計算クラスと通信クラスに分類される。前記計算クラスの演算子タスクは、データを計算することに用いられ、前記通信クラスの演算子タスクは、ノード間でデータを伝送することに用いられる。もちろん、異なるターゲットタスクに関しては、他の所望のタイプの演算子タスクがあり得ることは理解できる。
ターゲットタスクが機械学習モデルの訓練タスク又は実行タスクである場合を例にして、それに含まれる計算クラスの演算子タスクは、数学的演算子、配列演算子、及びニューラルネットワークブロック演算子のうちの少なくとも1つを含むことができる。数学的演算子は、具体的には、減算、加算、除算、及び勾配計算などの演算子を含むことができ、配列演算は、例えば、連結、スプライシング、分割、順序付けなどの演算子を含み、ニューラルネットワークブロック演算子は、例えば、分類器(softmax)、正規化(sigmoid)、活性化関数(ReLU)や畳み込みなどの演算子を含む。通信クラスの演算子タスクは、通信方式、通信後の処理アルゴリズムによって異なるグラスに細分化することができる。
演算子タスク間のエッジ関係は、演算子タスク間のデータの流れを反映する。例えば、A演算子タスクからB演算子タスクへの指示は、A演算子タスクのデータ計算結果が入力データとしてB演算子タスクに出力されることを示す。
ターゲットタスクについて、具体的には、前記ターゲットタスクのスタンドアロン計算グラフと前記クラスタ内のノード数とに基づいて、少なくとも1つの前記並列計算グラフを生成することができる。
通常、スタンドアロン計算グラフに関しては、マルチノードトポロジ規則を満たす並列計算グラフが複数存在することがある。
S120:前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定する。
いわゆる演算子スケジューリングスキームとは、設定された並列計算グラフに対して、設定された順序で演算子タスクを各ノードに割り当てて並列に実行させる具体的なスキームであり、スケジューリング順序を主に表している。上記操作では、ターゲットタスクに対して並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタにおける演算子タスクのハードウェア実行コストをスクリーニング根拠として導入して考慮する。
ハードウェア実行コストは、特定のハードウェア状態のノードにおいて特定の演算子タスクが実行されるコストを反映しており、実測収集や推定予測などの様々な手段で取得することができる。演算子タスクのハードウェア実行コストをいかに具体的に並列計算グラフ及びスケジューリングスキームのスクリーニングに使用するかについて、本出願の後続の実施例でそれぞれ詳細に説明する。
S130:決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行する。
ハードウェア実行コストに基づいてスクリーニングして決定した並列計算グラフ及び演算子スケジューリングスキームは、好ましくかつ並列効率の高いスキームである。好ましい並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記クラスタにおけるターゲットタスクの計算過程を正式に実行することができる。
本出願の実施例の技術案は、ターゲットタスクに対して並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタにおける演算子タスクのハードウェア実行コストをスクリーニング根拠として導入して考慮することにより、ターゲットタスクの実行を異なる環境状況のクラスタによりよく適合させ、最適な並列効率を達成することができる。
並列計算グラフのスケジューリング順序優劣、クラスタの負荷能力のみを考慮したスキームに比べて、クラスタノードの状態、例えばノードの計算チップ性能、ノード間の通信状態などに着目しないと、ターゲットタスク全体の実行時間に影響を与える可能性がある。例えば、ある演算子タスクの入力データが、前の入次数演算子タスクの出力データを使用する必要があり、前の入次数演算子タスクが、計算性能の悪いノードにちょうどスケジューリングされており、計算時間が長くなる場合、後続の演算子タスクが待たなければならず、その結果、全体としてターゲットタスクの計算時間を長くすることになる。
本出願の実施例の技術案を使用すると、クラスタのノードハードウェア状態をさらに考慮することができ、それにより、並列度を高め、ハードウェアリソースの利用を最適化させることができる。
第2の実施例
図2Aは、本出願の第2の実施例によるタスク並列処理の実現方法のフローチャートであり、本実施例は、上記の実施例に基づき、各演算子タスクのハードウェア実行コストを取得することで総実行コストを計算することにより、スキームをスクリーニングする。本実施例の方法は、具体的には、以下のステップを含む。
S210:ターゲットタスクの少なくとも1つの並列計算グラフを決定する。
S220:前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得する。
演算子タスクのハードウェア実行コストは、実測収集や記録からの問い合わせなど、さまざまな手段で取得できる。
好ましくは、ターゲットタスクの並列計算グラフのコンパイル段階で、小規模のヒューリスティック実行により演算子タスクのハードウェア実行コストを収集する。前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得することは、具体的には、前記並列計算グラフの演算子タスクを、設定された規模の処理を実行するように前記クラスタにスケジューリングするステップと、前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップとを含む。
上記スケジューリング過程は、デフォルトスケジューリングポリシーに基づいて、演算子スケジューリングスキームを生成してスケジューリングすることができる。1つの演算子スケジューリングスキームを用いて、トライアル及びハードウェア実行コストの収集を行ってもよく、複数の演算子スケジューリングスキームを用いて、後続の計算及び比較スクリーニングのために、それぞれトライアル及びハードウェア実行コストの収集を行ってもよい。演算子タスクは、必要なハードウェア実行コストが取得できる限り、完全な演算子スケジューリングスキームに基づいてスケジューリングされてもよいし、ローカル演算子タスクがスケジューリングされて実行されてもよい。
上記設定された規模は、一般に小規模な計算であり、例えば、演算子タスクごとに設定されたデータ量の計算を完了したり、設定された計算回数を完了したりする。より短時間で完了でき、クラスタハードウェアの現在の状態を反映でき、総実行コストを推定するのに十分であればよい。
全ての演算子タスクのハードウェア実行コストを収集して取得してもよく、一部の重要な演算子タスクのハードウェア実行コストを取得してもよい。重要ではない演算子タスクのハードウェア実行コストは、一般的には総実行コストにあまり影響しないか、一般的にはハードウェア性能による影響をあまり受けない。
異なる演算子スケジューリングスキームの場合又は異なるノードによって実行される場合、ハードウェア実行コストが大きく異なる演算子タスクも、ハードウェア実行コストにほとんど差異がない演算子タスクもある。したがって、ヒューリスティック段階では、異なる演算子スケジューリングスキームや異なるノードによって実行される場合の演算子タスクのハードウェア実行コストをできるだけ小規模な計算で得ることができる。
ヒューリスティック計算により収集されたハードウェア実行コストは、クラスタノードのハードウェア性能に応じて記録することができる。十分なデータが記録されている場合、演算子タスクのハードウェア実行コストは、その後、履歴を問い合わせることで取得できる。
S230、各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算する。
本操作は、各演算子タスクのハードウェア実行コストに基づいて、総実行コストを計算するものである。任意的には、前記演算子スケジューリングスキームにおけるスケジューリング順序と、前記並列計算グラフにおける各演算子タスクの並列関係とに基づき、各前記演算子タスクのハードウェア実行コストを統計し、前記総実行コストを計算するという操作を実行する。
総実行コストを計算することは、各工程のハードウェア実行コストを換算して累積することに相当し、並列関係にしたがって、ある演算子タスクが実行するまで待つ必要がある場合、待ちコストも総実行コストに累積する必要がある。
演算子タスクのハードウェア実行コストは、1つ又は複数であってもよく、したがって、対応する総実行コストの計算も複数の方式で具現化されてもよい。
一例として、前記演算子タスクのハードウェア実行コストは、前記演算子タスクの実行時間、及び前記演算子タスクのハードウェア占有データの少なくとも1つを含むことができる。
いわゆる算子タスクの実行時間とは、計算可能な単位実行時間、例えば、1回のデータ計算を実行する時間、単位データ量の計算を実行する時間、単位データ量を伝送する時間などであってもよい。ターゲットタスク全体を完了する処理の実行時間を換算により算出することができる。図2Bに示す並列計算グラフを例にすれば、この並列計算グラフは、A、B、C、及びDという4つの演算子タスクを含み、Aは、B及びCの入次数演算子とされ、B及びCは、Dの入次数演算子とされる。A、B、C、及びD演算子タスクの実行時間をそれぞれ4、3、5、及び1とすると、D演算子タスクが実行時にB及びC演算子タスクの出力データを待つ必要があるため、B演算子タスクの実行が完了した後、C演算子タスクの実行が完了するのを待つ必要がある。よって、総時間は4+5+1=10となる。
いわゆる演算子タスクのハードウェア占有データは、ビデオメモリ占有率、チップ使用率、及びネットワーク帯域幅使用率などの少なくとも1つを含むことができる。ハードウェア占有データは、演算子タスクの実行時のハードウェアリソースの占有状況を反映している。より多くのデータの処理過程に換算できるように、単位占有率は、好ましい。
前記ハードウェア実行コストの種類が時間のような1つである場合、総実行コストも総時間として反映される。
前記ハードウェア実行コストの種類が複数である場合、前記並列計算グラフの総実行コストは、複数の種類の総実行コストの組み合わせであってもよく、すなわち、総実行時間、総チップ占有率、総帯域占有率、又は平均占有率などの総実行コストを種類ごとに別々に計算する。これにより、そのクラスタでのそのターゲットタスクの実行を総合的に反映するために、ある並列計算グラフのある演算子スケジューリングスキームの各指標が使用される。
あるいは、前記並列計算グラフの総実行コストは、複数の種類の総実行コストの重み付け加算値であってもよい。すなわち、異なるタイプの総実行コストを正規化し、設定された重みにしたがって重み付け加算をすることにより、全体的に比較する。
S240:前記総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定する。
並列計算グラフ及び演算子スケジューリングスキームのスクリーニングは、特定の並列計算グラフに対して、それに対応する複数の演算子スケジューリングスキームからスクリーニングすることであってもよく、複数の並列計算グラフ及びその演算子スケジューリングスキームを同時にスクリーニングすることであってもよい。総実行コストが設定されたしきい値よりも低いスキームを用いてもよく、総実行コストを降順で最適に選択してもよく、需要に応じてスクリーニングしてもよい。例えば、実行時間が短いことが優先されているか、チップ占有率が低いことが優先されているなどである。
上記過程は、いずれも並列計算グラフのコンパイル段階であり、この段階は、短時間で完了でき、ターゲットタスクを開始させるユーザには知覚されない。
S250:決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行する。
並列計算グラフのコンパイル段階を完了すると、並列計算グラフ及び演算子スケジューリングスキームが決定され、次に、正式に実行段階が行われ、このように、ターゲットタスク全体の実行過程を完了する。
本実施例の技術案は、自動化並列化オプションをオンにすることにより、ユーザが意識しないまま、ターゲットタスクを提出する過程において、コンパイル段階及び実行段階を自動的に実行することができる。最適な並列計算グラフ及び演算子スケジューリングスキームを自動的に見つけることにより、一般には、全体的に20%〜40%の計算リソースを節約できる。
第3の実施例
図3は、本出願の第3の実施例によるタスク並列処理の実現方法のフローチャートであり、本実施例は、上記の実施例に基づき、モデルに基づいて総実行コストを予測するための実現方式を提供する。本実施例の方法は、以下のステップを含む。
S310:ターゲットタスクの少なくとも1つの並列計算グラフを決定する。
S320:前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、及び前記クラスタのハードウェアの特徴に応じて、スケジューリングスキームモデルに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で処理される総実行コストを予測する。
決定した並列計算グラフ及び演算子スケジューリング順序については、それらが同じ状況のクラスタに複数回割り当てられて実行される場合、それらの総実行コストは、一般的に変わらない。また、並列計算グラフにおける演算子の状況、演算子スケジューリングスキームにおけるスケジューリング順序、及びクラスタにおけるハードウェア特徴の中には、一部の特徴が総実行コストに影響を与える鍵となる特徴である。よって、機械学習モデルを構築することによって、前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、及び前記クラスタのハードウェアの特徴を学習し、総実行コストの予測を達成することができる。
スケジューリングスキームモデルの訓練学習は、主に総実行コストに影響を与える鍵となる特徴又は一般化特徴を学習することであり、次の態様を含むが、これらに限定されない。
第1の態様では、前記並列計算グラフの演算子の特徴は、演算子タスクのハードウェア実行コスト、演算子タスクの数、演算子タスクのパラメータ、演算子タスクのタイプ、及び通信演算子タスクの数の少なくとも1つを含む。
これらの中でも、演算子タスクのパラメータは、畳み込み演算子の畳み込みカーネルパラメータなど、演算子タスクの計算量に影響を与えるいくつかのパラメータであってもよい。演算子タスクのタイプは、計算クラスと通信クラスとに簡単に分類することができ、好ましくは、前述のように、減算、加算、畳み込み演算子などより具体的に分類する。演算子タスクのタイプは、モデル学習の効果にしたがって持続的に最適化され得る。
第2の態様では、前記演算子スケジューリングスキームのスケジューリング特徴は、通信クラスの演算子タスクの入次数演算子タスク及び出次数演算子タスクの数及び種類、並びに、並列計算グラフの並列度の少なくとも1つを含む。
演算子スケジューリングスキームのスケジューリング特徴は、主にスケジューリング順序を反映する。ローカルスケジューリング順序又は鍵となるスケジューリング順序を反映する特徴を用いることが好ましい。例えば、一般的には、通信演算子タスクは、どの計算クラスの演算子タスクの前後にあるかによって実行時間に影響を与えるので、通信クラスの演算子タスクの近傍にある他の計算クラスの演算子タスクのバンドル特徴、すなわち入次数演算子タスクと出次数演算子タスクの数と種類を記録し、配列として表現することができる。並列計算グラフの並列度は全体的指標であるが、スケジューリング順序を反映できる指標でもある。
第3の態様では、前記クラスタのノードハードウェア特徴は、ノードの数、及びノードのハードウェア性能指標を含む。
ノードのハードウェア性能指標は、GPUの周波数、帯域幅、メモリ容量などを含む。
第4の態様では、前記総実行コストは、正規化処理されたデータである。
異なる並列計算グラフ間の総実行コストを容易に比較できるように、総実行コストを0−1区間に正規化することが好ましい。
本実施例で採用されるスケジューリングスキームモデルは、任意的には、線形回帰モデルである。
S330:予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定する。
予測により得られる総実行コストは、計算によって得られる総実行コストと類似してもよく、これに基づいて並列計算グラフ及び演算子スケジューリングスキームがスクリーニングされる。
S340:決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行する。
本実施例では、あるクラスタにおける、ある並列計算グラフ及び演算子スケジューリングスキームの総実行コストをスケジューリングスキームモデルの方式で予測し、それによってスクリーニングを行い、クラスタのハードウェア状態を考慮し、またヒューリスティック実際計算への依存とリソース占有を減少させることができ、ターゲットタスクの実行効率をさらに向上させることができる。
本実施例で使用されるスケジューリングスキームモデルは、事前に訓練して取得することができる。すなわち、本実施例の方法は、
クラスタ内で実行された履歴の並列計算グラフ及び演算子スケジューリングスキームを訓練サンプルとして取得するステップと、
各訓練サンプルにおける並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、前記クラスタのハードウェアの特徴、及び結果としての総実行コストを用いて、スケジューリングスキームモデルを訓練するステップと、をさらに含む。
履歴のデータについては、第2の実施例の方式によって、スクリーニングして決定した並列計算グラフ及び演算子スケジューリングスキームを取得することができる。複数回記録すると、十分な訓練サンプルを取得することができる。
本出願の実施例に係る、ヒューリスティック計算による並列計算グラフ及び演算子スケジューリングスキームのスクリーニング、並びに、モデル予測による並列計算グラフ及び演算子スケジューリングスキームのスクリーニングは、独立して実施されてもよく、組み合わせて実施されてもよい。任意的には、モデル予測を粗スクリーニング方式とし、ヒューリスティクス計算を精細スクリーニング方式として、組み合わせて採用する。
この場合、予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定した後、スクリーニングして決定した前記並列計算グラフ及び/又は演算子スケジューリングスキームの数が複数である場合、各グループの前記並列計算グラフ及び演算子スケジューリングスキームに対して、それぞれ演算子タスクを前記クラスタ内にスケジューリングして実行するステップと、前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップと、前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフ及び演算子スケジューリングスキームの総実行コストを計算するステップと、計算した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームを再スクリーニングして決定するステップと、をさらに含んでもよい。
決定したクラスタのハードウェア性能は、一般的に変わらないが、異なる時期にクラスタのハードウェア性能がわずかに変化することを排除するものではない。したがって、モデル予測の方式によって粗スクリーニングされたいくつかのスキームは、ヒューリスティックに現在のクラスタにスケジューリングして実行し、ハードウェアの実行性能を実測し、さらに正確なスケジューリングスキームをスクリーニングすることができる。
第4の実施例
図4Aは、本出願の第4の実施例によるタスク並列処理の実現方法のフローチャートである。図4Bは、本出願の第4の実施例が適用される実現過程の概略図である。本実施例は、上記の実施例に基づき、1つの選択可能な実施例のスキームを提供し、具体的には、以下のステップを含む。
S410:複数の演算子タスクを含む、ターゲットタスクの複数の並列計算グラフを決定する。
具体的には、スダンドアロン計算グラフに基づき、クラスタが呼び出し可能なノードの数に基づいて、複数の並列計算グラフを大量生成することができる。並列計算グラフの生成は、マルチフロー通信、勾配集約、階層通信などの方法に基づいて、並列効率を最適化することができる。並列計算グラフの生成は、マルチフロー通信におけるフロー数、勾配集約の組合せ、通信方法(階層通信、2D通信、リング通信)などをサンプリングして複数の並列計算グラフを生成する。異なる並列計算グラフが異なる勾配集約を用いると、通信クラス演算子のタスクの変化を招く。
S420:各並列計算グラフ及び初期演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフの総実行コストを決定する。
初期演算子スケジューリングスキームは、デフォルトのスケジューリングポリシーによって決定されたスキームであってもよい。総実行コストは、ヒューリスティック計算の方式又はモデル予測の方式で決定してもよい。
任意的には、ヒューリスティック計算の方式で決定し、すなわち、S420は、具体的には、以下のステップを含む。
S421:前記並列計算グラフの演算子タスクを前記クラスタにスケジューリングして、設定された規模の処理を実行する。
複数の並列計算グラフは、呼び出し可能なクラスタノードにそれぞれスケジューリングされて処理を実行してもよい。図4Bに示すように、クラスタは、このターゲットタスクに、黒いセルによって表されるノードが呼び出し可能なリソースであることを決定することができる。
S422:前記演算子タスクがノードによって実行されるハードウェア実行コストを収集する。
S423:各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算する。
S430:前記総実行コストに基づいて複数の前記並列計算グラフをスクリーニングし、候補並列計算グラフを決定する。
具体的には、総実行コストのランキングによって、性能の良い前のK個の並列計算グラフを候補並列計算グラフとして選別することができる。
S440:前記候補並列計算グラフに対して、ヒューリスティックアルゴリズムを用いて複数の候補演算子スケジューリングスキームを決定する。
具体的には、初期演算子スケジューリングスキームに基づき、並列計算グラフのトポロジー規則を満たす前提で、並列計算グラフの様々な実行可能な演算子スケジューリングスキームに対して摂動生成を行う。例えば、すべての実行可能な演算子スケジューリングスキームは、ヒューリスティック調整によって候補演算子スケジューリングスキームとして決定されてもよい。このスキームは、自動探索アルゴリズムを利用して、スクリーニングに利用可能な複数の演算子スケジューリングスキームを決定するものである。
S450:各グループの前記候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを決定する。
前述の方法を参照すると、候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、総実行コストは決定されてもよい。総実行コストは、例えば、オフライン計算の方式によって計算されてもよい。又は、総実行コストは、モデル予測の方式によって決定されてもよい。
S460:前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストに基づいて、候補並列計算グラフに候補演算子スケジューリングスキームをスクリーニングする。
複数グループの候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを統合して、最適なスキームを選択してもよい。
S470:決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行する。
本出願の実施例の技術案では、ターゲットタスクの並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタの状況、すなわちハードウェア実行コストを導入して考慮することで、クラスタに関係のない並列処理形態よりも、ターゲットタスクの実行速度をさらに速め、並列度を高め、計算リソースを節約することができる。本出願の実施例は、ターゲットタスクをクラスタ状況に自動的にマッチングし、適切な並列計算グラフ及び演算子スケジューリングスキームをスクリーニングすることができる。この利点は、ディープラーニングの分野で特に顕著である。ディープラーニングの分野におけるターゲットタスクは、一般には、機械学習モデルの訓練又は実際のアプリケーションの実行であり、ターゲットタスクの演算子タスクは多く、かつ関係が複雑であり、実行可能なスケジューリングスキームが複数あり、本出願の実施例の技術案によれば、ディープラーニングのフレームワークが異なるハードウェア環境のクラスタで最適に近い訓練速度を自動的に得ることができる。
第5の実施例
図5は、本出願の第5の実施例によるタスク並列処理の実現装置の構造概略図であり、該装置500は、計算グラフ決定モジュール510と、スケジューリングスキームスクリーニングモジュール520と、タスクスケジューリング実行モジュール530とを備える。
計算グラフ決定モジュール510は、複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定するために用いられ、
スケジューリングスキームスクリーニングモジュール520は、前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するために用いられ、
タスクスケジューリング実行モジュール530は、決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行するために用いられる。
本出願の実施例の技術案は、ターゲットタスクに対して並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタにおける演算子タスクのハードウェア実行コストをスクリーニング根拠として導入して考慮することにより、ターゲットタスクの実行を異なる環境状況のクラスタによりよく適合させ、最適な並列効率を達成することができる。
上記スキームに基づき、1つの選択可能なスキームは以下のとおりである。スジューリングスキームスクリーニングモジュール520は、具体的には、
前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するための演算子コスト取得ユニットと、
各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するための総コスト計算ユニットと、
前記総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するためのスキームスクリーニングユニットと、を備える。
任意的には、演算子コスト取得ユニットは、具体的には、前記並列計算グラフの演算子タスクを、設定された規模の処理を実行するように前記クラスタにスケジューリングし、前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するために用いられる。
任意的には、総コスト計算ユニットは、具体的には、前記演算子スケジューリングスキームにおけるスケジューリング順序と、前記並列計算グラフにおける各演算子タスクの並列関係とに基づき、各前記演算子タスクのハードウェア実行コストを統計し、前記総実行コストを計算するために用いられる。
上記スキームに基づき、他の選択可能なスキームは以下のとおりである。スケジューリングスキームスクリーニングモジュール520は、具体的には、前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、及び前記クラスタのハードウェアの特徴に応じて、スケジューリングスキームモデルに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で処理される総実行コストを予測し、予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するために用いられる。
任意的には、前記装置は、予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定した後に、スクリーニングして決定した前記並列計算グラフ及び/又は演算子スケジューリングスキームの数が複数である場合、各グループの前記並列計算グラフ及び演算子スケジューリングスキームに対して、それぞれ演算子タスクを前記クラスタ内にスケジューリングして実行し、前記演算子タスクがノードによって実行されるハードウェア実行コストを収集し、前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフ及び演算子スケジューリングスキームの総実行コストを計算し、計算した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームを再スクリーニングして決定するための二次スクリーニングモジュールをさらに備える。
任意的には、前記装置は、
クラスタ内で実行された履歴の並列計算グラフ及び演算子スケジューリングスキームを訓練サンプルとして取得し、各訓練サンプルにおける並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、前記クラスタのハードウェアの特徴、及び結果としての総実行コストを用いて、スケジューリングスキームモデルを訓練するためのモデル訓練モジュールをさらに備える。
任意的には、
前記並列計算グラフの演算子の特徴は、演算子タスクのハードウェア実行コスト、演算子タスクの数、演算子タスクのパラメータ、演算子タスクのタイプ、及び通信演算子タスクの数の少なくとも1つを含み、
前記演算子スケジューリングスキームのスケジューリング特徴は、通信演算子タスクの入次数演算子タスク及び出次数演算子タスクの数及び種類、並びに、並列計算グラフの並列度の少なくとも1つを含み、
前記クラスタのノードハードウェア特徴は、ノードの数、及びノードのハードウェア性能指標を含み、
前記総実行コストは、正規化処理されたデータである。
任意的には、前記スケジューリングスキームモデルは、線形回帰モデルである。
任意的には、計算グラフ決定モジュール510は、具体的には、前記ターゲットタスクのスタンドアロン計算グラフと前記クラスタ内のノード数とに基づいて、少なくとも1つの前記並列計算グラフを生成するために用いられる。
任意的には、前記演算子タスクのタイプは、計算クラスと通信クラスとを少なくとも含む、
前記計算クラスの演算子タスクは、データを計算することに用いられ、前記通信クラスの演算子タスクは、ノード間でデータを伝送することに用いられる。
任意的には、前記ターゲットタスクは、機器学習モデルの訓練タスク又は運転タスクであり、前記計算クラスの演算子タスクは、数学的演算子、配列演算子、及びニューラルネットワークブロック演算子の少なくとも1つを含む。
任意的には、
前記演算子タスクのハードウェア実行コストは、前記演算子タスクの実行時間、及び前記演算子タスクのハードウェア占有データの少なくとも1つを含み、
前記ハードウェア占有データは、ビデオメモリ占有率、チップ利用率、及びネットワーク帯域幅利用率、の少なくとも1つを含む。
任意的には、前記ハードウェア実行コストの種類が複数である場合、前記並列計算グラフの総実行コストが複数の種類の総実行コストの組合せ又は複数の種類の総実行コストの重み付け加算値である。
任意的には、スケジューリングスキームスクリーニングモジュール520は、具体的には、
各並列計算グラフ及び初期演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフの総実行コストを決定し、
前記総実行コストに基づいて複数の前記並列計算グラフをスクリーニングし、候補並列計算グラフを決定し、
前記候補並列計算グラフに対して、ヒューリスティックアルゴリズムを用いて複数の候補演算子スケジューリングスキームを決定し、
各グループの前記候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを決定し、
前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストに基づいて、候補並列計算グラフに候補演算子スケジューリングスキームをスクリーニングするために用いられる。
第6の実施例
本出願の実施例によれば、本出願は、電子機器及び読み取り可能な記憶媒体をさらに提供する。
図6は、本出願の第6の実施例に係る電子機器のブロック図を示している。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、テーブル、携帯情報端末、サーバ、ブレードサーバ、大型コンピュータ、及び他の適切なコンピュータのような様々な形態のデジタルコンピュータを表すことを意図している。電子機器はまた、パーソナル・デジタル・プロセッシング、携帯電話、スマートフォン、ウェアラブル機器、及び他の同様のコンピューティング装置などの様々な形態のモバイル装置を表すこともできる。本明細書に示される部品、それらの接続及び関係、並びに、それらの機能は一例に過ぎず、本明細書に記載及び/又は要求される本出願の実装を制限することを意図していない。
図6に示すように、該電子機器は、1つ又は複数のプロセッサ601と、メモリ602と、高速インターフェース及び低速インターフェースを含む各部品を接続するためのインターフェースとを含む。各部品は、異なるバスを使用して相互に接続され、共通のマザーボードに取り付けられるか、又は必要に応じて他の方式で取り付けることができる。プロセッサは、外部入力/出力装置(例えば、インターフェースに結合された表示機器)にGUIのグラフィカル情報を表示するためにメモリ内又はメモリ上に記憶された命令を含む、電子機器内で実行される命令を処理することができる。他の実施形態では、必要に応じて、複数のプロセッサ及び/又は複数のバスを、複数のメモリ及び複数のメモリとともに使用することができる。同様に、複数の電子機器が接続されてもよく、各機器は必要な操作の一部を提供する(例えば、サーバアレイ、1グループのブレードサーバ、マルチプロセッサシステムとして)。図6には、1つのプロセッサ601を例とする。
メモリ602は、本出願による非一時的なコンピュータ読み取り可能な記憶媒体である。ここで、前記メモリには、少なくとも1つのプロセッサによって実行可能な命令を記憶することにより、本出願の実施例によるタスク並列処理の実現方法を前記の少なくとも1つのプロセッサに実行させる。本出願の非一時的なコンピュータ読み取り可能な記憶媒体には、本出願の実施例によるタスク並列処理の実現方法をコンピュータに実行させるためのコンピュータ命令が記憶されている。
メモリ602は、非一時的なコンピュータ読み取り可能な記憶媒体として、本出願の実施例におけるタスク並列処理の実現方法に対応するプログラム命令/モジュール(例えば、図5に示す計算グラフ決定モジュール510、スケジューリングスキームスクリーニングモジュール520、及びタスクスケジューリング実行モジュール530)などの、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能プログラム及びモジュールを記憶することに使用され得る。プロセッサ601は、メモリ602に記憶された非一時的なソフトウェアプログラム、命令、及びモジュールを実行することによって、サーバの様々な機能アプリケーション及びデータ処理を実行し、すなわち、上記方法の実施例におけるタスク並列処理の実現方法を実現する。
メモリ602は、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶し得るプログラム記憶領域と、タスク並列処理の実現方法による電子機器の使用により作成されたデータなどを記憶し得るデータ記憶領域と、を含むことができる。さらに、メモリ602は、高速ランダムアクセスメモリを含むことができ、少なくとも1つのディスクメモリデバイス、フラッシュメモリデバイス、又は他の非一時的な固体メモリデバイスのような非一時的なメモリも含むことができる。いくつかの実施例では、メモリ602は、プロセッサ601に対して遠隔的に配置されたメモリを任意的に含むことができ、これらの遠隔メモリは、タスク並列処理の実現方法の電子機器にネットワークを介して接続することができる。上記ネットワークの例には、インターネット、企業イントラネット、ローカルエリアネットワーク、移動体通信ネットワーク、及びこれらの組合せが含まれるが、これらに限定されるものではない。
タスク並列処理の実現方法の電子機器は、入力装置603と出力装置604とをさらに備えてもよい。プロセッサ601、メモリ602、入力装置603、及び出力装置604は、バス又は他の方式で接続されてもよく、図6にはバスを介した接続が例示されている。
入力装置603は、入力された数字又は文字情報を受信して、タスク並列処理の実現方法の電子機器のユーザ設定及び機能制御に関連するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックボード、タッチパッド、ポインティングスティック、1つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置である。出力装置604は、表示機器、補助照明装置(例えば、LED)、及び触覚フィードバック装置(例えば、振動モータ)などを含むことができる。該表示機器は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、及びプラズマディスプレイを含むことができるが、これらに限定されない。いくつかの実施形態では、表示機器はタッチスクリーンであってもよい。
本出願の実施例によれば、コンピュータプログラムが提供される。当該コンピュータプログラムにおける命令が実行された場合に、本出願の実施例のタスク並列処理の実現方法が実行される。
ここで記載されたシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、専用ASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせにおいて実現されてもよい。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムに実施されることを含むことができ、この1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈することができ、このプログラマブルプロセッサは、専用又は汎用プログラマブルプロセッサであってもよく、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受け取り、この記憶システム、この少なくとも1つの入力装置、及びこの少なくとも1つの出力装置にデータ及び命令を伝送することができる。
これらのコンピューティングプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)は、プログラマブルプロセッサの機械命令を含み、高レベルのプロセス及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブラ/機械言語を利用して実施され得る。本明細書で使用した用語「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理装置(PLD))を意味し、機械読み取り可能な信号としての機械命令を受信する機械読み取り可能な媒体を含む。機械読み取り可能な信号という用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を意味する。
ユーザとのインタラクションを提供するために、ここで記載されたシステム及び技術は、コンピュータ上で実施することができ、このコンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)、及びユーザがコンピュータに入力を提供し得るキーボード及びポインティング装置(例えば、マウス又はトラックボール)を含む。他の種類の装置は、ユーザとのインタラクションを提供するために使用されてもよく、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、また、ユーザからの入力は、任意の形式(音響入力、音声入力、又は触覚入力を含む)で受信することができる。
ここで記載されたシステム及び技術は、バックグラウンド部品を含むコンピューティングシステム(例えば、データサーバとして)、又はミドルウェア部品を含むコンピューティングシステム(例えば、アプリケーションサーバー)、又はフロントエンド部品を含むコンピューティングシステム(例えば、グラフィカルユーザインターフェース又はウェブブラウザを有するユーザコンピュータ、ユーザは、当該グラフィカルユーザインターフェース又は当該ウェブブラウザによってここで説明されるシステム及び技術の実施形態とインタラクションする)、若しくはそのようなバックグラウンド部品、ミドルウェア部品、又はフロントエンド部品の任意の組み合わせを含むコンピューティングシステムで実施され得る。システムの部品は、任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)を介して相互に接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、及びインターネットが含まれる。
コンピュータシステムは、クライアント及びサーバを含むことができる。クライアントとサーバは、一般には、互いに離れており、通常、通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータプログラムによってクライアントとサーバとの関係が生成される。
本出願の実施例の技術案によれば、ターゲットタスクに並列計算グラフ及び演算子スケジューリングスキームを決定する際に、クラスタにおける演算子タスクのハードウェア実行コストをスクリーニング根拠として導入して考慮することにより、ターゲットタスクの実行を異なる環境状況のクラスタによりよく適合させ、最適な並列効率を達成することができる。
上記に示される様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除することができることを理解されたい。例えば、本出願で開示されている技術案が所望の結果を実現できる限り、本出願に記載されている各ステップは、並列に実行されてもよいし、順次的に実行されてもよいし、異なる順序で実行されてもよいが、本明細書では限定されない。
上記の具体的な実施形態は、本出願の保護範囲を制限するものではない。当業者は、設計要件及び他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション、及び置換を行うことができる。任意の本出願の趣旨と原則内で行われる修正、同等の置換、及び改良などは、いずれも本出願の保護範囲内に含まれるべきでえある。

Claims (33)

  1. 複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定するステップと、
    前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、
    決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行するステップと、を含む、
    ことを特徴とするタスク並列処理の実現方法。
  2. クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
    前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するステップと、
    各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するステップと、
    前記総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、を含む、
    ことを特徴とする請求項1に記載のタスク並列処理の実現方法。
  3. 前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するステップは、
    前記並列計算グラフの演算子タスクを、設定された規模の処理を実行するように前記クラスタにスケジューリングするステップと、
    前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップと、を含む、
    ことを特徴とする請求項2に記載のタスク並列処理の実現方法。
  4. 各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するステップは、
    前記演算子スケジューリングスキームにおけるスケジューリング順序と、前記並列計算グラフにおける各演算子タスクの並列関係とに基づき、各前記演算子タスクのハードウェア実行コストを統計し、前記総実行コストを計算するステップを含む、
    ことを特徴とする請求項2に記載のタスク並列処理の実現方法。
  5. クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
    前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、及び前記クラスタのハードウェアの特徴に応じて、スケジューリングスキームモデルに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で処理される総実行コストを予測するステップと、
    予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップと、を含む、
    ことを特徴とする請求項1に記載のタスク並列処理の実現方法。
  6. 予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定した後に、
    スクリーニングして決定した前記並列計算グラフ及び/又は演算子スケジューリングスキームの数が複数である場合、各グループの前記並列計算グラフ及び演算子スケジューリングスキームに対して、それぞれ演算子タスクを前記クラスタ内にスケジューリングして実行するステップと、
    前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するステップと、
    前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフ及び演算子スケジューリングスキームの総実行コストを計算するステップと、
    計算した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームを再スクリーニングして決定するステップと、をさらに含む、
    ことを特徴とする請求項5に記載のタスク並列処理の実現方法。
  7. クラスタ内で実行された履歴の並列計算グラフ及び演算子スケジューリングスキームを訓練サンプルとして取得するステップと、
    各訓練サンプルにおける並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、前記クラスタのハードウェアの特徴、及び結果としての総実行コストを用いて、スケジューリングスキームモデルを訓練するステップと、をさらに含む、
    ことを特徴とする請求項5に記載のタスク並列処理の実現方法。
  8. 前記並列計算グラフの演算子の特徴は、演算子タスクのハードウェア実行コスト、演算子タスクの数、演算子タスクのパラメータ、演算子タスクのタイプ、及び通信演算子タスクの数の少なくとも1つを含み、
    前記演算子スケジューリングスキームのスケジューリングの特徴は、通信演算子タスクの入次数演算子タスク及び出次数演算子タスクの数及び種類、並びに、並列計算グラフの並列度の少なくとも1つを含み、
    前記クラスタのノードハードウェアの特徴は、ノードの数、及びノードのハードウェア性能指標を含む、
    前記総実行コストは、正規化処理されたデータである、
    ことを特徴とする請求項5に記載のタスク並列処理の実現方法。
  9. 前記スケジューリングスキームモデルは、線形回帰モデルである、
    ことを特徴とする請求項5に記載のタスク並列処理の実現方法。
  10. ターゲットタスクの少なくとも1つの並列計算グラフを決定するステップは、
    前記ターゲットタスクのスタンドアロン計算グラフと前記クラスタ内のノード数とに基づいて、少なくとも1つの前記並列計算グラフを生成するステップを含む、
    ことを特徴とする請求項1から9のいずれかに記載のタスク並列処理の実現方法。
  11. 前記演算子タスクのタイプは、計算クラスと通信クラスとを少なくとも含み、
    前記計算クラスの演算子タスクは、データを計算することに用いられ、前記通信クラスの演算子タスクは、ノード間でデータを伝送することに用いられる、
    ことを特徴とする請求項1から9のいずれかに記載のタスク並列処理の実現方法。
  12. 前記ターゲットタスクは、機器学習モデルの訓練タスク又は運転タスクであり、前記計算クラスの演算子タスクは、数学的演算子、配列演算子、及びニューラルネットワークブロック演算子の少なくとも1つを含む、
    ことを特徴とする請求項11に記載のタスク並列処理の実現方法。
  13. 前記演算子タスクのハードウェア実行コストは、前記演算子タスクの実行時間、及び前記演算子タスクのハードウェア占有データの少なくとも1つを含み、
    前記ハードウェア占有データは、ビデオメモリ占有率、チップ利用率、及びネットワーク帯域幅利用率の少なくとも1つを含む、
    ことを特徴とする請求項1から9のいずれかに記載のタスク並列処理の実現方法。
  14. 前記ハードウェア実行コストの種類が複数である場合、前記並列計算グラフの総実行コストが複数の種類の総実行コストの組合せ又は複数の種類の総実行コストの重み付け加算値である、
    ことを特徴とする請求項13に記載のタスク並列処理の実現方法。
  15. クラスタにおける前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するステップは、
    各並列計算グラフ及び初期演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフの総実行コストを決定するステップと、
    前記総実行コストに基づいて複数の前記並列計算グラフをスクリーニングし、候補並列計算グラフを決定するステップと、
    前記候補並列計算グラフに対して、ヒューリスティックアルゴリズムを用いて複数の候補演算子スケジューリングスキームを決定するステップと、
    各グループの前記候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを決定するステップと、
    前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストに基づいて、候補並列計算グラフに候補演算子スケジューリングスキームをスクリーニングするステップと、を含む、
    ことを特徴とする請求項1から9のいずれかに記載のタスク並列処理の実現方法。
  16. 複数の演算子タスクを含む、ターゲットタスクの少なくとも1つの並列計算グラフを決定するための計算グラフ決定モジュールと、
    前記演算子タスクを実行するための複数のノードを含むクラスタにおける、少なくとも1つの演算子スケジューリングスキームを有する前記並列計算グラフの演算子タスクのハードウェア実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するためのスケジューリングスキームスクリーニングモジュールと、
    決定した並列計算グラフ及び演算子スケジューリングスキームに基づいて、前記並列計算グラフにおける演算子タスクを前記クラスタ内でスケジューリングして実行するためのタスクスケジューリング実行モジュールと、を備える、
    ことを特徴とするタスク並列処理の実現装置。
  17. 前記スケジューリングスキームスクリーニングモジュールは、
    前記演算子タスクがクラスタ内でノードによって実行されるハードウェア実行コストを取得するための演算子コスト取得ユニットと、
    各前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で実行される総実行コストを計算するための総コスト計算ユニットと、
    前記総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するためのスキームスクリーニングユニットと、を備える、
    ことを特徴とする請求項16に記載のタスク並列処理の実現装置。
  18. 演算子コスト取得ユニットは、具体的には、
    前記並列計算グラフの演算子タスクを、設定された規模の処理を実行するように前記クラスタにスケジューリングし、
    前記演算子タスクがノードによって実行されるハードウェア実行コストを収集するために用いられる、
    ことを特徴とする請求項17に記載のタスク並列処理の実現装置。
  19. 総コスト計算ユニットは、具体的には、
    前記演算子スケジューリングスキームにおけるスケジューリング順序と、前記並列計算グラフにおける各演算子タスクの並列関係とに基づき、各前記演算子タスクのハードウェア実行コストを統計し、前記総実行コストを計算するために用いられる、
    ことを特徴とする請求項17に記載のタスク並列処理の実現装置。
  20. 前記スケジューリングスキームスクリーニングモジュールは、具体的には、
    前記並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、及び前記クラスタのハードウェアの特徴に応じて、スケジューリングスキームモデルに基づいて、前記並列計算グラフが前記演算子スケジューリングスキームを用いて前記クラスタ内で処理される総実行コストを予測し、
    予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定するために用いられる、
    ことを特徴とする請求項16に記載のタスク並列処理の実現装置。
  21. 予測した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームをスクリーニングして決定した後に、スクリーニングして決定した前記並列計算グラフ及び/又は演算子スケジューリングスキームの数が複数である場合、各グループの前記並列計算グラフ及び演算子スケジューリングスキームに対して、それぞれ演算子タスクを前記クラスタ内にスケジューリングして実行し、前記演算子タスクがノードによって実行されるハードウェア実行コストを収集し、前記演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフ及び演算子スケジューリングスキームの総実行コストを計算し、計算した総実行コストに基づいて、並列計算グラフ及び演算子スケジューリングスキームを再スクリーニングして決定するための二次スクリーニングモジュールをさらに備える、
    ことを特徴とする請求項20に記載のタスク並列処理の実現装置。
  22. クラスタ内で実行された履歴の並列計算グラフ及び演算子スケジューリングスキームを訓練サンプルとして取得し、各訓練サンプルにおける並列計算グラフの演算子の特徴、演算子スケジューリングスキームのスケジューリングの特徴、前記クラスタのハードウェアの特徴、及び結果としての総実行コストを用いて、スケジューリングスキームモデルを訓練するためのモデル訓練モジュールをさらに備える、
    ことを特徴とする請求項20に記載のタスク並列処理の実現装置。
  23. 前記並列計算グラフの演算子の特徴は、演算子タスクのハードウェア実行コスト、演算子タスクの数、演算子タスクのパラメータ、演算子タスクのタイプ、及び通信演算子タスクの数の少なくとも1つを含み、
    前記演算子スケジューリングスキームのスケジューリングの特徴は、通信演算子タスクの入次数演算子タスク及び出次数演算子タスクの数及び種類、並びに、並列計算グラフの並列度の少なくとも1つを含み、
    前記クラスタのノードハードウェアの特徴は、ノードの数、及びノードのハードウェア性能指標を含む、
    前記総実行コストは、正規化処理されたデータである、
    ことを特徴とする請求項20に記載のタスク並列処理の実現装置。
  24. 前記スケジューリングスキームモデルは、線形回帰モデルである、
    ことを特徴とする請求項20に記載のタスク並列処理の実現装置。
  25. 計算グラフ決定モジュールは、具体的には、
    前記ターゲットタスクのスタンドアロン計算グラフと前記クラスタ内のノード数とに基づいて、少なくとも1つの前記並列計算グラフを生成するために用いられる、
    ことを特徴とする請求項16から24のいずれかに記載のタスク並列処理の実現装置。
  26. 前記演算子タスクのタイプは、計算クラスと通信クラスとを少なくとも含み、
    前記計算クラスの演算子タスクは、データを計算することに用いられ、前記通信クラスの演算子タスクは、ノード間でデータを伝送することに用いられる、
    ことを特徴とする請求項16から24のいずれかに記載のタスク並列処理の実現装置。
  27. 前記ターゲットタスクは、機器学習モデルの訓練タスク又は運転タスクであり、前記計算クラスの演算子タスクは、数学的演算子、配列演算子、及びニューラルネットワークブロック演算子の少なくとも1つを含む、
    ことを特徴とする請求項26に記載のタスク並列処理の実現装置。
  28. 前記演算子タスクのハードウェア実行コストは、前記演算子タスクの実行時間、及び前記演算子タスクのハードウェア占有データの少なくとも1つを含み、
    前記ハードウェア占有データは、ビデオメモリ占有率、チップ利用率、及びネットワーク帯域幅利用率の少なくとも1つを含む、
    ことを特徴とする請求項16から24のいずれかに記載のタスク並列処理の実現装置。
  29. 前記ハードウェア実行コストの種類が複数である場合、前記並列計算グラフの総実行コストが複数の種類の総実行コストの組合せ又は複数の種類の総実行コストの重み付け加算値である、
    ことを特徴とする請求項28に記載のタスク並列処理の実現装置。
  30. スケジューリングスキームスクリーニングモジュールは、具体的には、
    各並列計算グラフ及び初期演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記並列計算グラフの総実行コストを決定し、
    前記総実行コストに基づいて複数の前記並列計算グラフをスクリーニングし、候補並列計算グラフを決定し、
    前記候補並列計算グラフに対して、ヒューリスティックアルゴリズムを用いて複数の候補演算子スケジューリングスキームを決定し、
    各グループの前記候補並列計算グラフ及び候補演算子スケジューリングスキームに対して、演算子タスクのハードウェア実行コストに基づいて、前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストを決定し、
    前記候補並列計算グラフ及び候補演算子スケジューリングスキームの総実行コストに基づいて、候補並列計算グラフに候補演算子スケジューリングスキームをスクリーニングするために用いられる、
    ことを特徴とする請求項16から24のいずれかに記載のタスク並列処理の実現装置。
  31. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに通信接続されるメモリと、を備え、
    前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令を記憶し、前記命令が前記少なくとも1つのプロセッサにより実行されることで、前記少なくとも1つのプロセッサが請求項1から15のいずれかに記載のタスク並列処理の実現方法を実行する、
    ことを特徴とする電子機器。
  32. コンピュータ命令が記憶される非一時的なコンピュータ読み取り可能な記憶媒体であって、
    前記コンピュータ命令が実行される場合、請求項1から15のいずれかに記載のタスク並列処理の実現方法が実行される、
    ことを特徴とする非一時的なコンピュータ読み取り可能な記憶媒体。
  33. コンピュータプログラムであって、
    前記コンピュータプログラムにおける命令が実行された場合に、請求項1から15のいずれかに記載のタスク並列処理の実現方法が実行される、
    ことを特徴とするコンピュータプログラム。
JP2020217476A 2020-02-14 2020-12-25 タスク並列処理の実現方法、装置、機器及び媒体 Active JP7094352B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010093670.8A CN111309479B (zh) 2020-02-14 2020-02-14 一种任务并行处理的实现方法、装置、设备和介质
CN202010093670.8 2020-02-14

Publications (2)

Publication Number Publication Date
JP2021128757A true JP2021128757A (ja) 2021-09-02
JP7094352B2 JP7094352B2 (ja) 2022-07-01

Family

ID=71160098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020217476A Active JP7094352B2 (ja) 2020-02-14 2020-12-25 タスク並列処理の実現方法、装置、機器及び媒体

Country Status (5)

Country Link
US (1) US11954522B2 (ja)
EP (1) EP3866008A1 (ja)
JP (1) JP7094352B2 (ja)
KR (1) KR102482122B1 (ja)
CN (1) CN111309479B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN111475684B (zh) * 2020-06-29 2020-09-22 北京一流科技有限公司 数据处理网络系统及其计算图生成方法
CN111783952B (zh) * 2020-06-30 2023-07-14 北京百度网讯科技有限公司 配置方法、装置、系统、电子设备以及存储介质
CN111899149A (zh) * 2020-07-09 2020-11-06 浙江大华技术股份有限公司 基于算子融合的图像处理方法和装置、存储介质
CN111953614B (zh) * 2020-08-07 2023-10-24 腾讯科技(深圳)有限公司 数据传输方法、装置、处理设备及介质
CN112948079B (zh) * 2021-02-18 2022-06-28 北京百度网讯科技有限公司 任务调度方法、装置、设备和计算机存储介质
US11941437B2 (en) * 2021-06-25 2024-03-26 Intel Corporation Graph partitioning to exploit batch-level parallelism
CN113449142A (zh) * 2021-06-30 2021-09-28 北京百度网讯科技有限公司 信息处理方法及装置、电子设备、存储介质及产品
CN113535400A (zh) * 2021-07-19 2021-10-22 闻泰通讯股份有限公司 并行计算资源分配方法与装置、存储介质、终端设备
CN114003306B (zh) * 2021-10-27 2024-03-15 上海商汤科技开发有限公司 一种显存优化方法、装置、设备及存储介质
CN114048030B (zh) * 2021-11-09 2022-07-26 北京百度网讯科技有限公司 调度算子的方法和装置
CN114091688B (zh) * 2021-11-25 2022-05-20 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质
WO2023096701A2 (en) * 2021-11-29 2023-06-01 University Of Southern California Scheduling distributed computing based on computational and network architecture
CN114819084B (zh) * 2022-04-26 2024-03-01 北京百度网讯科技有限公司 模型推理方法、装置、设备及存储介质
CN114996008B (zh) * 2022-05-30 2024-05-03 上海壁仞科技股份有限公司 Ai计算图多后端协同计算方法及装置
CN115269016A (zh) * 2022-09-27 2022-11-01 之江实验室 一种用于图计算的指令执行方法及装置
CN116467061B (zh) * 2023-06-19 2023-09-19 之江实验室 一种任务执行的方法、装置、存储介质及电子设备
CN116501502B (zh) * 2023-06-25 2023-09-05 电子科技大学 一种基于Pytorch框架的数据并行优化方法
CN117114091B (zh) * 2023-10-25 2024-03-05 深圳开鸿数字产业发展有限公司 基于联邦学习的计算图处理方法、计算机设备和存储介质
CN117271100B (zh) * 2023-11-21 2024-02-06 北京国科天迅科技股份有限公司 算法芯片集群调度方法、装置、计算机设备和存储介质
CN117437451B (zh) * 2023-12-21 2024-04-16 芯瞳半导体技术(山东)有限公司 图像匹配方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018538607A (ja) * 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
CN109669772A (zh) * 2018-12-28 2019-04-23 第四范式(北京)技术有限公司 计算图的并行执行方法和设备
US20190205737A1 (en) * 2017-12-30 2019-07-04 Intel Corporation Machine learning accelerator mechanism
US20190266015A1 (en) * 2018-02-27 2019-08-29 Microsoft Technology Licensing, Llc Deep neural network workload scheduling

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7110525B1 (en) * 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US8813141B2 (en) * 2007-08-08 2014-08-19 At&T Intellectual Properties I, L.P. System and method of providing video content
CN101777064A (zh) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 图片搜索系统及方法
US8266289B2 (en) * 2009-04-23 2012-09-11 Microsoft Corporation Concurrent data processing in a distributed system
CN102043673B (zh) * 2009-10-21 2015-06-03 Sap欧洲公司 并行处理中执行任务的节点数量的优化选择系统及方法
KR102032367B1 (ko) * 2012-10-05 2019-10-16 한국전자통신연구원 태스크 처리 장치 및 방법
KR101815148B1 (ko) * 2014-02-27 2018-01-04 인텔 코포레이션 설정 가능한 컴퓨팅 자원 할당 기술
EP4202782A1 (en) * 2015-11-09 2023-06-28 Google LLC Training neural networks represented as computational graphs
US10877816B2 (en) 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
US10656970B2 (en) * 2016-09-28 2020-05-19 Futurewei Technologies, Inc. Scheduling graph computing on heterogeneous processing resources based on energy efficiency
US10776121B2 (en) * 2017-05-10 2020-09-15 Atlantic Technical Organization System and method of execution map generation for schedule optimization of machine learning flows
CN107885762B (zh) * 2017-09-19 2021-06-11 北京百度网讯科技有限公司 智能大数据系统、提供智能大数据服务的方法和设备
KR20190054449A (ko) * 2017-11-13 2019-05-22 한국과학기술원 이종 클러스터 환경에서 신경망 트레이닝 가속화를 위한 연산 노드 배치 기법
CN109993299B (zh) * 2017-12-29 2024-02-27 中兴通讯股份有限公司 数据训练方法及装置、存储介质、电子装置
CN110018817A (zh) * 2018-01-05 2019-07-16 中兴通讯股份有限公司 数据的分布式运行方法及装置、存储介质及处理器
US20200301898A1 (en) * 2018-06-25 2020-09-24 BigStream Solutions, Inc. Systems and methods for accelerating data operations by utilizing dataflow subgraph templates
US20200050971A1 (en) * 2018-08-08 2020-02-13 International Business Machines Corporation Minibatch Parallel Machine Learning System Design
US20200082273A1 (en) * 2018-09-11 2020-03-12 Apple Inc. Compiling models for dedicated hardware
US10754709B2 (en) * 2018-09-26 2020-08-25 Ciena Corporation Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis
US20200184366A1 (en) * 2018-12-06 2020-06-11 Fujitsu Limited Scheduling task graph operations
CN111324445B (zh) * 2018-12-14 2024-04-02 中国科学院深圳先进技术研究院 一种任务调度模拟系统
US10949259B2 (en) * 2018-12-28 2021-03-16 Atlantic Technical Organization System and method of scheduling and computing resource allocation optimization of machine learning flows
US20200249998A1 (en) * 2019-02-01 2020-08-06 Alibaba Group Holding Limited Scheduling computation graph heterogeneous computer system
CN111859027A (zh) * 2019-04-24 2020-10-30 华为技术有限公司 图计算方法及装置
US11556756B2 (en) * 2019-04-25 2023-01-17 Alibaba Group Holding Limited Computation graph mapping in heterogeneous computer system
US11593540B1 (en) * 2019-05-31 2023-02-28 The Mathworks, Inc. Systems and methods for performing concurrency analysis in simulation environments
CN110399222B (zh) * 2019-07-25 2022-01-21 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
CN110503195A (zh) * 2019-08-14 2019-11-26 北京中科寒武纪科技有限公司 利用人工智能处理器执行任务的方法及其相关产品
CN110365799B (zh) * 2019-08-16 2022-04-22 广东浪潮大数据研究有限公司 一种集群多节点调度方法、装置和计算机可读存储介质
CN110489223B (zh) * 2019-08-26 2022-03-29 北京邮电大学 一种异构集群中任务调度方法、装置及电子设备
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018538607A (ja) * 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
US20190205737A1 (en) * 2017-12-30 2019-07-04 Intel Corporation Machine learning accelerator mechanism
US20190266015A1 (en) * 2018-02-27 2019-08-29 Microsoft Technology Licensing, Llc Deep neural network workload scheduling
CN109669772A (zh) * 2018-12-28 2019-04-23 第四范式(北京)技术有限公司 计算图的并行执行方法和设备

Also Published As

Publication number Publication date
US11954522B2 (en) 2024-04-09
US20210255896A1 (en) 2021-08-19
JP7094352B2 (ja) 2022-07-01
KR20210103928A (ko) 2021-08-24
EP3866008A1 (en) 2021-08-18
KR102482122B1 (ko) 2022-12-27
CN111309479B (zh) 2023-06-06
CN111309479A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
JP7094352B2 (ja) タスク並列処理の実現方法、装置、機器及び媒体
US10067805B2 (en) Technologies for offloading and on-loading data for processor/coprocessor arrangements
JP7214786B2 (ja) 深層学習推論エンジンのスケジューリング方法、装置、機器及び媒体
CN106528266B (zh) 一种云计算系统中的资源动态调整方法及装置
US20230091261A1 (en) Orchestration and scheduling of services
Yi et al. Efficient compute-intensive job allocation in data centers via deep reinforcement learning
Chen et al. Deep learning research and development platform: Characterizing and scheduling with qos guarantees on gpu clusters
CN105359057A (zh) 设置计算机参数使得电源工作在基于电源的功率效率峰值的范围内
US11769125B2 (en) Method and apparatus for processing transaction requests in blockchain, device and medium
US11157323B2 (en) Multiple metric based load prediction and resource allocation in an active stream processing job
CN113110914A (zh) 一种基于微服务架构的物联网平台构建方法
CN113467944B (zh) 面向复杂软件系统的资源部署装置及方法
Michelogiannakis et al. A case for intra-rack resource disaggregation in HPC
JP2022033688A (ja) メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
JP2021168128A (ja) 人材需要予測方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
Kaya et al. Seamless computation offloading for mobile applications using an online learning algorithm
Gu et al. Energy-Efficient GPU Clusters Scheduling for Deep Learning
US8838414B2 (en) Determining when to create a prediction based on deltas of metric values
Pang et al. Efficient Bare Metal Auto-scaling for NFV in Edge Computing
Yang et al. Tias: Two-level information-agnostic job scheduling in gpu clusters
Zhao et al. Power system low delay resource scheduling model based on edge computing node
CN118069302A (zh) 一种数据处理方法、装置、电子设备和存储介质
Rahimi et al. A systematic literature review on MapReduce scheduling methods
Chu et al. Running Serverless Function on Resource Fragments in Data Center
CN116610327A (zh) 一种大数据集群部署方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220502

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220527

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: 20220614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220621

R150 Certificate of patent or registration of utility model

Ref document number: 7094352

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150