Jelly ML logo

JellyML. The why.

by Michael Mulet (January 30, 2023)

How many times have I done this?

Well, let me tell you, I have done this many times. Each time seems just a little bit more painful than the last.

I finally came to the point where enough was enough, there had to be a better way.

After a little brainstorming, I thought up the solution of embedding the code into the model checkpoint. Checkpoints are usually GB in size, so a few MB of code is not going to make a difference. One checkpoint maps to one commit. Where are the commits? They are in the models. Simple.

That's how JellyML was born.

I started implementing it by doing some really exciting things with importlib, tracking all of the imports, and some hacky things with LD_PRELOAD to intercept what files were being opened. Luckily, I only worked on this for a little bit before I realized that I had nerd sniped myself.

XKCD 356, nerd sniping

Don't get me wrong, I love following the white rabbit down a hole of cool hacks, but I have other goals I need to accomplish.

The solution, hopefully the right solution, was to use git.

With that out of the way, I had some sub goals that I wanted to accomplish with JellyML:

I think I've accomplished all of these goals. I'm pretty happy with the result.

I tried to keep the interface (the api and the command line) as simple as possible. I've tried to make it so that if you do something wrong, you will get a helpful error message, and a way to fix it. I know that I am dealing with your work, and there is absolutely no room for error. In the end, I think that the development of JellyML was 5% programming, and 95% thinking about what could go wrong. Which, I think is a good ratio for this kind of project.

A.I. Usage

It would be kind of a shame to not use A.I. to generate some of the content for a program that is all about A.I./M.L.

The future

I hope you like JellyML! Let me know if you have any suggestions


I've hidden a few secrets in the website and in the program itself. I hope you can find them.