A method for use by an automated hardware resource optimization system, the method comprising: identifying a computing hardware for hosting a neural network based application comprising one or more neural networks configured to perform data processing sequentially, in parallel, or in a combination of sequential and parallel operations, wherein the step of identifying comprises determining that the computing hardware is available for hosting the neural network based application; determining , based on a first performance parameter of the computing hardware, a batch size for performing a plurality data processing tasks using the neural network based application, wherein the first performance parameter includes at least one of a memory load of a tensor processing unit, TPU, a graphics processing unit, GPU, or a central processing unit, CPU, during processing of a test data; tuning , using a data batch having the determined batch size, a second performance parameter of the computing hardware, wherein the tuned second performance parameter results in substantially continuous loading of a hardware processor memory of the computing hardware, wherein the second performance parameter of the computing hardware comprises at least one of a usage rate of the TPU, the GPU, or the CPU, or a memory load rate of the TPU, the GPU, or the CPU, during processing of the data batch having the determined batch size to substantially minimize the amount of time a memory of the TPU, the GPU, or the CPU is empty; optimizing , based on the determined batch size and the tuned second performance parameter, a process for performing the plurality of data processing tasks using the neural network based application; and generating a configuration file identifying the computing hardware, the neural network based application, the determined batch size, the tuned second performance parameter, and the optimized process. identifying a computing hardware for hosting a neural network based application comprising one or more neural networks configured to perform data processing sequentially, in parallel, or in a combination of sequential and parallel operations, wherein the step of identifying comprises determining that the computing hardware is available for hosting the neural network based application; determining , based on a first performance parameter of the computing hardware, a batch size for performing a plurality data processing tasks using the neural network based application, wherein the first performance parameter includes at least one of a memory load of a tensor processing unit, TPU, a graphics processing unit, GPU, or a central processing unit, CPU, during processing of a test data; tuning , using a data batch having the determined batch size, a second performance parameter of the computing hardware, wherein the tuned second performance parameter results in substantially continuous loading of a hardware processor memory of the computing hardware, wherein the second performance parameter of the computing hardware comprises at least one of a usage rate of the TPU, the GPU, or the CPU, or a memory load rate of the TPU, the GPU, or the CPU, during processing of the data batch having the determined batch size to substantially minimize the amount of time a memory of the TPU, the GPU, or the CPU is empty; optimizing , based on the determined batch size and the tuned second performance parameter, a process for performing the plurality of data processing tasks using the neural network based application; and generating a configuration file identifying the computing hardware, the neural network based application, the determined batch size, the tuned second performance parameter, and the optimized process. <EOS>