Phi-4-mini-instruct-unsloth-bnb-4bit:Unsloth优化的Phi-4模型,支持多语言文本生成与高效推理

基于Phi-4-mini-instruct的优化版本,具备128K上下文长度,支持多语言,推理能力强,尤其擅长数学与逻辑任务,内存占用低,训练速度快,适合各类AI应用开发。【此简介由AI生成】

分支2Tags0

base_model: microsoft/Phi-4-mini-instruct license: mit license_link: https://huggingface.co/microsoft/Phi-4-mini-instruct/resolve/main/LICENSE language:

  • multilingual pipeline_tag: text-generation tags:
  • phi
  • phi4
  • unsloth
  • nlp
  • code
  • microsoft
  • math
  • chat
  • conversational library_name: transformers

这是修复了 BUG 的 Phi-4-mini-instruct。
有关包含我们错误修复的 Phi-4 版本(包括 GGUF 和 4 位格式),请参见 我们的集合

Unsloth 的 Phi-4 动态量化模型(Dynamic Quants) 采用选择性量化,与标准 4 位量化相比,准确率显著提升。

使用 Unsloth 微调您自己的推理模型(如 R1)!

我们提供免费的 Google Colab 笔记本,可将 Phi-4 转变为推理模型:https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Phi_4_(14B)-GRPO.ipynb

Unsloth 错误修复:

  1. 填充(Padding)和 EOS 标记相同 - 已修复此问题。
  2. 聊天模板存在多余的 EOS 标记 - 已移除。否则在推理过程中会出现 <|end|>。
  3. EOS 标记应为 <|end|>,而非 <|endoftext|>。否则模型会在 <|endoftext|> 处终止。
  4. 将未知标记(unk_token)从 EOS 更改为 �。

✨ 免费微调

所有笔记本均对初学者友好!添加您的数据集,点击“全部运行”,您将获得一个速度提升 2 倍的微调模型,该模型可导出为 GGUF 格式、用于 vLLM 或上传至 Hugging Face。

Unsloth 支持 免费笔记本 性能提升 内存占用减少
GRPO 与 Phi-4 ▶️ 在 Colab 上开始 2 倍 80%
Llama-3.2 (3B) ▶️ 在 Colab 上开始 2.4 倍 58%
Llama-3.2 (11B vision) ▶️ 在 Colab 上开始 2 倍 60%
Qwen2 VL (7B) ▶️ 在 Colab 上开始 1.8 倍 60%
Qwen2.5 (7B) ▶️ 在 Colab 上开始 2 倍 60%
Llama-3.1 (8B) ▶️ 在 Colab 上开始 2.4 倍 58%
Phi-4 (14B) ▶️ 在 Colab 上开始 2 倍 50%
Gemma 2 (9B) ▶️ 在 Colab 上开始 2.4 倍 58%
Mistral (7B) ▶️ 在 Colab 上开始 2.2 倍 62%

模型概述

Phi-4-mini-instruct 是一款轻量级开源模型,它基于合成数据和经过筛选的公开网站内容构建而成,重点关注高质量、推理密集型数据。该模型隶属于 Phi-4 模型家族,支持 128K token 的上下文长度。此模型经过了增强处理,融合了监督式微调与直接偏好优化技术,以确保精准遵循指令并具备强大的安全保障措施。

📰 Phi-4-mini Microsoft 博客
📖 Phi-4-mini 技术报告
👩‍🍳 Phi 实用指南
🏡 Phi 门户
🖥️ 试用 AzureHuggingface

Phi-4: [mini-instruct | onnx]; multimodal-instruct;

预期用途

主要使用场景

该模型旨在广泛应用于多语言的商业和研究领域。它适用于通用人工智能系统及应用,尤其适合以下需求:

  1. 内存/计算资源受限的环境
  2. 对延迟敏感的场景
  3. 需要强大推理能力的场景(尤其是数学和逻辑推理)。

