Basalt: ML Framework
GitHub
GitHub - basalt-org/basalt: A Machine Learning framework from scrat...
A Machine Learning framework from scratch in Pure Mojo 🔥 - basalt-org/basalt
22 Replies
by @benny, @Stijn, @NKspartan, and @fnands
Well, mostly the first three with some small contributions by me 🙃
making steady progress towards another release, we are always looking for more people interested in helping move the project along :)
Great. Working on implementing some activation functions (draft PR open). Are there any I should prioritize?
Also, is there currently a place to write the tests for the backwards passes of the activation functions?
Awesome @Yosi Frost
I dont think we have any priorities with specific activation functions, whatever you can think of works. Tests for activation fuctions should go in /tests/mojo/test_activations.mojo
Great! Is tests/test_activations.mojo just for forwards or does it also include tests for the backwards pass?
it should also include backwards tests
Ok. I must have missed them. Will write those tests as well. Thank you!
I'm interested in dataloading and made a comment in https://github.com/basalt-org/basalt/issues/90#issuecomment-2127550998. I agree with what as posted on one of the other channels about not licking the cookie though. I'm curious what frameworks people have used for dataloading / what they like / dont like.
To me I think mojo still needs Iterable / Gettable traits to make transforms/pipes possible to even prototype.
you could easily make both of those traits now with current Mojo, im not sure I fully understand the question
I think there are still features needed (?). I saw this thread: https://discord.com/channels/1087530497313357884/1224434323193594059/1238338296699158598 which gave me the impression its not possible yet
while that is correct, because of how Basalt works right now, dtype is accessible for any module, so you don’t need a generic trait to return a Scalar[dtype]
but i’m not sure if this would change for your use case
Out of curiosity, is the source code for basalt based on any other frameworks or whitepapers or is it just from first principles? I noticed it has vague similarities to tinygrad but not enough to be recognizable as a port
There are definitely some influences from other frameworks, but it's also very much tailored to whatever Mojo allows. You'll should recognize stuff from pytorch, tinygrad, mlx. Those are probably the ones that are most looked at
Giving a talk at todays community meeting if anyone is interested, the video will be posted after :)