模型简介
模型特点
模型能力
使用案例
🚀 Phi-3.5-vision
Phi-3.5-vision是一款轻量级、先进的开源多模态模型,基于包含合成数据和过滤后的公开网站数据进行构建,专注于高质量、富含推理的文本和视觉数据。该模型属于Phi-3模型家族,多模态版本支持128K上下文长度(以token为单位)。经过严格的增强过程,结合监督微调与直接偏好优化,确保精确遵循指令和强大的安全措施。
🚀 快速开始
模型概述
Phi-3.5-vision是基于特定数据集构建的轻量级、先进的开源多模态模型,属于Phi-3模型家族,多模态版本支持128K上下文长度。它经过严格增强,确保精确遵循指令和强大的安全措施。
Phi-3.5:[mini-instruct];[MoE-instruct] ;[vision-instruct]
预期用途
主要用例
该模型旨在广泛应用于英语的商业和研究领域。适用于具有视觉和文本输入能力的通用人工智能系统和应用,具体需求如下:
- 内存/计算受限的环境
- 低延迟场景
- 通用图像理解
- 光学字符识别
- 图表和表格理解
- 多图像比较
- 多图像或视频剪辑摘要
该模型旨在加速语言和多模态模型的研究,作为生成式AI功能的构建模块。
用例考虑因素
该模型并非专门为所有下游用途而设计或评估。开发者在选择用例时应考虑语言模型的常见局限性,并在特定下游用例中使用之前评估和减轻准确性、安全性和公平性问题,特别是在高风险场景中。开发者应了解并遵守与其用例相关的适用法律或法规(包括隐私、贸易合规法等)。
⚠️ 重要提示
本模型卡片中的任何内容均不应被解释为或视为对模型发布所依据的许可证的限制或修改。
发布说明
在本次发布中,该模型基于宝贵的客户反馈,实现了多帧图像理解和推理功能。主要的多帧能力示例包括详细的图像比较、多图像摘要/讲故事和视频摘要,这些功能在办公场景中具有广泛的应用。在大多数单图像基准测试中,我们也观察到了性能提升,例如将MMMU性能从40.2提升到43.0,MMBench性能从80.5提升到81.9,文档理解基准TextVQA从70.9提升到72.0。我们相信大多数用例都将从本次发布中受益,但鼓励用户在其AI应用中测试新模型。我们感谢对Phi-3模型家族的热情采用,并继续欢迎社区的所有反馈。
以下是在现有多图像基准测试中的比较结果。平均而言,我们的模型在相同规模上优于竞争模型,并且在多帧能力和视频摘要方面与更大的模型具有竞争力。
BLINK:一个包含14个视觉任务的基准测试,人类可以快速解决这些任务,但当前的多模态大语言模型仍然难以应对。
基准测试 | Phi-3.5-vision-instruct | LlaVA-Interleave-Qwen-7B | InternVL-2-4B | InternVL-2-8B | Gemini-1.5-Flash | GPT-4o-mini | Claude-3.5-Sonnet | Gemini-1.5-Pro | GPT-4o |
---|---|---|---|---|---|---|---|---|---|
艺术风格 | 87.2 | 62.4 | 55.6 | 52.1 | 64.1 | 70.1 | 59.8 | 70.9 | 73.3 |
计数 | 54.2 | 56.7 | 54.2 | 66.7 | 51.7 | 55.0 | 59.2 | 65.0 | 65.0 |
法医检测 | 92.4 | 31.1 | 40.9 | 34.1 | 54.5 | 38.6 | 67.4 | 60.6 | 75.8 |
功能对应 | 29.2 | 34.6 | 24.6 | 24.6 | 33.1 | 26.9 | 33.8 | 31.5 | 43.8 |
IQ测试 | 25.3 | 26.7 | 26.0 | 30.7 | 25.3 | 29.3 | 26.0 | 34.0 | 19.3 |
拼图 | 68.0 | 86.0 | 55.3 | 52.7 | 71.3 | 72.7 | 57.3 | 68.0 | 67.3 |
多视图推理 | 54.1 | 44.4 | 48.9 | 42.9 | 48.9 | 48.1 | 55.6 | 49.6 | 46.6 |
目标定位 | 49.2 | 54.9 | 53.3 | 54.1 | 44.3 | 57.4 | 62.3 | 65.6 | 68.0 |
相对深度 | 69.4 | 77.4 | 63.7 | 67.7 | 57.3 | 58.1 | 71.8 | 76.6 | 71.0 |
相对反射率 | 37.3 | 34.3 | 32.8 | 38.8 | 32.8 | 27.6 | 36.6 | 38.8 | 40.3 |
语义对应 | 36.7 | 31.7 | 31.7 | 22.3 | 32.4 | 31.7 | 45.3 | 48.9 | 54.0 |
空间关系 | 65.7 | 75.5 | 78.3 | 78.3 | 55.9 | 81.1 | 60.1 | 79.0 | 84.6 |
视觉对应 | 53.5 | 40.7 | 34.9 | 33.1 | 29.7 | 52.9 | 72.1 | 81.4 | 86.0 |
视觉相似度 | 83.0 | 91.9 | 48.1 | 45.2 | 47.4 | 77.8 | 84.4 | 81.5 | 88.1 |
总体 | 57.0 | 53.1 | 45.9 | 45.4 | 45.8 | 51.9 | 56.5 | 61.0 | 63.2 |
Video-MME:全面评估多模态大语言模型处理视频数据的能力,涵盖广泛的视觉领域、时间长度和数据模态。
基准测试 | Phi-3.5-vision-instruct | LlaVA-Interleave-Qwen-7B | InternVL-2-4B | InternVL-2-8B | Gemini-1.5-Flash | GPT-4o-mini | Claude-3.5-Sonnet | Gemini-1.5-Pro | GPT-4o |
---|---|---|---|---|---|---|---|---|---|
短(<2分钟) | 60.8 | 62.3 | 60.7 | 61.7 | 72.2 | 70.1 | 66.3 | 73.3 | 77.7 |
中(4 - 15分钟) | 47.7 | 47.1 | 46.4 | 49.6 | 62.7 | 59.6 | 54.7 | 61.2 | 68.0 |
长(30 - 60分钟) | 43.8 | 41.2 | 42.6 | 46.6 | 52.1 | 53.9 | 46.6 | 53.2 | 59.6 |
总体 | 50.8 | 50.2 | 49.9 | 52.6 | 62.3 | 61.2 | 55.9 | 62.6 | 68.4 |
使用方法
要求
可以使用以下命令验证当前transformers
版本:pip list | grep transformers
。
所需包的示例:
flash_attn==2.5.8
numpy==1.24.4
Pillow==10.3.0
Requests==2.31.0
torch==2.3.0
torchvision==0.18.0
transformers==4.43.0
accelerate==0.30.0
Phi-3.5-vision-Instruct也可在Azure AI Studio中使用。
输入格式
鉴于训练数据的性质,Phi-3.5-vision模型最适合使用以下聊天格式的提示:
单图像:
<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n
多轮对话:
<|user|>\n<|image_1|>\n{prompt_1}<|end|>\n<|assistant|>\n{response_1}<|end|>\n<|user|>\n{prompt_2}<|end|>\n<|assistant|>\n
对于多图像使用场景,在提示的前面添加多个图像占位符。<|image_{}|>索引应从1开始。以下是一个提示示例:
<|user|>\n<|image_1|>\n<|image_2|>\n<|image_3|>\n<|image_4|>\n{prompt}<|end|>\n<|assistant|>\n
本地加载模型
获取Phi-3.5-vision-instruct模型检查点后,用户可以使用以下示例代码进行推理。
from PIL import Image
import requests
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor
model_id = "microsoft/Phi-3.5-vision-instruct"
# Note: set _attn_implementation='eager' if you don't have flash_attn installed
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
trust_remote_code=True,
torch_dtype="auto",
_attn_implementation='flash_attention_2'
)
# for best performance, use num_crops=4 for multi-frame, num_crops=16 for single-frame.
processor = AutoProcessor.from_pretrained(model_id,
trust_remote_code=True,
num_crops=4
)
images = []
placeholder = ""
# Note: if OOM, you might consider reduce number of frames in this example.
for i in range(1,20):
url = f"https://image.slidesharecdn.com/azureintroduction-191206101932/75/Introduction-to-Microsoft-Azure-Cloud-{i}-2048.jpg"
images.append(Image.open(requests.get(url, stream=True).raw))
placeholder += f"<|image_{i}|>\n"
messages = [
{"role": "user", "content": placeholder+"Summarize the deck of slides."},
]
prompt = processor.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = processor(prompt, images, return_tensors="pt").to("cuda:0")
generation_args = {
"max_new_tokens": 1000,
"temperature": 0.0,
"do_sample": False,
}
generate_ids = model.generate(**inputs,
eos_token_id=processor.tokenizer.eos_token_id,
**generation_args
)
# remove input tokens
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(generate_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False)[0]
print(response)
注意:
- 为了获得最佳性能,建议多帧设置
num_crops=4
,单帧设置num_crops=16
。 - 若要关闭
flash_attention
,可以设置_attn_implementation='eager'
。
负责任的AI考虑因素
与其他模型一样,Phi系列模型可能会出现不公平、不可靠或冒犯性的行为。需要注意的一些限制行为包括:
- 服务质量:Phi模型主要在英语文本上进行训练。非英语语言的性能会较差。训练数据中代表性较少的英语变体的性能可能比标准美式英语更差。
- 伤害表征与刻板印象延续:这些模型可能会过度或不足地代表某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管进行了安全后训练,但由于不同群体的代表性水平不同,或者训练数据中反映现实世界模式和社会偏见的负面刻板印象示例普遍存在,这些限制可能仍然存在。
- 不适当或冒犯性内容:这些模型可能会产生其他类型的不适当或冒犯性内容,在没有针对特定用例的额外缓解措施的情况下,可能不适合在敏感环境中部署。
- 信息可靠性:语言模型可能会生成无意义的内容或编造听起来合理但不准确或过时的内容。
- 代码范围有限:Phi-3的大部分训练数据基于Python,并使用常见的包,如"typing, math, random, collections, datetime, itertools"。如果模型生成的Python脚本使用其他包或其他语言的脚本,我们强烈建议用户手动验证所有API的使用。
开发者应应用负责任的AI最佳实践,并负责确保特定用例符合相关法律法规(如隐私、贸易等)。需要考虑的重要领域包括:
- 分配:在没有进一步评估和额外去偏技术的情况下,模型可能不适用于对法律地位、资源分配或生活机会(如住房、就业、信贷等)有重大影响的场景。
- 高风险场景:开发者应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会造成极大的代价或导致伤害。这包括在敏感或专业领域提供建议,其中准确性和可靠性至关重要(如法律或健康建议)。应根据部署上下文在应用层面实施额外的保障措施。
- 错误信息:模型可能会产生不准确的信息。开发者应遵循透明度最佳实践,并告知最终用户他们正在与AI系统进行交互。在应用层面,开发者可以构建反馈机制和管道,将响应与特定用例的上下文信息相结合,这种技术称为检索增强生成(RAG)。
- 有害内容生成:开发者应根据上下文评估输出,并使用适用于其用例的可用安全分类器或自定义解决方案。
- 滥用:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件生产,开发者应确保其应用不违反适用的法律法规。
- 个人识别:具有视觉能力的模型可能有能力在图像中唯一识别个人。安全后训练会引导模型拒绝此类请求,但开发者应根据各自司法管辖区的要求,酌情考虑并实施额外的缓解措施或用户同意流程(例如,在处理图像输入之前采取措施模糊面部)。
训练
模型
属性 | 详情 |
---|---|
架构 | Phi-3.5-vision有42亿个参数,包含图像编码器、连接器、投影仪和Phi-3 Mini语言模型 |
输入 | 文本和图像。最适合使用聊天格式的提示 |
上下文长度 | 128K个token |
GPU | 256个A100 - 80G |
训练时间 | 6天 |
训练数据 | 5000亿个token(视觉token + 文本token) |
输出 | 对输入做出响应的生成文本 |
日期 | 2024年7月至8月进行训练 |
状态 | 这是一个基于截止日期为2024年3月15日的离线文本数据集训练的静态模型。随着模型的改进,未来可能会发布调整后模型的新版本 |
发布日期 | 2024年8月 |
数据概述
训练数据包括多种来源,是以下数据的组合:
- 经过严格质量过滤的公开可用文档、精选的高质量教育数据和代码
- 精选的高质量图像 - 文本交错数据
- 为教授数学、编码、常识推理、世界常识(科学、日常活动、心智理论等)而新创建的合成“教科书式”数据,新创建的图像数据,如图表/表格/图表/幻灯片,新创建的多图像和视频数据,如短视频剪辑/一对相似的图像
- 高质量的聊天格式监督数据,涵盖各种主题,以反映人类在遵循指令、真实性、诚实性和有用性等不同方面的偏好
数据收集过程涉及从公开可用文档中获取信息,并精心过滤掉不需要的文档和图像。为了保护隐私,我们仔细过滤了各种图像和文本数据源,以从训练数据中删除或清理任何潜在的个人数据。有关数据的更多详细信息,请参阅Phi-3 Technical Report。
如何微调
建议用户查看Phi-3 CookBook finetuning recipe for Vision。
基准测试
为了了解模型的能力,我们使用内部基准测试平台,在各种零样本基准测试中,将Phi-3.5-vision与一组模型进行了比较。以下是该模型在代表性基准测试中的质量概述:
类别 | 基准测试 | Phi-3.5-vision-instruct | Intern-VL-2-4B | Intern-VL-2-8B | Gemini-1.5-Flash | GPT-4o-mini 2024-7-18 | Claude-3.5-Sonnet | Gemini-1.5-Pro | GPT-4o 2024-5-13 |
---|---|---|---|---|---|---|---|---|---|
流行聚合基准 | MMMU(验证集) | 43.0 | 44.22 | 46.33 | 49.33 | 52.1 | 52.67 | 54.11 | 61.78 |
MMBench(开发集 - 英语) | 81.9 | 83.4 | 87.0 | 85.7 | 83.8 | 82.3 | 87.9 | 88.4 | |
视觉科学知识推理 | ScienceQA(图像测试集) | 91.3 | 94.9 | 95.9 | 84.5 | 84.0 | 73.8 | 86.0 | 88.5 |
视觉数学推理 | MathVista(测试迷你集) | 43.9 | 53.7 | 51.1 | 55.3 | 38.8 | 54.0 | 57.4 | 54.4 |
InterGPS(测试集) | 36.3 | 45.6 | 53.2 | 39.4 | 39.9 | 45.6 | 58.2 | 46.9 | |
图表推理 | AI2D(测试集) | 78.1 | 77.3 | 81.4 | 78.4 | 75.2 | 68.9 | 75.6 | 82.8 |
ChartQA(测试集) | 81.8 | 78.8 | 80.4 | 57.6 | 54.5 | 73.2 | 68.2 | 64.0 | |
文档智能 | TextVQA(验证集) | 72.0 | 66.2 | 68.8 | 67.4 | 70.9 | 70.5 | 64.5 | 75.6 |
目标视觉存在验证 | POPE(测试集) | 86.1 | 83.3 | 84.2 | 86.1 | 83.6 | 76.6 | 89.3 | 87.0 |
安全评估和红队测试
方法
Phi-3系列模型采用了强大的安全后训练方法。该方法利用了各种开源和内部生成的数据集。用于进行安全对齐的总体技术是监督微调(SFT)和基于人类反馈的强化学习(RLHF)方法的结合,通过利用人工标注和合成的英语数据集,包括专注于有用性和无害性的公开可用数据集,以及针对多个安全类别的各种问答。
安全评估
我们利用各种评估技术,包括红队测试、对抗性对话模拟和安全评估基准数据集,来评估Phi-3.5模型在多个风险类别中产生不良输出的倾向。采用了多种方法来弥补单一方法的局限性。有关安全对齐的更多详细信息,请参阅技术报告。
软件
硬件
默认情况下,Phi-3.5-Mini-Instruct模型使用flash attention,这需要特定类型的GPU硬件才能运行。我们在以下GPU类型上进行了测试:
- NVIDIA A100
- NVIDIA A6000
- NVIDIA H100
许可证
该模型根据MIT许可证发布。
商标
本项目可能包含项目、产品或服务的商标或标志。经授权使用微软商标或标志需遵守并必须遵循Microsoft的商标和品牌指南。在本项目的修改版本中使用微软商标或标志不得造成混淆或暗示微软的赞助。任何第三方商标或标志的使用均需遵守这些第三方的政策。








