微软发布 Phi-4 迷你模型,适合本地部署ChatBot

微软发布 Phi-4 迷你模型,适合本地部署ChatBot_第1张图片

Phi-4-mini-instruct是一个轻量级的开放模型,它建立在合成数据和经过筛选的公开网站基础上,重点关注高质量、推理密集的数据。 该模型属于 Phi-4 模型系列,支持 128K 标记上下文长度。 该模型经历了一个增强过程,包含了监督微调和直接偏好优化,以支持精确的指令遵循和稳健的安全措施。

Phi-4-mini Microsoft Blog

Phi-4-mini Technical Report

‍ Phi Cookbook

Phi Portal

️ Try It Azure, Huggingface

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

预期用途

主要使用案例

该模型旨在广泛用于多语言商业和研究用途。该模型可用于通用人工智能系统和应用程序,这些系统和应用程序要求:

1)内存/计算受限的环境
2) 受延迟限制的应用场景
3) 强推理(尤其是数学和逻辑)。

该模型旨在加速语言和多模态模型的研究,作为人工智能生成功能的构建模块。

使用案例考虑因素

该模型并非针对所有下游用途而专门设计或评估。开发人员在选择使用案例时,应考虑语言模型的常见局限性以及不同语言之间的性能差异,并在特定下游使用案例中使用前,尤其是在高风险场景中使用前,对准确性、安全性和公平性进行评估和减轻影响。
开发人员应了解并遵守与使用案例相关的适用法律或法规(包括但不限于隐私、贸易合规法律等)。
开发人员应了解并遵守与其使用案例相关的适用法律或法规(包括但不限于隐私和贸易合规法律等)。
*本模型卡中的任何内容均不得解释为或视为对模型发布许可的限制或修改。

发行说明

Phi-4-mini-instruct的发布是基于Phi-3系列的宝贵用户反馈。Phi-4-mini 模型采用了新的架构以提高效率,增加了词汇量以支持多种语言,并在指令跟踪、函数调用和附加数据方面采用了更好的后训练技术,从而在关键功能方面取得了重大进展。预计大多数使用案例都将受益于这一版本,但我们鼓励用户在其特定的人工智能应用中进行测试。非常感谢大家对 Phi-4 系列的热情支持。欢迎对 Phi-4-mini-instruct 提出反馈意见,这对模型的发展和改进至关重要。

模型质量

为了解其能力,我们利用内部基准平台(基准方法见附录 A),将 3.8B 参数 Phi-4-mini-instruct 模型与各种基准下的一组模型进行了比较。模型质量的高级概览如下:

Benchmark Similar size 2x size
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
Popular aggregated benchmark
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 (0-shot, CoT) 70.4 63.1 55.4 51.2 56.2 72.4 53.3 63.4 55.5 65.7 80.4
MMLU (5-shot) 67.3 65.5 61.8 60.8 65.0 72.6 63.0 68.1 65.0 71.3 77.2
MMLU-Pro (0-shot, CoT) 52.8 47.4 39.2 35.3 44.7 56.2 36.6 44.0 40.9 50.1 62.8
Reasoning
ARC Challenge (10-shot) 83.7 84.6 76.1 80.3 82.6 90.1 82.7 83.1 79.4 89.8 93.5
BoolQ (2-shot) 81.2 77.7 71.4 79.4 65.4 80.0 80.5 82.8 79.3 85.7 88.7
GPQA (0-shot, CoT) 25.2 26.6 24.3 24.4 23.4 30.6 26.3 26.3 29.9 39.1 41.1
HellaSwag (5-shot) 69.1 72.2 77.2 74.6 74.6 80.0 73.5 72.8 80.9 87.1 88.7
OpenBookQA (10-shot) 79.2 81.2 72.6 79.8 79.3 82.6 80.2 84.8 79.8 90.0 90.0
PIQA (5-shot) 77.6 78.2 68.2 73.2 72.6 76.2 81.2 83.2 78.3 83.7 88.7
Social IQA (5-shot) 72.5 75.1 68.3 73.9 75.3 75.3 77.6 71.8 73.4 74.7 82.9
TruthfulQA (MC2) (10-shot) 66.4 65.2 59.2 62.9 64.3 69.4 63.0 69.2 64.1 76.6 78.2
Winogrande (5-shot) 67.0 72.2 53.2 59.8 63.3 71.1 63.1 64.7 65.4 74.0 76.9
Multilingual
Multilingual MMLU (5-shot) 49.3 51.8 48.1 46.4 55.9 64.4 53.7 56.2 54.5 63.8 72.9
MGSM (0-shot, CoT) 63.9 49.6 44.6 44.6 53.5 64.5 56.7 56.7 58.6 75.1 81.7
Math
GSM8K (8-shot, CoT) 88.6 76.9 75.6 80.1 80.6 88.7 81.9 82.4 84.3 84.9 91.3
MATH (0-shot, CoT) 64.0 49.8 46.7 41.8 61.7 60.4 41.6 47.6 46.1 51.3 70.2
Overall 63.5 60.5 56.2 56.9 60.1 67.9 60.2 62.3 60.9 65.0 75.5

