【InternLM】书生-浦语大模型demo搭建服务接口部署本地映射

目录

  • 前言
  • 一、InternLM大模型介绍
    • 1-1、大模型简介
    • 1-2、InternLM大模型简介
      • 1-2-1、InternLM-7B
      • 1-2-2、InternLM-20B
  • 二、从0开始搭建InternLM-Chat-7B 智能对话 Demo
    • 2-0、环境搭建
    • 2-1、创建虚拟环境
    • 2-2、导入所需要的包
    • 2-3、模型下载
    • 2-4、代码克隆
    • 2-5、终端运行
  • 三、服务器接口部署
    • 3-0、LMDeploy介绍:
    • 3-1、环境安装&开启学术加速
    • 3-2、启动
    • 3-3、映射
    • 3-4、请求示例
  • 附录
    • 1、配置本地端口(服务器端口映射到本地)
  • 总结


前言

一、InternLM大模型介绍

1-1、大模型简介

大模型:大模型是指在机器学习和人工智能领域中,具有大规模参数和复杂结构的模型。这些模型通常由数百万甚至数十亿、数千亿个参数组成,可以用来解决复杂的任务和问题,如自然语言处理、图像识别、语音识别等。

特点和应用场景

  • 大规模参数:大模型通常具有庞大的参数量,这使得它们能够处理更加复杂的任务和问题。这些参数可以通过训练过程来学习和调整,以提高模型的性能和准确度。
  • 复杂结构:大模型通常由多个神经网络层组成,这些层之间存在复杂的连接和计算关系。这种复杂结构可以帮助模型更好地理解和处理输入数据,从而提高模型的表现能力。
  • 应用场景:大模型在各种领域都有广泛的应用。在自然语言处理领域,大模型可以用于机器翻译、文本生成、情感分析等任务。在图像识别领域,大模型可以用于物体检测、图像分类、人脸识别等任务。在语音识别领域,大模型可以用于语音转文字、语音合成等任务。

目前国内一些比较流行的大模型

  • 上海人工智能实验室(书生通用大模型)
  • 抖音(云雀大模型)
  • 智谱 AI(GLM 大模型)
  • 中科院(紫东太初大模型)
  • 百川智能(百川大模型)
  • 商汤(日日新大模型)
  • MiniMax(ABAB 大模型)

在这里插入图片描述

1-2、InternLM大模型简介

介绍: InternLM 是一个开源的轻量级训练框架,旨在支持模型预训练,而无需广泛的依赖关系。通过单一代码库,它支持在具有数千个 GPU 的大规模集群上进行预训练,并在单个 GPU 上进行微调,同时实现显著的性能优化。InternLM 在 1024 个 GPU 上训练期间实现了近 90% 的加速效率。下边分别介绍7B和20B的模型

在这里插入图片描述

1-2-1、InternLM-7B

介绍:InternLM-7B基础模型拥有70亿参数,并且有为实际场景定制的聊天模型,支持8k的上下文窗口长度。

使用开源评估工具OpenCompass对其评估结果如下

在这里插入图片描述

1-2-2、InternLM-20B

介绍:在超过2.3T token的数据上进行了预训练,包括高质量英语、中文以及代码数据。chat版本还经过了SFT和RLHF训练,与7B模型相比,数据进行了更高质量的清晰,补充了更多数据,并且支持16k的上下文长度。

使用开源评估工具OpenCompass对其评估结果如下
在这里插入图片描述

二、从0开始搭建InternLM-Chat-7B 智能对话 Demo

2-0、环境搭建

环境:租用autoDL,环境选torch1.11.0,ubuntu20.04,python版本为3.8,cuda版本为11.3,使用v100来进行实验。
在这里插入图片描述
在这里插入图片描述

2-1、创建虚拟环境

bash # 请每次使用 jupyter lab 打开终端时务必先执行 bash 命令进入 bash 中

