轻松玩转书生·浦语大模型趣味 Demo

1 大模型及 InternLM 模型简介

1.1 什么是大模型?

  大模型通常指的是机器学习或人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型。这些模型利用大量数据进行训练,并且拥有数十亿甚至数千亿个参数。大模型的出现和发展得益于增长的数据量、计算能力的提升以及算法优化等因素。这些模型在各种任务中展现出惊人的性能,比如自然语言处理、计算机视觉、语音识别等。这种模型通常采用深度神经网络结构,如 TransformerBERTGPT( Generative Pre-trained Transformer )等。

  大模型的优势在于其能够捕捉和理解数据中更为复杂、抽象的特征和关系。通过大规模参数的学习,它们可以提高在各种任务上的泛化能力,并在未经过大量特定领域数据训练的情况下实现较好的表现。然而,大模型也面临着一些挑战,比如巨大的计算资源需求、高昂的训练成本、对大规模数据的依赖以及模型的可解释性等问题。因此,大模型的应用和发展也需要在性能、成本和道德等多个方面进行权衡和考量。

1.2 InternLM 模型全链条开源

  InternLM 是一个开源的轻量级训练框架,旨在支持大模型训练而无需大量的依赖。通过单一的代码库,它支持在拥有数千个 GPU 的大型集群上进行预训练,并在单个 GPU 上进行微调,同时实现了卓越的性能优化。在 1024GPU 上训练时,InternLM 可以实现近 90% 的加速效率。

  基于 InternLM 训练框架,上海人工智能实验室已经发布了两个开源的预训练模型:InternLM-7BInternLM-20B

  Lagent 是一个轻量级、开源的基于大语言模型的智能体(agent)框架,支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能。通过 Lagent 框架可以更好的发挥 InternLM 的全部性能。

Lagent 框架图

  浦语·灵笔是基于书生·浦语大语言模型研发的视觉-语言大模型,提供出色的图文理解和创作能力,结合了视觉和语言的先进技术,能够实现图像到文本、文本到图像的双向转换。使用浦语·灵笔大模型可以轻松的创作一篇图文推文,也能够轻松识别一张图片中的物体,并生成对应的文本描述。

  上述提到的所有模型,都会带领大家一起体验哦!欢迎大家来给 InternLM: https://github.com/InternLM/InternLM/ 点点 star 哦!

2 InternLM-Chat-7B 智能对话 Demo

本小节我们将使用 InternStudio 中的 A100(1/4) 机器和 InternLM-Chat-7B 模型部署一个智能对话 Demo。

2.1 环境准备

InternStudio 平台中选择 A100(1/4) 的配置,如下图所示镜像选择 Cuda11.7-conda,如下图所示:

Alt text

接下来打开刚刚租用服务器的进入开发机,并且打开其中的终端开始环境配置、模型下载和运行 demo

Alt text

进入开发机后,在页面的左上角可以切换 JupyterLab终端VScode,并在终端输入 bash 命令,进入 conda 环境。如下图所示:

Alt text

进入 conda 环境之后,使用以下命令从本地克隆一个已有的 pytorch 2.0.1 的环境

然后使用以下命令激活环境

并在环境中安装运行 demo 所需要的依赖。

2.2 模型下载

InternStudio 平台的 share 目录下已经为我们准备了全系列的 InternLM 模型,所以我们可以直接复制即可。使用如下命令复制:

-r 选项表示递归地复制目录及其内容

也可以使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。

/root 路径下新建目录 model,在目录下新建 download.py 文件并在其中输入以下内容,粘贴代码后记得保存文件,如下图所示。并运行 python /root/model/download.py 执行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟

注意:使用 pwd 命令可以查看当前的路径,JupyterLab 左侧目录栏显示为 /root/ 下的路径。

image

2.3 代码准备

首先 clone 代码,在 /root 路径下新建 code 目录,然后切换路径, clone 代码.

切换 commit 版本,与教程 commit 版本保持一致,可以让大家更好的复现。

