JP7379668B2 - 機械学習ワークロードのためのタスクスケジューリング - Google Patents

機械学習ワークロードのためのタスクスケジューリング Download PDF

Info

Publication number
JP7379668B2
JP7379668B2 JP2022514245A JP2022514245A JP7379668B2 JP 7379668 B2 JP7379668 B2 JP 7379668B2 JP 2022514245 A JP2022514245 A JP 2022514245A JP 2022514245 A JP2022514245 A JP 2022514245A JP 7379668 B2 JP7379668 B2 JP 7379668B2
Authority
JP
Japan
Prior art keywords
host
hosts
resources
hardware
task
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
JP2022514245A
Other languages
English (en)
Other versions
JP2023511467A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2023511467A publication Critical patent/JP2023511467A/ja
Priority to JP2023187576A priority Critical patent/JP2024020271A/ja
Application granted granted Critical
Publication of JP7379668B2 publication Critical patent/JP7379668B2/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/04Architecture, e.g. interconnection topology
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Description

背景
本明細書は、概して、計算ワークロードのタスクをスケジューリングすることと、計算ワークロードのタスクを実行するために使用されるリソースを割り当てることとに関する。
分散コンピューティングシステムは、一般に、中央処理装置(CPU)、ストレージコンポーネント、および画像/音声処理アクセラレータ、映像トランスコーディングアクセラレータまたはニューラルネットワークプロセッサ(たとえば機械学習(ML)アクセラレータ)などのさまざまなリソースを含む。これらのリソースは、対話して、MLシステムを訓練するためのワークロード、または画像を分類するためのもしくは音声認識用のトランスクリプションを生成するための推論ワークロードなどの一例としての計算ワークロードのタスクを処理することができる。
ワークロードを処理する既存のスキームでは、定期的にメモリにアクセスし、互いに非ローカルの(またはリモートの)分散システム内の計算リソース間またはリソースのグループ間でデータ通信をやり取りすることが必要である。このような非ローカルメモリアクセス動作およびデータ通信は帯域幅を多用することが多いため、クロスソケット(たとえばリモート)動作用のホストの帯域幅が制限されている場合は計算クラスタの性能ボトルネックにつながる可能性がある。
概要
本文書には、大規模分散システム内の複数のホストにわたるリソースのそれぞれのグループにワークロードのタスクを割り当てることによって、機械学習(ML)ワークロードを処理する際のスケジューリングおよびリソース割り当てを改善する技術が記載されている。本文書に記載されている技術を使用して、分散システムを、分散システムの共有または共通のハードウェアバスを介してデータ通信をやり取りするリソースのグループにワークロードの各タスクを割り当てるように構成することができる。この割り当てスキームは、リソースグループの非均一メモリアクセス(non-uniform memory access:NUMA)トポロジに基づくリソース局所性を利用することによってワークロード処理時間を短縮することができる。いくつかの例において、記載されている技術を使用して、ハードウェアアクセラレータのフリートに対してNUMA認識スケジューリングを実行することにより、分散システムの個別のテンソル処理ノードで行われるニューラルネットワーク計算を加速させることができる。
本明細書に記載されている主題の一局面は、ハードウェアアクセラレータを使用して、機械学習ワークロードを実行するためのタスクをスケジューリングしてリソースを割り当てる方法であって、上記ハードウェアアクセラレータの各々は、複数のニューラルネットワーク層を含むニューラルネットワークを実行するように構成される方法で具体化することができる。上記方法は、機械学習(ML)ワークロードを実行する要求を受信することと、上記要求に基づいて、複数のホストを含む分散処理システムにおいて上記MLワークロードを実行するためのリソース要件を決定することとを含み、上記複数のホストのうちの各ホストはそれぞれの複数のハードウェアアクセラレータを含み、上記方法はさらに、上記リソース要件と各ホストの上記それぞれの複数のハードウェアアクセラレータとに基づいて、上記MLワークロードを形成するタスクのセットからそれぞれのタスクを実行するように各々が割り当てられる多数のホストを決定することを含む。
上記方法は、上記多数のホストのうちの各ホストについて、上記ホストのメモリアクセストポロジに基づいて、上記それぞれの複数のハードウェアアクセラレータを含む上記ホストのリソースを使用して上記ホストで実行されるように割り当てられた上記タスクを指定するそれぞれのタスク仕様を生成することと、上記それぞれのタスク仕様を上記多数のホストのうちの上記ホストに提供することと、上記多数のホストのうちの各ホストが上記ホストの上記それぞれのタスク仕様で指定された上記タスクを実行することによって、上記MLワークロードを実行することとを含む。
これらおよび他の実現例の各々は、任意に以下の特徴のうちの1つ以上を含み得る。たとえば、いくつかの実現例において、各ホストの上記メモリアクセストポロジは、上記ホストに対してローカルであるそれぞれのメモリを含むそれぞれの非均一メモリアクセス(NUMA)トポロジを含み、上記それぞれのメモリは、上記それぞれのメモリを上記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータと上記ホストの1つ以上の他のリソースとに結合するソケットインターフェイスを含む。
いくつかの実現例において、上記それぞれのタスク仕様で指定された上記タスクを実行することは、複数のニューラルネットワーク計算のそれぞれの部分を上記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータに割り当てたことに応答して、上記複数のニューラルネットワーク計算を行って、上記複数のニューラルネットワーク層のうちの各ニューラルネットワーク層の出力を生成することを含む。
いくつかの実現例において、上記MLワークロードを実行することは、上記ホストの制御グループの各リソースを使用して、かつ、上記それぞれのメモリと、上記ハードウェアアクセラレータと、上記ホストの上記リソースに含まれるそれぞれのプロセッサとの間でやり取りされるデータに基づいて、上記それぞれのタスク仕様についての命令を処理することを含む。
いくつかの実現例において、上記MLワークロードを実行することは、上記ホストの上記制御グループの各リソースをリンクするハードウェアソケットを介してやり取りされている上記データに基づいて上記命令を処理したことに応答して、上記それぞれのタスク仕様で指定されたタスクを実行することを含み、上記ハードウェアソケットは、上記ホストによって管理される複数のリソース間で共有されるローカル通信バスを規定する。
いくつかの実現例において、第1のホストのそれぞれのNUMAトポロジは、一部が、i)上記第1のホストに対してローカルであるリソースのそれぞれの構成におけるそれぞれの第1のメモリと、ii)第2の異なるホストに対してはローカルであるが上記第1のホストに対してはリモートであるリソースのそれぞれの構成におけるそれぞれの第2の異なるメモリとに基づく。
いくつかの実現例において、上記多数のホストを決定することは、上記複数のホストのうちの各ホストによって管理されるリソースの構成を記述するシステムファイルを取得することと、上記複数のホストのうちの各ホストの上記システムファイルに記述されている上記リソースの構成に基づいて、上記多数のホストを決定することとを含む。いくつかの実現例において、上記方法は、上記複数のホストのうちの各ホストのNUMAソケットのマッピングを記述するシステムファイルに基づいて、上記ホストのリソースを結合する1つ以上のソケットを特定することと、上記ホストの上記リソースを結合する上記1つ以上のソケットに基づいて、上記ホストの制御グループを形成することとを含む。
いくつかの実現例において、上記方法は、上記制御グループ内のアクセラレータのための1つ以上のソケットインターフェイスに基づいて、上記タスク仕様のMLタスクを上記ホストの上記制御グループに割り当てることを含み、上記ソケットインターフェイスは上記システムファイルに記述されている上記NUMAソケットのマッピングに含まれており、上記方法はさらに、上記制御グループ内の上記アクセラレータを使用して、上記MLタスクを上記制御グループの下でプロセスとして実行することを含む。
このおよび他の局面の他の実現例は、非一時的なコンピュータ読取可能記憶装置上に符号化された、方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。1つ以上のコンピュータのシステムは、動作時にシステムにアクションを実行させる、システムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによってそのように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると装置にアクションを実行させる命令を有することによってそのように構成され得る。
本明細書に記載されている主題の一局面は、ワークロードを実行する要求を受信し、上記要求に基づいて、上記ワークロードを実行するためのリソース要件を決定するシステムで具体化することができる。上記システムは複数のホストを含み、各ホストは複数のアクセラレータを含む。上記システムは、上記リソース要件と各ホストの上記アクセラレータとに基づいて、上記ワークロードのタスクを実行するように割り当てられる多数のホストを決定する。上記システムは、上記多数のホストのうちの各ホストについて、上記ホストのメモリアクセストポロジに基づいてタスク仕様を生成する。上記仕様は、上記複数のアクセラレータを含む上記ホストのリソースを使用して上記ホストで実行すべき上記タスクを指定する。上記システムは、上記タスク仕様を上記ホストに提供し、各ホストが上記ホストの上記タスク仕様で指定されている割り当てられたタスクを実行するときに上記ワークロードを実行する。
本明細書に記載されている主題は、以下の利点のうちの1つ以上を実現するように特定の実施形態において実現することができる。本文書に記載されている技術は、システムのホストがワークロードのタスクを実行するときに非ローカルメモリアクセス動作およびデータ通信の発生を減らすまたは防止することによって、システムの性能ボトルネックを緩和することができる。従前のアプローチと比べて、記載されている技術を使用して、システムの各ホストによって管理されるリソースまたはリソースのグループの非均一メモリアクセス(NUMA)トポロジに基づくリソース局所性を利用することによって、ワークロードの処理に必要な時間を短縮することができる。
本明細書に記載されている主題の1つ以上の実現例の詳細は、添付の図面および以下の説明に記載されている。主題の他の潜在的な特徴、局面、および利点は、説明、図面、および請求項から明らかになるであろう。
機械学習ワークロードを実行するために実行されるタスクをスケジューリングするコンピューティングシステムの一例のブロック図である。 図1のコンピューティングシステムに含まれるホストによって管理されるリソースの一例のブロック図である。 機械学習ワークロードを実行するためのタスク仕様を生成するように実行され得る計算論理の一例を示す図である。 機械学習ワークロードを実行するために実行されるタスクをスケジューリングするプロセスの一例を示す図である。 図1のコンピューティングシステムのホストに提供されるタスク仕様を生成するプロセスの一例を示す図である。
詳細な説明
さまざまな図面における同様の参照番号および名称は、同様の要素を示す。
分散システムは、計算ワークロードを実行するために使用されるハードウェアデバイスを含む複数のノード(たとえばホスト)を有する。ノードは、データを処理してワークロードを実行する個々のハードウェア計算クラスタ、またはクラスタ内のホストデバイスを形成し得る。各ノードは複数のリソースを含み得る。たとえば、リソースは、プロセッサもしくはCPU、メモリ、または周辺コンポーネント相互接続(PCI)デバイス(たとえばハードウェアアクセラレータ)であってもよく、各ホストは、リソースグループを形成する複数のリソースを含み得る。
各リソースは、あるノード内のいくつかのリソースを他のリソースに対してリモートまたはローカルにする特定のハードウェアまたはソケット接続を有し得る。分散システムにおいてワークロードを処理するアプローチでは、メモリにアクセスし、互いに非ローカルの(またはリモートの)リソース間でデータを移動させることを含む動作を実行しなければならないことが多い。上述のように、このような非ローカルメモリアクセスおよびデータ転送動作は、クロスソケット(たとえばリモート)動作用の帯域幅が制限されているクラスタまたはホストの性能ボトルネックにつながる可能性がある。
この文脈において、分散システム内の計算クラスタにおける計算ワークロードのタスクをスケジューリングすることと、計算ワークロードを形成するタスクを実行するために使用されるシステムのリソースを割り当てることとを改善する技術が記載されている。スケジューリングに関して、この技術は、ワークロード(たとえばMLワークロード)のタスクを、大規模分散システムの個々のホストによって管理されるリソースのそれぞれのグループに割り当てる、改善されたプロセスを含む。たとえば、システムは、ワークロードの特定のタスクをリソースの特定のグループに割り当てるように構成され、グループ内の個別のリソースは、分散システムの共有または共通のハードウェアバスを介してデータ通信をやり取りする。特定のタスクをホストの特定のリソースグループに割り当てるプロセスは、計算クラスタ内のリソース局所性を利用することによって実行され、局所性はリソースグループの非均一メモリアクセス(NUMA)トポロジに基づく。
また、分散システムの別個の計算クラスタ内の複数のホストにわたってNUMA認識タスクスケジューリングおよびリソース割り当てを実行するアプローチを提供する技術が記載されている。たとえば、計算クラスタのコントローラは、NUMA局所性を必要とするワークロードのジョブまたはタスクを記述するプロトコルビットのセットを渡すことができる。この技術は、CPUと、メモリと、周辺コンポーネント相互接続(PCI)デバイス(たとえばハードウェアアクセラレータ)とを含むリソースグループなどのリソースまたはデバイスの特定のセットに1つ以上のタスクを割り当てることによって、クラスタのまたはクラスタ内のホストのNUMA局所性を活用する。
複数のリソースグループを管理するホストは、クラスタのマスターコントローラによって渡されたプロトコルビットを受信および処理するように動作可能である。たとえば、ホストは、そのリソースグループの決定されたソケットトポロジに基づいてプロトコルビットを処理し、プロトコルビットによって指定されたワークロードの特定のジョブまたは部分のタスクを実行するために、同じNUMAソケットからのリソースの特定のセットを割り当てる。ホストは、タスク仕様の機械学習タスクのセットを、ホストで構築されたリソースグループ(または制御グループ)にバインドするまたは割り当てるように動作可能である。たとえば、ホストは、プロトコルビットによって伝達された情報に基づいて、タスクを所与のリソースグループにバインドして、所与のタスクについての計算の性能または実行を劣化させる可能性がある非ローカルメモリまたはデータアクセス動作の発生を減らすまたは防止することができる。
NUMA認識タスクスケジューリングおよびリソース割り当てのための記載されているアプローチは、分散システムが、NUMA局所性の使用を最適化して、特定のワークロードを実行するための帯域幅要件を減らして計算時間を改善することを可能にする。たとえば、これは、少なくともクラスタのNUMA局所性の活用に基づいて達成することができ、これによって、クロスソケットまたはクロスノード通信を減らすことができるように、特定のタイプのタスクが、同一場所に配置されたデバイスまたはリソースグループの特定のセットに割り当てられるので、他の計算用の帯域幅が解放される。
図1は、計算ワークロードを実行するために実行されるタスクをスケジューリングする一例としての分散コンピューティングシステム100のブロック図である。システム100は、複数の計算クラスタ102を含む大規模分散ハードウェアコンピューティングシステムであり得るものであり、各クラスタ102は複数のホスト104を含み、各ホスト104は複数の計算リソース105を含む。
リソースの1つ以上のグループは分散システム100のホスト104によって管理することができ、複数の計算クラスタ102の各々は複数のホスト104を含み得る。より具体的には、各ホスト104は、リソースのグループを形成する2つ以上の個別のリソース105を管理するように構成される。あるいは本明細書では、ホスト104によって管理されるリソースのグループをリソースグループと呼ぶこともある。このため、ある場合には、リソース105は、1つのプロセッサまたはメモリデバイスなどの個別のリソースを表し得るが、他の場合には、リソース105は、2つ以上のプロセッサ、2つ以上のメモリバンク、2つ以上のハードウェアアクセラレータ、または各々の組み合わせなどの複数のリソースを表し得る。ホスト104のリソースグループは図2を参照して以下でより詳細に説明する。
いくつかの実現例において、ホスト104はハードウェアコンピューティングデバイス(たとえばコンピュータまたはサーバ)である。いくつかの実現例において、ホスト104は、分散システム(もしくは計算クラスタ)の仮想マシン、計算リソース105のグループを管理するためのソフトウェア構造体、またはそれら両方である。システム100はM個の計算クラスタ102を含み得るものであり、M個の計算クラスタのうちの各計算クラスタ102はN個のホストを含み得るものであり、MおよびNの各々は1以上の整数である。
いくつかの実現例において、計算クラスタ102の各々は、クラスタ102のホスト104を形成するマシン(たとえばハードウェアまたは仮想マシン)のセットを含む。図1に示されるように、1つのクラスタ102は、ワークロードのタスクをクラスタ102内のホスト104の1つ以上に割り当てるように各々が機能する複数のコントローラ108を含み得る。
計算クラスタ102の各々は、クラスタ102のマスターコントローラ108(「コントローラ108」)と通信するスケジューラ106と、マスターコントローラ108がアクセス可能なリンクシャード110とを含み得る。コントローラ108は、タスク仕様を生成し命令およびコマンドを準備してホスト104に送信する役割と、ホスト104からの応答に基づいてホスト104の現在の処理状態を更新する役割とを果たす。いくつかの実現例において、各コントローラ108は、ホスト104のサブセットとの通信を管理するステータス論理110を含む。たとえば、ステータス論理110は、ホスト104の処理状態に関する情報を取得するコマンドをホスト104のサブセットに送信するように、かつホスト104から応答を受信するように、コントローラ108によって実行される。たとえば、ステータス論理110を使用して、割り当てられたタスクが完了したか処理中であるかを示すホストレポートを受信して処理する。ホストの処理状態に関する情報を取得する試行回数がしきい値を超えてもホスト104がステータスレポートを提供しない場合は、ステータス論理110は、ホスト104に割り当てられたタスクが停止していると判断してもよい。ある場合には、ステータス論理110は、ホスト104によって報告された処理状態情報を集計して圧縮することにより、マスターコントローラ108で受信される更新負荷のサイズを小さくするように動作可能である。
以下でより詳細に説明するように、スケジューラ106とコントローラ108とが対話または通信して、ホストで実行するためのワークロードのタスクをスケジューリングして特定のホスト104に割り当てる。スケジューラ106は図1ではコントローラ108とは別個であるとして示されているが、コントローラ108に統合されてもよい。いくつかの実現例において、スケジューラ106は計算クラスタ102の任意の処理要素であり、その機能は、コントローラ108で構成される割り当ておよび制御機能に統合されてもよい。
コントローラ108は、少なくとも、1つ以上のワークロードを実行する要求112と、ホスト104によって管理されるリソースのハードウェア構成とに基づいて、ワークロードのタスクを割り当てるように動作可能である。たとえば、コントローラ108の各々は、クラスタ102で受信された要求112内のパラメータに基づいて、かつ、ホスト104に含まれるリソース105(またはリソースグループ)のハードウェアソケットトポロジに基づいて、命令を生成する論理集中型コントローラであり得る。いくつかの実現例において、ホスト104のサブセット内の各ホスト104は、特定のマスターコントローラ108の下で「スレーブ」計算資産として構成される。この実現例において、マスターコントローラ108は、要求112内のパラメータと、特定のマスターコントローラ108の下で「スレーブ」であるホスト104のサブセットの各ホスト104におけるハードウェアソケットトポロジとに基づいて、命令を生成する。
ホスト104は、マシンまたはハードウェアデバイスに対応する複数のリソース105、たとえば数百または数千のリソースまたはデバイスを含み得る。ホスト104内のリソース105は、多くの点で多様または異種であり得る。たとえば、ホスト104によって管理されるリソース105の各グループは、処理装置(たとえばCPU、RAM、ディスク、ネットワーク)、プロセッサタイプ、処理速度、性能、および外部IPアドレスまたはフラッシュストレージなどの能力に関して異なり得る。より具体的には、各計算クラスタ102について、クラスタ102内の複数のホスト104の各々は、ホストの他のリソースと対話してワークロードのタスクを実行する1つ以上の専用ハードウェア回路を含む。
たとえば、専用ハードウェア回路は、ハードウェアアクセラレータ、グラフィックス処理装置(GPU)ハードウェアアクセラレータ、またはニューラルネットワークプロセッサであり得る。図1の例では、システム100は、第1のホスト104-1、第2のホスト104-2、第3のホスト104-3、およびN個の追加のホスト104-nを含み得る。いくつかの実現例において、第1のホスト104-1の専用回路およびリソース105は、第2のホスト104-2の専用回路およびリソース105とは(たとえばわずかにまたは大きく)異なってもよい。
たとえば、第1のホスト104-1は、位置ベースの分析およびインメモリ分析またはGPU加速データベースクエリを実行するように各々が構成された10個のGPUハードウェアアクセラレータを含み得るものであり、第2のホスト104-2は、畳み込みニューラルネットワーク(CNN)モデルまたは回帰型ニューラルネットワーク(RNN)モデルを実行するように各々が構成された20個のニューラルネットワークプロセッサを含み得る。いくつかの実現例において、この20個のニューラルネットワークプロセッサは、訓練された推論モデルに対してバイナリを実行し、浮動小数点ベースの推論モデル、整数量子化推論モデル、またはその両方の実行を加速させるように構成されてもよい。
システム100は、コントローラ108を使用して、特定のホスト104の1つ以上のマシン上で実行可能なタスクなどの個々のタスクの実行を割り当てて制御するための命令を生成する。特定のタスクをホスト104の特定のリソースグループに割り当てるための決定は、計算クラスタ102のホスト104内のリソース局所性を利用することに特に重点を置いて行われる。リソース局所性は、以下に説明するように、ホスト104におけるリソースグループのハードウェアトポロジに基づき、より具体的にはリソースグループの非均一メモリアクセス(NUMA)トポロジに基づく。
システム100は、各計算クラスタ102およびこの計算クラスタの各ホスト104のハードウェアトポロジを含むシステムトポロジを生成するように構成される。ハードウェアトポロジは、i)ホストの複数のデバイスおよびリソースの接続性(たとえばソケット接続およびインターフェイス)と、ii)ホスト104のリソース105間のデータ転送を可能にするローカル通信バスとを特定するように構成される。
システム100は、ホスト104内のハードウェアソケットの接続点またはコンポーネントインターフェイスに結合された各リソースまたは周辺デバイスの位置を特定するように構成される。たとえば、ホスト104は、ホスト104によって管理されるハードウェアコンピュータのシステムBIOSに関連付けられたプログラムコード(たとえばファームウェア)を実行して、コンピュータのマザーボードに結合されたリソース105(たとえばプロセッサおよびメモリ)のリソース位置およびタイプを特定することができる。いくつかの実現例において、ホスト104のオペレーティングシステムは、ハードウェアコンピュータのチップセットを使用して、ホスト104によって管理されるコンピュータにおいて接続されているデータバスおよび周辺デバイスに関する情報の詳細なリストを取得することができる。たとえば、リストは、コンピュータのプロセッサ上で実行されるオペレーティングシステムの相互接続構成空間を表す共通のポータブル相互接続ライブラリ(たとえばlibpci)に基づき得る。
コントローラ108は、タスクを実行するために各ホスト104に未処理の命令を送信するように、かつ、ホスト104で管理されている特定のマシンまたはリソースグループ105の現在の処理状態に関する情報を取得するコマンドを各ホスト104に送信するように、動作可能である。いくつかの実現例において、コントローラ108は、処理状態に関する情報を取得するコマンドを動的に送信する。これに代えて、コントローラ108は、予め定められたスケジュール(たとえば数秒ごと)を参照して、処理状態に関する情報を取得するコマンドを送信してもよく、スケジュールはホスト104で実行中の特定のタスクに基づく。一般に、各コントローラ108は、コントローラ108がホスト104に送信する命令およびコマンドに基づいて、ホストのさまざまなリソース間および異なるリソースグループ間のそれぞれの通信速度を制御するように動作可能である。
図2は、一例としての計算クラスタ102のホスト104によって管理される一例としてのリソースグループ200のブロック図を示す。上述のように、ホスト104は、マシンまたはハードウェアデバイスに対応する数百または数千のリソースを含み得る。ホスト104のリソースグループ内のリソース105は、多くの点で多様または異種であり得る。たとえば、ホスト104によって管理されるリソース200の各グループは、処理装置(たとえばCPU、RAM、ディスク、ネットワーク)、プロセッサタイプ、処理速度、全体性能、および外部IPアドレスまたはフラッシュストレージなどの能力に関して異なり得る。
図2に示されるように、各ホスト104のメモリアクセストポロジは、ホスト104によって管理される1つ以上のリソースグループ200のそれぞれの非均一メモリアクセス(NUMA)トポロジまたはソケット202-1、202-2を含み得る。リソースグループ200のNUMAトポロジは、複数のプロセッサ(P)204、または複数のプロセッサコア(P)と、メモリリソース、たとえばランダムアクセスメモリ(RAM)と、ハードウェアアクセラレータ208などの1つ以上の専用回路とを含み得る。NUMAトポロジの個々のリソースは、NUMAソケット202-1または202-2のいずれかに対応するローカルNUMAノードを形成し得る。
たとえば、ローカルNUMAノードは、共有または共通のハードウェアバス210を介してデータ通信をやり取りするグループ内のリソースに基づいて形成されてもよい。ローカルNUMAノード内の各リソースは、リソースがこのノードにおいてインターフェイス(またはソケット)接続を介して共通ソケットに接続される場合は、別のリソースに対してローカルであってもよい。いくつかの実現例において、各ハードウェアアクセラレータ208は、PCIまたはPCI-eソケット接続を介してNUMAノードの他のリソースに接続する。
本明細書において、NUMAは分散多重処理システムに使用されるコンピュータメモリ設計に関連し、メモリアクセス時間はプロセッサ(P)204またはプロセッサコアに対するメモリ位置によって決まる。NUMAの下では、プロセッサ204は、別のプロセッサに対してローカルであるメモリ206-2またはプロセッサ間で共有されるメモリなどの非ローカルメモリよりも、自身のローカルメモリ206-1に速くアクセスすることができる。
一例としてのリソースグループ202は、複数の相互接続位置212を含み得る。たとえば、相互接続位置212-1および212-2の各々は、ホスト104のメモリ206-1とハードウェアアクセラレータ208との間など、ホスト104のリソース105の間にデータ接続を確立するためのそれぞれのコンポーネントインターフェイスに対応し得る。いくつかの実現例において、リソースグループ200のリソース105は、NUMAソケット202-1のローカルリソースをリンクするハードウェアソケットを介してデータ通信をやり取りし、ハードウェアソケットは、ホスト104によって管理される複数のリソース間で共有されるローカル通信バス210を規定する。
いくつかの実現例において、第1のNUMAソケット202-1のそれぞれのNUMAトポロジは、一部が、i)NUMAソケット202-1に対してローカルであるリソースのそれぞれの構成におけるそれぞれの第1のメモリ206-1と、ii)第2の異なるNUMAソケット202-2に対してはローカルであるが第1のNUMAソケット202-1に対してはリモートであるリソースのそれぞれの構成におけるそれぞれの第2の異なるメモリ206-2とに基づく。
図3は、計算ワークロードを実行するためにシステム100で実行される計算論理302に基づく、一例としてのタスク仕様300を示す。図3に示されるように、論理302は、各々が命令(たとえばプログラムされたコード/命令)を含む複数の計算ブロックを含み得る。命令は、コントローラ108の処理装置、ホスト104の処理装置および他のリソース105、または各々の組み合わせを使用して、システム100で実行され得る。
計算論理302は、システム100でMLワークロードを実行するためのタスクをスケジューリングしてリソースを割り当てるための一例としてのタスク仕様300のプログラム表現であり得る。いくつかの実現例において、MLワークロードは、複数のニューラルネットワーク層を含むニューラルネットワークを実行するように各々が構成されたハードウェアアクセラレータを使用して実行される。命令は、システム100の1つ以上の非一時的な機械読取可能記憶媒体に格納され得るものであり、動作を実行させてワークロードのタスクを実行するようにシステム100の1つ以上のプロセッサによって実行可能である。
たとえば、動作を実行して、MLワークロードのタスクを実行するために特定のホスト104に提供される(たとえばタスク仕様のための)命令およびプロトコルビットを生成することができる。いくつかの実現例において、プロトコルビットは、符号化信号、2進値のデータワード、または他の関連パラメータもしくはデータ値によって表される。符号化信号および2進値をホスト104で受信および処理(または解釈)して、タスク仕様のタスクの割り当てを決定する。一般に、各ホスト104は、ホスト104に割り当てられ得る複数の異なるワークロードのタスクを含むワークロードの1つ以上のタスクを走らせるまたは実行するように構成される。要求112が計算クラスタ102によって受信されると、クラスタ102のスケジューラ106とコントローラ108とが対話して要求112をスキャンする。
たとえば、コントローラ108は、要求112をスキャンして、ワークロード内のさまざまなタスクのCPU、メモリ、およびアクセラレータ要件を指定する要求112内のパラメータ(たとえばプロトコルビット)を特定してもよい(304)。コントローラ108は、要求112内のパラメータおよび値に基づいて、一例としてのワークロードは16個のタスクを含み、各タスクは96個のCPUおよび4個の専用回路(たとえばハードウェアアクセラレータ)の全リソース割り当てを必要とすることを決定してもよい。たとえば、要求112は、16個のタスクの各々を実行するために使用すべきハードウェアアクセラレータの数(4)を指定するスカラーリソースパラメータを含み得る。いくつかの実現例において、スカラーリソースパラメータは、ワークロードを処理するために使用すべきハードウェアアクセラレータのタイプを指定するサブタイプを含み得る。たとえば、サブタイプは、4つのハードウェアアクセラレータの各々が、特徴認識のために訓練されたモデルの実行を加速させるように構成されたニューラルネットプロセッサであることを指定してもよい。
計算論理のパッケージフィールドは、16個のタスクの各々を実行するためのタスクバイナリを指定する(306)。たとえば、タスクバイナリは、16個のタスクのうちの特定のタスクを実行するための計算を行うようにハードウェアアクセラレータで実行すべきまたは走らせるべき特定のタイプのニューラルネットワークまたは推論モデルであり得る。ある場合には、タスクバイナリは、ワークロードのタスクを処理するために使用すべきハードウェアアクセラレータのタイプを指定するスカラーリソースサブタイプから導出される。
コントローラ108は、要求112内のパラメータを特定したことに応答して、要求112のパラメータに基づいて、かつ、ホスト104内のリソース105(またはリソースグループ200)のハードウェアソケットトポロジに基づいて、タスクをスケジューリングしてクラスタ102内のホスト104に割り当てる割り当てスキームを決定するように動作可能である。コントローラ108は、タスクをスケジューリングしてホスト104に割り当てる割り当てスキームに基づいて、それぞれのタスク仕様を生成する。たとえば、要求112内のパラメータおよび対応するパラメータ値の各々は、スケジューラ108に対するスケジューリング制約を表し得る。いくつかの実現例において、要求112は、パラメータの各々に優先順位を割り当ててスケジューラ108およびコントローラ108をさらに制約してもよい。たとえば、アクセラレータサブタイプまたはCPUコアに割り当てられる優先順位は、コントローラ108を、特定のタイプのハードウェアアクセラレータまたは特定の数の利用可能なCPUを有する特定のホスト104に制約することができる。
コントローラ108は、少なくとも、コントローラ108の下で「スレーブ」であるホスト104の1つ以上によって管理される各リソースグループのハードウェアソケットトポロジの詳細と突き合わせて要求112のパラメータを分析することによって、タスクの割り当てを決定してタスク仕様を生成する。たとえば、コントローラ108は、ホスト104の各リソースグループのハードウェアソケットトポロジをスキャンして、リソース105の局所性を判断し、リソースまたはリソースのタイプが要求112の制約を満たすか否かを判断し、リソースの利用可能性を判断するように動作可能である。いくつかの例において、コントローラ108は、特定のNUMAノードに対してローカルであるとともに要求112の制約の1つ以上を満たすリソースの中から、リソースの利用可能性を判断する。いくつかの実現例において、各ホスト104のハードウェアソケットトポロジは、ホスト104内の各リソースグループ200のそれぞれのメモリアクセストポロジに基づく。
NUMAシステムには、プロセッサのセットとメモリとで構成されるNUMAノードが複数存在する。上述のように、同じNUMAノード202-1内でプロセッサ204がメモリ206-1にアクセスすることはローカルであるが、NUMAノード202-1内のプロセッサ204が別のNUMAノード202-2内のメモリ206-2にアクセスすることはリモートである。いくつかの実現例において、リモートアクセスはマルチホップ動作を含み得るので、リモートアクセスはローカルアクセスと比べて複数のサイクルを要することがある。この非対称のメモリアクセス待ち時間のために、メモリアクセスをローカルに保つことによって、またはメモリ局所性を最大にすることによって、分散処理の性能を改善することができる。いくつかの実現例において、NUMAノード間のCPUロードバランシングは、NUMA局所性の活用と併せて、さらなる性能改善につながり得る。
マスターコントローラ108は、タスク仕様における1つ以上の制約を符号化するように構成される(308)。たとえば、タスク仕様300は、要求112内のパラメータおよび値から導出されるスケジューリング制約を含み得る。たとえば、コントローラ108は、要求112内のパラメータを、特定のクラウドゾーン内に位置するホストマシン上でタスクの計算を行うために使用されるデータをロードするようにホスト104に指示するタスク制約に変換することができる。たとえば、クラウドゾーンは、ワークロードの所与のタスクのためのデータ計算を行うために必要なハードウェアアクセラレータリソースの特定のセットを含むデータセンターの特定の物理的または地理的な位置であり得る。
計算クラスタ102は、計算クラスタ102内の複数のホスト104にわたってリソース局所性を利用するやり方でタスクをスケジューリングしてホスト104の特定のリソースグループ200に割り当てる割り当てスキームを決定するように構成される。図3に示される一例としてのタスク仕様300は、16個のタスクを実行する要求を受信する計算クラスタ102を表す簡略化されたタスク仕様を提供する。タスクの各々は、2つのNUMAノードを含むホスト104を占める。この例では、タスクの各々は、96個のCPUおよび4個の専用回路(たとえばハードウェアアクセラレータ)の全リソース割り当てを必要とする。
そのタスク仕様300は、特定のホスト104が特定のNUMAノードからそのCPUコアをどのように割り当てるべきかなどの、ホスト104のリソース割り当てを規定するパラメータを含む(310)。図3の例では、各タスクについて96個のCPUの全リソース割り当てを満たすように各NUMAノードから48個のプロセッサコアが割り当てられている、バランスのとれたCPU割り当てが示されている。他の例では、コントローラ108は、第1のNUMAノードから36個のCPU、第2のNUMAノードから60個のCPUなど、アンバランスな割り当てを指定するタスク仕様を生成してもよい。
図4は、機械学習ワークロードを実行するために実行されるタスクをスケジューリングする一例としてのプロセス400を示す。プロセス400は、上記のシステム100を使用して実現または実行することができる。したがって、プロセス400の説明は、システム100の上記の計算リソース、および本明細書に記載されている他のコンポーネントを参照する場合がある。一般に、プロセス400の説明における計算ステップまたはプロセスフローは、異なる順序で起こるようにグループ分けまたは構成することができ、本明細書に記載されている番号順に限定されない。
ここでプロセス400を参照して、システム100は、その計算クラスタのうちの1つ以上を使用してワークロードを実行する要求を受信する(402)。いくつかの実現例において、プロセス400は、ハードウェアアクセラレータおよびホスト104の他のリソースを使用してワークロードを実行するようにタスクをスケジューリングしてリソースを割り当てる方法に対応する。いくつかの例において、ワークロードは、映像トランスコーディング、画像処理、音声処理、自動運転車両ナビゲーション、または画像認識などの特定の機械学習動作に関連する訓練または推論ワークロードである。
要求112は、画像中の物体を検出するためのまたは音声発話の言葉を認識するための推論ワークロードなどのMLワークロードの実行を要求するものであり得る。この文脈において、ハードウェアアクセラレータの1つ以上は、畳み込みニューラルネットワーク(CNN)または回帰型ニューラルネットワーク(RNN)などの、複数のニューラルネットワーク層を含むニューラルネットワークを実行するように構成されてもよい。受信した要求112は、ワークロードのタスクを実行するために使用すべき特定のタイプのニューラルネットワーク構成(たとえばCNNまたはRNN)を指定するパラメータを含み得る。
また、受信した要求112の後に、たとえばホスト104のリソースグループを使用して特定のニューラルネットワークをクラスタ102上に展開する第2の要求112が続いてもよい。第2の要求の後に、コントローラ108(またはホスト104)に特定のニューラルネットワーク層のための重みのセットのパラメータを取得させる命令またはコマンドが続いてもよい。たとえば、重みのセットは、命令で指定された場所アドレスに基づいて、ホスト104によって管理されるメモリの記憶場所から取得されてもよい。いくつかの実現例において、ホスト104によって取得された重みを格納するメモリは、ホスト104におけるリソースグループを規定するNUMAノードの複数のローカルリソースのうちの1つである。同様に、命令は、コントローラ108(またはホスト104)に他の記憶場所にアクセスさせて、ニューラルネットワーク層を通して処理するための入力をフェッチさせて、ホスト104内のNUMAノードのローカルリソース105を使用してニューラルネットワーク層の出力を生成させてもよい。いくつかの実現例において、要求112において特定された入力の特定部分をニューラルネットワーク層を通して処理して層出力を生成することは、1つの計算クラスタ102の複数のホスト104にわたってまたは複数の計算クラスタ102にわたって処理され得るより大きなワークロードの1つ以上のタスクの実行を表し得る。
システム100は、要求に基づいてリソース要件を決定する(404)。リソース要件は、MLワークロードを表す一連のタスクを実行するために必要な計算リソースのタイプおよび量など、ワークロード要求112に関連するシステム100のリソースについての特定の詳細を示し得る。たとえば、リソース要件は、特定のプロセッサもしくはプロセッサタイプ、処理能力もしくは速度、メモリ量もしくはメモリサイズ、ハードウェアアクセラレータの数、または分散システムにおけるリソースのリソース局所性の指標を指定し得る。
システム100は、リソース要件と各ホストの複数のハードウェアアクセラレータとに基づいて、MLワークロードのそれぞれのタスクを実行するように割り当てられる多数のホスト104を決定する(406)。システム100は、多数のホスト104のうちの各ホスト104について、ホストのメモリアクセストポロジに基づいてそれぞれのタスク仕様を生成する(408)。ホストのメモリアクセストポロジは、ホスト104の各リソースグループ200の複数のそれぞれのNUMAトポロジのうちの1つに基づき得る。いくつかの実現例において、リソースグループ200の特定のNUMAトポロジは、ローカルNUMAノードに特有であり、グループの他のリソースに対してローカルなそれぞれのメモリ(M)を含む。それぞれのメモリ(M)は、メモリを少なくとも1つのハードウェアアクセラレータとNUMAノードの1つ以上の他のリソースとにローカルに結合するソケットインターフェイスを含み得る。
コントローラ108は、要求112のパラメータをスキャンしたことと、コントローラ108にスレーブ資産として割り当てられているホスト104のセット内の各リソースグループ200についてそれぞれのハードウェアトポロジを相互参照したこととに応答して、タスク仕様を生成する。システム100は、それぞれのタスク仕様をホストに提供する(410)。たとえば、コントローラ108は、複数のそれぞれのタスク仕様を異なるホスト104に提供することができ、システム100は、各ホストのそれぞれのタスク仕様で指定されたタスクを実行することによってMLワークロードを実行する(412)。
図5は、システム100のホストに提供されるタスク仕様を生成するプロセスの一例を示す。プロセス400と同様に、プロセス500はシステム100を使用して実現または実行することができ、プロセス500の説明は、本明細書に記載されている他のコンポーネントを含むシステム100のリソースを参照する場合がある。一般に、プロセス500の説明における計算ステップまたはプロセスフローは、異なる順序で起こるようにグループ分けまたは構成することができ、本明細書に記載されている番号順に限定されない。
ここでプロセス500を参照して、システム100は、各ホストのNUMAソケットのマッピングを記述するシステムファイルを使用して、ホストのリソースのための1つ以上のソケットを特定するように構成される(502)。たとえば、コントローラ108は、ホスト104におけるリソースグループのハードウェアトポロジに基づいてNUMAソケットのマッピングを決定するように構成される。NUMAソケットのマッピングを使用して、ホスト104によって管理される各リソースグループのNUMAトポロジを示す。
コントローラ108は、ホストのNUMAソケットのマッピングに記述されているリソースのためのソケットを使用して、ホスト104の制御グループを構築する(504)。いくつかの実現例において、コントローラ108は1つ以上のプロトコルビットをホスト104に渡し、ホストのスケジューラは、(たとえば要求のまたはタスク仕様の)プロトコルビットを使用して、ホスト104におけるさまざまなリソースグループ間のリソース105の局所性に基づいて制御グループを構築する。たとえば、コントローラ108、またはホスト104のスケジューラは、各リソースグループのNUMAトポロジと、受信した要求112における制約の一部(または全部)を満たすホスト104におけるリソースのタイプとに基づいて、制御グループを構築するように動作可能である。
コントローラ108はホスト104と協働して、タスク仕様のMLタスクをホスト104で構築された制御グループにバインドするかまたは割り当てる。いくつかの実現例において、コントローラ108によってホスト104に渡されたプロトコルビットを、ホスト104のスケジューラによって使用して、タスク仕様のMLタスクをホスト104で構築された制御グループにバインドするかまたは割り当てる。プロトコルビットは、タスク仕様の1つ以上の制約または要件を示すようにタスク仕様に含まれてもよい。プロトコルビットは、1つ以上の符号化信号、2進値のデータワード、または他の関連パラメータもしくはデータ値によって表すことができる。符号化信号および2進値を、ホストのスケジューラによって受信および処理して、またはその他の方法で解釈して、タスク仕様のタスクの割り当てを決定することができる。いくつかの実現例において、プロトコルビットはタスク仕様に関連付けられ得るが、タスク仕様とは別に提供され得る。
ホスト104は、制御グループ内のリソースの利用可能性を含む、制御グループ内の特定のタイプのアクセラレータのためのソケットインターフェイスに少なくとも基づいて、タスク仕様のMLタスクを制御グループにバインドするように動作可能である(506)。ホスト104は、制御グループ内のメモリリソースおよびハードウェアアクセラレータを使用して、タスク仕様のMLタスクを制御グループの下でプロセスとして実行する(508)。いくつかの実現例において、ホスト104は、ローカルメモリを含む制御グループの1つ以上の他のリソースを使用してMLタスクを実行することができる。ある場合には、非ローカルメモリが利用され得るが、このようなリソースを利用する場合は、非ローカルメモリは、必要な計算帯域幅、または結果として生じ得る任意の性能上の影響に対するバランスが取られる。
本明細書に記載されている主題の実施形態および機能動作は、デジタル電子回路で実現されてもよく、有形に具体化されたコンピュータソフトウェアもしくはファームウェアで実現されてもよく、コンピュータハードウェア(本明細書に開示されている構造およびそれらの構造的等価物を含む)で実現されてもよく、またはそれらのうちの1つ以上の組み合わせで実現されてもよい。本明細書に記載されている主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわちデータ処理装置による実行またはデータ処理装置の動作の制御のために有形の非一時的なプログラムキャリア上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実現することができる。
これに代えてまたはこれに加えて、プログラム命令は、情報を符号化して好適な受信機装置に送信してデータ処理装置によって実行するように生成された、人為的に生成された伝播信号(たとえば、マシンによって生成された電気信号、光信号または電磁信号)上に符号化され得る。コンピュータ記憶媒体は、機械読取可能記憶装置、機械読取可能記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つ以上の組み合わせであり得る。
本明細書に記載されているプロセスおよび論理フローは、入力データに対して動作して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実行することができる。これらのプロセスおよび論理フローも、特別目的論理回路(たとえば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPGPU(汎用グラフィックス処理装置))によって実行することができ、装置も、特別目的論理回路として実現することができる。
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくはこれら双方、またはその他の種類の中央処理装置を含み、それらに基づき得る。一般に、中央処理装置は、命令およびデータを、読み取り専用メモリまたはランダムアクセスメモリまたはこれら双方から受信する。コンピュータの必須要素は、命令を実施または実行するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを格納するための1つ以上の大容量記憶装置(たとえば磁気、光磁気ディスク、または光ディスク)を含む、または、上記大容量記憶装置からデータを受信する、これにデータを転送する、またはこれら双方のために、上記大容量記憶装置に作動的に結合される。しかしながら、コンピュータはこのようなデバイスを有していなくてもよい。
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能媒体は、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、これらは、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスや、磁気ディスク、たとえば内部ハードディスクまたはリムーバブルディスクを含む。プロセッサおよびメモリは、専用論理回路が補充されてもよくまたは専用論理回路に組み込まれてもよい。
本明細書は多くの具体的な実現例の詳細を含んでいるが、これらは、発明または請求項の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有であり得る特徴を説明するものとして解釈されるべきである。別々の実施形態の文脈で本明細書に記載されている特定の特徴は、単一の実施形態において組み合わせて実現することも可能である。逆に、単一の実施形態の文脈で記載されているさまざまな特徴は、複数の実施形態において別々にまたは任意の好適な部分的組み合わせで実現することも可能である。さらに、特徴は、特定の組み合わせで動作するものとして上記され、最初にそのように記載されているかもしれないが、記載されている組み合わせの中の1つ以上の特徴は、場合によってはこの組み合わせから除外されてもよく、記載されている組み合わせは、部分的組み合わせまたは部分的組み合わせの変形例を対象としてもよい。
同様に、動作は図面において特定の順序で示されているが、これは、このような動作が、示されている特定の順序もしくは連続した順序で実行されることを要する、または、示されているすべての動作が所望の結果を得るために実行されることを要する、と理解されるべきではない。特定の状況ではマルチタスキングおよび並列処理が有利な場合がある。さらに、上記実施形態における各種システムモジュールおよびコンポーネントの分離は、すべての実施形態においてこのような分離を要するものと理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは一般に、1つのソフトウェアプロダクトに統合できる、または、パッケージングして複数のソフトウェアプロダクトにできることが、理解されるべきである。
主題の特定の実施形態について説明してきた。他の実施形態は、以下の請求項の範囲内である。たとえば、請求項に記載されている動作は、異なる順序で実行されても所望の結果を達成することができる。一例として、添付の図面に示されているプロセスは、所望の結果を達成するために、示されている特定の順序または連続した順序を必ずしも必要としない。特定の実現例において、マルチタスキングおよび並列処理が有利な場合がある。

