DESIGNING EFFICIENT ALGORITHMS AND ARCHITECTURES FOR MACHINE LEARNING SYSTEMS