Unsloth - 微调 Phi-4 + 修复 Bug

文章目录

    • Phi-4 错误修复
      • 1、分词器错误修复
      • 2、微调错误修复
      • 3、聊天模板问题
    • 💡 我们的问题修复有效吗?
    • 🦙 Llama-fication
    • 🦥 动态 4 位量化
    • 🛠️ Finetuning Phi-4
    • 性能基准测试


本文翻译自:Phi-4 Finetuning + Bug Fixes by Unsloth (Jan 10, 2025 By Daniel & Michael
https://unsloth.ai/blog/phi4


Phi-4,微软的新14B模型,其性能与OpenAI的GPT-4o-mini相当,现在已在Unsloth上!

我们发现了Phi-4中的4个错误并已修复,大大提高了模型的准确性——详细信息见下文。

我们之前与Google和Hugging Face合作修复了我们的Gemma错误,与Meta合作修复了我们的Llama错误。

Unsloth 使 Phi-4 微调速度提高 2 倍,使用 70% 更少的内存,并支持 >128K 的上下文长度,这比 Hugging Face + FA2 的 12K 在 48GB GPU 上长 12 倍。

我们将Phi-4转换为Llama的架构,以提高准确性和易用性。我们还上传了固定的Phi-4 GGUFs和动态4位量化,此处可以找到。

尝试通过我们的 Phi-4 (14B) Colab 笔记本 进行微调,它适用于谷歌免费的 Tesla T4 16GB GPU。


Phi-4 错误修复

1、分词器错误修复

Phi-4 tokenizer有趣地使用了 作为 BOS(句子开头)、EOS(句子结尾)和 PAD(填充)标记。主要问题是 EOS 标记是错误的——它应该是 <|im_end|>。否则,你将在生成中得到 <|im_end|>
img


2、微调错误修复

填充令牌应该是一个指定的pad令牌,如 Llama(<|finetune_right_pad_id|>),或者我们可以使用未经训练的令牌-例如,我们使用 <|dummy_87|>

使用错误的填充标记,可能导致无限生成,因为在损失计算过程中填充标记会被屏蔽。

因此,我们必须使用正确的填充标记,以避免意外屏蔽掉eos标记,因为在这种情况下,它与填充标记相同。


3、聊天模板问题

Phi-4分词器总是添加一个助手提示 - 只有在通过add_generation_prompt提示时才应该这样做。大多数LLM服务库都期望非自动助手添加,这可能会在服务期间引起问题。

在这里插入图片描述


💡 我们的问题修复有效吗?

多次来自 Reddit 用户的报告显示,我们的修复确实有效!

例如,使用 Hugging Face OpenLLM 领先排行榜,我们看到我们的修复和 Phi-4 的 Llama-fication 表现得更好或与微软官方的 Phi-4 模型相当!


在这里插入图片描述


Reddit 评论显示,我们的修复让 Phi-4 推断效果变得更好:

展览 #1 某人的内部多项选择 测试表明,我们的固定版本做得更好:

在这里插入图片描述


展示 #2 告诉 Phi-4 来绘制 房子的 ASCII 作品

在这里插入图片描述


🦙 Llama-fication

我们还将Phi-4直接移植到了Llama架构中!由于QKV未合并,并且 gate/up 也未合并,这使得微调更加精确。这允许LoRA微调为每个学习单独的A矩阵。查看上传内容这里。


🦥 动态 4 位量化

我们上传了4位bitsandbytes预量化模型,以便更快地下载,然而,Unsloth的动态4位量化显示我们不必量化所有层。这导致精度大幅提高,同时仅使用10%更多的VRAM。

一个展示我们动态量化人员效率的绝佳例子是,通过提交我们的动态4位量化模型 到Hugging Face的OpenLLM排行榜。

我们的4位动态量化模型得分 几乎与我们的16位版本相当——并且远高于标准的Bnb 4位和微软的官方16位模型,尤其是在MMLU方面。

在这里插入图片描述


我们上传了我们的动态 4 位量化版本,其中一些层保留为 16 位。详见此处。

查看激活和权重错误分析图如下:

在这里插入图片描述


🛠️ Finetuning Phi-4

在这里插入图片描述

Phi-4 微调在不到 15GB 的 VRAM 下与 Unsloth 兼容!它还快 2 倍,默认使用我们的动态 4 位量化以实现更高的精度!推理也原生快 2 倍!
尝试在免费的 Google Colab 笔记本这里微调 Phi-4 with Unsloth。要查看我们其他笔记本和模型上传,请访问我们的 文档。


性能基准测试

在这里插入图片描述

我们使用Alpaca数据集进行了测试,批大小为2,梯度累积步数为4,rank = 32,并在所有线性层(q, k, v, o, gate, up, down)上应用了QLoRA。


2025-03-09(日)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多视图几何--对极几何--从0-1理解对极几何

1对极几何 1.1本质矩阵 1.1.1几何约束与推导 如图所示&#xff0c;物体点 P P P&#xff0c;图像点 p 1 , p 2 p_1,p_2 p1​,p2​,相机中心 o 1 , o 2 o_1,o_2 o1​,o2​五点共面的关系称为对极几何。 o 1 , o 2 o_1,o_2 o1​,o2​连线称为基线&#xff0c;其与图像的交点称为…

SpringBoot3.3.0集成Knife4j4.5.0实战

原SpringBoot2.7.18升级至3.3.0之后&#xff0c;Knife4j进行同步升级(Spring Boot 3 只支持OpenAPI3规范)&#xff0c;从原3.0.3(knife4j-spring-boot-starter)版本升级至4.5.0(knife4j-openapi3-jakarta-spring-boot-starter)&#xff0c;以下是升级过程与注意事项等 版本信息…

一招解决Pytorch GPU版本安装慢的问题

Pytorch是一个流行的深度学习框架&#xff0c;广泛应用于计算机视觉、自然语言处理等领域。安装Pytorch GPU版本可以充分利用GPU的并行计算能力&#xff0c;加速模型的训练和推理过程。接下来&#xff0c;我们将详细介绍如何在Windows操作系统上安装Pytorch GPU版本。 查看是否…

Linux——system V共享内存

共享内存区是最快的IPC(进程内通信)形式&#xff0c;不再通过执行进入内核的系统调用来传递彼此的数据 1.共享内存的原理 IPC通信的本质是让不同的进程先看到同一份资源&#xff0c;然后再进行通信&#xff0c;所以想要通过共享内存进行通信&#xff0c;那么第一步一定是让两个…

初识数组

数组的大概内容(自学)上篇 数组的创建和赋值 创建&#xff1a; int [] name new int [5]; int name [] new int [5]; int [] name {1,2.3,4,5}; 赋值&#xff1a; int [] score {1,2,3}; int [] score new int [] {1,2,3}; int [] score;//声明 score new int []…

OSPF-单区域的配置

一、单区域概念&#xff1a; 单区域OSPF中&#xff0c;整个网络被视为一个区域&#xff0c;区域ID通常为0&#xff08;骨干区域&#xff09;。所有的路由器都在这个区域内交换链路状态信息。 补充知识点&#xff1a; OSPF为何需要loopback接口&#xff1a; 1.Loopback接口的…

c++介绍锁二

锁主要在两个以上的线程中使用&#xff0c;当多个线程访问共享资源时&#xff0c;我们需要使用锁&#xff0c;开保证共享资源的唯一性。 当两个线程访问不带锁的共享资源时&#xff0c;如下代码 #include<array> #include<thread> #include<iostream> usin…

Ubuntu系统部署.NET 8网站项目

一、使用XShell连接 Ubuntu系统初次连接时默认的用户名为&#xff1a;ubuntu&#xff0c;使用此用户名与系统登录密码进行连接。 登录成功效果如下图&#xff1a; 二、root用户登录 linux下有超级用户&#xff08;root&#xff09;和普通用户&#xff0c;普通用户不能直接操…

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站&#xff08;学习资料为主&#xff09;&#xff1a; link3.cc/sbook123 所有资料都保存在网盘了&#xff0c;直接转存即可&#xff0c;非常的便利&#xff01; 包括了少儿&#xff0c;小学&#xff0c;初中&#xff0c;中职&am…

图形编辑器基于Paper.js教程24:图像转gcode的重构,元素翻转,旋转

前段时间在雕刻图片时&#xff0c;旋转图片&#xff0c;翻转图片后&#xff0c;发现生成准确的gcode&#xff0c;虽然尺寸对&#xff0c;但是都是以没有旋转&#xff0c;没有翻转的图片进行生成的。后来思考了一下&#xff0c;发现这真是一个大bug&#xff0c;无论图片如何选择…

无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课&#xff0c;而如何在Linux系统上高效地访…

一文了解汽车图像传感器

2024年底,安森美做了题为"How Automotive Image Sensors Transform the Future of Autonomous Driving"的演讲,这里结合其内容对自动驾驶图像传感器做一个介绍。 当前的自动驾驶感知技术主要有两大技术路线:一种是仅使用摄像头作为传感器进行信息采集的纯…

Talking Head Review (数字人算法综述)

文章目录 引言3D Model basedGeneFace背景方案实验 GeneFace背景方案实现细节实验 Real3D-Portrait背景方案实现细节实验 MimicTalk背景方案实现细节实验 face-vid2vid背景方案实现细节实验 MegaPortraits背景方案实现细节实验 VASA-1背景方案实现细节实验 LivePortrait背景方案…

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型 文章目录 DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型1. 通过Ollama下载模型1. 下载DeepSeekR1模型2. 下载嵌入模型 2. 查看本地的Ollama模型3. 模型提供商中添加模型1. 打开模型提供商2. 选择Ollama待添加模型3. 添加DeepSee…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开发环境…

可视化图解算法:反转链表

1. 题目 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0<≤n≤1000 要求&#xff1a;空间复杂度 O(1) &#xf…

P8685 [蓝桥杯 2019 省 A] 外卖店优先级--优先队列“数组”!!!!!

P8685 [蓝桥杯 2019 省 A] 外卖店优先级 题目 解析优先队列如何判断是否使用优先队列&#xff1f;省略规则优先队列常用操作大顶堆 vs 小顶堆定义队列h队列数组 代码 题目 解析 每个外卖店会在不同的时间点收到订单&#xff0c;我们可以看见测试用例的时间顺序是不同的&#x…

使用苹果M芯片打包Docker Image无法在amd64环境下运行

问题所在 使用苹果M芯片打包Docker Image无法在amd64环境下运行&#xff0c;因为arm环境下打包docker默认打包为arm格式&#xff0c;可以使用以下命令查看&#xff1a; docker inspect <ImageID>找到Architecture&#xff0c;可以发现 解决方法 在docker-compose.ym…

低代码开发直聘管理系统

低代码 DeepSeek 组合的方式开发直聘管理系统&#xff0c;兼职是开挂的存在。整个管理后台系统 小程序端接口的输出&#xff0c;只花了两个星期不到。 一、技术栈 后端&#xff1a;SpringBoot mybatis MySQL Redis 前端&#xff1a;Vue elementui 二、整体效果 三、表结…

MySQL的安装及配置

一.以安装包方式下载 1.进入MySQL官网&#xff0c;下载安装包 官网链接&#xff1a;https://downloads.mysql.com/archives/installer/ 2.安装MySQL 二.压缩包方式下载 下载位置&#xff1a;mysql下载位置 解压缩后位置&#xff1a;D:\mysql-8.0.15-winx64 在主目录下复制…