微软最新轻量级、多模态Phi-3.5-vision-instruct模型部署

news2024/9/20 12:16:21

Phi-3.5-vision-instruct是微软最新发布的 Phi-3.5 系列中的一个AI模型,专注于多模态任务处理,尤其是视觉推理方面的能力。

Phi-3.5-vision-instruct模型具备广泛的图像理解、光学字符识别(OCR)、图表和表格解析、多图像或视频剪辑摘要等功能,非常适合多种AI驱动的应用,在图像和视频处理相关的基准测试中表现出显著的性能提升。

Phi-3.5-vision-instruct模型的架构包括一个42亿参数的系统,集成了图像编码器、连接器、投影器和Phi-3 Mini语言模型,训练使用了256个NVIDIA A100-80G GPU,训练时间为6天。

Phi-3.5-vision在多模态多图像理解(MMMU)中的得分为43.0,相较于之前版本有所提升,显示了其在处理复杂图像理解任务时的增强能力。

github项目地址:https://github.com/microsoft/Phi-3CookBook。

一、环境安装

1、python环境

建议安装python版本在3.10以上。

2、pip库安装

pip install torch==2.3.0+cu118 torchvision==0.18.0+cu118 torchaudio==2.3.0 --extra-index-url https://download.pytorch.org/whl/cu118

pip install upgrade transformers -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install flash-attn --no-build-isolation

3、模型下载

git lfs install

git clone https://modelscope.cn/models/LLM-Research/Phi-3.5-vision-instruct

、功能测试

1、运行测试

(1)python代码调用测试

from PIL import Image
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
import argparse

class VisionInstructModel:
    def __init__(self, model_path, local_image_path, torch_dtype='auto'):
        self.model_path = model_path
        self.local_image_path = local_image_path
        self.torch_dtype = torch_dtype

        self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
        self._load_model_and_processor()

    def _load_model_and_processor(self):
        self.processor = AutoProcessor.from_pretrained(self.model_path, trust_remote_code=True)
        self.model = AutoModelForCausalLM.from_pretrained(
            self.model_path,
            trust_remote_code=True,
            torch_dtype=self.torch_dtype,
            _attn_implementation='flash_attention_2'
        ).to(self.device)

    def _prepare_input(self, prompt, image_path):
        image = Image.open(image_path)
        return self.processor(prompt, image, return_tensors="pt").to(self.device)

    def generate_response(self, prompt, max_new_tokens=1000):
        inputs = self._prepare_input(prompt, self.local_image_path)
        generate_ids = self.model.generate(
            **inputs,
            max_new_tokens=max_new_tokens,
            eos_token_id=self.processor.tokenizer.eos_token_id
        )
        generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]

        response = self.processor.batch_decode(
            generate_ids,
            skip_special_tokens=True,
            clean_up_tokenization_spaces=False
        )[0]
        
        return response

    def describe_image(self):
        user_prompt = '<|user|>\n'
        assistant_prompt = '<|assistant|>\n'
        prompt_suffix = "<|end|>\n"
        prompt = f"{user_prompt}<|image_1|>\nDescribe the picture{prompt_suffix}{assistant_prompt}"

        response = self.generate_response(prompt)
        print("response:", response)
        return response

def main(model_path, image_path):
    model = VisionInstructModel(model_path, image_path, torch_dtype='bfloat16')
    model.describe_image()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Run VisionInstructModel to describe an image.")
    parser.add_argument("--model_path", type=str, required=True, help="Path to the model directory.")
    parser.add_argument("--image_path", type=str, required=True, help="Path to the image file.")
    
    args = parser.parse_args()
    main(args.model_path, args.image_path)

未完......

更多详细的欢迎关注:杰哥新技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32】通用定时器TIM(输入捕获)

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 前言 输入捕获简介 输入捕获配置 初始化IO口 输入捕获初始化 选择触发源及从模式 测量频率方法 输入捕获代码 IC.h IC.c 输入捕获测占空比 前言 建议先阅读这篇博客&#xf…

Open3D mesh 均值滤波

Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、概述 均值滤波&#xff08;Mean Filtering&#xff09;是一种基本的网格平滑技术&#xff0c;通过将每个顶点的位置替换为其邻域…

[ABC369C] Count Arithmetic Subarrays

首先看了下题意 大致题意就是让你在长度为的序列找出所有的等差数列。 -----------------------------------------------------------------------------------------我是分界线 我的思路了&#xff0c;就是先从2开始计算等差数列&#xff0c;从3开始判断&#xff0c;如果是…

C#从入门到精通(21)—Mutex互斥锁在多线程、多进程下的使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

C语言调用子函数时入/出栈(保护/恢复现场)全过程分析:以Cortex-M3为例

0 参考资料&工具 Cortex M3权威指南(中文).pdf keil5&#xff08;用于仿真查看寄存器、栈变化&#xff09;1 C语言调用子函数时出入/出栈&#xff08;保护/恢复现场&#xff09;全过程分析 使用C语言调用子函数是如何保护/恢复现场的呢&#xff1f;本文以Cortex-M3为例&a…

Zynq之IIC使用示例

前言 明确设计思路&#xff0c;精准定位问题&#xff0c;对于我们后期理解迭代工程有很大的帮助。 这就是我们常说的40%设计&#xff0c;20%编写和剩下的40%时间进行调试优化。 今天为大家带来的是Zynq-PS端的IIC使用demo&#xff0c;通过驱动外设DS1337来强化对IIC的使用方…

