On Systems And Algorithms For Distributed Machine Learning