/root/code/InternLM/web_demo.py 中 29 行和 33 行的模型更换为本地的 /root/model/Shanghai_AI_Laboratory/internlm-chat-7b

image-3

2.4 终端运行

我们可以在 /root/code/InternLM 目录下新建一个 cli_demo.py 文件,将以下代码填入其中:

然后在终端运行以下命令,即可体验 InternLM-Chat-7B 模型的对话能力。对话效果如下所示:

Alt text

2.5 web demo 运行

我们切换到 VScode 中,运行 /root/code/InternLM 目录下的 web_demo.py 文件,输入以下命令后,查看本教程5.2配置本地端口后,将端口映射到本地。在本地浏览器输入 http://127.0.0.1:6006 即可。

Alt text

注意:要在浏览器打开 http://127.0.0.1:6006 页面后,模型才会加载,如下图所示:

Alt text

在加载完模型之后,就可以与 InternLM-Chat-7B 进行对话了,如下图所示:

Alt text

3 Lagent 智能体工具调用 Demo

本小节我们将使用 InternStudio 中的 A100(1/4) 机器、InternLM-Chat-7B 模型和 Lagent 框架部署一个智能工具调用 Demo。

Lagent 是一个轻量级、开源的基于大语言模型的智能体(agent)框架,支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能。通过 Lagent 框架可以更好的发挥 InternLM 的全部性能。

下面我们就开始动手实现!

3.1 环境准备

选择和第一个 InternLM 一样的镜像环境,运行以下命令安装依赖,如果上一个 InternLM-Chat-7B 已经配置好环境不需要重复安装.

3.2 模型下载

InternStudio 平台的 share 目录下已经为我们准备了全系列的 InternLM 模型,所以我们可以直接复制即可。使用如下命令复制:

-r 选项表示递归地复制目录及其内容

也可以在 /root/model 路径下新建 download.py 文件并在其中输入以下内容,并运行 python /root/model/download.py 执行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟

3.3 Lagent 安装

首先切换路径到 /root/code 克隆 lagent 仓库,并通过 pip install -e . 源码安装 Lagent

3.4 修改代码

由于代码修改的地方比较多,大家直接将 /root/code/lagent/examples/react_web_demo.py 内容替换为以下代码

3.5 Demo 运行

用同样的方法我们依然切换到 VScode 页面,运行成功后,查看本教程5.2配置本地端口后,将端口映射到本地。在本地浏览器输入 http://127.0.0.1:6006 即可。

我们在 Web 页面选择 InternLM 模型,等待模型加载完毕后,输入数学问题 已知 2x+3=10,求x ,此时 InternLM-Chat-7B 模型理解题意生成解此题的 Python 代码,Lagent 调度送入 Python 代码解释器求出该问题的解。

Alt text

4. 浦语·灵笔图文理解创作 Demo

本小节我们将使用 InternStudio 中的 A100(1/4) * 2 机器和 internlm-xcomposer-7b 模型部署一个图文理解创作 Demo 。

4.1 环境准备

首先在 InternStudio 上选择 A100(1/4)*2 的配置。如下图所示:

Alt text

接下来打开刚刚租用服务器的 进入开发机,并在终端输入 bash 命令,进入 conda 环境,接下来就是安装依赖。

进入 conda 环境之后,使用以下命令从本地克隆一个已有的pytorch 2.0.1 的环境

然后使用以下命令激活环境

接下来运行以下命令,安装 transformersgradio 等依赖包。请严格安装以下版本安装!

4.2 模型下载

InternStudio平台的 share 目录下已经为我们准备了全系列的 InternLM 模型,所以我们可以直接复制即可。使用如下命令复制:

-r 选项表示递归地复制目录及其内容

也可以安装 modelscope,下载模型的老朋友了

/root/model 路径下新建 download.py 文件并在其中输入以下内容,并运行 python /root/model/download.py 执行下载

4.3 代码准备

