Microsoft Phi 3.5 SLMs为何成为生成性AI的游戏规则改变者?
介绍
微软最新的小型语言模型(SLMs)系列称为Phi-3。它们在语言、推理、编码和数学等多项基准测试中超越了同类和更大规模的模型。它们被设计得极其强大且经济实惠。随着Phi-3模型的推出,Azure客户可以访问更多优秀模型,为他们提供更多有用的选项来创建和开发生成性AI应用。自2024年4月发布以来,Azure收集了大量用户和社区成员的宝贵反馈,关于Phi-3 SLMs可以改进的领域。
他们现在高兴地推出Phi-3.5 SLMs – Phi-3.5-mini, Phi-3.5-vision,和 Phi-3.5-MoE,这是Phi家族的最新成员,属于混合专家(MoE)模型。Phi-3.5-mini增加了128K的上下文长度,以改善多语言支持。Phi-3.5-vision增强了对多帧图像的理解和推理,从而提高了在单帧图像基准测试中的表现。Phi-3.5-MoE在保持Phi模型的有效性的同时,超越了更大的模型,配备了16个专家,6.6B活跃参数,低延迟,多语言支持和强大的安全特性。
Phi-3.5-MoE: 专家混合模型
上面的图像显示了各种SLM的质量与大小。MMLU是一个新的基准,旨在通过在零-shot和少量-shot设置中专门评估模型,来测量在预训练期间获得的知识。
Phi-3.5-MoE 是最新的 Phi 3.5 SLMs 发布中最大的模型。它包含 16 个专家,每个专家含有 3.8B 参数。总模型大小为 42B 参数,使用两个专家激活 6.6B 参数。与同等大小的稠密模型相比,这个 MoE 模型在质量和性能方面表现更好。支持超过 20 种语言。MoE 模型 与其 Phi-3 对应模型一样,在其强大的安全性后训练技术中使用了专有和开源合成指令及偏好数据集的组合。使用合成和人工标记的数据集,我们的后训练程序结合了直接偏好优化(DPO)和监督微调(SFT)。这些包含多个安全类别和强调无害性和有用性的数据集。此外,Phi-3.5-MoE 可以支持最多 128K 的上下文长度,这使其能够处理各种长上下文工作负载。
Phi 3.5 MoE的训练数据
Phi 3.5 MoE 的训练数据包括多种来源,总计 4.9 万亿个标记(包括 10% 的多语言),并且是以下内容的组合:
- 公开可用的文档经过严格的质量筛选,选择了高质量的教育数据和代码;
- 新创建的合成“教科书式”的数据,用于教授数学、编码、常识推理、对世界的一般知识(科学、日常活动、心理理论等);
- 高质量的聊天格式监督数据涵盖各种主题,以反映人类偏好,例如遵循指令、真实性、诚实和乐于助人。
Azure 专注于可能提高模型推理能力的数据质量,并筛选公开可用的文档,以包含正确的知识水平。例如,英超联赛某一天的比赛结果可能是前沿模型的良好训练数据,但需要删除此类信息,以为小型模型的推理留出更多模型容量。关于数据的更多细节可以在 Phi-3 技术报告中找到。
Phi 3.5 MoE 训练持续 23 天,并使用 4.9T 的训练数据。支持的语言包括阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语和乌克兰语。
Phi-3.5-MoE 模型在各种能力上的质量
上表表示了Phi-3.5-MoE模型在各种能力上的质量。我们可以看到,Phi 3.5 MoE在各个类别中表现优于一些更大的模型。只有6.6B活动参数的Phi-3.5-MoE在语言理解和数学方面达到了与更大模型相似的水平。此外,该模型在推理能力上优于更大的模型。该模型为各种任务的微调提供了良好的容量。
Phi-3.5-MoE 多语言基准
多语言的 MMLU、MEGA,以及多语言的 MMLU-pro 数据集在上表中用于展示 Phi-3.5-MoE 的多语言能力。我们发现,该模型在多语言任务上超越了竞争模型,尽管只有 6.6B 的活动参数,但其活动参数却大大超过了其他模型。
Phi-3.5-迷你
Phi-3.5-mini模型经历了额外的预训练,使用多语言合成和高质量过滤数据。随后进行了后续训练程序,例如直接偏好优化(DPO)、邻近策略优化(PPO)和监督微调(SFT),这些程序使用了合成、翻译和人工标记的数据集。
Phi 3.5 Mini 的训练数据
Phi 3.5 Mini的训练数据包括各种来源,总计34万亿个标记,结合了:
- 公开可用文档经过严格筛选以确保质量,选择高质量的教育数据和代码;
- 新创建的合成“教科书式”数据,用于教授数学、编码、常识推理、世界一般知识(科学、日常活动、心智理论等);
- 高质量的对话格式监督数据,涵盖各种主题,以反映人类偏好,例如遵循指令、真实性、诚实和有用性。
模型质量
Phi-3.5-mini 模型质量
以上表格快速概述了模型在重要基准测试上的质量。这个有效的模型在参数量仅为3.8B的紧凑规模下,达到或超越了其他更大规模的模型。
多语言能力
我们最新的3.8B模型更新是Phi-3.5-mini。该模型通过结合额外的连续预训练和后训练数据,显著提高了多语言能力、多轮对话质量和推理能力。
Phi-3.5-mini 多语言 MMLU 在选择语言集上的质量
多语言支持是Phi-3-mini相对于Phi-3.5-mini的一个重大进步。凭借25%–50%的性能提升,阿拉伯语、荷兰语、芬兰语、波兰语、泰语和乌克兰语从新的Phi 3.5 mini中受益最大。从更广泛的角度来看,Phi-3.5-mini在包括英语在内的多种语言中表现出最佳的性能。值得注意的是,尽管该模型已针对高资源语言进行了优化并采用了32K词汇,但不建议在没有额外微调的情况下使用它来处理低资源语言。
长上下文
Phi-3.5 迷你长上下文
支持128K上下文长度的Phi-3.5-mini是信息检索、基于长文档的质量保证以及总结冗长文档或会议记录等应用的极佳选择。与只能处理8K上下文长度的Gemma-2系列相比,Phi-3.5的表现更好。此外,Phi-3.5-mini还面临来自一些较大开放权重模型的激烈竞争,如Mistral-7B-instruct-v0.3、Llama-3.1-8B-instruct和Mistral-Nemo-12B-instruct-2407。Phi-3.5-mini-instruct是该类别中唯一的模型,参数仅为3.8B,支持128K上下文长度以及多语言支持。值得注意的是,Azure选择在保持各种任务的英语性能一致的同时支持更多语言。由于模型的能力有限,英语知识可能优于其他语言。Azure建议在需要高水平多语言理解的任务中,在RAG设置中使用该模型。
Phi-3.5-视觉与多帧输入
3.5视觉的训练数据
Azure的训练数据包括各种来源,并且是以下内容的组合:
- 公开可用的文档经过严格的质量筛选,选取了高质量的教育数据和代码;
- 选择高质量的图像-文本交错数据;
- 新创建的合成“教科书式”数据,用于教授数学、编码、常识推理、世界的一般知识(科学、日常活动、心智理论等),新创建的图像数据,例如图表/表格/图解/幻灯片,新创建的多图像和视频数据,例如短视频片段/一对相似图像;
- 高质量的聊天格式监督数据涵盖各种主题,以反映人类的偏好,如遵循指令、真实性、诚实和有帮助。
数据收集过程涉及从公开可用文档中获取信息,并细致地过滤掉不希望有的文档和图像。为了保护隐私,我们仔细过滤了各种图像和文本数据源,以删除或清理任何可能的个人数据。
Phi-3.5-vision 通过关键用户反馈提供了先进的多帧图像理解和推理能力。由于在多种背景下的广泛应用,这一突破使得精确的图像比较、多图像摘要/讲故事以及视频摘要成为可能。
令人惊讶的是,Phi-3.5-vision在多个单图像基准测试中显示出显著的性能提升。例如,它将MMBench的性能从80.5提高到81.9,将MMMU的性能从40.4提高到43.0。此外,文档理解的标准TextVQA从70.9提高到72.0\。
Phi-3.5-vision 任务基准
Phi-3.5-vision VideoMME 基准测试
上述表格展示了改进的性能指标,并呈现了在两个知名多图像/视频基准上的综合比较结果。重要的是要注意,Phi-3.5-Vision不支持多语言使用的场景。在没有额外微调的情况下,不建议将其用于多语言场景。
尝试使用 Phi 3.5 Mini
使用 Hugging Face
我们将使用 kaggle notebook 来实现 Phi 3.5 Mini,因为它比 Google Colab 更好地支持 Phi 3.5 mini 模型。注意:确保启用加速器为 GPU T4x2.
1st Step: 导入必要的库
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
第二步:加载模型和标记器
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
第三步:准备消息
messages = [
{
"role": "system", "content": "你是一个有帮助的AI助手。"},
{
"role": "user", "content": "告诉我关于微软的事"},
]
“角色”: “系统”: 设置AI模型的行为(在这种情况下,作为一个“有帮助的AI助手”)
“role”: “user”: 代表用户的输入。
步骤 4:创建管道
pipe = pipeline(
"text-generation", # 文本生成
model=model,
tokenizer=tokenizer,
)
这创建了一个使用指定模型和分词器的文本生成管道。该管道抽象了分词、模型执行和解码的复杂性,提供了一个简单的接口来生成文本。
第5步:设置生成参数
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
这些参数控制模型生成文本的方式。
- max_new_tokens=500: 生成的最大令牌数。
- return_full_text=False: 只会返回生成的文本(而不是输入)。
- temperature=0.0: 控制输出中的随机性。值为0.0使模型具有确定性,生成最可能的输出。
- do_sample=False: 禁用采样,使模型始终选择最可能的下一个标记。
第6步:生成文本
output = pipe(messages, **generation_args)
print(output[0]['生成的文本'])
使用 Azure AI 工作室
我们可以在 Azure AI Studio 中尝试使用 Phi 3.5 Mini Instruct。Azure AI Studio 中有一个名为“试用”的部分。下面是使用 Phi 3.5 Mini 的快照。
使用 Hugging Face 的 HuggingChat
这里是HuggingChat 链接。
使用Hugging Face的Spaces
由于 Phi 3.5 Vision 是一个 GPU 密集型模型,因此我们不能在 colab 和 kaggle 的免费额度下使用该模型。因此,我使用了 hugging face spaces 来尝试 Phi 3.5 Vision。
我们将使用下面的图像。
我们使用的提示是“总结幻灯片的内容”
输出
本次演讲是关于狗的历史和护理的。内容涵盖了狗的驯化、工作角色、放牧能力、营养和锻炼。演讲中包括了各种环境和活动下狗的图片,例如放羊、与人类一起工作以及在城市环境中锻炼。
Phi-3.5-mini 是一个独特的 LLM,具有 3.8B 参数、128K 上下文长度和多语言支持。它在广泛的语言支持和英语知识密度之间取得了平衡。它最适用于多语言任务中的 检索增强生成 设置。Phi-3.5-MoE 拥有 16 个小专家,提供高质量性能,减少延迟,并支持 128k 上下文长度和多种语言。可以根据各种应用进行定制,具有 6.6B 活跃参数。Phi-3.5-vision 提升了单图像基准性能。Phi-3.5 SLMs 家族为开源社区和 Azure 客户提供了具有成本效益的高能力选项。