【C++二分查找 贪心】1552. 两球之间的磁力

本文涉及的基础知识点 C二分查找 贪心&#xff1a;决策兼容性 LeetCode1552. 两球之间的磁力 在代号为 C-137 的地球上&#xff0c;Rick 发现如果他将两个球放在他新发明的篮子里&#xff0c;它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子&#xff0c;第 i 个篮子的位…

百日草花语探秘:天长地久的情感寄托与丰富内涵解析

百日草宛如一颗璀璨的明珠&#xff0c;散发着独特的魅力。它那鲜艳夺目的花朵&#xff0c;仿佛是大自然用最细腻的笔触勾勒而成&#xff0c;每一朵都蕴含着无尽的奥秘与情感。当我们漫步于花海之间&#xff0c;不经意间与百日草相遇&#xff0c;那绚烂的色彩和别致的形态定会让…

李沐动手学深度学习:树叶分类竞赛

视频地址&#xff1a;30 第二部分完结竞赛&#xff1a;图片分类【动手学深度学习v2】 竞赛地址&#xff1a;https://www.kaggle.com/competitions/classify-leaves !nvidia-smi # 查看 GPU 信息 # !lscpu # 查看 CPU 信息 # !free -h # 查看内存(RAM) 信息 # !p…

datax编译:解决datax不支持MongoDB 6.0.10的问题

1. 需求及问题 最近使用datax同步MongoDB中的数据到hive,使用了mongodbreader和hdfswriter插件。MongoDB的版本是6.0.10,而datax的默认编译安装包中mongodbreader插件不支持MongoDB 6.0.10。 DataX工具介绍数据同步工具之DataX-CSDN博客 官方地址 https://github.com/alib…

模型 U型思考法(深度思考)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。探索本质&#xff0c;创新求解。 1 U型思考法的应用 1.1 小罐茶的品牌创新 背景&#xff1a; 小罐茶作为一家新兴的茶叶品牌&#xff0c;面临着传统茶叶市场的激烈竞争和消费者需求的多样化。为了在…

地震模板代码 - 第三部分

Seismic stencil codes - part 3 — ROCm Blogs (amd.com) 2024年8月12日&#xff0c;作者&#xff1a;Justin Chang 和 Ossian O’Reilly。 在前两篇博客文章中&#xff0c;我们开发了一个 HIP 内核&#xff0c;能够计算地震波传播中常用的高阶有限差分。经过优化后&#xf…

Redis KEY操作实战手册:从设计到维护的全面指南

​ &#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索Redis的key的相关操作之旅✨ &#x1f44b; 大家好&#xff01;文本…

在 Ubuntu 环境下使用 VSCode 和 PlatformIO 下载程序到 Arduino Uno

安装 VSCode 访问 VSCode 官网 下载 .deb 包使用以下命令安装&#xff1a;sudo dpkg -i <下载的文件名>.deb sudo apt-get install -f安装 PlatformIO 扩展 在 VSCode 中&#xff0c;转到扩展市场&#xff08;CtrlShiftX&#xff09;搜索 “PlatformIO IDE”点击 “安装”…

刷题记录-HOT 100(一)40道

记录题解和思路。 一、哈希表解决问题 1、两数之和 思路&#xff1a; 创建哈希表&#xff1a; 初始化了一个空字典来存储已经访问过的数字及其对应的索引。 遍历数组&#xff1a; 逐一遍历数组中的每个元素。在遍历过程中&#xff0c;针对每个元素 num&#xff0c;计算出它…

手机FM LNA方案设计

一 概述 关于手机FM的使用&#xff0c;较为传统的则是在打开FM应用前先插入有线耳机才能使用FM应用。然而随着智能手机的进步以及有线耳机日益被无线蓝牙耳机所代替&#xff0c;内置FM LNA方案被应用的越来越多&#xff0c;无需插入有线耳机&#xff0c;复用例如GSM天线也能实…

跨语言障碍:全球语言翻译神器崛起

1.背景 工作中经常要查看纯英文文档和纯英文视频&#xff0c;尽管本人经历了1年多的英语培训&#xff0c;看英文资料依然非常吃力。 大模型出来后&#xff0c;KIMI能够帮助翻译纯英文的文档内容&#xff0c;但视频翻译还没有一个很好的工具。最近发现了一款通过大模型翻译文档…

yolov9目标检测pyside6可视化检测界面python源码-用于计数统计-摄像头可用

项目概述 此项目旨在利用YOLOv9&#xff08;You Only Look Once version 9&#xff09;这一先进的目标检测模型&#xff0c;实现实时视频流中的物体识别与计数。通过集成PySide6库&#xff0c;我们能够构建一个直观且易于使用的图形用户界面&#xff08;GUI&#xff09;&#…

基于SpringBoot+Vue+MySQL的社区维修平台

系统背景 系统管理也都将通过计算机进行整体智能化操作&#xff0c;对于社区维修平台所牵扯的管理及数据保存都是非常多的&#xff0c;例如住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等…

VR虚拟驾驶未来发展_vr自动驾驶汽车所带来的改变

在自动驾驶汽车的基础上&#xff0c;VR虚拟现实技术的应用也让自动驾驶汽车更加智能化&#xff0c;能够实现更高级的驾驶体验&#xff0c;今天这篇文章就和大家一起探讨一下 VR虚拟驾驶未来发展的趋势&#xff0c;以及虚拟现实自动驾驶汽车所带来的几个改变。 一、VR 虚拟驾驶未…