mlx-swift icon indicating copy to clipboard operation
mlx-swift copied to clipboard

Use MLX inside a Swift playground

Open rounak opened this issue 1 year ago • 4 comments

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 <default.metallib> 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

rounak avatar May 20 '24 04:05 rounak

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:

  • https://www.pardel.dev/3rd-party-frameworks-in-xcode-playgrounds/
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.

davidkoski avatar May 20 '24 05:05 davidkoski

Can i use mlx in Playgrounds app (iPadOS)?

mahdiaslanimk avatar Jun 15 '24 12:06 mahdiaslanimk

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

Emasoft avatar Oct 14 '24 22:10 Emasoft

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 currently has a plugin as part of the build process and this would have to be removed: #156
  • it has metal shaders -- no idea if these will build
  • it has an extensive C/C++ codebase -- this certainly won't build

It looks possible on macOS playgrounds

davidkoski avatar Oct 22 '24 15:10 davidkoski