书生·浦语大模型--第五节课笔记作业--LMDeploy 大模型量化部署实践

在这里插入图片描述

文章目录

  • 大模型部署背景
  • LMDeploy简介
  • 动手实践
    • 创建环境
    • 服务部署
      • 在线转换
      • 离线转换
      • TurboMind推理+API服务
      • Gradio 作为前端 Demo演示
        • TurboMind 服务作为后端
        • TurboMind 推理作为后端
  • 作业

大模型部署背景

部署:将训练好的模型在特定软硬件环境中启动的过程
在这里插入图片描述
挑战:存储问题
在这里插入图片描述

LMDeploy简介

针对英伟达平台
在这里插入图片描述
量化可以节省显存,提升推理速度
在这里插入图片描述
访问数据占用了大量时间
在这里插入图片描述
有一部分很重要的参数不量化,保留性能。其余部分量化节约显存
在这里插入图片描述

动手实践

安装、部署、量化

创建环境

/root/share/install_conda_env_internlm_base.sh lmdeploy

在这里插入图片描述
在这里插入图片描述
安装lmdeploy

# 解决 ModuleNotFoundError: No module named 'packaging' 问题
pip install packaging
# 使用 flash_attn 的预编译包解决安装过慢问题
pip install /root/share/wheels/flash_attn-2.4.2+cu118torch2.0cxx11abiTRUE-cp310-cp310-linux_x86_64.whl
pip install 'lmdeploy[all]==v0.1.0'

服务部署

在线转换

可以直接加载 Huggingface 模型

直接启动本地的 Huggingface 模型

lmdeploy chat turbomind /share/temp/model_repos/internlm-chat-7b/  --model-name internlm-chat-7b

可以在bash中对话
在这里插入图片描述

离线转换

需要先保存模型再加载

lmdeploy convert internlm-chat-7b  /root/share/temp/model_repos/internlm-chat-7b/

在这里插入图片描述
模型转换完成后,我们就具备了使用模型推理的条件,接下来就可以进行真正的模型推理环节。

# Turbomind + Bash Local Chat
lmdeploy chat turbomind ./workspace

在这里插入图片描述

TurboMind推理+API服务

在上面的部分我们尝试了直接用命令行启动 Client,接下来我们尝试如何运用 lmdepoy 进行服务化

”模型推理/服务“目前提供了 Turbomind 和 TritonServer 两种服务化方式。

首先,通过下面命令启动服务。

# ApiServer+Turbomind   api_server => AsyncEngine => TurboMind
lmdeploy serve api_server ./workspace \
	--server_name 0.0.0.0 \
	--server_port 23333 \
	--instance_num 64 \
	--tp 1

在这里插入图片描述
新开一个窗口,执行下面的 Client 命令。如果使用官方机器,可以打开 vscode 的 Terminal,执行下面的命令。

# ChatApiClient+ApiServer(注意是http协议,需要加http)
lmdeploy serve api_client http://localhost:23333

在这里插入图片描述
本地使用SSH连接,并打开 http://localhost:23333/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Gradio 作为前端 Demo演示

TurboMind 服务作为后端
# Gradio+ApiServer。必须先开启 Server,此时 Gradio 为 Client
lmdeploy serve gradio http://0.0.0.0:23333 \
	--server_name 0.0.0.0 \
	--server_port 6006 \
	--restful_api True
TurboMind 推理作为后端

Gradio 也可以直接和 TurboMind 连接,如下所示

# Gradio+Turbomind(local)
lmdeploy serve gradio ./workspace

打开http://localhost:6006/
在这里插入图片描述

作业

  • 本地对话方式,生成300字小故事
    在这里插入图片描述

  • API 方式,生成300字小故事
    在这里插入图片描述
    在这里插入图片描述

  • 网页Gradio方式, 生成300字小故事
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某马头条——day10

热文章数据查询 分布式任务调度xxl-job 概述 环境搭建 docker化部署 docker run -p 3306:3306 --name mysql57 \ -v /opt/mysql/conf:/etc/mysql \ -v /opt/mysql/logs:/var/log/mysql \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot\ -d mysql:5.7 dock…

255:vue+openlayers 加载tomtom地图(多种形式)

第255个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…

docker 安装python3.8环境镜像并导入局域网

一、安装docker yum -y install docker docker version #显示 Docker 版本信息 可以看到已经下载下来了 拉取镜像python3镜像 二、安装docker 中python3环境 运行本地镜像,并进入镜像环境 docker run -itd python-38 /bin/bash docker run -itd pyth…

