JP7385156B2 - Scheduling method, scheduler, GPU cluster system and program - Google Patents
Scheduling method, scheduler, GPU cluster system and program Download PDFInfo
- Publication number
- JP7385156B2 JP7385156B2 JP2022514945A JP2022514945A JP7385156B2 JP 7385156 B2 JP7385156 B2 JP 7385156B2 JP 2022514945 A JP2022514945 A JP 2022514945A JP 2022514945 A JP2022514945 A JP 2022514945A JP 7385156 B2 JP7385156 B2 JP 7385156B2
- Authority
- JP
- Japan
- Prior art keywords
- job
- cluster
- queue
- scheduler
- gpu
- 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
Links
- 238000000034 method Methods 0.000 title claims description 142
- 238000003860 storage Methods 0.000 claims description 193
- 238000012545 processing Methods 0.000 claims description 93
- 239000000284 extract Substances 0.000 claims description 11
- 230000008569 process Effects 0.000 description 87
- 229920006235 chlorinated polyethylene elastomer Polymers 0.000 description 71
- 238000010586 diagram Methods 0.000 description 63
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000010076 replication Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000136 cloud-point extraction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、スケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムに関する。 The present invention relates to a scheduling method, a scheduler, a GPU cluster system, and a program.
GPU(Graphics Processing Unit)は、高精細な画像や動画のレンダリングなどに必要な計算処理を行うハードウェアである。近年、GPUは、機械学習(Machine Learning)などの演算器として用いられている。また、複数のGPUをクラスタ化したGPUクラスタの開発も行われている。コンテナ型のGPUクラスタを管理するオープンソース・ソフトウェアとしてKubernetesが存在する(非特許文献1)。 GPU (Graphics Processing Unit) is hardware that performs the calculation processing necessary for rendering high-definition images and videos. In recent years, GPUs have been used as computing units for machine learning and other applications. GPU clusters, which cluster multiple GPUs, are also being developed. Kubernetes exists as open source software that manages container-type GPU clusters (Non-Patent Document 1).
従来のGPUクラスタでは、ストレージにアップロードされた学習対象などのデータを読み出しながら機械学習処理などが行われる。GPUの処理速度は高速であるが、これに比べてストレージの処理速度は遅い。このため、ジョブが確保したGPUに、データの読み出し待ちによる遊休時間が発生してしまう。 In conventional GPU clusters, machine learning processing is performed while reading data such as learning targets that have been uploaded to storage. GPU processing speed is fast, but storage processing speed is slow compared to GPU processing speed. As a result, idle time occurs on the GPU secured by the job as it waits to read data.
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、GPUの遊休時間を低減し、GPUの稼働率を向上させるスケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムを提供することにある。 The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a scheduling method, scheduler, GPU cluster system, and program that reduce GPU idle time and improve GPU utilization rate. It is in.
上記目的を達成するため、本発明の一態様は、GPUクラスタシステムが行うスケジューリング方法であって、スケジューラは、投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納するステップと、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、前記ジョブのデータのフェッチをキャッシュクラスタに開始させるステップと、フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納するステップと、第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示するステップと、を行い、前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納するステップを行い、GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行するステップを行う。 In order to achieve the above object, one aspect of the present invention is a scheduling method performed by a GPU cluster system, in which the scheduler stores the submitted job in a first stage queue that stores jobs waiting to start fetching. and fetching a job from the first stage queue, registering it in a fetching job list, and instructing the cache cluster to start fetching the data of the job, and fetching a job whose fetched data amount exceeds a predetermined threshold. The cache cluster performs the steps of extracting the job from the job list and storing it in a second stage queue that stores jobs waiting to be deployed, and extracting the job from the second stage queue and instructing the deployment of the job. The GPU cluster performs a step of fetching the data of the job registered in the processing job list from the storage where the data is stored and storing it in the cache cluster, and the GPU cluster accesses the data of the cache cluster to process the job. Perform the steps you want to perform.
本発明の一態様は、GPUクラスタシステムにおけるスケジューラであって、投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納する第1キューセレクタと、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる第1ジョブセレクタと、フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納する第2キューセレクタと、第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示する第2ジョブセレクタと、を有し、前記ジョブのデプロイ指示には、前記ジョブのデータの格納場所として前記キャッシュクラスタが指定され、GPUクラスタは前記キャッシュクラスタにアクセスして前記ジョブを実行する。 One aspect of the present invention is a scheduler for a GPU cluster system, which includes a first queue selector that stores submitted jobs in a first stage queue that stores jobs waiting to start fetching, and a first queue selector that stores jobs in the first stage queue. A first job selector that causes the cache cluster to fetch data of the job that is retrieved and registered in a fetching job list and stored in the storage, and a job whose fetched data amount exceeds a predetermined threshold; A second queue selector that extracts a job from a job list and stores it in a second stage queue that stores jobs waiting to be deployed, and a second job selector that extracts a job from the second stage queue and instructs to deploy the job. , the job deployment instruction specifies the cache cluster as a storage location for data of the job, and the GPU cluster accesses the cache cluster and executes the job.
本発明の一態様は、スケジューラと、キャッシュクラスタと、GPUクラスタとを備えるGPUクラスタシステムであって、前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納し、前記GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行する。 One aspect of the present invention is a GPU cluster system including a scheduler, a cache cluster, and a GPU cluster, wherein the cache cluster stores data of a job registered in a fetching job list. The data is fetched from storage and stored in the cache cluster, and the GPU cluster accesses the data in the cache cluster to execute the job.
本発明の一態様は、上記スケジューラとして、コンピュータを機能させるプログラムである。 One aspect of the present invention is a program that causes a computer to function as the scheduler.
本発明によれば、GPUの遊休時間を低減し、GPUの稼働率を向上させるスケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムを提供することができる。 According to the present invention, it is possible to provide a scheduling method, a scheduler, a GPU cluster system, and a program that reduce idle time of GPUs and improve utilization rates of GPUs.
以下、本発明の実施の形態について、図面を参照して説明する。 Embodiments of the present invention will be described below with reference to the drawings.
(GPUクラスタシステムの基本構成)
図1は、基本的なGPUクラスタシステムの概略構成を示す構成図である。図示するGPUクラスタシステムは、GPUを用いた学習処理を実行するためのGPU学習クラスタシステムである。(Basic configuration of GPU cluster system)
FIG. 1 is a configuration diagram showing a schematic configuration of a basic GPU cluster system. The illustrated GPU cluster system is a GPU learning cluster system for executing learning processing using GPU.
クラスタ提供事業者(以下、「事業者」という)は、GPUクラスタを用いて学習処理を代行する設備をユーザ(利用者)に提供する。ユーザは、高価なGPUを保有せずに、GPUクラスタの利用時間等に応じて従量課金された金額を事業者に支払う。機械学習等の学習処理は一度実行すれば良いため、ユーザは、高価なGPUを購入するよりも、従量課金された金額を支払う方が低コストとなる。 A cluster provider (hereinafter referred to as a "company") provides users with equipment that performs learning processing on their behalf using GPU clusters. Users do not own expensive GPUs, but pay the operator a pay-as-you-go amount based on the usage time of the GPU cluster. Since learning processes such as machine learning only need to be executed once, it is cheaper for users to pay a pay-per-use amount than to purchase an expensive GPU.
一方、GPUの稼働率を高めることが、事業者の利益最大化のポイントとなる。そのため、GPUクラスタシステムでは、多様なジョブ(Job)を実行できること(すなわちジョブの仮想化)、ジョブのデプロイが高速であることなどが求められる。 On the other hand, increasing the utilization rate of GPUs is the key to maximizing profits for operators. Therefore, GPU cluster systems are required to be able to execute a variety of jobs (that is, job virtualization) and to deploy jobs at high speed.
図1を参照して基本的なGPUクラスタの動作概要を説明する。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のクラスタを用いる。ユーザ端末5は、ユーザの指示により、GPUクラスタを提供する事業者から指示されたクラスタ共有ストレージ4Aに学習対象となるデータ等を格納する(S1A)。ユーザ端末5は、ユーザの指示により、実施したい学習処理のジョブをスケジューラ1Aに登録する(S2A)。スケジューラ1Aは、複数のユーザ端末5から受け取ったジョブを優先順位、想定処理時間などを踏まえてスケジューリングし、 GPUリソースが確保でき次第マスタ2Aにジョブの実行を指示する(S3A)。
An overview of the basic GPU cluster operation will be explained with reference to FIG. Here, we use a container-type cluster that allocates GPU resources for each job execution. In response to a user's instruction, the user terminal 5 stores data and the like to be a learning target in the cluster shared
マスタ2Aは、ジョブをノードにデプロイし、GPUをアタッチし、GPUに学習処理を実行させる(S4A)。すなわち、マスタ2Aは、ジョブ毎に学習・推論のプログラムを実行するための仮想環境を生成し、GPUをアタッチする。マスタ2Aは、ジョブが完了したらGPUを開放する。GPUは、予めクラスタ共有ストレージ4Aにアップロードされた学習対象データを読み出しながら学習処理を行い、学習処理の結果をクラスタ共有ストレージ4Aに格納する(S5A)。ユーザは、自身のジョブの実行が終了すると、クラスタ共有ストレージ4Aにアクセスすることで、学習処理の実行結果を取得することができる。
The
図1に示す基本的なGPUクラスタシステムの場合、下記のような想定状況および制約条件に対応することが難しい。 In the case of the basic GPU cluster system shown in Figure 1, it is difficult to deal with the following assumed situations and constraints.
(1)学習プログラムの処理速度よりもストレージの速度(データ転送速度)が遅い場合、S5Aの処理において、ストレージの速度不足によりジョブが確保したGPUに遊休時間が発生する。ビッグデータは、Cephなどを用いた大容量分散ストレージであるクラスタ共有ストレージ4に、無加工またはほぼ無加工で格納される。分散ストレージは、分散並列化の効果で大容量化しても低速化しないことが特徴であるが、劇的に高速化するわけではなく、高々 数百MB/s の性能である。
(1) If the storage speed (data transfer speed) is slower than the processing speed of the learning program, idle time occurs in the GPU secured by the job due to insufficient storage speed in the process of S5A. Big data is stored unprocessed or almost unprocessed in the cluster shared
GPUの処理速度に匹敵する高速なストレージは極めて高価であるため、ビッグデータすべてを格納できる容量の高価なストレージは用意できない。一方、ビッグデータ全体が同時に必要になることはない。 High-speed storage that matches the processing speed of GPUs is extremely expensive, so expensive storage with the capacity to store all of the big data is not available. On the other hand, all of big data is not needed at the same time.
(2)学習対象データを纏まった状態でクラスタ共有ストレージ4にアップロードできない、または、学習対象データが巨大過ぎて、全ての学習対象データをアップロードするのが現実的ではない場合がある。
(2) There are cases where it is not possible to upload all the learning target data to the cluster shared
このような場合、図2に示すように、ユーザ端末5は、ユーザ拠点のユーザストレージ6Aに学習対象データを格納し(S1A’)、ノード3Aのジョブは、ユーザストレージ6Aに閉域接続し、ユーザストレージ6Aに直接アクセスする(S5A’)。しかしながら、ユーザストレージ6Aからノード3Aまでの通信区間があり、また、ユーザストレージ6Aの速度が遅いことにより、学習プログラムの処理速度よりもデータ転送速度が遅くなり、GPUの遊休時間が発生する。
In such a case, as shown in FIG. 2, the user terminal 5 stores the learning target data in the
(3) GPUを効率的に稼働させるために、データの蓄積と学習処理とを並行して実行させたい場合がある。 (3) In order to operate the GPU efficiently, there are cases where data accumulation and learning processing need to be executed in parallel.
このような状況に対応可能な本実施形態のGPUクラスタシステムについて、以下に説明する。 The GPU cluster system of this embodiment that can cope with such a situation will be described below.
(本実施形態のGPUクラスタシステム)
図3は、本実施形態のGPUクラスタシステムの概略構成を示す構成図である。本実施形態のGPUクラスタシステムは、GPUを用いて学習処理を実行するためのGPU学習クラスタシステムである。学習処理は、学習対象データを読み込んで、機械学習等の処理を行うことである。この際、学習対象データの全てを一括で読み込むのではなく、ブロック単位やファイル単位などに分けて順々に読み込みながら学習処理を行う。(GPU cluster system of this embodiment)
FIG. 3 is a configuration diagram showing a schematic configuration of the GPU cluster system of this embodiment. The GPU cluster system of this embodiment is a GPU learning cluster system for executing learning processing using GPU. Learning processing is reading the learning target data and performing processing such as machine learning. At this time, rather than reading all of the learning target data at once, the learning process is performed while dividing it into blocks or files and reading them one after another.
図示するGPUクラスタシステムは、スケジューラ1と、マスタ2と、ノード3と、クラスタ共有ストレージ4と、キャッシュクラスタ7とを備える。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のGPUクラスタを用いる。ユーザ拠点では、ユーザが学習対象データを格納するユーザストレージ6を備えていてもよい。
The illustrated GPU cluster system includes a
本実施形態のGPUクラスタシステムは、高コストで高速なキャッシュクラスタ7(キャッシュ)を備え、スケジューラ1は、キャッシュクラスタ7とGPUとを同時にスケジュールする。大容量データは、通常時には低コストで低速なストレージ(クラスタ共有ストレージ4、ユーザストレージ6)に格納しておき、ジョブの実行の際にデータをキャッシュクラスタ7に格納する。これにより、本実施形態では、GPUは、高速なキャッシュクラスタ7からデータを読み出すため、GPUがデータ読み出し待ちで遊休してしまう事態を回避することができる。
The GPU cluster system of this embodiment includes a high-cost and high-speed cache cluster 7 (cache), and the
スケジューラ1(Scheduler)は、ユーザ端末5から投入されるジョブ(Job)を受け付ける。スケジューラ1は、GPUクラスタ内のGPUリソースの空き状況を監視し、空きがあれば、ジョブのデプロイ(実行環境に展開すること)をマスタ2に指示する。すなわち、スケジューラ1は、ジョブの実行をマスタ2に指示する。
The
マスタ2(Master)は、ノード3(Node)の管理と、ジョブのデプロイを行う。マスタ2は、スケジューラ1からジョブのデプロイが指示されると、ノード3上にジョブに定義されたコンテナ等の仮想環境を構築し、仮想環境でジョブに定義されているプログラムを実行させる。マスタ2は、ジョブに定義されたプログラムが完了すると、仮想環境を削除する。
Master 2 (Master) manages node 3 (Node) and deploys jobs. When instructed to deploy a job by the
ノード3(Node)には、複数のGPUがプールされている。GPUは、マスタ2にアタッチされるとジョブを実行する。ジョブは、ユーザが実行したいプログラム(例えば、学習、推論のプログラム)と、プログラムの実行環境とを定義したものである。具体的には、ジョブには、実行すべき1以上のプログラムと、その順序とが含まれる。また、ジョブには、プログラムを実行するための環境(仮想環境、ランタイム、OS、ディストリビューション、ライブラリ等)が含まれる。例えば、ジョブには、環境として、コンテナのイメージファイル名、VM(Virtual Machine)のイメージファイル名などが含まれる。また、必要があれば、ジョブは、上記環境を自動的に構築するための手順を含み、ジョブが自動で実行環境のイメージを生成してもよい。本実施形態のジョブはメインコンテナ(Main Container)を含み、メインコンテナ以外のコンテナを含んでもよい。メインコンテナは、本実施形態の学習プログラムを実行する仮想環境のコンテナである。なお、本実施形態では、仮想環境の実現形態としてコンテナを用いるが、VMでもよい。
A plurality of GPUs are pooled in the node 3 (Node). The GPU executes the job when attached to
クラスタ共有ストレージ4(Cluster Shared Storage)は、データを格納するストレージシステムである。例えば、クラスタ共有ストレージ4には、学習対象データと、実行結果とが格納される。ジョブの仮想環境からクラスタ共有ストレージ4にアクセスできる。ユーザは、直接的または間接的に何らかの手段でクラスタ共有ストレージ4に、ジョブが読み込む学習対象データを格納できる。クラスタ共有ストレージ4では、大量の学習対象データを格納するため、例えばCeph、GlusterFS、Swift、RAID等のストレージ技術の利用が想定される。Ceph(https://ceph.io/)およびGlusterFS(https://www.gluster.org/)は、オープンソースの分散ストレージソフトウェアである。
The cluster shared storage 4 (Cluster Shared Storage) is a storage system that stores data. For example, the cluster shared
キャッシュクラスタ7(Cluster Shared Storage)については、後述する。 The cache cluster 7 (Cluster Shared Storage) will be described later.
次に、図3を参照して、本実施形態のGPUクラスタシステムの動作概要を説明する。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のクラスタを用いる。 Next, an overview of the operation of the GPU cluster system of this embodiment will be explained with reference to FIG. Here, we use a container-type cluster that allocates GPU resources for each job execution.
本実施形態では、キャッシュクラスタ7がクラスタ共有ストレージ4またはユーザストレージ6からデータをフェッチする。なお、データを読み出す「フェッチ」は、以降において「キャッシュ」ともいう。
In this embodiment, the
ユーザ端末5は、ユーザの指示により、GPUクラスタシステムを提供する事業者から指示されたクラスタ共有ストレージ4またはユーザストレージ6に学習対象データ等を格納する(S1)。ユーザ端末5は、ユーザの指示により、実施したい学習処理のジョブをスケジューラ1に登録する(S2)。スケジューラ1は、キャッシュクラスタ7にデータをキャッシュするように指示する(S3)。キャッシュクラスタ7は、クラスタ共有ストレージ4またはユーザストレージ6から学習対象データのフェッチを開始する(S4)。スケジューラ1は、複数のユーザ端末5(ユーザ)から受け取ったジョブを登録順序、優先順位、必要リソース量(GPU数、CPU数など)、想定処理時間などを踏まえてスケジューリングし、 GPUリソースが確保でき次第、マスタ2にジョブの実行を指示する(S5)。必要リソース量は、ユーザが事前にジョブのメタデータに含めてスケジューラ1に通知してもよく、または、スケジューラ1がジョブの内容から推定してもよい。
In response to a user's instruction, the user terminal 5 stores learning target data and the like in the cluster shared
マスタ2は、ジョブをノードにデプロイし、GPUをアタッチし、キャッシュクラスタ7のキャッシュ領域をマウントして、GPUにジョブの学習処理を実行させる(S6)。すなわち、マスタ2は、ジョブ毎に学習・推論のプログラムを実行するための仮想環境を生成し、GPUをアタッチする。マスタ2は、ジョブが完了したらGPUを開放する。GPUは、キャッシュ領域にキャッシュされた学習対象のデータを読み出しながら学習処理を行い、学習処理の結果をキャッシュクラスタ7またはクラスタ共有ストレージ4に格納する(S7)。ユーザは、自身のジョブの実行が終了すると、キャッシュクラスタ7またはクラスタ共有ストレージ4にアクセスすることで、学習処理の実行結果を取得することができる。スケジューラ1は、ジョブの終了後にキャッシュ領域のデータを削除する(S8)。
The
図4は、キャッシュクラスタ7の構成図である。図示するキャッシュクラスタ7は、VPN接続部71(VPN Function)と、キャッシュ管理部72(Cache Manager)と、1以上のストレージ73(Storage)とを備える。
FIG. 4 is a configuration diagram of the
VPN接続部71は、閉域接続を開始または待受し、閉域接続を確立する。
The
キャッシュ管理部72は、1以上のストレージ73をまとめてクラスタを構成する。キャッシュ管理部72は、オリジン(原本)となるストレージ(クラスタ共有ストレージ4、ユーザストレージ6)に対してファイル共有プロトコル等を用いてアクセスし、オリジンが持つデータをキャッシュしつつ要求元にデータを共有する透過的なキャッシュ機能を有する。要求元が、キャッシュクラスタ7にデータを要求すると、キャッシュ管理部72が要求されたデータがキャッシュ済みか否かを判断する。キャッシュ済みであれば当該データを要求元に返す。キャッシュ済みでなければ、オリジンとなるストレージにデータを要求し、オリジンとなるストレージから渡されたデータを要求元に返す。キャッシュ管理部72は、クラスタ共有ストレージ4およびユーザストレージ6を操作する機能を有する。
The
ストレージ73は、オリジンとなるストレージからキャッシュしたデータを格納する。ストレージ73には、NVMe、NVDIMMなどの高速なストレージを使用する。なお、VPN接続部71は、キャッシュクラスタ7に内包されず、キャッシュクラスタ7から独立してGPUクラスタシステムに存在してもよい。また、キャッシュクラスタ7は、クラスタ共有ストレージ4を内包してもよい。
The
図5は、スケジューラ1の構成図である。スケジューラ1は、第1ステージキュー10と、第2ステージキュー20と、フェッチングジョブリスト30(Fetching Job List (以下、「FJL」))と、アカウントDB31(Accounting DB)と、GPU使用量監視部32(GPU Utilization Monitor)と、を備える。アカウントDB31は、各ユーザのGPU使用量を管理する。アカウントDB31は、スケジューラ1内ではなく、スケジューラ1の外部に設置してもよい。また、アカウントDB31には、事業者の既存のユーザデータベースなどを転用してもよい。GPU使用量監視部32は、マスタ2またはノード3からGPU使用量を取得し、GPU使用量を監視する。
FIG. 5 is a configuration diagram of the
第1ステージキュー10には、フェッチ開始待ちのジョブが格納される。第1ステージキュー10は、第1キューセレクタ11(Queue Selector 1)と、複数のジョブキュー13-15と、第1ジョブセレクタ12(Job Selector 1)とを備える。第1キューセレクタ11は、ユーザ端末5から投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキュー10のいずれかのジョブキュー13-15に格納する。第1キューセレクタ11の処理は後述する。
The
第1ジョブセレクタ12は、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる。本実施形態では、第1ジョブセレクタ12は、ジョブキュー13-15に格納されたジョブを優先度等に従って取り出し、フェッチングジョブリスト30に登録する。また、第1ジョブセレクタ12は、アカウントDB31にユーザの現時点のGPUの使用量を問い合わせ、ユーザの現時点の使用量に応じて、公平性割当量またはユーザ割当量を超過したジョブを対応するジョブキューに再配置する。第1ジョブセレクタ12の処理は後述する。
The
第1ステージのジョブキューには、ジョブキュー13(Job Queue (以下、「JQ」))と、公平性超過ジョブキュー14(Over Fairness-quota Job Queue (以下「OFJQ」))と、ユーザ超過ジョブキュー15(Over User-quota Job Queue (以下、「OUJQ」))とが含まれる。 The first stage job queue includes a job queue 13 (JQ), an over-fairness-quota job queue 14 (OFJQ), and over-user jobs. Queue 15 (Over User-quota Job Queue (hereinafter referred to as "OUJQ")) is included.
JQ13には、公平性割当量およびユーザ割当量を超えていないジョブが格納される。JQ13は、ジョブのクラス(優先度)k毎に設けられる。ここでは、クラスkは1≦k≦nとし、最も高い優先度のクラスはk=1とし、最も低い優先度のクラスはk=nとする。クラスkのJQ13は、「JQ k」と記載する場合もある。 Jobs that do not exceed the fairness quota and user quota are stored in JQ13. JQ13 is provided for each job class (priority) k. Here, class k is 1≦k≦n, the highest priority class is k=1, and the lowest priority class is k=n. JQ13 of class k is sometimes written as "JQ k".
OFJQ14には、公平性の観点から各ユーザに割り当てられたGPUの公平性割当量(quota)を超えたジョブが格納される。この公平性の割当量は、1人のユーザがGPUを独占し、他のユーザがGPUを使用できない状態を防止し、各ユーザにGPUを公平に割り当てるために、事業者が各ユーザのGPU使用量の上限を定めたものである。割当量は、例えば1か月などの所定期間の割当量である。OFJQ14は、JQ13と同様にジョブのクラスk 毎に設けられ、kは1≦k≦nとする。クラスkのジョブキュー14は、「OFJQ k」と記載する場合もある。
OFJQ14 stores jobs that exceed the GPU fairness quota allocated to each user from the viewpoint of fairness. This fairness quota is set by the operator to prevent a situation where one user monopolizes the GPU and other users cannot use the GPU, and to fairly allocate GPUs to each user. This sets an upper limit on the amount. The allocated amount is an allocated amount for a predetermined period such as one month, for example. Like JQ13, OFJQ14 is provided for each job class k, where k is 1≦k≦n. The
OUJQ15には、ユーザが設定したGPUのユーザ割当量を超えたジョブが格納される。このユーザ割当量は、GPUの使用料金を予算内に抑えるために、ユーザが自身のGPU使用量の上限を定めたものである。割当量は、例えば1か月などの所定期間の割当量である。OUJQ15に格納されたジョブは、デプロイおよびフェッチされない。ユーザ割当量が変更されるか、あるいは、現在の使用量が更新された場合、第1ジョブセレクタ12は、OUJQ15の先頭からジョブを取り出し、第1キューセレクタ11は当該ジョブを対応するクラスのジョブキュー13に振り分ける。現在の使用量が更新される場合は、例えば、月毎の使用量の上限を定めている場合、翌月となって使用量が0に更新される場合などである。
OUJQ15 stores jobs that exceed the user allocated amount of GPU set by the user. This user quota is an upper limit set by the user for his/her own GPU usage in order to keep the GPU usage fee within the budget. The allocated amount is an allocated amount for a predetermined period such as one month, for example. Jobs stored in OUJQ15 are not deployed and fetched. When the user quota is changed or the current usage amount is updated, the
第1ジョブセレクタ12は、JQ13のジョブをOFJQ14のジョブより優先的にFJL30に登録する。
The
FJL30は、データのフェッチを開始するジョブが登録されるリストである。キャッシュクラスタ7は、FJL30に登録されたジョブをフェッチ(プリフェッチ)する。第1ジョブセレクタ12は、ジョブをFJL30に登録した後に、FJL30に追加されたジョブのフェッチの開始をキャッシュクラスタ7に指示してもよい。キャッシュクラスタ7は、定期的にFJL30をチェックし、新たなジョブが登録されると当該ジョブのフェッチを開始してもよい。フェッチされたデータ量が所定の閾値を超えたジョブは、第2ステージキュー20に移される。閾値については、後述する。FJL30には、サスペンド状態のジョブが登録されてもよい。
FJL30 is a list in which jobs that start fetching data are registered. The
第2ステージキュー20には、デプロイ待ち状態のジョブが格納される。第2ステージキュー20は、第2キューセレクタ21(Queue Selector 2)と、複数のジョブキュー23-25と、第2ジョブセレクタ22(Job Selector 2)とを備える。
The
第2キューセレクタ21は、フェッチしたデータ量が所定の閾値を超えたジョブをFJL30から取り出し、第2ステージキュー20のいずれかのキュー23-25に格納する。第2キューセレクタ21の処理は後述する。第2ジョブセレクタ22は、第2ステージキュー20のいずれかのキュー23-25からジョブを取り出し、当該ジョブのデプロイを指示する。
The
第2ステージのジョブキューには、リストアキュー23(Restore Queue(以下、「RQ」))と、デプロイキュー24(Deploy Queue(以下「DQ」))と、公平性超過キュー25(Over Fairness-quota Deploy Queue(以下 (OFDQ))とが含まれる。 The second stage job queue includes a restore queue 23 (Restore Queue (hereinafter referred to as "RQ")), a deploy queue 24 (hereinafter referred to as "DQ"), and an over fairness queue 25 (Over Fairness-quota). Deploy Queue (hereinafter referred to as (OFDQ)) is included.
RQ23には、フェッチしたデータ量が閾値を超えたリストア待ちのジョブが格納される。DQ24には、フェッチしたデータ量が閾値を超えたデプロイ待ちのジョブが格納される。OFDQ25には、フェッチしたデータ量が閾値を超えたジョブのうち、当該ジョブのユーザ(ジョブ所有者)の現在のGPU使用量が公平性割当量を超えているジョブが格納される。公平性割当量を超えたジョブは、GPUに空きがあり、他のジョブ(RQ23およびDQ24のジョブ)がない場合にデプロイ対象となる。他のジョブがある場合は、他のジョブが優先される。翌月となりユーザの使用量が0にリセットされるなどして、超過状態が解消された場合、OFDQ25の先頭のジョブから取り出してRQ23またはDQ24に格納される。
RQ23 stores jobs that are waiting to be restored and whose fetched data amount exceeds a threshold. DQ24 stores jobs waiting to be deployed whose fetched data amount exceeds a threshold. The
第2ジョブセレクタ22は、RQ23のジョブをDQ24のジョブより優先的にデプロイ指示し、DQ24のジョブをOFDQ25のジョブより優先的にデプロイ指示する。また、第2ジョブセレクタ22は、RQ23、DQ24の全てが空の場合、第2キューセレクタ21を起動し、第2キューセレクタ21にFJL30の先頭のジョブ、またはFJL30の中でフェッチしたデータ量が最も多いジョブを、RQ23、DQ24およびOFDQ25のいずれかに格納させてもよい。また、RQ23からジョブを取り出す際は、短期間でリストアとサスペンドを繰り返してしまわないように、サスペンド直後のジョブは一定時間または一定量フェッチが行われるまでデプロイ指示の対象外としてもよい。
The
FJL30からジョブを取り出す際のフェッチ済みデータ量の閾値は、例えば以下の方法で算出してもよい。
The threshold value of the fetched data amount when retrieving a job from the
第1の方法は、事業者またはユーザが定義した値を閾値とする。例えば、データ量の10%などとする。 In the first method, a value defined by a business operator or a user is used as a threshold value. For example, let it be 10% of the data amount.
第2の方法は、ジョブ定義から閾値を算出する。具体的には、ジョブ定義に含まれるプログラムのループ処理の深さと、命令数とから計算量オーダを算出し、計算量オーダの大きさにより段階に分け、段階毎に閾値を決定する。また、計算量オーダが大きいほど時間あたりのデータ処理量(データ処理速度)が低下するため、計算量オーダが大きいほど閾値は小さくする。 The second method calculates the threshold value from the job definition. Specifically, the calculation amount order is calculated from the depth of the loop processing of the program included in the job definition and the number of instructions, and the calculation amount order is divided into stages depending on the size of the calculation amount order, and a threshold value is determined for each stage. Furthermore, the larger the order of calculation amount is, the lower the amount of data processing per time (data processing speed) is, so the larger the order of calculation amount is, the smaller the threshold value is.
第3の方法は、後述するチェックポイントされるまでのジョブの実行状況から閾値を算出する。具体的には、これまでの実行状況からデータ処理速度Vpとフェッチ速度Vfを算出する。 In the third method, a threshold value is calculated from the job execution status up to a checkpoint, which will be described later. Specifically, the data processing speed Vp and the fetch speed Vf are calculated from the previous execution status.
Vf≧Vpの場合は、閾値=Vf×Mとする。Mは任意の値である。 In the case of Vf≧Vp, the threshold value is set as Vf×M. M is an arbitrary value.
Vf<Vpの場合は、閾値=(1-Vf/Vp)×S+Vp×Mとする。Sは処理されていない残りのデータ量、Mは任意の値である。 When Vf<Vp, threshold value=(1−Vf/Vp)×S+Vp×M. S is the amount of remaining data that has not been processed, and M is an arbitrary value.
図6は、第1キューセレクタ11の処理を示すフローチャートである。第1キューセレクタ11は、ジョブを受け付けると(S11)、ジョブの所有者であるユーザの優先クラスをアカウントDB31取得する(S12)。ここでは、優先クラスはkとする(S13)。第1キューセレクタ11は、GPUの公平性割当量と、ユーザの現在使用量とを比較し(S14)、現在使用量が公平性割当量を超えていない場合(S15:true)、GPUのユーザ割当量とユーザの現在使用量とを比較する(S16)。
FIG. 6 is a flowchart showing the processing of the
現在使用量がユーザ割当量を超えていない場合(S17:true)、第1キューセレクタ11は、S11で受信したジョブを優先クラスkのJQ k13の末尾に格納する(S18)。現在使用量がユーザ割当量を超えている場合(S17:false)、第1キューセレクタ11は、S11で受信したジョブをOUJQ15 の末尾に格納する(S19)。現在使用量が公平性割当量を超えている場合(S15:false)、第1キューセレクタ11は、S11で受信したジョブを優先クラスkのOFJQ k14の末尾に格納する(S20)。
If the current usage does not exceed the user quota (S17: true), the
図7は、第1ジョブセレクタ12の処理を示すフローチャートである。図7の処理は、第1キューセレクタ11にジョブが投入されることをトリガとして開始される。また、図7の処理は、第2キューセレクタ21がFJL30に空きができたことを検知することをトリガとして開始される。
FIG. 7 is a flowchart showing the processing of the
第1ジョブセレクタ12は、FJL30に空きがある場合(S31:true)、k(優先クラス)に1を設定する(S32)。k=1のJQ k13にジョブがある場合(S33:true)、第1ジョブセレクタ12は、JQ k13からジョブを取り出し(S34)、ジョブ所有者の公平性割当量と、現在使用量とを比較する(S35)。現在使用量が公平性割当量を超えていない場合(S36:true)、第1ジョブセレクタ12は、ジョブ所有者のユーザ割当量と現在使用量とを比較する(S37)。
If there is a vacancy in the FJL 30 (S31: true), the
現在使用量がユーザ割当量を超えていない場合(S38:true)、第1ジョブセレクタ12は、S34で取り出したジョブをFJL30の末尾に格納する(S39)。現在使用量がユーザ割当量を超えている場合(S38:false)、第1ジョブセレクタ12は、第1キューセレクタ11を介して、S34で取り出したジョブをOUJQ15の末尾に格納する(S40)。現在使用量が公平性割当量を超えている場合(S36:false)、第1ジョブセレクタ12は、第1キューセレクタ11を介してS34で取り出したジョブを優先クラスkのOFJQ k14の末尾に格納する(S41)。
If the current usage does not exceed the user quota (S38: true), the
k=1のJQ k13にジョブがない場合(S33:false)、第1ジョブセレクタ12は、k に1を加算し(S42)、k≦nの場合(S43::true)、S33に戻り以降の処理を行う。k>nの場合(S43:false)、第1ジョブセレクタ12は、kに1を設定する(S44)。k=1のOFJQ k14にジョブがある場合(S45:true)、第1ジョブセレクタ12は、OFJQ k14からジョブを取り出し(S48)、取り出したジョブのジョブ所有者のユーザ割当量と現在使用量とを比較し(S37)、S38に進む。S38以降の処理は、前述したとおりであるため説明を省略する。
If there is no job in JQ k13 with k=1 (S33: false), the
k=1のOFJQ k14にジョブがない場合(S45:false)、第1ジョブセレクタ12は、k に1を加算し(S46)、k≦nの場合(S47:true)、S45に戻り以降の処理を行う。k>nの場合(S47:false)、第1ジョブセレクタ12は、処理を終了する。
If there is no job in OFJQ k14 with k=1 (S45: false), the
図8は、第2キューセレクタ21の処理を示すフローチャートである。図8の処理は、定期的に実行される。第2キューセレクタ21は、変数iに1を設定し(S51)、FJL30のi番目のジョブが存在する場合(S52:true)、i番目のジョブのフェッチ済みの学習対象データのデータ量が閾値を超過しているか否かを判定する(S53)。第2キューセレクタ21は、キャッシュクラスタ7(キャッシュ管理部72)にフェッチ済みのデータ量を問い合わせる。フェッチ済みのデータ量が閾値を超過していない場合(S53:false)、第2キューセレクタ21は、i に1を加算し(S54)、S52に戻り以降の処理を行う。
FIG. 8 is a flowchart showing the processing of the
フェッチ済みデータ量が閾値を超過している場合(S53:true)、第2キューセレクタ21は、FJL30のi番目のジョブを取り出し、デキューする(S55)。第2キューセレクタ21は、取り出したジョブのメタデータを確認して(S56)、当該ジョブがサスペンド状態(一時停止状態)の場合(S57:true)、RQ23に当該ジョブを格納する(S63)。第2キューセレクタ21は、FJL30に空きができたため、第1ジョブセレクタ12を起動する(S61)。
If the fetched data amount exceeds the threshold (S53: true), the
取り出したジョブがサスペンド状態でない場合(S57:false)、第2キューセレクタ21は、ジョブ制御を進めるか否かを判定するために、ジョブ所有者の公平性割当量と減現在使用量とを確認する(S58)。現在使用量が公平性割当量を超えていない場合(S59:true)、第2キューセレクタ21は、DQ24に当該ジョブを格納し(S63)、第1ジョブセレクタ12を起動する(S61)。現在使用量が公平性割当量を超えている場合(S59:false)、第2キューセレクタ21は、OFDQ25に当該ジョブを格納し(S62)、第1ジョブセレクタ12を起動する(S61)。
If the retrieved job is not in a suspended state (S57: false), the
また、第2キューセレクタ21は、GPU使用量監視部32にGPUの使用量を問い合わせる。GPU使用量監視部32は、マスタ2またはノード3からGPUの使用量を取得し、第2キューセレクタ21に回答する。GPUに空きがあり(S64:true)、RQ23が空で(S65:true)、DQ24が空で(S66:true)、FJL30に1番目のジョブが存在する場合(S67:true)、第2キューセレクタ21は、FJL30の1番目のジョブを取り出し(S68)、S56に進む。GPUの使用率を最大に高めるために、本実施形態では、実行すべきRQ23およびDQ24のジョブがなくなった場合、フェッチが不十分なFJL30のジョブであってもデプロイさせる。すなわち、第2キューセレクタ21は、RQ23およびDQ24が共に空の場合、FJL30の1番目のジョブをフェッチが不十分であっても取り出していずれかのキュー23-25にエンキューする。S64からS67の少なくとも1つがfalseの場合、第2キューセレクタ21は、第1ジョブセレクタ12を起動する(S61)。
The
なお、学習対象データが格納されたストレージのI/O速度、通信速度などにより、FJL30に格納されたジョブのうち、1番目(先頭)のジョブのフェッチ済みデータ量が、最も多いとは限らない。このような場合を考慮して、S68で第2キューセレクタ21は、FJL30の中でフェッチしたデータ量が最も多いジョブを取り出し、S56に進み、当該ジョブをRQ23、DQ24およびOFDQ25のいずれかに格納させてもよい。すなわち、第2キューセレクタ21は、FJL30内のジョブのうち最もフェッチが進んだジョブを取り出してもよい。
Note that, depending on the I/O speed and communication speed of the storage where the learning target data is stored, the amount of fetched data for the first (first) job among the jobs stored in FJL30 may not be the largest. . Considering such a case, in S68, the
図9は、第2ジョブセレクタ22の処理を示すフローチャートである。GPU使用量監視部32は、GPUに空きがあると第2ジョブセレクタ22を起動し、図9の処理が行われる。第2ジョブセレクタ22は、RQ23が空でない場合(S71:false)、RQ23から1つのジョブを取り出しJに格納する(S72)。RQ23が空の場合(S71:true)で、DQ24が空でない場合(S75:false)、第2ジョブセレクタ22は、DQ24から1つのジョブを取り出しJに格納する(S76)。DQ24が空の場合(S75:true)で、FJL30が空で(S77:true)、OFDQ25が空でない場合(S78:false)、第2ジョブセレクタ22は、OFDQ25から1つのジョブを取り出しJに格納する(S79)。
FIG. 9 is a flowchart showing the processing of the
S72、S76およびS79の後、第2ジョブセレクタ22は、マスタ2にJのデプロイを指示し(S73)、第2キューセレクタ21を起動する(S74)。OFDQ25が空の場合(S78:true)、第2ジョブセレクタ22は、第2キューセレクタ21を起動する(S74)。FJL30が空でない場合(S77:false)、第2ジョブセレクタ22は、第2キューセレクタ21を起動し、第2キューセレクタ21の動作完了を待機して(S80)、S71へ進む。このように、第2ジョブセレクタ22は、RQ23、DQ24およびOFDQ25の全てが空の場合、第2キューセレクタ21を起動し、FJL30の先頭のジョブを、RQ23、DQ24およびOFDQ25のいずれかに格納させる。
After S72, S76, and S79, the
(実施例1)
図10は、実施例1のGPUクラスタの構成図である。本実施例は、学習対象データを低速なクラスタ共有ストレージ4(分散ストレージ)に事前に格納している。ジョブの実行が近くなると、キャッシュクラスタ7(キャッシュ管理部72)は、学習対象データをクラスタ共有ストレージ4からキャッシュクラスタ7にプリフェッチする。GPUに空きができると、マスタ2は、キャッシュクラスタ7の領域をノード3にマウントする。キャッシュ領域のマウントは、RDMA-fs (RDMAデバイス上のデータをファイルシステム化する仕組み)、NFS over RDMA、GlusterFSなどを用いて実装する。RDMA用の転送パスは、TSN(Time Sensitive Networking)等で帯域保証する。本実施例では、Lossless DC fabricなどの高速・帯域確保型ネットワークを構築し、スパインスイッチ(Spine SW)などの各種スイッチ(SW)を用いてデータを転送する。(Example 1)
FIG. 10 is a configuration diagram of a GPU cluster according to the first embodiment. In this embodiment, the learning target data is stored in advance in the low-speed cluster shared storage 4 (distributed storage). When the execution of a job approaches, the cache cluster 7 (cache management unit 72) prefetches learning target data from the cluster shared
本実施例では、(1)スケジューラ1は、ジョブ待機中に当該ジョブのデータのプリフェッチを、キャッシュクラスタ7に指示する。これにより、キャッシュクラスタ7は、前記指示によりクラスタ共有ストレージ4からデータをプリフェッチする。(2)スケジューラ1は、ジョブのデプロイをマスタ2に指示し、マスタ2はジョブをGPUにアサインする。(3)マスタ2は、キャッシュクラスタ7のキャッシュ領域を、RDMA-fs等を用いてマウントする。(4)GPUは、ジョブを実行する。(5)スケジューラ1は、ジョブの実行後に、キャッシュクラスタ7のキャッシュデータを削除する。
In this embodiment, (1) the
(実施例2)
図11は、実施例2のGPUクラスタの構成図である。本実施例は、ユーザ拠点のユーザストレージ6にオンライン接続する。すなわち、本実施例では、低速なユーザストレージ6に格納された学習対象データにオンラインで接続する。(Example 2)
FIG. 11 is a configuration diagram of a GPU cluster according to the second embodiment. In this embodiment, online connection is made to the
本実施例では、GPUクラスタシステム内では、実施例1と同様にLossless DC fabricなどの高速・帯域確保型ネットワークを構築し、スパインスイッチ(Spine SW)などの各種スイッチ(SW)を用いてデータを転送する。GPUクラスタシステムとユーザ拠点との間は、Access/MetroネットワークをBorder Leafなどスイッチで接続してデータ転送パス(VPN、専用線等)を構築する。本実施例の動作は、以下のとおりである。 In this example, in the GPU cluster system, a high-speed, bandwidth-securing network such as a Lossless DC fabric is constructed as in Example 1, and data is transferred using various switches (SW) such as spine switches (Spine SW). Forward. Connect the Access/Metro network with a switch such as Border Leaf to build a data transfer path (VPN, dedicated line, etc.) between the GPU cluster system and the user location. The operation of this embodiment is as follows.
(1)キャッシュクラスタ7(キャッシュ管理部72)は、ユーザ拠点のユーザストレージ6のデータを転送し、キャッシュクラスタ7のメモリ(NV-DIMM)にプリフェッチする。なお、キャッシュメモリにデータの一部を置くだけなのでダウンロードに相当しない。
(1) The cache cluster 7 (cache management unit 72) transfers data in the
(2)キャッシュクラスタ7のメモリに一定量のキャッシュデータが溜まったら、GPUはジョブを実行する。
(2) When a certain amount of cache data is accumulated in the memory of the
(3)GPUがキャッシュデータを使い切ると、GPUは、ジョブを一時中断し、リソースを開放する。リソースの開放にはCRIU (Checkpoint/Restore In Userspace)のような技術を用いることで,ジョブのプログラムに一時中断のための機能を実装する必要がなくなる。CRIUは、プロセスを終了せずに、一時停止、保存、再開する技術である。 (3) When the GPU runs out of cache data, the GPU temporarily suspends the job and releases resources. By using technology such as CRIU (Checkpoint/Restore In Userspace) to release resources, there is no need to implement a temporary suspension function in the job program. CRIU is a technology that pauses, saves, and resumes processes without terminating them.
(4)キャッシュクラスタ7は、処理中のプロセスデータをキャッシュクラスタ7に書き込む。
(4) The
(5)キャッシュクラスタ7のメモリに一定量のキャッシュデータが溜まったら、GPUを確保する。
(5) Once a certain amount of cache data has accumulated in the memory of the
(6)プロセスデータを書き戻し、ジョブの処理を再開(リストア)する。 (6) Write back the process data and restart (restore) job processing.
(7)ジョブの処理が完了したら終了する。完了していない場合は、(3)に戻り以降の処理を繰り返す。 (7) Terminate when job processing is completed. If it is not completed, return to (3) and repeat the process.
(実施例3)
図12は、実施例3のGPUクラスタの構成図である。本実施例では、複数のデータセンタ40が分散して存在する。データセンタ40には、複数のマスタ2およびノード3を含むGPUクラスタと、キャッシュクラスタ7と、クラスタ共有ストレージ4とを備える。データセンタ40は、クラスタ共有ストレージ4を備えなくてもよい。(Example 3)
FIG. 12 is a configuration diagram of a GPU cluster according to the third embodiment. In this embodiment, a plurality of
スケジューラ1は、ジョブの配置先をユーザ拠点から近いGPUクラスタに配置する。ユーザ自らデータをクラスタ共有ストレージ4にアップロードする場合は、スケジューラ1は、ユーザがデータをアップロードしたクラスタ共有ストレージ4になるべく近いGPUクラスタを選択する。
The
(閉域接続方式)
以下に、実施例2のユーザ拠点のユーザストレージ6に格納された学習対象データをキャッシュクラスタ7がフェッチする場合に、ユーザ拠点とキャッシュクラスタ7との閉域接続方式について説明する。(Closed connection method)
Below, a closed connection system between the user base and the
図13は、方式1の閉域接続を示す模式図である。本方式では、ユーザストレージ6が閉域接続の機能の有し、キャッシュクラスタ7からの閉域接続を待ち受けている。学習対象データのプリフェッチの際に、キャッシュクラスタ7がユーザストレージ6に対し閉域接続を開始する。学習対象データの取得が完了すると、キャッシュクラスタ7は、閉域接続を解除する。これにより、ユーザストレージ6は、閉域接続の待受状態に戻る。ユーザストレージ6は、常時、閉域接続の待ち受ける状態である。ユーザ拠点には加入者側回線終端装置(以下「CPE」)が配置される。ユーザは、閉域接続のための設定をGPUクラスタシステムの事業者と事前に折衝し、決めておく必要がある。ユーザは、自身のユーザストレージ6にキャッシュクラスタ7との閉域接続のための設定をする必要がある。
FIG. 13 is a schematic diagram showing closed area connection of
図14は、方式2の閉域接続を示す模式図である。本方式では、ユーザ拠点のCPE8は、VPN接続部と、スケジューラ1からの制御に対応するためのAPI(制御部)とを備える。本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにCPE8のAPIへの接続情報を含める。スケジューラ1は、キャッシュクラスタ7にCPE8からの閉域接続を待ち受けるよう指示する。CPE8は、スケジューラ1からの指示を受けて、指示された接続先(キャッシュクラスタ7)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、CPE8に閉域接続の設定削除を指示する。
FIG. 14 is a schematic diagram showing closed area connection of
図15は、方式3の閉域接続を示す模式図である。本方式では、方式2と同様に、CPE8は、VPN接続部と、API(制御部)とを備える。本方式では、スケジューラ1は、CPE8には閉域接続を待受させ、キャッシュクラスタ7に閉域接続開始を指示する。本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにCPE8のAPIへの接続情報を含める。スケジューラ1は、CPE8にキャッシュクラスタ7からの閉域接続を待ち受けるよう指示する。キャッシュクラスタ7は、スケジューラ1からの指示を受けて、指示された接続先(CPE8)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、CPEに閉域接続の設定削除を指示する。
FIG. 15 is a schematic diagram showing closed area connection of
図16は、方式4の閉域接続を示す模式図である。本方式では、キャリア網内に、仮想化された加入者側回線終端装置(以下、「vCPE」)92を設置する。vCPE92は、VPN接続部と、スケジューラ1から制御に対応するAPI(制御部)とを有する。
FIG. 16 is a schematic diagram showing closed area connection of
本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにユーザストレージ6が接続されている回線を識別するための回線識別情報を含める。スケジューラ1は、キャッシュクラスタ7にvCPE92からの閉域接続を待ち受けるよう指示する。vCPE92は、スケジューラ1からの指示を受けて、指示された接続先(キャッシュクラスタ7)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92に閉域接続の解除を指示する。ユーザ拠点には、光回線終端装置(以下、「ONU」)91またはモデムなどが設置され、vCPE92と接続される。ONU91等は、vCPE92とのレイヤ2接続(Ethernet等)を提供する。
This method configures closed connections on demand. When a user registers a job in the
図17は、方式5の閉域接続を示す模式図である。本方式では、キャリア網内に方式4と同様にvCPE92を備える。ユーザ拠点には、ONU91等が設置される。ONU91等は、vCPE92と接続され、vCPE92とのレイヤ2接続を提供する。本方式では、スケジューラ1は、vCPE92には閉域接続を待受させ、キャッシュクラスタ7に閉域接続開始を指示する。
FIG. 17 is a schematic diagram showing closed area connection of method 5. In this method, a
本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにユーザストレージ6が接続されている回線を識別するための回線識別情報を含める。スケジューラ1は、vCPE92にキャッシュクラスタ7からの閉域接続を待ち受けるよう指示する。キャッシュクラスタ7は、スケジューラ1からの指示を受けて、指示された接続先(vCPE92)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92に閉域接続の解除を指示する。
This method configures closed connections on demand. When the user registers a job in the
図18は、方式6の閉域接続を示す模式図である。本方式では、キャリア網内に方式4と同様にvCPE92を備える。ユーザ拠点には、方式1と同様のCPE8が設置され、vCPE92と接続される。
FIG. 18 is a schematic diagram showing closed area connection of
本方式は、オンデマンドで閉域接続を構成する。スケジューラ1は、vCPE92にキャッシュクラスタ7とCPE8からの閉域接続要求に対する待受開始を指示する。スケジューラ1は、キャッシュクラスタ7に対し、vCPE92への閉域接続を指示する。スケジューラ1は、CPE8にvCPE92への閉域接続を指示する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92およびCPE8に閉域接続の解除を指示する。
This method configures closed connections on demand. The
vCPE92のインスタンスのパターンとしては、事前にデプロイしたものをプールしておき、ジョブの学習対象データのプリフェッチ開始時にユーザ拠点の最寄りのvCPE92をアサインしてもよい。また、ジョブの学習対象データのプリフェッチ開始時に、vCPEのインスタンスをデプロイしてもよい。 As a pattern of vCPE92 instances, those deployed in advance may be pooled, and the vCPE92 closest to the user's base may be assigned when prefetching of the learning target data of a job is started. Furthermore, an instance of vCPE may be deployed when prefetching of learning target data for a job is started.
図19は、方式7の閉域接続を示す模式図である。本方式では、キャリア網内にあるPPPoE等をISPに中継するゲートウェイ装置(以下「GW」)93を用いて、閉域接続を行う。本方式のGW93には、キャッシュクラスタ7との閉域接続を行う接続部と、スケジューラ1から制御に対応するAPI(制御部)とが追加される。通常、インターネットアクセスでは,PPPoEやDS-lite等のトンネリングプロトコルを使用してキャリア網内の中継装置を介してISPに接続される。ユーザ拠点に設置されるCPE8は、加入者側でこれらのプロトコルを終端する装置であり、殆どの場合は常時GW93に対して閉域接続を行っている。スケジューラ1は、GW93とキャッシュクラスタ7の間に閉域接続を確立し、GW93にユーザストレージ6とキャッシュクラスタ7との通信を中継させる。キャッシュクラスタ7以外の装置とCPE8との通信は、通常通りISPへのトンネルに転送し、インターネットアクセス94とする。
FIG. 19 is a schematic diagram showing closed area connection of
本方式は、オンデマンドで閉域接続を構成する。スケジューラ1は、閉域接続の設定時に、GW93に対し、キャッシュクラスタ7からの閉域接続要求に対する待受開始を指示する。指示対象のGW93は,回線識別情報等から特定する。スケジューラ1は、キャッシュクラスタ7に対しGW93への閉域接続を要求する。閉域接続が確立すると、ユーザストレージ6とキャッシュクラスタ7の通信をGW93が中継し通信経路が確立する。
This method configures closed connections on demand. When setting up a closed connection, the
(GPUクラスタシステムの動作)
以下にGPUクラスタシステムの動作について説明する。(GPU cluster system operation)
The operation of the GPU cluster system will be explained below.
図20は、図1に示す基本的なGPUクラスタシステムの動作を示すシーケンス図である。ユーザは、学習対象データをクラスタ共有ストレージ4にアップロードし(S101)、ジョブをスケジューラ1に登録する(S102)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所、ユーザIDなどの認証情報などが含まれる。スケジューラ1は、認証情報を用いてユーザを認証するが、ここでは認証処理については省略する。
FIG. 20 is a sequence diagram showing the operation of the basic GPU cluster system shown in FIG. 1. The user uploads the learning target data to the cluster shared storage 4 (S101) and registers the job in the scheduler 1 (S102). The job registration data includes a job definition, a storage location of learning target data, authentication information such as a user ID, and the like. The
スケジューラ1は、ジョブが登録されると、GPUの空き状況など(GPUの稼働状況)をマスタ2に確認し(S103)、マスタ2からGPUの空き状況などを取得する(S104)。スケジューラ1は、GPUの空き情報等を用いて、ジョブをスケジューリングし(S105)、マスタ2にジョブのデプロイを指示する(S106)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所、認証情報などが含まれる。マスタ2は、ノード3にジョブのデプロイを指示する(S107)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所などが含まれる。
When the job is registered, the
ノード3は、ジョブの実行を開始し、ジョブの仮想環境を作成する(S108)。具体的には、ノード3は、Network namespace等の名前空間やコンテナなどの仮想環境を生成する。また、ノード3は、学習対象データにジョブがアクセスできるように設定する。これにより、学習対象データの格納先(クラスタ共有ストレージ4)がジョブからアクセス可能になる。
ジョブは、学習処理を開始し(S109)、学習対象データにアクセスしながら学習処理を実行する。ジョブは、学習結果をクラスタ共有ストレージ4に書き出す(S110)。学習結果は、逐次書き出す場合と、最後にまとめて書き出す場合とがある。ジョブは、学習処理が終了すると(S111)、実行完了をノード3に報告する(S112)。ノード3は、ジョブの仮想環境等を削除する(S113)。また、ノード3は、ジョブのための仮想ネットワークなども併せて削除する。ジョブの実行が完了するとノード3は、ジョブの実行完了をマスタ2に報告する(S114)。マスタ2は、必要に応じてユーザにジョブ完了を報告する。あるいは、ユーザがスケジューラ1またはマスタ2にジョブの完了を問い合わせてもよい。
The job starts the learning process (S109) and executes the learning process while accessing the learning target data. The job writes the learning results to the cluster shared storage 4 (S110). The learning results may be written out one after another or all at once at the end. When the learning process ends (S111), the job reports execution completion to the node 3 (S112). The
図21A、図21Bおよび図21Cは、本実施形態のGPUクラスタの動作を示すシーケンス図である。これらは、クラスタ共有ストレージ4にアップロードされた学習対象データを、キャッシュクラスタ7がフェッチして利用する場合のシーケンス図である。
FIGS. 21A, 21B, and 21C are sequence diagrams showing the operation of the GPU cluster of this embodiment. These are sequence diagrams when the
ジョブ登録前に学習対象データをアップロードする場合、ユーザは、ユーザストレージ6に格納している学習対象データをクラスタ共有ストレージ4にアップロードし(S131)、ジョブをスケジューラ1に登録する(S132)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所、ユーザIDなどの認証情報などが含まれる。学習対象データの格納場所は、事前アップロードの場合はクラスタ共有ストレージ4であり、事前アップロードしない場合はユーザストレージ6である。また、事前アップロードしない場合は、ジョブの登録データには、ユーザストレージ6への閉域接続情報などが含まれる。スケジューラ1におけるユーザの認証処理については、省略する。
When uploading the learning target data before job registration, the user uploads the learning target data stored in the
学習対象データを事前にアップロードしない場合は、S131を行うことなく、後述する「閉域接続の確立処理」Aと、「学習対象データのクラスタ格納処理」Bと、「閉域接続の解除処理」Cとが行われる。「閉域接続の確立処理」Aは、スケジューラ1の制御によりユーザ拠点とキャッシュクラスタ7との間に閉域接続または閉域経路を接続する。「学習対象データのクラスタ格納処理」Bは、ユーザ拠点とキャッシュクラスタ7との間に確立された閉域接続または閉域経路を介して、ユーザストレージ6上の学習対象データをキャッシュクラスタ7上に格納する。「閉域接続の解除処理」Cは、スケジューラ1の制御により、ユーザ拠点とキャッシュクラスタ7との間に確立された閉域接続または閉域経路を解除する。
If the learning target data is not uploaded in advance, the "closed connection establishment process" A, the "cluster storage process of learning target data" B, and the "closed connection cancellation process" C described below are performed without performing S131. will be held. "Closed connection establishment process" A connects a closed connection or a closed path between the user base and the
スケジューラ1は、キャッシュクラスタ7に学習対象データのプリフェッチを指示する(S133)。すなわち、スケジューラ1は、キャッシュクラスタ7上の所定の格納場所に、学習対象データを格納することを指示する。キャッシュクラスタ7は、クラスタ共有ストレージ4上の学習対象データのフェッチを開始する(S134)。
The
全ての学習対象データをフェッチする場合、キャッシュクラスタ7は、学習対象データのプリフェッチの完了をスケジューラ1に報告する(S135)。スケジューラ1はGPUの空き状況などをマスタ2に確認し(S136)マスタ2からGPUの空き状況などを取得する(S137)。
When fetching all the learning target data, the
全ての学習対象データをフェッチしない場合、すなわち、全ての学習対象データのキャッシュデータを待たずに、投機的にジョブの実行を開始する場合、スケジューラ1は、プリフェッチの完了を待たずに続く処理を実行する。スケジューラ1はGPUの空き状況などをマスタ2に確認し(S138)、マスタ2からGPUの空き状況などを取得する(S139)。また、スケジューラ1はフェッチ済のデータ量をキャッシュクラスタ7に確認し(S140)、キャッシュクラスタ7からフェッチ済みのデータ量を取得する(S141)。スケジューラ1は、S138およびS139のGPUの空き状態の確認処理と、S140およびS141の学習対象データのフェッチ進捗確認処理とを並行して行ってもよい。
When not fetching all learning target data, that is, when starting a job speculatively without waiting for the cache data of all learning target data,
スケジューラ1は、GPUの空き情報等を用いて、ジョブをスケジューリングし(S142)、マスタ2にジョブのデプロイを指示する(S143)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所、ユーザID等の認証情報などが含まれる。マスタ2は、ノード3にジョブのデプロイを指示する(S144)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所などが含まれる。
The
ノード3は、ジョブの実行を開始し、ジョブの仮想環境を作成する(S145)。具体的には、ノード3は、Network namespace等の名前空間やコンテナなどの仮想環境を生成する。また、ノード3は、学習対象データにジョブがアクセスできるように設定する。これにより、学習対象データの格納先(キャッシュクラスタ7)がジョブからアクセス可能になる。
ジョブは、学習処理を開始し(S146)、後述する「学習処理におけるキャッシュクラスタへのデータアクセス」Dを行い、学習対象データにアクセスしながら学習処理を実行する。ジョブは、学習結果をキャッシュクラスタ7に書き出す(S147)。学習結果をキャッシュクラスタ7に書き出すことで、キャッシュ管理部72は、透過的にクラスタ共有ストレージ4に学習結果を書き出す。また、ジョブは、学習結果を直接クラスタ共有ストレージ4に書き出してもよい。その場合、S145でジョブの仮想環境を作成する際に。ジョブがクラスタ共有ストレージ4にアクセスできるように設定する。
The job starts learning processing (S146), performs "data access to cache cluster in learning processing" D, which will be described later, and executes learning processing while accessing the learning target data. The job writes the learning results to the cache cluster 7 (S147). By writing the learning results to the
ジョブは、学習処理が終了すると(S148)、実行完了をノード3に報告する(S149)。ノード3は、ジョブの仮想環境等を削除する(S150)。また、ノード3は、ジョブのための仮想ネットワークなども併せて削除する。ジョブの実行が完了すると、ノード3は、ジョブの実行完了をマスタ2に報告する(S151)。マスタ2は、必要に応じてユーザにジョブ完了を報告する。あるいは、ユーザがスケジューラ1またはマスタ2にジョブの完了を問い合わせてもよい。
When the learning process ends (S148), the job reports execution completion to node 3 (S149). The
スケジューラ1は、GPUの空き状況およびジョブの完了状況をマスタ2に確認し(S152)、マスタ2からこれらの情報を取得する(S153)。スケジューラ1は、学習対象データのキャッシュデータ等の削除をキャッシュクラスタ7に指示する(S154)。キャッシュクラスタ7は、キャッシュデータ等を削除する(S155)。キャッシュクラスタ7は、学習結果が一時的に格納された場合、学習結果も削除する。キャッシュクラスタ7は、削除処理に合わせて、ジョブからの書き出しデータのクラスタ共有ストレージ4への書き戻しを実行する。キャッシュクラスタ7は、削除完了をスケジューラ1に報告する(S156)。
The
図22A、図22Bおよび図22Cは、本実施形態のGPUクラスタの動作を示すシーケンス図である。ここでは、ユーザストレージ6上の学習対象データを、キャッシュクラスタ7が直接フェッチして利用する場合のシーケンスを説明する。
22A, 22B, and 22C are sequence diagrams showing the operation of the GPU cluster of this embodiment. Here, a sequence will be described in which the
ユーザは、ジョブをスケジューラ1に登録する(S161)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所(ユーザストレージ6)、ユーザIDなどの認証情報などが含まれる。ジョブの登録データには、ユーザストレージ6への閉域接続情報などが含まれる。閉域接続情報については後述する。スケジューラ1の認証処理については省略する。次に、後述する「閉域接続の確立処理」Aが行われる。「閉域接続の確立処理」Aは、スケジューラ1の制御によりユーザ拠点とキャッシュクラスタ7との間に閉域接続または閉域経路を接続する。確立した閉域接続または閉域経路を介して、キャッシュクラスタ7からユーザ拠点のユーザストレージ6上の学習データにアクセス可能となる。
The user registers the job in the scheduler 1 (S161). The job registration data includes a job definition, a storage location for learning target data (user storage 6), authentication information such as a user ID, and the like. The job registration data includes closed connection information to the
スケジューラ1は、キャッシュクラスタ7に学習対象データのプリフェッチを指示する(S162)。すなわち、スケジューラ1は、キャッシュクラスタ7上の所定の格納場所に、学習対象データを格納することを指示する。キャッシュクラスタ7は、閉域接続または閉域経路を介して、ユーザストレージ6上の学習対象データのフェッチを開始する(S163)。S164からS171の処理は、図21BのS135からS141の処理と同じであるため、ここでは説明を省略する。
The
そして、図22BのS172からS181の処理が行われるが、この処理は、図21CのS142からS151の処理と同じであるため、ここでは説明を省略する。そして、図22Bで、スケジューラ1は、GPUの空き状況およびジョブの完了状況をマスタ2に確認し(S182)、マスタ2からこれらの情報を取得する(S183)。そして、後述する「閉域接続の解除処理」Cが行われる。「閉域接続の解除処理」は、スケジューラ1の制御により、ユーザ拠点とキャッシュクラスタ7との間に確立された閉域接続または閉域経路を解除する。スケジューラ1は、学習対象データのキャッシュデータ等の削除をキャッシュクラスタ7に指示する(S184)。キャッシュクラスタ7は、キャッシュデータ等を削除する(S185)。キャッシュクラスタ7は、学習結果が一時的に格納された場合、学習結果も削除する。キャッシュクラスタ7は、削除処理に合わせて、ジョブからの書き出しデータのクラスタ共有ストレージ4への書き戻しを実行する。キャッシュクラスタ7は、削除完了をスケジューラ1に報告する(S186)。
Then, the processing from S172 to S181 in FIG. 22B is performed, but since this processing is the same as the processing from S142 to S151 in FIG. 21C, the explanation will be omitted here. Then, in FIG. 22B, the
図23は、「閉域接続の確立処理」Aの動作を示すシーケンス図である。ここでは、図14に示す方式2の閉域接続の確立処理を説明する。ユーザ拠点には、CPE8が配置されており、CPE8とキャッシュクラスタ7との間で閉域接続を確立する。そのため、CPE8がAPIを公開していない場合は、スケジューラ1がAPIでCPE8を制御している部分については、ユーザが当該部分を設定する。CPE8は、キャリア網内にデプロイされているvCPEに置き換わる場合もある。
FIG. 23 is a sequence diagram showing the operation of "closed connection establishment process" A. Here, the closed connection establishment process of
本処理の前提として、スケジューラ1にジョブが登録されている。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「CPEとの閉域接続の情報」と、「CPEのAPIへの接続情報」とが含まれる。ただし、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、閉域接続情報には「CPEのAPIへの接続情報」は含まれない。以下に、本処理を説明する。
As a premise of this process, a job is registered in the
スケジューラ1は、キャッシュクラスタ7に閉域接続の待ち受けを指示する(S191)。この指示には、CPE8との閉域接続の情報が含まれる。閉域接続確立後、キャッシュクラスタ7が自律的に学習対象データの取得制御を行う場合は、「学習対象データの格納場所」についても閉域接続の待ち受け指示で渡される。キャッシュクラスタ7は、閉域接続を待ち受ける設定を行う(S192)。これにより、閉域接続待ち受け状態が確立する。キャッシュクラスタ7は、閉域接続待ち受け処理の完了をスケジューラ1に報告する(S193)。キャッシュクラスタ7への閉域接続の情報は、S191で生成される。キャッシュクラスタ7への閉域接続の情報は、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、ジョブの登録より前段階でのユーザと事業者間での契約手続き等の事前折衝で決定され、ユーザに通知される。
The
スケジューラ1は、閉域接続の確立をCPE8に指示する(S194)。CPE8は、閉域接続を設定し(S195)、キャッシュクラスタ7との閉域接続を開始する(S196)。CPE8がAPIを公開していない場合においては、ユーザからのジョブ登録と、ユーザによるCPE8への閉域接続確立のための設定が非同期で実施される。そのため、閉域接続の開始処理は閉域接続が確立するまでCPE8により繰り返し施行される。キャッシュクラスタ7は、CPE8に閉域接続を受諾する(S197)。これにより、閉域接続が確立される。CPE8は閉域接続の完了をスケジューラ1に報告する(S198)。以降、確立された閉域接続を介することで、キャッシュクラスタ7もしくはクラスタ共有ストレージ4からユーザ拠点のユーザストレージ6上の学習対象データにアクセス可能となる。
The
図24は、「閉域接続の解除処理」Bの動作を示すシーケンス図である。ここでは、図14に示す方式2の閉域接続の解除処理を説明する。ユーザ拠点のCPE8とキャッシュクラスタ7との間で閉域接続が確立されておりこれを解除する。そのため、CPE8は、閉域接続制御のためのAPIを公開していることする。APIを公開していない場合は、スケジューラ1がAPIでCPE8を制御している部分については、ユーザが当該部分を設定する。CPE8は、キャリア網内にデプロイされているvCPEに置き換わる場合もある。
FIG. 24 is a sequence diagram showing the operation of "closed connection release processing" B. Here, closed connection release processing according to
本処理の前提として、スケジューラ1にジョブが登録されている。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「CPEとの閉域接続の情報」と、「CPEのAPIへの接続情報」とが含まれる。ただし、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、閉域接続情報には「CPEのAPIへの接続情報」は含まれない。スケジューラ1の制御によりCPE8とキャッシュクラスタ7の間で閉域接続が確立される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのフェッチを開始する。スケジューラ1の制御によりジョブがデプロイされ、学習を開始する。デプロイされるタイミングとしては、キャッシュクラスタ7で学習対象データを全てフェッチしてからの場合と、フェッチを継続している場合とが存在する。ジョブが完了し、ジョブの実行完了をスケジューラ1が検知する。以下に、本処理を説明する。
As a premise of this process, a job is registered in the
キャッシュクラスタ7への閉域接続の情報は、図23の「閉域接続の接続処理」のS193で前述したとおりである。スケジューラ1は、CPE8に閉域接続の解除を指示する(S201)。CPE8は、キャッシュクラスタ7に対して閉域接続の解除を開始する(S202)。キャッシュクラスタ7は、CPE8に閉域接続の解除を受諾する(S203)。これにより、CPE8と7との間の閉域接続が解除される。CPE8は、閉域接続を削除し(S204)、閉域接続の解除完了をスケジューラ1に報告する(S205)。
The information on the closed connection to the
スケジューラ1は、キャッシュクラスタ7に閉域接続の待ち受け解除を指示する(S206)。この指示には、CPE8との閉域接続の情報が含まれる。キャッシュクラスタ7は、閉域接続の待ち受ける設定を削除し(S207)、閉域接続の待ち受け解除をスケジューラ1に報告する(S208)。
The
CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、S206-S208(キャッシュクラスタの閉域接続の待ち受け解除処理)が、S201-S205(CPEの閉域接続の解除処理)より前に実行される可能性がある。その場合、「CPEの閉域接続の解除処理」では、閉域接続は既に解除されているため、S202(閉域接続の解除を開始)を実行せず、S204(閉域接続を削除)を実行する。一方、「キャッシュクラスタの閉域接続の待ち受け解除処理」では、S207に伴い、閉域接続の解除を開始し、CPE8から閉域接続の解除を受諾する。
If the CPE8 does not publish the API and the user configures the CPE8, S206-S208 (cache cluster closed connection canceling process) will be performed before S201-S205 (CPE closed connection canceling process). There is a possibility that it will be executed. In that case, in the "CPE closed area connection release process", since the closed area connection has already been released, S202 (starting the release of the closed area connection) is not executed, but S204 (deleting the closed area connection) is executed. On the other hand, in the "cache cluster closed connection standby cancellation process", in step S207, cancellation of the closed connection is started, and the cancellation of the closed connection is accepted from the
図25は、「閉域接続の確立処理」Aの動作を示すシーケンス図である。ここでは、図19に示す方式7の閉域接続の確立処理を説明する。ユーザ拠点には、CPE8が配置されており、キャリア網のGW93がCPE8への接続インタフェースを保持している。CPE8とGW93との間は、事前にPPPoE等により閉域接続が確立済みであり、さらにGW93とキャッシュクラスタ7との間で閉域接続を確立することで、GW93は、2つの閉域接続を中継する閉域経路を生成する。この閉域経路を介することで、キャッシュクラスタ7およびクラスタ共有ストレージ4からCPE8配下のユーザストレージ6にアクセス可能な状態になる。この制御のためにGW93は閉域接続制御のためのAPIを保持している。
FIG. 25 is a sequence diagram showing the operation of "closed connection establishment process" A. Here, the closed connection establishment process of
本処理の前提として、CPE8とGW93との間で、PPPoE等により閉域接続が確立済みで、この閉域接続を介してCPE8はインターネットに接続可能である。スケジューラ1にジョブが登録される。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「回線識別情報」(CPE8が接続すると、GW93の識別等に用いられる)が含まれる。以下に、本処理を説明する。
As a premise of this process, a closed connection has been established between the
スケジューラ1は、CPE8が接続するGW93を特定する(S211)。スケジューラ1は、GW93に閉域接続の待ち受け設定と、閉域接続の中継設定とを指示する(S212)。この中継設定は、キャッシュクラスタ7との閉域接続確立後、CPE8とGW93間の閉域接続と、GW93とキャッシュクラスタ7間の閉域接続をルーティング、スイッチ等により中継して論理的なCPE8とキャッシュクラスタ7間の閉域経路を生成するための設定である。この閉域経路を利用することで、キャッシュクラスタ7およびクラスタ共有ストレージ4とCPE8配下のユーザストレージ6とは互いに接続可能となる。GW93では、CPE8配下からのトラフィックについて、キャッシュクラスタ7もしくはクラスタ共有ストレージ4宛てのみのデータを閉域経路へ転送する。CPE8配下からインターネット接続と共用可能である。
The
GW93は、閉域接続の待ち受け設定と、閉域接続の中継設定とを実施する(S213)。これにより、閉域接続の待ち受けと、閉域接続中継の待機状態が確立する。GW93は、閉域接続の待ち受け設定と、閉域接続の中継設定の完了をスケジューラ1に報告する(S214)。この報告には、「GWへの閉域接続の情報」が含まれる。スケジューラ1は、閉域接続の確立をキャッシュクラスタ7に指示する(S215)。この指示には、「GWへの閉域接続の情報」が含まれる。閉域接続確立後、キャッシュクラスタ7が自律的に学習対象データの取得制御を行う場合は、「学習対象データの格納場所」についても閉域接続の待ち受け指示で渡される。キャッシュクラスタ7は、閉域接続を設定し(S216)、閉域接続の開始をGW93に通知する(S217)。GW93は、キャッシュクラスタ7に閉域接続を受諾する(S218)。これにより、閉域接続待ち受け状態が確立される。GW93による閉域接続の中継により、CPE8とキャッシュクラスタ7間の閉域経路が確立される。キャッシュクラスタ7は、閉域接続の確立完了をスケジューラ1に報告する(S219)。以降、確立された閉域経路を介することで。キャッシュクラスタ7もしくはクラスタ共有ストレージ4からユーザ拠点のユーザストレージ6上の学習対象データにアクセス可能となる。
The
図26は、「閉域接続の解除処理」Cの動作を示すシーケンス図である。ここでは、図19に示す方式7の閉域接続の解除処理を説明する。GW93とキャッシュクラスタ7間で、閉域接続が確立されており、さらにGW93により、CPE8とキャッシュクラスタ7間に閉域経路が確立されている。ここで、GW93とキャッシュクラスタ7間の閉域接続を解除することで、CPE8とキャッシュクラスタ7間の閉域経路も併せて解除する。この制御のためにGW93は閉域接続制御のためのAPIを保持している。
FIG. 26 is a sequence diagram showing the operation of "closed connection release processing" C. Here, the closed connection release process of
本処理の前提として、CPE8とGW93との間で、PPPoE等により閉域接続が確立済みで、この閉域接続を介してCPE8はインターネットに接続可能である。スケジューラ1にジョブが登録される。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には「回線識別情報」が含まれる。スケジューラ1の制御により、GW93とクラスタ共有ストレージ4間に閉域接続が確立される。合わせて、GW93により、CPE8とキャッシュクラスタ7間に閉域経路が確立される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのフェッチを開始する。スケジューラ1の制御により、ジョブがデプロイされ学習を開始する。デプロイされるタイミングとしては、キャッシュクラスタ7で学習対象データを全てフェッチしてからの場合と、フェッチを継続している場合とが存在する。以下に、本処理を説明する。
As a premise of this process, a closed connection has been established between the
スケジューラ1は、CPE8に閉域接続の解除を指示する(S231)。この指示には、「GW93への閉域接続の情報」が含まれる。キャッシュクラスタ7は、GW93との閉域接続の解除を開始する(S232)。GW93は、閉域接続の解除をキャッシュクラスタ7に受諾する(S233)。これにより、閉域接続が解除され、CPE8とキャッシュクラスタ7間の閉域経路が解除される。キャッシュクラスタ7は、閉域接続を削除し(S234)、閉域接続の解除完了をスケジューラ1に報告する(S235)。スケジューラ1は、閉域接続待ち受け設定の削除と、閉域接続の中継設定の削除をGW93に指示する(S236)。GW93は、閉域接続待ち受け設定を削除し、閉域接続の中継設定を削除する(S237)。GW93は、S237の削除完了をスケジューラ1に報告する(S238)。
The
図27および図28は、「学習対象データのクラスタ格納処理」Bを示すシーケンス図である。本処理では、ユーザストレージ6上の学習対象データをクラスタ共有ストレージ4上に格納する。
FIGS. 27 and 28 are sequence diagrams showing "cluster storage processing of learning target data" B. In this process, the learning target data on the
図27では、キャッシュクラスタ7がユーザストレージ6の学習対象データのブロックを読み出し、当該ブロックをクラスタ共有ストレージ4上に書き込む(複製する)ことを繰り返す。ブロックは、学習対象データの一部であって、例えば1以上のファイルの集合、または、1ファイルのうちの一定サイズの1部分などを示す。キャッシュクラスタ7とCPE8との間には、閉域接続または閉域経路が確立されており、いずれかを介することでキャッシュクラスタ7はユーザストレージ6の学習対象データにアクセスする。また、キャッシュクラスタ7は、閉域接続または閉域経路の確立を検知すると、自律的に格納処理を開始する。CPE8は、キャリア網内に配置されているvCPEに置き換わる場合もある。
In FIG. 27, the
本処理の前提として、スケジューラ1にジョブが登録される。スケジューラ1の制御により、CPE8とキャッシュクラスタ7との間に閉域接続または閉域経路が確立される。キャッシュクラスタ7は、自律的に格納処理を開始するために、閉域接続または閉域経路の確立処理の中で「学習対象データの格納場所」がスケジューラ1からキャッシュクラスタ7に渡されている。以下に、本処理を説明する。
As a premise of this process, a job is registered in the
キャッシュクラスタ7は、閉域接続の確立を契機として、閉域接続または閉域経路を介してユーザストレージ6から学習対象データをブロック単位で読み出し(S251)、読み出したブロック単位の学習対象データをクラスタ共有ストレージ4に書き込む(S252)。キャッシュクラスタ7は、学習対象データを全てクラスタ共有ストレージ4に格納するまで、S251およびS252を繰り返す。キャッシュクラスタ7は、学習対象データを全て格納した後、学習対象データの取得完了を、スケジューラ1に通知する(S253)。この通知には、クラスタ共有ストレージ4上の学習対象データの格納場所が含まれる。
Upon establishment of the closed connection, the
図28では、キャッシュクラスタ7がクラスタ共有ストレージ4に対し、ユーザストレージ6上の学習対象データの取得を指示する。前提条件などについては、図27と同じであるため、ここでは説明を省略する。以下に、本処理を説明する。
In FIG. 28, the
キャッシュクラスタ7は、閉域接続の確立を契機として、ユーザストレージ6に学習対象データの取得を指示する(S271)。この指示には、「学習対象データの格納場所」が含まれる。クラスタ共有ストレージ4は、閉域接続または閉域経路を介してユーザストレージ6から学習対象データを取得する(S272)。これにより、閉域接続または閉域経路を介してユーザストレージ6の学習対象データがクラスタ共有ストレージ4に格納される。クラスタ共有ストレージ4は、学習対象データの取得完了を、スケジューラ1に報告する(S273)。この報告には、クラスタ共有ストレージ4上の学習対象データの格納場所が含まれる。
Taking the establishment of the closed connection as a trigger, the
図29は、「学習処理におけるキャッシュクラスタへのデータアクセス処理」Dを示すシーケンス図である。本処理では、キャッシュクラスタ7への学習対象データのキャッシュ(フェッチ)が完全に完了する前に投機的にジョブがデプロイされ、学習を開始している場合である。キャッシュクラスタ7がキャッシュ対象とする学習対象データは、ユーザストレージ6またはキャッシュクラスタ7に格納されている。
FIG. 29 is a sequence diagram showing "data access processing to cache clusters in learning processing" D. In this process, a job is speculatively deployed and learning is started before caching (fetching) of learning target data to the
本処理の前提として、スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S291)。ジョブは、学習対象データにアクセスしながら学習処理を行う。以下に、本処理を説明する。
As a premise of this process, a job is registered in the
ジョブは、学習対象データのブロック単位での読み込みをキャッシュクラスタ7に要求する(S292)。キャッシュクラスタ7は、キャッシュミスが発生した場合(S293)、学習対象データへの透過的接続(S294、S295)と、学習対象データのプリフェッチ(S296)とを並列処理で行う。キャッシュミスは、キャッシュクラスタ7がキャッシュ対象としているデータのうち、要求元(キャッシュクラスタ7を利用するジョブなど)が、未キャッシュのデータを読み書きしようとした状態を指す。データが存在しないため、要求元に対してデータを即時応答することができない。キャッシュクラスタ7は、要求元を待たせたまま、キャッシュ対象データをオリジンに要求し、キャッシュデータを作成してから要求元に応答するなどの処理が発生する。
The job requests the
学習対象データへの透過的接続では、キャッシュクラスタ7は、キャッシュミスしたブロックの学習対象データをオリジンから取得し(S294)、取得したブロックの学習対象データをジョブに返却する(S295)。キャッシュクラスタ7は、キャッシュミス時に学習対象データの元データにアクセスしながら、ジョブにデータを返却する。これにより、ジョブにはキャッシュミスの発生を隠ぺいしつつ、透過的に学習対象データのオリジンにアクセスさせる。なお、キャッシュクラスタ7において、ここで返却している学習対象データのブロックは、今後利用される見込みがないため、キャッシュしないことでデータ入力処理を高速化してもよい。
In the transparent connection to the learning target data, the
学習対象データのプリフェッチでは、数ブロック先の学習対象データを先読みしてキャッシュする(S296)。キャッシュクラスタ7は、キャッシュミス発生後、学習対象データのオリジンにアクセスして応答をジョブに返却するとともに、今後、ジョブが読み込む学習対象データのブロックについて、数ブロック先のキャッシュを並行して開始する。これにより、キャッシュミスを一時的なものとして、その後のキャッシュミスの発生を低減し、データ入出力処理を高速化する。
In the prefetching of learning target data, learning target data several blocks ahead is prefetched and cached (S296). After a cache miss occurs, the
図30Aおよび図30Bは、「ジョブのチェックポイント処理」を示すシーケンス図である。チェックポイント処理は、動作中のジョブに含まれる仮想空間やプロセスをフリーズし、状態をいくつかのファイル(ダンプ)に保存する処理である。ジョブのチェックポイント処理は、例えば、CRIU (https://www.criu.org/Main_Page、https://github.com/checkpoint-restore/criu) などを使用して実現される。 30A and 30B are sequence diagrams showing "job checkpoint processing". Checkpoint processing is a process that freezes the virtual space and processes included in a running job and saves the state to several files (dump). Job checkpoint processing is achieved using, for example, CRIU (https://www.criu.org/Main_Page, https://github.com/checkpoint-restore/criu).
本処理では、ジョブがキャッシュクラスタ7から学習対象データを読み込む際のキャッシュミスを許容する。具体的には、キャッシュミスが発生した場合に、その発生を検知し、ジョブをチェックポイントする。本処理では、キャッシュクラスタ7への学習対象データのフェッチが完全に完了する前に投機的にジョブがデプロイされ、学習を開始している場合である。キャッシュクラスタ7がキャッシュ対象とする学習対象データは、ユーザストレージ6またはキャッシュクラスタ7に格納されている。
In this process, a cache miss when a job reads learning target data from the
本処理の前提として、ノード3は、キャッシュクラスタ7上のボリュームをジョブのダンプの格納場所としてマウントしている。ジョブのダンプの格納場所は、クラスタ共有ストレージ4上でもよい。スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S311)。ジョブは、学習対象データにアクセスしながら学習処理を行う。以下に、本処理を説明する。
As a premise of this process, the
学習対象データの読み込みでキャッシュミスが連続して発生する。この場合、以下の3つの処理のいずれかの処理が行われる。 Cache misses occur continuously when reading the learning target data. In this case, one of the following three processes is performed.
「キャッシュクラスタが検知する場合」では、キャッシュクラスタ7が、所定の閾値以上の連続したキャッシュミスを検出し(S312)、スケジューラ1にキャッシュミスの発生を通知する(S313)。閾値は、クラスタ管理者が任意に決定する。閾値は、ブロックサイズや通信速度などから適切な値を決定することができる。
In "when the cache cluster detects", the
「ジョブがキャッシュミスを検知する場合」では、ジョブが、ストレージIO帯域幅の減少等からキャッシュミスを検知し(S314)、スケジューラ1にキャッシュミスの発生を通知する(S315)。
In "When the job detects a cache miss", the job detects a cache miss from a decrease in storage IO bandwidth, etc. (S314), and notifies the
「スケジューラ1がキャッシュミスを検知する場合」では、ノード3が、ジョブのストレージIO帯域幅やGPU使用率等をマスタ2に報告する(S316)。スケジューラ1は、マスタ2にジョブの状態を問い合わせる(S317)。マスタ2は、ノード3から報告されているジョブの状態を応答する(S318)。スケジューラ1は、ジョブの状態からジョブのストレージIO帯域幅の減少や、GPUがほぼ使用されていないことなどを確認して、キャッシュミスの発生を検知する。
In "when the
スケジューラ1は、キャッシュミスの発生を検知すると、ジョブのチェックポイントをマスタ2に指示し(S319)、マスタは、ジョブのチェックポイントをノード3に指示する(S320)。ノード3は、ジョブをチェックポイントする(S321)。すなわち、ノード3は、ジョブのダンプをキャッシュクラスタ7上に格納する。ノード3は、事前にキャッシュクラスタ7をマウントしている。ジョブのチェックポイントにより、ジョブは一時停止状態(サスペンド状態)となる。一方、キャッシュクラスタ7による学習対象データの未キャッシュ部分のプリフェッチは継続される。
When the
ノード3は、ジョブのチェックポイント完了をマスタ2に報告し(S322)、マスタ2は、ジョブのチェックポイント完了をスケジューラ1に報告する(S323)。この報告には、ジョブのダンプの格納場所が含まれる。そして、後述する「ジョブのリストア処理」Eが行われる。
The
図31は、別の「ジョブのチェックポイント処理」を示すシーケンス図である。本処理では、ジョブがキャッシュクラスタ7から学習対象データを読み込む際のキャッシュミスを防止する。具体的には、キャッシュミスの発生を事前に検知し、ジョブをチェックポイントする。なお、本処理の前提は、図30Aと同様であるためここでは、説明を省略する。以下に、本処理を説明する。
FIG. 31 is a sequence diagram showing another "job checkpoint process". This process prevents cache misses when a job reads learning target data from the
ジョブが学習を開始すると(S331)、キャッシュクラスタ7は、キャッシュの利用状況の監視を開始する。キャッシュ済みの学習対象データ量と、ジョブが読み出したデータ量との変遷からキャッシュの発生を事前に検知する(S332)。キャッシュクラスタ7は、スケジューラ1にキャッシュミス発生の事前警告を通知する(S333)。スケジューラ1は、ジョブのチェックポイントをマスタ2に指示し(S334)、マスタは、ジョブのチェックポイントをノード3に指示する(S335)。ノード3は、ジョブをチェックポイントする(S336)。すなわち、ノード3は、事前にマウントしたキャッシュクラスタ7上にジョブのダンプを格納する。ジョブのチェックポイントにより、ジョブは一時停止状態となる。一方、キャッシュクラスタ7による学習対象データの未キャッシュ部分のプリフェッチは継続される。
When the job starts learning (S331), the
ノード3は、ジョブのチェックポイント完了をマスタ2に報告し(S337)、マスタ2は、ジョブのチェックポイント完了をスケジューラ1に報告する(S338)。この報告には、ジョブのダンプの格納場所が含まれる。そして、後述する「ジョブのリストア処理」Eが行われる。
The
図32A、図32Bおよび図32Cは、「ジョブのリストア」Eを示すシーケンス図である。本処理は、ジョブがチェックポイントされた後、ジョブが実行を再開するまでの処理である。ジョブのリストアは、チェックポイントされたジョブのダンプから、ジョブを復元し動作を再開させる処理である。ジョブのリストアは、例えば、CRIU (https://www.criu.org/Main_Page、https://github.com/checkpoint-restore/criu) などを使用して実現される。 32A, 32B, and 32C are sequence diagrams showing "job restoration" E. This process is a process from when the job is checkpointed until the job resumes execution. Job restoration is a process of restoring a job from a checkpointed job dump and restarting the job. Job restoration is achieved using, for example, CRIU (https://www.criu.org/Main_Page, https://github.com/checkpoint-restore/criu).
本処理の前提として、ノード3は、キャッシュクラスタ7上のボリュームをジョブのダンプの格納場所としてマウントしている。ダンプの格納場所は、クラスタ共有ストレージ4上でもよい。スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S351)。ジョブは、学習対象データにアクセスしながら、学習処理を行う。スケジューラ1がジョブをチェックポイントすることで、ジョブの実行を一次停止する。ジョブが停止された後も、学習対象データの未キャッシュ部分のプリフェッチは継続される。以下に、本処理を説明する。
As a premise of this process, the
チェックポイントによりジョブの実行が一時停止されると、以下の「キャッシュクラスタのポーリング確認によるリストア待機」、「時間予測に基づくリストア待機」および「キャッシュクラスタから通知する場合」の3つの処理のいずれかの処理が行われる。 When job execution is paused due to a checkpoint, one of the following three processes will occur: "Waiting for restoration based on cache cluster polling confirmation," "Waiting for restoration based on time prediction," and "When notified from the cache cluster." processing is performed.
「キャッシュクラスタのポーリング確認によるリストア待機」では、スケジューラ1がジョブのチェックポイント時のキャッシュデータ量と、学習対象データのデータ量とをキャッシュクラスタ7に問い合わせて(S352)、キャッシュクラスタ7からこれらの情報を取得する(S353)。学習対象データのデータ量はジョブ登録時にユーザから取得してもよい。そして、スケジューラ1は、キャッシュデータ量をキャッシュクラスタ7に問い合わせ、取得する(S354、S355)。スケジューラ1は、「キャッシュデータ量」-「チェックポイント時のキャッシュデータ量」>=「データ量閾値」となるまで、S354およびS355の処理を繰り返す。
In the "restoration standby based on cache cluster polling confirmation", the
「時間予測に基づくリストア待機」では、スケジューラ1は、チェックポイント時のキャッシュデータ量と、キャッシュクラスタ7のキャッシュ速度と、学習対象データのデータ量とを、キャッシュクラスタ7に問い合わせ(S356)、これらの情報を取得する(S357)。学習対象データのデータ量はジョブ登録時にユーザから取得してもよい。キャッシュクラスタ7のキャッシュ速度は、キャッシュクラスタ7が学習対象データをキャッシュする際のデータ入力スループットを示す。
In the "restoration standby based on time prediction", the
スケジューラ1は、待機時間候補1を算出する(S358)。具体的には、スケジューラ1は、チェックポイント時のキャッシュデータ量とキャッシュ速度から、今後キャッシュデータ量が閾値を超過するまでの時間を時間候補1として算出する。スケジューラ1は、待機時間候補2を算出する(S359)。具体的には、スケジューラ1は、チェックポイント時のキャッシュデータ量とキャッシュ速度から、今後、学習対象データの全てがキャッシュされるまでの時間を時間候補2として算出する。スケジューラ1は、待機候補時間1と待機候補時間2とを比較し、短い方の時間待機する(S360)。
「キャッシュクラスタから通知する場合」では、スケジューラ1は、必要なキャッシュデータ量をキャッシュクラスタ7に指示する(S361)。キャッシュクラスタ7は、学習対象データの未キャッシュ部分をキャッシュし(S362)、指示されたデータ量をキャッシュしたことを契機にスケジューラ1に通知する(S363)。
In "the case of notification from the cache cluster", the
スケジューラ1は、チェックポイントされたサスペンドジョブをRQ23に登録する(S364)。スケジューラ1は、マスタ2にGPUの空き状況等を問い合わせ(S365)、取得する(S366)。GPUに空きがある場合、スケジューラ1は、ジョブをスケジューリングする(S367)。具体的には、スケジューラ1は、RQ23のジョブを、DQ24の通常のジョブより優先的にスケジュールする。スケジューラ1は、ジョブのリストアをマスタ2に指示し(S368)、マスタ2はジョブのリストアをノード3に指示する(S369)。この指示には、ダンプの格納場所が含まれる。ノード3は、ジョブのリストアを実行し(S370)、ジョブの実行を再開する(S371)。例えば、Network namespaceなどの仮想環境が復元され、チェックポイント時の状況から学習処理が再開可能な状態に復元される。ノード3は、学習処理を再開する(S372)。
(本実施形態の効果)
以上説明した本実施形態のGPUクラスタシステムにおけるスケジューラ1は、投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキュー13-15に格納する第1キューセレクタ11と、第1ステージキュー13-15のジョブを取り出してフェッチングジョブリスト30に登録し、ストレージ4に格納された、前記ジョブのデータのフェッチをキャッシュクラスタ7に開始させる第1ジョブセレクタ12と、フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリスト30から取り出し、デプロイ待ちのジョブを格納する第2ステージキュー23-25に格納する第2キューセレクタ21と、第2ステージキュー23-25からジョブを取り出し、当該ジョブのデプロイを指示する第2ジョブセレクタ22と、を有し、前記ジョブのデプロイ指示には、前記ジョブのデータの格納場所としてキャッシュクラスタ7が指定され、GPUクラスタはキャッシュクラスタ7にアクセスして前記ジョブを実行する。(Effects of this embodiment)
The
これにより本実施形態では、ストレージの速度不足により発生するGPUの遊休時間を低減し、GPUの稼働率を向上させることができる。すなわち、学習対象データなどのデータの読み出しを高速化することができ、GPUクラスタシステムの提供事業者によるGPUの稼働率を高めることができる。 As a result, in this embodiment, idle time of the GPU caused by insufficient storage speed can be reduced, and the utilization rate of the GPU can be improved. In other words, it is possible to speed up the reading of data such as learning target data, and it is possible to increase the utilization rate of GPUs by GPU cluster system providers.
また、本実施形態では、実行前のジョブをフェッチングジョブリスト30に登録し、キャッシュクラスタ7にデータのプリフェッチを開始させる。このように、GPUによるジョブの実行と並行してデータのプリフェッチを行うことで、GPUを効率的に使用することができる。
Further, in this embodiment, a job to be executed is registered in the
また、本実施形態では、データ待ちによるGPU遊休時にジョブを一時停止し、他のジョブにGPUを譲ることで、GPUの稼働率を向上することができる。 Furthermore, in this embodiment, the GPU utilization rate can be improved by temporarily stopping a job when the GPU is idle due to waiting for data and giving the GPU to another job.
(ハードウェア構成)
上記説明したスケジューラ1は、例えば、図33に示すような汎用的なコンピュータシステムを用いることができる。図示するコンピュータシステムは、CPU(Central Processing Unit、プロセッサ)901と、メモリ902と、ストレージ903(HDD:Hard Disk Drive、SSD:Solid State Drive)と、通信装置904と、入力装置905と、出力装置906とを備える。メモリ902およびストレージ903は、記憶装置である。このコンピュータシステムにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することにより、スケジューラ1の各機能が実現される。(Hardware configuration)
For the
また、スケジューラ1は、1つのコンピュータで実装されてもよく、あるいは複数のコンピュータで実装されても良い。また、スケジューラ1は、コンピュータに実装される仮想マシンであっても良い。
Furthermore, the
スケジューラ1用のプログラムは、HDD、SSD、USB(Universal Serial Bus)メモリ、CD (Compact Disc)、DVD (Digital Versatile Disc)などのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
The program for
なお、本発明は上記実施形態および変形例に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。 Note that the present invention is not limited to the above-described embodiments and modifications, and can be modified in many ways within the scope of the gist thereof.
1 :スケジューラ
11:第1キューセレクタ
12:第1ジョブセレクタ
13:ジョブキュー(JQ)
14:公平性超過ジョブキュー(OFJQ)
15:ユーザ超過ジョブキュー(OUJQ)
21:第2キューセレクタ
22:第2ジョブセレクタ
23:リストアキュー(RQ)
24:デプロイキュー(DQ)
25:公平性超過キュー(OFDQ)
30:フェッチングジョブリスト(FJL)
31:アカウントDB
32:GPU使用量監視部
2 :マスタ
3 :ノード
4 :クラスタ共有ストレージ
5 :ユーザ端末
6 :ユーザストレージ
7 :キャッシュクラスタ1: Scheduler 11: First queue selector 12: First job selector 13: Job queue (JQ)
14: Over-Fairness Job Queue (OFJQ)
15: User excess job queue (OUJQ)
21: Second queue selector 22: Second job selector 23: Restore queue (RQ)
24: Deployment queue (DQ)
25: Over-Fairness Queue (OFDQ)
30: Fetching job list (FJL)
31: Account DB
32: GPU usage monitoring unit 2: Master 3: Node 4: Cluster shared storage 5: User terminal 6: User storage 7: Cache cluster
Claims (7)
スケジューラは、
投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納するステップと、
第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、前記ジョブのデータのフェッチをキャッシュクラスタに開始させるステップと、
フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納するステップと、
第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示するステップと、を行い、
前記キャッシュクラスタは、
フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納するステップを行い、
GPUクラスタは、
前記キャッシュクラスタのデータにアクセスして、ジョブを実行するステップを行う
スケジューリング方法。A scheduling method performed by a GPU cluster system,
The scheduler is
storing the submitted job in a first stage queue that stores jobs waiting to start fetching;
retrieving a job from a first stage queue, registering it in a fetching job list, and causing a cache cluster to start fetching data for the job;
extracting a job whose fetched data amount exceeds a predetermined threshold from the fetching job list and storing it in a second stage queue that stores jobs waiting to be deployed;
retrieving the job from the second stage queue and instructing the deployment of the job;
The cache cluster is
fetching job data registered in the fetching job list from the storage where the data is stored and storing it in the cache cluster;
GPU cluster is
A scheduling method that performs a step of accessing data in the cache cluster and executing a job.
投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納する第1キューセレクタと、
第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる第1ジョブセレクタと、
フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納する第2キューセレクタと、
第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示する第2ジョブセレクタと、を有し、
前記ジョブのデプロイ指示には、前記ジョブのデータの格納場所として前記キャッシュクラスタが指定され、GPUクラスタは前記キャッシュクラスタにアクセスして前記ジョブを実行する
スケジューラ。A scheduler for a GPU cluster system,
a first queue selector that stores the submitted job in a first stage queue that stores jobs waiting to start fetching;
a first job selector that retrieves a job from a first stage queue, registers it in a fetching job list, and causes a cache cluster to start fetching data of the job stored in storage;
a second queue selector that extracts jobs whose fetched data amount exceeds a predetermined threshold from the fetching job list and stores them in a second stage queue that stores jobs waiting to be deployed;
a second job selector that retrieves a job from the second stage queue and instructs to deploy the job;
The cache cluster is specified as a storage location for data of the job in the job deployment instruction, and the GPU cluster accesses the cache cluster and executes the job.
第1ステージキューは、公平性の観点から各ユーザに割り当てられたGPUの割当量を超えていないジョブが格納されるジョブキューと、前記割当量を超えたジョブが格納される超過ジョブキューとを備え、
第1ジョブセレクタは、前記ジョブキューのジョブを前記超過ジョブキューのジョブより優先的にフェッチングジョブリストに登録する
スケジューラ。3. The scheduler according to claim 2,
From the viewpoint of fairness, the first stage queue is divided into a job queue in which jobs that do not exceed the GPU quota assigned to each user are stored, and an excess job queue in which jobs that exceed the quota are stored. Prepare,
A first job selector is a scheduler that registers jobs in the job queue in a fetching job list with priority over jobs in the excess job queue.
第2ステージキューは、リストア待ちのジョブが格納されるリストアキューと、デプロイ待ちのジョブが格納されるデプロイキューと、公平性の観点から各ユーザに割り当てられたGPUの割当量を超えたジョブが格納され超過キューとを備え、
第2ジョブセレクタは、前記リストアキューのジョブを前記デプロイキューのジョブより優先的にデプロイ指示し、前記デプロイキューのジョブを前記超過キューのジョブより優先的にデプロイ指示する
スケジューラ。The scheduler according to claim 2 or 3,
The second stage queue consists of a restore queue where jobs waiting to be restored are stored, a deploy queue where jobs waiting to be deployed are stored, and jobs that exceed the GPU quota allocated to each user from a fairness perspective. Equipped with a stored excess queue and
A second job selector is a scheduler that instructs to deploy jobs in the restore queue with priority over jobs in the deploy queue, and instructs to deploy jobs in the deploy queue with priority over jobs in the excess queue.
第2ジョブセレクタは、前記リストアキュー、前記デプロイキューおよびの前記超過キューの全てが空の場合、第2キューセレクタを起動し、フェッチングジョブリストの中でフェッチしたデータ量が最も多いジョブまたはフェッチングジョブリストの先頭のジョブを、前記リストアキュー、前記デプロイキューおよびの前記超過キューのいずれかに格納させる
スケジューラ。5. The scheduler according to claim 4,
If the restore queue, the deploy queue, and the excess queue are all empty, the second job selector activates the second job selector and selects the job or fetch job that has the largest amount of fetched data in the fetch job list. a scheduler that stores a first job in a processing job list in one of the restore queue, the deployment queue, and the excess queue;
前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納し、
前記GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行する
GPUクラスタシステム。A GPU cluster system comprising the scheduler according to any one of claims 2 to 5, a cache cluster, and a GPU cluster,
The cache cluster fetches the data of the job registered in the fetching job list from the storage where the data is stored and stores it in the cache cluster,
The GPU cluster accesses data in the cache cluster to execute the job.
GPU cluster system.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/016697 WO2021210123A1 (en) | 2020-04-16 | 2020-04-16 | Scheduling method, scheduler, gpu cluster system, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021210123A1 JPWO2021210123A1 (en) | 2021-10-21 |
JP7385156B2 true JP7385156B2 (en) | 2023-11-22 |
Family
ID=78083559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022514945A Active JP7385156B2 (en) | 2020-04-16 | 2020-04-16 | Scheduling method, scheduler, GPU cluster system and program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7385156B2 (en) |
WO (1) | WO2021210123A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706690B (en) * | 2022-06-06 | 2022-09-16 | 浪潮通信技术有限公司 | Method and system for sharing GPU (graphics processing Unit) by Kubernetes container |
CN115617364B (en) * | 2022-12-20 | 2023-03-14 | 中化现代农业有限公司 | GPU virtualization deployment method, system, computer equipment and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011154528A (en) | 2010-01-27 | 2011-08-11 | Renesas Electronics Corp | Data processor |
WO2014016951A1 (en) | 2012-07-27 | 2014-01-30 | 株式会社日立製作所 | Information processing device |
WO2017131187A1 (en) | 2016-01-29 | 2017-08-03 | 日本電気株式会社 | Accelerator control device, accelerator control method and program |
-
2020
- 2020-04-16 WO PCT/JP2020/016697 patent/WO2021210123A1/en active Application Filing
- 2020-04-16 JP JP2022514945A patent/JP7385156B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011154528A (en) | 2010-01-27 | 2011-08-11 | Renesas Electronics Corp | Data processor |
WO2014016951A1 (en) | 2012-07-27 | 2014-01-30 | 株式会社日立製作所 | Information processing device |
WO2017131187A1 (en) | 2016-01-29 | 2017-08-03 | 日本電気株式会社 | Accelerator control device, accelerator control method and program |
Also Published As
Publication number | Publication date |
---|---|
WO2021210123A1 (en) | 2021-10-21 |
JPWO2021210123A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10484473B2 (en) | Systems and methods for efficient distribution of stored data objects | |
US9952753B2 (en) | Predictive caching and fetch priority | |
US9519585B2 (en) | Methods and systems for implementing transcendent page caching | |
WO2019127916A1 (en) | Data read/write method and device implemented on the basis of distributed consensus protocol | |
US6505241B2 (en) | Network intermediate node cache serving as proxy to client node to request missing data from server | |
JP7385156B2 (en) | Scheduling method, scheduler, GPU cluster system and program | |
US8769205B2 (en) | Methods and systems for implementing transcendent page caching | |
EP4273700A2 (en) | Computing resource allocation | |
US11966768B2 (en) | Apparatus and method for multi-cloud service platform | |
US20160156715A1 (en) | Optimal allocation of dynamically instantiated services among computation resources | |
CN102981929A (en) | Management method and system for disk mirror images | |
JP2005031987A (en) | Content layout management system and content layout management program for content delivery system | |
CN116436962A (en) | Method and device for persistent caching of global aggregation namespaces crossing computing nodes facing DFS | |
US20210026809A1 (en) | Data caching method and node based on hyper-converged infrastructure | |
US11086557B2 (en) | Continuous asynchronous replication from on-premises storage to cloud object stores | |
Tang et al. | A block-level caching optimization method for mobile transparent computing | |
Huang et al. | S-cache: Toward an low latency service caching for edge clouds | |
TWI824392B (en) | On-demand shared data caching method, computer program, and computer readable medium applicable for distributed deep learning computing | |
WO2023029610A1 (en) | Data access method and device, and storage medium | |
Zhang et al. | A multi-level cache framework for remote resource access in transparent computing | |
CN113157452A (en) | Application service request method and device, computer equipment and storage medium | |
JP5494363B2 (en) | File management program, file management method, and file management apparatus | |
Zhang et al. | Network-aware data caching and prefetching for cloud-hosted metadata retrieval | |
US20240291895A1 (en) | Distributed cloud system, and data processing method and storage medium of distributed cloud system | |
WO2023077283A1 (en) | File management method and apparatus, and electronic device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220830 |
|
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: 20231010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231023 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7385156 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |