【深度学习】InternVL2-8B,图转文,docker部署

文章目录

  • 基础
  • fastapi服务
  • 请求fastapi接口

基础

https://huggingface.co/OpenGVLab/InternVL2-8B#%E7%AE%80%E4%BB%8B

InternVL2-26B应该更好,但显存没那么大,只能跑InternVL2-8B了。

下载:

cd /ssd/xiedong/InternVL2-26B
git clone https://huggingface.co/OpenGVLab/InternVL2-8B

运行docker:

docker run -it -v /ssd/xiedong/InternVL2-26B:/ssd/xiedong/InternVL2-26B --gpus device=3 -p 7895:7860 kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-InternVL2 bash

进去路径:

cd /ssd/xiedong/InternVL2-26B

执行此python代码:

from lmdeploy import pipeline, TurbomindEngineConfig, ChatTemplateConfig
from lmdeploy.vl import load_imagemodel = '/ssd/xiedong/InternVL2-26B/InternVL2-8B'
system_prompt = 'Describe this image in English with no more than 50 words.'
image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')
chat_template_config = ChatTemplateConfig('internvl-internlm2')
chat_template_config.meta_instruction = system_prompt
pipe = pipeline(model, chat_template_config=chat_template_config,backend_config=TurbomindEngineConfig(session_len=8192))
response = pipe(('Describe this image in English with no more than 50 words.', image))
print(response.text)

或者传一张图片后执行这种代码:

from lmdeploy import pipeline, TurbomindEngineConfig, ChatTemplateConfig
from lmdeploy.vl import load_imagemodel = '/ssd/xiedong/InternVL2-26B/InternVL2-8B'
system_prompt = 'Describe this image in English with no more than 50 words.'
image = load_image('/ssd/xiedong/InternVL2-26B/000030982.jpg')
chat_template_config = ChatTemplateConfig('internvl-internlm2')
chat_template_config.meta_instruction = system_prompt
pipe = pipeline(model, chat_template_config=chat_template_config,backend_config=TurbomindEngineConfig(session_len=8192))
response = pipe(('Describe this image in English with no more than 50 words.', image))
print(response.text)

fastapi服务

执行这个代码可以开启一个fastapi接口,7860端口会被docker映射到7895.

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse
from lmdeploy import pipeline, TurbomindEngineConfig, ChatTemplateConfig
from lmdeploy.vl import load_image
from PIL import Image
import ioapp = FastAPI()model = '/ssd/xiedong/InternVL2-26B/InternVL2-8B'
system_prompt = 'Describe this image in English with no more than 50 words.'
chat_template_config = ChatTemplateConfig('internvl-internlm2')
chat_template_config.meta_instruction = system_prompt
pipe = pipeline(model, chat_template_config=chat_template_config,backend_config=TurbomindEngineConfig(session_len=8192))@app.post("/describe-image")
def describe_image(file: UploadFile = File(...)):try:# 将上传的文件转为Pillow图像对象image = Image.open(io.BytesIO(file.file.read()))# 使用load_image方法加载图像loaded_image = load_image(image)# 调用模型处理图片response = pipe(('Describe this image in English with no more than 50 words, just need to output a captioning of the image.', loaded_image))# 返回描述结果return JSONResponse(content={"description": response.text})except Exception as e:return JSONResponse(content={"error": str(e)}, status_code=500)finally:file.file.close()if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=7860)

请求fastapi接口

import requestsurl = "http://10.136.19.26:7895/describe-image"# 要上传的图片文件路径
file_path = "output_image.png"# 打开文件并发送POST请求
with open(file_path, "rb") as file:files = {"file": file}response = requests.post(url, files=files)# 检查响应并打印结果
if response.status_code == 200:print("Description:", response.json().get("description"))
else:print("Error:", response.json().get("error"))

在这里插入图片描述

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

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

相关文章

spring boot 实现token验证登陆状态

1、添加maven依赖到pom.xml <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId>…

unity3d脚本使用start,updata,awake

最近学了一下unity&#xff0c;脚本编写用的c#&#xff0c;虽说没学过c#但是勉强根据教学还能写点代码。 在这里我来记录一下在我学习过程中感觉最重要的东西 消息函数&#xff1a; 在我们创建一个脚本文件的时候&#xff0c;我们首先可以看到两个默认给你写出来的函数。 这两…

Promise的自定义封装(用类方法)

