1 Phi-3-Vision-128K-Instruct 简介
Phi-3-Vision-128K-Instruct 属于 Phi-3 模型家族,专为多模态数据处置而构建,支持长达 128,000 个令牌的高低文长度。该模型融合了文本和视觉数据,十分适宜须要同时解释文本和图像的义务。其开发触及 5000 亿个训练令牌,包括高品质的分解数据和经过严厉挑选的地下可用资源。此外,经过监视微和谐偏好优化等精细训练手腕,Phi-3-Vision-128K-Instruct 被打形成能够提供准确、牢靠且安保的人工智能处置打算。
Phi-3-Vision-128K-Instruct 领有42亿个参数,其架构精美,集成了图像编码器、衔接器、投影器以及 Phi-3 Mini 言语模型,使其成为轻量级但性能弱小的选用,实用于宽泛的运行。
2 运行场景
Phi-3-Vision-128K-Instruct 模型的运行范围宽泛,重要聚焦在以下几个**畛域:
1). 文档提取和OCR技术:能够高效地将图像中的文字或扫描的文档转换成可编辑的格局,尤其长于处置蕴含表格、图表等复杂规划的文档。这使其成为数字化纸质文档或智能化数据提取上班流程的有价值工具。
2). 图像内容了解:该模型能够解析图像内容,识别出图像中的对象,了解场景,并从中提取出有用的消息。
3). 资源受限环境:即使在计算才干或内存受限的环境下,Phi-3-Vision-128K-Instruct 也能够运转AI义务,确保性能不打折。
4). 实时运行场景:能够缩小实时运行程序中的处置提前,实用于实时数据流、聊天助手或流媒体内容剖析等场景,以提高照应速度。
3 部署 Phi-3-Vision-128K-Instruct
要经常使用 Phi-3-Vision-128K-Instruct,须要设置所需的库和工具的开发环境。该模型集成在 Hugging Face transformers 库的开发版本(4.40.2)中。在深化代码示例之前,先确保你的 Python 环境性能了这些包:
# 所需包flash_attn==2.5.8numpy==1.24.4Pillow==10.3.0Requests==2.31.0torch==2.3.0torchvision==0.18.0transformers==4.40.2
要加载模型,可以更新本地 transformers 库。
模型加载示例
以下是一个 Python 示例,展现了如何初始化模型并启动推理。经常使用类和函数来坚持代码的明晰性和结构性:
from PIL import Imageimport requestsfrom transformers import AutoModelForCausalLM, AutoProcessorclass Phi3VisionModel:def __init__(self, model_id="microsoft/Phi-3-vision-128k-instruct", device="cuda"):"""Initialize the Phi3VisionModel with the specified model ID and device.Args:model_id (str): The identifier of the pre-trained model from Hugging Face's model hub.device (str): The device to load the model on ("cuda" for GPU or "cpu")."""self.model_id = model_idself.device = deviceself.model = self.load_model()# 在初始化时期加载模型self.processor = self.load_processor()# 在初始化时期加载处置器def load_model(self):"""Load the pre-trained language model with causal language modeling capabilities.Returns:model (AutoModelForCausalLM): The loaded model."""print("Loading model...")# 经常使用智能设施映射和数据类型调整加载模型return AutoModelForCausalLM.from_pretrained(self.model_id,device_map="auto",# 智能将模型映射到适当的设施torch_dtype="auto",# 依据设施经常使用适当的 torch 数据类型trust_remote_code=True,# 准许口头自定义代码以加载模型_attn_implementation='flash_attention_2'# 经常使用优化的留意力成功).to(self.device)# 将模型移动到指定的设施def load_processor(self):"""Load the processor associated with the model for processing inputs and outputs.Returns:processor (AutoProcessor): The loaded processor for handling text and images."""print("Loading processor...")# 经常使用 trust_remote_code=True 加载处置器,以处置任何自定义处置逻辑return AutoProcessor.from_pretrained(self.model_id, trust_remote_code=True)def predict(self, image_url, prompt):"""Perform a prediction using the model given an image and a prompt.Args:image_url (str): The URL of the image to be processed.prompt (str): The textual prompt that guides the model's generation.Returns:response (str): The generated response from the model."""# 从提供的 URL 加载图像image = Image.open(requests.get(image_url, stream=True).raw)# 为模型格局化输入揭示模板prompt_template = f"<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n"# 处置输入,将揭示和图像转换为张量格局inputs = self.processor(prompt_template, [image], return_tensors="pt").to(self.device)# 设置模型照应生成的生成参数generation_args = {"max_new_tokens": 500,# 生成的最大令牌数"temperature": 0.7,# 生成的采样温度,以参与多样性"do_sample": False# 禁用采样以取得确定性输入}print("Generating response...")# 经常使用模型生成输入 ID,跳过输入令牌output_ids = self.model.generate(**inputs, **generation_args)output_ids = output_ids[:, inputs['input_ids'].shape[1]:]# Ignore the input prompt in the output# 解码生成的输入令牌以取得照应文本response = self.processor.batch_decode(output_ids, skip_special_tokens=True)[0]return response# 初始化模型phi_model = Phi3VisionModel()# 示例预测image_url = "https://example.com/sample_image.png"# 示例图像的 URLprompt = "Extract the>
上述代码定义了 Phi3VisionModel 类,它形象了模型的加载和经常使用,使其更容易集成到你的运行程序中。predict() 方法展现了如何经常使用自定义揭示启动基于图像的推理。
4 OCR 性能测试
为了评价 Phi-3-Vision-128K-Instruct 模型的 OCR 性能,咱们选取了一些实在扫描的身份证图像作为测试样本。这些图像品质错落不齐,明晰度也各不相反,给模型带来了不同水平的应战。指标是展现模型如何能够从具备不同特色的文档中提取文本消息,例如含糊、复杂的背景和不同的文本字体。
输入:
{"Type/Type": "P","Country code/Code du pays": "UTO","Passport Number/N° de passeport": "L898902C3","Surname/Nom": "ERIKSSON","Given names/Prénoms": "ANNA MARIA","Nationality/Nationalité": "UTOPIAN","Date of Birth/Date de naissance": "12 AUGUST/AOUT 74","Personal No./N° personnel": "Z E 184226 B","Sex/Sexe": "F","Place of birth/Lieu de naissance": "ZENITH","Date of issue/Date de délivrance": "16 APR/AVR 07","Authority/Autorité": "PASSPORT OFFICE","Date of expiry/Date d'expiration": "15 APR/AVR 12","Holder's signature/Signature du titulaire": "anna maria eriksson","Passport/Passeport": "P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<<<<<L898902C36UT07408122F1204159ZE184226B<<<<10"}
输入:
以下是从护照中提取的完整数据,以 JSON 格局出现:
{"passport": {"issuingCountry": "Netherlands","issuingAuthority": "Koninkrijk der Nederlanden","passportNumber": "SPEC12014","issuingDate": "09 MAR 2014","expiryDate": "09 MAR 2024","holder": {"gender": "F","nationality": "Netherlands","placeOfBirth": "SPECIMEN","sex": "WF","firstNames": ["Willem","Lieselotte"]},"physicalDescription": {"height": "1.75 m","hairColor": "gray","hairLength": "short"},"issuingOffice": "Burg. van Stad en Dorp","issuingDateAsInt": "14032014","expiryDateAsInt": "14032024","fieldsExtracted": [{"code": "NL","dateOfBirth": "10 MAR 1965","dateOfIssue": "09 MAR 2014","dateOfExpiry": "09 MAR 2024","firstNames": ["Willem","Lieselotte"],"nationality": "Netherlands","passportNumber": "SPEC12014","placeOfBirth": "SPECIMEN","sex": "WF"}]}}
5 在线体验 Phi-3-Vision-128K-Instruct
假设你想亲身尝试 Phi-3-Vision-128K-Instruct 模型,你可以经过以下链接来体验:。这个链接可以体验模型的性能,尝试其 OCR 性能。
6 架构与训练
Phi-3-Vision-128K-Instruct 模型不单是一个言语模型,它是一个弱小的多模态工具,能够同时处置视觉和文本数据。这个模型教训了蕴含5000亿个令牌的综合训练,涵盖了文本和图像数据。其架构奇妙地融合了言语模型和图像处置模块,构建了一个能够了解超越128K令牌高低文的连接系统,使之能够应答长篇对话或处置少量内容的文档。
得益于在如512 H100 GPU这样的高性能配件上的训练,以及驳回flash attention技术提高内存效率,Phi-3-Vision-128K-Instruct 模型能够轻松驾驭大规模义务。它的训练数据集是分解数据和经过挑选的实在环球数据的混合体,特意强调了数学、编码、知识推理和普通知识,这使模型具备宽泛的实用性,能够顺应各种不同的运行场景。
7 性能基准
Phi-3-Vision-128K-Instruct 模型的性能已在多个基准测试中启动了测试,这些测试包括 ScienceQA、AI2D、MathVista 和 TextVQA。在触及文本和视觉消息联合的义务上,该模型的得分普遍逾越了泛滥现有模型,特意是在以下两个方面体现突出:
值得一提的是,在 ChartQA 数据集上,Phi-3-Vision-128K-Instruct 到达了 81.4% 的准确率;在 AI2D 数据集上,也取得了 76.7% 的高分。这些效果充沛证实了模型无了解数据密集型文档方面的微弱实力。
结语
Phi-3-Vision-128K-Instruct 代表的不只仅是多模态人工智能畛域的一次性提高,它更是引领咱们走向一个文档提取、OCR和AI驱动内容生成无缝衔接、易于操作的未来。得益于其片面的训练、弱小的架构和深思熟虑的设计,这一模型赋予了开发者在各个畛域改造数据处置模式的才干。
本文转载自,作者: