许可证: mit
许可证链接: https://huggingface.co/microsoft/Phi-3-vision-128k-instruct/resolve/main/LICENSE
语言:
- 多语言
任务标签: 文本生成
标签:
- 自然语言处理
- 代码
- 视觉
推理参数:
温度: 0.7
示例输入:
- 消息:
- 角色: 用户
内容: <|image_1|>你能描述一下图片中看到的内容吗?
🎉 Phi-3.5系列: [迷你指令版]; [混合专家指令版]; [视觉指令版]
模型概述
Phi-3-Vision-128K-Instruct是一个轻量级、前沿的开放多模态模型,其训练数据涵盖合成数据和经过筛选的公开网站内容,重点聚焦于文本和视觉领域的高质量、高推理密度的数据。该模型属于Phi-3系列,多模态版本支持128K的上下文长度(以token计)。模型经过严格的增强流程,结合了监督微调和直接偏好优化,以确保精准的指令遵循和强大的安全措施。
资源与技术文档:
使用场景
主要用例
该模型适用于英语环境下的广泛商业和研究用途,为需要视觉和文本输入能力的通用人工智能系统和应用提供支持,特别适用于以下场景:
- 内存/计算受限的环境;
- 延迟敏感的场景;
- 通用图像理解;
- 光学字符识别(OCR);
- 图表和表格理解。
我们的模型旨在加速高效语言和多模态模型的研究,作为生成式AI功能的构建模块。
使用注意事项
我们的模型并非为所有下游用途专门设计或评估。开发者在选择用例时应考虑语言模型的常见限制,并在特定下游用例(尤其是高风险场景)中使用前,评估并确保准确性、安全性和公平性。
开发者应了解并遵守适用于其用例的法律法规(如隐私、贸易合规等)。
本模型卡中的任何内容均不应被解释为对模型发布许可证的限制或修改。
使用方法
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{提示}<|end|>\n<|assistant|>\n
模型将在<|assistant|>
后生成文本。对于多轮对话,提示可格式化为:
<|user|>\n<|image_1|>\n{提示1}<|end|>\n<|assistant|>\n{响应1}<|end|>\n<|user|>\n{提示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')
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
messages = [
{"role": "user", "content": "<|image_1|>\n这张图片展示了什么?"},
{"role": "assistant", "content": "图表显示了受访者对会议准备情况的各项陈述的同意百分比。包含五个类别:'会议有明确且预定义的目标'、'知道在哪里找到会议所需信息'、'理解被邀请时的确切角色和职责'、'拥有管理行政任务的工具(如笔记或总结)'、'有更多专注时间充分准备会议'。每个类别都有一个关联的条形图,表示同意程度,测量范围为0%至100%。"},
{"role": "user", "content": "提供引发讨论的深刻问题。"}
]
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)
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使用手册中的视觉微调指南。
负责任AI考量
与其他模型类似,Phi系列模型可能表现出不公平、不可靠或冒犯性的行为。需注意的限制行为包括:
- 服务质量:Phi模型主要基于英语文本训练。非英语语言的性能可能较差。训练数据中代表性不足的英语变体可能比标准美式英语表现更差。
- 危害表现与刻板印象延续:这些模型可能过度或不足代表某些群体,抹去某些群体的表现,或强化贬低或负面刻板印象。尽管经过安全后训练,这些限制仍可能因训练数据中不同群体的代表程度或负面刻板印象的普遍性而存在。
- 不当或冒犯性内容:这些模型可能生成其他类型的不当或冒犯性内容,在敏感环境中部署时可能需要额外的用例特定缓解措施。
- 信息可靠性:语言模型可能生成无意义内容或捏造看似合理但不准确或过时的内容。
- 代码范围限制:Phi-3的大部分训练数据基于Python及常用包(如"typing, math, random, collections, datetime, itertools")。如果模型生成使用其他包或其他语言的Python脚本,强烈建议用户手动验证所有API使用。
开发者应遵循负责任AI的最佳实践,并负责确保特定用例符合相关法律法规(如隐私、贸易等)。重要考量领域包括:
- 资源分配:模型可能不适合对法律地位或资源/生活机会分配(如住房、就业、信贷等)有重大影响的场景,除非进行进一步评估和额外的去偏技术。
- 高风险场景:开发者应评估在输出不公平、不可靠或冒犯性可能造成极高成本或伤害的高风险场景中使用模型的适宜性。这包括在准确性