Claims (19)

  1. ハードウェアアクセラレータを使用して、機械学習ワークロードを実行するためのタスクをスケジューリングしてリソースを割り当てる方法であって、前記ハードウェアアクセラレータの各々は、複数のニューラルネットワーク層を含むニューラルネットワークを実行するように構成され、前記方法は、
    機械学習(ML)ワークロードを実行する要求を受信することと、
    前記要求に基づいて、複数のホストを含む分散処理システムにおいて前記MLワークロードを実行するためのリソース要件を決定することとを備え、前記複数のホストのうちの各ホストはそれぞれの複数のハードウェアアクセラレータを含み、前記方法はさらに、
    前記リソース要件と各ホストの前記それぞれの複数のハードウェアアクセラレータとに基づいて、前記MLワークロードを形成するタスクのセットからそれぞれのタスクを実行するように各々が割り当てられる多数のホストを決定することと、
    前記多数のホストのうちの各ホストについて、
    前記ホストのメモリアクセストポロジに基づいて、前記それぞれの複数のハードウェアアクセラレータを含む前記ホストのリソースを使用して前記ホストで実行されるように割り当てられた前記タスクを指定するそれぞれのタスク仕様を生成することと、
    前記それぞれのタスク仕様を前記多数のホストのうちの前記ホストに提供することと、
    前記多数のホストのうちの各ホストが前記ホストの前記それぞれのタスク仕様で指定された前記タスクを実行することによって、前記MLワークロードを実行することとを備える、方法。
  2. 各ホストの前記メモリアクセストポロジは、前記ホストに対してローカルであるそれぞれのメモリを含むそれぞれの非均一メモリアクセス(NUMA)トポロジを含み、
    前記それぞれのメモリは、前記それぞれのメモリを前記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータと前記ホストの1つ以上の他のリソースとに結合するソケットインターフェイスを含む、請求項1に記載の方法。
  3. 前記それぞれのタスク仕様で指定された前記タスクを実行することは、
    複数のニューラルネットワーク計算のそれぞれの部分を前記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータに割り当てたことに応答して、前記複数のニューラルネットワーク計算を行って、前記複数のニューラルネットワーク層のうちの各ニューラルネットワーク層の出力を生成することを備える、請求項1または2に記載の方法。
  4. 前記MLワークロードを実行することは、
    前記ホストの制御グループの各リソースを使用して、かつ、前記それぞれのメモリと、前記ハードウェアアクセラレータと、前記ホストの前記リソースに含まれるそれぞれのプロセッサとの間でやり取りされるデータに基づいて、前記それぞれのタスク仕様についての命令を処理することを備える、請求項2に記載の方法。
  5. 前記MLワークロードを実行することは、
    前記ホストの前記制御グループの各リソースをリンクするハードウェアソケットを介してやり取りされている前記データに基づいて前記命令を処理したことに応答して、前記それぞれのタスク仕様で指定されたタスクを実行することを備え、前記ハードウェアソケットは、前記ホストによって管理される複数のリソース間で共有されるローカル通信バスを規定する、請求項4に記載の方法。
  6. 第1のホストのそれぞれのNUMAトポロジは、一部が、
    i)前記第1のホストに対してローカルであるリソースのそれぞれの構成におけるそれぞれの第1のメモリと、
    ii)第2の異なるホストに対してはローカルであるが前記第1のホストに対してはリモートであるリソースのそれぞれの構成におけるそれぞれの第2の異なるメモリとに基づく、請求項4に記載の方法。
  7. 前記多数のホストを決定することは、
    前記複数のホストのうちの各ホストによって管理されるリソースの構成を記述するシステムファイルを取得することと、
    前記複数のホストのうちの各ホストの前記システムファイルに記述されている前記リソースの構成に基づいて、前記多数のホストを決定することとを備える、請求項1~6のいずれか1項に記載の方法。
  8. 前記複数のホストのうちの各ホストのNUMAソケットのマッピングを記述するシステムファイルに基づいて、前記ホストのリソースを結合する1つ以上のソケットを特定することと、
    前記ホストの前記リソースを結合する前記1つ以上のソケットに基づいて、前記ホストの制御グループを形成することとを備える、請求項1に記載の方法。
  9. 前記制御グループ内のアクセラレータのための1つ以上のソケットインターフェイスに基づいて、前記タスク仕様のMLタスクを前記ホストの前記制御グループに割り当てることを備え、前記ソケットインターフェイスは前記システムファイルに記述されている前記NUMAソケットのマッピングに含まれており、さらに、
    前記制御グループ内の前記アクセラレータを使用して、前記MLタスクを前記制御グループの下でプロセスとして実行することを備える、請求項8に記載の方法。
  10. ハードウェアアクセラレータを使用して、機械学習ワークロードを実行するためのタスクをスケジューリングしてリソースを割り当てるように構成されたシステムであって、前記ハードウェアアクセラレータの各々は、複数のニューラルネットワーク層を含むニューラルネットワークを実行するように構成され、前記システムは、
    1つ以上の処理装置と、
    動作を実行させるように前記1つ以上の処理装置によって実行可能な命令を格納する1つ以上の非一時的な機械読取可能記憶装置とを備え、前記動作は、
    機械学習(ML)ワークロードを実行する要求を受信することと、
    前記要求に基づいて、複数のホストを含む分散処理システムにおいて前記MLワークロードを実行するためのリソース要件を決定することとを備え、前記複数のホストのうちの各ホストはそれぞれの複数のハードウェアアクセラレータを含み、前記動作はさらに、
    前記リソース要件と各ホストの前記それぞれの複数のハードウェアアクセラレータとに基づいて、前記MLワークロードを形成するタスクのセットからそれぞれのタスクを実行するように各々が割り当てられる多数のホストを決定することと、
    前記多数のホストのうちの各ホストについて、
    前記ホストのメモリアクセストポロジに基づいて、前記それぞれの複数のハードウェアアクセラレータを含む前記ホストのリソースを使用して前記ホストで実行されるように割り当てられた前記タスクを指定するそれぞれのタスク仕様を生成することと、
    前記それぞれのタスク仕様を前記多数のホストのうちの前記ホストに提供することと、
    前記多数のホストのうちの各ホストが前記ホストの前記それぞれのタスク仕様で指定された前記タスクを実行することによって、前記MLワークロードを実行することとを備える、システム。
  11. 各ホストの前記メモリアクセストポロジは、前記ホストに対してローカルであるそれぞれのメモリを含むそれぞれの非均一メモリアクセス(NUMA)トポロジを含み、
    前記それぞれのメモリは、前記それぞれのメモリを前記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータと前記ホストの1つ以上の他のリソースとに結合するソケットインターフェイスを含む、請求項10に記載のシステム。
  12. 前記それぞれのタスク仕様で指定された前記タスクを実行することは、
    複数のニューラルネットワーク計算のそれぞれの部分を前記それぞれの複数のハードウェアアクセラレータのうちの各ハードウェアアクセラレータに割り当てたことに応答して、前記複数のニューラルネットワーク計算を行って、前記複数のニューラルネットワーク層のうちの各ニューラルネットワーク層の出力を生成することを備える、請求項10または11に記載のシステム。
  13. 前記MLワークロードを実行することは、
    前記ホストの制御グループの各リソースを使用して、かつ、前記それぞれのメモリと、前記ハードウェアアクセラレータと、前記ホストの前記リソースに含まれるそれぞれのプロセッサとの間でやり取りされるデータに基づいて、前記それぞれのタスク仕様についての命令を処理することを備える、請求項11に記載のシステム。
  14. 前記MLワークロードを実行することは、
    前記ホストの各リソースをリンクするハードウェアソケットを介してやり取りされている前記データに基づいて前記命令を処理したことに応答して、前記それぞれのタスク仕様で指定されたタスクを実行することを備え、前記ハードウェアソケットは、前記ホストによって管理される複数のリソース間で共有されるローカル通信バスを規定する、請求項13に記載のシステム。
  15. 第1のホストのそれぞれのNUMAトポロジは、一部が、
    i)前記第1のホストに対してローカルであるリソースのそれぞれの構成におけるそれぞれの第1のメモリと、
    ii)第2の異なるホストに対してはローカルであるが前記第1のホストに対してはリモートであるリソースのそれぞれの構成におけるそれぞれの第2の異なるメモリとに基づく、請求項13に記載のシステム。
  16. 前記多数のホストを決定することは、
    前記複数のホストのうちの各ホストによって管理されるリソースの構成を記述するシステムファイルを取得することと、
    前記複数のホストのうちの各ホストの前記システムファイルに記述されている前記リソースの構成に基づいて、前記多数のホストを決定することとを備える、請求項10~15のいずれか1項に記載のシステム。
  17. 前記動作は、
    前記複数のホストのうちの各ホストのNUMAソケットのマッピングを記述するシステムファイルに基づいて、前記ホストのリソースを結合する1つ以上のソケットを特定することと、
    前記ホストの前記リソースを結合する前記1つ以上のソケットに基づいて、前記ホストの制御グループを形成することとを備える、請求項10に記載のシステム。
  18. 前記制御グループ内のアクセラレータのための1つ以上のソケットインターフェイスに基づいて、前記タスク仕様のMLタスクを前記ホストの前記制御グループに割り当てることを備え、前記ソケットインターフェイスは前記システムファイルに記述されている前記NUMAソケットのマッピングに含まれており、さらに、
    前記制御グループ内の前記アクセラレータを使用して、前記MLタスクを前記制御グループの下でプロセスとして実行することを備える、請求項17に記載のシステム。
  19. ハードウェアアクセラレータによって実行されるプログラムであって、前記ハードウェアアクセラレータに前請求項1~9のいずれか1項に記載された方法を実行させる、プログラム。
