书生·浦语大模型全链路开源体系-第2课

news2024/11/22 21:24:40

书生·浦语大模型全链路开源体系-第2课

  • 书生·浦语大模型全链路开源体系-第2课
    • 相关资源
    • 实战部署InternLM2-Chat-1.8B模型
      • 准备环境
      • 下载模型
      • 运行案例
    • 实战部署InternLM2-Chat-7B模型
      • 准备环境
      • 下载模型及案例代码
      • 运行cli案例代码
      • 运行web案例代码
      • 配置SSH公钥信息
      • 配置SHH隧道连接
    • 熟悉 Huggingface 下载功能
      • 通过代码下载指定文件
      • 使用命令下载全部文件
    • Lagent 工具调用
    • 浦语·灵笔2 的 图文创作 及 视觉问答 部署
      • 图文创作
      • 视觉问答图片理解实战

书生·浦语大模型全链路开源体系-第2课

为了推动大模型在更多行业落地应用,让开发人员更高效地学习大模型的开发与应用,上海人工智能实验室重磅推出书生·浦语大模型实战营,为开发人员提供大模型学习和开发实践的平台。
本文是书生·浦语大模型全链路开源体系-第2课的课程实战。

相关资源

  • InternLM项目地址

https://github.com/InternLM/InternLM

  • InternLM2技术报告

https://arxiv.org/pdf/2403.17297.pdf

  • 书生·万卷 数据

https://opendatalab.org.cn/

  • 课程链接

https://www.bilibili.com/video/BV1AH4y1H78d/

实战部署InternLM2-Chat-1.8B模型

准备环境

首先,通过Intern Studio进入开发机,进入开发机后,在Terminal中输入环境配置命令,配置一个新的环境,激活虚拟环境,安装必要的依赖包。

studio-conda -o internlm-base -t demo
conda activate demo

pip install huggingface-hub==0.17.3
pip install transformers==4.34
pip install psutil==5.9.8
pip install accelerate==0.24.1
pip install streamlit==1.32.0
pip install matplotlib==3.8.3
pip install modelscope==1.9.5
pip install sentencepiece==0.1.99

image-20240401153302486
image-20240401154341810
image-20240401154537193

下载模型

创建路径,用于存放案例涉及的所有材料。

mkdir -p /root/demo
cd /root/demo

创建文件download_mini.py,用于下载模型。

import os
from modelscope.hub.snapshot_download import snapshot_download

# 创建保存模型目录
os.system("mkdir /root/models")

# save_dir是模型保存到本地的目录
save_dir="/root/models"

snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-1_8b", 
                  cache_dir=save_dir, 
                  revision='v1.1.0')

执行命令,下载模型。

python download_mini.py

image-20240401160834527

运行案例

创建文件cli_demo.py,用于运行案例。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM


model_name_or_path = "/root/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 cli_demo.py

image-20240401161023656.png

实战部署InternLM2-Chat-7B模型

准备环境

首先,通过Intern Studio进入开发机,进入开发机后,在Terminal中输入环境配置命令,配置一个新的环境。

bash /root/share/install_conda_env_internlm_base.sh internlm-demo

image-20240331222421669.png
image-20240331222422669.png
image-20240331222459711.png

环境自动配置完成后,通过命令激活新的虚拟环境。

conda activate internlm-demo

image-20240331222555114.png

在虚拟环境中,安装必要的依赖包。

python -m pip install --upgrade pip
pip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.32.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1

image-20240331222832290.png

下载模型及案例代码

在开发机中的/root/share目录下,默认已经为我们下载好了常用的模型,直接复制即可,无需重复下载。复制模型、下载案例代码。

mkdir -p /root/model/InternLM
cp -r /root/share/temp/model_repos/internlm-chat-7b /root/model/InternLM/
mkdir -p /root/code
cd /root/code
git clone https://gitee.com/internlm/InternLM.git
cd InternLM
git checkout 3028f07cb79e5b1d7342f4ad8d11efad3fd13d17

image-20240331223956793.png

运行cli案例代码

创建文件cli_demo.py,用于运行案例,将代码中的模型路径指定到新复制的模型目录。

image-20240331225921254.png
image-20240331230214717.png
image-20240331230402693.png

运行web案例代码

除了在控制台运行案例代码,还可以直接运行web_demo.py,运行之前将代码中的模型路径指定到新复制的模型目录。

image-20240331224217210.png

切换到VSCode界面,并通过命令行运行命令启动程序。

streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006

image-20240331224807134.png
image-20240331225323133.png

配置SSH公钥信息

由于开发机没有提供独立的公网IP地址,并且程序启动地址是127.0.0.1,因此无法通过本地浏览器直接访问开发机中启动的程序,需要通过隧道方式进行访问。首先,配置SSH公钥。

image-20240331234056351.png

将新生成的公钥信息添加到Intern Studio中。

image-20240331232249638.png
image-20240331232618330.png
image-20240331232657438.png

配置SHH隧道连接

公钥信息添加成功后,可以通过SSH信息查看开发机对应的端口信息。

image-20240331231601330.png

通过以下命令,建立本地客户端与云端开发机之间的隧道连接。

ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 40314

image-20240331234057351.png

最后,通过浏览器访问案例。

image-20240331234636610.png

熟悉 Huggingface 下载功能

使用 huggingface_hub Python 包,下载 InternLM2-Chat-7B 的 config.json 文件到本地。

通过代码下载指定文件

创建文件download_model.py,通过以下代码,下载模型中的指定文件。

import os
from huggingface_hub import hf_hub_download

# 创建保存模型目录
os.system("mkdir /root/models")

# save_dir是模型保存到本地的目录
save_dir="/root/models"

hf_hub_download(repo_id="internlm/internlm2-chat-7b", cache_dir=save_dir, filename="config.json")

image-20240401171754800.png

使用命令下载全部文件

export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download --local-dir-use-symlinks False internlm/internlm2-chat-7b --local-dir /root/cache/huggingface/hub/internlm/internlm2-chat-7b

image-20240401092915851.png
image-20240401094408758.png

Lagent 工具调用

cd /root/code
git clone https://gitee.com/internlm/lagent.git
cd lagent
git checkout 581d9fb8987a5d9b72bb9ebd37a95efd47d479ac
pip install -e .

image-20240401094707540.png
image-20240401095231870.png

streamlit run examples/internlm2_agent_web_demo_hf.py --server.address 127.0.0.1 --server.port 6006

image-20240401095531870.png
image-20240401103120144.png

浦语·灵笔2 的 图文创作 及 视觉问答 部署

图文创作

pip install timm==0.4.12 sentencepiece==0.1.99 markdown2==2.4.10 xlsxwriter==3.1.2 gradio==4.13.0 modelscope==1.9.5

image-20240401104017991.png

git clone https://gitee.com/internlm/InternLM-XComposer.git
cd /root/code/InternLM-XComposer
git checkout f31220eddca2cf6246ee2ddf8e375a40457ff626
mkdir -p /root/models
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-7b /root/models/internlm-xcomposer2-7b
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-7b /root/models/internlm-xcomposer2-vl-7b

python examples/gradio_demo_composition.py \
--code_path /root/models/internlm-xcomposer2-7b \
--private \
--num_gpus 1 \
--port 6006

image-20240401105712401.png
image-20240401111803266.png
image-20240401112050353.png
image-20240401112201668.png
image-20240401112427524.png
image-20240401112543180.png
image-20240401112629484.png

视觉问答图片理解实战

cd /root/code/InternLM-XComposer
python examples/gradio_demo_chat.py  \
--code_path /root/models/internlm-xcomposer2-vl-7b \
--private \
--num_gpus 1 \
--port 6006

image-20240401115005800.png
image-20240401115634804.png

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

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

相关文章

前端之CSS——网页的皮肤!!

目录 一、CSS简单介绍 二、css内容 2.1 css的编写方式 2.2 css选择器 2.3 样式属性 2.4 css包围盒 2.5 css中的display 2.6 css中的定位 2.7 css中的浮动与清除 2.7 弹性容器 2.8 字体图标 2.9 …

R语言,数据类型转换

原文链接:R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天,再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢? 我们在使用R语言做数据分析时,会一直对数据进行不同类型的转换,有时候…

Linux安装nginx保姆级教程

文章目录 前言一、nginx安装(保姆级教程)1.安装nginx依赖2.安装wget3.创建nginx安装目录4.下载nginx5.查看下载好的nginx6.解压缩7.查看当前目录下的文件→进入nginx-1.8.0目录→查看当前目录下的文件8.安装nginx9.查看nginx安装目录并启动nginx10.网络请…

https安全性 带给im 消息加密的启发

大家好,我是蓝胖子,在之前# MYSQL 是如何保证binlog 和redo log同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现方式之一。今天来看看我们能够从http…

VTK中polydata的属性数据结构表示和用法

vtk中通过vtkDataArray进行数据的存储,通过vtkDataObject进行可视化数据的表达,在vtkDataObject内部有一个vtkFieldData的实例,负责对数据的表达: vtkFieldData存储数据的属性数据,该数据是对拓扑结构和几何结构信息的…

项目管理计划

