Sébastien Rouault

About my work

I am a PhD candidate in the Distributed Computing Laboratory of EPFL, working on the robustness of (distributed) machine learning (ML) algorithms. In particular, my academic work focuses on developing and testing practical algorithms, that can be used to improve actual ML systems.

My scientific background spans from mathematics and statistics to design principles of computer systems. My interests in understanding (and later building) automated systems goes back to my childhood, and has only kept growing with the studying of mathematics, foundations of software, software system engineering and actual networked system administration.

Academic achievements

I have co-published conference papers at the following venues1:

  1. Differential Privacy and Byzantine Resilience in SGD: Do They Add Up?
    Rachid Guerraoui, Nirupam Gupta, Rafaël Pinot, Sébastien Rouault, John Stephan
    PODC 2021 — ACM 40th Symposium on Principles of Distributed Computing
    Selerno, Italy, July 26–30, 2021
  2. Garfield: System Support for Byzantine Machine Learning
    Rachid Guerraoui, Arsany Guirguis, Jérémy Max Plassmann, Anton Alexandre Ragot, Sébastien Rouault
    DSN 2021 — 51st IEEE/IFIP International Conference on Dependable Systems and Networks
    Taipei, Taiwan, June 21–24, 2021
  3. Distributed Momentum for Byzantine-resilient Stochastic Gradient Descent
    El-Mahdi El-Mhamdi, Rachid Guerraoui, Sébastien Rouault
    ICLR 2021 — 9th International Conference on Learning Representations
    Vienna, Austria, May 4–8, 2021
  4. Aksel: Fast Byzantine SGD
    Amine Boussetta, El-Mahdi El-Mhamdi, Rachid Guerraoui, Alexandre Maurer, Sébastien Rouault
    OPODIS 2020 — 24th International Conference on Principles of Distributed Systems
    Strasbourg, France, December 14–16, 2020
    Best Student Paper award
  5. Fast and Robust Distributed Learning in High Dimension
    El-Mahdi El-Mhamdi, Rachid Guerraoui, Sébastien Rouault
    SRDS 2020 — IEEE 39th International Symposium on Reliable Distributed Systems
    Shanghai, China, September 21–24, 2020
  6. Genuinely Distributed Byzantine Machine Learning
    El-Mahdi El-Mhamdi, Rachid Guerraoui, Arsany Guirguis, Lê Nguyen Hoang, Sébastien Rouault
    PODC 2020 — ACM 39th Symposium on Principles of Distributed Computing
    Selerno, Italy, August 3–7, 2020
  7. AggregaThor: Byzantine Machine Learning via Robust Gradient Aggregation
    Georgios Damaskinos, El-Mahdi El-Mhamdi, Rachid Guerraoui, Arsany Guirguis, Sébastien Rouault
    MLSys 2019 — 1st Conference on Machine Learning and Systems
    Palo Alto, CA, USA, March 31–April 2, 2019
  8. The Hidden Vulnerability of Distributed Learning in Byzantium
    El-Mahdi El-Mhamdi, Rachid Guerraoui, Sébastien Rouault
    ICML 2018 — 35th International Conference on Machine Learning
    Stockholm, Sweden, July 10–15, 2018
    Accepted with a "Long Talk"
  9. On The Robustness of a Neural Network
    El-Mahdi El-Mhamdi, Rachid Guerraoui, Sébastien Rouault
    SRDS 2017 — IEEE 36th Symposium on Reliable Distributed Systems
    Hong Kong, China, September 26–29, 2017

1Please note that, in my unit, the author names are always written in alphabetical order.


I gave the following talks:

  • Distributed Momentum for Byzantine-resilient Stochastic Gradient Descent
    ICLR 2021 — 9th International Conference on Learning Representations
  • Genuinely Distributed Byzantine Machine Learning
    PODC 2020 — ACM 39th Symposium on Principles of Distributed Computing
    First half (background on ML + asynchronous algorithm)
  • Byzantine Resilient Machine Learning: Algorithms to cure poisoned SGD
    EcoCloud 2019 — A Center for Sustainable Cloud Computing
    Invited talk

I have (co-)implemented the following research software:

  • Distributed Momentum for Byzantine-resilient Stochastic Gradient Descent
    ICLR 2021 — 9th International Conference on Learning Representations
    Authored everything
    (Substantial) parts were also reused in:
    • Differential Privacy and Byzantine Resilience in SGD: Do They Add Up?
    • Garfield: System Support for Robust Machine Learning
    • Aksel: Fast Byzantine SGD (best student paper award)
    • Fast and Robust Distributed Learning in High Dimension
    • Genuinely Distributed Byzantine Machine Learning
  • Garfield: System Support for Byzantine Machine Learning
    DSN 2021 — 51st IEEE/IFIP International Conference on Dependable Systems and Networks
    Authored the parallelized CPU and CUDA (GPU) Byzantine-resilient GAR implementations for both PyTorch and TensorFlow
    In addition, this paper reuses code I wrote for:
    • Distributed Momentum for Byzantine-resilient Stochastic Gradient Descent
    • AggregaThor: Byzantine Machine Learning via Robust Gradient Aggregation
  • AggregaThor: Byzantine Machine Learning via Robust Gradient Aggregation
    MLSys 2019 — 1st Conference on Machine Learning and Systems
    Everything, except: MPI and UDP-related code additions, and TensorFlow optional patches
    (Substantial) parts were also reused in:
    • Garfield: System Support for Robust Machine Learning
    • Genuinely Distributed Byzantine Machine Learning
  • On The Robustness of a Neural Network
    SRDS 2017 — IEEE 36th Symposium on Reliable Distributed Systems
    Authored everything


