WO2021177249A1 - 情報処理装置、情報処理方法および情報処理プログラム - Google Patents
情報処理装置、情報処理方法および情報処理プログラム Download PDFInfo
- Publication number
- WO2021177249A1 WO2021177249A1 PCT/JP2021/007781 JP2021007781W WO2021177249A1 WO 2021177249 A1 WO2021177249 A1 WO 2021177249A1 JP 2021007781 W JP2021007781 W JP 2021007781W WO 2021177249 A1 WO2021177249 A1 WO 2021177249A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- learning process
- information processing
- memory
- schedule
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Definitions
- This disclosure relates to an information processing device, an information processing method, and an information processing program.
- the information processing device of one form according to the present disclosure includes an acquisition unit and a determination unit.
- the acquisition unit acquires order information indicating the order of use of data transferred to the internal memory in the learning process by performing the first learning process. do.
- the determination unit determines a schedule for memory swap of the data in the learning process from the next time onward.
- a plurality of components having substantially the same functional configuration may be distinguished by adding different numbers after the same reference numerals. However, if it is not necessary to distinguish each of the plurality of components having substantially the same functional configuration, only the same reference numerals are given.
- FIG. 1A and FIG. 1B are diagrams showing an outline of the information processing method according to the embodiment.
- FIG. 1A shows an information processing system S.
- the information processing system S according to the embodiment includes a GPU (Graphics Processing Unit) 1 and a CPU (Central Processing Unit) 100.
- GPU Graphics Processing Unit
- CPU Central Processing Unit
- the GPU 1 is an information processing device that executes deep learning, and includes a core 2 (control unit 2 described later) and an internal memory 3 (storage unit 3 described later).
- the CPU 100 is an information processing device, and has an external memory 110 that is a swap destination of the internal memory 3 when the GPU 1 executes deep learning.
- FIG. 1A shows an example of deep learning using a neural network. That is, the core 2 of the GPU 1 performs a function calculation in order from the input layer L1 to the output layer L2 by forward propagation, and inputs from the output layer L2 by back propagation based on the error between the output data of the output layer L2 and the teacher data. A function calculation is performed to modify each parameter (weight value, etc.) toward the layer L1.
- learning data (each parameter, etc.) is swapped in from the external memory 110 of the CPU 100 to the internal memory 3, or swapped out from the internal memory 3 to the external memory 110. By doing so, the amount of memory area used in the internal memory 3 is reduced.
- “learning data” may be simply referred to as "data”.
- the information processing method according to the embodiment it was decided to reduce the processing overhead by optimizing the memory swap schedule.
- the information processing method according to the embodiment will be described with reference to FIG. 1B.
- the "execution of the learning process” shown below is not limited to the case of actually executing the learning process, but also the case of executing the learning process in a simulation manner for the analysis of deep learning. May (that is, not actually do it).
- the first learning process (first learning process) is executed (step S1).
- order information indicating the order of use of the learning data transferred (swap-in) to the internal memory 3 is acquired (step S2).
- FIG. 1B schematically shows an example of order information.
- each layer in forward propagation processing conv1, conv2, loss: layer of function calculation
- each layer in backpropagation processing ⁇ loss, ⁇ w conv2, ⁇ x conv2, ⁇ w conv1: layer of function calculation
- update layer of function calculation
- read which is a solid line circle
- write which is a broken line circle with a narrow interval
- Read & write which is a dashed circle with a wide interval, indicates that the data is to be written, and indicates that the data is read / written to the internal memory 3.
- the order information is information indicating at what timing each data is used (at what timing is swapped in) in the forward propagation process, the back propagation process, and the update process, which are learning processes.
- the schedule for data memory swap in the next and subsequent learning processes is determined based on the acquired order information (step S3).
- the timing of swapping data into the internal memory 3 the timing of swapping out from the internal memory 3 to the external memory 110, and the timing of deleting the data and releasing the memory are shown. Determine the schedule. The detailed schedule determination method will be described later.
- the second and subsequent learning processes are repeatedly executed according to the determined schedule (step S4).
- the optimum memory swap processing schedule that is unlikely to cause processing overhead in the next and subsequent learning processes is determined. As a result, it is possible to suppress the processing overhead caused by the memory swap processing in the learning processing from the next time onward.
- the processing overhead in the first learning process can be ignored from the viewpoint of deep learning as a whole.
- the processing overhead in the first learning process is suppressed by performing memory swap according to the determined schedule for the first learning process when actually executing deep learning. be able to.
- the processing overhead in deep learning can be suppressed.
- the internal memory 3 is divided into a memory area dedicated to swap-in and a memory area dedicated to swap-out, and this point will be described later.
- FIG. 2 is a block diagram showing a configuration example of the information processing device 1 according to the embodiment.
- the information processing device 1 shown in FIG. 2 is, for example, GPU1, but is not limited to GPU1 and may be any processor capable of executing deep learning.
- the information processing device 1 includes a control unit 2 and a storage unit 3. Further, the information processing device 1 is connected to a CPU 100 having an external memory 110 (see FIG. 1A) as a data swap destination.
- the control unit 2 is realized by, for example, a GPU or the like executing a program stored in the information processing device 1 with a RAM or the like as a work area. Further, the control unit 2 is a controller, and is realized by, for example, an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- control unit 2 has an execution unit 21, an acquisition unit 22, and a determination unit 23, and realizes or executes an information processing function or operation described below.
- the internal configuration of the control unit 2 is not limited to the configuration shown in FIG. 2, and may be another configuration as long as it is a configuration for performing information processing described later.
- the storage unit 3 is realized by, for example, a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory), or a storage device such as a hard disk or an optical disk. As shown in FIG. 2, the storage unit 3 according to the embodiment stores the learning data 31 and the schedule information 32.
- the learning data 31 is data such as variables and weights in the function calculation, and is data used in the learning process.
- the learning data 31 is input by a user who executes deep learning, or is generated in the process of learning processing executed by the execution unit 21, which will be described later.
- the learning data 31 also includes output data of the intermediate layer generated by the forward propagation process and various intermediate output data generated by a series of calculation processes (forward propagation process, back propagation process and update process). ..
- the schedule information 32 is schedule information related to memory swap of data in the learning process, and includes information such as swap-in timing, swap-out timing, and timing for deleting data and releasing memory.
- the schedule information 32 is information generated by the determination unit 23 described later, and is information used by the execution unit 21 described later.
- control unit 2 execution unit 21, acquisition unit 22, and determination unit 23
- the execution unit 21 repeatedly executes the learning process related to deep learning. Specifically, the execution unit 21 performs a function calculation in the learning process, a memory swap of data necessary for the function calculation (swap-in to the internal memory 3 and swap-out to the external memory 110), and the like.
- the memory swap executed by the execution unit 21 is different between the first learning process (1st iteration) and the second and subsequent learning processes (2nd iteration and thereafter).
- the execution unit 21 swaps in the data required immediately before the calculation from the external memory 110 to the internal memory 3 for each function calculation, and performs the function calculation. Then, the execution unit 21 immediately swaps out the data used after the function calculation.
- the execution unit 21 repeats swap-in and swap-out for each function calculation. As a result, the memory shortage of the internal memory 3 does not occur, so that the first learning process can be reliably completed.
- the execution unit 21 executes the learning process (memory swap) according to the schedule determined by the determination unit 23, which will be described later. Specifically, the execution unit 21 repeats the learning process according to the schedule information stored in the storage unit 3. The schedule determined by the determination unit 23 will be described later.
- the acquisition unit 22 acquires order information indicating the order of use of the data transferred to the internal memory 3 in the learning process when the first learning process is executed by the execution unit 21. For example, the acquisition unit 22 observes the order of swap-in and swap-out of the learning data 31 stored in the storage unit 3 which is the internal memory 3 and acquires it as order information.
- the acquisition unit 22 does not acquire order information for the second and subsequent learning processes. As a result, it is possible to prevent the processing load of the control unit 2 from increasing.
- the determination unit 23 determines a schedule for data memory swap in the next and subsequent learning processes based on the order information acquired by the acquisition unit 22, and stores the schedule information 32 in the storage unit 3. This schedule determination process is performed after the first learning process and before the second learning process.
- the determination unit 23 sets the memory area for the memory swap of the learning process based on the memory area of the internal memory 3. This point will be described with reference to FIGS. 3 and 4.
- 3 and 4 are diagrams for explaining a method of setting a memory area in the internal memory 3.
- the width (horizontal direction of the paper surface) of the rectangular shape shown in FIG. 3 corresponds to the maximum memory capacity of the internal memory 3.
- the determination unit 23 divides the memory area of the internal memory 3 into a first area 310 in which the swapped-in data is written and a second area 320 in which the swapped-out data is written. ..
- the determination unit 23 divides the first area 310 and the second area 320 so that the memory capacities are the same. That is, the memory capacity of each of the first area 310 and the second area 320 corresponds to 1/2 of the maximum memory capacity of the internal memory 3.
- the boundary between the first region 310 and the second region 320 corresponds to the execution position of the function calculation.
- the internal memory 3 is visualized in a rectangular shape, and the determination unit 23 uses the first area 310, the second area 320, and the function calculation execution position of the rectangular shape internal memory 3 to store the memory.
- the swap schedule is determined, which will be described in FIG.
- FIG. 3 shows a case where the first area 310 and the second area 320 are allocated so as to have the same memory capacity
- the allocation of the first area 310 and the second area 320 can be arbitrarily set. Also, the allocation can be changed dynamically during the learning process. The point of dynamically changing the allocation will be described later in FIG.
- the first area 310 is a memory area for storing data swapped in to the internal memory 3.
- the second area 320 is a memory area for storing data swapped out from the internal memory 3 to the external memory 110.
- the determination unit 23 sequentially swaps in the data according to the usage order of the data which is the order information acquired by the acquisition unit 22, and sequentially swaps out the data that has been used in the function calculation. go.
- the determination unit 23 first starts swapping in data if there is free space in the memory area of the first area 310 (step S11). If there is no free space in the memory area of the first area 310, the determination unit 23 waits for the execution of step S11 until the data swap-out in step S15, which will be described later, is completed.
- the determination unit 23 executes the function calculation using the data (step S12). Then, after the function calculation is completed, the determination unit 23 transfers the used data to the second region 320 (step S13).
- transferring data from the first area 310 to the second area 320 may be a process of actually transferring the data from the memory area of the first area 310 to the memory area of the second area 320, or the data may be transferred. Instead of actually transferring the data, the process may be a process of changing the tag "data in the first region 310" and the tag "data in the second region 320".
- the first area 310 and the second area 320 in the internal memory 3 may indicate the position of the memory area, or may indicate the allocation of the memory capacity.
- step S14 when the determination unit 23 transfers the data from the first region 310 to the second region 320, the determination unit 23 starts swapping out the data (step S14).
- the details will be described later, when the same data is used again in the latest function calculation, it may be retained in the internal memory 3 (first area 310 described later) without swapping out.
- the determination unit 23 releases the memory area (step S15). As a result, the released memory area is used as the first area 310.
- 5 to 9 are diagrams showing a schedule determination process by the determination unit 23.
- FIG. 5 shows an example in which each rectangle corresponds to one data and a plurality of rectangles are arranged in the order in which the data is used.
- FIG. 5 it is assumed that the rectangular-shaped area corresponding to the internal memory 3 shown in FIG. 3 moves in the direction of the order of use.
- the first area 310, the second area 320, and the function calculation execution position are not shown in FIG. 5, the first area 310 and the second area 320 each have the same memory capacity, and the function calculation execution position. Is the central position of the area of the internal memory 3.
- "Head” indicates the position of data in the first region 310 at which swap-in starts
- “Tail” indicates the position of data in the second region 320 at which swap-out ends.
- the time i + 1 is reached. That is, the rectangular-shaped area corresponding to the internal memory 3 moves in the direction of the order of use by the amount of data corresponding to one function calculation process.
- the data required for the function calculation (fi) need only be swapped in by the time immediately before the execution of the function calculation (fi), and the swap-in must be completed by the time immediately before the execution of the function calculation (fi). For example, it waits for the completion of swap-in immediately before executing the function calculation (fi). In this way, since the swap-in processing and the swap-out processing can be hidden during the time during which the function calculation processing is being executed, the processing overhead caused by the swap-in processing and the swap-out processing can be suppressed.
- the determination unit 23 schedules the function calculation process of fi to be executed at time i, and further, the swap-in process and the swap-out process of the data at the positions corresponding to the order of use during the execution of the function calculation process of fi. Just schedule it to run.
- the execution unit 21 executes the function calculation process of fi at time i, and further, the data of the position corresponding to the order of use during the execution of the function calculation process of fi. Swap-in processing and swap-out processing are executed.
- the basic operation shown in FIG. 5 sequentially swaps in the data in the first area 310 and sequentially swaps out the data in the second area 320.
- the first area 310 Irregular operations such as not swapping in the data of the second region 320 or not swapping out the data of the second region 320 may occur. This point will be described with reference to FIGS. 6 to 9.
- the determination unit 23 determines the schedule for swapping in the data D1 at the position of “Head” which is the first region 310 in the order of use, the data D1 is already in the internal memory. If it exists in 3, the data D1 at the "Head" position is not swapped in.
- the determination unit 23 determines the schedule for prohibiting the swap-in of the data D1.
- the determination unit 23 does not swap in the data D1 at the position of “Head” shown in FIG. 6, as shown in FIG. 7, after executing the function calculation process of fi using the data D1, the data D1 Is scheduled not to be swapped out so that the data D1 can be used in a later function calculation process.
- the determination unit 23 prohibits the swap-in of the later data D1 in the order of use
- the determination unit 23 prohibits the swap-out after executing the function calculation of the previous data D1 in the order of use.
- the function calculation can be performed as the later data D1 in the order of use.
- the determination unit 23 first executes the function calculation process of fi using the data D1 already swapped in to the internal memory 3, and then reaches the “Head” position of the internal memory 3. Since there is no plan to use the data D1, the swap-out of the data D1 is scheduled (step S21).
- the determination unit 23 proceeds with the function calculation process, and when the data D1 appears at the position of "Head", that is, when it is detected that the data D1 is swapped in at the position of "Head” (step S22). ), The schedule of the data D1 scheduled to be swapped out earlier in the order of use is canceled (step S23).
- the determination unit 23 determines the schedule for prohibiting the swap-in of the data D1 in step S22, and determines the schedule for prohibiting the swap-out of the data D1 in step S23.
- the data D1 shown in FIG. 8 is any one of "read”, “write”, and “read & write”. Therefore, when the data D1 is "write”, it is written as the processing result of the function calculation. Therefore, even if the data D1 comes to the "Head” position, it is not necessary to actually swap in.
- the determination unit 23 decides not to swap in the data D1. This point will be described with reference to FIG.
- the determination unit 23 determines the schedule for prohibiting the swap-in of the data D1. That is, the determination unit 23 can omit the unnecessary process of starting the swap-in process for the non-existent data D1.
- the determination unit 23 is an empty area 330 which is an empty memory area for writing the data D1 which is the processing result by just before the function calculation corresponding to the data D1 is executed. To secure.
- the determination unit 23 secures an empty area 330 for storing the data D1 in the internal memory 3. Determine the schedule.
- the timing for securing (generating) the empty area 330 may be any timing.
- the determination unit 23 may secure the empty area 330 at the timing when the function calculation immediately before the corresponding function calculation is performed, and the empty area 330 corresponding to the data D1 at the position of “Head” may be secured. You may try to secure it.
- the determination unit 23 determines the data schedule according to the order of use, the empty area 330 shown in FIG. 9 cannot be secured, and the memory may be insufficient. Therefore, when the determination unit 23 finds that the memory shortage for the empty area 330 is insufficient, the determination unit 23 redoes (reschedules) the schedule. This point will be described with reference to FIG.
- FIG. 10 is a diagram showing reschedule processing by the determination unit 23. Note that each node N1 to N4 shown in FIG. 10 indicates a function calculation, and the numbers described inside the white circles indicate the number of data to be swapped in during the execution of each function calculation. ing. In FIG. 10, for convenience of explanation, it is shown as the number of data, but it is actually the amount of memory used in the internal memory 3.
- the determination unit 23 swaps in one data during the execution of the function calculation of the node N1, swaps in three data during the execution of the function calculation of the node N2, and the node. It is assumed that the schedule for swapping in two data is decided during the execution of the function calculation of N3. Then, it is assumed that the memory shortage occurs by swapping in the data of the nodes N1 to N3, and the empty area 330 for storing (writing) the data of the processing result of the function calculation of the node N4 cannot be secured.
- the determination unit 23 reschedules the number of data to be swapped in at the nodes N1 to N4 so that the empty area 330 can be secured at the node N4. Specifically, the determination unit 23 first calculates the memory capacity (the number of data) that is insufficient to secure the empty area 330 in the node N4, and in order to satisfy the insufficient memory capacity. Reschedule nodes N2 to N4.
- the number of data to be swapped in in the nodes N2 to N4 is set to zero, that is, the data is not swapped in. Schedule.
- the determination unit 23 detects the memory shortage of the internal memory 3 at the node N4.
- the determination unit 23 detects a memory shortage, it backtracks the node until the required amount of memory can be secured in the node N4.
- the determination unit 23 initializes the amount of receivable memory in the node N4 to zero.
- the determination unit 23 returns to the previous node N3, adds the memory amount "2" of the node N3 to the available memory amount, and rewrites the memory amount "2" of the node N3 to "0". In this way, the determination unit 23 goes back from the node N4 and backtracks until the amount of receivable memory> the amount of insufficient memory.
- the determination unit 23 reschedules the node N2 and the node N3 to solve the memory shortage in the node N4.
- the determination unit 23 does not perform the function calculation again after the function calculation of the predetermined th (predetermined time), that is, in the learning process, the data that does not occur later in the order of use is swapped after the function calculation. Delete the data and free the memory area without going out.
- FIG. 11 is a diagram showing a method of setting a memory area in the internal memory 3 according to the modified example.
- the start position of the order of use is the position of the first data in the learning process, that is, the position where the learning process is started. Therefore, the internal memory 3-1 at the start position is swapped. No data exists because it is not swapped in.
- the determination unit 23 swaps in data with all the memory areas of the internal memory 3 as the first area 310. This is because there is no data to be swapped out immediately after the start of the learning process, so even if the second region 320 is set, it is not actually used. As a result, more data can be swapped in immediately after the start of the learning process, and it is possible to avoid a situation in which the function calculation is not performed because the data is not swapped in.
- the determination unit 23 increases the allocation of the second area 320 as the order of use progresses, as in the internal memories 3-3 to 3-4, and finally, the first area 310 and the second area 320. Have almost the same distribution.
- the determination unit 23 sets only the first region 310 at the beginning of the usage order, and increases the allocation of the second region 320 as the usage order progresses. As a result, the unused area of the internal memory 3 can be reduced, so that the memory efficiency can be improved.
- the determination unit 23 is not limited to the case of dynamically changing the distribution of the first area 310 and the second area 320 according to the order of use, for example, the first area 310 and the first area 310 according to the processing process in the learning process.
- the allocation of the two regions 320 may be changed.
- the learning process includes a processing process of forward propagation processing, back propagation processing, and update processing in the neural network.
- the forward propagation process has a large number of data to be swapped out for the subsequent back propagation process.
- the back propagation process it is not necessary to swap out the data for the subsequent processing, so that the number of data to be swapped out is small.
- the determination unit 23 makes the allocation of the second region 320 larger than that of the first region 310. As a result, the processing overhead caused by the swap-out processing can be suppressed.
- the determination unit 23 makes the allocation of the first region 310 larger than that of the second region 320. As a result, the processing overhead caused by the swap-in processing can be suppressed.
- the allocation of the first area 310 and the second area 320 in the internal memory 3 is determined.
- the previous data in the usage order is swapped in until the first area 310 is used up. Is what you do. That is, the target range for determining whether or not to swap in varies according to the free capacity of the first area 310.
- the target range 500 (see FIG. 12) for determining whether or not to swap in is determined (fixed).
- the schedule determination process using the target range 500 will be described with reference to FIGS. 12 to 14.
- FIGS. 12 to 14 are diagrams showing a schedule determination process using the target range 500.
- the determination unit 23 determines whether or not to swap in a range up to a predetermined number of data N located earlier in the order of use with reference to the data of the function execution position. Determined as 500. That is, the target range 500 is the range of the usage order that should be swapped in to the internal surface memory 3 at the predetermined function execution position. Specifically, the data in the usage order starts from the data at the function execution position. The range is several N ahead.
- the number of data N is shown as the number of data in FIG. 12 for convenience, but strictly speaking, it is the amount of data (for example, bytes), and is specified by, for example, a user who performs deep learning.
- the number of data N is preferably a value smaller than the maximum amount of memory of the internal memory 3.
- the determination unit 23 determines a schedule for whether or not to swap in the number of data N within the target range 500, starting from the function calculation (fi) which is the function calculation execution position. Since the method of determining the schedule for whether or not to swap in is the same as that of the above-described embodiment, the description thereof will be omitted here.
- the determination unit 23 determines the schedule for swapping in four data D1 out of the number of data N, when the function calculation (fi) is executed, the determination unit 23 has four data out of the memory area of the internal memory 3. The memory area for D1 is determined for swap-in. Then, the determination unit 23 determines the memory area of the internal memory 3 excluding the memory area for swap-in for swap-out.
- the data is swapped in until the first area 310 is full, whereas in FIG. 12, the data should be swapped in instead of setting the first area 310.
- the range is preset as the target range 500.
- the number of data N is not limited to the case specified by the user, and may be automatically set such as n% (n is less than 100) of the maximum memory amount of the internal memory 3.
- the time required for each function calculation may be acquired by the first learning process, and the number N of data that can minimize the processing overhead associated with waiting for the completion of swap-in may be automatically determined based on the time required.
- the determination unit 23 determines a schedule for swapping out the oldest data D2 among the data D2 scheduled to be swapped out before swapping in the data D3, thereby determining a memory area for swapping in the data D3. Free up. Then, the determination unit 23 determines the schedule for starting the swap-in of the data D3 after the swap-out of the oldest data D2 among the data D2 scheduled to be swapped out is completed. As a result, the data D3 can be reliably swapped in.
- the determination unit 23 executes the function calculation (fi) in a state where the memory area for writing the data D3 is secured after the swap-out of the oldest data D2 among the data D2 scheduled to be swapped out is completed. Determine the schedule. As a result, a free area for the data D3 can be reliably secured.
- FIG. 15 is a flowchart showing a processing procedure of processing executed by the information processing apparatus 1 according to the embodiment.
- the execution unit 21 executes the first learning process (step S101).
- the first learning process since the schedule for the memory swap is not determined, the data required for the function calculation is swapped in to the internal memory 3, and the used data is swapped out to the external memory 110 after the function calculation.
- the acquisition unit 22 acquires order information indicating the order of use of the data transferred to the internal memory 3 in the first learning process (step S102).
- the determination unit 23 determines the schedule for the memory swap of the learning process from the next time onward based on the order information acquired by the acquisition unit 22 (step S103).
- the execution unit 21 executes the learning process from the next time onward according to the schedule determined by the decision unit 23 (step S104), and ends the process.
- FIG. 16 is a block diagram showing an example of the hardware configuration of the information processing apparatus 1 according to the embodiment.
- the information processing apparatus 1 includes a GPU (Graphics Processing Unit) 900, a CPU (Central Processing Unit) 901, a ROM (Read Only Memory) 902, a RAM (Random Access Memory) 903, and a host bus 903. It includes a 907, an external bus 906, an interface 908, an input device 911, an output device 912, a storage device 913, a drive 914, a connection port 915, and a communication device 916.
- the information processing device 1 may be provided with a processing circuit such as an electric circuit, a DSP, or an ASIC in place of or in combination with at least one of the GPU 900 and the CPU 901.
- the GPU 900 and the CPU 901 function as an arithmetic processing device and a control device, and control the overall operation in the information processing device 1 according to various programs. Further, the GPU 900 and the CPU 901 may be microprocessors.
- the ROM 902 stores programs, calculation parameters, and the like used by the GPU 900 and the CPU 901.
- the RAM 903 temporarily stores a program used in the execution of the GPU 900 and the CPU 901, parameters that change as appropriate in the execution, and the like.
- the RAM 903 has a dedicated memory area corresponding to each of the GPU 900 and the CPU 901.
- the GPU 900 and the CPU 901 may execute the functions of the execution unit 21, the acquisition unit 22, and the determination unit 23, for example. Twice
- the GPU 900, CPU 901, ROM 902 and RAM 903 are connected to each other by a host bus 905 including a CPU bus and the like.
- the host bus 905 is connected to an external bus 906 such as a PCI (Peripheral Component Interconnect / Interface) bus via a bridge 907.
- the host bus 905, the bridge 907, and the external bus 906 do not necessarily have to be separately configured, and these functions may be implemented in one bus. Twice
- the input device 911 is a device in which information is input by a user such as a mouse, keyboard, touch panel, buttons, microphone, switch, or lever.
- the input device 911 may be a remote control device using infrared rays or other radio waves, or may be an externally connected device such as a mobile phone or a PDA that supports the operation of the information processing device 1.
- the input device 911 may include, for example, an input control circuit that generates an input signal based on the information input by the user using the above input means. Twice
- the output device 912 is a device capable of visually or audibly notifying the user of information.
- the output device 912 is, for example, a display device such as a CRT (Cathode Ray Tube) display device, a liquid crystal display device, a plasma display device, an EL (ElectroLuminence) display device, a laser projector, an LED (Light Emitting Diode) projector, or a lamp. It may be an audio output device such as a speaker or a headphone. Twice a CTR (Cathode Ray Tube) display device, a liquid crystal display device, a plasma display device, an EL (ElectroLuminence) display device, a laser projector, an LED (Light Emitting Diode) projector, or a lamp. It may be an audio output device such as a speaker or a headphone. Twice
- CTR Cathode Ray Tube
- a liquid crystal display device such as a liquid crystal display device, a plasma display device, an EL (Electr
- the output device 912 may output the results obtained by various processes by the information processing device 1, for example. Specifically, the output device 912 may visually display the results obtained by various processes by the information processing device 1 in various formats such as texts, images, tables, and graphs. Alternatively, the output device 912 may convert an audio signal such as audio data or acoustic data into an analog signal and output it audibly. Twice
- the storage device 913 is a data storage device formed as an example of the storage unit of the information processing device 1.
- the storage device 913 may be realized by, for example, a magnetic storage device such as an HDD (Hard Disk Drive), a semiconductor storage device, an optical storage device, an optical magnetic storage device, or the like.
- the storage device 913 may include a storage medium, a recording device that records data on the storage medium, a reading device that reads data from the storage medium, a deleting device that deletes the data recorded on the storage medium, and the like.
- the storage device 913 may store a program executed by the CPU 901, various data, various data acquired from the outside, and the like.
- the drive 914 is a reader / writer for a storage medium, and is built in or externally attached to the information processing device 1.
- the drive 914 reads information recorded on a removable storage medium such as a mounted magnetic disk, optical disk, magneto-optical disk, or semiconductor memory, and outputs the information to the RAM 903.
- the drive 914 can also write information to the removable storage medium. Twice
- connection port 915 is an interface connected to an external device.
- the connection port 915 is a connection port capable of transmitting data to an external device, and may be, for example, USB (Universal Serial Bus). Twice
- the communication device 916 is, for example, an interface formed by a communication device or the like for connecting to the network N.
- the communication device 916 may be, for example, a communication card for a wired or wireless LAN (Local Area Network), LTE (Long Term Evolution), Bluetooth (registered trademark), WUSB (Wireless USB), or the like.
- the communication device 916 may be a router for optical communication, a router for ADSL (Asymmetric Digital Subscriber Line), a modem for various communications, or the like.
- the communication device 916 can send and receive signals and the like to and from the Internet or other communication devices in accordance with a predetermined protocol such as TCP / IP. Twice
- a predetermined protocol such as TCP / IP. Twice
- the network 40 is a wired or wireless transmission line for information.
- the network 40 may include a public line network such as the Internet, a telephone line network or a satellite communication network, various LANs (Local Area Network) including Ethernet (registered trademark), WAN (Wide Area Network), and the like.
- the network 40 may include a dedicated line network such as IP-VPN (Internet Protocol-Virtual Private Network). Twice
- the information processing program may be stored in a disk device provided in a server device on a network such as the Internet so that it can be downloaded to a computer or the like.
- the above-mentioned functions may be realized by the collaboration between the OS (Operating System) and the application software.
- the part other than the OS may be stored in a medium and distributed, or the part other than the OS may be stored in the server device so that it can be downloaded to a computer or the like.
- each component of each device shown in the figure is a functional concept, and does not necessarily have to be physically configured as shown in the figure. That is, the specific form of distribution / integration of each device is not limited to the one shown in the figure, and all or part of the device is functionally or physically dispersed / physically distributed in arbitrary units according to various loads and usage conditions. Can be integrated and configured.
- the information processing device 1 includes an acquisition unit 22 and a determination unit 23.
- the acquisition unit 22 acquires order information indicating the order in which the data transferred to the internal memory 3 is used in the learning process by performing the first learning process in the deep learning in which the learning process corresponding to one iteration is repeatedly executed. ..
- the determination unit 23 determines the schedule regarding the memory swap of the data in the next and subsequent learning processes based on the order information acquired by the acquisition unit 22. As a result, the processing overhead in deep learning can be suppressed.
- the present technology can also have the following configurations.
- (1) In deep learning in which a learning process corresponding to one iteration is repeatedly executed, by performing the first learning process, an acquisition unit that acquires order information indicating the order of use of data transferred to the internal memory in the learning process, and an acquisition unit.
- An information processing device including a determination unit that determines a schedule for memory swap of the data in the learning process from the next time onward based on the order information acquired by the acquisition unit.
- An execution unit that executes the learning process from the next time onward according to the schedule determined by the determination unit is further provided.
- the execution unit The information processing apparatus according to (1), wherein in the first learning process, the data is swapped in immediately before the calculation and the data is swapped out after the calculation for each function calculation.
- the decision unit The information according to (1) or (2) above, which divides the area of the internal memory into a first area in which the swapped-in data is written and a second area in which the swapped-out data is written. Processing equipment.
- the decision unit The information processing apparatus according to any one of (1) to (3), wherein the distribution of the first region and the second region is changed according to the processing process in the learning process.
- the decision unit The information processing according to any one of (1) to (4), wherein only the first region is set at the beginning of the usage order, and the distribution of the second region is increased as the usage order progresses.
- Device The decision unit The information according to any one of (1) to (4), wherein only the first region is set at the beginning of the usage order, and the distribution of the second region is increased as the usage order progresses.
- the learning process is Including forward propagation processing, back propagation processing and update processing in a neural network
- the decision unit The information processing apparatus according to (4) or (5), wherein in the case of the forward propagation process, the distribution of the second region is larger than that of the first region.
- the decision unit The information processing apparatus according to (6), wherein in the case of the back propagation process, the distribution of the first region is larger than that of the second region.
- the decision unit The information processing according to (6) or (7) above, which determines the schedule for prohibiting swap-in of the data when the data to be swapped in to the internal memory exists in the internal memory in the usage order. Device.
- the decision unit The information processing according to any one of (1) to (8), which determines the schedule for releasing the area of the internal memory corresponding to the data that has been used in the learning process in the usage order.
- Device The decision unit
- the decision unit When the data in the usage order is data to be written to the internal memory as a processing result of the learning process, the schedule for securing an empty area for storing the data in the internal memory is determined.
- the information processing apparatus according to any one of (1) to (9).
- the decision unit The target range indicating the range of the amount of data to be swapped in is set in advance with reference to the function calculation execution position in the learning process, and the schedule for swapping in the data is determined for each target range.
- the information processing apparatus according to (10).
- an acquisition step of acquiring order information indicating the order of use of data transferred to the internal memory in the learning process by performing the first learning process and An information processing method including a determination step of determining a schedule for memory swap of the data in the learning process from the next time onward based on the order information acquired by the acquisition step.
- an acquisition procedure for acquiring order information indicating the order of use of data transferred to the internal memory in the learning process by performing the first learning process and an acquisition procedure.
- An information processing program that causes a computer to execute a determination procedure for determining a schedule regarding a memory swap of the data in the learning process from the next time onward based on the order information acquired by the acquisition procedure.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
情報処理装置(1)は、取得部(22)と、決定部(23)とを備える。取得部(22)は、1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の学習処理を行うことで、学習処理において内部メモリ(3)に転送されるデータの使用順序を示す順序情報を取得する。決定部(23)は、取得部(22)によって取得された順序情報に基づいて、次回以降の学習処理におけるデータのメモリスワップに関するスケジュールを決定する。
Description
本開示は、情報処理装置、情報処理方法および情報処理プログラムに関する。
近年、深層学習(ディープラーニング)の研究が盛んに行われている。この深層学習では、生成されるモデルが大きい(ネットワークの層数や、パラメータ数が多い)程、モデルとしての性能が高くなる傾向にある。また、モデルが大きくなるほど、プロセッサの必要となる内部メモリの領域も大きくなる。
この点について、例えば、プロセッサ外のメモリ領域をスワップ先としてデータをスワップさせることで、仮想的にメモリ領域を拡大する技術がある(例えば、特許文献1参照)。
しかしながら、従来技術では、内部メモリのメモリ容量によっては処理オーバヘッドが多く発生してしまうおそれがあった。
そこで、本開示では、深層学習における処理オーバヘッドを抑えることができる情報処理装置、情報処理方法および情報処理プログラムを提案する。
上記の課題を解決するために、本開示に係る一形態の情報処理装置は、取得部と、決定部とを備える。前記取得部は、1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する。前記決定部は、前記取得部によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する。
以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する。
また、本明細書及び図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合もある。ただし、実質的に同一の機能構成を有する複数の構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。
なお、説明は以下の順序で行うものとする。
1.実施形態
1.1 情報処理方法の概要
1.2 情報処理装置の構成例
1.3 情報処理の詳細
1.4 処理フロー
2.ハードウェア構成
3.変形例
4.まとめ
1.実施形態
1.1 情報処理方法の概要
1.2 情報処理装置の構成例
1.3 情報処理の詳細
1.4 処理フロー
2.ハードウェア構成
3.変形例
4.まとめ
1.実施形態
まず、実施形態について、以下に図面を参照して詳細に説明する。
まず、実施形態について、以下に図面を参照して詳細に説明する。
1.1 情報処理方法の概要
図1Aおよび図1Bは、実施形態に係る情報処理方法の概要を示す図である。図1Aでは、情報処理システムSを示している。図1Aに示すように、実施形態に係る情報処理システムSは、GPU(Graphics Processing Unit)1と、CPU(Central Processing Unit)100とを備える。
図1Aおよび図1Bは、実施形態に係る情報処理方法の概要を示す図である。図1Aでは、情報処理システムSを示している。図1Aに示すように、実施形態に係る情報処理システムSは、GPU(Graphics Processing Unit)1と、CPU(Central Processing Unit)100とを備える。
GPU1は、深層学習を実行する情報処理装置であり、コア2(後述する制御部2)と、内部メモリ3(後述する記憶部3)とを備える。CPU100は、情報処理装置であり、GPU1が深層学習を実行する際の内部メモリ3のスワップ先となる外部メモリ110を有する。
図1Aに示す例では、ニューラルネットワークを用いた深層学習の例を示している。すなわち、GPU1のコア2は、順伝播により入力層L1から出力層L2に向かって順番に関数計算し、出力層L2の出力データと教師データとの誤差に基づいて逆伝播により出力層L2から入力層L1に向かって各パラメータ(重み値等)を修正する関数計算を行う。
そして、順伝播による関数計算処理(順伝播処理)および逆伝播による関数計算処理(逆伝播処理)に加えて、順伝播処理および逆伝播処理に基づき各パラメータを更新する更新処理をそれぞれ1回行うことを1イテレーションと呼ぶ。そして、深層学習とは、この1イテレーションに相当する学習処理を繰り返し実行することでモデルを学習(生成)する処理のことを指す。
そして、コア2は、この学習処理を実行する場合に、学習用データ(各パラメータ等)をCPU100の外部メモリ110から内部メモリ3にスワップインしたり、内部メモリ3から外部メモリ110にスワップアウトしたりすることで、内部メモリ3のメモリ領域の使用量の削減を図っている。なお、以下では、「学習用データ」を単に「データ」と称する場合がある。
しかしながら、従来技術では、内部メモリおよび外部メモリ間のメモリスワップ処理によって、深層学習における処理オーバヘッドが大きくなるおそれがあった。
そこで、実施形態に係る情報処理方法では、メモリスワップのスケジュールを最適化することで、処理オーバヘッドを低減することとした。ここで、図1Bを用いて、実施形態に係る情報処理方法を説明する。なお、以下で示す「学習処理の実行」とは、実際に学習処理を実行することを指す場合に限らず、深層学習の解析のためにシミュレーション的に学習処理を実行することを指す場合であってもよい(つまり、実際に実行しない)。
具体的には、図1Bに示すように、実施形態に係る情報処理方法では、まず、1回目の学習処理(最初の学習処理)を実行する(ステップS1)。実施形態に係る情報処理方法では、この最初の学習処理において、内部メモリ3に転送(スワップイン)される学習用データの使用順序を示す順序情報を取得する(ステップS2)。
図1Bでは、順序情報の一例を模式的に示している。例えば、図1Bでは、順伝播処理における各層(conv1,conv2,loss:関数計算の層)、逆伝播処理における各層(▽loss,▽wconv2,▽xconv2,▽wconv1:関数計算の層)および更新処理(update:関数計算の層)で使用されるデータを示している。なお、図1Bにおいて、「x1」および「x2」は関数計算における変数のデータであり、「w1」および「w2」は関数計算における重みのデータであり、「y」は関数計算の出力(処理結果)であり、「t」はラベル(教師データ)であり、損失関数(学習処理の繰り返し最適化の目的関数)である。
また、実線の丸である「read」は、内部メモリ3に読み込む(スワップインする)データであることを示し、間隔が狭い破線の丸である「write」は、各層の出力として内部メモリ3に書き込まれるデータであることを示し、間隔が広い破線の丸である「read&write」は、内部メモリ3に読み書きされるデータであることを示す。
つまり、順序情報は、学習処理である順伝播処理、逆伝播処理および更新処理において、各データがどのタイミングで使用されるか(どのタイミングでスワップインされるか)を示す情報である。
つづいて、実施形態に係る情報処理方法では、取得した順序情報に基づいて、次回以降(2回目以降)の学習処理におけるデータのメモリスワップに関するスケジュールを決定する(ステップS3)。
具体的には、実施形態に係る情報処理方法では、内部メモリ3にデータをスワップインするタイミングおよび内部メモリ3から外部メモリ110へスワップアウトするタイミング、データを削除してメモリを解放するタイミングを示すスケジュールを決定する。なお、詳細なスケジュールの決定方法については後述する。
そして、実施形態に係る情報処理方法では、決定したスケジュールに従って2回目以降の学習処理を繰り返し実行する(ステップS4)。
つまり、実施形態に係る情報処理方法では、最初の学習処理により、データの使用順序を把握してから、次回以降の学習処理において処理オーバヘッドが発生しにくい最適なメモリスワップ処理のスケジュールを決定する。これにより、次回以降の学習処理において、メモリスワップ処理に起因する処理オーバヘッドを抑えることができる。
なお、最初の学習処理では、計算毎にデータをスワップインし、計算後にすべてのデータをスワップアウトするため、多少の処理オーバヘッドが発生する可能性があるが、次回以降の学習処理の回数が莫大であるため、深層学習全体として見れば、最初の学習処理における処理オーバヘッドは無視できる。また、シミュレーション的に深層学習を実行した場合であれば、実際に深層学習を実行する場合の最初の学習処理について、決定したスケジュールに従ってメモリスワップを行うことで、最初の学習処理における処理オーバヘッドを抑えることができる。
すなわち、実施形態に係る情報処理方法によれば、深層学習における処理オーバヘッドを抑えることができる。
なお、実施形態に係る情報処理方法では、内部メモリ3を、スワップイン専用のメモリ領域と、スワップアウト専用のメモリ領域とに分割するが、かかる点については後述する。
1.2 情報処理装置の構成例
次に、図2を用いて、実施形態に係る情報処理装置1の構成例について説明する。図2は、実施形態に係る情報処理装置1の構成例を示すブロック図である。なお、図2に示す情報処理装置1は、例えば、GPU1であるが、GPU1に限らず、深層学習を実行可能なプロセッサであればよい。
次に、図2を用いて、実施形態に係る情報処理装置1の構成例について説明する。図2は、実施形態に係る情報処理装置1の構成例を示すブロック図である。なお、図2に示す情報処理装置1は、例えば、GPU1であるが、GPU1に限らず、深層学習を実行可能なプロセッサであればよい。
図2に示すように、実施形態に係る情報処理装置1は、制御部2と、記憶部3とを備える。また、情報処理装置1は、データのスワップ先となる外部メモリ110(図1A参照)を有するCPU100に接続される。
制御部2は、例えば、GPU等によって、情報処理装置1内部に記憶されたプログラムがRAM等を作業領域として実行されることにより実現される。また、制御部2は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図2に示すように、制御部2は、実行部21と、取得部22と、決定部23とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部2の内部構成は、図2に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
記憶部3は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部3は、図2に示すように、学習用データ31と、スケジュール情報32とを記憶する。
学習用データ31は、関数計算における変数や、重み等のデータであり、学習処理に使用されるデータである。なお、学習用データ31は、深層学習を実行するユーザによって入力されたり、後述する実行部21が実行する学習処理の過程で生じたりする。また、学習用データ31には、順伝搬処理で生成された中間層の出力データや、一連の計算処理(順伝播処理、逆伝播処理および更新処理)で生成される各種中間出力データも含まれる。
スケジュール情報32は、学習処理におけるデータのメモリスワップに関するスケジュールの情報であり、スワップインのタイミングやスワップアウトのタイミング、データを削除してメモリを解放するタイミング等の情報が含まれる。なお、スケジュール情報32は、後述する決定部23によって生成される情報であり、後述する実行部21によって使用される情報である。
1.3 情報処理の詳細
次に、制御部2の各機能(実行部21、取得部22および決定部23)について詳細に説明する。
次に、制御部2の各機能(実行部21、取得部22および決定部23)について詳細に説明する。
実行部21は、深層学習に関する学習処理を繰り返し実行する。具体的には、実行部21は、学習処理における関数計算や、関数計算に必要なデータのメモリスワップ(内部メモリ3へのスワップインおよび外部メモリ110へのスワップアウト)等を行う。
なお、実行部21が実行するメモリスワップは、最初の学習処理(1イテレーション目)と、2回目以降の学習処理(2イテレーション目以降)とで異なる。
<1イテレーション目>
実行部21は、1イテレーション目の学習処理において、関数計算毎に計算直前に必要なデータを外部メモリ110から内部メモリ3へスワップインし、関数計算を行う。そして、実行部21は、関数計算後に使用したデータをただちにスワップアウトする。
実行部21は、1イテレーション目の学習処理において、関数計算毎に計算直前に必要なデータを外部メモリ110から内部メモリ3へスワップインし、関数計算を行う。そして、実行部21は、関数計算後に使用したデータをただちにスワップアウトする。
つまり、実行部21は、最初の学習処理においては、関数計算毎にスワップインおよびスワップアウトを繰り返す。これにより、内部メモリ3のメモリ不足が発生しないため、最初の学習処理を確実に終了することができる。
<2イテレーション目以降>
実行部21は、2イテレーション目以降の学習処理においては、後述する決定部23によって決定されたスケジュールに従って学習処理(メモリスワップ)を実行する。具体的には、実行部21は、記憶部3に記憶されたスケジュール情報に従って学習処理を繰り返す。なお、決定部23によって決定されるスケジュールについては後述する。
実行部21は、2イテレーション目以降の学習処理においては、後述する決定部23によって決定されたスケジュールに従って学習処理(メモリスワップ)を実行する。具体的には、実行部21は、記憶部3に記憶されたスケジュール情報に従って学習処理を繰り返す。なお、決定部23によって決定されるスケジュールについては後述する。
取得部22は、実行部21によって最初の学習処理が実行された場合に、学習処理において内部メモリ3に転送されるデータの使用順序を示す順序情報を取得する。例えば、取得部22は、内部メモリ3である記憶部3に記憶された学習用データ31のスワップインおよびスワップアウトの順序を観測し、順序情報として取得する。
なお、取得部22は、2回目以降の学習処理については、順序情報を取得しない。これにより、制御部2の処理負荷が嵩むことを抑制できる。
決定部23は、取得部22によって取得された順序情報に基づいて、次回以降の学習処理におけるデータのメモリスワップに関するスケジュールを決定し、スケジュール情報32として記憶部3へ記憶する。このスケジュール決定処理は、1回目の学習処理の後で、2回目の学習処理の前に行われる。
決定部23は、内部メモリ3のメモリ領域に基づいて、学習処理のメモリスワップのためのメモリ領域を設定する。かかる点について、図3および図4を用いて説明する。
図3および図4は、内部メモリ3におけるメモリ領域の設定方法を説明するための図である。なお、図3に示す矩形形状の幅(紙面左右方向)の長さは、内部メモリ3の最大メモリ容量に対応している。図3に示すように、決定部23は、内部メモリ3のメモリ領域を、スワップインされたデータが書き込まれる第1領域310と、スワップアウトされるデータが書き込まれる第2領域320とに分割する。
具体的には、決定部23は、第1領域310および第2領域320それぞれのメモリ容量が同じとなるように分割する。つまり、第1領域310および第2領域320それぞれのメモリ容量は、内部メモリ3の最大メモリ容量の1/2に相当する。
また、図3に示すように、第1領域310および第2領域320の境界は、関数計算の実行位置に対応している。なお、図3に示すように、内部メモリ3を矩形形状で視覚化し、この矩形形状の内部メモリ3の第1領域310や、第2領域320、関数計算実行位置を使って決定部23がメモリスワップのスケジュールを決定するが、かかる点については、図5で説明する。
なお、図3では、第1領域310および第2領域320を同じメモリ容量となるように配分にした場合を示したが、第1領域310および第2領域320の配分は任意に設定可能であり、また、学習処理中に、配分を動的に変更することもできる。なお、配分を動的に変更する点については図11で後述する。
次に、図4を用いて、第1領域310および第2領域320それぞれの機能について詳細に説明する。図4に示すように、第1領域310は、内部メモリ3にスワップインされるデータを格納するメモリ領域である。また、第2領域320は、内部メモリ3から外部メモリ110へスワップアウトされるデータを格納するメモリ領域である。
具体的には、決定部23は、取得部22によって取得された順序情報であるデータの使用順序に従ってデータを順次スワップインしていくとともに、関数計算で使用が終わったデータを順次スワップアウトしていく。
より具体的には、決定部23は、まず、第1領域310のメモリ領域に空きがあれば、データのスワップインを開始する(ステップS11)。なお、決定部23は、第1領域310のメモリ領域に空きが無ければ、後述するステップS15におけるデータのスワップアウトが完了するまでステップS11の実行を待機する。
そして、決定部23は、第1領域310にデータのスワップインが完了すると、かかるデータを使用して関数計算を実行する(ステップS12)。そして、決定部23は、関数計算を終了後、使用したデータを第2領域320へ移す(ステップS13)。
なお、「第1領域310から第2領域320へデータを移す」とは、第1領域310のメモリ領域から第2領域320のメモリ領域へ実際に移す処理であってもよく、あるいは、データを実際に移すのではなく、「第1領域310のデータ」というタグと、「第2領域320のデータ」というタグとを変更する処理であってもよい。
つまり、内部メモリ3における第1領域310および第2領域320は、メモリ領域の位置を示すものであってもよく、あるいは、メモリ容量の配分を示すものであってもよい。
そして、決定部23は、第1領域310から第2領域320へデータを移すと、かかるデータのスワップアウトを開始する(ステップS14)。なお、詳細は後述するが、直近の関数計算で再度同じデータを使用する場合には、スワップアウトせずに内部メモリ3(後述する第1領域310)に留まらせる場合がある。
そして、決定部23は、スワップアウトが完了した場合、メモリ領域を解放する(ステップS15)。これにより、開放されたメモリ領域は、第1領域310として使用される。
次に、図5~図9を用いて、視覚化した内部メモリ3(図3参照)を使ったスケジュールの決定処理について説明する。図5~図9は、決定部23によるスケジュール決定処理を示す図である。
まず、図5を用いて、決定部23によるスケジュール決定処理の基本動作について説明する。図5では、各矩形が1データに相当し、複数の矩形がデータの使用順序に沿って並んでいる例を示している。
図5では、図3で示した内部メモリ3に相当する矩形形状の領域が使用順序の方向に移動していくこととする。なお、図5では、第1領域310、第2領域320および関数計算実行位置の図示を省略しているが、第1領域310および第2領域320それぞれが同じメモリ容量であり、関数計算実行位置が内部メモリ3の領域の中央位置であることとする。また、「Head」とは、第1領域310におけるスワップインを開始するデータの位置を示し、「Tail」とは、第2領域320におけるスワップアウトが終了するデータの位置を示す。
このスケジュール決定処理の基本動作として、「関数計算実行位置」における関数計算処理と、「Head」におけるスワップイン処理と、「Tail」におけるスワップアウト処理とはそれぞれ非同期で行われていることとする。
そして、このスケジュール決定処理の基本動作として、時刻iにおける「関数計算実行位置」の関数計算(fi)が終了し、次の時刻i+1の関数計算(fi+1)へ移るためには、関数計算(fi+1)の実行に必要なデータのスワップインが完了している必要がある。
つまり、時刻iにおいて、関数計算処理、スワップイン処理およびスワップアウト処理すべてが完了した場合、時刻i+1に移る。すなわち、内部メモリ3に相当する矩形形状の領域が使用順序の方向に関数計算処理1個分に相当するデータ分だけ移動する。
具体的には、時刻iにおいて、「関数計算実行位置」の関数計算(fi)に必要なデータのスワップインが完了している場合、fiの関数計算処理を実行する。また、fiの関数計算処理を実行している間に、「Head」においては、データのスワップイン処理を行い、「Tail」においては、データのスワップアウト処理を行う。
つまり、時刻iにおいて、関数計算処理と並行して、時刻i+1以降に実行される関数計算(fi+1以降)に必要なデータのスワップイン処理および時刻i以前の関数計算で使用したデータのスワップアウト処理を実行する。なお、関数計算(fi)に必要なデータは、関数計算(fi)の実行直前までにスワップインが完了していればよく、関数計算(fi)の実行直前までにスワップインが完了していなければ、関数計算(fi)の実行直前にスワップインの完了待ちを行う。このように、関数計算処理を実行している時間の中に、スワップイン処理およびスワップアウト処理を隠すことができるため、スワップイン処理およびスワップアウト処理に起因する処理オーバヘッドを抑えることができる。
なお、図5に示した決定部23の基本動作は、あくまでも「スケジュール」であり、決定部23が実際に各処理を行っているわけではない。つまり、決定部23は、時刻iにおいて、fiの関数計算処理を実行するようスケジューリングし、さらに、fiの関数計算処理の実行中に使用順序に対応する位置のデータのスワップイン処理およびスワップアウト処理を実行するようスケジューリングするだけである。
なお、決定部23に決定されたスケジュールに沿って、実行部21が時刻iにおいて、fiの関数計算処理を実行し、さらに、fiの関数計算処理の実行中に使用順序に対応する位置のデータのスワップイン処理およびスワップアウト処理を実行する。
このスケジュール決定処理の基本動作により、どの関数計算の時に、どのデータをどのタイミングでスワップインし、また、どのデータをどのタイミングでスワップアウトするかをスケジューリングできる。
なお、図5に示した基本動作は、第1領域310のデータを順次スワップインし、第2領域320のデータを順次スワップアウトするものであるが、この基本動作に対して、第1領域310のデータをスワップインしなかったり、第2領域320のデータをスワップアウトしなかったりするイレギュラーな動作が発生する場合がある。かかる点について、図6~図9を用いて説明する。
例えば、図6に示すように、決定部23は、使用順序において、第1領域310である「Head」の位置のデータD1をスワップインするスケジュールを決定する際に、かかるデータD1が既に内部メモリ3に存在する場合、「Head」の位置のデータD1のスワップインを行わない。
つまり、決定部23は、使用順序において、内部メモリ3にスワップインするデータD1が内部メモリ3に存在する場合、当該データD1のスワップインを禁止するスケジュールを決定する。
これにより、内部メモリ3においてデータD1の重複をなくすことができるため、内部メモリ3のメモリ不足を低減できる。また、「Head」の位置のデータD1のスワップインを行わないため、スワップイン処理に起因する処理オーバヘッドを抑えることができる。
そして、決定部23は、図6に示す「Head」の位置のデータD1をスワップインしなかった場合、図7に示すように、データD1を使用するfiの関数計算処理の実行後、データD1をスワップアウトしないようにスケジュールし、後の関数計算処理で当該データD1を使えるようにする。
つまり、決定部23は、使用順序的に後のデータD1のスワップインを禁止した場合、使用順序的に前のデータD1の関数計算実行後におけるスワップアウトを禁止する。これにより、使用順序的に後のデータD1として関数計算を行うことができる。
また、データD1のスワップアウトを行わないため、スワップアウト処理に起因する処理オーバヘッドを抑えることができる。
次に、図8を用いて、一度スワップアウトすると決定したスケジュールをキャンセルする場合について説明する。
図8の上段に示すように、決定部23は、まず、内部メモリ3に既にスワップインしたデータD1を使ってfiの関数計算処理を実行後、内部メモリ3の「Head」の位置までにおいて、データD1の使用予定が無いため、データD1のスワップアウトをスケジュールする(ステップS21)。
そして、決定部23は、関数計算処理を進めていき、「Head」の位置にデータD1が出現した場合、すなわち、「Head」の位置においてデータD1をスワップインすることを検出した場合(ステップS22)、使用順序的に前のスワップアウトするとスケジュールされたデータD1のスケジュールをキャンセルする(ステップS23)。
つまり、決定部23は、ステップS22におけるデータD1のスワップインを禁止するスケジュールを決定するとともに、ステップS23におけるデータD1のスワップアウトを禁止するスケジュールを決定する。
これにより、データD1の使用間隔が所定値以上離れた場合であっても、後のデータD1のスワップイン処理および前のデータD1のスワップアウト処理を省略できるため、メモリスワップに起因する処理オーバヘッドを抑えることができる。
なお、図8で示したデータD1は、「read」、「write」および「read&write」のいずれかのデータである。このため、データD1が「write」の場合、関数計算の処理結果として書き込まれるものであるため、データD1が「Head」の位置にきたとしても、実際にはスワップインする必要がない。
そこで、決定部23は、「Head」の位置のデータD1が「write」である場合、かかるデータD1のスワップインをしないこととした。かかる点について、図9を用いて説明する。
図9の上段に示すように、決定部23は、「Head」の位置のデータD1が「write」である場合、データD1のスワップインを禁止するスケジュールを決定する。つまり、決定部23は、存在しえないデータD1に対してスワップイン処理が開始されるという不要な処理を省くことができる。
そして、図9の下段に示すように、決定部23は、データD1に対応する関数計算が実行される直前までに、処理結果であるデータD1を書き込むための空のメモリ領域である空領域330を確保しておく。
つまり、決定部23は、使用順序におけるデータD1が、学習処理の処理結果として内部メモリ3に書き込まれるデータである場合、内部メモリ3内に当該データD1を格納するための空領域330を確保するスケジュールを決定する。
なお、空領域330を確保(生成)するタイミングは、任意のタイミングであってよい。例えば、決定部23は、対応する関数計算の1つ前の関数計算が行われるタイミングで空領域330を確保してもよく、「Head」の位置の時点でデータD1に対応する空領域330を確保するようにしてもよい。
なお、決定部23により使用順序に沿ってデータのスケジュールを決定していく場合、図9に示す空領域330を確保できず、メモリ不足となる場合がある。そこで、決定部23は、空領域330のためのメモリ不足が判明した場合、スケジュールをやり直す(リスケジュールする)。かかる点について、図10を用いて説明する。
図10は、決定部23によるリスケジュール処理を示す図である。なお、図10に示す各ノードN1~N4は、関数計算を示しており、白抜き円の内部に記載された数字が、それぞれの関数計算を実行中にスワップインする予定のデータの数を示している。図10では、説明の便宜上、データの数として示しているが、実際には、内部メモリ3において使用されるメモリ量である。
図10の左図に示すように、決定部23は、ノードN1の関数計算の実行中に1つのデータをスワップインし、ノードN2の関数計算の実行中に3つのデータをスワップインし、ノードN3の関数計算の実行中に2つのデータをスワップインするスケジュールを決定したとする。そして、ノードN1~N3のデータをスワップインすることで、メモリ不足が発生し、ノードN4の関数計算の処理結果のデータを格納(write)するための空領域330を確保できなかったとする。
この場合、決定部23は、ノードN1~N4においてスワップインするデータの数をリスケジュールすることで、ノードN4において空領域330を確保できるようにする。具体的には、決定部23は、まず、ノードN4において空領域330を確保するために不足しているメモリ容量(データの数)を算出し、当該不足しているメモリ容量を充足するためにノードN2~N4をリスケジュールする。
例えば、ノードN2~N4においてデータをスワップインしなければ、ノードN4のための空領域330を確保できる場合、ノードN2~N4においてスワップインするデータの数をゼロ、すなわち、スワップインしないようにリスケジュールする。
より具体的には、まず、決定部23は、ノードN4において内部メモリ3のメモリ不足を検出したとする。決定部23は、メモリ不足を検出した場合、ノードN4で必要なメモリ量が確保できるまでノードをバックトラックする。具体的には、まず、決定部23は、ノードN4における確保可能メモリ量をゼロで初期化する。つづいて、決定部23は、1つ前のノードN3に戻り、ノードN3のメモリ量「2」を確保可能メモリ量に追加し、ノードN3のメモリ量「2」を「0」に書き換える。このように、決定部23は、ノードN4から遡って、確保可能メモリ量>メモリ不足量となるまでバックトラックを行う。図10に示す例では、ノードN2までバックトラックすることで、確保可能メモリ量>メモリ不足量となったことを示している。つまり、図10に示す例では、決定部23は、ノードN4でメモリ不足が発生した場合に、ノードN2およびノードN3のリスケジュールを行い、ノードN4におけるメモリ不足を解消する。
これにより、「write」のデータのための空領域330を確実に確保することができる。
また、決定部23は、所定番目(所定時刻)の関数計算後、当該関数計算を以降に再度行わない、つまり、学習処理において、使用順序的に後に発生しないデータについては、関数計算後、スワップアウトせずに、当該データを削除し、メモリ領域を解放する。
これにより、不要なスワップアウト処理を省くことができるため、スワップアウト処理に起因する処理オーバヘッドを抑えることができる。
次に、図11を用いて、内部メモリ3における第1領域310および第2領域320の配分を動的に変更する方法について説明する。図11は、変形例に係る内部メモリ3におけるメモリ領域の設定方法を示す図である。
なお、図11において、使用順序の開始位置とは、学習処理における最初のデータの位置、つまり、学習処理が開始される位置であり、このため、かかる開始位置における内部メモリ3-1は、スワップインされていないため、データが存在していない。
図11に示すように、決定部23は、学習処理の開始直後においては、内部メモリ3のすべてのメモリ領域を第1領域310としてデータのスワップインを行う。これは、学習処理の開始直後は、スワップアウトするデータがないため、第2領域320を設定しても実際には使用されないためである。これにより、学習処理の開始直後においてより多くのデータをスワップインできるため、データがスワップインされていないために関数計算が行われない状況を回避できる。
そして、決定部23は、内部メモリ3-3~3-4のように、使用順序が進むにつれて第2領域320の配分を大きくしていき、最終的に、第1領域310および第2領域320が略同じ配分となるようにする。
つまり、決定部23は、使用順序における最初は第1領域310のみ設定し、使用順序が進むにつれて第2領域320の配分を大きくしていく。これにより、内部メモリ3の使用されない領域を減らすことができるため、メモリ効率を高めることができる。
なお、決定部23は、使用順序に応じて第1領域310および第2領域320の配分を動的に変更する場合に限らず、例えば、学習処理における処理プロセスに応じて第1領域310および第2領域320の配分を変更してもよい。
上述したように、学習処理には、ニューラルネットワークにおける順伝播処理、逆伝播処理および更新処理の処理プロセスが含まれる。処理プロセスのうち、順伝播処理では、後の逆伝播処理のために、スワップアウトするデータの数が多い。換言すれば、逆伝播処理では、後の処理のためにデータをスワップアウトする必要が無いため、スワップアウトするデータの数が少ない。
そこで、決定部23は、順伝播処理の場合には、第1領域310よりも第2領域320の配分を大きくする。これにより、スワップアウト処理に起因した処理オーバヘッドを抑えることができる。
また、決定部23は、逆伝播処理の場合には、第2領域320よりも第1領域310の配分を大きくする。これにより、スワップイン処理に起因した処理オーバヘッドを抑えることができる。
なお、上述した実施形態では、内部メモリ3における第1領域310および第2領域320の配分を決定したが、これは、言い換えれば、使用順序における先のデータを第1領域310を使い切るまでスワップインするものである。つまり、第1領域310の空き容量に応じてスワップインするか否かを決定する対象範囲が変動する。
そこで、以下では、第1領域310および第2領域320の配分を決定するのではなく、スワップインするか否かを決定する対象範囲500(図12参照)を決定(固定)する。ここで、図12~図14を用いて、対象範囲500を用いたスケジュール決定処理について説明する。
図12~図14は、対象範囲500を用いたスケジュール決定処理を示す図である。図12に示すように、決定部23は、関数実行位置のデータを基準にして、使用順序的に先に位置する所定のデータ数Nまでの範囲をスワップインするか否かを決定する対象範囲500として決定する。つまり、対象範囲500は、所定の関数実行位置において、内部面メモリ3にスワップインにしておくべき使用順序の範囲であり、具体的には、関数実行位置のデータを始点として、使用順序におけるデータ数Nだけ先の範囲である。
なお、データ数Nとは、図12では、便宜上データの数として示しているが、厳密にはデータ量(例えば、bytes)であり、例えば、深層学習を行うユーザによって指定される。このデータ数Nは、内部メモリ3の最大メモリ量よりも小さい値であることが好ましい。
そして、決定部23は、関数計算実行位置である関数計算(fi)を始点として、対象範囲500内にあるデータ数Nについて、スワップインするか否かのスケジュールを決定する。なお、スワップインするか否かのスケジュールを決定する方法については、上述した実施形態と同様であるため、ここでは説明を省略する。
そして、決定部23は、例えば、データ数Nのうち、4つのデータD1をスワップインするスケジュールを決定した場合、関数計算(fi)を実行時には、内部メモリ3のメモリ領域のうち、4つのデータD1のためのメモリ領域をスワップイン用として決定する。そして、決定部23は、内部メモリ3のメモリ領域のうち、スワップイン用のメモリ領域を除いたメモリ領域をスワップアウト用として決定する。
つまり、上述した実施形態では第1領域310に空きが無くなるまでデータをスワップインしたのに対して、図12では、第1領域310を設定するのではなく、データをスワップインすべき使用順序の範囲を対象範囲500として予め設定する。
このように、所定の関数計算実行位置から所定のデータ数Nをスワップインする対象範囲500を予め設定することで、必要以上に先のデータをスワップインしないようできる。このため、スワップインするためのメモリ領域の使用量が減ることで、スワップアウトするためのメモリ領域をより多く使用できるため、スワップアウトのための時間を長く取れる。従って、内部メモリ3のメモリ領域の不足時のスワップアウト完了待ち時に既にスワップアウトが終わっている可能性が高いため、スワップアウト完了待ちに伴う処理オーバヘッドを減らすことができる。
なお、データ数Nは、ユーザによって指定される場合に限らず、内部メモリ3の最大メモリ量のn%(nは100未満)のように自動で設定されてもよい。あるいは、最初の学習処理により各関数計算に要する時間を取得し、かかる時間により、スワップイン完了待ちに伴う処理オーバヘッドを最小限できるデータ数Nを自動で決定してもよい。
次に、図13では、対象範囲500のデータD3をスワップする際に、内部メモリ3に空きが無い場合の処理について説明する。図13の上段では、関数計算(fi)の実行時において、内部メモリ3は、スワップインしたデータD1およびスワップアウト予定のデータD2で埋まっていることとする。
そして、図13の中段に示すように、関数計算(fi)のタイミングにおいて、対象範囲500の最新の位置にあるデータD3をスワップインするスケジュールを決定したとする。かかる場合、決定部23は、データD3をスワップインする前に、スワップアウト予定のデータD2のうち最も古いデータD2をスワップアウトするスケジュールを決定することで、データD3をスワップインするためのメモリ領域を空ける。そして、決定部23は、スワップアウト予定のデータD2のうち、最も古いデータD2のスワップアウトが完了した後に、データD3のスワップインを開始するスケジュールを決定する。これにより、データD3を確実にスワップインすることができる。
次に、図14を用いて、関数計算(fi)において、計算結果としてデータD3(すなわち、write)を内部メモリ3に書き込む場合について説明する。図14でも、図13と同様に、関数計算(fi)の実行時において、内部メモリ3は、スワップインしたデータD1およびスワップアウト予定のデータD2で埋まっていることとする。かかる場合、関数計算(fi)を実行時には、計算結果であるデータD3を書き込むためのメモリ領域を内部メモリ3に確保する必要がある。かかる場合、決定部23は、関数計算(fi)を実行する前に、スワップアウト予定のデータD2のうち最も古いデータD2をスワップアウトするスケジュールを決定することで、データD3を書き込むためのメモリ領域を空ける。そして、決定部23は、スワップアウト予定のデータD2のうち、最も古いデータD2のスワップアウトが完了した後に、データD3を書き込むためのメモリ領域を確保した状態で、関数計算(fi)を実行するスケジュールを決定する。これにより、データD3のための空き領域を確実に確保することができる。
1.4 処理フロー
次に、図15を用いて、実施形態に係る情報処理装置1が実行する処理の処理手順について説明する。図15は、実施形態に係る情報処理装置1が実行する処理の処理手順を示すフローチャートである。
次に、図15を用いて、実施形態に係る情報処理装置1が実行する処理の処理手順について説明する。図15は、実施形態に係る情報処理装置1が実行する処理の処理手順を示すフローチャートである。
図15に示すように、まず、実行部21は、最初の学習処理を実行する(ステップS101)。最初の学習処理では、メモリスワップに関するスケジュールが決定していないため、関数計算時に必要なデータを内部メモリ3にスワップインし、関数計算後には使用したデータを外部メモリ110にスワップアウトする。
つづいて、取得部22は、最初の学習処理において内部メモリ3に転送されるデータの使用順序を示す順序情報を取得する(ステップS102)。
つづいて、決定部23は、取得部22が取得した順序情報に基づいて、次回以降の学習処理のメモリスワップに関するスケジュールを決定する(ステップS103)。
つづいて、実行部21は、決定部23が決定したスケジュールに従って次回以降の学習処理を実行し(ステップS104)、処理を終了する。
2.ハードウェア構成
続いて、図16を参照して、実施形態に係る情報処理装置1等のハードウェア構成の一例について説明する。図16は、実施形態に係る情報処理装置1のハードウェア構成の一例を示すブロック図である。
続いて、図16を参照して、実施形態に係る情報処理装置1等のハードウェア構成の一例について説明する。図16は、実施形態に係る情報処理装置1のハードウェア構成の一例を示すブロック図である。
図16に示すように、情報処理装置1は、GPU(Graphics Processing Unit)900、CPU(Central Processing Unit)901、ROM(Read Only Memory)902、RAM(Random Access Memory)903、ホストバス905、ブリッジ907、外部バス906、インタフェース908、入力装置911、出力装置912、ストレージ装置913、ドライブ914、接続ポート915、及び通信装置916を備える。情報処理装置1は、GPU900、CPU901の少なくとも1つに替えて、又はこれと共に、電気回路、DSP若しくはASIC等の処理回路を備えてもよい。
GPU900およびCPU901は、演算処理装置、及び制御装置として機能し、各種プログラムに従って情報処理装置1内の動作全般を制御する。また、GPU900およびCPU901は、マイクロプロセッサであってもよい。ROM902は、GPU900およびCPU901が使用するプログラム及び演算パラメータ等を記憶する。RAM903は、GPU900およびCPU901の実行において使用するプログラム、及びその実行において適宜変化するパラメータ等を一時記憶する。なお、RAM903は、GPU900およびCPU901それぞれに対応する専用のメモリ領域を有する。GPU900およびCPU901は、例えば、実行部21、取得部22および決定部23の機能を実行してもよい。
GPU900、CPU901、ROM902及びRAM903は、CPUバスなどを含むホストバス905により相互に接続されている。ホストバス905は、ブリッジ907を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス906に接続されている。なお、ホストバス905、ブリッジ907、及び外部バス906は、必ずしも分離構成されなくともよく、1つのバスにこれらの機能が実装されてもよい。
入力装置911は、例えば、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチ又はレバー等のユーザによって情報が入力される装置である。または、入力装置911は、赤外線又はその他の電波を利用したリモートコントロール装置であってもよく、情報処理装置1の操作に対応した携帯電話又はPDA等の外部接続機器であってもよい。さらに、入力装置911は、例えば、上記の入力手段を用いてユーザにより入力された情報に基づいて入力信号を生成する入力制御回路などを含んでもよい。
出力装置912は、情報をユーザに対して視覚的又は聴覚的に通知することが可能な装置である。出力装置912は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、EL(ElectroLuminescence)ディスプレイ装置、レーザープロジェクタ、LED(Light Emitting Diode)プロジェクタ又はランプ等の表示装置であってもよく、スピーカ又はヘッドホン等の音声出力装置等であってもよい。
出力装置912は、例えば、情報処理装置1による各種処理にて得られた結果を出力してもよい。具体的には、出力装置912は、情報処理装置1による各種処理にて得られた結果を、テキスト、イメージ、表、又はグラフ等の様々な形式で視覚的に表示してもよい。または、出力装置912は、音声データ又は音響データ等のオーディオ信号をアナログ信号に変換して聴覚的に出力してもよい。
ストレージ装置913は、情報処理装置1の記憶部の一例として形成されたデータ格納用の装置である。ストレージ装置913は、例えば、HDD(Hard Disk Drive)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス又は光磁気記憶デバイス等により実現されてもよい。例えば、ストレージ装置913は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出装置、及び記憶媒体に記録されたデータを削除する削除装置などを含んでもよい。ストレージ装置913は、CPU901が実行するプログラム、各種データ及び外部から取得した各種のデータ等を格納してもよい。
ドライブ914は、記憶媒体用リーダライタであり、情報処理装置1に内蔵又は外付けされる。ドライブ914は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記憶媒体に記録されている情報を読み出して、RAM903に出力する。また、ドライブ914は、リムーバブル記憶媒体に情報を書き込むことも可能である。
接続ポート915は、外部機器と接続されるインタフェースである。接続ポート915は、外部機器とのデータ伝送可能な接続口であり、例えばUSB(Universal Serial Bus)であってもよい。
通信装置916は、例えば、ネットワークNに接続するための通信デバイス等で形成されたインタフェースである。通信装置916は、例えば、有線若しくは無線LAN(Local Area Network)、LTE(Long Term Evolution)、Bluetooth(登録商標)又はWUSB(Wireless USB)用の通信カード等であってもよい。また、通信装置916は、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ又は各種通信用のモデム等であってもよい。通信装置916は、例えば、インターネット又は他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。
なお、ネットワーク40は、情報の有線又は無線の伝送路である。例えば、ネットワーク40は、インターネット、電話回線網若しくは衛星通信網などの公衆回線網、Ethernet(登録商標)を含む各種のLAN(Local Area Network)、又はWAN(Wide Area Network)などを含んでもよい。また、ネットワーク40は、IP-VPN(Internet Protocol-Virtual Private Network)などの専用回線網を含んでもよい。
なお、情報処理装置1に内蔵されるGPU、CPU、ROM及びRAMなどのハードウェアに対して、上述した本実施形態に係る情報処理装置1の各構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供することが可能である。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
3.変形例
また、上記情報処理プログラムをインターネット等のネットワーク上のサーバ装置が備えるディスク装置に格納しておき、コンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OS(Operating System)とアプリケーションソフトとの協働により実現してもよい。この場合には、OS以外の部分を媒体に格納して配布してもよいし、OS以外の部分をサーバ装置に格納しておき、コンピュータにダウンロード等できるようにしてもよい。
また、上記情報処理プログラムをインターネット等のネットワーク上のサーバ装置が備えるディスク装置に格納しておき、コンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OS(Operating System)とアプリケーションソフトとの協働により実現してもよい。この場合には、OS以外の部分を媒体に格納して配布してもよいし、OS以外の部分をサーバ装置に格納しておき、コンピュータにダウンロード等できるようにしてもよい。
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、上述の実施形態は、処理内容を矛盾させない領域で適宜組み合わせることが可能である。また、上述の実施形態のフローチャート及びシーケンス図に示された各ステップは、適宜順序を変更することが可能である。
4.まとめ
以上説明したように、本開示の一実施形態によれば、本実施形態に係る情報処理装置1は、取得部22と、決定部23とを備える。取得部22は、1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の学習処理を行うことで、学習処理において内部メモリ3に転送されるデータの使用順序を示す順序情報を取得する。決定部23は、取得部22によって取得された順序情報に基づいて、次回以降の学習処理におけるデータのメモリスワップに関するスケジュールを決定する。これにより、深層学習における処理オーバヘッドを抑えることができる。
以上説明したように、本開示の一実施形態によれば、本実施形態に係る情報処理装置1は、取得部22と、決定部23とを備える。取得部22は、1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の学習処理を行うことで、学習処理において内部メモリ3に転送されるデータの使用順序を示す順序情報を取得する。決定部23は、取得部22によって取得された順序情報に基づいて、次回以降の学習処理におけるデータのメモリスワップに関するスケジュールを決定する。これにより、深層学習における処理オーバヘッドを抑えることができる。
以上、本開示の各実施形態について説明したが、本開示の技術的範囲は、上述の各実施形態そのままに限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、異なる実施形態及び変形例にわたる構成要素を適宜組み合わせてもよい。
また、本明細書に記載された各実施形態における効果はあくまで例示であって限定されるものでは無く、他の効果があってもよい。
なお、本技術は以下のような構成も取ることができる。
(1)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得部と、
前記取得部によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定部と
を備える情報処理装置。
(2)
前記決定部によって決定された前記スケジュールに従って次回以降の前記学習処理を実行する実行部をさらに備え、
前記実行部は、
最初の前記学習処理において、関数計算毎に計算直前に前記データをスワップインし、計算後に前記データをスワップアウトする、前記(1)に記載の情報処理装置。
(3)
前記決定部は、
前記内部メモリの領域を、スワップインされた前記データが書き込まれる第1領域と、スワップアウトされる前記データが書き込まれる第2領域とに分割する、前記(1)または(2)に記載の情報処理装置。
(4)
前記決定部は、
前記学習処理における処理プロセスに応じて前記第1領域および前記第2領域の配分を変更する、前記(1)~(3)のいずれか1つに記載の情報処理装置。
(5)
前記決定部は、
前記使用順序における最初は前記第1領域のみ設定し、前記使用順序が進むにつれて前記第2領域の配分を大きくしていく、前記(1)~(4)のいずれか1つに記載の情報処理装置。
(6)
前記学習処理は、
ニューラルネットワークにおける順伝播処理、逆伝播処理および更新処理を含み、
前記決定部は、
前記順伝播処理の場合には、前記第1領域よりも前記第2領域の配分を大きくする、前記(4)または(5)に記載の情報処理装置。
(7)
前記決定部は、
前記逆伝播処理の場合には、前記第2領域よりも前記第1領域の配分を大きくする、前記(6)に記載の情報処理装置。
(8)
前記決定部は、
前記使用順序において、前記内部メモリにスワップインする前記データが前記内部メモリに存在する場合、当該データのスワップインを禁止する前記スケジュールを決定する、前記(6)または(7)に記載の情報処理装置。
(9)
前記決定部は、
前記使用順序において、前記学習処理における使用が完了した前記データに対応する前記内部メモリの領域を解放する前記スケジュールを決定する、前記(1)~(8)のいずれか1つに記載の情報処理装置。
(10)
前記決定部は、
前記使用順序における前記データが、前記学習処理の処理結果として前記内部メモリに書き込まれるデータである場合、前記内部メモリ内に当該データを格納するための空領域を確保する前記スケジュールを決定する、前記(1)~(9)のいずれか1つに記載の情報処理装置。
(11)
前記決定部は、
前記学習処理における関数計算実行位置を基準にしてスワップインするデータ量の範囲を示す対象範囲を予め設定し、前記対象範囲毎に、前記データのスワップインに関するスケジュールを決定する、前記(1)~(10)に記載の情報処理装置。
(12)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得工程と、
前記取得工程によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定工程と
を含む情報処理方法。
(13)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得手順と、
前記取得手順によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定手順と
をコンピュータに実行させる情報処理プログラム。
(1)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得部と、
前記取得部によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定部と
を備える情報処理装置。
(2)
前記決定部によって決定された前記スケジュールに従って次回以降の前記学習処理を実行する実行部をさらに備え、
前記実行部は、
最初の前記学習処理において、関数計算毎に計算直前に前記データをスワップインし、計算後に前記データをスワップアウトする、前記(1)に記載の情報処理装置。
(3)
前記決定部は、
前記内部メモリの領域を、スワップインされた前記データが書き込まれる第1領域と、スワップアウトされる前記データが書き込まれる第2領域とに分割する、前記(1)または(2)に記載の情報処理装置。
(4)
前記決定部は、
前記学習処理における処理プロセスに応じて前記第1領域および前記第2領域の配分を変更する、前記(1)~(3)のいずれか1つに記載の情報処理装置。
(5)
前記決定部は、
前記使用順序における最初は前記第1領域のみ設定し、前記使用順序が進むにつれて前記第2領域の配分を大きくしていく、前記(1)~(4)のいずれか1つに記載の情報処理装置。
(6)
前記学習処理は、
ニューラルネットワークにおける順伝播処理、逆伝播処理および更新処理を含み、
前記決定部は、
前記順伝播処理の場合には、前記第1領域よりも前記第2領域の配分を大きくする、前記(4)または(5)に記載の情報処理装置。
(7)
前記決定部は、
前記逆伝播処理の場合には、前記第2領域よりも前記第1領域の配分を大きくする、前記(6)に記載の情報処理装置。
(8)
前記決定部は、
前記使用順序において、前記内部メモリにスワップインする前記データが前記内部メモリに存在する場合、当該データのスワップインを禁止する前記スケジュールを決定する、前記(6)または(7)に記載の情報処理装置。
(9)
前記決定部は、
前記使用順序において、前記学習処理における使用が完了した前記データに対応する前記内部メモリの領域を解放する前記スケジュールを決定する、前記(1)~(8)のいずれか1つに記載の情報処理装置。
(10)
前記決定部は、
前記使用順序における前記データが、前記学習処理の処理結果として前記内部メモリに書き込まれるデータである場合、前記内部メモリ内に当該データを格納するための空領域を確保する前記スケジュールを決定する、前記(1)~(9)のいずれか1つに記載の情報処理装置。
(11)
前記決定部は、
前記学習処理における関数計算実行位置を基準にしてスワップインするデータ量の範囲を示す対象範囲を予め設定し、前記対象範囲毎に、前記データのスワップインに関するスケジュールを決定する、前記(1)~(10)に記載の情報処理装置。
(12)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得工程と、
前記取得工程によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定工程と
を含む情報処理方法。
(13)
1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得手順と、
前記取得手順によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定手順と
をコンピュータに実行させる情報処理プログラム。
1 情報処理装置(GPU)
2 制御部(コア)
3 記憶部(内部メモリ)
21 実行部
22 取得部
23 決定部
31 学習用データ
32 スケジュール情報
100 CPU
110 外部メモリ
310 第1領域
320 第2領域
2 制御部(コア)
3 記憶部(内部メモリ)
21 実行部
22 取得部
23 決定部
31 学習用データ
32 スケジュール情報
100 CPU
110 外部メモリ
310 第1領域
320 第2領域
Claims (13)
- 1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得部と、
前記取得部によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定部と
を備える情報処理装置。 - 前記決定部によって決定された前記スケジュールに従って次回以降の前記学習処理を実行する実行部をさらに備え、
前記実行部は、
最初の前記学習処理において、関数計算毎に計算直前に前記データをスワップインし、計算後に前記データをスワップアウトする、請求項1に記載の情報処理装置。 - 前記決定部は、
前記内部メモリの領域を、スワップインされた前記データが書き込まれる第1領域と、スワップアウトされる前記データが書き込まれる第2領域とに分割する、請求項1に記載の情報処理装置。 - 前記決定部は、
前記学習処理における処理プロセスに応じて前記第1領域および前記第2領域の配分を変更する、請求項3に記載の情報処理装置。 - 前記決定部は、
前記使用順序における最初は前記第1領域のみ設定し、前記使用順序が進むにつれて前記第2領域の配分を大きくしていく、請求項3に記載の情報処理装置。 - 前記学習処理は、
ニューラルネットワークにおける順伝播処理、逆伝播処理および更新処理を含み、
前記決定部は、
前記順伝播処理の場合には、前記第1領域よりも前記第2領域の配分を大きくする、請求項4に記載の情報処理装置。 - 前記決定部は、
前記逆伝播処理の場合には、前記第2領域よりも前記第1領域の配分を大きくする、請求項6に記載の情報処理装置。 - 前記決定部は、
前記使用順序において、前記内部メモリにスワップインする前記データが前記内部メモリに存在する場合、当該データのスワップインを禁止する前記スケジュールを決定する、請求項1に記載の情報処理装置。 - 前記決定部は、
前記使用順序において、前記学習処理における使用が完了した前記データに対応する前記内部メモリの領域を解放する前記スケジュールを決定する、請求項1に記載の情報処理装置。 - 前記決定部は、
前記使用順序における前記データが、前記学習処理の処理結果として前記内部メモリに書き込まれるデータである場合、前記内部メモリ内に当該データを格納するための空領域を確保する前記スケジュールを決定する、請求項1に記載の情報処理装置。 - 前記決定部は、
前記学習処理における関数計算実行位置を基準にしてスワップインするデータ量の範囲を示す対象範囲を予め設定し、前記対象範囲毎に、前記データのスワップインに関するスケジュールを決定する、請求項1に記載の情報処理装置。 - 1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得工程と、
前記取得工程によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定工程と
を含む情報処理方法。 - 1イテレーションに相当する学習処理を繰り返し実行する深層学習において、最初の前記学習処理を行うことで、前記学習処理において内部メモリに転送されるデータの使用順序を示す順序情報を取得する取得手順と、
前記取得手順によって取得された前記順序情報に基づいて、次回以降の前記学習処理における前記データのメモリスワップに関するスケジュールを決定する決定手順と
をコンピュータに実行させる情報処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022504363A JPWO2021177249A1 (ja) | 2020-03-06 | 2021-03-01 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020039238 | 2020-03-06 | ||
JP2020-039238 | 2020-03-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021177249A1 true WO2021177249A1 (ja) | 2021-09-10 |
Family
ID=77614282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/007781 WO2021177249A1 (ja) | 2020-03-06 | 2021-03-01 | 情報処理装置、情報処理方法および情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2021177249A1 (ja) |
WO (1) | WO2021177249A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH045774A (ja) * | 1990-04-24 | 1992-01-09 | Seiko Epson Corp | 神経網計算機 |
JP2017228086A (ja) * | 2016-06-22 | 2017-12-28 | 富士通株式会社 | 機械学習管理プログラム、機械学習管理方法、および機械学習管理装置 |
-
2021
- 2021-03-01 WO PCT/JP2021/007781 patent/WO2021177249A1/ja active Application Filing
- 2021-03-01 JP JP2022504363A patent/JPWO2021177249A1/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH045774A (ja) * | 1990-04-24 | 1992-01-09 | Seiko Epson Corp | 神経網計算機 |
JP2017228086A (ja) * | 2016-06-22 | 2017-12-28 | 富士通株式会社 | 機械学習管理プログラム、機械学習管理方法、および機械学習管理装置 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021177249A1 (ja) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4083802A1 (en) | Resource scheduling method and apparatus, device, storage medium, and program product | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
US20200257972A1 (en) | Method and apparatus for determining memory requirement in a network | |
JP2022500755A (ja) | 順次計算dagのための異種スケジューリング | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
JP4723313B2 (ja) | 画像処理装置 | |
JP2017117204A (ja) | プロセッサ、再構成可能回路の制御方法及びプログラム | |
JP4372043B2 (ja) | コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法 | |
US9043806B2 (en) | Information processing device and task switching method | |
US9274831B2 (en) | Information processing apparatus, information processing method, and storage medium | |
JP2023532358A (ja) | リソーススケジューリング方法、リソーススケジューリングシステム、及び機器 | |
CN109509139A (zh) | 顶点数据处理方法、装置及设备 | |
WO2022228224A1 (zh) | 量子计算任务执行方法、装置及量子计算机操作系统 | |
CN108615077B (zh) | 一种应用于深度学习网络的缓存优化方法及装置 | |
WO2021177249A1 (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN105874431A (zh) | 减少数据交换负载的计算系统以及相关的数据交换方法 | |
CN116841739B (zh) | 用于异构计算平台的数据包重用系统 | |
US20130111079A1 (en) | Data processing device, chain and method, and corresponding computer program | |
JP6368452B2 (ja) | 非同期のデバイスによって実行されるタスクのスケジューリングの向上 | |
US8806078B2 (en) | Information processing device and program product | |
JP2011028333A (ja) | 回路情報生成装置、機能実行システム、及びプログラム | |
JP2015016586A (ja) | 画像処理装置及びプログラム | |
US20220353874A1 (en) | Method and Apparatus for Maximizing a Number of Connections That Can Be Executed from a Mobile Application | |
JP2001005678A (ja) | ネットワーク型情報処理装置及び方法 | |
US20230196129A1 (en) | Non-transitory computer-readable storage medium for storing data generation program, data generation method, and data generation device |
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: 21764404 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022504363 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: 21764404 Country of ref document: EP Kind code of ref document: A1 |