ML for Systems / Systems for ML
Software systems often use a large number of hand-tuned algorithms, heuristics and knobs to make decisions. It's a dirty (but well-known) secret that even slight parameter tweaks can fundamentally alter the performance of complex systems, and that the performance of systems is often highly dependent on the workload.
ML presents the opportunity to get rid of these hand-tuned algorithms and knobs, and build systems that truly adapt to their workloads and real-time constraints. We are taking a fresh look at applying ML to classic systems problems, including data partitioning, caching, scheduling, admission control and others.
In addition, large-scale distributed ML training and inference is creating many exciting systems challenges in resource allocation and sharing, scheduling and more.
Recent work: Bandana [SysML'19], Flashield [NSDI'19]
Harnessing New Storage and Memory Technologies
We are seeing the rise of new and exciting storage and memory technologies, such as non-volatile memory and low-latency and dense flash. These technologies have the potential to change fundamental assumptions in how software systems are built across all the layers of the stack, from the OS to distributed storage systems and databases. Our research focuses on how to take advantage of these new heterogeneous storage and memory technologies to build fast, reliable and scalable software systems.
Recent work: MyNVM [Eurosys'18], DIRECT [ATC'19]
Detecting and characterizing Cyber Fraud
Attackers are increasingly tailoring their cyber attacks to an individual target, and using social engineering to fool their victims to click on a phishing link or open a malicious file. Our research characterizes these targeted attacks and use ML to build automated detectors that can automatically stop them that can be deployed in real-world systems.
Recent work: BECGuard [UseSec'19], Lateral [UseSec'19]