So you think you can optimize an ALD process
One of the themes of this year has been autonomous materials synthesis, and the promise that these approaches will help accelerate scientific research in materials science, something that in my case, at least from an experimental standpoint, almost invariably means atomic layer deposition.
While we had been playing with the integration of machine learning with atomic layer deposition tools since a while ago, it wasn’t until last year that we started exploring the integration of agents based on LLMs and custom harnesses with our ALD tools. Beyond proving that 20 years (ouch!) of experience playing with Python had been useful after all, it also led to students and postdocs exploring the performance and capabilities of these agents over the summer.
The conclusion of this exploration, often tied to real research projects not necessarily involving AI, is that optimizing real ALD processes, with all their messiness, non-idealities, and imperfect and noisy in-situ characterization data, is hard. This led me to think that, when it comes to exploring the performance of different machine learning algorithms and AI models, we need better virtual environments that incorporate some of these characteristics.
This is the motivation for the Python package aldenv.
This package implements a collection of simple ALD processes incorporating some of the key non-idealities that we find in the lab. I already used this environment to evaluate the performance of some simple AI agents for ALD process optimization, and we have another work in the pipeline that uses more mainstream machine learning approaches.
aldenv thus far is based on simple ALD model that considers non-overlapping square pulses for both precursor and co-reactant. It turns out that the steady state solution for a surface kinetics comprising a collection of first-order irreversible Langmuir kinetic pathways plus some non-self limited component can be solved analytically, which saves a lot of computing time (finding this made me extremely happy as a physicist). To this model, I added both experimental noise and delays due to upstream precursor consumption.
aldenv is free to use: take a few of the processes, connect them to your favorite algorithm and test their performance. Then crank up the non-idealities (soft-saturating, non-self-limited, noise and delays) and see if the algorithm still works before deploying it in a real reactor. This is right now the workflow that I use before porting a new agent or algorithm over to one of our reactors.