【书生大模型实战营第三期 | 基础岛第2关-8G 显存玩转书生大模型 Demo】

news2024/12/23 16:29:24

学习心得:8G 显存玩转书生大模型 Demo

摘要

本文是对《8G 显存玩转书生大模型 Demo》文档的学习心得。通过阅读文档,我了解了如何在有限的硬件资源下部署和使用大型语言模型,包括InternLM2-Chat-1.8B、InternLM-XComposer2-VL-1.8B和InternVL2-2B模型。文档详细介绍了开发机的创建、环境配置、模型部署以及使用不同工具进行模型服务的方法。

文章大纲

  1. 开发机的创建与环境配置

    • 选择开发机的镜像和配置
    • 环境的创建与激活
    • 必要的软件安装
  2. 模型部署

    • 使用Cli Demo部署InternLM2-Chat-1.8B模型
    • 使用Streamlit Web Demo部署InternLM2-Chat-1.8B模型
    • 使用LMDeploy部署InternLM-XComposer2-VL-1.8B和InternVL2-2B模型
  3. 工具使用

    • 介绍Streamlit和LMDeploy工具
    • 演示如何使用这些工具启动模型服务
  4. 问题解决

    • 遇到inotify watch limit reached问题的解决方法

总结

通过学习这篇文档,我认识到了在资源有限的情况下,如何高效地部署和运行大型语言模型。文档中提供的详细步骤和代码示例,让我对模型部署有了更深入的理解。特别是使用LMDeploy工具,它不仅提供了高效的推理性能,还支持量化和模型服务的轻松分发。此外,文档中对问题的解决策略也让我意识到在实际操作中遇到问题时的应对方法。总体来说,这是一次宝贵的学习经历,为我日后在AI领域的研究和实践打下了坚实的基础。

心得体会

学习这篇文档让我深刻体会到了技术文档的重要性。它不仅提供了具体的操作步骤,还涵盖了可能遇到的问题及其解决方案。这种详尽的指导对于初学者来说尤其宝贵,能够帮助他们快速上手并克服学习过程中的障碍。同时,我也认识到了持续学习和实践的重要性,因为只有通过实际操作,才能真正掌握知识并解决实际问题。

闯关任务

环境准备

# 创建环境
conda create -n demo python=3.10 -y
# 激活环境
conda activate demo
# 安装 torch
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖
pip install transformers==4.38
pip install sentencepiece==0.1.99
pip install einops==0.8.0
pip install protobuf==5.27.2
pip install accelerate==0.33.0
pip install streamlit==1.37.0

基础任务

创建目录&脚本

mkdir -p /root/demo
touch /root/demo/cli_demo.py

编辑脚本内容

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM


model_name_or_path = "/root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b"

tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True, device_map='cuda:0')
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='cuda:0')
model = model.eval()

system_prompt = """You are an AI assistant whose name is InternLM (书生·浦语).
- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.
- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.
"""

messages = [(system_prompt, '')]

print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")

while True:
    input_text = input("\nUser  >>> ")
    input_text = input_text.replace(' ', '')
    if input_text == "exit":
        break

    length = 0
    for response, _ in model.stream_chat(tokenizer, input_text, messages):
        if response is not None:
            print(response[length:], flush=True, end="")
            length = len(response)

执行脚本:

python /root/demo/cli_demo.py

效果如下:
在这里插入图片描述

进阶任务

使用 LMDeploy 完成 InternLM-XComposer2-VL-1.8B 的部署

克隆代码

cd /root/demo
git clone https://github.com/InternLM/Tutorial.git

安装依赖

conda activate demo
pip install lmdeploy[all]==0.5.1
pip install timm==1.0.7

启动服务

lmdeploy serve gradio /share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-1_8b --cache-max-entry-count 0.1

端口映射

ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 你的 ssh 端口号

效果如下
在这里插入图片描述
在这里插入图片描述

使用 LMDeploy 完成 InternVL2-2B 的部署

启动服务

conda activate demo
lmdeploy serve gradio /share/new_models/OpenGVLab/InternVL2-2B --cache-max-entry-count 0.1

效果如下
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

langchain实现大模型结构化输出

文章目录 前言大模型对话函数返回列表格式返回对象类型返回对象格式(信息抽取)返回json格式做选择题(在给定答案中选一个答案) 前言 这里大模型使用GLM4。 结构化输出的稳定性与大模型的能力挂钩 听话的就容易出 不听话的就容易报…

SQL布尔盲注

目录 1 布尔盲注 2布尔盲注流程 2.1输入id进行测试 2.2判断注入类型 2.3爆数据库名 2.4爆表名 2.5爆字段名 2.6查询数据 1 布尔盲注 布尔盲注就是在SQL注入过程中,SQL语句执行后,查询到的数据不能回显到前端页面,如果正确执行了构造的…

连接一切:Web3如何重塑物联网的未来

传统物联网的挑战 物联网(IoT)正在迅速改变我们的世界,通过将各种设备连接到互联网,它使得设备能够相互交流,提供智能化的服务和解决方案。然而,随着物联网的迅猛发展,安全性、隐私保护和设备互…

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化

C primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化 C primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化 17.5 内核格式化 程序清单 17.21 strout.cpp 文章目录 C primer plus 第17 章 输入、输…

第41届CCF

