mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-10-31 07:58:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # MLX
 | |
| 
 | |
| [**Quickstart**](#quickstart) | [**Installation**](#installation) |
 | |
| [**Documentation**](https://ml-explore.github.io/mlx/build/html/index.html) |
 | |
| [**Examples**](#examples)
 | |
| 
 | |
| [](https://circleci.com/gh/ml-explore/mlx)
 | |
| 
 | |
| MLX is an array framework for machine learning on Apple silicon,
 | |
| brought to you by Apple machine learning research.
 | |
| 
 | |
| Some key features of MLX include:
 | |
| 
 | |
| - **Familiar APIs**: MLX has a Python API that closely follows NumPy. MLX
 | |
|    also has fully featured C++, [C](https://github.com/ml-explore/mlx-c), and
 | |
|    [Swift](https://github.com/ml-explore/mlx-swift/) APIs, which closely mirror
 | |
|    the Python API. MLX has higher-level packages like `mlx.nn` and
 | |
|    `mlx.optimizers` with APIs that closely follow PyTorch to simplify building
 | |
|    more complex models.
 | |
| 
 | |
| - **Composable function transformations**: MLX supports composable function
 | |
|   transformations for automatic differentiation, automatic vectorization,
 | |
|   and computation graph optimization.
 | |
| 
 | |
| - **Lazy computation**: Computations in MLX are lazy. Arrays are only
 | |
|   materialized when needed.
 | |
| 
 | |
| - **Dynamic graph construction**: Computation graphs in MLX are constructed
 | |
|   dynamically. Changing the shapes of function arguments does not trigger
 | |
|   slow compilations, and debugging is simple and intuitive.
 | |
| 
 | |
| - **Multi-device**: Operations can run on any of the supported devices
 | |
|   (currently the CPU and the GPU).
 | |
| 
 | |
| - **Unified memory**: A notable difference from MLX and other frameworks
 | |
|   is the *unified memory model*. Arrays in MLX live in shared memory.
 | |
|   Operations on MLX arrays can be performed on any of the supported
 | |
|   device types without transferring data.
 | |
| 
 | |
| MLX is designed by machine learning researchers for machine learning
 | |
| researchers. The framework is intended to be user-friendly, but still efficient
 | |
| to train and deploy models. The design of the framework itself is also
 | |
| conceptually simple. We intend to make it easy for researchers to extend and
 | |
| improve MLX with the goal of quickly exploring new ideas.
 | |
| 
 | |
| The design of MLX is inspired by frameworks like
 | |
| [NumPy](https://numpy.org/doc/stable/index.html),
 | |
| [PyTorch](https://pytorch.org/), [Jax](https://github.com/google/jax), and
 | |
| [ArrayFire](https://arrayfire.org/).
 | |
| 
 | |
| ## Examples
 | |
| 
 | |
| The [MLX examples repo](https://github.com/ml-explore/mlx-examples) has a
 | |
| variety of examples, including:
 | |
| 
 | |
| - [Transformer language model](https://github.com/ml-explore/mlx-examples/tree/main/transformer_lm) training.
 | |
| - Large-scale text generation with
 | |
|   [LLaMA](https://github.com/ml-explore/mlx-examples/tree/main/llms/llama) and
 | |
|   finetuning with [LoRA](https://github.com/ml-explore/mlx-examples/tree/main/lora).
 | |
| - Generating images with [Stable Diffusion](https://github.com/ml-explore/mlx-examples/tree/main/stable_diffusion).
 | |
| - Speech recognition with [OpenAI's Whisper](https://github.com/ml-explore/mlx-examples/tree/main/whisper).
 | |
| 
 | |
| ## Quickstart
 | |
| 
 | |
| See the [quick start
 | |
| guide](https://ml-explore.github.io/mlx/build/html/usage/quick_start.html)
 | |
| in the documentation.
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| MLX is available on [PyPI](https://pypi.org/project/mlx/). To install MLX on
 | |
| macOS, run:
 | |
| 
 | |
| ```bash
 | |
| pip install mlx
 | |
| ```
 | |
| 
 | |
| To install the CUDA backend on Linux, run:
 | |
| 
 | |
| ```bash
 | |
| pip install mlx[cuda]
 | |
| ```
 | |
| 
 | |
| To install a CPU-only Linux package, run:
 | |
| 
 | |
| ```bash
 | |
| pip install mlx[cpu]
 | |
| ```
 | |
| 
 | |
| Checkout the
 | |
| [documentation](https://ml-explore.github.io/mlx/build/html/install.html#)
 | |
| for more information on building the C++ and Python APIs from source.
 | |
| 
 | |
| ## Contributing
 | |
| 
 | |
| Check out the [contribution guidelines](https://github.com/ml-explore/mlx/tree/main/CONTRIBUTING.md) for more information
 | |
| on contributing to MLX. See the
 | |
| [docs](https://ml-explore.github.io/mlx/build/html/install.html) for more
 | |
| information on building from source, and running tests.
 | |
| 
 | |
| We are grateful for all of [our
 | |
| contributors](https://github.com/ml-explore/mlx/tree/main/ACKNOWLEDGMENTS.md#Individual-Contributors). If you contribute
 | |
| to MLX and wish to be acknowledged, please add your name to the list in your
 | |
| pull request.
 | |
| 
 | |
| ## Citing MLX
 | |
| 
 | |
| The MLX software suite was initially developed with equal contribution by Awni
 | |
| Hannun, Jagrit Digani, Angelos Katharopoulos, and Ronan Collobert. If you find
 | |
| MLX useful in your research and wish to cite it, please use the following
 | |
| BibTex entry:
 | |
| 
 | |
| ```text
 | |
| @software{mlx2023,
 | |
|   author = {Awni Hannun and Jagrit Digani and Angelos Katharopoulos and Ronan Collobert},
 | |
|   title = {{MLX}: Efficient and flexible machine learning on Apple silicon},
 | |
|   url = {https://github.com/ml-explore},
 | |
|   version = {0.0},
 | |
|   year = {2023},
 | |
| }
 | |
| ```
 | 
