Managing Thousands of DL Experiments and Staying Sane
At scale, launching ML research experiments is already complicated. Analyzing them without proper planning is just impossible. Here I describe tips about how I do ML experiments

I'm an AI researcher and ML engineer. I hold an M.Sc. in Data Science from EPFL and a B.Sc. in CS from MIPT. Over the last couple of years, I've built real-time speech recognition systems from the ground up at Yandex and researched compute-optimal quantization at Apple. My academic work on efficient training dynamics and scaling laws has been published at ICLR and TMLR. When I'm not doing research or contributing to open-source projects, I write here about whatever I'm currently exploring—from optimizing GPU kernels with Triton to the scaling laws behind efficient training.
27 postsAt scale, launching ML research experiments is already complicated. Analyzing them without proper planning is just impossible. Here I describe tips about how I do ML experiments
Training quantized neural networks involves a fundamental trade-off: how should you divide your compute budget between full-precision pretraining and quantization-aware training?
Why is Flash Attention so fast? Find out how Flash Attention works. Afterward, we'll polish our understanding by writing a GPU kernel of the algorithm in Triton.
It's all about making your models run faster, from flicking a magic “compile” switch to writing your own custom GPU code. In each step, we’ll implement an innocent softmax function, but things are about to get dark by the end.
If all machine learning engineers want one thing, it's faster model training — maybe after good test metrics.
Swift actors are a powerful tool to address data races and make your code thread-safe. However, it is also quite a sophisticated concept that requires deep understanding to write efficient and bug-free code.
When you see something that does not work in an omnipresent framework, you believe it can't be completely broken, right?
Unleash the power of Swift concurrency with Actors! Get all the information you need in this comprehensive article
Swift uses ARC to track and deallocate unused objects. Learn about the three types of reference counts and how ARC works — in this detailed post.
Want to create dynamic and responsive user interfaces in SwiftUI? Data binding is the key! In this tutorial, I'll show you how to use @State, @ObservedObject, @EnvironmentObject, and @Binding to keep your user interface in sync with your data
The modular architecture is excellent. But how to implement it effectively with SwiftUI? From its core, SwiftUI is state-driven, and it can be tricky to modularize an app and define exact responsibility borders.
This is the second article in a series on modular app architecture. In this post, I will cover implementation details using Tuist
What will you choose: MVVM, MVC, VIPER? Those all are local and problem-specific architectures. But how to structure your app on a larger scale to make it scalable and well-organized?
Apple introduces new SwiftUI's Layout protocol with the release of iOS 16. It is a powerful tool for constructing custom views with SwiftUI elegance.
Managing navigation in pure SwiftUI is hard and leads to messy solutions. In this post, I will show you how you can manage views effectively
Easy to understand explanation of suffix automaton with implementation. Finally, generating correct Rickroll lyrics suffix automaton
Swift provides DispatchQueue as an excellent layer above raw threads. But sometimes you want to use a low-level thread API
I'm going to show how complex SwiftUI views can be animated efficiently using VectorArithmetic protocol with Accelerate library for fast computations.
Apple released the first version of the async swift algorithms package. It provides tools and algorithms to use with the introduced not that far ago Async Sequence
Binary search trees are mostly hard. Writing red-black tree is a nightmare. Here, I'm going to explain one of the easiest, yet efficient and powerful balanced binary tree — treap or cartesian tree
Type placeholders were recently introduced in Swift 5.6. Get in touch with new useful Swift feature.
Everything you need to know about new Swift asynchronous features. Async await, main actor, task, async get, and possible use cases — all covered.
Here, I collected Swift features that are less known and can be useful when you prepare for interviews or want to deepen your Swift knowledge.
Here I cover note-taking apps for productivuty and creating your own knowledge database
I’m going to tell you about the internals of the Mach-O file and give an introduction to the simple relocatable object file structure
Skip List is a nice structure that lets you to perform insertions, searches, and finding n-th maximum. In this post I focus on skip list indexation
Here, I combine the explanation of Neural Nets with coding. By the end, we will develop a basic neural network and try to solve usual problems