A computer-implemented method comprising: receiving a request to execute a processing pipeline, the processing pipeline comprising (i) first operations that transform raw inputs into pre-processed inputs and (ii) second operations that operate on the pre-processed inputs; and in response to receiving the request: assigning the first operations to two or more of a plurality of computing devices, wherein each of the plurality of computing devices is configured to execute assigned operations and maintain a queue of pre-processed inputs generated from repeatedly executing the first operations, assigning the second operations to one or more hardware accelerators of a plurality of hardware accelerators, wherein each hardware accelerator is interconnected with the plurality of computing devices over a network, and configured to (i) receive pre-processed inputs from respective queues of the two or more computing devices assigned the first operations and (ii) perform the second operations on the received pre-processed inputs, wherein a respective number of the plurality of computing devices is assigned to each hardware accelerator of the plurality of hardware accelerators, comprising: identifying, for each hardware accelerator, a ratio representing the number of computing devices that, when assigned to the hardware accelerator, can provide pre-processed inputs to the hardware accelerator so as to limit or prevent starvation of the hardware accelerator; and automatically assigning, for each hardware accelerator, a number of computing devices to the hardware accelerator using the identified ratio for the hardware accelerator; and executing, in parallel, the processing pipeline on the two or more computing devices and the one or more hardware accelerators. receiving a request to execute a processing pipeline, the processing pipeline comprising (i) first operations that transform raw inputs into pre-processed inputs and (ii) second operations that operate on the pre-processed inputs; and in response to receiving the request: assigning the first operations to two or more of a plurality of computing devices, wherein each of the plurality of computing devices is configured to execute assigned operations and maintain a queue of pre-processed inputs generated from repeatedly executing the first operations, assigning the second operations to one or more hardware accelerators of a plurality of hardware accelerators, wherein each hardware accelerator is interconnected with the plurality of computing devices over a network, and configured to (i) receive pre-processed inputs from respective queues of the two or more computing devices assigned the first operations and (ii) perform the second operations on the received pre-processed inputs, wherein a respective number of the plurality of computing devices is assigned to each hardware accelerator of the plurality of hardware accelerators, comprising: identifying, for each hardware accelerator, a ratio representing the number of computing devices that, when assigned to the hardware accelerator, can provide pre-processed inputs to the hardware accelerator so as to limit or prevent starvation of the hardware accelerator; and automatically assigning, for each hardware accelerator, a number of computing devices to the hardware accelerator using the identified ratio for the hardware accelerator; and executing, in parallel, the processing pipeline on the two or more computing devices and the one or more hardware accelerators. assigning the first operations to two or more of a plurality of computing devices, wherein each of the plurality of computing devices is configured to execute assigned operations and maintain a queue of pre-processed inputs generated from repeatedly executing the first operations, assigning the second operations to one or more hardware accelerators of a plurality of hardware accelerators, wherein each hardware accelerator is interconnected with the plurality of computing devices over a network, and configured to (i) receive pre-processed inputs from respective queues of the two or more computing devices assigned the first operations and (ii) perform the second operations on the received pre-processed inputs, wherein a respective number of the plurality of computing devices is assigned to each hardware accelerator of the plurality of hardware accelerators, comprising: identifying, for each hardware accelerator, a ratio representing the number of computing devices that, when assigned to the hardware accelerator, can provide pre-processed inputs to the hardware accelerator so as to limit or prevent starvation of the hardware accelerator; and automatically assigning, for each hardware accelerator, a number of computing devices to the hardware accelerator using the identified ratio for the hardware accelerator; and identifying, for each hardware accelerator, a ratio representing the number of computing devices that, when assigned to the hardware accelerator, can provide pre-processed inputs to the hardware accelerator so as to limit or prevent starvation of the hardware accelerator; and automatically assigning, for each hardware accelerator, a number of computing devices to the hardware accelerator using the identified ratio for the hardware accelerator; and executing, in parallel, the processing pipeline on the two or more computing devices and the one or more hardware accelerators.