-
Notifications
You must be signed in to change notification settings - Fork 360
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MLX model support #124
base: main
Are you sure you want to change the base?
MLX model support #124
Conversation
* Added MLX feature extractor implementation * CI fix * added better multiarray conversion * CI fix * CI fix * fixed `asMLMultiArray` implementation, fixed CI * update xcode, trigger pr when targeting not main branch * check if vision os builds * update watch os version * conditional watchos compilation * conditional package.swift * conditional package.swift * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * ci fix * add other tests targest back * package.swift cleanup * general cleanup * revert to xcode 15.2
…into mlx-support
* added mlx audio encoder * fixed model protocols * removed not needed
@jkrukowski relevant: https://ml-explore.github.io/mlx/build/html/install.html#binary-size-minimization We'll want to minimize the binary size as much as reasonable for iOS deployment |
…into mlx-support
* fixes for mlx models * fixed asMLXArray * fixed tests, mlx doesn't run on simulators * fix
* Added more tests for MLX, cleanup * bumped timeout * fixed tests * reverted cache id
* update mlx-swift * - reverted mlx version - updated readme - updated makefile * reversed * fixed tests * updated mlx-swift * updated makefile * remove device change, fft can run on gpu now * updated readme, added tests * updated readme * review changes * review changes * CI model cache path fix * tests failed * Update package.swift * Keep setupModels with adjustments * Test CI skip cache * Test CI package name change * Test CI optional CLI settings * Use correct logits size for MLX --------- Co-authored-by: ZachNagengast <[email protected]>
} | ||
|
||
private func qkvAttention(_ q: MLXArray, _ k: MLXArray, _ v: MLXArray, _ mask: MLXArray?) -> (MLXArray, MLXArray) { | ||
let (nBatch, nCtx, nState) = (q.shape[0], q.shape[1], q.shape[2]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this still on the roadmap? |
@neo773 Yes it is, we plan to finalize this before v1.0.0 sometime early this year. It is one of the last remaining pieces of feature work to finish up for the v1.0.0 and we will also refine a lot of the docs and do a bit of refactoring for a stable, production-ready release. |
Draft PR for the early stages of supporting MLX based whisper models directly in WhisperKit. (To be updated)
Initial TODOs:
FeatureExtracting
protocolAudioEncoding
protocolTextDecoding
protocol orTextDecoder
subclass (research needed)Compiling whisperkit-cli optionally with/without MLXCrossing this out for now: whisperkit-cli does not have the same bundle size constraints as the core libraryxcodebuild
instead of iOS simulator (simulator is not supported for MLX)