MySQL(基础篇)——SQL

一.SQL分类 二.DDL(数据定义语言) 1.DDL——数据库操作 ① 查询 查询所有数据库 SHOW DATABASES 查询当前所处数据库 SELECT DATABASE() ② 创建 CREATE DATABASE [IF NOT EXISTS] 数据库名(通常以db结尾) [DEFAULT CHARSET 字符集] [COLLATE 排序规则] ③ …

免费的 UI 设计资源网站 Top 8

今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站,尤其是一些材料站。它们是免费下载的,材料的风格目前很流行,适合不同的项目。非常适合平面设计WEB/UI设计师收藏,接下…

HTTP协议简介

什么是HTTP 超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议常…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量,使用工具时,发现有些代码无法统计。 原因时UTF-8中有某些特殊字符,工具不能识别。 但是,如果把代码转换为SJIS格式,就能正常统计了。 因此&…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展,新能源充电桩作为电动汽车的重要基础设施,其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数,如温度、湿度等,为管理人员提供及时、准确的数据,以便做出相应的调…

云手机与实体手机的对比

在数字化时代,云手机作为一种虚拟手机在云端服务器上运行,与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别,以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量,占据一定…

[极客大挑战 2019]LoveSQL1

万能密码测试,发现注入点 注意这里#要使用url编码才能正常注入 测试列数,得三列 查看table,一个是geekuser另一个是l0ve1ysq1 查看column,有id,username,password,全部打印出来,…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷(原因,如何解决) 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 (原因,如何解决) 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

架构师之路(十六)计算机网络(传输层)

前置知识(了解):计算机基础。 作为架构师,我们所设计的系统很少为单机系统,因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…

一款相对比较强大的国产ARM单片机HC32F4A0

已经用了3年的HC32F4A0,已经对它比较熟悉了,与STM32相比它的外设使用这些的确是挺大大,不像GD32一类的单片机很多都能兼容STM32。用久了之后就更喜欢用HC32F4A0,功能强大,外设使用灵活,用点向FPGA靠拢的感觉…

MAX27——处理max模型导出Zbrush中,无UV,或者UV炸开,反向等问题。

现在很多小伙伴要做数字人的时候会用到zbrush拓补高模。制作法线。有些人喜欢在zbrush中去做封套。也有喜欢直接用max做低模,做好的uv导入到Zbrush中,直接把高模法线,烘焙到低模UV的。这里主要讲解以下max导出到zbrush中,UV炸开&a…

来自世坤!寻找Alpha 构建交易策略的量化方法

问:常常看到有人说Alpha seeking,这究竟是什么意思? 推荐这本《Finding Alphas: A Quantitative Approach to Building Trading Strategies》。我拿到的PDF是2019年的第二版。来自WorldQuant(世坤)的Igor Tulchinshky…

热门技术问答 | 请 GaussDB 用户查收

近年来,Navicat 与华为云 GaussDB 展开一系列技术合作,为 GaussDB 用户提供面向管理开发工具的生态工具。Navicat 现已完成 GaussDB 主备版(单节点、多节点)和分布式数据库的多项技术对接。Navicat 通过工具的流畅性和实用性&…

内网穿透、远程桌面、VPN的理解

最近在研究内网穿透的相关技术,然后回想起一些相关的技术,比如说要远程桌面公司的电脑,VPN连入内网等。然后想着在此处记录一下,各个的区别,这个纯粹是从技术层面的理解,此处不详细解释怎么去实现或者用什么…

k8s的图形化工具rancher

1、rancher:是一个开源的企业级多集群的k8s管理平台 2、rancher和k8s的区别 (1)都是为了容器的调度和编排系统 (2)但rancher不仅能够调度,还能管理k8s集群,自带监控(普罗米修斯&a…

仅使用 Python 创建的 Web 应用程序(前端版本)第05章_共通代码

前面介绍了很多,但是让我们从本章开始实现 WTS。 在本章中,我们将实现所有页面的公共部分:SessionManager、MockDB、Model 和 Application。 SessionManger 与 Streamlit 会话交互。 在WTS中,我们的目标是使代码清晰,SessionManager负责读写st.session_state数据。 Mock…

插入排序

插入排序 概述步骤代码示例输出结果 概述 插入排序是一种最简单直观的排序算法,它的工作原理是通过创建有序序列和无序序列,然后再遍历无序序列得到里面每一个数字,把每一个数字插入到有序序列中正确的位置。 插入排序是一种简单直观的排序…