ml-explore / mlx-swift

Swift API for MLX
https://ml-explore.github.io/mlx-swift/
MIT License
674 stars 54 forks source link

Use MLX inside a Swift playground #89

Open rounak opened 6 months ago

rounak commented 6 months ago

I would love to use MLX Swift inside an Xcode playground, to get an environment similar to Jupyter notebooks. However when I try to do this, I get an error:

libc++abi: terminating due to uncaught exception of type std::runtime_error: library not found Failed to load device library from or </Users/rounak/Library/Developer/Xcode/DerivedData/FooTest-bkqaiyzcinmaprfeeunnqmandcdl/Build/Intermediates.noindex/Playgrounds/Products/Debug/PackageFrameworks/Cmlx.framework/Versions/A/mlx.metallib>.

You can try to reproduce by cloning this repo: https://github.com/rounak/TestRepoMLXPlayground

davidkoski commented 6 months ago

I think the problem is that mlx-swift isn't a framework, it is a SPM library. I tried making a new framework in your Xcode project:

image

I also switched mlx-swift to the main branch -- the 0.1 tag is quite old and we haven't been making new tags (maybe we (I) should).

OK, once the framework is created then we can set up a scheme for the playground and tell it to link against that framework. I was looking at this page as I wasn't familiar with how to do that:

image

Anyway, the error comes from the fact that there was no place to attach the resources. You have a command line program and it can link to frameworks but can't contain them.

I was unable to run the playground, but that is because my environment isn't set up properly (with multiple Xcode versions), but I think this might work.

mahdiaslanimk commented 5 months ago

Can i use mlx in Playgrounds app (iPadOS)?

Emasoft commented 1 month ago

My iPad PRO m4 is waiting for an MLX playground when I can run LLM models and FLUX... please make that possible..🙏

davidkoski commented 1 month ago

I don't think this is going to be possible on iPad -- you can read about it here.

In order to do this we would need to put all of mlx-swift into the playground so it could build. That is doable, but:

It looks possible on macOS playgrounds