mlx-examples:基于MLX框架的Apple Silicon示例库,让你在Mac上本地跑通文本、图像与视频工作流
【免费下载链接】mlx-examplesExamples in the MLX framework项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-examples
想在Mac上本地跑Stable Diffusion,PyTorch一加载就把8GB内存吃光了?mlx-examples是Apple官方的MLX框架示例库:把文本生成、图像分割、视频生成这些主流模型搬到Apple Silicon上,代码在M芯片上直接跑通。从MNIST到Wan2.1,每个目录都是独立可运行的完整脚本。
5分钟跑起来:先用MNIST验证环境
仓库里最小的入口是 mnist/main.py,用两层MLP在MNIST手写数字上训练,几十行代码把加载数据、前向、优化器更新、验证的完整循环都走了一遍:
git clone https://gitcode.com/GitHub_Trending/ml/mlx-examples cd mlx-examples/mnist pip install -r requirements.txt python main.py跑起来后控制台按epoch打印测试集准确率和单轮耗时,默认CPU后端,10轮训下来准确率稳定在0.97附近。M系列芯片加--gpu切到Metal后端,速度会明显快一截。看到不断刷新的accuracy数字,环境就算搭好了。
这个仓库能搭出哪些本地AI工作流
图像生成:stable_diffusion/txt2image.py 一行提示词出四张图,默认SDXL turbo两步采样,秒级出图;同目录的 image2image.py 支持图生图编辑。
图像分割:segment_anything 实现了SAM,转换权重后可以对单张图点选分割,或对整个文件夹批量自动生成掩码,notebooks 里附了交互示例。
文本生成:llms/ 目录下有 Llama、Mistral、Mixtral 及 GGUF 格式的最小实现,convert.py 转完权重就能对话,还附了投机解码(speculative_decoding)的完整例子。
语音转写:whisper/mlx_whisper/transcribe.py 把本地音频转成文字,多语言都支持,配 benchmark.py 可以看转写速度。
多模态:clip 做图文匹配,下面的猫图就是它的测试素材;llava/generate.py 能基于图片做对话生成。
视频生成:video/wan2.1/ 是仓库里最新、也最能打的部分,下一节单独展开。
Wan2.1视频生成:10GB到36GB内存的参数怎么调
仓库里最能代表"MLX能跑重活"的是 video/wan2.1/txt2video.py。工作流分三段:T5文本编码器把提示词变成条件向量,DiT扩散变换器对81帧latent逐步去噪(默认50步),最后VAE解码成像素、ffmpeg存成mp4。
cd video/wan2.1 pip install -r requirements.txt python txt2video.py 'A cat playing piano' --output out.mp4默认用1.3B的T2V模型,权重从Hugging Face自动下载。硬件参考(81帧480p、未量化):1.3B约10GB内存,M4 Max上单步约90秒;14B要约36GB,单步230秒。16GB的机器建议锁死1.3B,追画质再上36GB以上的机型。
常调的参数:--size 832x480 --frames 81控制分辨率和帧数;--guidance 5.0是引导强度,设成1.0会跳过无条件分支、单步开销减半;--quantize压权重省内存;--teacache 0.05会跳过约34%特征相近的步,README实测肉眼几乎无损,阈值到0.25损失就比较明显了。TeaCache的默认阈值写在 wan/pipeline.py 里,想再精细调可以从那入手。图生视频看 img2video.py,给一张首帧图就能出视频。
踩过的坑:内存、权重与慢生成 📌
问题:生成到一半进程被系统杀掉。原因是MLX默认缓存中间张量,1.3B跑480p不加任何优化要占约14GB。解法:加--no-cache把缓存上限置0,能压到约10GB;还不够就叠加--quantize。Stable Diffusion 的思路类似,stable_diffusion/txt2image.py 在--quantize下把文本编码器量化到4bit、UNet量化到8bit,SDXL因此能塞进8GB的Mac Mini。
问题:仓库克隆下来直接跑,报缺权重。原因是仓库只存代码,权重需要下载并转换成MLX格式。各目录的convert脚本负责这一步,比如 llms/llama/convert.py 和 segment_anything/convert.py。如果模型比较热门,Hugging Face上的MLX社区一般已经有转好的checkpoint,可以直接用,省掉转换。
问题:视频生成完却存不了,或SAM报缺库。存视频要求ffmpeg在PATH里;SAM的掩码输出依赖opencv,还要RLE格式的话再加pycocotools。这类报错都来自依赖没装全,不是模型问题。
问题:50步等得想睡觉。两条加速路线:一是换蒸馏权重配--sampler euler --steps 4,步数直接从50砍到4;二是用TeaCache跳冗余计算,0.05阈值是质量和速度之间的甜点,先别急着往0.25上调。
接下来去哪
- 图像方向往 flux/ 走:FLUX生成加LoRA微调,dreambooth.py 给了完整的人物微调流程。
- 想自己微调小模型,看 lora/:在WikisQL数据集上演示参数高效微调,含训练、验证、权重融合全流程。
- 想系统补课,wwdc25/ 里的官方WWDC25教程notebook覆盖了KV Cache、语言模型训练这些基础,代码和练习数据都带好了。
回到开头那个8GB内存告急的场景——量化和缓存调优做完,仓库里主流的工作流在一台普通M系列Mac上都能落地。建议的路径是先从mnist熟悉mx数组和训练循环,再钻进video/wan2.1/把第一个mp4跑出来;到那一步,整个仓库就是你的工具箱了。
【免费下载链接】mlx-examplesExamples in the MLX framework项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-examples
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考