该模型旨在加速语言模型和多模态模型的研究,并可作为构建生成式人工智能功能的基础组件。

使用场景考量

此模型并非针对所有下游用途进行专门设计或评估。开发人员在选择使用场景时,应考虑语言模型的常见局限性以及不同语言间的性能差异,并在特定下游场景(尤其是高风险场景)中使用前,对准确性、安全性和公平性进行评估与优化。 开发人员还应了解并遵守与其使用场景相关的适用法律法规(包括但不限于隐私法、贸易合规法等)。

本模型卡片中的任何内容均不应被解释为或视为对模型发布许可的限制或修改。

发布说明

本次 Phi-4-mini-instruct 版本基于 Phi-3 系列的宝贵用户反馈开发而成。Phi-4-mini 模型采用了新的高效架构、更大的词汇量以支持多语言,并运用了更优的训练后技术来提升指令遵循和函数调用能力,同时新增的数据也显著增强了关键功能。预计大多数使用场景都能从本版本中受益,但仍建议用户在其特定 AI 应用中进行测试。非常感谢大家对 Phi-4 系列的热情支持。我们欢迎并重视关于 Phi-4-mini-instruct 的反馈,这对模型的不断进化和改进至关重要。

模型质量

为了解其性能,我们使用内部基准测试平台,在多种基准测试中对拥有 3.8B 参数的 Phi-4-mini-instruct 模型与一系列模型进行了比较(基准测试方法详见附录 A)。模型质量的总体概况如下:

基准测试 相近规模 2 倍规模
Phi-4 mini-Ins Phi-3.5-mini-Ins Llama-3.2-3B-Ins Mistral-3B Qwen2.5-3B-Ins Qwen2.5-7B-Ins Mistral-8B-2410 Llama-3.1-8B-Ins Llama-3.1-Tulu-3-8B Gemma2-9B-Ins GPT-4o-mini-2024-07-18
热门综合基准测试
Arena Hard 32.8 34.4 17.0 26.9 32.0 55.5 37.3 25.7 42.7 43.7 53.7
BigBench Hard(零样本,思维链) 70.4 63.1 55.4 51.2 56.2 72.4 53.3 63.4 55.5 65.7 80.4
MMLU(五样本) 67.3 65.5 61.8 60.8 65.0 72.6 63.0 68.1 65.0 71.3 77.2
MMLU-Pro(零样本,思维链) 52.8 47.4 39.2 35.3 44.7 56.2 36.6 44.0 40.9 50.1 62.8
推理能力
ARC Challenge(十样本) 83.7 84.6 76.1 80.3 82.6 90.1 82.7 83.1 79.4 89.8 93.5
BoolQ(两样本) 81.2 77.7 71.4 79.4 65.4 80.0 80.5 82.8 79.3 85.7 88.7
GPQA(零样本,思维链) 25.2 26.6 24.3 24.4 23.4 30.6 26.3 26.3 29.9 39.1 41.1
HellaSwag(五样本) 69.1 72.2 77.2 74.6 74.6 80.0 73.5 72.8 80.9 87.1 88.7
OpenBookQA(十样本) 79.2 81.2 72.6 79.8 79.3 82.6 80.2 84.8 79.8 90.0 90.0
PIQA(五样本) 77.6 78.2 68.2 73.2 72.6 76.2 81.2 83.2 78.3 83.7 88.7
Social IQA(五样本) 72.5 75.1 68.3 73.9 75.3 75.3 77.6 71.8 73.4 74.7 82.9
TruthfulQA (MC2)(十样本) 66.4 65.2 59.2 62.9 64.3 69.4 63.0 69.2 64.1 76.6 78.2
Winogrande(五样本) 67.0 72.2 53.2 59.8 63.3 71.1 63.1 64.7 65.4 74.0 76.9
多语言能力
多语言 MMLU(五样本) 49.3 51.8 48.1 46.4 55.9 64.4 53.7 56.2 54.5 63.8 72.9
MGSM(零样本,思维链) 63.9 49.6 44.6 44.6 53.5 64.5 56.7 56.7 58.6 75.1 81.7
数学能力
GSM8K(八样本,思维链) 88.6 76.9 75.6 80.1 80.6 88.7 81.9 82.4 84.3 84.9 91.3
MATH(零样本,思维链) 64.0 49.8 46.7 41.8 61.7 60.4 41.6 47.6 46.1 51.3 70.2
总体 63.5 60.5 56.2 56.9 60.1 67.9 60.2 62.3 60.9 65.0 75.5