JP2022514245A 2019-11-20 2020-09-08 機械学習ワークロードのためのタスクスケジューリング Active JP7379668B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023187576A JP2024020271A (ja) 2019-11-20 2023-11-01 機械学習ワークロードのためのタスクスケジューリング

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962938304P 2019-11-20 2019-11-20
US62/938,304 2019-11-20
US16/720,717 US11544113B2 (en) 2019-11-20 2019-12-19 Task scheduling for machine-learning workloads
US16/720,717 2019-12-19
PCT/US2020/049648 WO2021101617A1 (en) 2019-11-20 2020-09-08 Task scheduling for machine-learning workloads

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023187576A Division JP2024020271A (ja) 2019-11-20 2023-11-01 機械学習ワークロードのためのタスクスケジューリング

Publications (2)

Publication Number Publication Date
JP2023511467A JP2023511467A (ja) 2023-03-20
JP7379668B2 true JP7379668B2 (ja) 2023-11-14

Family

ID=75910002

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022514245A Active JP7379668B2 (ja) 2019-11-20 2020-09-08 機械学習ワークロードのためのタスクスケジューリング
JP2023187576A Pending JP2024020271A (ja) 2019-11-20 2023-11-01 機械学習ワークロードのためのタスクスケジューリング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023187576A Pending JP2024020271A (ja) 2019-11-20 2023-11-01 機械学習ワークロードのためのタスクスケジューリング

