当前位置: 首页 > news >正文

在 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.compython -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.gitcd llama.cpppip install -r requirements.txtpython 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 怎么样。

http://www.lryc.cn/news/391196.html

相关文章:

  • 【JavaEE】多线程代码案例(2)
  • Halcon支持向量机
  • 【Python机器学习】模型评估与改进——在模型选择中使用评估指标
  • 【C语言】union 关键字
  • 电脑回收站删除的文件怎么恢复?5个恢复方法详解汇总!
  • mac 安装cnpm 淘宝镜像记录
  • ArcGIS Pro SDK (七)编辑 11 撤销重做
  • Excel 中的元素定位:相对定位、绝对定位和混合定位
  • Idea2024安装后点击无响应
  • 如何提高实验室分析结果的准确性呢
  • Perl 格式化输出:提升代码可读性的技巧
  • JavaScript基础-函数(完整版)
  • AI开发者的新选择:Mojo编程语言
  • 软考(高项)系统分析师--论软件开发模型及应用
  • 同一天提档又撤档!电影《野孩子》宣布取消7月10日公映安排——浔川电影报
  • Shell编程之免交互
  • 基于opencv的斜光测距及python实现
  • 梯度下降算法
  • 第5章:软件工程
  • cefsharp在splitContainer.Panel2中显示调试工具DevTools(非弹出式)含源代码
  • nginx部署多个项目;vue打包项目部署设置子路径访问;一个根域名(端口)配置多个子项目
  • 02-部署LVS-DR群集
  • DataWhale-吃瓜教程学习笔记 (六)
  • 在docker配置Nginx环境配置
  • 在不修改.gitignore的情况下,忽略个人文件的提交
  • 【Unity navmeshaggent 组件】
  • 51单片机第18步_将TIM0用作13位定时器
  • 构建现代医疗:互联网医院系统源码与电子处方小程序开发教学
  • 2024亚太赛(中文赛)数学建模竞赛选题建议+初步分析
  • 10 - Python文件编程和异常