LMdeploy推理实践

news2024/11/23 16:37:16

在inter-studio平台上,下载模型,体验lmdeploy

下载模型

这里是因为平台上已经有了internlm2模型,所以建立一个符号链接指向它,没有重新下载

ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/

如果是在自己的机子上,可以通过git clone的方式下载原模型。
主目录下多了一个模型
在这里插入图片描述

使用huggingface库来体验模型推理

  1. 导入分词器和模型(通过float16格式加载,节省显存)
  2. 将模型设置为eval模式,避免参数更新
  3. 通过模型的chat格式进行聊天
  4. 计算各模块所耗费的时间
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import time

tokenizer = AutoTokenizer.from_pretrained("/root/internlm2-chat-1_8b", trust_remote_code=True)

# Set `torch_dtype=torch.float16` to load model in float16, otherwise it will be loaded as float32 and cause OOM Error.
model_load_time_start = time.time()
model = AutoModelForCausalLM.from_pretrained("/root/internlm2-chat-1_8b", torch_dtype=torch.float16, trust_remote_code=True).cuda()
model = model.eval()
model_load_time_end = time.time()

inp = "hello"
print("[INPUT]", inp)
response, history = model.chat(tokenizer, inp, history=[])
print("[OUTPUT]", response)
inference1_end = time.time()


inp = "please provide three suggestions about communicate with my dog"
print("[INPUT]", inp)
response, history = model.chat(tokenizer, inp, history=history)
print("[OUTPUT]", response)
inference2_end = time.time()

print("模型加载时长",model_load_time_end - model_load_time_start)
print("第一次推理耗费时长", inference1_end - model_load_time_end)
print("第二次推理耗费时长", inference2_end - inference1_end)

执行如下:
hf模型推理耗费时长
不知道为什么,怎么会要这么久啊…

使用lmdeploy进行推理

lmdeploy chat + 模型路径即可

需要注意的是,lmdeploy推理需要TurboMind格式的模型,但是它会自动将hf格式转换为turboMind格式,我们不需要管

lmdeploy chat /root/internlm2-chat-1_8b

在这里插入图片描述
这个推理非常快速,基本上是秒回,不知道这个推理框架背后是怎么做到的。
有采取kv8和W4A16的量化技术。

显存占用的来源有三部分:模型本身,kv cache,以及中间计算结果
kv cache是存储键值对方便复用,理想状态下全都放在显存里,但是如果显存不够的话,可以放在内存里,把需要的部分移动到显存中。
调整kv cache占用显存的比例为0.4,(默认为0.8),降低kv cache占用显存的最高比例,代价是降低了速度,好处是节省了显存。

在运行推理的代码后面加上参数 --cache-max-entry-count 0.4 即可
在这里插入图片描述

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

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

相关文章

TC8002D 是一颗带关断模式的音频功放IC

一、一般概述 TC8002D是一颗带关断模式的音频功放IC。在5V输入电压下工作时,负载(3Ω)上的平均功率 为3 W,且失真度不超过10%。而对于手提设备而言,当VDD作用于关断端时,TC8002D将会进入关断模式,此时的功耗极…

【UE】利用物理学放置模型(以堆积石块为例)

目录 效果 步骤 一、准备工作 二、设置石块碰撞 三、绘制石块 效果 步骤 一、准备工作 1. 在虚幻商城中安装“Physical Layout Tool”插件 2. 在虚幻编辑器中勾选插件“Physical Layout”插件 3. 在Quixel Bridge中将我们所需要的石块资产添加到项目中 这里我们导入…

如何与精益生产咨询公司合作,确保项目的成功?

随着竞争的白热化,企业为了提升生产效率和降低成本,纷纷寻求精益生产咨询公司的帮助。然而,与咨询公司合作并不是一蹴而就的事情,需要双方共同努力,才能确保项目的成功。那么,如何与精益生产咨询公司合作&a…

个股期权是什么期权?个股期权什么时候推出?

今天期权懂带你了解个股期权是什么期权?个股期权什么时候推出?期权也称选择权,是指期权的买方有权在约定的期限内,按照事先确定的价格,买入或卖出一定数量某种特定商品或金融指标的权利。 个股期权是什么期权&#xff…

uni-app安卓本地打包个推图标配置

如果什么都不配置,默认的就是个推小鲸鱼图标 默认效果 配置成功效果 个推图标配置 新建目录 drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi 目录中存放图标 每个目录中存放对应大小的图标,大图…

Lora训练笔记1——快速上手

准备工具 AKI大佬的整合包,一键解压即可。 度盘链接 提取码:p8uy 图片预处理 图片预处理:以一定规则裁剪原始的训练素材图片,并进行打标处理。 新建两个文件夹 input:存放原始图片的文件夹 preprocess-output:…