# 创建虚拟环境
conda create -n internlm

# 激活虚拟环境
conda activate internlm

2-2、导入所需要的包

# 升级pip
python -m pip install --upgrade pip

# 下载速度慢可以考虑一下更换镜像源。
# pip config set global.index-url https://mirrors.cernet.edu.cn/pypi/web/simple

pip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1

2-3、模型下载

概述:使用魔搭社区下载模型,使用到了snapshot_download函数,第一个参数为模型名称,参数 cache_dir 为模型的下载路径(我这里的路径在/root/model下),将下列代码写入到一个py文件中,使用命令:python 文件名 来执行下载。

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-chat-7b', cache_dir='/root/model', revision='v1.0.3')

下载图片如下:需要预留大约20G的空间。
在这里插入图片描述

2-4、代码克隆

# 创建目录
cd root
mkdir code

# 克隆项目
cd /root/code
git clone https://gitee.com/internlm/InternLM.git

注意:克隆好项目后需要进入/root/code/InternLM/web_demo.py中,将其中的29和33行的模型替换为本地模型,我这里的路径为/root/model/Shanghai_AI_Laboratory/internlm-chat-7b
在这里插入图片描述

2-5、终端运行

我们可以在 /root/code/InternLM 目录下新建一个 cli_demo.py 文件,将以下代码填入其中,之后使用python命令执行脚本

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

# 填模型路径
model_name_or_path = "/root/model/Shanghai_AI_Laboratory/internlm-chat-7b"

# 加载预训练的分词器、预训练的模型。
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
# 
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
# 评估模式
model = model.eval()

messages = []

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

while True:
    input_text = input("User  >>> ")
    if input_text == "exit":
        break
    response, history = model.chat(tokenizer, input_text, history=messages)
    messages.append((input_text, response))
    print(f"robot >>> {response}")

交互界面如下
在这里插入图片描述

三、服务器接口部署

3-0、LMDeploy介绍:

LMDeploy 是一个用于压缩、部署、服务 LLM 的工具包,由 MMRazor 和 MMDeploy 团队开发。它具有以下核心功能

  • 高效推理引擎(TurboMind):开发持久批处理(又称连续批处理)、阻塞KV缓存、动态拆分融合、张量并行、高性能CUDA内核等关键特性,确保LLM推理的高吞吐和低延迟。

  • 交互式推理模式:通过在多轮对话过程中缓存注意力的k/v,引擎会记住对话历史,从而避免历史会话的重复处理。

  • 量化:LMDeploy 支持多种量化方法和量化模型的高效推理。量化的可靠性已在不同尺度的模型上得到验证。

在这里插入图片描述

3-1、环境安装&开启学术加速

概述:先启动环境,然后安装lmdeploy部署框架以及相关依赖包。

bash # 请每次使用 jupyter lab 打开终端时务必先执行 bash 命令进入 bash 中

# 激活虚拟环境
conda activate internlm

python3 -m pip install lmdeploy

pip install shortuuid
pip install fastapi
pip install uvicorn

在autodl上开启学术加速:帮助文档

source /etc/network_turbo

在这里插入图片描述

3-2、启动

lmdeploy serve api_server /root/model/Shanghai_AI_Laboratory/internlm-chat-7b --model-name internlm-chat-7b

界面如下
在这里插入图片描述

3-3、映射

第一步::点击自定义服务,下载桌面工具。如下所示:
在这里插入图片描述

第二步:输入SSH指令、密码、以及端口号。
在这里插入图片描述

第三步:点击下方的访问地址,打开fastapi界面。
在这里插入图片描述

3-4、请求示例

# 写python代码请求接口

import requests

# 定义请求URL和要发送的数据
url = 'http://localhost:23333/v1/chat/interactive'
data = {
  "prompt": "你好",
  "session_id": -1,
  "interactive_mode": False,
  "stream": False,
  "stop": False,
  "request_output_len": 512,
  "top_p": 0.8,
  "top_k": 40,
  "temperature": 0.8,
  "repetition_penalty": 1,
  "ignore_eos": False
}