Country Status (6)

Country Link
US (2) US11544113B2 (ja)
EP (1) EP4062281A1 (ja)
JP (2) JP7379668B2 (ja)
KR (1) KR20220038497A (ja)
CN (1) CN114503077A (ja)
WO (1) WO2021101617A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544113B2 (en) * 2019-11-20 2023-01-03 Google Llc Task scheduling for machine-learning workloads
US11847489B2 (en) * 2021-01-26 2023-12-19 Apple Inc. United states graphics processor techniques with split between workload distribution control data on shared control bus and corresponding graphics data on memory interfaces
US11436054B1 (en) * 2021-04-05 2022-09-06 Hewlett Packard Enterprise Development Lp Directing queries to nodes of a cluster of a container orchestration platform distributed across a host system and a hardware accelerator of the host system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132887A (ja) 2014-01-09 2015-07-23 富士通株式会社 要求分散プログラム、要求分散方法および情報処理装置
US20190114534A1 (en) 2017-10-17 2019-04-18 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
US20190312772A1 (en) 2018-04-04 2019-10-10 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
US20190325302A1 (en) 2018-04-23 2019-10-24 EMC IP Holding Company LLC Implementing parameter server in networking infrastructure for high-performance computing

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2476314A1 (en) 2002-02-07 2003-08-14 Think-Dynamics Inc. Method and system for managing resources in a data center
US20130185729A1 (en) 2012-01-13 2013-07-18 Rutgers, The State University Of New Jersey Accelerating resource allocation in virtualized environments using workload classes and/or workload signatures
US9697045B2 (en) 2015-03-24 2017-07-04 International Business Machines Corporation Selecting resource allocation policies and resolving resource conflicts
US10241674B2 (en) 2015-12-11 2019-03-26 Vmware, Inc. Workload aware NUMA scheduling
US10346950B2 (en) 2016-10-05 2019-07-09 Hidden Path Entertainment, Inc. System and method of capturing and rendering a stereoscopic panorama using a depth buffer
US10176550B1 (en) 2017-03-20 2019-01-08 Nutanix, Inc. GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system
US11010205B2 (en) 2017-05-30 2021-05-18 Hewlett Packard Enterprise Development Lp Virtual network function resource allocation
US10445249B2 (en) * 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
US10713092B2 (en) 2018-01-02 2020-07-14 Jpmorgan Chase Bank, N.A. Dynamic resource management of a pool of resources for multi-tenant applications based on sample exceution, query type or jobs
US10942767B2 (en) 2018-02-27 2021-03-09 Microsoft Technology Licensing, Llc Deep neural network workload scheduling
US10601903B2 (en) * 2018-05-17 2020-03-24 International Business Machines Corporation Optimizing dynamical resource allocations based on locality of resources in disaggregated data centers
US11030012B2 (en) 2018-09-28 2021-06-08 Intel Corporation Methods and apparatus for allocating a workload to an accelerator using machine learning
US11216314B2 (en) * 2018-11-02 2022-01-04 EMC IP Holding Company LLC Dynamic reallocation of resources in accelerator-as-a-service computing environment
US20200294182A1 (en) * 2019-03-15 2020-09-17 Intel Corporation On chip dense memory for temporal buffering
US11388054B2 (en) * 2019-04-30 2022-07-12 Intel Corporation Modular I/O configurations for edge computing using disaggregated chiplets
US11521042B2 (en) 2019-05-21 2022-12-06 Anil Ravindranath System and method to dynamically and automatically sharing resources of coprocessor AI accelerators
US11301307B2 (en) * 2019-07-24 2022-04-12 Red Hat, Inc. Predictive analysis for migration schedulers
US20210097428A1 (en) * 2019-09-30 2021-04-01 International Business Machines Corporation Scalable and dynamic transfer learning mechanism
US20210149677A1 (en) * 2019-11-15 2021-05-20 Intel Corporation Enhanced processor functions for calculation
US11726793B2 (en) * 2019-11-15 2023-08-15 Intel Corporation Data locality enhancement for graphics processing units
US11544113B2 (en) * 2019-11-20 2023-01-03 Google Llc Task scheduling for machine-learning workloads
US11586932B2 (en) * 2020-03-10 2023-02-21 International Business Machines Corporation Model training with variable batch sizing and gradient checkpoint segments
US11526964B2 (en) * 2020-06-10 2022-12-13 Intel Corporation Deep learning based selection of samples for adaptive supersampling
US20220114401A1 (en) * 2020-10-12 2022-04-14 International Business Machines Corporation Predicting performance of machine learning models
US20220171700A1 (en) * 2020-12-02 2022-06-02 Unifabrix Ltd. System and method for multimodal computer address space provisioning
US20220188691A1 (en) * 2020-12-11 2022-06-16 International Business Machines Corporation Machine Learning Pipeline Generation
US20220124009A1 (en) * 2021-11-16 2022-04-21 Thijs Metsch Intent-based orchestration in heterogenous compute platforms
US20230195519A1 (en) * 2021-12-22 2023-06-22 Intel Corporation Low power inference engine pipeline in a graphics processing unit
US20230137191A1 (en) * 2022-11-12 2023-05-04 Adrian C. Hoban Mechanism to recompose workload packages in a computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132887A (ja) 2014-01-09 2015-07-23 富士通株式会社 要求分散プログラム、要求分散方法および情報処理装置
US20190114534A1 (en) 2017-10-17 2019-04-18 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
US20190312772A1 (en) 2018-04-04 2019-10-10 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
US20190325302A1 (en) 2018-04-23 2019-10-24 EMC IP Holding Company LLC Implementing parameter server in networking infrastructure for high-performance computing

