WO2021210123A1 - スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム - Google Patents

スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム Download PDF

Info

Publication number
WO2021210123A1
WO2021210123A1 PCT/JP2020/016697 JP2020016697W WO2021210123A1 WO 2021210123 A1 WO2021210123 A1 WO 2021210123A1 JP 2020016697 W JP2020016697 W JP 2020016697W WO 2021210123 A1 WO2021210123 A1 WO 2021210123A1
Authority
WO
WIPO (PCT)
Prior art keywords
job
cluster
queue
scheduler
data
Prior art date
Application number
PCT/JP2020/016697
Other languages
English (en)
French (fr)
Inventor
兼三 奥田
益谷 仁士
武志 弘田
健 桑原
Original Assignee
日本電信電話株式会社
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 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to JP2022514945A priority Critical patent/JP7385156B2/ja
Priority to PCT/JP2020/016697 priority patent/WO2021210123A1/ja
Publication of WO2021210123A1 publication Critical patent/WO2021210123A1/ja

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
    • 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/54Interprogram communication

Definitions

  • the present invention relates to a scheduling method, a scheduler, a GPU cluster system and a program.
  • GPU Graphics Processing Unit
  • GPUs are hardware that performs calculation processing necessary for rendering high-definition images and videos.
  • GPUs have been used as arithmetic units for machine learning and the like.
  • a GPU cluster in which multiple GPUs are clustered is also being developed.
  • Kubernetes exists as open source software that manages container-type GPU clusters (Non-Patent Document 1).
  • 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, a scheduler, a GPU cluster system and a program for reducing the idle time of the GPU and improving the operating rate of the GPU. It is in.
  • one aspect of the present invention is a scheduling method performed by a GPU cluster system, in which the scheduler stores a submitted job in a first stage queue that stores a job waiting to start fetching. Then, the step of taking out the job of the first stage queue, registering it in the fetching job list, and starting the fetch of the data of the job in the cache cluster, and fetching the job whose fetched data amount exceeds a predetermined threshold.
  • a step of fetching from the job list and storing the job waiting to be deployed in the second stage queue and a step of fetching the job from the second stage queue and instructing the deployment of the job are performed, and the cache cluster fetches the job.
  • the data of the job registered in the job list is fetched from the storage in which the data is stored, and the step of storing the data in the cache cluster is performed, and the GPU cluster accesses the data of the cache cluster to execute the job. Take the steps to perform.
  • One aspect of the present invention is a scheduler in a GPU cluster system, in which a first queue selector that stores submitted jobs in a first stage queue that stores jobs waiting to start fetching and a job in the first stage queue are stored. Fetching The first job selector that is fetched, registered in the fetching job list, and stored in the storage to start fetching the data of the job in the cache cluster, and the job whose fetched data amount exceeds a predetermined threshold are fetched. It has a second queue selector that is fetched from the job list and stored in the second stage queue that stores jobs waiting to be deployed, and a second job selector that fetches jobs from the second stage queue and instructs the deployment of the job.
  • the cache cluster is specified as a storage location of the data of the job in the deployment instruction of the job, and the GPU cluster accesses the cache cluster and executes the job.
  • One aspect of the present invention is a GPU cluster system including a scheduler, a cache cluster, and a GPU cluster, in which the cache cluster stores the data of jobs registered in the fetching job list. It is fetched from the storage and stored in the cache cluster, and the GPU cluster accesses the data of the cache cluster and executes the job.
  • One aspect of the present invention is a program that functions a computer as the above scheduler.
  • the present invention it is possible to provide a scheduling method, a scheduler, a GPU cluster system, and a program that reduce the idle time of the GPU and improve the operating rate of the GPU.
  • FIG. 1 is a configuration diagram showing a schematic configuration of a basic GPU cluster system.
  • the GPU cluster system shown in the figure is a GPU learning cluster system for executing learning processing using the GPU.
  • the cluster provider (hereinafter referred to as "business operator") provides the user (user) with equipment that performs learning processing on behalf of the GPU cluster.
  • the user pays the operator a pay-as-you-go amount according to the usage time of the GPU cluster without owning an expensive GPU. Since learning processes such as machine learning need only be executed once, it is cheaper for users to pay a pay-as-you-go amount than to purchase an expensive GPU.
  • the GPU cluster system is required to be able to execute various jobs (Jobs) (that is, job virtualization) and to deploy jobs at high speed.
  • Jobs that is, job virtualization
  • the basic operation outline of the GPU cluster will be explained with reference to Fig. 1.
  • a container-type cluster that allocates GPU resources for each job execution is used.
  • the user terminal 5 stores data or the like to be learned in the cluster shared storage 4A instructed by the provider of the GPU cluster according to the user's instruction (S1A).
  • the user terminal 5 registers the job of the learning process to be executed in the scheduler 1A according to the instruction of the user (S2A).
  • the scheduler 1A schedules the jobs received from the plurality of user terminals 5 based on the priority, the estimated processing time, and the like, and instructs the master 2A to execute the jobs as soon as the GPU resources are secured (S3A).
  • Master 2A deploys the job to the node, attaches the GPU, and causes the GPU to execute the learning process (S4A). That is, the master 2A creates a virtual environment for executing the learning / inference program for each job, and attaches the GPU. Master 2A releases the GPU when the job is complete.
  • the GPU performs the learning process while reading the learning target data uploaded to the cluster shared storage 4A in advance, and stores the result of the learning process in the cluster shared storage 4A (S5A). When the user finishes executing his / her own job, he / she can acquire the execution result of the learning process by accessing the cluster shared storage 4A.
  • the user terminal 5 stores the learning target data in the user storage 6A of the user base (S1A'), and the job of the node 3A is closed-connected to the user storage 6A and the user. Directly access storage 6A (S5A').
  • the data transfer speed becomes slower than the processing speed of the learning program, and the idle time of the GPU occurs.
  • FIG. 3 is a configuration diagram showing a schematic configuration of the GPU cluster system of the present embodiment.
  • the GPU cluster system of the present embodiment is a GPU learning cluster system for executing learning processing using the GPU.
  • the learning process is to read the learning target data and perform processing such as machine learning. At this time, instead of reading all the data to be learned at once, the learning process is performed while reading the data in block units or file units in order.
  • the GPU cluster system shown in the figure includes a scheduler 1, a master 2, a node 3, a cluster shared storage 4, and a cache cluster 7.
  • a container-type GPU cluster that allocates GPU resources for each job execution.
  • the user base may include a user storage 6 for storing the learning target data by the user.
  • the GPU cluster system of this embodiment includes a high-cost and high-speed cache cluster 7 (cache), and the scheduler 1 schedules the cache cluster 7 and the GPU at the same time.
  • Large-capacity data is normally stored in low-cost and low-speed storage (cluster shared storage 4, user storage 6) at low cost, and the data is stored in cache cluster 7 when a job is executed.
  • cluster shared storage 4 cluster shared storage 4, user storage 6) at low cost
  • cache cluster shared storage 4 cluster shared storage 4
  • the data is stored in cache cluster 7 when a job is executed.
  • the GPU since the GPU reads data from the high-speed cache cluster 7, it is possible to avoid a situation in which the GPU is idle waiting for data reading.
  • the scheduler 1 (Scheduler) accepts a job (Job) submitted from the user terminal 5.
  • the scheduler 1 monitors the availability of GPU resources in the GPU cluster, and if there is a availability, instructs the master 2 to deploy the job (deploy it to the execution environment). That is, the scheduler 1 instructs the master 2 to execute the job.
  • Master 2 manages Node 3 and deploys jobs.
  • the master 2 constructs a virtual environment such as a container defined in the job on the node 3 and executes the program defined in the job in the virtual environment.
  • the master 2 deletes the virtual environment when the program defined in the job is completed.
  • a job defines a program that the user wants to execute (for example, a learning or inference program) and an execution environment of the program.
  • a job includes one or more programs to be executed and their order.
  • the job includes an environment for executing a program (virtual environment, runtime, OS, distribution, library, etc.).
  • the job includes the image file name of the container, the image file name of the VM (Virtual Machine), and the like as the environment.
  • the job may include a procedure for automatically constructing the above environment, and the job may automatically generate an image of the execution environment.
  • the job of this embodiment includes a main container (MainContainer), and may include a container other than the main container.
  • the main container is a container of a virtual environment that executes the learning program of the present embodiment.
  • a container is used as a realization form of the virtual environment, but a VM may also be used.
  • Cluster Shared Storage 4 is a storage system that stores data.
  • the cluster shared storage 4 stores the learning target data and the execution result. You can access the cluster shared storage 4 from the job virtual environment. The user can directly or indirectly store the learning target data read by the job in the cluster shared storage 4 by some means. Since the cluster shared storage 4 stores a large amount of data to be learned, it is assumed that storage technologies such as Ceph, GlusterFS, Swift, and RAID will be used. Ceph (https://ceph.io/) and GlusterFS (https://www.gluster.org/) are open source distributed storage software.
  • Cache cluster 7 Cluster Shared Storage
  • the cache cluster 7 fetches data from the cluster shared storage 4 or the user storage 6.
  • the "fetch” for reading data is also referred to as “cache” hereafter.
  • the user terminal 5 stores the learning target data and the like in the cluster shared storage 4 or the user storage 6 instructed by the business operator that provides the GPU cluster system according to the user's instruction (S1).
  • the user terminal 5 registers the job of the learning process to be executed in the scheduler 1 according to the instruction of the user (S2).
  • the scheduler 1 instructs the cache cluster 7 to cache the data (S3).
  • the cache cluster 7 starts fetching the learning target data from the cluster shared storage 4 or the user storage 6 (S4).
  • the scheduler 1 schedules jobs received from a plurality of user terminals 5 (users) based on the registration order, priority, required resource amount (number of GPUs, number of CPUs, etc.), estimated processing time, etc., and can secure GPU resources.
  • the master 2 is instructed to execute the job (S5).
  • the required resource amount may be included in the metadata of the job by the user in advance and notified to the scheduler 1, or the scheduler 1 may estimate from the contents of the job.
  • Master 2 deploys the job to the node, attaches the GPU, mounts the cache area of the cache cluster 7, and causes the GPU to execute the job learning process (S6). That is, the master 2 creates a virtual environment for executing the learning / inference program for each job, and attaches the GPU. Master 2 releases the GPU when the job is completed.
  • the GPU performs the learning process while reading the data of the learning target cached in the cache area, and stores the result of the learning process in the cache cluster 7 or the cluster shared storage 4 (S7).
  • the scheduler 1 deletes the data in the cache area after the job is completed (S8).
  • FIG. 4 is a configuration diagram of the cache cluster 7.
  • the cache cluster 7 shown in the figure includes a VPN connection unit 71 (VPN Function), a cache management unit 72 (Cache Manager), and one or more storages 73 (Storage).
  • VPN Function VPN Function
  • cache management unit 72 cache Manager
  • Storage storages
  • the VPN connection unit 71 starts or listens for a closed connection and establishes a closed connection.
  • the cache management unit 72 collectively forms a cluster with one or more storages 73.
  • the cache management unit 72 accesses the storage (cluster shared storage 4, user storage 6) that is the origin (original) using a file sharing protocol or the like, caches the data possessed by the origin, and shares the data with the requester. Has a transparent cache function.
  • the cache management unit 72 determines whether or not the requested data has been cached. If it has already been cached, the relevant data is returned to the requester. If it is not cached, the data is requested from the storage that is the origin, and the data passed from the storage that is the origin is returned to the requester.
  • the cache management unit 72 has a function of operating the cluster shared storage 4 and the user storage 6.
  • the storage 73 stores the data cached from the storage that is the origin.
  • High-speed storage such as NVMe or NVDIMM is used for the storage 73.
  • the VPN connection unit 71 may not be included in the cache cluster 7 and may exist in the GPU cluster system independently of the cache cluster 7. Further, the cache cluster 7 may include the cluster shared storage 4.
  • FIG. 5 is a configuration diagram of the scheduler 1.
  • the scheduler 1 includes a first stage queue 10, a second stage queue 20, a fetching job list 30 (Fetching Job List (hereinafter, “FJL”)), an account DB 31 (Accounting DB), and a GPU usage monitoring unit. It is equipped with 32 (GPU Utilization Monitor).
  • the account DB31 manages the GPU usage of each user.
  • the account DB 31 may be installed outside the scheduler 1 instead of inside the scheduler 1. Further, the existing user database of the business operator may be diverted to the account DB 31.
  • the GPU usage monitoring unit 32 acquires the GPU usage from the master 2 or the node 3 and monitors the GPU usage.
  • the first stage queue 10 includes a first queue selector 11 (Queue Selector 1), a plurality of job queues 13-15, and a first job selector 12 (Job Selector 1).
  • the first queue selector 11 stores the jobs submitted from the user terminal 5 in the job queues 13-15 of any of the first stage queues 10 that store the jobs waiting to start fetching. The processing of the first queue selector 11 will be described later.
  • the first job selector 12 takes out a job in the first stage queue, registers it in the fetching job list, and causes the cache cluster to start fetching the data of the job stored in the storage.
  • the first job selector 12 takes out the jobs stored in the job queues 13-15 according to the priority and the like, and registers them in the fetching job list 30. Further, the first job selector 12 inquires the account DB 31 of the current GPU usage of the user, and depending on the current usage of the user, the job queue corresponding to the fairness allocation amount or the job exceeding the user allocation amount. Relocate to. The processing of the first job selector 12 will be described later.
  • the job queue of the first stage includes job queue 13 (Job Queue (hereinafter, "JQ”)), over-fairness job queue 14 (Over Fairness-quota Job Queue (hereinafter, "OFJQ”)), and user excess job.
  • Queue 15 (Over User-quota Job Queue (hereinafter, "OUJQ”)) is included.
  • JQ13 Job Quality of Service k
  • the class k is 1 ⁇ k ⁇ n
  • JQ13 of class k may be described as "JQk”.
  • OFJQ14 stores jobs that exceed the fairness allocation amount (quota) of the GPU assigned to each user from the viewpoint of fairness.
  • This fairness quota is used by operators to use each user's GPU fairly in order to prevent one user from monopolizing the GPU and another user from being unable to use the GPU, and to allocate the GPU to each user fairly. It sets an upper limit on the amount.
  • the allotted amount is an allotted amount for a predetermined period such as one month.
  • OFJQ14 is provided for each job class k like JQ13, and k is 1 ⁇ k ⁇ n.
  • the job queue 14 of class k may be described as "OFJQ k".
  • OUJQ15 stores jobs that exceed the user allocation amount of the GPU set by the user. This user quota sets an upper limit for the user's own GPU usage in order to keep the GPU usage fee within the budget.
  • the allotted amount is an allotted amount for a predetermined period such as one month. Jobs stored in OUJQ15 are not deployed and fetched.
  • the first job selector 12 fetches a job from the beginning of OUJQ15, and the first queue selector 11 is a job of the class corresponding to the job. Allocate to queue 13.
  • the current usage amount is updated, for example, when the upper limit of the monthly usage amount is set, or when the usage amount is updated to 0 in the next month.
  • the first job selector 12 registers the job of JQ13 in FJL30 with priority over the job of OFJQ14.
  • FJL30 is a list in which jobs for starting data fetching are registered.
  • the cache cluster 7 fetches (prefetches) the jobs registered in FJL30.
  • the first job selector 12 may instruct the cache cluster 7 to start fetching the job added to the FJL 30 after registering the job in the FJL 30.
  • the cache cluster 7 may periodically check the FJL 30 and start fetching the job when a new job is registered. Jobs whose fetched data amount exceeds a predetermined threshold are moved to the second stage queue 20. The threshold value will be described later.
  • a suspended job may be registered in FJL30.
  • the second stage queue 20 stores jobs waiting to be deployed.
  • the second stage queue 20 includes a second queue selector 21 (Queue Selector 2), a plurality of job queues 23-25, and a second job selector 22 (Job Selector 2).
  • the second queue selector 21 takes out a job whose fetched data amount exceeds a predetermined threshold value from the FJL 30 and stores it in any queue 23-25 of the second stage queue 20. The processing of the second queue selector 21 will be described later.
  • the second job selector 22 takes out a job from any of the queues 23-25 of the second stage queue 20 and instructs the deployment of the job.
  • the job queues of the second stage include the restore queue 23 (Restore Queue (hereinafter, "RQ”)), the deploy queue 24 (Deploy Queue (hereinafter, “DQ”)), and the over-fairness queue 25 (Over Fairness-quota).
  • RQ Restore Queue
  • DQ Deploy Queue
  • OFDQ Over Fairness-quota
  • RQ23 stores jobs waiting for restoration in which the amount of fetched data exceeds the threshold value.
  • the DQ24 stores jobs waiting for deployment in which the amount of fetched data exceeds the threshold value.
  • the OFDQ25 stores jobs in which the current GPU usage of the user (job owner) of the job exceeds the fairness allocation amount. Jobs that exceed the fairness quota will be deployed if there is free space on the GPU and there are no other jobs (jobs for RQ23 and DQ24). If there are other jobs, the other jobs take precedence.
  • the excess state is resolved by resetting the usage amount of the user to 0 in the next month, it is taken out from the first job of OFDQ25 and stored in RQ23 or DQ24.
  • the second job selector 22 gives priority to deploy the RQ23 job over the DQ24 job, and gives priority to deploy the DQ24 job over the OFDQ25 job.
  • the second job selector 22 activates the second queue selector 21, and the second queue selector 21 receives the first job of the FJL 30 or the amount of data fetched in the FJL 30.
  • the most jobs may be stored in any of RQ23, DQ24 and OFDQ25. Further, when fetching a job from RQ23, the job immediately after suspend may be excluded from the deployment instruction until a fixed amount of fetch is performed for a certain period of time so that the restore and suspend are not repeated in a short period of time.
  • the threshold value of the fetched data amount when fetching a job from FJL30 may be calculated by, for example, the following method.
  • the first method uses a value defined by the business operator or the user as a threshold value. For example, 10% of the amount of data.
  • the second method is to calculate 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, divided into stages according to the size of the calculation amount order, and the threshold value is determined for each stage. Further, the larger the calculation amount order, the lower the data processing amount (data processing speed) per hour. Therefore, the larger the calculation amount order, the smaller the threshold value.
  • the third method calculates the threshold value from the job execution status until the checkpoint, which will be described later. Specifically, the data processing speed Vp and the fetch speed Vf are calculated from the execution status so far.
  • Vf ⁇ Vp the threshold value is Vf ⁇ M.
  • M is an arbitrary value.
  • the threshold value (1-Vf / Vp) ⁇ S + Vp ⁇ M.
  • S is the remaining amount of unprocessed data
  • M is an arbitrary value.
  • FIG. 6 is a flowchart showing the processing of the first queue selector 11.
  • the first queue selector 11 receives the job (S11)
  • the first queue selector 11 acquires the priority class of the user who is the owner of the job in the account DB31 (S12).
  • the priority class is k (S13).
  • the first queue selector 11 compares the fairness quota of the GPU with the current usage of the user (S14), and when the current usage does not exceed the fairness quota (S15: true), the user of the GPU The allocated amount and the current usage amount of the user are compared (S16).
  • the first queue selector 11 stores the job received in S11 at the end of JQ k13 of the priority class k (S18).
  • the first queue selector 11 stores the job received in S11 at the end of OUJQ15 (S19).
  • the current usage exceeds the fairness allocation amount (S15: false)
  • the first queue selector 11 stores the job received in S11 at the end of OFJQ k14 of the priority class k (S20).
  • FIG. 7 is a flowchart showing the processing of the first job selector 12. The process of FIG. 7 is started with a job being submitted to the first queue selector 11 as a trigger. Further, the process of FIG. 7 is started with the detection that the second queue selector 21 has a vacancy in the FJL 30 as a trigger.
  • the first job selector 12 stores the job fetched in S34 at the end of FJL30 (S39).
  • the first job selector 12 stores the job fetched in S34 at the end of the OUJQ 15 via the first queue selector 11 (S40).
  • the current usage exceeds the fairness allocation amount (S36: false) the first job selector 12 stores the job fetched in S34 via the first queue selector 11 at the end of OFJQ k14 of the priority class k. (S41).
  • FIG. 8 is a flowchart showing the processing of the second queue selector 21.
  • the process of FIG. 8 is executed periodically.
  • the second queue selector 21 sets the threshold value of the data amount of the fetched learning target data of the i-th job. Is determined (S53).
  • the second queue selector 21 inquires the cache cluster 7 (cache management unit 72) of the amount of fetched data. When the fetched data amount does not exceed the threshold value (S53: false), the second queue selector 21 adds 1 to i (S54), returns to S52, and performs subsequent processing.
  • the second queue selector 21 fetches the i-th job of FJL30 and dequeues it (S55).
  • the second queue selector 21 confirms the metadata of the fetched job (S56), and stores the job in the RQ23 when the job is in the suspend state (pause state) (S57: true) (S63). Since the FJL 30 has a free space, the second queue selector 21 activates the first job selector 12 (S61).
  • the second queue selector 21 confirms the fairness allocation amount of the job owner and the reduced current usage amount in order to determine whether or not to proceed with the job control. (S58).
  • the second queue selector 21 stores the job in the DQ24 (S63) and activates the first job selector 12 (S61).
  • the second queue selector 21 stores the job in the OFDQ25 (S62) and activates the first job selector 12 (S61).
  • the second queue selector 21 inquires the GPU usage amount monitoring unit 32 about the GPU usage amount.
  • the GPU usage monitoring unit 32 acquires the GPU usage from the master 2 or the node 3 and responds to the second queue selector 21. If the GPU is free (S64: true), RQ23 is empty (S65: true), DQ24 is empty (S66: true), and the first job exists in FJL30 (S67: true), the second queue The selector 21 takes out the first job of FJL30 (S68) and proceeds to S56.
  • S64: true the GPU is free
  • RQ23 is empty
  • DQ24 is empty
  • S66: true the first job exists in FJL30
  • S67: true the second queue The selector 21 takes out the first job of FJL30 (S68) and proceeds to S56.
  • S68 In order to maximize the GPU usage rate, in the present embodiment, when there are no more RQ23 and DQ24 jobs to be executed, even the FJL30 job with insufficient fetch is deployed.
  • the second queue selector 21 takes out the first job of FJL30 even if the fetch is insufficient and enqueues it to one of the queues 23-25.
  • the second queue selector 21 activates the first job selector 12 (S61).
  • the fetched data amount of the first (first) job among the jobs stored in the FJL30 is not always the largest. ..
  • the second queue selector 21 in S68 takes out the job with the largest amount of data fetched in FJL30, proceeds to S56, and stores the job in any of RQ23, DQ24, and OFDQ25. You may let me. That is, the second queue selector 21 may take out the most fetched job among the jobs in the FJL 30.
  • FIG. 9 is a flowchart showing the processing of the second job selector 22.
  • the GPU usage monitoring unit 32 activates the second job selector 22 when there is a vacancy in the GPU, and the process of FIG. 9 is performed.
  • the second job selector 22 takes out one job from the RQ23 and stores it in J (S72).
  • RQ23 is empty (S71: true) and DQ24 is not empty (S75: false)
  • the second job selector 22 takes out one job from DQ24 and stores it in J (S76).
  • the second job selector 22 instructs the master 2 to deploy J (S73) and activates the second queue selector 21 (S74).
  • OFDQ25 is empty (S78: true)
  • the second job selector 22 activates the second queue selector 21 (S74).
  • the FJL 30 is not empty (S77: false)
  • the second job selector 22 activates the second queue selector 21, waits for the completion of the operation of the second queue selector 21 (S80), and proceeds to S71.
  • the second job selector 22 activates the second queue selector 21 when all of the RQ23, DQ24, and OFDQ25 are empty, and stores the first job of the FJL30 in any of the RQ23, DQ24, and OFDQ25. ..
  • FIG. 10 is a configuration diagram of the GPU cluster of the first embodiment.
  • the learning target data is stored in advance in the low-speed cluster shared storage 4 (distributed storage).
  • the cache cluster 7 cache management unit 72
  • the master 2 mounts the area of the cache cluster 7 on the node 3.
  • the cache area is mounted using RDMA-fs (a mechanism for converting data on RDMA devices into a file system), NFS over RDMA, GlusterFS, etc.
  • the bandwidth of the transfer path for RDMA is guaranteed by TSN (Time Sensitive Networking) or the like.
  • a high-speed, bandwidth-securing network such as Lossless DC fabric is constructed, and data is transferred using various switches (SW) such as a spine switch (Spine SW).
  • SW Switche SW
  • the scheduler 1 instructs the cache cluster 7 to prefetch the data of the job while waiting for the job. As a result, the cache cluster 7 prefetches data from the cluster shared storage 4 according to the above instruction.
  • the scheduler 1 instructs the master 2 to deploy the job, and the master 2 assigns the job to the GPU.
  • the master 2 mounts the cache area of the cache cluster 7 using RDMA-fs or the like.
  • the GPU executes the job.
  • the scheduler 1 deletes the cache data of the cache cluster 7 after executing the job.
  • FIG. 11 is a configuration diagram of the GPU cluster of the second embodiment.
  • the user storage 6 at the user base is connected online. That is, in this embodiment, the learning target data stored in the low-speed user storage 6 is connected online.
  • a high-speed, bandwidth-securing network such as Lossless DC fabric is constructed as in the first embodiment, and data is collected using various switches (SW) such as spine switches (SpineSW). Forward.
  • SW switches
  • a data transfer path (VPN, leased line, etc.) is constructed by connecting the Access / Metro network with a switch such as Border Leaf between the GPU cluster system and the user base.
  • the cache cluster 7 (cache management unit 72) transfers the data of the user storage 6 at the user base and prefetches it into the memory (NV-DIMM) of the cache cluster 7. Note that this is not equivalent to downloading because only a part of the data is placed in the cache memory.
  • CRIU Checkpoint / Restore In Userspace
  • the cache cluster 7 writes the process data being processed to the cache cluster 7.
  • FIG. 12 is a configuration diagram of the GPU cluster of the third embodiment.
  • a plurality of data centers 40 are distributed and exist.
  • the data center 40 includes a GPU cluster including a plurality of masters 2 and nodes 3, a cache cluster 7, and a cluster shared storage 4.
  • the data center 40 does not have to include the cluster shared storage 4.
  • Scheduler 1 allocates the job to the GPU cluster near the user base.
  • the scheduler 1 selects a GPU cluster as close as possible to the cluster shared storage 4 to which the user uploaded the data.
  • FIG. 13 is a schematic diagram showing a closed area connection of method 1.
  • the user storage 6 has a closed connection function and waits for a closed connection from the cache cluster 7.
  • the cache cluster 7 starts a closed connection to the user storage 6.
  • the cache cluster 7 releases the closed connection.
  • the user storage 6 returns to the standby state of the closed connection.
  • the user storage 6 is always in a state of waiting for a closed connection.
  • a subscriber-side line termination device hereinafter referred to as "CPE" is placed at the user base.
  • CPE subscriber-side line termination device
  • the user needs to negotiate and decide the settings for the closed connection in advance with the operator of the GPU cluster system.
  • the user needs to set his / her own user storage 6 for a closed connection with the cache cluster 7.
  • FIG. 14 is a schematic diagram showing a closed area connection of method 2.
  • the CPE 8 at the user base includes a VPN connection unit and an API (control unit) for supporting control from the scheduler 1.
  • This method configures a closed connection on demand.
  • the user registers a job in the scheduler 1
  • the user includes the connection information to the API of CPE8 in the job.
  • the scheduler 1 instructs the cache cluster 7 to listen for a closed connection from the CPE 8.
  • the CPE 8 receives an instruction from the scheduler 1 and requests a closed connection from the instructed connection destination (cache cluster 7).
  • the cache cluster 7 replicates the learning target data on the user storage 6 to the GPU cluster system.
  • the replication destination is either the cache cluster 7 or the cluster shared storage 4.
  • the scheduler 1 instructs CPE8 to delete the closed connection setting.
  • FIG. 15 is a schematic diagram showing a closed area connection of the method 3.
  • the CPE 8 includes a VPN connection unit and an API (control unit).
  • the scheduler 1 causes the CPE 8 to listen for the closed connection and instructs the cache cluster 7 to start the closed connection.
  • This method configures a closed connection on demand.
  • the user registers a job in the scheduler 1, the user includes the connection information to the API of CPE8 in the job.
  • the scheduler 1 instructs the CPE 8 to listen for a closed connection from the cache cluster 7.
  • the cache cluster 7 receives an instruction from the scheduler 1 and requests a closed connection from the instructed connection destination (CPE8).
  • the cache cluster 7 replicates the learning target data on the user storage 6 to the GPU cluster system.
  • the replication destination is either the cache cluster 7 or the cluster shared storage 4.
  • the scheduler 1 instructs the CPE to delete the closed connection setting.
  • FIG. 16 is a schematic diagram showing a closed area connection of the method 4.
  • a virtualized subscriber-side line termination device hereinafter, “vCPE”) 92 is installed in the carrier network.
  • the vCPE92 has a VPN connection unit and an API (control unit) corresponding to control from the scheduler 1.
  • This method configures a closed connection on demand.
  • the user registers a job in the scheduler 1, the user includes line identification information for identifying the line to which the user storage 6 is connected to the job.
  • the scheduler 1 instructs the cache cluster 7 to listen for a closed connection from vCPE92.
  • the vCPE 92 receives an instruction from the scheduler 1 and requests a closed connection from the instructed connection destination (cache cluster 7).
  • the cache cluster 7 replicates the learning target data on the user storage 6 to the GPU cluster system.
  • the replication destination is either the cache cluster 7 or the cluster shared storage 4.
  • the scheduler 1 instructs vCPE92 to release the closed connection.
  • An optical network unit (hereinafter referred to as “ONU”) 91 or a modem or the like is installed at the user base and is connected to vCPE92.
  • ONU91 etc. provide layer 2 connection (Ethernet etc.) with vCPE92.
  • FIG. 17 is a schematic diagram showing a closed area connection of method 5.
  • vCPE92 is provided in the carrier network as in method 4.
  • ONU91 and the like are installed at the user base.
  • the ONU91 and the like are connected to the vCPE92 and provide a layer 2 connection with the vCPE92.
  • the scheduler 1 causes vCPE92 to listen for a closed connection and instructs the cache cluster 7 to start a closed connection.
  • This method configures a closed connection on demand.
  • the user When the user registers a job in the scheduler 1, the user includes line identification information for identifying the line to which the user storage 6 is connected to the job.
  • the scheduler 1 instructs vCPE92 to listen for a closed connection from the cache cluster 7.
  • the cache cluster 7 receives an instruction from the scheduler 1 and requests a closed connection from the instructed connection destination (vCPE92).
  • vCPE92 the instructed connection destination
  • the replication destination is either the cache cluster 7 or the cluster shared storage 4.
  • the scheduler 1 instructs vCPE92 to release the closed connection.
  • FIG. 18 is a schematic diagram showing a closed area connection of the method 6.
  • vCPE92 is provided in the carrier network as in method 4.
  • a CPE 8 similar to the method 1 is installed at the user base and is connected to the vCPE 92.
  • This method configures a closed connection on demand.
  • the scheduler 1 instructs vCPE92 to start listening to the closed connection request from the cache cluster 7 and CPE8.
  • the scheduler 1 instructs the cache cluster 7 to make a closed connection to vCPE92.
  • the scheduler 1 instructs CPE8 to make a closed connection to vCPE92.
  • the cache cluster 7 replicates the learning target data on the user storage 6 to the GPU cluster system.
  • the replication destination is either the cache cluster 7 or the cluster shared storage 4.
  • the scheduler 1 instructs vCPE92 and CPE8 to release the closed connection.
  • the one deployed in advance may be pooled, and the vCPE92 closest to the user base may be assigned at the start of prefetching the training target data of the job.
  • an instance of vCPE may be deployed at the start of prefetching the training target data of the job.
  • FIG. 19 is a schematic diagram showing a closed connection of the method 7.
  • a closed connection is performed using a gateway device (hereinafter referred to as “GW”) 93 that relays PPPoE or the like in the carrier network to the ISP.
  • GW93 gateway device
  • a connection unit for closed connection with the cache cluster 7 and an API (control unit) corresponding to control from the scheduler 1 are added.
  • a tunneling protocol such as PPPoE or DS-lite is used to connect to an ISP via a relay device in the carrier network.
  • the CPE 8 installed at the user base is a device that terminates these protocols on the subscriber side, and in most cases, a closed connection is always made to the GW93.
  • the scheduler 1 establishes a closed connection between the GW 93 and the cache cluster 7, and causes the GW 93 to relay the communication between the user storage 6 and the cache cluster 7.
  • the communication between the device other than the cache cluster 7 and the CPE 8 is transferred to the tunnel to the ISP as usual, and is set to the Internet access 94.
  • This method configures a closed connection on demand.
  • the scheduler 1 instructs the GW93 to start listening to the closed connection request from the cache cluster 7 when the closed connection is set.
  • the GW93 to be instructed is specified from the line identification information and the like.
  • the scheduler 1 requests the cache cluster 7 to make a closed connection to the GW93.
  • the GW93 relays the communication between the user storage 6 and the cache cluster 7, and the communication path is established.
  • GPU cluster system operation The operation of the GPU cluster system will be described below.
  • FIG. 20 is a sequence diagram showing the operation of the basic GPU cluster system shown in FIG.
  • 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 scheduler 1 authenticates the user using the authentication information, but the authentication process is omitted here.
  • the scheduler 1 When a job is registered, the scheduler 1 confirms the GPU availability (GPU operating status) with the master 2 (S103), and acquires the GPU availability from the master 2 (S104). The scheduler 1 schedules a job using GPU free information and the like (S105), and instructs the master 2 to deploy the job (S106). This deploy instruction includes job definition, storage location of data to be learned, authentication information, and the like. The master 2 instructs the node 3 to deploy the job (S107). This deploy instruction includes job definition, storage location of learning target data, and so on.
  • Node 3 starts job execution and creates a virtual environment for the job (S108). Specifically, the node 3 creates a namespace such as Network namespace and a virtual environment such as a container. Further, the node 3 is set so that the job can access the learning target data. As a result, the storage destination (cluster shared storage 4) of the learning target data becomes accessible from the job.
  • a namespace such as Network namespace
  • a virtual environment such as a container
  • the job starts the learning process (S109) and executes the learning process while accessing the learning target data.
  • the job writes the learning result to the cluster shared storage 4 (S110).
  • the learning results may be written out sequentially or collectively at the end.
  • the job reports the execution completion to the node 3 (S112).
  • Node 3 deletes the virtual environment of the job (S113).
  • the node 3 also deletes the virtual network for the job.
  • the job execution is completed, the node 3 reports the job execution completion to the master 2 (S114).
  • the master 2 reports the job completion to the user as needed. Alternatively, the user may inquire the scheduler 1 or the master 2 about the completion of the job.
  • 21A, 21B and 21C are sequence diagrams showing the operation of the GPU cluster of the present embodiment. These are sequence diagrams when the cache cluster 7 fetches and uses the learning target data uploaded to the cluster shared storage 4.
  • 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 storage location of the learning target data is the cluster shared storage 4 in the case of pre-upload, and the user storage 6 in the case of not pre-uploading.
  • the job registration data includes closed connection information to the user storage 6. The user authentication process in scheduler 1 will be omitted.
  • the “closed connection establishment process” A connects a closed connection or a closed route between the user base and the cache cluster 7 under the control of the scheduler 1.
  • the “cluster storage process of learning target data” B stores the learning target data on the user storage 6 on the cache cluster 7 via a closed connection or a closed route established between the user base and the cache cluster 7. ..
  • the “closed connection release process” C releases the closed connection or closed route established between the user base and the cache cluster 7 under the control of the scheduler 1.
  • the scheduler 1 instructs the cache cluster 7 to prefetch the learning target data (S133). That is, the scheduler 1 instructs to store the learning target data in a predetermined storage location on the cache cluster 7.
  • the cache cluster 7 starts fetching the learning target data on the cluster shared storage 4 (S134).
  • the cache cluster 7 reports the completion of prefetching of the learning target data to the scheduler 1 (S135).
  • the scheduler 1 confirms the GPU availability and the like with the master 2 (S136) and acquires the GPU availability and the like from the master 2 (S137).
  • the scheduler 1 When not fetching all the learning target data, that is, when the job execution is speculatively started without waiting for the cache data of all the learning target data, the scheduler 1 performs the processing that continues without waiting for the completion of the prefetch. Run.
  • the scheduler 1 confirms the GPU availability and the like with the master 2 (S138), and acquires the GPU availability and the like from the master 2 (S139). Further, the scheduler 1 confirms the fetched data amount with the cache cluster 7 (S140), and acquires the fetched data amount from the cache cluster 7 (S141).
  • the scheduler 1 may perform the GPU free state confirmation processing of S138 and S139 and the fetch progress confirmation processing of the learning target data of S140 and S141 in parallel.
  • the scheduler 1 schedules a job using GPU free information and the like (S142), and instructs the master 2 to deploy the job (S143).
  • This deployment instruction includes a job definition, a storage location of learning target data, authentication information such as a user ID, and the like.
  • the master 2 instructs the node 3 to deploy the job (S144).
  • This deploy instruction includes job definition, storage location of learning target data, and so on.
  • Node 3 starts job execution and creates a virtual environment for the job (S145). Specifically, the node 3 creates a namespace such as Network namespace and a virtual environment such as a container. Further, the node 3 is set so that the job can access the learning target data. As a result, the storage destination (cache cluster 7) of the learning target data becomes accessible from the job.
  • a namespace such as Network namespace
  • a virtual environment such as a container
  • the job starts the learning process (S146), performs "data access to the cache cluster in the learning process" D, which will be described later, and executes the learning process while accessing the learning target data.
  • the job writes the learning result to the cache cluster 7 (S147).
  • the cache management unit 72 transparently writes the learning result to the cluster shared storage 4.
  • the job may write the learning result directly to the cluster shared storage 4. In that case, when creating a virtual environment for the job in S145. Set so that the job can access the cluster shared storage 4.
  • the job reports the execution completion to the node 3 (S149).
  • Node 3 deletes the virtual environment of the job (S150).
  • the node 3 also deletes the virtual network for the job.
  • the node 3 reports the job execution completion to the master 2 (S151).
  • the master 2 reports the job completion to the user as needed. Alternatively, the user may inquire the scheduler 1 or the master 2 about the completion of the job.
  • the scheduler 1 confirms the GPU availability status and the job completion status with the master 2 (S152), and acquires these information from the master 2 (S153).
  • the scheduler 1 instructs the cache cluster 7 to delete the cache data or the like of the learning target data (S154).
  • the cache cluster 7 deletes the cache data and the like (S155).
  • the cache cluster 7 executes writing back of the data written from the job to the cluster shared storage 4 in accordance with the deletion process.
  • the cache cluster 7 reports the completion of deletion to the scheduler 1 (S156).
  • 22A, 22B and 22C are sequence diagrams showing the operation of the GPU cluster of the present embodiment.
  • a sequence in which the cache cluster 7 directly fetches and uses the learning target data on the user storage 6 will be described.
  • the user registers the job in scheduler 1 (S161).
  • the job registration data includes a job definition, a storage location of 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 user storage 6.
  • the closed connection information will be described later.
  • the authentication process of scheduler 1 will be omitted.
  • the "closed connection establishment process” A which will be described later, is performed.
  • the “closed connection establishment process” A connects a closed connection or a closed route between the user base and the cache cluster 7 under the control of the scheduler 1.
  • the learning data on the user storage 6 at the user site can be accessed from the cache cluster 7 via the established closed connection or closed route.
  • the scheduler 1 instructs the cache cluster 7 to prefetch the learning target data (S162). That is, the scheduler 1 instructs to store the learning target data in a predetermined storage location on the cache cluster 7.
  • the cache cluster 7 starts fetching the learning target data on the user storage 6 via the closed connection or the closed route (S163). Since the processing of S164 to S171 is the same as the processing of S135 to S141 of FIG. 21B, description thereof will be omitted here.
  • the cache cluster 7 deletes the cache data and the like (S185). When the learning result is temporarily stored, the cache cluster 7 also deletes the learning result. The cache cluster 7 executes writing back of the data written from the job to the cluster shared storage 4 in accordance with the deletion process. The cache cluster 7 reports the completion of deletion to the scheduler 1 (S186).
  • FIG. 23 is a sequence diagram showing the operation of “closed connection establishment process” A.
  • a CPE 8 is arranged at the user base, and a closed connection is established between the CPE 8 and the cache cluster 7. Therefore, when CPE8 does not publish the API, the user sets the part where the scheduler 1 controls CPE8 by the API.
  • CPE8 may replace vCPE deployed within the carrier network.
  • the closed connection information to the user storage 6 included in the job registration data includes "closed connection information with the CPE” and "connection information to the API of the CPE".
  • the closed connection information does not include "CPE connection information to API”. This process will be described below.
  • the scheduler 1 instructs the cache cluster 7 to listen for a closed connection (S191).
  • This instruction includes information on a closed connection with the CPE 8.
  • the cache cluster 7 autonomously controls the acquisition of the learning target data after the closed connection is established, the "storage location of the learning target data" is also passed in the closed connection standby instruction.
  • the cache cluster 7 is set to listen for a closed connection (S192). As a result, the closed connection standby state is established.
  • the cache cluster 7 reports the completion of the closed connection standby process to the scheduler 1 (S193).
  • Information on the closed connection to the cache cluster 7 is generated in S191.
  • CPE8 does not disclose the API and the user sets CPE8, the contract procedure between the user and the business operator before the job registration is performed in advance. It will be decided by negotiation and notified to the user.
  • Scheduler 1 instructs CPE8 to establish a closed connection (S194).
  • the CPE 8 sets a closed connection (S195) and starts a closed connection with the cache cluster 7 (S196).
  • S195 closed connection
  • S196 starts a closed connection with the cache cluster 7
  • CPE8 does not disclose the API
  • job registration from the user and setting for establishing a closed connection to CPE8 by the user are performed asynchronously. Therefore, the process of starting the closed connection is repeatedly executed by CPE8 until the closed connection is established.
  • the cache cluster 7 accepts the closed connection to the CPE 8 (S197). This establishes a closed connection.
  • CPE8 reports the completion of the closed connection to scheduler 1 (S198). After that, the learning target data on the user storage 6 of the user base can be accessed from the cache cluster 7 or the cluster shared storage 4 via the established closed connection.
  • FIG. 24 is a sequence diagram showing the operation of "closed connection release processing" B.
  • CPE8 discloses an API for closed connection control.
  • the API is not open to the public, the user sets the part where the scheduler 1 controls CPE8 by the API.
  • CPE8 may replace vCPE deployed within the carrier network.
  • the closed connection information to the user storage 6 included in the job registration data includes "closed connection information with the CPE” and "connection information to the API of the CPE". However, if CPE8 does not disclose the API and the user sets CPE8, the closed connection information does not include "CPE connection information to API”.
  • a closed connection is established between the CPE 8 and the cache cluster 7 under the control of the scheduler 1. Under the control of the scheduler 1, the cache cluster 7 starts fetching the learning target data. The job is deployed under the control of scheduler 1 and learning is started. As the deployment timing, there are a case where all the learning target data is fetched by the cache cluster 7 and a case where the fetch is continued. The job is completed, and the scheduler 1 detects that the job has been executed. This process will be described below.
  • the information on the closed connection to the cache cluster 7 is as described above in S193 of "Connection processing for closed connection" in FIG. 23.
  • the scheduler 1 instructs the CPE 8 to release the closed connection (S201).
  • the CPE 8 starts releasing the closed connection to the cache cluster 7 (S202).
  • the cache cluster 7 accepts the cancellation of the closed connection to the CPE 8 (S203).
  • the CPE 8 deletes the closed connection (S204) and reports the completion of the cancellation of the closed connection to the scheduler 1 (S205).
  • the scheduler 1 instructs the cache cluster 7 to cancel the standby for the closed connection (S206).
  • This instruction includes information on a closed connection with the CPE 8.
  • the cache cluster 7 deletes the setting for waiting for the closed connection (S207), and reports the cancellation of the waiting for the closed connection to the scheduler 1 (S208).
  • S206-S208 cache cluster closed connection standby release processing precedes S201-S205 (CPE closed connection release processing). May be executed.
  • S202 starting the closed connection release
  • S204 detes the closed connection
  • the cancellation of the closed connection is started in accordance with S207, and the cancellation of the closed connection is accepted from CPE8.
  • FIG. 25 is a sequence diagram showing the operation of “closed connection establishment process” A.
  • CPE8 is arranged at the user base, and GW93 of the carrier network holds a connection interface to CPE8.
  • a closed connection has already been established between CPE8 and GW93 by PPPoE or the like, and by establishing a closed connection between GW93 and cache cluster 7, the GW93 relays the two closed connections.
  • PPPoE or the like PPPoE or the like
  • the GW93 relays the two closed connections.
  • Generate a route Through this closed route, the cache cluster 7 and the cluster shared storage 4 can access the user storage 6 under the CPE 8.
  • the GW93 holds an API for closed connection control.
  • a closed connection has been established between CPE8 and GW93 by PPPoE or the like, and the CPE8 can be connected to the Internet via this closed connection.
  • a job is registered in scheduler 1.
  • the closed connection information to the user storage 6 included in the job registration data includes "line identification information" (used for identifying the GW93 when the CPE 8 is connected). This process will be described below.
  • the scheduler 1 identifies the GW93 to which the CPE8 is connected (S211).
  • the scheduler 1 instructs the GW93 to set the standby for the closed connection and the relay setting for the closed connection (S212).
  • this relay setting after the closed connection with the cache cluster 7 is established, the closed connection between the CPE 8 and the GW 93 and the closed connection between the GW 93 and the cache cluster 7 are relayed by routing, a switch, etc., and the logical CPE 8 and the cache cluster 7 are relayed. It is a setting for generating a closed route between. By using this closed route, the cache cluster 7, the cluster shared storage 4, and the user storage 6 under the CPE 8 can be connected to each other.
  • the GW93 transfers data only destined for the cache cluster 7 or the cluster shared storage 4 to the closed route for the traffic from under the CPE 8. It can be shared with internet connection from under CPE8.
  • the GW93 implements the standby setting for the closed connection and the relay setting for the closed connection (S213). As a result, the standby state of the closed connection and the standby state of the closed connection relay are established.
  • the GW93 reports to the scheduler 1 the completion of the standby setting for the closed connection and the relay setting for the closed connection (S214). This report includes "information on closed connections to GW”.
  • the scheduler 1 instructs the cache cluster 7 to establish a closed connection (S215). This instruction includes "information on closed connection to GW".
  • the cache cluster 7 sets a closed connection (S216) and notifies the GW93 of the start of the closed connection (S217).
  • the GW93 accepts the closed connection to the cache cluster 7 (S218).
  • the closed connection standby state is established.
  • a closed route between the CPE 8 and the cache cluster 7 is established by relaying the closed connection by the GW93.
  • the cache cluster 7 reports the completion of establishment of the closed connection to the scheduler 1 (S219). After that, by going through the established closed route.
  • the learning target data on the user storage 6 of the user base can be accessed from the cache cluster 7 or the cluster shared storage 4.
  • FIG. 26 is a sequence diagram showing the operation of “closed connection release processing” C.
  • a closed connection has been established between the GW93 and the cache cluster 7, and a closed route has been established between the CPE 8 and the cache cluster 7 by the GW93.
  • the closed route between the CPE 8 and the cache cluster 7 is also released.
  • the GW93 holds an API for closed connection control.
  • a closed connection has been established between CPE8 and GW93 by PPPoE or the like, and the CPE8 can be connected to the Internet via this closed connection.
  • a job is registered in scheduler 1.
  • the closed connection information to the user storage 6 included in the job registration data includes "line identification information”.
  • a closed connection is established between the GW 93 and the cluster shared storage 4 under the control of the scheduler 1.
  • the GW93 establishes a closed route between the CPE 8 and the cache cluster 7.
  • the cache cluster 7 starts fetching the learning target data.
  • the job is deployed and learning is started under the control of the scheduler 1.
  • the deployment timing includes a case where all the learning target data is fetched by the cache cluster 7 and a case where the fetch is continued. This process will be described below.
  • Scheduler 1 instructs CPE8 to release the closed connection (S231).
  • This instruction includes "information on closed connection to GW93".
  • the cache cluster 7 starts releasing the closed connection with the GW93 (S232).
  • the GW93 accepts the cancellation of the closed connection to the cache cluster 7 (S233).
  • the cache cluster 7 deletes the closed connection (S234) and reports the completion of the cancellation of the closed connection to the scheduler 1 (S235).
  • the scheduler 1 instructs the GW93 to delete the closed connection standby setting and the closed connection relay setting (S236).
  • the GW93 deletes the closed connection standby setting and deletes the closed connection relay setting (S237).
  • GW93 reports the completion of deletion of S237 to scheduler 1 (S238).
  • FIGS 27 and 28 are sequence diagrams showing "cluster storage process of learning target data" B.
  • the learning target data on the user storage 6 is stored on the cluster shared storage 4.
  • the cache cluster 7 reads a block of data to be learned in the user storage 6 and repeatedly writes (replicates) the block on the cluster shared storage 4.
  • the block is a part of the data to be learned, and represents, for example, a set of one or more files, or a part of a file having a certain size.
  • a closed connection or a closed route is established between the cache cluster 7 and the CPE 8, and the cache cluster 7 accesses the learning target data of the user storage 6 via either of them. Further, when the cache cluster 7 detects the establishment of a closed connection or a closed route, the cache cluster 7 autonomously starts the storage process.
  • CPE8 may replace vCPE located in the carrier network.
  • a job is registered in scheduler 1.
  • a closed connection or a closed route is established between the CPE 8 and the cache cluster 7.
  • the cache cluster 7 is passed the "learning target data storage location" from the scheduler 1 to the cache cluster 7 in the closed connection or closed route establishment process. This process will be described below.
  • the cache cluster 7 With the establishment of the closed connection as an opportunity, the cache cluster 7 reads the learning target data from the user storage 6 in block units (S251) via the closed connection or the closed route, and reads the read block unit learning target data into the cluster shared storage 4. Write to (S252). The cache cluster 7 repeats S251 and S252 until all the learning target data is stored in the cluster shared storage 4. After storing all the learning target data, the cache cluster 7 notifies the scheduler 1 of the completion of acquisition of the learning target data (S253). This notification includes the storage location of the learning target data on the cluster shared storage 4.
  • the cache cluster 7 instructs the cluster shared storage 4 to acquire the learning target data on the user storage 6. Since the preconditions and the like are the same as those in FIG. 27, description thereof will be omitted here. This process will be described below.
  • the cache cluster 7 instructs the user storage 6 to acquire the learning target data when the closed connection is established (S271).
  • This instruction includes a "storage location of learning target data”.
  • the cluster shared storage 4 acquires learning target data from the user storage 6 via a closed connection or a closed route (S272). As a result, the learning target data of the user storage 6 is stored in the cluster shared storage 4 via the closed connection or the closed route.
  • the cluster shared storage 4 reports the completion of acquisition of the learning target data to the scheduler 1 (S273). This report includes the storage location of the learning target data on the cluster shared storage 4.
  • FIG. 29 is a sequence diagram showing "data access processing to the cache cluster in the learning process" D.
  • the job is speculatively deployed and learning is started before the cache (fetch) of the learning target data to the cache cluster 7 is completely completed.
  • the learning target data to be cached by the cache cluster 7 is stored in the user storage 6 or the cache cluster 7.
  • a job is registered in scheduler 1. Under the control of the scheduler 1, the cache cluster 7 starts caching the learning target data. The job is deployed. The learning target data of the cache cluster 7 can be accessed from the job. The job starts the learning process (S291). The job performs the learning process while accessing the learning target data. This process will be described below.
  • the job requests the cache cluster 7 to read the learning target data in block units (S292).
  • a cache miss occurs (S293), the cache cluster 7 performs transparent connection to the learning target data (S294, S295) and prefetching of the learning target data (S296) in parallel processing.
  • a cache miss refers to a state in which a requester (such as a job using the cache cluster 7) tries to read / write uncached data among the data cached by the cache cluster 7. Since the data does not exist, the data cannot be immediately responded to the requester.
  • the cache cluster 7 requests the cache target data from the origin while waiting for the request source, creates the cache data, and then responds to the request source.
  • the cache cluster 7 acquires the learning target data of the cache missed block from the origin (S294) and returns the learning target data of the acquired block to the job (S295).
  • the cache cluster 7 returns the data to the job while accessing the original data of the learning target data at the time of a cache miss. This allows the job to transparently access the origin of the data to be trained while hiding the occurrence of cache misses.
  • the data input process may be speeded up by not caching.
  • the learning target data several blocks ahead is read ahead and cached (S296).
  • the cache cluster 7 accesses the origin of the learning target data and returns the response to the job, and starts caching several blocks ahead in parallel for the block of the learning target data to be read by the job in the future. ..
  • the cache miss is made temporary, the occurrence of the subsequent cache miss is reduced, and the data input / output process is speeded up.
  • FIGS. 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 in several files (dumps).
  • Job checkpoint processing is implemented using, for example, CRIU (https://www.criu.org/Main_Page, https://github.com/checkpoint-restore/criu).
  • a cache error is allowed when the job reads the learning target data from the cache cluster 7. Specifically, when a cache miss occurs, the occurrence is detected and the job is checkedpoint. In this process, the job is speculatively deployed and learning is started before the fetch of the learning target data to the cache cluster 7 is completely completed.
  • the learning target data to be cached by the cache cluster 7 is stored in the user storage 6 or the cache cluster 7.
  • node 3 mounts the volume on the cache cluster 7 as a storage location for job dumps.
  • the storage location of the job dump may be on the cluster shared storage 4.
  • a job is registered in scheduler 1. Under the control of the scheduler 1, the cache cluster 7 starts caching the learning target data. The job is deployed. The learning target data of the cache cluster 7 can be accessed from the job. The job starts the learning process (S311). The job performs the learning process while accessing the learning target data. This process will be described below.
  • the cache cluster 7 detects continuous cache misses equal to or higher than a predetermined threshold value (S312), and notifies the scheduler 1 of the occurrence of the cache misses (S313).
  • the threshold value is arbitrarily determined by the cluster administrator. An appropriate value can be determined for the threshold value from the block size, communication speed, and the like.
  • the job detects the cache miss due to a decrease in the storage IO bandwidth (S314) and notifies the scheduler 1 of the occurrence of the cache miss (S315).
  • the node 3 reports the storage IO bandwidth of the job, the GPU usage rate, etc. to the master 2 (S316).
  • the scheduler 1 inquires the master 2 of the job status (S317).
  • the master 2 responds with the status of the job reported from the node 3 (S318).
  • the scheduler 1 detects the occurrence of a cache miss by confirming from the job status that the storage IO bandwidth of the job has decreased and that the GPU is almost unused.
  • the scheduler 1 When the scheduler 1 detects the occurrence of a cache miss, it instructs the master 2 to checkpoint the job (S319), and the master instructs the node 3 to checkpoint the job (S320). Node 3 checkspoint the job (S321). That is, the node 3 stores the dump of the job on the cache cluster 7. Node 3 mounts the cache cluster 7 in advance. A job checkpoint puts the job in a suspended state (suspended state). On the other hand, the prefetch of the uncached portion of the learning target data by the cache cluster 7 is continued.
  • Node 3 reports the completion of the job checkpoint to the master 2 (S322), and the master 2 reports the completion of the job checkpoint to the scheduler 1 (S323). This report includes the location of the job dump. Then, the "job restore process" E, which will be described later, is performed.
  • FIG. 31 is a sequence diagram showing another “job checkpoint processing”.
  • a cache error when the job reads the learning target data from the cache cluster 7 is prevented.
  • the occurrence of a cache miss is detected in advance, and the job is checkedpoint. Since the premise of this process is the same as that of FIG. 30A, the description thereof is omitted here. This process will be described below.
  • the cache cluster 7 When the job starts learning (S331), the cache cluster 7 starts monitoring the cache usage status. The generation of the cache is detected in advance from the transition between the cached learning target data amount and the data amount read by the job (S332). The cache cluster 7 notifies the scheduler 1 in advance of a cache miss occurrence (S333). The scheduler 1 instructs the master 2 to checkpoint the job (S334), and the master instructs the node 3 to checkpoint the job (S335). Node 3 checkspoint the job (S336). That is, the node 3 stores the job dump on the cache cluster 7 mounted in advance. A job checkpoint puts the job in a paused state. On the other hand, the prefetch of the uncached portion of the learning target data by the cache cluster 7 is continued.
  • Node 3 reports the completion of the job checkpoint to the master 2 (S337), and the master 2 reports the completion of the job checkpoint to the scheduler 1 (S338). This report includes the location of the job dump. Then, the "job restore process" E, which will be described later, is performed.
  • 32A, 32B and 32C are sequence diagrams showing "restore job” E. This process is the process from when the job is checkedpoint until the job resumes execution.
  • Job restoration is a process of restoring a job from a dump of a checked job and restarting the operation. Job restoration is realized using, for example, CRIU (https://www.criu.org/Main_Page, https://github.com/checkpoint-restore/criu).
  • node 3 mounts the volume on the cache cluster 7 as a storage location for job dumps.
  • the storage location of the dump may be on the cluster shared storage 4.
  • a job is registered in scheduler 1. Under the control of the scheduler 1, the cache cluster 7 starts caching the learning target data. The job is deployed. The learning target data of the cache cluster 7 can be accessed from the job. The job starts the learning process (S351). The job performs the learning process while accessing the learning target data.
  • the scheduler 1 checkspoint the job, the job execution is temporarily stopped. Even after the job is stopped, prefetching of the uncached portion of the training target data continues. This process will be described below.
  • the scheduler 1 queries the cache cluster 7 for the amount of cache data at the time of checkpoint, the cache speed of the cache cluster 7, and the amount of data to be learned (S356). (S357).
  • the data amount of the learning target data may be acquired from the user at the time of job registration.
  • the cache rate of the cache cluster 7 indicates the data input throughput when the cache cluster 7 caches the data to be learned.
  • the scheduler 1 calculates the waiting time candidate 1 (S358). Specifically, the scheduler 1 calculates the time until the cache data amount exceeds the threshold value as the time candidate 1 from the cache data amount and the cache speed at the checkpoint.
  • the scheduler 1 calculates the waiting time candidate 2 (S359). Specifically, the scheduler 1 calculates the time until all the learning target data is cached as the time candidate 2 from the cache data amount and the cache speed at the checkpoint.
  • the scheduler 1 compares the waiting candidate time 1 and the waiting candidate time 2 and waits for the shorter time (S360).
  • the scheduler 1 instructs the cache cluster 7 of the required amount of cache data (S361).
  • the cache cluster 7 caches the uncached portion of the learning target data (S362), and notifies the scheduler 1 when the instructed amount of data is cached (S363).
  • Scheduler 1 registers the checked suspend job in RQ23 (S364).
  • the scheduler 1 inquires of the master 2 about the availability status of the GPU (S365) and acquires it (S366). If there is free space on the GPU, the scheduler 1 schedules a job (S367). Specifically, the scheduler 1 schedules the job of RQ23 with priority over the normal job of DQ24.
  • the scheduler 1 instructs the master 2 to restore the job (S368), and the master 2 instructs the node 3 to restore the job (S369).
  • This instruction includes the location of the dump.
  • Node 3 executes job restore (S370) and resumes job execution (S371). For example, a virtual environment such as Network namespace is restored, and the learning process is restored to a state where it can be restarted from the situation at the time of checkpoint. Node 3 resumes the learning process (S372).
  • the scheduler 1 in the GPU cluster system of the present embodiment described above has a first queue selector 11 that stores the submitted jobs in the first stage queue 13-15 that stores jobs waiting to start fetching, and a first stage queue.
  • the first job selector 12 that takes out the jobs 13-15, registers them in the fetching job list 30, and starts fetching the data of the job stored in the storage 4 to the cache cluster 7, and the fetched data amount are predetermined. Jobs that exceed the threshold value of are fetched from the fetching job list 30, and jobs are selected from the second queue selector 21 and the second stage queue 23-25, which are stored in the second stage queue 23-25 that stores jobs waiting to be deployed.
  • It has a second job selector 22 that takes out and instructs the deployment of the job, the cache cluster 7 is specified as the storage location of the data of the job in the deployment instruction of the job, and the GPU cluster is set to the cache cluster 7. Access and execute the job.
  • the present embodiment it is possible to reduce the idle time of the GPU caused by insufficient storage speed and improve the operating rate of the GPU. That is, it is possible to speed up the reading of data such as learning target data, and it is possible to increase the operating rate of the GPU by the provider of the GPU cluster system.
  • the job before execution is registered in the fetching job list 30, and the cache cluster 7 is started to prefetch data.
  • the GPU can be used efficiently by prefetching data in parallel with the execution of the job by the GPU.
  • the GPU operating rate can be improved by suspending the job when the GPU is idle due to waiting for data and transferring the GPU to another job.
  • a general-purpose computer system as shown in FIG. 33 can be used.
  • the computer system shown is a CPU (Central Processing Unit, processor) 901, a memory 902, a storage 903 (HDD: Hard Disk Drive, SSD: Solid State Drive), a communication device 904, an input device 905, and an output device. 906 and.
  • the memory 902 and the storage 903 are storage devices.
  • each function of the scheduler 1 is realized by executing a predetermined program loaded on the memory 902 by the CPU 901.
  • the scheduler 1 may be implemented on one computer, or may be implemented on a plurality of computers. Further, the scheduler 1 may be a virtual machine mounted on a computer.
  • the program for scheduler 1 can be stored in a computer-readable recording medium such as HDD, SSD, USB (Universal Serial Bus) memory, CD (Compact Disc), DVD (Digital Versatile Disc), or distributed via a network. You can also do it.
  • a computer-readable recording medium such as HDD, SSD, USB (Universal Serial Bus) memory, CD (Compact Disc), DVD (Digital Versatile Disc), or distributed via a network. You can also do it.

Abstract

スケジューリング方法であって、スケジューラ1は、投入されたジョブをフェッチ開始待ちのジョブを格納する第1ステージキュー13-15に格納するステップと、第1ステージキュー10のジョブを取り出してフェッチングジョブリスト30に登録し、前記ジョブのデータのフェッチをキャッシュクラスタ7に開始させるステップと、フェッチしたデータ量が所定の閾値を超えたジョブをフェッチングジョブリスト30から取り出しデプロイ待ちのジョブを格納する第2ステージキュー12-25に格納するステップと、第2ステージキュー20からジョブを取り出し、当該ジョブのデプロイを指示するステップと、を行う。

Description

スケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラム
 本発明は、スケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムに関する。
 GPU(Graphics Processing Unit)は、高精細な画像や動画のレンダリングなどに必要な計算処理を行うハードウェアである。近年、GPUは、機械学習(Machine Learning)などの演算器として用いられている。また、複数のGPUをクラスタ化したGPUクラスタの開発も行われている。コンテナ型のGPUクラスタを管理するオープンソース・ソフトウェアとしてKubernetesが存在する(非特許文献1)。
Kubernetes、[online]、インターネット<URL: https://github.com/kubernetes/kubernetes> Kubernetes、[online]、インターネット<URL: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/>
 従来のGPUクラスタでは、ストレージにアップロードされた学習対象などのデータを読み出しながら機械学習処理などが行われる。GPUの処理速度は高速であるが、これに比べてストレージの処理速度は遅い。このため、ジョブが確保したGPUに、データの読み出し待ちによる遊休時間が発生してしまう。
 本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、GPUの遊休時間を低減し、GPUの稼働率を向上させるスケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムを提供することにある。
 上記目的を達成するため、本発明の一態様は、GPUクラスタシステムが行うスケジューリング方法であって、スケジューラは、投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納するステップと、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、前記ジョブのデータのフェッチをキャッシュクラスタに開始させるステップと、フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納するステップと、第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示するステップと、を行い、前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納するステップを行い、GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行するステップを行う。
 本発明の一態様は、GPUクラスタシステムにおけるスケジューラであって、投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納する第1キューセレクタと、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる第1ジョブセレクタと、フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納する第2キューセレクタと、第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示する第2ジョブセレクタと、を有し、前記ジョブのデプロイ指示には、前記ジョブのデータの格納場所として前記キャッシュクラスタが指定され、GPUクラスタは前記キャッシュクラスタにアクセスして前記ジョブを実行する。
 本発明の一態様は、スケジューラと、キャッシュクラスタと、GPUクラスタとを備えるGPUクラスタシステムであって、前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納し、前記GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行する。
 本発明の一態様は、上記スケジューラとして、コンピュータを機能させるプログラムである。
 本発明によれば、GPUの遊休時間を低減し、GPUの稼働率を向上させるスケジューリング方法、スケジューラ、GPUクラスタシステムおよびプログラムを提供することができる。
基本的なGPUクラスタシステムの構成図である。 ユーザストレージにアクセスする図1のGPUクラスタシステムの構成図である。 本実施形態のGPUクラスタシステムの構成図である。 キャッシュクラスタの構成図である。 スケジューラの構成図である。 第1キューセレクタの処理を示すフローチャートである。 第1ジョブセレクタの処理を示すフローチャートである。 第2キューセレクタの処理を示すフローチャートである。 第2ジョブセレクタの処理を示すフローチャートである。 実施例1のGPUクラスタの構成図である。 実施例2のGPUクラスタの構成図である。 実施例3のGPUクラスタの構成図である。 方式1の閉域接続を示す模式図である。 方式2の閉域接続を示す模式図である。 方式3の閉域接続を示す模式図である。 方式4の閉域接続を示す模式図である。 方式5の閉域接続を示す模式図である。 方式6の閉域接続を示す模式図である。 方式7の閉域接続を示す模式図である。 基本的なGPUクラスタシステムの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 本実施形態のGPUクラスタの動作を示すシーケンス図である。 方式2の「閉域接続の確立処理」を示すシーケンス図である。 方式2の「閉域接続の解除処理」を示すシーケンス図である。 方式7の「閉域接続の確立処理」を示すシーケンス図である。 方式7の「閉域接続の解除処理」を示すシーケンス図である。 「学習対象データのクラスタ格納処理」を示すシーケンス図である。 「学習対象データのクラスタ格納処理」を示すシーケンス図である。 「学習処理におけるキャッシュクラスタへのデータアクセス処理」を示すシーケンス図である。 「ジョブのチェックポイント処理」を示すシーケンス図である。 「ジョブのチェックポイント処理」を示すシーケンス図である。 「ジョブのチェックポイント処理」を示すシーケンス図である。 「ジョブのリストア処理」を示すシーケンス図である。 「ジョブのリストア処理」を示すシーケンス図である。 「ジョブのリストア処理」を示すシーケンス図である。 ハードウェア構成図である。
 以下、本発明の実施の形態について、図面を参照して説明する。
 (GPUクラスタシステムの基本構成)
 図1は、基本的なGPUクラスタシステムの概略構成を示す構成図である。図示するGPUクラスタシステムは、GPUを用いた学習処理を実行するためのGPU学習クラスタシステムである。
 クラスタ提供事業者(以下、「事業者」という)は、GPUクラスタを用いて学習処理を代行する設備をユーザ(利用者)に提供する。ユーザは、高価なGPUを保有せずに、GPUクラスタの利用時間等に応じて従量課金された金額を事業者に支払う。機械学習等の学習処理は一度実行すれば良いため、ユーザは、高価なGPUを購入するよりも、従量課金された金額を支払う方が低コストとなる。
 一方、GPUの稼働率を高めることが、事業者の利益最大化のポイントとなる。そのため、GPUクラスタシステムでは、多様なジョブ(Job)を実行できること(すなわちジョブの仮想化)、ジョブのデプロイが高速であることなどが求められる。
 図1を参照して基本的なGPUクラスタの動作概要を説明する。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のクラスタを用いる。ユーザ端末5は、ユーザの指示により、GPUクラスタを提供する事業者から指示されたクラスタ共有ストレージ4Aに学習対象となるデータ等を格納する(S1A)。ユーザ端末5は、ユーザの指示により、実施したい学習処理のジョブをスケジューラ1Aに登録する(S2A)。スケジューラ1Aは、複数のユーザ端末5から受け取ったジョブを優先順位、想定処理時間などを踏まえてスケジューリングし、 GPUリソースが確保でき次第マスタ2Aにジョブの実行を指示する(S3A)。
 マスタ2Aは、ジョブをノードにデプロイし、GPUをアタッチし、GPUに学習処理を実行させる(S4A)。すなわち、マスタ2Aは、ジョブ毎に学習・推論のプログラムを実行するための仮想環境を生成し、GPUをアタッチする。マスタ2Aは、ジョブが完了したらGPUを開放する。GPUは、予めクラスタ共有ストレージ4Aにアップロードされた学習対象データを読み出しながら学習処理を行い、学習処理の結果をクラスタ共有ストレージ4Aに格納する(S5A)。ユーザは、自身のジョブの実行が終了すると、クラスタ共有ストレージ4Aにアクセスすることで、学習処理の実行結果を取得することができる。
 図1に示す基本的なGPUクラスタシステムの場合、下記のような想定状況および制約条件に対応することが難しい。
 (1)学習プログラムの処理速度よりもストレージの速度(データ転送速度)が遅い場合、S5Aの処理において、ストレージの速度不足によりジョブが確保したGPUに遊休時間が発生する。ビッグデータは、Cephなどを用いた大容量分散ストレージであるクラスタ共有ストレージ4に、無加工またはほぼ無加工で格納される。分散ストレージは、分散並列化の効果で大容量化しても低速化しないことが特徴であるが、劇的に高速化するわけではなく、高々 数百MB/s の性能である。
 GPUの処理速度に匹敵する高速なストレージは極めて高価であるため、ビッグデータすべてを格納できる容量の高価なストレージは用意できない。一方、ビッグデータ全体が同時に必要になることはない。
 (2)学習対象データを纏まった状態でクラスタ共有ストレージ4にアップロードできない、または、学習対象データが巨大過ぎて、全ての学習対象データをアップロードするのが現実的ではない場合がある。
 このような場合、図2に示すように、ユーザ端末5は、ユーザ拠点のユーザストレージ6Aに学習対象データを格納し(S1A’)、ノード3Aのジョブは、ユーザストレージ6Aに閉域接続し、ユーザストレージ6Aに直接アクセスする(S5A’)。しかしながら、ユーザストレージ6Aからノード3Aまでの通信区間があり、また、ユーザストレージ6Aの速度が遅いことにより、学習プログラムの処理速度よりもデータ転送速度が遅くなり、GPUの遊休時間が発生する。
 (3) GPUを効率的に稼働させるために、データの蓄積と学習処理とを並行して実行させたい場合がある。
 このような状況に対応可能な本実施形態のGPUクラスタシステムについて、以下に説明する。
 (本実施形態のGPUクラスタシステム)
 図3は、本実施形態のGPUクラスタシステムの概略構成を示す構成図である。本実施形態のGPUクラスタシステムは、GPUを用いて学習処理を実行するためのGPU学習クラスタシステムである。学習処理は、学習対象データを読み込んで、機械学習等の処理を行うことである。この際、学習対象データの全てを一括で読み込むのではなく、ブロック単位やファイル単位などに分けて順々に読み込みながら学習処理を行う。
 図示するGPUクラスタシステムは、スケジューラ1と、マスタ2と、ノード3と、クラスタ共有ストレージ4と、キャッシュクラスタ7とを備える。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のGPUクラスタを用いる。ユーザ拠点では、ユーザが学習対象データを格納するユーザストレージ6を備えていてもよい。
 本実施形態のGPUクラスタシステムは、高コストで高速なキャッシュクラスタ7(キャッシュ)を備え、スケジューラ1は、キャッシュクラスタ7とGPUとを同時にスケジュールする。大容量データは、通常時には低コストで低速なストレージ(クラスタ共有ストレージ4、ユーザストレージ6)に格納しておき、ジョブの実行の際にデータをキャッシュクラスタ7に格納する。これにより、本実施形態では、GPUは、高速なキャッシュクラスタ7からデータを読み出すため、GPUがデータ読み出し待ちで遊休してしまう事態を回避することができる。
 スケジューラ1(Scheduler)は、ユーザ端末5から投入されるジョブ(Job)を受け付ける。スケジューラ1は、GPUクラスタ内のGPUリソースの空き状況を監視し、空きがあれば、ジョブのデプロイ(実行環境に展開すること)をマスタ2に指示する。すなわち、スケジューラ1は、ジョブの実行をマスタ2に指示する。
 マスタ2(Master)は、ノード3(Node)の管理と、ジョブのデプロイを行う。マスタ2は、スケジューラ1からジョブのデプロイが指示されると、ノード3上にジョブに定義されたコンテナ等の仮想環境を構築し、仮想環境でジョブに定義されているプログラムを実行させる。マスタ2は、ジョブに定義されたプログラムが完了すると、仮想環境を削除する。
 ノード3(Node)には、複数のGPUがプールされている。GPUは、マスタ2にアタッチされるとジョブを実行する。ジョブは、ユーザが実行したいプログラム(例えば、学習、推論のプログラム)と、プログラムの実行環境とを定義したものである。具体的には、ジョブには、実行すべき1以上のプログラムと、その順序とが含まれる。また、ジョブには、プログラムを実行するための環境(仮想環境、ランタイム、OS、ディストリビューション、ライブラリ等)が含まれる。例えば、ジョブには、環境として、コンテナのイメージファイル名、VM(Virtual Machine)のイメージファイル名などが含まれる。また、必要があれば、ジョブは、上記環境を自動的に構築するための手順を含み、ジョブが自動で実行環境のイメージを生成してもよい。本実施形態のジョブはメインコンテナ(Main Container)を含み、メインコンテナ以外のコンテナを含んでもよい。メインコンテナは、本実施形態の学習プログラムを実行する仮想環境のコンテナである。なお、本実施形態では、仮想環境の実現形態としてコンテナを用いるが、VMでもよい。
 クラスタ共有ストレージ4(Cluster Shared Storage)は、データを格納するストレージシステムである。例えば、クラスタ共有ストレージ4には、学習対象データと、実行結果とが格納される。ジョブの仮想環境からクラスタ共有ストレージ4にアクセスできる。ユーザは、直接的または間接的に何らかの手段でクラスタ共有ストレージ4に、ジョブが読み込む学習対象データを格納できる。クラスタ共有ストレージ4では、大量の学習対象データを格納するため、例えばCeph、GlusterFS、Swift、RAID等のストレージ技術の利用が想定される。Ceph(https://ceph.io/)およびGlusterFS(https://www.gluster.org/)は、オープンソースの分散ストレージソフトウェアである。
 キャッシュクラスタ7(Cluster Shared Storage)については、後述する。
 次に、図3を参照して、本実施形態のGPUクラスタシステムの動作概要を説明する。ここでは、GPUリソースをジョブの実行毎に割り当てるコンテナ型のクラスタを用いる。
 本実施形態では、キャッシュクラスタ7がクラスタ共有ストレージ4またはユーザストレージ6からデータをフェッチする。なお、データを読み出す「フェッチ」は、以降において「キャッシュ」ともいう。
 ユーザ端末5は、ユーザの指示により、GPUクラスタシステムを提供する事業者から指示されたクラスタ共有ストレージ4またはユーザストレージ6に学習対象データ等を格納する(S1)。ユーザ端末5は、ユーザの指示により、実施したい学習処理のジョブをスケジューラ1に登録する(S2)。スケジューラ1は、キャッシュクラスタ7にデータをキャッシュするように指示する(S3)。キャッシュクラスタ7は、クラスタ共有ストレージ4またはユーザストレージ6から学習対象データのフェッチを開始する(S4)。スケジューラ1は、複数のユーザ端末5(ユーザ)から受け取ったジョブを登録順序、優先順位、必要リソース量(GPU数、CPU数など)、想定処理時間などを踏まえてスケジューリングし、 GPUリソースが確保でき次第、マスタ2にジョブの実行を指示する(S5)。必要リソース量は、ユーザが事前にジョブのメタデータに含めてスケジューラ1に通知してもよく、または、スケジューラ1がジョブの内容から推定してもよい。
 マスタ2は、ジョブをノードにデプロイし、GPUをアタッチし、キャッシュクラスタ7のキャッシュ領域をマウントして、GPUにジョブの学習処理を実行させる(S6)。すなわち、マスタ2は、ジョブ毎に学習・推論のプログラムを実行するための仮想環境を生成し、GPUをアタッチする。マスタ2は、ジョブが完了したらGPUを開放する。GPUは、キャッシュ領域にキャッシュされた学習対象のデータを読み出しながら学習処理を行い、学習処理の結果をキャッシュクラスタ7またはクラスタ共有ストレージ4に格納する(S7)。ユーザは、自身のジョブの実行が終了すると、キャッシュクラスタ7またはクラスタ共有ストレージ4にアクセスすることで、学習処理の実行結果を取得することができる。スケジューラ1は、ジョブの終了後にキャッシュ領域のデータを削除する(S8)。
 図4は、キャッシュクラスタ7の構成図である。図示するキャッシュクラスタ7は、VPN接続部71(VPN Function)と、キャッシュ管理部72(Cache Manager)と、1以上のストレージ73(Storage)とを備える。
 VPN接続部71は、閉域接続を開始または待受し、閉域接続を確立する。
 キャッシュ管理部72は、1以上のストレージ73をまとめてクラスタを構成する。キャッシュ管理部72は、オリジン(原本)となるストレージ(クラスタ共有ストレージ4、ユーザストレージ6)に対してファイル共有プロトコル等を用いてアクセスし、オリジンが持つデータをキャッシュしつつ要求元にデータを共有する透過的なキャッシュ機能を有する。要求元が、キャッシュクラスタ7にデータを要求すると、キャッシュ管理部72が要求されたデータがキャッシュ済みか否かを判断する。キャッシュ済みであれば当該データを要求元に返す。キャッシュ済みでなければ、オリジンとなるストレージにデータを要求し、オリジンとなるストレージから渡されたデータを要求元に返す。キャッシュ管理部72は、クラスタ共有ストレージ4およびユーザストレージ6を操作する機能を有する。
 ストレージ73は、オリジンとなるストレージからキャッシュしたデータを格納する。ストレージ73には、NVMe、NVDIMMなどの高速なストレージを使用する。なお、VPN接続部71は、キャッシュクラスタ7に内包されず、キャッシュクラスタ7から独立してGPUクラスタシステムに存在してもよい。また、キャッシュクラスタ7は、クラスタ共有ストレージ4を内包してもよい。
 図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使用量を監視する。
 第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の処理は後述する。
 第1ジョブセレクタ12は、第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる。本実施形態では、第1ジョブセレクタ12は、ジョブキュー13-15に格納されたジョブを優先度等に従って取り出し、フェッチングジョブリスト30に登録する。また、第1ジョブセレクタ12は、アカウントDB31にユーザの現時点のGPUの使用量を問い合わせ、ユーザの現時点の使用量に応じて、公平性割当量またはユーザ割当量を超過したジョブを対応するジョブキューに再配置する。第1ジョブセレクタ12の処理は後述する。
 第1ステージのジョブキューには、ジョブキュー13(Job Queue (以下、「JQ」))と、公平性超過ジョブキュー14(Over Fairness-quota Job Queue (以下「OFJQ」))と、ユーザ超過ジョブキュー15(Over User-quota Job Queue (以下、「OUJQ」))とが含まれる。
 JQ13には、公平性割当量およびユーザ割当量を超えていないジョブが格納される。JQ13は、ジョブのクラス(優先度)k毎に設けられる。ここでは、クラスkは1≦k≦nとし、最も高い優先度のクラスはk=1とし、最も低い優先度のクラスはk=nとする。クラスkのJQ13は、「JQ k」と記載する場合もある。
 OFJQ14には、公平性の観点から各ユーザに割り当てられたGPUの公平性割当量(quota)を超えたジョブが格納される。この公平性の割当量は、1人のユーザがGPUを独占し、他のユーザがGPUを使用できない状態を防止し、各ユーザにGPUを公平に割り当てるために、事業者が各ユーザのGPU使用量の上限を定めたものである。割当量は、例えば1か月などの所定期間の割当量である。OFJQ14は、JQ13と同様にジョブのクラスk 毎に設けられ、kは1≦k≦nとする。クラスkのジョブキュー14は、「OFJQ k」と記載する場合もある。
 OUJQ15には、ユーザが設定したGPUのユーザ割当量を超えたジョブが格納される。このユーザ割当量は、GPUの使用料金を予算内に抑えるために、ユーザが自身のGPU使用量の上限を定めたものである。割当量は、例えば1か月などの所定期間の割当量である。OUJQ15に格納されたジョブは、デプロイおよびフェッチされない。ユーザ割当量が変更されるか、あるいは、現在の使用量が更新された場合、第1ジョブセレクタ12は、OUJQ15の先頭からジョブを取り出し、第1キューセレクタ11は当該ジョブを対応するクラスのジョブキュー13に振り分ける。現在の使用量が更新される場合は、例えば、月毎の使用量の上限を定めている場合、翌月となって使用量が0に更新される場合などである。
 第1ジョブセレクタ12は、JQ13のジョブをOFJQ14のジョブより優先的にFJL30に登録する。
 FJL30は、データのフェッチを開始するジョブが登録されるリストである。キャッシュクラスタ7は、FJL30に登録されたジョブをフェッチ(プリフェッチ)する。第1ジョブセレクタ12は、ジョブをFJL30に登録した後に、FJL30に追加されたジョブのフェッチの開始をキャッシュクラスタ7に指示してもよい。キャッシュクラスタ7は、定期的にFJL30をチェックし、新たなジョブが登録されると当該ジョブのフェッチを開始してもよい。フェッチされたデータ量が所定の閾値を超えたジョブは、第2ステージキュー20に移される。閾値については、後述する。FJL30には、サスペンド状態のジョブが登録されてもよい。
 第2ステージキュー20には、デプロイ待ち状態のジョブが格納される。第2ステージキュー20は、第2キューセレクタ21(Queue Selector 2)と、複数のジョブキュー23-25と、第2ジョブセレクタ22(Job Selector 2)とを備える。
 第2キューセレクタ21は、フェッチしたデータ量が所定の閾値を超えたジョブをFJL30から取り出し、第2ステージキュー20のいずれかのキュー23-25に格納する。第2キューセレクタ21の処理は後述する。第2ジョブセレクタ22は、第2ステージキュー20のいずれかのキュー23-25からジョブを取り出し、当該ジョブのデプロイを指示する。
 第2ステージのジョブキューには、リストアキュー23(Restore Queue(以下、「RQ」))と、デプロイキュー24(Deploy Queue(以下「DQ」))と、公平性超過キュー25(Over Fairness-quota Deploy Queue(以下 (OFDQ))とが含まれる。
 RQ23には、フェッチしたデータ量が閾値を超えたリストア待ちのジョブが格納される。DQ24には、フェッチしたデータ量が閾値を超えたデプロイ待ちのジョブが格納される。OFDQ25には、フェッチしたデータ量が閾値を超えたジョブのうち、当該ジョブのユーザ(ジョブ所有者)の現在のGPU使用量が公平性割当量を超えているジョブが格納される。公平性割当量を超えたジョブは、GPUに空きがあり、他のジョブ(RQ23およびDQ24のジョブ)がない場合にデプロイ対象となる。他のジョブがある場合は、他のジョブが優先される。翌月となりユーザの使用量が0にリセットされるなどして、超過状態が解消された場合、OFDQ25の先頭のジョブから取り出してRQ23またはDQ24に格納される。
 第2ジョブセレクタ22は、RQ23のジョブをDQ24のジョブより優先的にデプロイ指示し、DQ24のジョブをOFDQ25のジョブより優先的にデプロイ指示する。また、第2ジョブセレクタ22は、RQ23、DQ24の全てが空の場合、第2キューセレクタ21を起動し、第2キューセレクタ21にFJL30の先頭のジョブ、またはFJL30の中でフェッチしたデータ量が最も多いジョブを、RQ23、DQ24およびOFDQ25のいずれかに格納させてもよい。また、RQ23からジョブを取り出す際は、短期間でリストアとサスペンドを繰り返してしまわないように、サスペンド直後のジョブは一定時間または一定量フェッチが行われるまでデプロイ指示の対象外としてもよい。
 FJL30からジョブを取り出す際のフェッチ済みデータ量の閾値は、例えば以下の方法で算出してもよい。
 第1の方法は、事業者またはユーザが定義した値を閾値とする。例えば、データ量の10%などとする。
 第2の方法は、ジョブ定義から閾値を算出する。具体的には、ジョブ定義に含まれるプログラムのループ処理の深さと、命令数とから計算量オーダを算出し、計算量オーダの大きさにより段階に分け、段階毎に閾値を決定する。また、計算量オーダが大きいほど時間あたりのデータ処理量(データ処理速度)が低下するため、計算量オーダが大きいほど閾値は小さくする。
 第3の方法は、後述するチェックポイントされるまでのジョブの実行状況から閾値を算出する。具体的には、これまでの実行状況からデータ処理速度Vpとフェッチ速度Vfを算出する。
 Vf≧Vpの場合は、閾値=Vf×Mとする。Mは任意の値である。
 Vf<Vpの場合は、閾値=(1-Vf/Vp)×S+Vp×Mとする。Sは処理されていない残りのデータ量、Mは任意の値である。
 図6は、第1キューセレクタ11の処理を示すフローチャートである。第1キューセレクタ11は、ジョブを受け付けると(S11)、ジョブの所有者であるユーザの優先クラスをアカウントDB31取得する(S12)。ここでは、優先クラスはkとする(S13)。第1キューセレクタ11は、GPUの公平性割当量と、ユーザの現在使用量とを比較し(S14)、現在使用量が公平性割当量を超えていない場合(S15:true)、GPUのユーザ割当量とユーザの現在使用量とを比較する(S16)。
 現在使用量がユーザ割当量を超えていない場合(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)。
 図7は、第1ジョブセレクタ12の処理を示すフローチャートである。図7の処理は、第1キューセレクタ11にジョブが投入されることをトリガとして開始される。また、図7の処理は、第2キューセレクタ21がFJL30に空きができたことを検知することをトリガとして開始される。
 第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)。
 現在使用量がユーザ割当量を超えていない場合(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)。
 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以降の処理は、前述したとおりであるため説明を省略する。
 k=1のOFJQ k14にジョブがない場合(S45:false)、第1ジョブセレクタ12は、k に1を加算し(S46)、k≦nの場合(S47:true)、S45に戻り以降の処理を行う。k>nの場合(S47:false)、第1ジョブセレクタ12は、処理を終了する。
 図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に戻り以降の処理を行う。
 フェッチ済みデータ量が閾値を超過している場合(S53:true)、第2キューセレクタ21は、FJL30のi番目のジョブを取り出し、デキューする(S55)。第2キューセレクタ21は、取り出したジョブのメタデータを確認して(S56)、当該ジョブがサスペンド状態(一時停止状態)の場合(S57:true)、RQ23に当該ジョブを格納する(S63)。第2キューセレクタ21は、FJL30に空きができたため、第1ジョブセレクタ12を起動する(S61)。
 取り出したジョブがサスペンド状態でない場合(S57:false)、第2キューセレクタ21は、ジョブ制御を進めるか否かを判定するために、ジョブ所有者の公平性割当量と減現在使用量とを確認する(S58)。現在使用量が公平性割当量を超えていない場合(S59:true)、第2キューセレクタ21は、DQ24に当該ジョブを格納し(S63)、第1ジョブセレクタ12を起動する(S61)。現在使用量が公平性割当量を超えている場合(S59:false)、第2キューセレクタ21は、OFDQ25に当該ジョブを格納し(S62)、第1ジョブセレクタ12を起動する(S61)。
 また、第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)。
 なお、学習対象データが格納されたストレージのI/O速度、通信速度などにより、FJL30に格納されたジョブのうち、1番目(先頭)のジョブのフェッチ済みデータ量が、最も多いとは限らない。このような場合を考慮して、S68で第2キューセレクタ21は、FJL30の中でフェッチしたデータ量が最も多いジョブを取り出し、S56に進み、当該ジョブをRQ23、DQ24およびOFDQ25のいずれかに格納させてもよい。すなわち、第2キューセレクタ21は、FJL30内のジョブのうち最もフェッチが進んだジョブを取り出してもよい。
 図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)。
 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のいずれかに格納させる。
 (実施例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)を用いてデータを転送する。
 本実施例では、(1)スケジューラ1は、ジョブ待機中に当該ジョブのデータのプリフェッチを、キャッシュクラスタ7に指示する。これにより、キャッシュクラスタ7は、前記指示によりクラスタ共有ストレージ4からデータをプリフェッチする。(2)スケジューラ1は、ジョブのデプロイをマスタ2に指示し、マスタ2はジョブをGPUにアサインする。(3)マスタ2は、キャッシュクラスタ7のキャッシュ領域を、RDMA-fs等を用いてマウントする。(4)GPUは、ジョブを実行する。(5)スケジューラ1は、ジョブの実行後に、キャッシュクラスタ7のキャッシュデータを削除する。
 (実施例2)
 図11は、実施例2のGPUクラスタの構成図である。本実施例は、ユーザ拠点のユーザストレージ6にオンライン接続する。すなわち、本実施例では、低速なユーザストレージ6に格納された学習対象データにオンラインで接続する。
 本実施例では、GPUクラスタシステム内では、実施例1と同様にLossless DC fabricなどの高速・帯域確保型ネットワークを構築し、スパインスイッチ(Spine SW)などの各種スイッチ(SW)を用いてデータを転送する。GPUクラスタシステムとユーザ拠点との間は、Access/MetroネットワークをBorder Leafなどスイッチで接続してデータ転送パス(VPN、専用線等)を構築する。本実施例の動作は、以下のとおりである。
 (1)キャッシュクラスタ7(キャッシュ管理部72)は、ユーザ拠点のユーザストレージ6のデータを転送し、キャッシュクラスタ7のメモリ(NV-DIMM)にプリフェッチする。なお、キャッシュメモリにデータの一部を置くだけなのでダウンロードに相当しない。
 (2)キャッシュクラスタ7のメモリに一定量のキャッシュデータが溜まったら、GPUはジョブを実行する。
 (3)GPUがキャッシュデータを使い切ると、GPUは、ジョブを一時中断し、リソースを開放する。リソースの開放にはCRIU (Checkpoint/Restore In Userspace)のような技術を用いることで,ジョブのプログラムに一時中断のための機能を実装する必要がなくなる。CRIUは、プロセスを終了せずに、一時停止、保存、再開する技術である。
 (4)キャッシュクラスタ7は、処理中のプロセスデータをキャッシュクラスタ7に書き込む。
 (5)キャッシュクラスタ7のメモリに一定量のキャッシュデータが溜まったら、GPUを確保する。
 (6)プロセスデータを書き戻し、ジョブの処理を再開(リストア)する。
 (7)ジョブの処理が完了したら終了する。完了していない場合は、(3)に戻り以降の処理を繰り返す。
 (実施例3)
 図12は、実施例3のGPUクラスタの構成図である。本実施例では、複数のデータセンタ40が分散して存在する。データセンタ40には、複数のマスタ2およびノード3を含むGPUクラスタと、キャッシュクラスタ7と、クラスタ共有ストレージ4とを備える。データセンタ40は、クラスタ共有ストレージ4を備えなくてもよい。
 スケジューラ1は、ジョブの配置先をユーザ拠点から近いGPUクラスタに配置する。ユーザ自らデータをクラスタ共有ストレージ4にアップロードする場合は、スケジューラ1は、ユーザがデータをアップロードしたクラスタ共有ストレージ4になるべく近いGPUクラスタを選択する。
 (閉域接続方式)
 以下に、実施例2のユーザ拠点のユーザストレージ6に格納された学習対象データをキャッシュクラスタ7がフェッチする場合に、ユーザ拠点とキャッシュクラスタ7との閉域接続方式について説明する。
 図13は、方式1の閉域接続を示す模式図である。本方式では、ユーザストレージ6が閉域接続の機能の有し、キャッシュクラスタ7からの閉域接続を待ち受けている。学習対象データのプリフェッチの際に、キャッシュクラスタ7がユーザストレージ6に対し閉域接続を開始する。学習対象データの取得が完了すると、キャッシュクラスタ7は、閉域接続を解除する。これにより、ユーザストレージ6は、閉域接続の待受状態に戻る。ユーザストレージ6は、常時、閉域接続の待ち受ける状態である。ユーザ拠点には加入者側回線終端装置(以下「CPE」)が配置される。ユーザは、閉域接続のための設定をGPUクラスタシステムの事業者と事前に折衝し、決めておく必要がある。ユーザは、自身のユーザストレージ6にキャッシュクラスタ7との閉域接続のための設定をする必要がある。
 図14は、方式2の閉域接続を示す模式図である。本方式では、ユーザ拠点のCPE8は、VPN接続部と、スケジューラ1からの制御に対応するためのAPI(制御部)とを備える。本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにCPE8のAPIへの接続情報を含める。スケジューラ1は、キャッシュクラスタ7にCPE8からの閉域接続を待ち受けるよう指示する。CPE8は、スケジューラ1からの指示を受けて、指示された接続先(キャッシュクラスタ7)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、CPE8に閉域接続の設定削除を指示する。
 図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に閉域接続の設定削除を指示する。
 図16は、方式4の閉域接続を示す模式図である。本方式では、キャリア網内に、仮想化された加入者側回線終端装置(以下、「vCPE」)92を設置する。vCPE92は、VPN接続部と、スケジューラ1から制御に対応するAPI(制御部)とを有する。
 本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにユーザストレージ6が接続されている回線を識別するための回線識別情報を含める。スケジューラ1は、キャッシュクラスタ7にvCPE92からの閉域接続を待ち受けるよう指示する。vCPE92は、スケジューラ1からの指示を受けて、指示された接続先(キャッシュクラスタ7)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92に閉域接続の解除を指示する。ユーザ拠点には、光回線終端装置(以下、「ONU」)91またはモデムなどが設置され、vCPE92と接続される。ONU91等は、vCPE92とのレイヤ2接続(Ethernet等)を提供する。
 図17は、方式5の閉域接続を示す模式図である。本方式では、キャリア網内に方式4と同様にvCPE92を備える。ユーザ拠点には、ONU91等が設置される。ONU91等は、vCPE92と接続され、vCPE92とのレイヤ2接続を提供する。本方式では、スケジューラ1は、vCPE92には閉域接続を待受させ、キャッシュクラスタ7に閉域接続開始を指示する。
 本方式は、オンデマンドで閉域接続を構成する。ユーザは、スケジューラ1にジョブを登録する際に、当該ジョブにユーザストレージ6が接続されている回線を識別するための回線識別情報を含める。スケジューラ1は、vCPE92にキャッシュクラスタ7からの閉域接続を待ち受けるよう指示する。キャッシュクラスタ7は、スケジューラ1からの指示を受けて、指示された接続先(vCPE92)に対し閉域接続を要求する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92に閉域接続の解除を指示する。
 図18は、方式6の閉域接続を示す模式図である。本方式では、キャリア網内に方式4と同様にvCPE92を備える。ユーザ拠点には、方式1と同様のCPE8が設置され、vCPE92と接続される。
 本方式は、オンデマンドで閉域接続を構成する。スケジューラ1は、vCPE92にキャッシュクラスタ7とCPE8からの閉域接続要求に対する待受開始を指示する。スケジューラ1は、キャッシュクラスタ7に対し、vCPE92への閉域接続を指示する。スケジューラ1は、CPE8にvCPE92への閉域接続を指示する。閉域接続が確立すると、キャッシュクラスタ7は、ユーザストレージ6上の学習対象データをGPUクラスタシステムに複製する。複製先は、キャッシュクラスタ7またはクラスタ共有ストレージ4のいずれかである。ジョブが完了すると、スケジューラ1は、vCPE92およびCPE8に閉域接続の解除を指示する。
 vCPE92のインスタンスのパターンとしては、事前にデプロイしたものをプールしておき、ジョブの学習対象データのプリフェッチ開始時にユーザ拠点の最寄りのvCPE92をアサインしてもよい。また、ジョブの学習対象データのプリフェッチ開始時に、vCPEのインスタンスをデプロイしてもよい。
 図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とする。
 本方式は、オンデマンドで閉域接続を構成する。スケジューラ1は、閉域接続の設定時に、GW93に対し、キャッシュクラスタ7からの閉域接続要求に対する待受開始を指示する。指示対象のGW93は,回線識別情報等から特定する。スケジューラ1は、キャッシュクラスタ7に対しGW93への閉域接続を要求する。閉域接続が確立すると、ユーザストレージ6とキャッシュクラスタ7の通信をGW93が中継し通信経路が確立する。
 (GPUクラスタシステムの動作)
 以下にGPUクラスタシステムの動作について説明する。
 図20は、図1に示す基本的なGPUクラスタシステムの動作を示すシーケンス図である。ユーザは、学習対象データをクラスタ共有ストレージ4にアップロードし(S101)、ジョブをスケジューラ1に登録する(S102)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所、ユーザIDなどの認証情報などが含まれる。スケジューラ1は、認証情報を用いてユーザを認証するが、ここでは認証処理については省略する。
 スケジューラ1は、ジョブが登録されると、GPUの空き状況など(GPUの稼働状況)をマスタ2に確認し(S103)、マスタ2からGPUの空き状況などを取得する(S104)。スケジューラ1は、GPUの空き情報等を用いて、ジョブをスケジューリングし(S105)、マスタ2にジョブのデプロイを指示する(S106)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所、認証情報などが含まれる。マスタ2は、ノード3にジョブのデプロイを指示する(S107)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所などが含まれる。
 ノード3は、ジョブの実行を開始し、ジョブの仮想環境を作成する(S108)。具体的には、ノード3は、Network namespace等の名前空間やコンテナなどの仮想環境を生成する。また、ノード3は、学習対象データにジョブがアクセスできるように設定する。これにより、学習対象データの格納先(クラスタ共有ストレージ4)がジョブからアクセス可能になる。
 ジョブは、学習処理を開始し(S109)、学習対象データにアクセスしながら学習処理を実行する。ジョブは、学習結果をクラスタ共有ストレージ4に書き出す(S110)。学習結果は、逐次書き出す場合と、最後にまとめて書き出す場合とがある。ジョブは、学習処理が終了すると(S111)、実行完了をノード3に報告する(S112)。ノード3は、ジョブの仮想環境等を削除する(S113)。また、ノード3は、ジョブのための仮想ネットワークなども併せて削除する。ジョブの実行が完了するとノード3は、ジョブの実行完了をマスタ2に報告する(S114)。マスタ2は、必要に応じてユーザにジョブ完了を報告する。あるいは、ユーザがスケジューラ1またはマスタ2にジョブの完了を問い合わせてもよい。
 図21A、図21Bおよび図21Cは、本実施形態のGPUクラスタの動作を示すシーケンス図である。これらは、クラスタ共有ストレージ4にアップロードされた学習対象データを、キャッシュクラスタ7がフェッチして利用する場合のシーケンス図である。
 ジョブ登録前に学習対象データをアップロードする場合、ユーザは、ユーザストレージ6に格納している学習対象データをクラスタ共有ストレージ4にアップロードし(S131)、ジョブをスケジューラ1に登録する(S132)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所、ユーザIDなどの認証情報などが含まれる。学習対象データの格納場所は、事前アップロードの場合はクラスタ共有ストレージ4であり、事前アップロードしない場合はユーザストレージ6である。また、事前アップロードしない場合は、ジョブの登録データには、ユーザストレージ6への閉域接続情報などが含まれる。スケジューラ1におけるユーザの認証処理については、省略する。
 学習対象データを事前にアップロードしない場合は、S131を行うことなく、後述する「閉域接続の確立処理」Aと、「学習対象データのクラスタ格納処理」Bと、「閉域接続の解除処理」Cとが行われる。「閉域接続の確立処理」Aは、スケジューラ1の制御によりユーザ拠点とキャッシュクラスタ7との間に閉域接続または閉域経路を接続する。「学習対象データのクラスタ格納処理」Bは、ユーザ拠点とキャッシュクラスタ7との間に確立された閉域接続または閉域経路を介して、ユーザストレージ6上の学習対象データをキャッシュクラスタ7上に格納する。「閉域接続の解除処理」Cは、スケジューラ1の制御により、ユーザ拠点とキャッシュクラスタ7との間に確立された閉域接続または閉域経路を解除する。
 スケジューラ1は、キャッシュクラスタ7に学習対象データのプリフェッチを指示する(S133)。すなわち、スケジューラ1は、キャッシュクラスタ7上の所定の格納場所に、学習対象データを格納することを指示する。キャッシュクラスタ7は、クラスタ共有ストレージ4上の学習対象データのフェッチを開始する(S134)。
 全ての学習対象データをフェッチする場合、キャッシュクラスタ7は、学習対象データのプリフェッチの完了をスケジューラ1に報告する(S135)。スケジューラ1はGPUの空き状況などをマスタ2に確認し(S136)マスタ2からGPUの空き状況などを取得する(S137)。
 全ての学習対象データをフェッチしない場合、すなわち、全ての学習対象データのキャッシュデータを待たずに、投機的にジョブの実行を開始する場合、スケジューラ1は、プリフェッチの完了を待たずに続く処理を実行する。スケジューラ1はGPUの空き状況などをマスタ2に確認し(S138)、マスタ2からGPUの空き状況などを取得する(S139)。また、スケジューラ1はフェッチ済のデータ量をキャッシュクラスタ7に確認し(S140)、キャッシュクラスタ7からフェッチ済みのデータ量を取得する(S141)。スケジューラ1は、S138およびS139のGPUの空き状態の確認処理と、S140およびS141の学習対象データのフェッチ進捗確認処理とを並行して行ってもよい。
 スケジューラ1は、GPUの空き情報等を用いて、ジョブをスケジューリングし(S142)、マスタ2にジョブのデプロイを指示する(S143)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所、ユーザID等の認証情報などが含まれる。マスタ2は、ノード3にジョブのデプロイを指示する(S144)。このデプロイ指示には、ジョブの定義、学習対象データの格納場所などが含まれる。
 ノード3は、ジョブの実行を開始し、ジョブの仮想環境を作成する(S145)。具体的には、ノード3は、Network namespace等の名前空間やコンテナなどの仮想環境を生成する。また、ノード3は、学習対象データにジョブがアクセスできるように設定する。これにより、学習対象データの格納先(キャッシュクラスタ7)がジョブからアクセス可能になる。
 ジョブは、学習処理を開始し(S146)、後述する「学習処理におけるキャッシュクラスタへのデータアクセス」Dを行い、学習対象データにアクセスしながら学習処理を実行する。ジョブは、学習結果をキャッシュクラスタ7に書き出す(S147)。学習結果をキャッシュクラスタ7に書き出すことで、キャッシュ管理部72は、透過的にクラスタ共有ストレージ4に学習結果を書き出す。また、ジョブは、学習結果を直接クラスタ共有ストレージ4に書き出してもよい。その場合、S145でジョブの仮想環境を作成する際に。ジョブがクラスタ共有ストレージ4にアクセスできるように設定する。
 ジョブは、学習処理が終了すると(S148)、実行完了をノード3に報告する(S149)。ノード3は、ジョブの仮想環境等を削除する(S150)。また、ノード3は、ジョブのための仮想ネットワークなども併せて削除する。ジョブの実行が完了すると、ノード3は、ジョブの実行完了をマスタ2に報告する(S151)。マスタ2は、必要に応じてユーザにジョブ完了を報告する。あるいは、ユーザがスケジューラ1またはマスタ2にジョブの完了を問い合わせてもよい。
 スケジューラ1は、GPUの空き状況およびジョブの完了状況をマスタ2に確認し(S152)、マスタ2からこれらの情報を取得する(S153)。スケジューラ1は、学習対象データのキャッシュデータ等の削除をキャッシュクラスタ7に指示する(S154)。キャッシュクラスタ7は、キャッシュデータ等を削除する(S155)。キャッシュクラスタ7は、学習結果が一時的に格納された場合、学習結果も削除する。キャッシュクラスタ7は、削除処理に合わせて、ジョブからの書き出しデータのクラスタ共有ストレージ4への書き戻しを実行する。キャッシュクラスタ7は、削除完了をスケジューラ1に報告する(S156)。
 図22A、図22Bおよび図22Cは、本実施形態のGPUクラスタの動作を示すシーケンス図である。ここでは、ユーザストレージ6上の学習対象データを、キャッシュクラスタ7が直接フェッチして利用する場合のシーケンスを説明する。
 ユーザは、ジョブをスケジューラ1に登録する(S161)。ジョブの登録データには、ジョブの定義、学習対象データの格納場所(ユーザストレージ6)、ユーザIDなどの認証情報などが含まれる。ジョブの登録データには、ユーザストレージ6への閉域接続情報などが含まれる。閉域接続情報については後述する。スケジューラ1の認証処理については省略する。次に、後述する「閉域接続の確立処理」Aが行われる。「閉域接続の確立処理」Aは、スケジューラ1の制御によりユーザ拠点とキャッシュクラスタ7との間に閉域接続または閉域経路を接続する。確立した閉域接続または閉域経路を介して、キャッシュクラスタ7からユーザ拠点のユーザストレージ6上の学習データにアクセス可能となる。
 スケジューラ1は、キャッシュクラスタ7に学習対象データのプリフェッチを指示する(S162)。すなわち、スケジューラ1は、キャッシュクラスタ7上の所定の格納場所に、学習対象データを格納することを指示する。キャッシュクラスタ7は、閉域接続または閉域経路を介して、ユーザストレージ6上の学習対象データのフェッチを開始する(S163)。S164からS171の処理は、図21BのS135からS141の処理と同じであるため、ここでは説明を省略する。
 そして、図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)。
 図23は、「閉域接続の確立処理」Aの動作を示すシーケンス図である。ここでは、図14に示す方式2の閉域接続の確立処理を説明する。ユーザ拠点には、CPE8が配置されており、CPE8とキャッシュクラスタ7との間で閉域接続を確立する。そのため、CPE8がAPIを公開していない場合は、スケジューラ1がAPIでCPE8を制御している部分については、ユーザが当該部分を設定する。CPE8は、キャリア網内にデプロイされているvCPEに置き換わる場合もある。
 本処理の前提として、スケジューラ1にジョブが登録されている。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「CPEとの閉域接続の情報」と、「CPEのAPIへの接続情報」とが含まれる。ただし、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、閉域接続情報には「CPEのAPIへの接続情報」は含まれない。以下に、本処理を説明する。
 スケジューラ1は、キャッシュクラスタ7に閉域接続の待ち受けを指示する(S191)。この指示には、CPE8との閉域接続の情報が含まれる。閉域接続確立後、キャッシュクラスタ7が自律的に学習対象データの取得制御を行う場合は、「学習対象データの格納場所」についても閉域接続の待ち受け指示で渡される。キャッシュクラスタ7は、閉域接続を待ち受ける設定を行う(S192)。これにより、閉域接続待ち受け状態が確立する。キャッシュクラスタ7は、閉域接続待ち受け処理の完了をスケジューラ1に報告する(S193)。キャッシュクラスタ7への閉域接続の情報は、S191で生成される。キャッシュクラスタ7への閉域接続の情報は、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、ジョブの登録より前段階でのユーザと事業者間での契約手続き等の事前折衝で決定され、ユーザに通知される。
 スケジューラ1は、閉域接続の確立をCPE8に指示する(S194)。CPE8は、閉域接続を設定し(S195)、キャッシュクラスタ7との閉域接続を開始する(S196)。CPE8がAPIを公開していない場合においては、ユーザからのジョブ登録と、ユーザによるCPE8への閉域接続確立のための設定が非同期で実施される。そのため、閉域接続の開始処理は閉域接続が確立するまでCPE8により繰り返し施行される。キャッシュクラスタ7は、CPE8に閉域接続を受諾する(S197)。これにより、閉域接続が確立される。CPE8は閉域接続の完了をスケジューラ1に報告する(S198)。以降、確立された閉域接続を介することで、キャッシュクラスタ7もしくはクラスタ共有ストレージ4からユーザ拠点のユーザストレージ6上の学習対象データにアクセス可能となる。
 図24は、「閉域接続の解除処理」Bの動作を示すシーケンス図である。ここでは、図14に示す方式2の閉域接続の解除処理を説明する。ユーザ拠点のCPE8とキャッシュクラスタ7との間で閉域接続が確立されておりこれを解除する。そのため、CPE8は、閉域接続制御のためのAPIを公開していることする。APIを公開していない場合は、スケジューラ1がAPIでCPE8を制御している部分については、ユーザが当該部分を設定する。CPE8は、キャリア網内にデプロイされているvCPEに置き換わる場合もある。
 本処理の前提として、スケジューラ1にジョブが登録されている。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「CPEとの閉域接続の情報」と、「CPEのAPIへの接続情報」とが含まれる。ただし、CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、閉域接続情報には「CPEのAPIへの接続情報」は含まれない。スケジューラ1の制御によりCPE8とキャッシュクラスタ7の間で閉域接続が確立される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのフェッチを開始する。スケジューラ1の制御によりジョブがデプロイされ、学習を開始する。デプロイされるタイミングとしては、キャッシュクラスタ7で学習対象データを全てフェッチしてからの場合と、フェッチを継続している場合とが存在する。ジョブが完了し、ジョブの実行完了をスケジューラ1が検知する。以下に、本処理を説明する。
 キャッシュクラスタ7への閉域接続の情報は、図23の「閉域接続の接続処理」のS193で前述したとおりである。スケジューラ1は、CPE8に閉域接続の解除を指示する(S201)。CPE8は、キャッシュクラスタ7に対して閉域接続の解除を開始する(S202)。キャッシュクラスタ7は、CPE8に閉域接続の解除を受諾する(S203)。これにより、CPE8と7との間の閉域接続が解除される。CPE8は、閉域接続を削除し(S204)、閉域接続の解除完了をスケジューラ1に報告する(S205)。
 スケジューラ1は、キャッシュクラスタ7に閉域接続の待ち受け解除を指示する(S206)。この指示には、CPE8との閉域接続の情報が含まれる。キャッシュクラスタ7は、閉域接続の待ち受ける設定を削除し(S207)、閉域接続の待ち受け解除をスケジューラ1に報告する(S208)。
 CPE8がAPIを公開していなく、ユーザがCPE8の設定を行う場合は、S206-S208(キャッシュクラスタの閉域接続の待ち受け解除処理)が、S201-S205(CPEの閉域接続の解除処理)より前に実行される可能性がある。その場合、「CPEの閉域接続の解除処理」では、閉域接続は既に解除されているため、S202(閉域接続の解除を開始)を実行せず、S204(閉域接続を削除)を実行する。一方、「キャッシュクラスタの閉域接続の待ち受け解除処理」では、S207に伴い、閉域接続の解除を開始し、CPE8から閉域接続の解除を受諾する。
 図25は、「閉域接続の確立処理」Aの動作を示すシーケンス図である。ここでは、図19に示す方式7の閉域接続の確立処理を説明する。ユーザ拠点には、CPE8が配置されており、キャリア網のGW93がCPE8への接続インタフェースを保持している。CPE8とGW93との間は、事前にPPPoE等により閉域接続が確立済みであり、さらにGW93とキャッシュクラスタ7との間で閉域接続を確立することで、GW93は、2つの閉域接続を中継する閉域経路を生成する。この閉域経路を介することで、キャッシュクラスタ7およびクラスタ共有ストレージ4からCPE8配下のユーザストレージ6にアクセス可能な状態になる。この制御のためにGW93は閉域接続制御のためのAPIを保持している。
 本処理の前提として、CPE8とGW93との間で、PPPoE等により閉域接続が確立済みで、この閉域接続を介してCPE8はインターネットに接続可能である。スケジューラ1にジョブが登録される。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には、「回線識別情報」(CPE8が接続すると、GW93の識別等に用いられる)が含まれる。以下に、本処理を説明する。
 スケジューラ1は、CPE8が接続するGW93を特定する(S211)。スケジューラ1は、GW93に閉域接続の待ち受け設定と、閉域接続の中継設定とを指示する(S212)。この中継設定は、キャッシュクラスタ7との閉域接続確立後、CPE8とGW93間の閉域接続と、GW93とキャッシュクラスタ7間の閉域接続をルーティング、スイッチ等により中継して論理的なCPE8とキャッシュクラスタ7間の閉域経路を生成するための設定である。この閉域経路を利用することで、キャッシュクラスタ7およびクラスタ共有ストレージ4とCPE8配下のユーザストレージ6とは互いに接続可能となる。GW93では、CPE8配下からのトラフィックについて、キャッシュクラスタ7もしくはクラスタ共有ストレージ4宛てのみのデータを閉域経路へ転送する。CPE8配下からインターネット接続と共用可能である。
 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上の学習対象データにアクセス可能となる。
 図26は、「閉域接続の解除処理」Cの動作を示すシーケンス図である。ここでは、図19に示す方式7の閉域接続の解除処理を説明する。GW93とキャッシュクラスタ7間で、閉域接続が確立されており、さらにGW93により、CPE8とキャッシュクラスタ7間に閉域経路が確立されている。ここで、GW93とキャッシュクラスタ7間の閉域接続を解除することで、CPE8とキャッシュクラスタ7間の閉域経路も併せて解除する。この制御のためにGW93は閉域接続制御のためのAPIを保持している。
 本処理の前提として、CPE8とGW93との間で、PPPoE等により閉域接続が確立済みで、この閉域接続を介してCPE8はインターネットに接続可能である。スケジューラ1にジョブが登録される。ジョブの登録データに含まれる、ユーザストレージ6への閉域接続情報には「回線識別情報」が含まれる。スケジューラ1の制御により、GW93とクラスタ共有ストレージ4間に閉域接続が確立される。合わせて、GW93により、CPE8とキャッシュクラスタ7間に閉域経路が確立される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのフェッチを開始する。スケジューラ1の制御により、ジョブがデプロイされ学習を開始する。デプロイされるタイミングとしては、キャッシュクラスタ7で学習対象データを全てフェッチしてからの場合と、フェッチを継続している場合とが存在する。以下に、本処理を説明する。
 スケジューラ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)。
 図27および図28は、「学習対象データのクラスタ格納処理」Bを示すシーケンス図である。本処理では、ユーザストレージ6上の学習対象データをクラスタ共有ストレージ4上に格納する。
 図27では、キャッシュクラスタ7がユーザストレージ6の学習対象データのブロックを読み出し、当該ブロックをクラスタ共有ストレージ4上に書き込む(複製する)ことを繰り返す。ブロックは、学習対象データの一部であって、例えば1以上のファイルの集合、または、1ファイルのうちの一定サイズの1部分などを示す。キャッシュクラスタ7とCPE8との間には、閉域接続または閉域経路が確立されており、いずれかを介することでキャッシュクラスタ7はユーザストレージ6の学習対象データにアクセスする。また、キャッシュクラスタ7は、閉域接続または閉域経路の確立を検知すると、自律的に格納処理を開始する。CPE8は、キャリア網内に配置されているvCPEに置き換わる場合もある。
 本処理の前提として、スケジューラ1にジョブが登録される。スケジューラ1の制御により、CPE8とキャッシュクラスタ7との間に閉域接続または閉域経路が確立される。キャッシュクラスタ7は、自律的に格納処理を開始するために、閉域接続または閉域経路の確立処理の中で「学習対象データの格納場所」がスケジューラ1からキャッシュクラスタ7に渡されている。以下に、本処理を説明する。
 キャッシュクラスタ7は、閉域接続の確立を契機として、閉域接続または閉域経路を介してユーザストレージ6から学習対象データをブロック単位で読み出し(S251)、読み出したブロック単位の学習対象データをクラスタ共有ストレージ4に書き込む(S252)。キャッシュクラスタ7は、学習対象データを全てクラスタ共有ストレージ4に格納するまで、S251およびS252を繰り返す。キャッシュクラスタ7は、学習対象データを全て格納した後、学習対象データの取得完了を、スケジューラ1に通知する(S253)。この通知には、クラスタ共有ストレージ4上の学習対象データの格納場所が含まれる。
 図28では、キャッシュクラスタ7がクラスタ共有ストレージ4に対し、ユーザストレージ6上の学習対象データの取得を指示する。前提条件などについては、図27と同じであるため、ここでは説明を省略する。以下に、本処理を説明する。
 キャッシュクラスタ7は、閉域接続の確立を契機として、ユーザストレージ6に学習対象データの取得を指示する(S271)。この指示には、「学習対象データの格納場所」が含まれる。クラスタ共有ストレージ4は、閉域接続または閉域経路を介してユーザストレージ6から学習対象データを取得する(S272)。これにより、閉域接続または閉域経路を介してユーザストレージ6の学習対象データがクラスタ共有ストレージ4に格納される。クラスタ共有ストレージ4は、学習対象データの取得完了を、スケジューラ1に報告する(S273)。この報告には、クラスタ共有ストレージ4上の学習対象データの格納場所が含まれる。
 図29は、「学習処理におけるキャッシュクラスタへのデータアクセス処理」Dを示すシーケンス図である。本処理では、キャッシュクラスタ7への学習対象データのキャッシュ(フェッチ)が完全に完了する前に投機的にジョブがデプロイされ、学習を開始している場合である。キャッシュクラスタ7がキャッシュ対象とする学習対象データは、ユーザストレージ6またはキャッシュクラスタ7に格納されている。
 本処理の前提として、スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S291)。ジョブは、学習対象データにアクセスしながら学習処理を行う。以下に、本処理を説明する。
 ジョブは、学習対象データのブロック単位での読み込みをキャッシュクラスタ7に要求する(S292)。キャッシュクラスタ7は、キャッシュミスが発生した場合(S293)、学習対象データへの透過的接続(S294、S295)と、学習対象データのプリフェッチ(S296)とを並列処理で行う。キャッシュミスは、キャッシュクラスタ7がキャッシュ対象としているデータのうち、要求元(キャッシュクラスタ7を利用するジョブなど)が、未キャッシュのデータを読み書きしようとした状態を指す。データが存在しないため、要求元に対してデータを即時応答することができない。キャッシュクラスタ7は、要求元を待たせたまま、キャッシュ対象データをオリジンに要求し、キャッシュデータを作成してから要求元に応答するなどの処理が発生する。
 学習対象データへの透過的接続では、キャッシュクラスタ7は、キャッシュミスしたブロックの学習対象データをオリジンから取得し(S294)、取得したブロックの学習対象データをジョブに返却する(S295)。キャッシュクラスタ7は、キャッシュミス時に学習対象データの元データにアクセスしながら、ジョブにデータを返却する。これにより、ジョブにはキャッシュミスの発生を隠ぺいしつつ、透過的に学習対象データのオリジンにアクセスさせる。なお、キャッシュクラスタ7において、ここで返却している学習対象データのブロックは、今後利用される見込みがないため、キャッシュしないことでデータ入力処理を高速化してもよい。
 学習対象データのプリフェッチでは、数ブロック先の学習対象データを先読みしてキャッシュする(S296)。キャッシュクラスタ7は、キャッシュミス発生後、学習対象データのオリジンにアクセスして応答をジョブに返却するとともに、今後、ジョブが読み込む学習対象データのブロックについて、数ブロック先のキャッシュを並行して開始する。これにより、キャッシュミスを一時的なものとして、その後のキャッシュミスの発生を低減し、データ入出力処理を高速化する。
 図30Aおよび図30Bは、「ジョブのチェックポイント処理」を示すシーケンス図である。チェックポイント処理は、動作中のジョブに含まれる仮想空間やプロセスをフリーズし、状態をいくつかのファイル(ダンプ)に保存する処理である。ジョブのチェックポイント処理は、例えば、CRIU (https://www.criu.org/Main_Page、https://github.com/checkpoint-restore/criu) などを使用して実現される。
 本処理では、ジョブがキャッシュクラスタ7から学習対象データを読み込む際のキャッシュミスを許容する。具体的には、キャッシュミスが発生した場合に、その発生を検知し、ジョブをチェックポイントする。本処理では、キャッシュクラスタ7への学習対象データのフェッチが完全に完了する前に投機的にジョブがデプロイされ、学習を開始している場合である。キャッシュクラスタ7がキャッシュ対象とする学習対象データは、ユーザストレージ6またはキャッシュクラスタ7に格納されている。
 本処理の前提として、ノード3は、キャッシュクラスタ7上のボリュームをジョブのダンプの格納場所としてマウントしている。ジョブのダンプの格納場所は、クラスタ共有ストレージ4上でもよい。スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S311)。ジョブは、学習対象データにアクセスしながら学習処理を行う。以下に、本処理を説明する。
 学習対象データの読み込みでキャッシュミスが連続して発生する。この場合、以下の3つの処理のいずれかの処理が行われる。
 「キャッシュクラスタが検知する場合」では、キャッシュクラスタ7が、所定の閾値以上の連続したキャッシュミスを検出し(S312)、スケジューラ1にキャッシュミスの発生を通知する(S313)。閾値は、クラスタ管理者が任意に決定する。閾値は、ブロックサイズや通信速度などから適切な値を決定することができる。
 「ジョブがキャッシュミスを検知する場合」では、ジョブが、ストレージIO帯域幅の減少等からキャッシュミスを検知し(S314)、スケジューラ1にキャッシュミスの発生を通知する(S315)。
 「スケジューラ1がキャッシュミスを検知する場合」では、ノード3が、ジョブのストレージIO帯域幅やGPU使用率等をマスタ2に報告する(S316)。スケジューラ1は、マスタ2にジョブの状態を問い合わせる(S317)。マスタ2は、ノード3から報告されているジョブの状態を応答する(S318)。スケジューラ1は、ジョブの状態からジョブのストレージIO帯域幅の減少や、GPUがほぼ使用されていないことなどを確認して、キャッシュミスの発生を検知する。
 スケジューラ1は、キャッシュミスの発生を検知すると、ジョブのチェックポイントをマスタ2に指示し(S319)、マスタは、ジョブのチェックポイントをノード3に指示する(S320)。ノード3は、ジョブをチェックポイントする(S321)。すなわち、ノード3は、ジョブのダンプをキャッシュクラスタ7上に格納する。ノード3は、事前にキャッシュクラスタ7をマウントしている。ジョブのチェックポイントにより、ジョブは一時停止状態(サスペンド状態)となる。一方、キャッシュクラスタ7による学習対象データの未キャッシュ部分のプリフェッチは継続される。
 ノード3は、ジョブのチェックポイント完了をマスタ2に報告し(S322)、マスタ2は、ジョブのチェックポイント完了をスケジューラ1に報告する(S323)。この報告には、ジョブのダンプの格納場所が含まれる。そして、後述する「ジョブのリストア処理」Eが行われる。
 図31は、別の「ジョブのチェックポイント処理」を示すシーケンス図である。本処理では、ジョブがキャッシュクラスタ7から学習対象データを読み込む際のキャッシュミスを防止する。具体的には、キャッシュミスの発生を事前に検知し、ジョブをチェックポイントする。なお、本処理の前提は、図30Aと同様であるためここでは、説明を省略する。以下に、本処理を説明する。
 ジョブが学習を開始すると(S331)、キャッシュクラスタ7は、キャッシュの利用状況の監視を開始する。キャッシュ済みの学習対象データ量と、ジョブが読み出したデータ量との変遷からキャッシュの発生を事前に検知する(S332)。キャッシュクラスタ7は、スケジューラ1にキャッシュミス発生の事前警告を通知する(S333)。スケジューラ1は、ジョブのチェックポイントをマスタ2に指示し(S334)、マスタは、ジョブのチェックポイントをノード3に指示する(S335)。ノード3は、ジョブをチェックポイントする(S336)。すなわち、ノード3は、事前にマウントしたキャッシュクラスタ7上にジョブのダンプを格納する。ジョブのチェックポイントにより、ジョブは一時停止状態となる。一方、キャッシュクラスタ7による学習対象データの未キャッシュ部分のプリフェッチは継続される。
 ノード3は、ジョブのチェックポイント完了をマスタ2に報告し(S337)、マスタ2は、ジョブのチェックポイント完了をスケジューラ1に報告する(S338)。この報告には、ジョブのダンプの格納場所が含まれる。そして、後述する「ジョブのリストア処理」Eが行われる。
 図32A、図32Bおよび図32Cは、「ジョブのリストア」Eを示すシーケンス図である。本処理は、ジョブがチェックポイントされた後、ジョブが実行を再開するまでの処理である。ジョブのリストアは、チェックポイントされたジョブのダンプから、ジョブを復元し動作を再開させる処理である。ジョブのリストアは、例えば、CRIU (https://www.criu.org/Main_Page、https://github.com/checkpoint-restore/criu) などを使用して実現される。
 本処理の前提として、ノード3は、キャッシュクラスタ7上のボリュームをジョブのダンプの格納場所としてマウントしている。ダンプの格納場所は、クラスタ共有ストレージ4上でもよい。スケジューラ1にジョブが登録される。スケジューラ1の制御により、キャッシュクラスタ7が学習対象データのキャッシュを開始する。ジョブがデプロイされる。キャッシュクラスタ7の学習対象データにジョブからアクセスが可能になる。ジョブが、学習処理を開始する(S351)。ジョブは、学習対象データにアクセスしながら、学習処理を行う。スケジューラ1がジョブをチェックポイントすることで、ジョブの実行を一次停止する。ジョブが停止された後も、学習対象データの未キャッシュ部分のプリフェッチは継続される。以下に、本処理を説明する。
 チェックポイントによりジョブの実行が一時停止されると、以下の「キャッシュクラスタのポーリング確認によるリストア待機」、「時間予測に基づくリストア待機」および「キャッシュクラスタから通知する場合」の3つの処理のいずれかの処理が行われる。
 「キャッシュクラスタのポーリング確認によるリストア待機」では、スケジューラ1がジョブのチェックポイント時のキャッシュデータ量と、学習対象データのデータ量とをキャッシュクラスタ7に問い合わせて(S352)、キャッシュクラスタ7からこれらの情報を取得する(S353)。学習対象データのデータ量はジョブ登録時にユーザから取得してもよい。そして、スケジューラ1は、キャッシュデータ量をキャッシュクラスタ7に問い合わせ、取得する(S354、S355)。スケジューラ1は、「キャッシュデータ量」-「チェックポイント時のキャッシュデータ量」>=「データ量閾値」となるまで、S354およびS355の処理を繰り返す。
 「時間予測に基づくリストア待機」では、スケジューラ1は、チェックポイント時のキャッシュデータ量と、キャッシュクラスタ7のキャッシュ速度と、学習対象データのデータ量とを、キャッシュクラスタ7に問い合わせ(S356)、これらの情報を取得する(S357)。学習対象データのデータ量はジョブ登録時にユーザから取得してもよい。キャッシュクラスタ7のキャッシュ速度は、キャッシュクラスタ7が学習対象データをキャッシュする際のデータ入力スループットを示す。
 スケジューラ1は、待機時間候補1を算出する(S358)。具体的には、スケジューラ1は、チェックポイント時のキャッシュデータ量とキャッシュ速度から、今後キャッシュデータ量が閾値を超過するまでの時間を時間候補1として算出する。スケジューラ1は、待機時間候補2を算出する(S359)。具体的には、スケジューラ1は、チェックポイント時のキャッシュデータ量とキャッシュ速度から、今後、学習対象データの全てがキャッシュされるまでの時間を時間候補2として算出する。スケジューラ1は、待機候補時間1と待機候補時間2とを比較し、短い方の時間待機する(S360)。
 「キャッシュクラスタから通知する場合」では、スケジューラ1は、必要なキャッシュデータ量をキャッシュクラスタ7に指示する(S361)。キャッシュクラスタ7は、学習対象データの未キャッシュ部分をキャッシュし(S362)、指示されたデータ量をキャッシュしたことを契機にスケジューラ1に通知する(S363)。
 スケジューラ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にアクセスして前記ジョブを実行する。
 これにより本実施形態では、ストレージの速度不足により発生するGPUの遊休時間を低減し、GPUの稼働率を向上させることができる。すなわち、学習対象データなどのデータの読み出しを高速化することができ、GPUクラスタシステムの提供事業者によるGPUの稼働率を高めることができる。
 また、本実施形態では、実行前のジョブをフェッチングジョブリスト30に登録し、キャッシュクラスタ7にデータのプリフェッチを開始させる。このように、GPUによるジョブの実行と並行してデータのプリフェッチを行うことで、GPUを効率的に使用することができる。
 また、本実施形態では、データ待ちによるGPU遊休時にジョブを一時停止し、他のジョブにGPUを譲ることで、GPUの稼働率を向上することができる。
 (ハードウェア構成)
 上記説明したスケジューラ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の各機能が実現される。
 また、スケジューラ1は、1つのコンピュータで実装されてもよく、あるいは複数のコンピュータで実装されても良い。また、スケジューラ1は、コンピュータに実装される仮想マシンであっても良い。
 スケジューラ1用のプログラムは、HDD、SSD、USB(Universal Serial Bus)メモリ、CD (Compact Disc)、DVD (Digital Versatile Disc)などのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
 なお、本発明は上記実施形態および変形例に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
 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 :キャッシュクラスタ

Claims (7)

  1.  GPUクラスタシステムが行うスケジューリング方法であって、
     スケジューラは、
      投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納するステップと、
      第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、前記ジョブのデータのフェッチをキャッシュクラスタに開始させるステップと、
      フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納するステップと、
      第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示するステップと、を行い、
     前記キャッシュクラスタは、
      フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納するステップを行い、
     GPUクラスタは、
      前記キャッシュクラスタのデータにアクセスして、ジョブを実行するステップを行う
     スケジューリング方法。
  2.  GPUクラスタシステムにおけるスケジューラであって、
     投入されたジョブを、フェッチ開始待ちのジョブを格納する第1ステージキューに格納する第1キューセレクタと、
     第1ステージキューのジョブを取り出してフェッチングジョブリストに登録し、ストレージに格納された、前記ジョブのデータのフェッチをキャッシュクラスタに開始させる第1ジョブセレクタと、
     フェッチしたデータ量が所定の閾値を超えたジョブを、フェッチングジョブリストから取り出し、デプロイ待ちのジョブを格納する第2ステージキューに格納する第2キューセレクタと、
     第2ステージキューからジョブを取り出し、当該ジョブのデプロイを指示する第2ジョブセレクタと、を有し、
     前記ジョブのデプロイ指示には、前記ジョブのデータの格納場所として前記キャッシュクラスタが指定され、GPUクラスタは前記キャッシュクラスタにアクセスして前記ジョブを実行する
     スケジューラ。
  3.  請求項2記載のスケジューラであって、
     第1ステージキューは、公平性の観点から各ユーザに割り当てられたGPUの割当量を超えていないジョブが格納されるジョブキューと、前記割当量を超えたジョブが格納される超過ジョブキューとを備え、
     第1ジョブセレクタは、前記ジョブキューのジョブを前記超過ジョブキューのジョブより優先的にフェッチングジョブリストに登録する
     スケジューラ。
  4.  請求項2または3記載のスケジューラであって、
     第2ステージキューは、リストア待ちのジョブが格納されるリストアキューと、デプロイ待ちのジョブが格納されるデプロイキューと、公平性の観点から各ユーザに割り当てられたGPUの割当量を超えたジョブが格納され超過キューとを備え、
     第2ジョブセレクタは、前記リストアキューのジョブを前記デプロイキューのジョブより優先的にデプロイ指示し、前記デプロイキューのジョブを前記超過キューのジョブより優先的にデプロイ指示する
     スケジューラ。
  5.  請求項4記載のスケジューラであって、
     第2ジョブセレクタは、前記リストアキュー、前記デプロイキューおよびの前記超過キューの全てが空の場合、第2キューセレクタを起動し、フェッチングジョブリストの中でフェッチしたデータ量が最も多いジョブまたはフェッチングジョブリストの先頭のジョブを、前記リストアキュー、前記デプロイキューおよびの前記超過キューのいずれかに格納させる
     スケジューラ。
  6.  請求項2から5のいずれか1項に記載のスケジューラと、キャッシュクラスタと、GPUクラスタとを備えるGPUクラスタシステムであって、
     前記キャッシュクラスタは、フェッチングジョブリストに登録されたジョブのデータを、当該データが格納されたストレージからフェッチして、当該キャッシュクラスタに格納し、
     前記GPUクラスタは、前記キャッシュクラスタのデータにアクセスして、ジョブを実行する
     GPUクラスタシステム。
  7.  請求項2から5のいずれか1項に記載のスケジューラとして、コンピュータを機能させるプログラム。
PCT/JP2020/016697 2020-04-16 2020-04-16 スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム WO2021210123A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022514945A JP7385156B2 (ja) 2020-04-16 2020-04-16 スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム
PCT/JP2020/016697 WO2021210123A1 (ja) 2020-04-16 2020-04-16 スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/016697 WO2021210123A1 (ja) 2020-04-16 2020-04-16 スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム

Publications (1)

Publication Number Publication Date
WO2021210123A1 true WO2021210123A1 (ja) 2021-10-21

Family

ID=78083559

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/016697 WO2021210123A1 (ja) 2020-04-16 2020-04-16 スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム

Country Status (2)

Country Link
JP (1) JP7385156B2 (ja)
WO (1) WO2021210123A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706690A (zh) * 2022-06-06 2022-07-05 浪潮通信技术有限公司 一种Kubernetes容器共享GPU方法及系统
CN115617364A (zh) * 2022-12-20 2023-01-17 中化现代农业有限公司 Gpu虚拟化部署方法、系统、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154528A (ja) * 2010-01-27 2011-08-11 Renesas Electronics Corp データ処理装置
WO2014016951A1 (ja) * 2012-07-27 2014-01-30 株式会社日立製作所 情報処理装置
WO2017131187A1 (ja) * 2016-01-29 2017-08-03 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154528A (ja) * 2010-01-27 2011-08-11 Renesas Electronics Corp データ処理装置
WO2014016951A1 (ja) * 2012-07-27 2014-01-30 株式会社日立製作所 情報処理装置
WO2017131187A1 (ja) * 2016-01-29 2017-08-03 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706690A (zh) * 2022-06-06 2022-07-05 浪潮通信技术有限公司 一种Kubernetes容器共享GPU方法及系统
CN115617364A (zh) * 2022-12-20 2023-01-17 中化现代农业有限公司 Gpu虚拟化部署方法、系统、计算机设备和存储介质

Also Published As

Publication number Publication date
JP7385156B2 (ja) 2023-11-22
JPWO2021210123A1 (ja) 2021-10-21

Similar Documents

Publication Publication Date Title
US6026452A (en) Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
JP4781089B2 (ja) タスク割り当て方法およびタスク割り当て装置
WO2018005613A1 (en) Systems and methods for efficient distribution of stored data objects
US20150074222A1 (en) Method and apparatus for load balancing and dynamic scaling for low delay two-tier distributed cache storage system
CN102981929B (zh) 磁盘镜像的管理方法和系统
WO2021210123A1 (ja) スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム
CN110069341B (zh) 边缘计算中结合功能按需配置的有依赖关系任务的调度方法
US11461119B2 (en) Virtual containers configured to support multiple machine learning models
US20160156715A1 (en) Optimal allocation of dynamically instantiated services among computation resources
US11966768B2 (en) Apparatus and method for multi-cloud service platform
CN111427675B (zh) 一种数据处理方法、装置以及计算机可读存储介质
JP2005031987A (ja) コンテンツ配信システムにおけるコンテンツ配置管理システム及びコンテンツ配置管理プログラム
CN112600761B (zh) 一种资源分配的方法、装置及存储介质
CN106254561A (zh) 一种网络资源文件的实时离线下载方法及系统
Rajalakshmi et al. An improved dynamic data replica selection and placement in cloud
CN108073457B (zh) 一种超融合基础架构的分层资源管理方法、装置及系统
CN112905325B (zh) 一种分布式数据缓存加速训练的方法、系统及介质
Czarnul A model, design, and implementation of an efficient multithreaded workflow execution engine with data streaming, caching, and storage constraints
US11916998B2 (en) Multi-cloud edge system
CN117215493A (zh) 文件共享系统
CN116974465A (zh) 数据加载方法、装置、设备及计算机存储介质
Tang et al. A block-level caching optimization method for mobile transparent computing
Bakhshad et al. A Dynamic Replication Aware Load Balanced Scheduling for Data Grids in Distributed Environments of Internet of Things.
CN106775942B (zh) 一种云应用导向的固态盘缓存管理系统及方法
CN114880147A (zh) 一种显存共享方法、装置、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20931419

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022514945

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20931419

Country of ref document: EP

Kind code of ref document: A1