第41届CCF中国数据库学术会议 NDBC2024中国乌鲁木齐 《电信领域数据库新需求与挑战》分论坛介绍 2024年08月09日上午09:00-12:30 电信领域进入算力网络时代,数据库国产化需求迫切,对数据库可用性、扩展性、一体化、多模、跨域传输和调度等提出新的要求。基于此,本论坛重点讨…

UE5 右键菜单缺少Generate Visual Studio project files

前言 在安装完毕 ue5 后,看到别人右键菜单有 多出来的三个选项 ,但是我却没有,如下图: 解决方式 1、在 “C:\Program Files (x86)\Epic Games\Launcher\Engine\Binaries\Win64” 路径下有 UnrealVersionSelector.exe 文件。 …

fme从json中提取位置到kml中

fme从json中提取位置到kml中 简单参考,我自己要用的,越弄越复杂。 概述-模板总体结构 数据就是官方提供的数据,模板的基本节结构是读模块+转换器+写模块,最近爬取一些json文件,用到了。 1.使用json读模块读取数据 首先检查一下源数据 使用文本打开数据集,可以看到非缩…

压电雨量传感器的工作原理

型号推荐:云境天合TH-Y1】压电动能式雨量计通过雨滴撞击传感器产生的微小形变,将机械能转化为电能。这种转化过程基于压电效应,即某些材料在受到压力作用时会产生电荷,从而产生电信号。雨滴撞击传感器时,传感器发生形变…

写给大模型新人的经验,刷到少走三年弯路!

这篇文章,我将结合自己在大模型领域的经验,给大家详细聊聊新人应该如何转行大模型赛道? 比如大模型都有哪些方向?各方向的能力要求和岗位匹配?新手转行大模型常踩的坑和常见的误区?以及入行大模型最顺滑的…

扩散模型系列笔记(一)——DDPM

直观理解 扩散模型分为前向过程(扩散过程,Data → \to →Noise)和后向过程(生成过程或逆扩散过程,Noise → \to →Data)。在前向过程中,对于每一个观测样本,不断向样本中添加少量噪…

智能编程新纪元:腾讯AI代码助手的高效编程体验

智能编程新纪元:腾讯AI代码助手的高效编程体验 智能编程新纪元:腾讯AI代码助手的高效编程体验引言一、配置开发环境二、AI助手实现高效编程2.1 AI助手自动补全2.2 AI助手实现编程思维2.3 AI助手高效注解2.4 AI助手打破语言壁垒 三、帮助和提升四、优化和…

【CSS入门】第一课 - CSS内容都可以写在哪里?

从这一小节开始,我们开始学习CSS的内容。之前都是学习的HTML标签,还用几节课的时间做了纯HTML标签的实战。 但是只用纯HTML标签做出来的东西呢,不是那么好看,而且你看那么多网站,没有哪个网站只用纯HTML标签做东西的&…

游戏加速器推荐

游戏加速器推荐,玩游戏用什么加速器!我得给你推荐一款我常用的。 首先呢,就是深度加速器,它针对目前手游网游的游戏加速效果特别棒,而且界面也很友好。 另外,还有深度加速器,这款加速器不仅支持…

springboot青少年科普平台-计算机毕业设计源码76194

摘 要 对于搭建一个青少年科普平台,您可以考虑使用Spring Boot作为后端框架。Spring Boot是一个能够简化Spring应用开发的框架,能够帮助您快速搭建稳定、高效的后端服务。您可以利用Spring Boot的特性来构建一个可靠的数据服务,用于展示和传播…

为什么稳定的开关电源仍可能振荡

开关模式调节器 开关模式调节器的功能是尽可能高效地将输入电压转换为稳定的恒定输出电压。 此过程会有一些损失,其效率可衡量为 ηPOUTPIN?PINPOUTη→VINIIN(1)VOUTIOUTη?IINVOUTIOUTη/VIN 图 1. 输入电流与输入电压的关系。 图 2. 添加了 12 V 处的切线。…

C++-类与对象基础

一,类的定义 1.1类定义格式 class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为mian类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者…

【麒麟】多种方法修改MAC地址

原文链接:【麒麟】多种方法修改MAC地址 Hello,大家好啊!今天给大家带来一篇关于在麒麟桌面操作系统上多种方法修改MAC地址的文章。MAC地址是网络接口卡的物理地址,有时我们需要修改它以实现特定的网络配置需求。本文将详细介绍几种…

VS2022中打印中文乱码

我们在使用VS编写C语言代码的时候,我们可能遇见用printf打印中文出现乱码的情况,如下: 下面我们来讲一下怎么解决这种问题: 出现这种现象是因为你使用的编码设置不对; 1.我们首先打开文件标签,看看是否有…

为什么我要从测试经理转行到产品经理?

本文来聊一下我转产品经理的心路历程。 我从大学毕业做的就是软件测试,简单点说就是把别人设计的产品别人码的代码 我们或手工或自动化 的方式检查是否有逻辑问题,是否符合需求设计。某一天我突然对自己的工作不那么热爱,难道一辈子就干这个…

C4D学习笔记

C4D学习笔记 技巧使用对称面的两边会有问题,很生硬洗面奶瓶盖凹槽洗面奶瓶子尾部接缝 常用功能在一个线创建一个平面在圆面内家一圈线(KL循环切割)在某个面向内加一圈线某个模式切换,选中所有(按着Ctrl键)焊接&#xf…