/root/code git clone InternLM-XComposer 仓库的代码

4.4 Demo 运行

在终端运行以下代码:

这里 num_gpus 1 是因为InternStudio平台对于 A100(1/4)*2 识别仍为一张显卡。但如果有小伙伴课后使用两张 3090 来运行此 demo,仍需将 num_gpus 设置为 2

查看本教程5.2配置本地端口后,将端口映射到本地。在本地浏览器输入 http://127.0.0.1:6006 即可。我们以又见敦煌为提示词,体验图文创作的功能,如下图所示:

Alt text

接下来,我们可以体验一下图片理解的能力,如下所示~

Alt text

5. 通用环境配置

5.1 pip、conda 换源

更多详细内容可移步至 MirrorZ Help 查看。

5.1.1 pip 换源

临时使用镜像源安装,如下所示:some-package 为你需要安装的包名

设置pip默认镜像源,升级 pip 到最新的版本 (>=10.0.0) 后进行配置,如下所示:

如果您的 pip 默认源的网络连接较差,临时使用镜像源升级 pip:

5.1.2 conda 换源

镜像站提供了 Anaconda 仓库与第三方源(conda-forge、msys2、pytorch 等),各系统都可以通过修改用户目录下的 .condarc 文件来使用镜像站。

不同系统下的 .condarc 目录如下:

注意:

快速配置

5.2 配置本地端口

由于服务器通常只暴露了用于安全远程登录的 SSH(Secure Shell)端口,如果需要访问服务器上运行的其他服务(如 web 应用)的特定端口,需要一种特殊的设置。我们可以通过使用SSH隧道的方法,将服务器上的这些特定端口映射到本地计算机的端口。这样做的步骤如下:

首先我们需要配置一下本地的 SSH Key ,我们这里以 Windows 为例。

步骤①:在本地机器上打开 Power Shell 终端。在终端中,运行以下命令来生成 SSH 密钥对:(如下图所示)

Alt text

步骤②: 您将被提示选择密钥文件的保存位置,默认情况下是在 ~/.ssh/ 目录中。按 Enter 键接受默认值或输入自定义路径。

步骤③:公钥默认存储在 ~/.ssh/id_rsa.pub,可以通过系统自带的 cat 工具查看文件内容:(如下图所示)

~ 是用户主目录的简写,.ssh 是SSH配置文件的默认存储目录,id_rsa.pub 是 SSH 公钥文件的默认名称。所以,cat ~\.ssh\id_rsa.pub 的意思是查看用户主目录下的 .ssh 目录中的 id_rsa.pub 文件的内容。

Alt text

步骤④:将公钥复制到剪贴板中,然后回到 InternStudio 控制台,点击配置 SSH Key。如下图所示:

Alt text

步骤⑤:将刚刚复制的公钥添加进入即可。

Alt text

步骤⑥:在本地终端输入以下指令 .6006 是在服务器中打开的端口,而 33090 是根据开发机的端口进行更改。如下图所示:

Alt text

5.3 模型下载

以下下载模型的操作不建议大家在开发机进行哦,在开发机下载模型会占用开发机的大量带宽和内存,下载等待的时间也会比较长,不利于大家学习。大家可以在自己的本地电脑尝试哦~

5.3.1 Hugging Face

使用 Hugging Face 官方提供的 huggingface-cli 命令行工具。安装依赖:

然后新建 python 文件,填入以下代码,运行即可。

以下内容将展示使用 huggingface_hub 下载模型中的部分文件

5.3.2 ModelScope

使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。

注意:cache_dir 最好为绝对路径。

安装依赖:

在当前目录下新建 python 文件,填入以下代码,运行即可。

5.3.3 OpenXLab

OpenXLab 可以通过指定模型仓库的地址,以及需要下载的文件的名称,文件所需下载的位置等,直接下载模型权重文件。

使用python脚本下载模型首先要安装依赖,安装代码如下:pip install -U openxlab 安装完成后使用 download 函数导入模型中心的模型。