colab+ngork本地访问多模态大模型

allenai/Molmo-7B-D-0924
1)colab准备环境,我这里用的是l4

2)安装对应的python库
 

!pip install transformers Pillow requests einops!pip install 'accelerate>=0.26.0' bitsandbytes!pip install --no-deps accelerate bitsandbytes
!pip install chainlit

3)

将下面的代码放到一个新建的py文件,并且运行!chainlit run ui.py --host 0.0.0.0 --port 5000(在ngork后运行)

import chainlit as cl
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig
from PIL import Image
import torch# Load the processor
processor = AutoProcessor.from_pretrained('allenai/Molmo-7B-D-0924',trust_remote_code=True,torch_dtype='auto',device_map='auto'
)# Load the model
model = AutoModelForCausalLM.from_pretrained('allenai/Molmo-7B-D-0924',trust_remote_code=True,torch_dtype='auto',device_map='auto'
)@cl.on_chat_start
async def start():await cl.Message("欢迎使用图像分析应用!请上传一张图片,然后输入您的问题或描述要求。").send()@cl.on_message
async def main(message: cl.Message):if not message.elements:await cl.Message("请先上传一张图片,然后再输入您的问题。").send()returnimage = message.elements[0]if not image.mime.startswith("image"):await cl.Message("请上传一个有效的图片文件。").send()returnuser_prompt = message.contentif not user_prompt:user_prompt = "Describe this image."await process_image(image.path, user_prompt)async def process_image(image_path, user_prompt):# Process the imageinputs = processor.process(images=[Image.open(image_path)],text=user_prompt)# Move inputs to the correct device and make a batch of size 1inputs = {k: v.to(model.device).unsqueeze(0) for k, v in inputs.items()}# Generate outputoutput = model.generate_from_batch(inputs,GenerationConfig(max_new_tokens=200, stop_strings="<|endoftext|>"),tokenizer=processor.tokenizer)# Get generated tokens and decode them to textgenerated_tokens = output[0, inputs['input_ids'].size(1):]generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)# Send the generated text as a messageawait cl.Message(content=generated_text).send()if __name__ == "__main__":cl.run()

在colab可以用;同时执行多个命令,但是要注意;前后都有空格

例如:!ls ; touch a.py

4)运行ngork(先运行这个,在运行上面的命令)

!pip install pyngrok
from pyngrok import ngrok
ngrok.set_auth_token("")(这个需要你去登陆ngork的官网获得)
# 启动 ngrok
public_url = ngrok.connect(5000)
print("公开访问链接:", public_url)

5)访问

https://a87f-107.ngrok-free.app/

成功

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

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

相关文章

怎么将手机备忘录传送至电脑

在数字化时代&#xff0c;手机备忘录已成为我们生活中不可或缺的一部分。无论是记录购物清单、工作事项&#xff0c;还是灵感闪现的瞬间&#xff0c;手机备忘录都能随时记录下这些宝贵的信息&#xff0c;帮助我们防止遗忘。然而&#xff0c;有时候我们需要将这些备忘录内容转移…

数字影像技术平台推动可持续发展创意产业

在这个日新月异的数字时代&#xff0c;数字影像技术平台正以前所未有的力量&#xff0c;为可持续发展创意产业注入勃勃生机与无限可能。它们不仅是技术革新的前沿阵地&#xff0c;更是推动社会进步、促进文化繁荣的绿色引擎。 从高清细腻的VR体验&#xff0c;到震撼人心的AR互…

Tailwind Css的使用

1.Tailwind Css是什么 官网解释&#xff1a;Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类&#xff08;class&#xff09;名&#xff0c;然后生成相应的样式代码并写入 到一个静态 CSS 文件中。 我的理解是利用Tailwind CSS 提供的…

共享单车轨迹数据分析:以厦门市共享单车数据为例(十)

副标题&#xff1a;共享单车与地铁站出入口分布情况探究——以厦门市为例 假期结束了&#xff0c;我们满血复活&#xff0c;继续更新&#xff01; 本篇文章我们讨论共享单车与地铁出入口的关系&#xff0c;在上一篇文章中&#xff0c;我们讨论了综合得分指数最高的地铁站——…

利用可解释性技术增强制造质量预测模型

概述 论文地址&#xff1a;https://arxiv.org/abs/2403.18731 本研究提出了一种利用可解释性技术提高机器学习&#xff08;ML&#xff09;模型性能的方法。该方法已用于铣削质量预测&#xff0c;这一过程首先训练 ML 模型&#xff0c;然后使用可解释性技术识别不需要的特征并去…

安装echarts报错:request to https://registry.npmjs.org/echarts-gl failed

Hello&#xff01;欢迎各位新老朋友来看小弟博客&#xff0c;祝大家事业顺利&#xff0c;财源广进&#xff01;&#xff01; 主题&#xff1a;安装echarts报错&#xff1a;request to https://registry.npmjs.org/echarts-gl failed 第一&#xff1a;报错问题&#xff1a;链接…

Codeforces Round 923 (Div. 3) F. Microcycle