深入理解promise底层源码有助于我们更好地理解promise。以下代码可以实现promise的基本功能。 class Promise{// 构造方法constructor(executor){// 添加属性this.PromiseState "pending";this.PromiseResult null;this.callbacks [];// 保存实例对象this的值co…

爬虫-存储数据

EXCEL文件 openpyxl写文件 exce文件也被称为工作簿&#xff0c;其可以创建多个工作表。每个工作表是由很多个单元格组成。我们通过openpyxl来操作Excel文件。 安装 pip install openpyxl 要将内容写入Excel文件&#xff0c;首先要创建一个Excel表格&#xff0c;方法如下&…

c++图的基本操作

在C中&#xff0c;可以使用邻接矩阵或邻接表来表示图&#xff0c;并实现一系列基本的图操作&#xff0c;包括创建图、添加边、删除边、遍历图等。下面是关于图的基本操作的详细解释。 创建图&#xff1a; 使用邻接矩阵创建图&#xff1a;可以使用二维数组来表示邻接矩阵&#x…

RAG技术-为自然语言处理注入新动力

引言&#xff1a; 在自然语言处理&#xff08;NLP&#xff09;的领域中&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff09;技术以其独特的方式&#xff0c;正在改变我们与机器的交互方式。RAG技术结合了大语言模型的强大能力&#xff0c;使得机器在理解和…

MongoDB教程(九):java集成mongoDB

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、环境准…

SAPUI5基础知识15 - 理解控件的本质

1. 背景 经过一系列的练习&#xff0c;通过不同的SAPUI5控件&#xff0c;我们完成了对应用程序界面的初步设计&#xff0c;在本篇博客中&#xff0c;让我们一起总结下SAPUI5控件的相关知识点&#xff0c;更深入地理解SAPUI5控件的本质。 通常而言&#xff0c;一个典型UI5应用…

RocketMQ单结点安装/Dashboard安装

目录 1.安装NameServer 2.安装Broker 3.使用自带工具测试数据发送 4.使用DashBoard进行查看 5.关闭相关设备 前置条件&#xff1a;两台虚拟机CentOS Linux release 7.5.1804(ps:当然也可以都部署在一台机器上) RocketMq属于天生集群。需要同时启动nameServer和Broker进行…

go练习:图像

自定义 Image 类型&#xff0c;实现必要的方法并调用 pic.ShowImage。 Bounds 应当返回一个 image.Rectangle &#xff0c;例如 image.Rect(0, 0, w, h)。 ColorModel 应当返回 color.RGBAModel。 At 应当返回一个颜色。上一个图片生成器的值 v 对应于此次的 color.RGBA{v, …

CMMI认证是什么?做CMMI认证的必要条件?CMMI认证的重要性

CMMI&#xff08;Capability Maturity Model Integration&#xff09;认证&#xff0c;作为企业追求卓越软件工程实践的标志&#xff0c;其实现过程既严谨又复杂。首先&#xff0c;我们需要深入理解CMMI的核心理念&#xff0c;即持续的过程改进和成熟度提升。 为了实现CMMI认证…

redistemplate介绍与演示

redistemplate是一个用于在Redis中存储和检索数据的模板库。它提供了一组简单易用的函数和接口&#xff0c;使开发者能够更方便地使用Redis进行数据操作。 使用redistemplate&#xff0c;你可以实现以下功能&#xff1a; 存储和检索数据&#xff1a;redistemplate提供了存储和…

Lucene 索引文件详解:结构与工作原理

Lucene 索引文件详解&#xff1a;结构与工作原理 Apache Lucene 是一个强大的搜索引擎库&#xff0c;用于为大规模文本数据创建搜索和索引功能。Lucene 使用特定的文件格式来存储索引&#xff0c;以便高效地进行搜索。理解这些索引文件格式对于调优性能和解决潜在问题非常重要…

C++ 几何计算库

代码 #include <iostream> #include <list> #include <CGAL/Simple_cartesian.h> #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_segment_primitive.h> #include <CGAL/Polygon_2.h>typedef CGAL…

每天一个数据分析题(四百三十二)- 假设检验

在假设检验问题中&#xff0c;原假设为H0 &#xff0c;给定显著水平为α&#xff0c;则关于假设检验的原理说法正确的是 A. 中心极限定理 B. 小概率事件 C. 置信区间 D. 正态分布的性质 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答…

线性代数|机器学习-P24加速梯度下降(动量法)

文章目录 1. 概述2. 引入3. 动量法梯度下降 1. 概述 我们之前学的最速梯度下降[线搜索方法] 公式如下&#xff1a; x k 1 x k − s k ∇ f ( x k ) \begin{equation} x_{k1}x_k-s_k\nabla f(x_k) \end{equation} xk1​xk​−sk​∇f(xk​)​​ 但对于这种方法来说&#xff…

助力数据记录:Connext的Historian功能启动指南

​ 在工业自动化领域&#xff0c;Connext以其全新的OPCUA数据采集解决方案为核心&#xff0c;不仅拥有超越传统的扩展功能&#xff0c;而且在多个行业中都得到了广泛的认证。Connext能够快速找出解决方案并迅速部署&#xff0c;整个过程不会影响到原有的生产。它的强大之处在于…

Android12 禁用adb

这种做法没有删除任何adb相关的东西&#xff0c;只是设置persist.sys.usb.config中的adb相关属性时添加宏控制。 userdebug版本一样可以禁用 添加宏开关 device/mediatek/mt6761/BoardConfig.mk # for adb ADB_ENABLE:false添加ro.adb.enabled属性 build/make/core/main.mk…

信创学习笔记(三),信创之操作系统OS思维导图

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 一. 回顾信创CPU芯片 1. x86应用生态最丰富, 海光(3,5,7)授权较新,无桌面授权,多用于服务器 兆芯(ZX, KX, KH)授权较早期. 2. ARMv8移动端应用生态丰富, 华为鲲鹏(9) ,制裁中&#xff0c;…