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

书生·浦语大模型全链路开源体系-第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

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

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

相关文章

Echarts实现高亮某一个点

背景 接口会返回所有点的数据,以及最优点的数据。产品要求在绘制图形后,高亮最优点,添加一个红色的样式,如图。点击select选择器时,可选择不同指标和花费对应的关系。 以下介绍实现思路 1、自定义配置选择器的数据源…

稀碎从零算法笔记Day36-LeetCode:H指数

有点绕的一个题,题目描述的有点奇怪(可以看下英文?) 题型:数组、模拟 链接:274. H 指数 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个整数数组 citations &am…

ArcGIS Pro怎么进行挖填方计算

在工程实施之前,我们需要充分利用地形,结合实际因素,通过挖填方计算项目的标高,以达到合理控制成本的目的,这里为大家介绍一下ArcGIS Pro中挖填方计算的方法,希望能对你有所帮助。 数据来源 教程所使用的…

Android仿高德首页三段式滑动

最近发现很多app都使用了三段式滑动,比如说高德的首页和某宝等物流信息都是使用的三段式滑动方式,谷歌其实给了我们很好的2段式滑动,就是BottomSheet,所以这次我也是在这个原理基础上做了一个小小的修改来实现我们今天想要的效果。…

13.5k star, 免费开源 Markdown 编辑器

13.5k star, 免费开源 Markdown 编辑器 分类 开源分享 项目名: Editor.md -- Markdown 编辑器 Github 开源地址: https://github.com/pandao/editor.md 在线测试地址: Editor.md - 开源在线 Markdown 编辑器 完整实例: HTML Preview(mark…

LLaMA-Factory微调(sft)ChatGLM3-6B保姆教程

LLaMA-Factory微调(sft)ChatGLM3-6B保姆教程 准备 1、下载 下载LLaMA-Factory下载ChatGLM3-6B下载ChatGLM3windows下载CUDA ToolKit 12.1 (本人是在windows进行训练的,显卡GTX 1660 Ti) CUDA安装完毕后&#xff0c…

iPhone设备中查看应用程序崩溃日志的最佳实践与经验分享

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么? 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志,以便调查崩溃的原因。我们将展示三种不同的…

RT-Thread 学习二:基于 RT Thread studio (联合cubemx)的stm32l475VETX pwm 呼吸灯实验

1、基于芯片创建呼吸灯项目 基于rtthread studio 可以帮助我们创建好底层驱动,我们只需要做简单配置 2、配置pwm 设备 基于芯片生成的项目默认只打开了 uart 和 pin的驱动,对于其它硬件驱动需要自行配置; 对于pwm和设备的驱动分为四步&am…

深入理解数据结构——堆

前言: 在前面我们已经学习了数据结构的基础操作:顺序表和链表及其相关内容,今天我们来学一点有些难度的知识——数据结构中的二叉树,今天我们先来学习二叉树中堆的知识,这部分内容还是非常有意思的,下面我们…

将 Elasticsearch 向量数据库引入到数据上的 Azure OpenAI 服务(预览)

作者:来自 Elastic Aditya Tripathi Microsoft 和 Elastic 很高兴地宣布,全球下载次数最多的向量数据库 Elasticsearch 是公共预览版中 Azure OpenAI Service On Your Data 官方支持的向量存储和检索增强搜索技术。 这项突破性的功能使你能够利用 GPT-4 …

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】 题目描述:解题思路一:从左下角或者右上角元素出发,来寻找target。解题思路二:右上角元素,代码解题思路三:暴力也能过解题思路四:二分…

HDLbits 刷题 -- Alwaysblock2

学习: For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always (*)Clocked: always (posedge clk) Clocked always blocks create a blob of combinational logic just like combinational always blocks, but…

蓝桥杯真题:成绩统计

这题思路简单,但是输出结果的位置容易出错,题目要求四舍五入,所以要用Math.round()的方法

【MySQL】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

3、jvm基础知识(三)

如何判断堆上的对象没有被引用? 常见的有两种判断方法:引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。 引用计数法的优点是实现简单,缺点有两点&#xff1…

软件工程知识体系 Chapter3 软件构造

介绍 软件构造一词指的是通过编码、验证、单元测试、集成测试和调试等组合详细创建工作软件的过程。 软件构建知识领域(KA)与所有其他KA都有关联,但它与软件设计和软件测试的关联最为紧密,因为软件构建过程涉及重要的软件设计和…

Kubernetes(K8s)技术解析

1. K8s简介 Kubernetes(简称K8s)是一个开源的容器编排平台,旨在简化容器化应用程序的部署、扩展和管理。为开发者和运维人员提供了丰富的功能和灵活的解决方案,帮助他们更轻松地构建、部署和管理云原生应用程序。以下是关于Kubern…

vscode批量编辑行头行尾

ctrlf查找那儿将最后的星星选中即为正则表达式模式 ^ 表示行头$ 表示行尾 例如,在行首添加大括号{ : vsCode中可以使用正则表达式模式找到换行。指定字符替换成换行,在替换字符串里将换行用\n表示就可以了。 查找换行符也是在查找那儿使用\…

RabbitMQ Tutorial

参考API : Overview (RabbitMQ Java Client 5.20.0 API) 参考文档: RabbitMQ: One broker to queue them all | RabbitMQ 目录 结构 Hello World consumer producer 创建连接API解析 创建连接工厂 生产者生产消息 消费者消费消息 队列声明 工作队列Work Queues 公平…

【QT+QGIS跨平台编译】056:【pdal_arbiter+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal_arbiter介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_arbiter介绍 pdal_arbiter是 PDAL 项目的一个库,用于帮助管理应用程序运行在 EC2 实例上的 AWS 凭证。 当应用程序需要调用 AWS API 时,它们必须使用 AWS 凭据对 AP…