1. A method comprising: a. implementing a first model on a central processing unit; and b. implementing a second model on a graphics processing unit, wherein when data is retrieved, the data is partitioned into a first batch and a second batch, and the central processing unit is trained using the first model and the first batch, and the graphics processing unit is trained using the second model and the second batch, wherein the training occurs in parallel, wherein partitioning the data is dynamic by measuring processing time of the first model and the second model and performing automatic tuning to ensure processing by the central processing unit and the graphics processing unit finish at approximately the same time.