总体而言,这款仅含 38 亿参数的模型在多语言理解和推理能力方面达到了与更大规模模型相近的水平。然而,其尺寸本质上限制了在某些任务上的表现。该模型的容量不足以存储过多的事实知识,因此用户可能会遇到事实性错误。不过,通过为 Phi-4 配备搜索引擎,特别是在 RAG 环境下使用该模型时,有可能弥补这一不足。

使用方法

分词器

Phi-4-mini-instruct 支持的词汇量最多为 200064 个标记。分词器文件 已提供占位符标记,可用于下游微调,也可扩展至模型的词汇量上限。

输入格式

鉴于训练数据的特性,Phi-4-mini-instruct 模型最适合使用特定格式的提示词。以下是两种主要格式:

对话格式

此格式用于一般对话和指令:

<|system|>Insert System Message<|end|><|user|>Insert User Message<|end|><|assistant|>

工具调用格式

当用户希望模型基于给定工具提供函数调用时,将使用此格式。用户应在系统提示中提供可用工具,并使用<|tool|>和<|/tool|>标记包裹。工具应以JSON格式指定,采用JSON转储结构。示例:

<|system|>You are a helpful assistant with some tools.<|tool|>[{"name": "get_weather_updates", "description": "Fetches weather updates for a given city using the RapidAPI Weather API.", "parameters": {"city": {"description": "The name of the city for which to retrieve weather information.", "type": "str", "default": "London"}}}]<|/tool|><|end|><|user|>What is the weather like in Paris today?<|end|><|assistant|>

使用vLLM进行推理

环境要求

所需软件包列表:

flash_attn==2.7.4.post1
torch==2.6.0
vllm>=0.7.2

示例

要使用 vLLM 进行推理,您可以使用以下代码片段:

from vllm import LLM, SamplingParams

llm = LLM(model="microsoft/Phi-4-mini-instruct", trust_remote_code=True)