I started my PhD in September 2017, and I will most likely graduate from my PhD around end of August 2021.
On a side note, I hold two MSc degrees:

  • the MSc in Computer Science (specialization "Software Systems") from EPFL
  • the "Diplôme d'Ingénieur" from Supélec (now CentraleSupélec)

Also, I remember as a MSc student that there were two kinds of course projects: those with an automated submission system, and those without any. In my teaching assistant duties, I decided to build a submission system for the EPFL course Concurrent Algorithms. In the project, students have to write their own Software Transactional Memory library, and test it against a common workload on a shared high-performance, multi-core server. The submission system manages the (sequential) testing of the student implementations on the hardware, besides many good-to/must-have features (tight sandboxing via firejail, extensive logging, submission rate limitation, automated credential broadcast to student via emails, student can overwrite/download their own/best submission). The satisfaction of both obtaining (very) positive student feedbacks and at the same time (substantially) "optimizing" my TA workload 😉 seem enough to justify the place of this work in this section.

Personal work

I have been pretty busy with my PhD, and other projects, in the last 3 and an half years. I guess this was expected. There currently are two projects I've (slowly but thoroughly) been working on, but I doubt I will be able to finish and release any of them in the coming months or so.

I have been officially involved in the following student associations:

  • EPIC
    The graduate student association of the faculty. It organizes mountain outings, board game nights, informative panels and talks, and more. I was the treasurer for the year 2019; to be fair it was nothing overwhelming 🙂. The 6 members of the association won the EPFL IC faculty's Distinguished Service Award for our steadfast help and involvement during the EDIC Open House 2019.
  • Supélec Rézo Rennes
    I have been a member of the association for both of my two years at Supélec. I was elected president for my second academic year, from April 2014 to March 2015. This association acts as an Internet and service provider for the students on the campus (5 residential buildings + 1 "social" building), and manages its own hardware and software. This was a great experience, and the knowledge I acquired there still serves me today. During my mandate, the association renewed its stock of aging (even failing) switchs, added the TV via multicast and a few other services. In particular, we worked on a quality of service problem: the upstream bandwidth provided by our (many) ADSL modems was not always shared evenly between our many users, sometimes leading to increased latencies for everyone. My part of the project was to design the algorithms and write the kernel module ensuring fair upstream sharing, while my teammate worked on the integration with the existing software architecture.

Acknowledgments

Do you know this methaphor, to "stand on the shoulders of giants"? That's what I do all day long.

About my PhD work, its (upper layer) foundations were largely laid by the authors of Machine Learning with Adversaries: Byzantine Tolerant Gradient Descent. One of the authors, El Mahdi El Mhamdi, advised me on all the scientific aspects in my junior time, under the supervision of Rachid Guerraoui, who left us carte blanche on this then-new line of research for his unit.

About my personal work, well, there are definitely too many factors that contributed to what I have done so far, and what I can do today. Assuredly, growing in a "fully developed" country, sheltered from all the vital needs, and with parents who introduced me to Mr. Computer very early (age 4 for the keyboard, age 8 for coding), have been a tremendous chance. Stellar resources out there are likely another factor, so perhaps I could take advantage of this section to highlight some pieces of work that (I think) are really worth casting a glance at, to learn about specific subjects:

  • Preshing on Programming
    I find the blog entries on C11/C++11 concurrent programming limpid, which really is a feat for such a technical subject. And there is more to this blog than only concurrent programming.
  • Ralf's Ramblings
    The author is an expert (PhD!) on Rust, and I find that his posts on this language tackle specification/internal details which can be critical to know to properly write unsafe Rust.
  • Git Internals
    Just in case you have missed it. If in general you very much prefer to understand things in details first, to be able to reason about and use them better, regarding git, the documentation is excellent.
  • Distill
    From the about page: "Machine Learning Research Should Be Clear, Dynamic and Vivid. Distill Is Here to Help.".
  • WordReference.com
    For word/expression translation, this is my go-to resource (I use it mostly for EN/FR).

This list is by no mean exhaustive, I put entries as I think about them. There is no particular order.

GPG keys

Master key (certify only)

-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEYDBG+RYJKwYBBAHaRw8BAQdAm4efi1S5KcS7/paOxvg4GBA6vsh41b+ueM4U
UJJUoJO0ElPDqWJhc3RpZW4gUm91YXVsdIiQBBMWCAA4AhsBBQsJCAcCBhUKCQgL
AgQWAgMBAh4BAheAFiEEdgPygd8ofGqet/4IBSy1bvRxi6cFAmAwWokACgkQBSy1
bvRxi6dG8gEA/uukjPv469mRzIXyAYYzvZ7JjxGrX6SXKmJVujbGKnMA/ipoNZfW
IdCWbLDkyapQV4iQjUO2/az5JtLTeK0OymcA
=b2Dd
-----END PGP PUBLIC KEY BLOCK-----

Usual keys

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=vb8x
-----END PGP PUBLIC KEY BLOCK-----