Also Published As

Publication number Publication date
US20210149729A1 (en) 2021-05-20
JP2024020271A (ja) 2024-02-14
CN114503077A (zh) 2022-05-13
EP4062281A1 (en) 2022-09-28
WO2021101617A1 (en) 2021-05-27
US11544113B2 (en) 2023-01-03
US20230136661A1 (en) 2023-05-04
KR20220038497A (ko) 2022-03-28
JP2023511467A (ja) 2023-03-20

Similar Documents

Publication Publication Date Title
CN111247533B (zh) 用于神经网络加速的机器学习运行时库
JP7379668B2 (ja) 機械学習ワークロードのためのタスクスケジューリング
CN115422284B (zh) 存储设备、分布式存储系统以及数据处理方法
TWI547817B (zh) 叢集運算架構的資源規劃方法、系統及裝置
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
US11055139B2 (en) Smart accelerator allocation and reclamation for deep learning jobs in a computing cluster
CN114730275A (zh) 使用张量在分布式计算系统中进行矢量化资源调度的方法和装置
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
US10936377B2 (en) Distributed database system and resource management method for distributed database system
JP2022068110A (ja) データ処理方法、データ処理装置及びデータ処理装置を含む電子装置
US20220229695A1 (en) System and method for scheduling in a computing system
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
CN106844024B (zh) 一种自学习运行时间预测模型的gpu/cpu调度方法及系统
CN113010301A (zh) 用户定义的测定的优先级队列
US20190370076A1 (en) Methods and apparatus to enable dynamic processing of a predefined workload
US11663465B2 (en) Method of managing task performance in an artificial neural network, and system executing an artificial neural network
US20240111578A1 (en) Hierarchical work scheduling
US20240095083A1 (en) Parallel workload scheduling based on workload data coherence
JP7396463B2 (ja) 分散処理ノードおよび分散処理システム
US20230385228A1 (en) Remote promise and remote future for downstream components to update upstream states
KR20230064963A (ko) 클러스터 컴퓨팅 시스템에서의 리소스 할당 방법 및 장치
KR20220132796A (ko) 기계학습 워크로드 처리 장치 및 방법
KR20230135923A (ko) 기계학습 서비스를 위한 클러스터 구성 방법 및 장치
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
Melissaris Market-Based Resourse Management for Many-Core Systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231101

R150 Certificate of patent or registration of utility model

Ref document number: 7379668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150