messages = [
    {"role": "system", "content": "You are a helpful AI assistant."},
    {"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
    {"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
    {"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]

sampling_params = SamplingParams(
  max_tokens=500,
  temperature=0.0,
)

output = llm.chat(messages=messages, sampling_params=sampling_params)
print(output[0].outputs[0].text)

使用 Transformers 进行推理

环境要求

Phi-4 系列模型已集成到 transformers4.49.0 版本中。可通过以下命令验证当前 transformers 版本:pip list | grep transformers

所需软件包列表:

flash_attn==2.7.4.post1
torch==2.6.0
transformers==4.49.0
accelerate==1.3.0

Phi-4-mini-instruct 也可在 Azure AI Studio 中获取。

示例

获取 Phi-4-mini-instruct 模型检查点后,用户可使用此示例代码进行推理。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
 
torch.random.manual_seed(0)

model_path = "microsoft/Phi-4-mini-instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    device_map="auto",
    torch_dtype="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
 
messages = [
    {"role": "system", "content": "You are a helpful AI assistant."},
    {"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
    {"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
    {"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]
 
pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)
 
generation_args = {
    "max_new_tokens": 500,
    "return_full_text": False,
    "temperature": 0.0,
    "do_sample": False,
}
 
output = pipe(messages, **generation_args)
print(output[0]['generated_text'])

负责任的 AI 考量因素

与其他语言模型类似,Phi 系列模型可能会表现出不公平、不可靠或冒犯性的行为。需要注意的一些局限性行为包括:

  • 服务质量:Phi 模型主要基于英文文本和部分额外的多语言文本进行训练。非英语语言的性能会较差,并且不同非英语语言之间的性能也存在差异。训练数据中代表性不足的英语变体,其性能可能不如标准美式英语。
  • 多语言性能与安全差距:我们认为让语言模型在不同语言中得到更广泛的应用非常重要,但 Phi 4 模型在多语言应用方面仍面临一些常见挑战。与任何大型语言模型(LLM)的部署一样,开发者需要针对其特定的语言和文化背景,更好地测试模型的性能或安全差距,并通过额外的微调及适当的安全措施对模型进行定制。
  • 伤害性表征与刻板印象的延续:这些模型可能会过度或不足地代表某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管经过了安全方面的训练后处理,但由于不同群体、文化背景的代表性水平不同,或者训练数据中反映现实世界模式和社会偏见的负面刻板印象示例的普遍性,这些局限性可能仍然存在。
  • 不当或冒犯性内容:这些模型可能会生成其他类型的不当或冒犯性内容,因此,如果没有针对具体情况的额外缓解措施,将其部署在敏感环境中可能是不合适的。
  • 信息可靠性:语言模型可能会生成无意义的内容,或者编造听起来合理但不准确或过时的内容。
  • 代码范围有限:Phi 4 的大部分训练数据基于 Python,并使用常见的包,如 "typing, math, random, collections, datetime, itertools"。如果模型生成的 Python 脚本使用了其他包,或者生成了其他语言的脚本,强烈建议用户手动验证所有 API 的使用。
  • 长对话:与其他模型一样,Phi 4 模型在非常长的英语和非英语语言聊天会话中,有时可能会生成重复、无帮助或不一致的响应。建议开发者采取适当的缓解措施,例如限制对话轮次,以应对可能出现的对话偏离问题。

开发者应应用负责任的 AI 最佳实践,包括针对其特定用例以及文化、语言背景,对相关风险进行梳理、衡量和缓解。Phi 4 系列模型是通用模型。当开发者计划将这些模型部署用于特定用例时,建议他们针对其用例对模型进行微调,并将这些模型作为具有特定语言安全措施的更广泛 AI 系统的一部分加以利用。需要考虑的重要领域包括:

  • 资源分配:在可能对法律地位、资源分配或生活机会(例如:住房、就业、信贷等)产生重大影响的场景中,若未经过进一步评估和额外的去偏技术处理,模型可能不适用。
  • 高风险场景:开发者应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会带来极高的成本或导致伤害。这包括在准确性和可靠性至关重要的敏感或专业领域提供建议(例如:法律或健康建议)。应根据部署环境在应用层面实施额外的安全措施。
  • 错误信息:模型可能会产生不准确的信息。开发者应遵循透明度最佳实践,并告知最终用户他们正在与 AI 系统交互。在应用层面,开发者可以构建反馈机制和流程,将响应建立在特定用例的上下文信息基础上,这种技术称为检索增强生成(RAG)。
  • 有害内容生成:开发者应根据其使用场景评估输出,并使用适用于其用例的可用安全分类器或自定义解决方案。
  • 滥用:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件制作,开发者应确保其应用程序不违反适用的法律法规。

训练

模型

  • 架构: Phi-4-mini-instruct 拥有 38 亿参数,是一个密集型仅解码器 Transformer 模型。与 Phi-3.5-mini 相比,Phi-4-mini-instruct 的主要变化在于 20 万词汇量、分组查询注意力机制以及共享的输入和输出嵌入。
  • 输入: 文本。最适合使用聊天格式的提示词。
  • 上下文长度: 128K tokens
  • GPU: 512 张 A100-80G
  • 训练时间: 21 天
  • 训练数据: 5 万亿 tokens
  • 输出: 响应输入生成的文本
  • 日期: 训练时间为 2024 年 11 月至 12 月
  • 状态: 这是一个在离线数据集上训练的静态模型,公开可用数据的截止日期为 2024 年 6 月。
  • 支持语言: 阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语
  • 发布日期: 2025 年 2 月

训练数据集

Phi-4-mini 的训练数据来源广泛,总计 5 万亿 tokens,主要包括以下几类:

  1. 经过质量筛选的公开文档、精选的高质量教育数据以及代码
  2. 新创建的合成“教科书式”数据,用于教授数学、编程、常识推理、世界通用知识(如科学、日常活动、心理理论等)
  3. 高质量的聊天格式监督数据,涵盖各种主题,以反映人类在指令遵循、真实性、诚实性和乐于助人等不同方面的偏好。重点关注可能提高模型推理能力的数据质量,并且对公开文档进行筛选,以保留特定水平的知识。例如,英超联赛某一天的比赛结果可能对前沿模型来说是不错的训练数据,但此类信息已被移除,以便为模型的小尺寸留出更多用于推理的模型容量。有关数据的更多详细信息,请参见 Phi-4-mini-instruct 技术报告。

去污染过程包括对数据集进行标准化和分词,然后生成目标数据集与基准数据集之间的 n-gram 并进行比较。n-gram 匹配度超过阈值的样本被标记为受污染,并从数据集中移除。生成了详细的污染报告,总结了匹配文本、匹配率和过滤结果,以便进一步分析。

微调

此处提供了一个使用 TRL 和 Accelerate 模块进行多 GPU 监督微调(SFT)的基本示例。

安全性评估与红队测试

为评估 Phi-4 模型在多种语言和风险类别中生成不良输出的倾向,我们采用了多种评估技术,包括红队测试、对抗性对话模拟以及多语言安全评估基准数据集。我们使用了多种方法来弥补单一方法的局限性。各种评估方法的结果表明,正如《Phi 3 安全性后训练》论文中详细描述的那样,安全性后训练在多种语言和风险类别中均产生了积极影响,这一点可从拒绝率(拒绝输出不良内容)和对越狱技术的鲁棒性中观察到。有关 Phi 系列模型先前红队评估的详细信息,请参见《Phi 3 安全性后训练》论文。在本次版本发布中,红队使用英语、中文、日语、西班牙语、葡萄牙语、阿拉伯语、泰语和俄语对模型进行了测试,测试内容涉及以下潜在危害:仇恨言论与偏见、暴力犯罪、专业建议以及选举信息。他们的研究结果表明,该模型在不同语言中均能抵抗越狱技术,但利用文化背景的特定语言攻击提示可能会导致模型输出有害内容。另一个发现是,在函数调用场景中,模型有时可能会虚构函数名称或 URL。此外,在英语和非英语语言中,该模型都更容易受到更长的多轮越狱技术的影响。这些发现强调了整个行业需要投入资源,开发涵盖多种语言(包括低资源语言)和风险领域的高质量安全评估数据集,并考虑这些语言使用地区的文化细微差别。

软件

硬件

请注意,Phi-4-mini-instruct模型默认使用Flash Attention,这需要特定类型的GPU硬件才能运行。我们已在以下GPU类型上进行了测试:

  • NVIDIA A100
  • NVIDIA A6000
  • NVIDIA H100

如果您希望在以下GPU上运行模型:

  • NVIDIA V100或更早 generation 的GPU:调用AutoModelForCausalLM.from_pretrained()时需指定attn_implementation="eager"

许可证

本模型采用 MIT许可证

商标

本项目可能包含项目、产品或服务的商标或徽标。Microsoft商标或徽标的授权使用受Microsoft商标与品牌指南约束,且必须遵循该指南。在本项目的修改版本中使用Microsoft商标或徽标,不得引起混淆或暗示Microsoft的赞助。任何第三方商标或徽标的使用均受该第三方政策的约束。

附录A:基准测试方法

我们在此简要说明测试方法,特别是我们如何考虑优化提示词。 在理想情况下,我们绝不会更改基准测试中的任何提示词,以确保在比较不同模型时始终是“苹果与苹果”式的直接对比。实际上,这是我们的默认方法,也是我们迄今为止运行的绝大多数模型所采用的方法。 然而,也存在一些例外情况。在某些情况下,我们发现模型在特定评估中表现不及预期,原因是未能遵守输出格式。例如:

  • 模型可能(无明显原因地)拒绝回答问题,或者在编码任务中,模型可能在其响应前加上“当然,我可以帮你解决这个问题……”之类的前缀,这可能会导致解析器出错。在这种情况下,我们会尝试使用不同的系统消息(例如“你必须始终回答问题”或“直奔主题!”)。
  • 对于某些模型,我们观察到少样本提示(few shots)实际上会损害模型性能。在这种情况下,我们允许在所有情况下使用0样本(0-shots)运行基准测试。
  • 我们拥有在聊天(chat)API和补全(completions)API之间进行转换的工具。将聊天提示转换为补全提示时,某些模型使用不同的关键词,例如“Human”与“User”。在这些情况下,我们允许针对特定模型进行聊天到补全提示的映射。

但我们不会:

  • 选择不同的少样本示例。在比较不同模型时,少样本示例始终保持一致。
  • 更改提示词格式:例如,如果是A/B/C/D的选择题,我们不会将其调整为1/2/3/4的选择题。

基准数据集

为全面了解模型在多种任务和条件下的能力,我们在广泛的公共和内部基准数据集上对该模型进行了评估。虽然大多数评估使用英语,但也纳入了领先的多语言基准,以覆盖特定语言的性能表现。具体而言:

  • 推理能力:
    • Winogrande:围绕代词解析的常识推理
    • PIQA:围绕日常情景的物理常识推理
    • ARC-challenge:小学水平的多项选择科学问题
    • GPQA:由生物学、物理学和化学领域专家编写并验证的高难度问题
    • MedQA:医学问题解答
    • Social IQA:社会常识智能
    • BoolQ:基于上下文的自然问题
    • TruthfulQA:基于事实的推理
  • 语言理解:
    • HellaSwag:围绕日常事件的常识性自然语言推理
    • ANLI:对抗性自然语言推理
  • 函数调用:
    • Berkeley 函数调用功能与工具调用
    • 内部函数调用基准
  • 世界知识:
    • TriviaQA:关于一般主题的 trivia 问题
  • 数学能力:
    • GSM8K:小学水平数学应用题
    • GSM8K Hard:数值较大且包含一些非常规表述的小学水平数学应用题
    • MATH:具有挑战性的竞赛数学问题
  • 代码能力:
    • HumanEval、HumanEval+、MBPP、MBPP+:Python 编码任务
    • LiveCodeBench、LiveBench:无数据污染的代码任务
    • BigCode Bench:具有挑战性的编程任务
    • Spider:SQL 查询任务
    • 内部编码基准
  • 指令遵循能力:
    • IFEval:可验证指令
    • 内部指令遵循基准
  • 多语言能力:
    • MGSM:多语言小学水平数学
    • 多语言 MMLU 和 MMLU-pro
    • MEGA:多语言自然语言处理任务
  • 常用聚合数据集:MMLU、MMLU-pro、BigBench-Hard、AGI Eval
  • 多轮对话:
    • 通过内部对抗性对话模拟工具生成的数据
  • 单轮可信度评估:
    • DecodingTrust:从八个不同角度评估可信度的基准集合
    • XSTest:夸大式安全性评估
    • Toxigen:对抗性和仇恨言论检测
  • 红队测试:
    • 对 Microsoft AI Red Team 提供的提示的响应

项目介绍

基于Phi-4-mini-instruct的优化版本,具备128K上下文长度,支持多语言,推理能力强,尤其擅长数学与逻辑任务,内存占用低,训练速度快,适合各类AI应用开发。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Python100%