总体而言,只有 3.8B 参数的模型在多语言语言理解和推理能力方面达到了与更大模型相似的水平。但是,在某些任务中,它仍然受到规模的根本限制。该模型根本没有能力存储过多的事实知识,因此,用户可能会遇到事实不正确的情况。不过,通过使用搜索引擎来增强 Phi-4,特别是在 RAG 设置下使用该模型时,或许可以解决这一弱点。

Usage

Tokenizer

Phi-4-mini-instruct支持最大200064标记。tokenizer files 已经提供了可用于下游微调的占位符标记,但它们也可以扩展到模型的词汇量大小。

输入格式

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

聊天格式

这种格式用于一般对话和指示:

<|system|>Insert System Message<|end|><|user|>Insert User Message<|end|><|assistant|>
支持工具的函数调用格式

当用户希望模型根据给定的工具提供函数调用时,就会使用这种格式。用户应在系统提示中提供可用的工具,并用 <|tool|> 和 <|/tool|> 标记封装。应使用 JSON dump 结构以 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 系列已集成到 4.49.0 版本的 transformers 中。当前的 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 模型检查点后,用户可以使用该示例代码进行推理。

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'])

负责任的人工智能考虑因素

与其他语言模型一样,Phi 系列模型也可能出现不公平、不可靠或令人反感的行为。需要注意的一些限制行为包括

  • 服务质量:Phi 模型主要针对英文文本和一些额外的多语言文本进行训练。除英语外,其他语言的性能会更差,非英语语言的性能也会有差异。在训练数据中代表性较低的英语语言种类可能会比标准美式英语的性能更差。
  • 多语言性能和安全性差距:我们认为,在不同语言中更广泛地使用语言模型是非常重要的,但 Phi 4 模型在多语言版本中仍然面临着共同的挑战。与 LLM 的任何部署一样,开发人员将能够更好地测试其语言和文化背景下的性能或安全性差距,并通过额外的微调和适当的保障措施来定制模型。
    +危害的再现和陈规定型观念的延续:这些模型可能过多或过少代表某些群体,抹杀某些群体的代表性,或强化贬低或负面的刻板印象。尽管训练后是安全的,但由于不同群体、文化背景或训练数据中反映现实世界模式和社会偏见的负面刻板印象实例的普遍程度不同,这些局限性可能仍然存在。
  • 不当或攻击性内容:这些模型可能会产生其他类型的不当或攻击性内容,因此,如果没有针对具体情况的额外缓解措施,可能不适合在敏感环境中使用。
  • 信息可靠性:语言模型可以生成无意义的内容,或编造听起来合理但不准确或过时的内容。
  • 代码范围有限:Phi 4 的大部分训练数据基于 Python,并使用 "typing、math、random、collections、datetime、itertools "等常用包。如果模型生成的 Python 脚本使用了其他软件包或其他语言的脚本,强烈建议用户手动验证所有 API 的使用。
  • 长时间对话:与其他模型一样,Phi 4 模型在某些情况下也会在英语和非英语语言的长时间聊天会话中生成重复、无益或不一致的回复。我们鼓励开发人员采取适当的缓解措施,例如限制对话回合,以应对可能出现的对话偏移。