《项目管理计划》 1.项目背景说明 2.项目目标和范围 3.项目组织架构 4.项目进度管理办法 5.项目沟通管理 6.项目风险管理 软件开发全套资料包获取进主页或文末个人名片直接获取。

Excel 数据-分列的三个经常用法

Case 1 :有时候数据导出时如果没有电子表格的话,只能导出本地文件,如下图情况: 可以使用数据-分列处理数据: 原来是因为SAP导出数据没有完成的原因,或者关闭Excel重新打开试一下。 重新打开后可以输入了 C…

日记本(源码+文档)

日记本(小程序、ios、安卓都可部署) 文件包含内容程序简要说明功能项目截图客户端首页日记列表 书写日记个人中心设置密码锁拨打客服热线修改信息退出登录登录页输入密码锁注册页 后端管理登录页首页管理员列表管理用户管理日记列表管理日记数据 文件包含…

2024年网络安全运营体系建设方案

以下是部分WORD内容,请您参阅。如需下载完整WORD文件,请前往星球获取: 网络安全运营监控工作整体构想 工作目标及原则 工作目标 为进一步落实强化公司网络安全保障,有效支撑公司数字化转型战略,建立健全公司网省两级协…

Tomcat调优总结

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例,讲解参数。 同时也得认识到一点,tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可以调优。 因此可以将…

无锡国家集成电路设计中心某公司的单锂小电机直流电机H桥驱动电路

H桥驱动 L9110S是一款直流电机驱动电路,适合单节锂电池应用。输出电流0.4A。价格约3毛。 推荐原因: 某些人应该知道这个地方,大多数人应该不知道这个地方,所以推荐一下。 这个地方去过几次,某公司与某方走的“近”&…

用Wireshark解码H.264

H264,你不知道的小技巧-腾讯云开发者社区-腾讯云 这篇文章写的非常好 这里仅做几点补充 init.lua内容: -- Set enable_lua to false to disable Lua support. enable_lua trueif not enable_lua thenreturn end-- If false and Wireshark was start…

31.2k star, 免费开源的白板绘图工具 tldraw

31.2k star, 免费开源的白板绘图工具 tldraw 分类 开源分享 项目名: tldraw -- 无限画布白板 Github 开源地址: https://github.com/tldraw/tldraw 在线测试地址: tldraw 文档地址: tldraw SDK tldraw 是一款开源免费的无限画布白板&…

【NC14326】Rails

题目 Rails 栈 翻译 由于原题是英文的,所以这里先翻译一下: PopPush市有一个著名的火车站。那里的山地多得令人难以置信。这个车站建于上个世纪。不幸的是,当时资金极为有限。只能建立一条地面轨道。此外,事实证明,火…

PurpleKeep:提供Azure管道以创建基础设施并执行Atomic测试

关于PurpleKeep PurpleKeep是一款功能强大的安全测试自动化工具,该工具能够通过提供Azure管道以创建基础设施,并帮助广大研究人员执行Atomic测试。 随着攻击技术种类的迅速增加,以及EDR(端点检测和响应)和自定义检测规…

[leetcode] 637. 二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值…

FMEA引领智能家居安全革新,打造无忧智能生活新纪元!

在智能家居日益普及的今天,如何确保家居安全成为消费者关注的焦点。本文将探讨如何通过FMEA(故障模式与影响分析)这一强大的质量管理工具,为智能家居赋能,打造安全无忧的智能生活新体验。 一、FMEA在智能家居领域的应用…

Electron的学习

目录 项目初始化可以看官网非常详细根路径创建.vscode文件夹主进程和渲染进程之前的通信ipcRenderer.send和ipcMain.on的使用ipcRenderer.invoke和ipcMain.handle的使用 切换主题模式文件拖放保存消息通知进度展示图标闪烁自定义菜单自定义右键菜单 项目初始化可以看官网非常详…

基于ArgoCD和Testkube打造GitOps驱动的Kubernetes测试环境

本文介绍了一项新工具,可以基于Gitops手动或者自动实现Kubernetes集群应用测试,确保集群的健康状态与Git仓库定义的一致。原文: GitOps-Powered Kubernetes Testing Machine: ArgoCD Testkube 简介:GitOps 云原生测试面临的挑战 现代云原生应…

Qt中出现中文乱码的原因以及解决方法

Qt专栏:http://t.csdnimg.cn/C2SDN 目录 1.引言 2.原因分析 3.源文件的编码格式修改方法 4.程序内部使用的默认编码格式修改方法 5.QString转std::string的方法 6.总结 1.引言 在编写Qt程序的时候,或多或少都可能遇到用QString时候,明明…