一文带你了解 Oracle 23ai 新特性 Vector 的基础用法

Oracle Database 23ai 来了,虽然目前只是云上可商用,但是 OP 有 FREE 版本可以进行开发。 本文将介绍 Oracle 23ai 的新特性之一: AI 向量搜索,的部分内容。 向量数据类型 23ai 新增向量数据类型,可以用于表示一系列的…

​Web服务器

代码: WebServer 介绍 HTTP层 POST请求一般会包含Content-Length字段, 告诉服务器请求主体的长度GET请求一般不会包含Content-Length字段, 它一般不含请求正文POST响应: Content-Type字段, 根据请求资源的后缀填写 编写 1.读取请求与分析请求 2.根据不同请求方法构建不同的响…

前后端功能实现——查询所有

目录 1、需求 2、步骤 1)创建模块 引入坐标 2)创建结构 实现三层架构 3)创建表 brand 4)创建实体类 Brand 5)创建MyBatis配置文件 6)创建映射文件 7)创建工具类 SqlSessionFactoryUti…

5月11日,MongoDB技术沙龙·杭州站来了,本周六不见不散!

在数字化转型的新时代,MongoDB凭借灵活的文档模型、高效的数据处理能力和出色的扩展性,成为广受企业和开发者喜爱的数据库。本次活动将聚焦如何利用MongoDB简化开发工作,并分享阿里云和NineData的解决方案,更有重磅嘉宾分享实践经…

接入大量设备后,视频汇聚系统EasyCVR安防监控视频融合平台是如何实现负载均衡的?

一、负载均衡 随着技术的不断进步和监控需求的日益增长,企业视频监控系统的规模也在不断扩大,接入大量监控设备已成为一项常态化的挑战。为确保企业能够有效应对这一挑战,视频汇聚系统EasyCVR视频融合平台凭借其卓越的高并发处理能力&#x…

快速掌握Redis优化要点,告别性能瓶颈!

大家好!我是小米,今天和大家分享一下在Redis中如何进行优化,以提升系统性能。Redis作为一种流行的内存数据库,因其高性能、高可用和数据持久性而受到广泛应用。然而,在实际应用中,我们仍需对Redis进行优化,以满足各种业务需求。接下来,我将从读写方式、KV size、Key数量…

使用IIS部署Vue项目

前提 使用IIS部署Vue项目,后端必须跨域,不要在Vue中用proxy跨域,那个只在dev环境中有用! IIS安装,不用全部打勾,有些他默认就是方块 ■ 选择性安装的,就维持原样就可以。 添加网站配置 右键…

LEETCODE LCR 041. 数据流中的移动平均值

class MovingAverage:def __init__(self, size: int):"""Initialize your data structure here."""self.sizesize1self.front0self.rear0self.queue[None for _ in range(size1)]self.sum0def next(self, val: int) -> float:# 满了if (self.…

深度学习之基于YOLOv5草莓成熟度目标检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 草莓作为一种广受欢迎的水果,其成熟度的判断对于保证草莓的品质和口感至关重要。然…

Flutter分模块开发、模块可单独启动、包含Provider

前言 当前案例 Flutter SDK版本:3.13.2 目前Flutter都是在一个项目中,创建不同目录进行模块开发,我进行Android原生开发时,发现原生端,是可以将每个模块独立运行起来的,灵感来自这; 折腾了几…

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作(保姆级教学) 以下是git的工作原理,觉得繁琐的可以跳过不看 Workspace:工作区 (平时存放代码的地方) Index / Stage:暂存区(用于临时存放存放你的改动,事实上就是一个文件&…

怎么ai解答问题?这三个方法都可以

怎么ai解答问题?在数字化飞速发展的今天,人工智能(AI)技术已经渗透到我们生活的方方面面,尤其是在解答问题方面,AI展现出了令人瞩目的能力。那么,哪些软件可以利用AI技术解答问题呢?…

人脸美妆SDK解决方案,自研人脸美妆方案

美妆已经成为视频内容中不可或缺的一部分。从拍摄到编辑,再到直播,美妆效果都能为视频内容增添魅力,吸引更多观众的眼球。为了满足企业对于高质量美妆效果的需求,美摄科技凭借多年的技术积累和创新精神,推出了全新的人…

18、ESP32 ESP-NOW 点对点通信

ESP-NOW 是乐鑫自主研发的无连接通信协议,具有短数据包传输功能。该协议使多个设备能够以简单的方式相互通信。 ESP-NOW 功能 ESP-NOW 支持以下功能: 加密和未加密的单播通信;混合加密和未加密的对等设备;最多可携带 250 字节 的有效载荷;发送回调功能…