本教程旨在帮助用户基于苹果原生框架[MLX-LM](https://github.com/ml-explore/mlx-lm) 部署和使用大模型,以便于充分利用 Apple M 系列芯片的性能进行本地推理。
## 🔧 环境配置
```bash
# 创建 Conda 虚拟环境
conda create -n mlx-lm python=3.11
conda activate mlx-lm
# 安装依赖
pip install -r requirements.txt
```
## 📁 项目结构
```
models_mlx/
├── run_app_gradio.py # Gradio 交互式应用(模型下载 + 对话)
├── requirements.txt # Python 依赖
├── configs/ # 模型配置(JSON 格式,支持热加载)
│ └── model_info/
│ ├── mlx.json # MLX 量化模型列表
│ └── original.json # 原始 HuggingFace 模型列表
├── modules/ # 功能模块
│ └── download_model.py # 模型下载模块(可独立运行)
├── models/ # 下载的模型存放目录
├── notebooks/ # Jupyter Notebook 教程
│ ├── Qwen3_MLX_部署与交互.ipynb
│ └── Qwen3_Transformers_部署与交互.ipynb
└── docs/ # 文档
└── MLX-LM_Intro.md # MLX 框架简介
```
## 📖 教程内容
### 理论部分
### Notebook 教程
| Notebook | 说明 |
|----------|------|
| [Qwen3_MLX_部署与交互](./notebooks/Qwen3_MLX_部署与交互.ipynb) | 使用 MLX 框架部署 Qwen3(Apple Silicon 推荐) |
| [Qwen3_Transformers_部署与交互](./notebooks/Qwen3_Transformers_部署与交互.ipynb) | 使用 Transformers 框架部署 Qwen3(通用兼容) |
### Gradio 交互应用
集模型下载与对话为一体的 Web 界面,支持:
- **模型下载**:按 公司 → 系列 → 模型 三级选择,自动检测本地是否已下载
- **模型对话**:支持 MLX / Transformers 双框架,MLX 支持流式输出
- **参数调节**:Temperature、Top-p、Max Tokens、思考模式
- **热加载**:修改 `configs/` 下的 JSON 配置后,刷新页面或点击刷新按钮即可生效
```bash
python run_app_gradio.py
```
### 命令行下载模型
也可以通过命令行交互式下载模型(无需启动 Gradio):
```bash
python -m modules.download_model
```
## 🚀 支持模型
模型列表通过 `configs/` 目录下的 JSON 文件配置。
| 公司 | 系列 | 模型列表 |
|------|------|-------------------|
| Alibaba | QwQ | `QwQ-0.5B-4bit` |
| Alibaba | Qwen1.5 | `Qwen1.5-0.5B-Chat-4bit`
`Qwen1.5-1.8B-Chat-4bit`
`Qwen1.5-MoE-A2.7B-4bit`
`Qwen1.5-MoE-A2.7B-Chat-4bit` |
| Alibaba | Qwen2 | `Qwen2-0.5B-Instruct-4bit`
`Qwen2-1.5B-4bit`
`Qwen2-1.5B-Instruct-4bit` |
| Alibaba | Qwen2-Math | `Qwen2-Math-1.5B-Instruct-4bit` |
| Alibaba | Qwen2.5 | `Qwen2.5-0.5B-4bit`
`Qwen2.5-0.5B-Instruct-4bit`
`Qwen2.5-1.5B-4bit`
`Qwen2.5-1.5B-Instruct-4bit`
`Qwen2.5-3B-4bit`
`Qwen2.5-3B-Instruct-4bit` |
| Alibaba | Qwen2.5-Coder | `Qwen2.5-Coder-0.5B-4bit`
`Qwen2.5-Coder-0.5B-Instruct-4bit`
`Qwen2.5-Coder-1.5B-4bit`
`Qwen2.5-Coder-1.5B-Instruct-4bit`
`Qwen2.5-Coder-3B-4bit`
`Qwen2.5-Coder-3B-Instruct-4bit` |
| Alibaba | Qwen2.5-Math | `Qwen2.5-Math-1.5B-4bit`
`Qwen2.5-Math-1.5B-Instruct-4bit` |
| Alibaba | Qwen3 | `Qwen3-0.6B-4bit`
`Qwen3-0.6B-Base-4bit`
`Qwen3-1.7B-4bit` |
| Alibaba | Qwen3.5 | `Qwen3.5-0.8B-4bit`
`Qwen3.5-2B-4bit` |
| DeepSeek | DeepSeek-R1 | `DeepSeek-R1-Distill-Qwen-1.5B-4bit` |
| DeepSeek | DeepSeek-V3 | - |
| Google | Gemma-2 | `gemma-2-2b-4bit`
`gemma-2-2b-it-4bit`
`gemma-2-2b-jpn-it-4bit`
`gemma-2-baku-2b-it-4bit` |
| Google | Gemma-3 | `gemma-3-1b-it-4bit`
`gemma-3-1b-pt-4bit`
`gemma-3-270m-4bit`
`gemma-3-270m-it-4bit` |
| Meta | Llama-3.1 | - |
| Meta | Llama-3.2 | `Llama-3.2-1B-Instruct-4bit`
`Llama-3.2-3B-Instruct-4bit` |
| Meta | Llama-4 | - |
| Microsoft | Phi-2 | `phi-2-super-4bit` |
| Microsoft | Phi-4 | - |
| Mistral | Mistral | `Ministral-3-3B-Instruct-2512-4bit`
`Ministral-3-3B-Reasoning-2512-4bit` |
| Moonshot | Kimi | - |
如需添加新模型,编辑 `configs/model_info/mlx.json` 或 `configs/model_info/original.json` 即可。