在 Mac 上使用 MLX 微调微软 phi3 模型

微调大语言模型是常见的需求,由于模型参数量大,即使用 Lora/Qlora 进行微调也需要 GPU 显卡,Mac M系是苹果自己的 GPU,目前主流的框架还在建立在 CUDA 的显卡架构,也就是主要的卡还是来自英伟达。如果要用 Mac 来做训练和推理,需要用MLX,MLX 类似于 Pytorch,对苹果芯片做了支持,从而使得苹果电脑也可以进行深度学习。本文将介绍如何用 MLX 训练 Phi3 大语言模型:

安装 MLX

复制代码
pip install mlx-lm

模型下载推理

这里需要访问 HuggingFace 下载,可以使用国内镜像

复制代码
国内镜像
https://hf-mirror.com/

export HF_ENDPOINT=https://hf-mirror.com


python -m mlx_lm.generate --model microsoft/Phi-3-mini-4k-instruct --max-token 2048 --prompt  "<|user|>\nCan you introduce yourself<|end|>\n<|assistant|>"

HF 模型转换为 MLX 模型

mlx 的命令都有一些默认值,-h 中没有具体说明, 只能去源码里看。

例如,转换完成的模型会保存到 mlx_model 目录下。

复制代码
python -m mlx_lm.convert --hf-path microsoft/Phi-3-mini-4k-instruct

通过 MLX 进行调优

首先准备数据,MLX 使用 jsonl 数据格式进行训练,从 github 下载数据集并存放到 data 目录下,一共三个文件,test、train 和 valid,文件下载好之后我们就可以开始训练了。

https://github.com/microsoft/Phi-3CookBook/tree/main/code/04.Finetuning/mlx/data

消耗资源比较多,M2 风扇又开始转了。

复制代码
python -m mlx_lm.lora --model microsoft/Phi-3-mini-4k-instruct --train --data ./data --iters 1000 

模型推理

  • 运行未训练的模型和训练好的模型,并对推理的结果进行比较。

    python -m mlx_lm.generate --model microsoft/Phi-3-mini-4k-instruct --adapter-path ./adapters --max-token 2048 --prompt "Why do chameleons change colors? " --eos-token "<|end|>"

  • 原始模型

    python -m mlx_lm.generate --model microsoft/Phi-3-mini-4k-instruct --max-token 2048 --prompt "Why do chameleons change colors? " --eos-token "<|end|>"

合并模型

将训练好的 Lora adapter 合并到原始模型中。

复制代码
python -m mlx_lm.fuse --model microsoft/Phi-3-mini-4k-instruct

生成 GGUF

通过 llama.cpp 生成 GGUF,量化参数支持 'f32', 'f16', 'bf16', 'q8_0',根据需要自行修改。Phi3 模型默认没有 tokenizer.model,需要从 HF 下载

https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/tree/main

将 tokenizer.model 复制到 /lora_fused_model/ 目录下,完成后运行生成GGUF 的转换命令。

复制代码
git clone https://github.com/ggerganov/llama.cpp.git

cd llama.cpp

pip install -r requirements.txt

python convert-hf-to-gguf.py ../lora_fused_model  --outfile ../phi-3-mini-ft.gguf --outtype q8_0

创建 Ollma 模型

首先创建 Ollama 的模型文件 ModelFile,和上一步生成的 gguf 文件放到同一个目录下

复制代码
FROM ./phi-3-mini-ft.gguf
PARAMETER stop "<|end|>"

创建模型

复制代码
ollama create phi3ft -f Modelfile

Ollama 启动模型并进行推理

复制代码
ollama run phi3ft

总结

MLX 模型推理非常简单,数据准备好就可以训练和推理,本次使用的是 phi3 模型,中文支持的不好,以后可以试试 Qwen2 怎么样。

相关推荐
AirDroid_cn3 小时前
iOS 18 后台应用偷跑流量,如何限制?
macos·ios·cocoa
u***42075 小时前
macOs安装docker且在docker上部署nginx+php
nginx·macos·docker
心灵宝贝18 小时前
Mac Unity 2018.dmg游戏工具 安装步骤 简单易懂教程(附安装包)
macos·unity·游戏引擎
多多*18 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
网易智企20 小时前
智能玩具新纪元:一个AI能力底座开启创新“加速度”
人工智能·microsoft
合作小小程序员小小店1 天前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#
合作小小程序员小小店1 天前
桌面开发,在线%超市销售管理%系统,基于vs2022,c#,winform,sql server数据
开发语言·数据库·microsoft·c#
天庭鸡腿哥1 天前
吾爱3年前的作品,依旧流批!
科技·microsoft·visual studio·everything
q***d1731 天前
C在物联网中的Azure IoT Solution Accelerators
物联网·microsoft·azure
1***s6321 天前
C在物联网中的Azure IoT Hub
物联网·microsoft·azure