开发人员应采用负责任的人工智能最佳实践,包括绘制、测量和降低与特定用例和文化、语言环境相关的风险。Phi 4 系列模型是通用模型。当开发人员计划在特定用例中部署这些模型时,我们鼓励他们针对自己的用例对模型进行微调,并将模型作为更广泛的人工智能系统的一部分加以利用,同时制定特定语言的保障措施。需要考虑的重要领域包括

  • 分配:如果没有进一步的评估和额外的去伪存真技术,模型可能不适合用于可能对法律地位或资源分配或生活机会(例如:住房、就业、信贷等)产生后果性影响的情景。
  • 高风险情景:开发人员应评估在高风险场景中使用模型的适宜性,在这些场景中,不公平、不可靠或令人反感的输出可能会造成巨大损失或伤害。这包括在准确性和可靠性至关重要的敏感或专家领域提供建议(如法律或健康建议)。应根据部署环境在应用层面实施额外的保障措施。
  • 错误信息:模型可能会产生不准确的信息。开发人员应遵循透明度最佳实践,并告知最终用户他们正在与人工智能系统进行交互。在应用层面,开发人员可以建立反馈机制和管道,以便根据特定用例和上下文信息做出响应,这种技术被称为检索增强生成(RAG)。
  • 有害内容的生成:有害内容的生成:开发人员应评估其上下文的输出,并使用可用的安全分类器或适合其使用案例的自定义解决方案。
  • 滥用:可能存在欺诈、垃圾邮件或恶意软件制作等其他形式的滥用,开发人员应确保其应用程序不违反适用的法律和法规。

培训

型号

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

训练数据集

Phi-4-mini 的训练数据来源广泛,总计 5 万亿个代币,由以下几种数据组合而成

  1. 经过质量过滤的公开文件、精选的高质量教育数据和代码
  2. 新创建的合成 "教科书式 "数据,用于数学、编码、常识推理、世界常识(如科学、日常活动、思维理论等)的教学。
  3. 高质量的聊天格式监督数据涵盖各种主题,以反映人类在不同方面的偏好,如听从指示、真实、诚实和乐于助人。我们将重点放在有可能提高模型推理能力的数据质量上,并对公开可用的文档进行了过滤,使其包含首选的知识水平。例如,某天英超联赛的比赛结果可能是前沿模型的良好训练数据,但为了给模型留下更多的推理能力,我们删除了这些信息,因为模型的规模较小。有关数据的更多详情,请参阅 Phi-4-mini-instruct 技术报告。

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

微调

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

安全评估和红队

利用各种评估技术,包括红队、对抗性对话模拟和多语言安全评估基准数据集,来评估 Phi-4 模型在多种语言和风险类别中产生不良输出的倾向。我们采用了多种方法来弥补单一方法的局限性。各种评估方法的结果表明,根据拒绝率(拒绝输出不良输出)和对越狱技术的稳健性观察,Phi 3 安全性后期培训论文中详细介绍的安全性后期培训对多种语言和风险类别都有积极影响。有关红队先前对各种 Phi 模型的评估详情,请参阅 Phi 3 安全性后期培训论文。 在此次发布中,红队用英语、中文、日语、西班牙语、葡萄牙语、阿拉伯语、泰语和俄语测试了该模型的以下潜在危害:仇恨言论和偏见、暴力犯罪、专业建议和选举信息。他们的研究结果表明,该模型可抵御各种语言的越狱技术,但利用文化背景的特定语言攻击提示会导致该模型输出有害内容。另一个发现是,在函数调用场景中,模型有时会产生函数名或 URL 的幻觉。 该模型还可能更容易受到英语和非英语语言中更长的多圈越狱技术的影响。这些发现凸显了整个行业在开发高质量安全评估数据集方面进行投资的必要性,这些数据集涉及多种语言,包括低资源语言,以及考虑到使用这些语言的文化细微差别的风险领域。

软件

  • PyTorch
  • Transformers
  • Flash-Attention

硬件

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

  • NVIDIA A100
  • NVIDIA A6000
  • NVIDIA H100

如果要在以下条件下运行模型:

  • 英伟达 V100 或更早一代 GPU:使用 attn_implementation=“eager” 调用 AutoModelForCausalLM.from_pretrained()

License

The model is licensed under the MIT license.

你可能感兴趣的:(人工智能,microsoft,人工智能,开源,AIGC,自然语言处理,语言模型)