# 发送POST请求
response = requests.post(url, json=data)

# 获取响应数据
result = response.json()

# 打印结果
print(result)

结果
在这里插入图片描述

附录

1、配置本地端口(服务器端口映射到本地)

  • 步骤一:本地打开命令行窗口生成公钥,全点击回车就ok(不配置密码)。
# 使用如下命令
ssh-keygen -t rsa

默认放置路径如下图所示
在这里插入图片描述

  • 步骤二:打开默认放置路径,复制公钥,在远程服务器上配置公钥。
    在这里插入图片描述

  • 步骤三:本地终端输入命令

# 6006是远程端口号(如下图所示,远程启动的端口号为6006),33447是远程ssh连接的编号,
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 33447

如下图所示
在这里插入图片描述
本地打开如下图所示
在这里插入图片描述

参考文章:
词云制作网站.
轻松玩转书生·浦语大模型趣味 Demo.
InternLM-Github.


总结

睡到自然醒的周六✿✿ヽ(°▽°)ノ✿

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

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

相关文章

真核微生物基因组质量评估工具EukCC的安装和详细使用方法

介绍: GitHub - EBI-Metagenomics/EukCC: Tool to estimate genome quality of microbial eukaryotes 安装: docker: docker pull microbiomeinformatics/eukcc 推荐conda 环境: conda install -c conda-forge -c bioconda …

Python+Torch+FasterCNN网络目标检测识别

程序示例精选 PythonTorchFasterCNN网络目标检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonTorchFasterCNN网络目标检测识别》编写代码,代码整洁,规…

Java-网络爬虫(二)

文章目录 前言一、WebMagic二、使用步骤1. 搭建 Maven 项目2. 引入依赖 三、入门案例四、核心对象&组件1. 核心对象SipderRequestSitePageResultItemsHtml(Selectable) 2. 四大组件DownloaderPageProcessorSchedulerPipeline 上篇:Java-网…

物联网的感知层、网络层与应用层分享

物联网的概念在很早以前就已经被提出,20世纪末期在美国召开的移动计算和网络国际会议就已经提出了物联网(Internet of Things)这个概念。 最先提出这个概念的是MIT Auto-ID中心的Ashton教授,他在研究RFID技术时,便提出了结合物品编码、互联网…

打造清晰的日志管理策略:如何在 NestJS 中集成 winston 高级日志系统

前言 在Web应用程序的开发过程中,日志管理是不可或缺的一部分。日志可以帮助我们了解应用程序的运行状态,监控系统行为,以及在出现问题时快速定位和解决问题。 对于使用NestJS框架的项目来说,集成一个高效、可扩展的日志系统尤为…

听GPT 讲Rust源代码--compiler(25)

File: rust/compiler/rustc_target/src/spec/mod.rs 在Rust的源代码中,rust/compiler/rustc_target/src/spec/mod.rs文件的作用是定义和实现有关目标平台的规范。 SanitizerSet是一个结构体,用于表示目标平台上存在的sanitizer集合。 TargetWarnings是一…

基于OpenCV的透视变换

基础概念 透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。 原理:将二维的图片投影到一个三维视平面上,然后再转换到二维坐标下&#…

Mongodb使用指定索引删除数据

回顾Mongodb删除语法 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中&#xff0c;除了指定过滤器外&#xff0c;还可以指定写入策略&#xff0c;字符序和使用的索引。 …

《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计

2-15 编写一个程序&#xff0c;运行时提示输入一个数字&#xff0c;再把这个数字显示出来。 #include <iostream>using namespace std;int main() {// 提示用户输入数字cout << "请输入一个数字: ";// 用于存储用户输入的数字的变量double number;// 从…

