模型简介
模型特点
模型能力
使用案例
🚀 Phi-3.5
Phi-3.5是一系列强大的模型,涵盖了多种不同的版本,可满足不同场景下的需求。它基于高质量的数据集进行训练,在文本和视觉处理方面展现出卓越的性能。
🎉 Phi-3.5:[mini-instruct];[MoE-instruct] ;[vision-instruct]
✨ 主要特性
- 轻量级与先进架构:Phi-3-Vision-128K-Instruct 是一个轻量级的、最先进的开放多模态模型,基于包含合成数据和经过筛选的公开网站数据进行构建,专注于高质量、富含推理的文本和视觉数据。
- 长上下文支持:属于 Phi-3 模型家族,多模态版本支持 128K 上下文长度(以标记为单位)。
- 严格优化:经过严格的增强过程,结合了监督微调(Supervised Fine-Tuning)和直接偏好优化(Direct Preference Optimization),以确保精确的指令遵循和强大的安全措施。
📚 详细文档
资源与技术文档
模型版本对比
短上下文 | 长上下文 | |
---|---|---|
Mini | 4K [HF] ; [ONNX] ; [GGUF] | 128K [HF] ; [ONNX] |
Small | 8K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Medium | 4K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Vision | 128K [HF] ; [ONNX] |
预期用途
主要用例
该模型旨在广泛用于英语的商业和研究。适用于具有视觉和文本输入能力的通用人工智能系统和应用,特别是在以下场景中:
- 内存/计算受限的环境;
- 低延迟要求的场景;
- 通用图像理解;
- 光学字符识别(OCR);
- 图表和表格理解。
该模型旨在加速高效语言和多模态模型的研究,可作为生成式人工智能功能的构建块。
用例考虑
我们的模型并非专门为所有下游用途而设计或评估。开发者在选择用例时应考虑语言模型的常见局限性,并在特定下游用例中使用之前,评估并减轻准确性、安全性和公平性方面的问题,特别是在高风险场景中。
开发者应了解并遵守与其用例相关的适用法律或法规(包括隐私、贸易合规法等)。
本模型卡片中的任何内容均不应被解释为或视为对模型发布所依据的许可证的限制或修改。
📦 安装指南
Phi-3-Vision-128K-Instruct 已集成到 transformers
的开发版本(4.40.2)中。在通过 pip
发布正式版本之前,请确保执行以下操作之一:
- 加载模型时,确保在
from_pretrained()
函数的参数中传递trust_remote_code=True
。 - 将本地的
transformers
更新到开发版本:pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
。此命令是从源代码克隆和安装的替代方法。
可以使用以下命令验证当前的 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.40.2
Phi-3-Vision-128K-Instruct 也可在 Azure AI Studio 中使用。
💻 使用示例
聊天格式
鉴于训练数据的性质,Phi-3-Vision-128K-Instruct 模型最适合使用以下聊天格式的单图像输入提示。
可以使用以下通用模板将提示作为单图像提供:
<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n
其中,模型在 <|assistant|>
之后生成文本。在多轮对话的情况下,提示可以按以下格式进行格式化:
<|user|>\n<|image_1|>\n{prompt_1}<|end|>\n<|assistant|>\n{response_1}<|end|>\n<|user|>\n{prompt_2}<|end|>\n<|assistant|>\n
示例推理代码
以下代码片段展示了如何在 GPU 上快速运行该模型:
from PIL import Image
import requests
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor
model_id = "microsoft/Phi-3-vision-128k-instruct"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda", trust_remote_code=True, torch_dtype="auto", _attn_implementation='flash_attention_2') # use _attn_implementation='eager' to disable flash attention
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
messages = [
{"role": "user", "content": "<|image_1|>\nWhat is shown in this image?"},
{"role": "assistant", "content": "The chart displays the percentage of respondents who agree with various statements about their preparedness for meetings. It shows five categories: 'Having clear and pre-defined goals for meetings', 'Knowing where to find the information I need for a meeting', 'Understanding my exact role and responsibilities when I'm invited', 'Having tools to manage admin tasks like note-taking or summarization', and 'Having more focus time to sufficiently prepare for meetings'. Each category has an associated bar indicating the level of agreement, measured on a scale from 0% to 100%."},
{"role": "user", "content": "Provide insightful questions to spark discussion."}
]
url = "https://assets-c4akfrf5b4d3f4b7.z01.azurefd.net/assets/2024/04/BMDataViz_661fb89f3845e.png"
image = Image.open(requests.get(url, stream=True).raw)
prompt = processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(prompt, [image], return_tensors="pt").to("cuda:0")
generation_args = {
"max_new_tokens": 500,
"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)
更多基本示例请参考 此处。
如何微调?
我们建议用户参考 Phi-3 CookBook 视觉微调配方。
🔧 技术细节
负责任的人工智能考虑
与其他模型一样,Phi 系列模型可能会以不公平、不可靠或冒犯性的方式运行。需要注意的一些限制行为包括:
- 服务质量:Phi 模型主要在英语文本上进行训练。非英语语言的性能会较差。训练数据中代表性较少的英语变体的性能可能比标准美式英语差。
- 伤害的呈现与刻板印象的延续:这些模型可能会过度或不足地呈现某些人群,抹去某些群体的代表性,或强化贬低性或负面的刻板印象。尽管进行了安全后训练,但由于不同群体的代表性水平不同,或者训练数据中反映现实世界模式和社会偏见的负面刻板印象示例普遍存在,这些限制可能仍然存在。
- 不适当或冒犯性内容:这些模型可能会产生其他类型的不适当或冒犯性内容,在没有针对特定用例的额外缓解措施的情况下,可能不适合在敏感环境中部署。
- 信息可靠性:语言模型可能会生成无意义的内容或编造听起来合理但不准确或过时的内容。
- 代码范围有限:Phi-3 的大部分训练数据基于 Python,并使用常见的包,如 “typing, math, random, collections, datetime, itertools”。如果模型生成的 Python 脚本使用其他包或其他语言的脚本,我们强烈建议用户手动验证所有 API 的使用。
开发者应应用负责任的人工智能最佳实践,并负责确保特定用例符合相关法律法规(如隐私、贸易等)。需要考虑的重要领域包括:
- 分配:在没有进一步评估和额外去偏技术的情况下,模型可能不适用于对法律地位、资源分配或生活机会(如住房、就业、信贷等)有重大影响的场景。
- 高风险场景:开发者应评估在高风险场景中使用模型的适用性,在这些场景中,不公平、不可靠或冒犯性的输出可能会造成极大的代价或导致伤害。这包括在准确性和可靠性至关重要的敏感或专家领域提供建议(如法律或健康建议)。应根据部署上下文在应用层面实施额外的保障措施。
- 错误信息:模型可能会产生不准确的信息。开发者应遵循透明度最佳实践,并告知最终用户他们正在与人工智能系统进行交互。在应用层面,开发者可以构建反馈机制和管道,将响应基于特定用例的上下文信息,这种技术称为检索增强生成(Retrieval Augmented Generation,RAG)。
- 有害内容的生成:开发者应根据上下文评估输出,并使用适用于其用例的可用安全分类器或自定义解决方案。
- 滥用:可能存在其他形式的滥用,如欺诈、垃圾邮件或恶意软件生产,开发者应确保其应用不违反适用的法律法规。
- 个人识别:具有视觉功能的模型可能有能力在图像中唯一识别个人。安全后训练会引导模型拒绝此类请求,但开发者应根据各自司法管辖区的要求,酌情考虑并实施额外的缓解措施或用户同意流程(例如,在处理图像输入之前采取措施模糊面部)。
训练
模型
- 架构:Phi-3-Vision-128K-Instruct 有 42 亿个参数,包含图像编码器、连接器、投影仪和 Phi-3 Mini 语言模型。
- 输入:文本和图像。最适合使用聊天格式的提示。
- 上下文长度:128K 标记
- GPU:512 个 H100-80G
- 训练时间:1.5 天
- 训练数据:5000 亿个视觉和文本标记
- 输出:对输入做出响应的生成文本
- 日期:我们的模型于 2024 年 2 月至 4 月之间进行训练。
- 状态:这是一个基于截止日期为 2024 年 3 月 15 日的离线文本数据集训练的静态模型。随着我们对模型的改进,未来可能会发布调优模型的新版本。
- 发布类型:开放权重发布
- 发布日期:模型权重于 2024 年 5 月 21 日发布。
数据集
我们的训练数据包括多种来源,是以下数据的组合:
- 经过严格质量筛选的公开可用文档、精选的高质量教育数据和代码;
- 精选的高质量图像 - 文本交织数据;
- 为教授数学、编码、常识推理、世界常识(科学、日常活动、心智理论等)而新创建的合成 “教科书式” 数据,以及新创建的图像数据,如图表/表格/图表/幻灯片;
- 涵盖各种主题的高质量聊天格式监督数据,以反映人类在指令遵循、真实性、诚实性和有用性等不同方面的偏好。
数据收集过程涉及从公开可用文档中获取信息,并采取严谨的方法过滤掉不良文档和图像。为了保护隐私,我们仔细过滤了各种图像和文本数据源,以从训练数据中删除或清理任何潜在的个人数据。
更多详细信息可在 Phi-3 技术报告 中找到。
基准测试
为了了解其能力,我们使用内部基准测试平台,在各种零样本基准测试中,将 Phi-3-Vision-128K-Instruct 与一组模型进行了比较。
基准测试 | Phi-3 Vision-128K-In | LlaVA-1.6 Vicuna-7B | QWEN-VL Chat | Llama3-Llava-Next-8B | Claude-3 Haiku | Gemini 1.0 Pro V | GPT-4V-Turbo |
---|---|---|---|---|---|---|---|
MMMU | 40.4 | 34.2 | 39.0 | 36.4 | 40.7 | 42.0 | 55.5 |
MMBench | 80.5 | 76.3 | 75.8 | 79.4 | 62.4 | 80.0 | 86.1 |
ScienceQA | 90.8 | 70.6 | 67.2 | 73.7 | 72.0 | 79.7 | 75.7 |
MathVista | 44.5 | 31.5 | 29.4 | 34.8 | 33.2 | 35.0 | 47.5 |
InterGPS | 38.1 | 20.5 | 22.3 | 24.6 | 32.1 | 28.6 | 41.0 |
AI2D | 76.7 | 63.1 | 59.8 | 66.9 | 60.3 | 62.8 | 74.7 |
ChartQA | 81.4 | 55.0 | 50.9 | 65.8 | 59.3 | 58.0 | 62.3 |
TextVQA | 70.9 | 64.6 | 59.4 | 55.7 | 62.7 | 64.7 | 68.1 |
POPE | 85.8 | 87.2 | 82.6 | 87.0 | 74.4 | 84.2 | 83.7 |
📄 许可证
该模型根据 MIT 许可证 发布。
商标
本项目可能包含项目、产品或服务的商标或标识。对微软商标或标识的授权使用需遵循并必须遵守 微软商标和品牌指南。在本项目的修改版本中使用微软商标或标识不得造成混淆或暗示微软的赞助。任何第三方商标或标识的使用需遵循这些第三方的政策。