题目 【坑点】&#xff1a;不能先用拓扑排序去掉“线头”&#xff0c;然后找权重最小的边所在的环。因为去掉线头后&#xff0c;可能有的边不在环内。 e.g.有六条无向边 1 - 2 , 2 - 3, 1 - 3, 4 - 5, 5 - 6, 4 - 6, 1 - 4, 边1 - 4不在环内 wa代码&#xff1a; #include &…

【FPGA开发】Modelsim仿真精度的坑

问题所在 最近在使用黑金的AXU3EG板卡对着正点原子ZYNQ7020的例程进行移植学习。但在编写tb代码以及使用modelsim进行仿真时出了问题&#xff0c;发现我的实际波形与正点的对不上&#xff0c;仔细测量一下波形发现&#xff0c;我的系统时钟是6ns周期&#xff0c;而不是理想中的…

儿童(青少年)可以参加哪些含金量高的比赛?

随着素质教育的推进&#xff0c;越来越多的家长和老师开始关注如何培养孩子的综合素质和能力。而参加各类比赛&#xff0c;不仅可以锻炼孩子的思维、动手能力和团队合作精神&#xff0c;还能帮助孩子在学习的过程中找到兴趣点和成就感。尤其是一些含金量高的比赛&#xff0c;不…

QT实现QMessageBox中文按钮

这是我记录Qt学习过程心得文章的第二篇&#xff0c;主要是为了方便QMessageBox弹出框的使用&#xff0c;通过自定义的方式&#xff0c;将其常用的功能&#xff0c;统一封装成一个函数&#xff0c;还是写在了Skysonya类里面。 实现代码&#xff1a; //中文提示对话框 bool Sky…

DAMA数据管理知识体系(第12章 元数据管理)

课本内容 12.1 引言 图12-1 语境关系图&#xff1a;元数据概念理解 元数据的信息范围很广&#xff0c;不仅包括技术和业务流程、数据规则和约束&#xff0c;还包括逻辑数据结构与物理数据结构等。它描述了数据本身&#xff08;如数据库、数据元素、数据模型&#xff09;&#x…

noexcept

作用 性能优化&#xff1a;当一个函数声明为noexcept时&#xff0c;编译器可以假设该函数不会抛出异常&#xff0c;从而避免生成与异常处理相关的额外代码。这可以减少程序的运行时开销&#xff0c;特别是在那些不使用异常的代码路径上。 使用 通const一样&#xff0c;声明和…

java动态规划背包问题

代码功能 在不超过给定背包容量&#xff08;capacity&#xff09;的前提下&#xff0c;从一系列具有特定重量&#xff08;weights&#xff09;和价值&#xff08;values&#xff09;的物品中选择若干物品&#xff0c;使得这些物品的总价值最大化。 类定义&#xff1a;定义了一…

C++实现AVL树增删查

目录 1. AVL的概念 &#xff08;1&#xff09;名字的由来 &#xff08;2&#xff09;什么是AVL树 &#xff08;3&#xff09;实现方法 &#xff08;4&#xff09;为什么高度差是1 &#xff08;5&#xff09;对比二叉搜索树 2. AVL树的结构 3. AVL树的功能 &#xff08;1…

芝法酱学习笔记(0.7)——harbor与项目容器化部署

前言 之前我们主要讲的jar包部署。使用jar包部署可能导致不同服务互相争抢资源&#xff08;隔离性&#xff09;&#xff0c;不同服务可能需要不同的jdk环境&#xff0c;有时也会造成困扰。故在微服务时代&#xff0c;我们通常使用docker部署 一、docker安装 docke相关的知识…

新硬盘第一次使用需要怎样做?

无论是组装新电脑&#xff0c;还是给现有电脑增加存储空间&#xff0c;我们需要进行一些安装硬盘和设置硬盘的操作。对于没有相关经验的用户来说&#xff0c;对于拿到手的新硬盘会感到手足无措&#xff0c;不知道应该从哪里开始。今天小编详细介绍一下新硬盘第一次使用时的流程…

Qt-窗口布局按钮输入类

1. 窗口布局 Qt 提供了很多摆放控件的辅助工具&#xff08;又称布局管理器或者布局控件&#xff09;&#xff0c;它们可以完成两件事&#xff1a; 自动调整控件的位置&#xff0c;包括控件之间的间距、对齐等&#xff1b; 当用户调整窗口大小时&#xff0c;位于布局管理器内的…

AI没有是非观的原因

人工智能没有价值观的原因主要可以归结为只有数据驱动的被动性相关算法&#xff0c;没有主动干预性及其反事实关系&#xff1a; &#xff08;1&#xff09;数据被动驱动 AI的学习、分析、预测只依赖于大量的数据&#xff0c;并通过模式识别和统计分析建立关联。而这些数据本身可…

【算法】链表:2.两数相加(medium)+模拟

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法 (模拟) 4、代码 1、题目链接 2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 3、解法 (模拟) 理解题目要求&#xff1a; 我们有两个链表&#xff0c;每个链表代表一个…

51单片机-第十四节-AD/DA(XPT2046触摸屏)

一、AD/DA介绍&#xff1a; AD&#xff1a;模拟-数字转换&#xff0c;将模拟信号转换为计算机可操作的数字信号。 DA&#xff1a;数字-模拟转换&#xff0c;将计算机输出的数字信号转换为模拟信号。 二、运算放大器&#xff1a; 1.介绍&#xff1a; &#xff08;1&#xf…