Apache Paimon:Streaming Lakehouse is Coming

摘要&#xff1a;本文整理自阿里云智能开源表存储负责人&#xff0c;Founder of Paimon&#xff0c;Flink PMC 成员李劲松&#xff08;花名&#xff1a;之信&#xff09;、同程旅行大数据专家&#xff0c;Apache Hudi & Paimon Contributor 吴祥平、汽车之家大数据计算平台…

Nginx快速入门:worker、master进程的作用和热部署原理(十)

0. 引言 我们通过查询nginx进程&#xff0c;可以发现nginx有两个进程&#xff1a;worker和master。一个程序启动了两个进程&#xff0c;那么这两个进程的作用和区别是什么呢&#xff1f;nginx又是如何利用这两个进程进行工作的呢&#xff1f;nginx不停机热部署又是如何实现的&…

AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

通俗易懂的15个Java Lambda表达式案例

文章目录 1. **实现Runnable接口**&#xff1a;2. **事件监听器**&#xff08;如Swing中的ActionListener&#xff09;&#xff1a;3. **集合遍历**&#xff08;使用forEach方法&#xff09;&#xff1a;4. **过滤集合**&#xff08;使用Stream API&#xff09;&#xff1a;5. …

OS_lab——bochs源码的编译与安装

1. 实验环境VMware station 15 Ubuntu 14.04.6 32位。2. 实验步骤2.1 安装虚拟机&#xff0c;并在虚拟机根目录下编译并安装bochs环境。 2.2 使用bochs自带工具bximage创建虚拟软驱。 2.3 编写引导程序boot.asm并用nasm编译得到引导文件boot.bin和boot.com。 2.4 修改bochs…

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV&#xff08;Emgu Computer Vision&#xff09;是一个开源的、基于.NET框架的计算机视觉库&#xff0c;它提供了对OpenCV&#xff08;开源计算机视觉库&#xff09;的封装。EMGU CV使得在.NET应用程序…

二刷Laravel 教程(用户注册)总结Ⅳ

一、显示用户信息 1&#xff09;resource Route::resource(users, UsersController); 相当于下面这7个路由 我们先用 Artisan 命令查看目前应用的路由&#xff1a; php artisan route:list 2&#xff09; compact 方法 //我们将用户对象 $user 通过 compact 方法转化为一个关联…

Linux-v4l2框架

框架图 从上图不难看出&#xff0c;v4l2_device作为顶层管理者&#xff0c;一方面通过嵌入到一个video_device中&#xff0c;暴露video设备节点给用户空间进行控制&#xff1b;另一方面&#xff0c;video_device内部会创建一个media_entity作为在media controller中的抽象体&a…

亲,你相信数据吗?

对于这个问题&#xff0c;我们首先要看一下数据的属性&#xff0c;数据本身是中性的&#xff0c;只是信息的一个载体&#xff0c;从这个属性定义来看&#xff0c;我们是不能盲目相信或者不相信数据的。相不相信数据&#xff0c;其实是数据可靠性的问题&#xff0c;而数据可靠性…

我的NPI项目之设备系统启动(二) -- 系统启动阶段和分区的区别

系统启动的就几大阶段&#xff1a; 基于高通平台的Android OS启动过程&#xff0c;简单的说&#xff0c;可以分为一下几个部分&#xff1a; 之前一个比较老的平台大概是这样&#xff1a; 现在比较新的5G平台&#xff1a; 差别在这里&#xff0c;重点了解一下新平台的情况。xb…

大模型实战笔记02——大模型demo

大模型实战笔记02——大模型demo 1、大模型及InternLM模型介绍 2、InternLM-Chat-7B智能对话Demo 3、Lagent智能体工具调用Demo 4、浦语灵笔图文创作理解Demo 5、通用环境配置 注 笔记图片均为视频截图 笔记课程视频地址&#xff1a;https://www.bilibili.com/video/BV1Ci4y1…