书生·浦语大模型开源体系(二)笔记

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!

文章目录

  • [🍋1. 部署 InternLM2-Chat-1.8B 模型进行智能对话](#🍋1. 部署 InternLM2-Chat-1.8B 模型进行智能对话)
  • [🍋2. 部署实战营优秀作品 八戒-Chat-1.8B 模型](#🍋2. 部署实战营优秀作品 八戒-Chat-1.8B 模型)
  • [🍋3. 使用 Lagent 运行 InternLM2-Chat-7B 模型](#🍋3. 使用 Lagent 运行 InternLM2-Chat-7B 模型)
  • [🍋4. 实践部署 浦语·灵笔2 模型](#🍋4. 实践部署 浦语·灵笔2 模型)
  • 🍋总结

🍋1. 部署 InternLM2-Chat-1.8B 模型进行智能对话

首先,打开 Intern Studio 界面,点击 创建开发机 配置开发机系统。

之后进入,点击终端输入环境配置命令

bash 复制代码
studio-conda -o internlm-base -t demo
# 与 studio-conda 等效的配置方案
# conda create -n demo python==3.10 -y
# conda activate demo
# conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

配置完成后,进入到新创建的 conda 环境之中:

bash 复制代码
conda activate demo

输入以下命令,完成环境包的安装:

bash 复制代码
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.2 
pip install matplotlib==3.8.3 
pip install modelscope==1.9.5
pip install sentencepiece==0.1.99

下载 InternLM2-Chat-1.8B 模型

按路径创建文件夹,并进入到对应文件目录中:

bash 复制代码
mkdir -p /root/demo
touch /root/demo/cli_demo.py
touch /root/demo/download_mini.py
cd /root/demo

通过左侧文件夹栏目,双击进入 demo 文件夹。

双击打开 /root/demo/download_mini.py 文件,复制以下代码:

bash 复制代码
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')

执行命令,下载模型参数文件:

bash 复制代码
python /root/demo/download_mini.py

运行 cli_demo

双击打开 /root/demo/cli_demo.py 文件,复制以下代码:

bash 复制代码
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)

输入命令,执行 Demo 程序:

bash 复制代码
conda activate demo
python /root/demo/cli_demo.py

等待模型加载完成,之后就可以输入内容进行创作了

🍋2. 部署实战营优秀作品 八戒-Chat-1.8B 模型

简单介绍 八戒-Chat-1.8B、Chat-嬛嬛-1.8B、Mini-Horo-巧耳(实战营优秀作品)

八戒-Chat-1.8B、Chat-嬛嬛-1.8B、Mini-Horo-巧耳 均是在第一期实战营中运用 InternLM2-Chat-1.8B 模型进行微调训练的优秀成果。其中,八戒-Chat-1.8B 是利用《西游记》剧本中所有关于猪八戒的台词和语句以及 LLM API 生成的相关数据结果,进行全量微调得到的猪八戒聊天模型。作为 Roleplay-with-XiYou 子项目之一,八戒-Chat-1.8B 能够以较低的训练成本达到不错的角色模仿能力,同时低部署条件能够为后续工作降低算力门槛。

当然,同学们也可以参考其他优秀的实战营项目,具体模型链接如下:

八戒-Chat-1.8B:https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat-mini/summary

Chat-嬛嬛-1.8B:https://openxlab.org.cn/models/detail/BYCJS/huanhuan-chat-internlm2-1_8b

Mini-Horo-巧耳:https://openxlab.org.cn/models/detail/SaaRaaS/Horowag_Mini

配置基础环境

运行环境命令:

bash 复制代码
conda activate demo

使用 git 命令来获得仓库内的 Demo 文件:

bash 复制代码
cd /root/
git clone https://gitee.com/InternLM/Tutorial -b camp2
# git clone https://github.com/InternLM/Tutorial -b camp2
cd /root/Tutorial

下载运行 Chat-八戒 Demo

在 Web IDE 中执行 bajie_download.py:

bash 复制代码
python /root/Tutorial/helloworld/bajie_download.py

待程序下载完成后,输入运行命令:

bash 复制代码
streamlit run /root/Tutorial/helloworld/bajie_chat.py --server.address 127.0.0.1 --server.port 6006

待程序运行的同时,对端口环境配置本地 PowerShell 。使用快捷键组合 Windows + R(Windows 即开始菜单键)打开指令界面,并输入命令,按下回车键。(Mac 用户打开终端即可)

打开 PowerShell 后,先查询端口,再根据端口键入命令 (例如图中端口示例为 38374):

bash 复制代码
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374

再复制下方的密码,输入到 password 中,直接回车

打开 http://127.0.0.1:6006 后,等待加载完成即可进行对话。

🍋3. 使用 Lagent 运行 InternLM2-Chat-7B 模型

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

Lagent 的特性总结如下:

  • 流式输出:提供 stream_chat 接口作流式输出,本地就能演示酷炫的流式 Demo。
    接口统一,设计全面升级,提升拓展性,包括:
  • Model : 不论是 OpenAI API, Transformers 还是推理加速框架 LMDeploy 一网打尽,模型切换可以游刃有余;
  • Action: 简单的继承和装饰,即可打造自己个人的工具集,不论 InternLM 还是 GPT 均可适配;
  • Agent:与 Model 的输入接口保持一致,模型到智能体的蜕变只需一步,便捷各种 agent 的探索实现;
  • 文档全面升级,API 文档全覆盖。

配置基础环境(开启 30% A100 权限后才可开启此章节)

打开 Intern Studio 界面,调节配置(必须在开发机关闭的条件下进行):

重新开启开发机,输入命令,开启 conda 环境:

bash 复制代码
conda activate demo

打开文件子路径

bash 复制代码
cd /root/demo

使用 git 命令下载 Lagent 相关的代码库:

bash 复制代码
git clone https://gitee.com/internlm/lagent.git
# git clone https://github.com/internlm/lagent.git
cd /root/demo/lagent
git checkout 581d9fb8987a5d9b72bb9ebd37a95efd47d479ac
pip install -e . # 源码安装

使用 Lagent 运行 InternLM2-Chat-7B 模型为内核的智能体

Intern Studio 在 share 文件中预留了实践章节所需要的所有基础模型,包括 InternLM2-Chat-7b 、InternLM2-Chat-1.8b 等等。我们可以在后期任务中使用 share 文档中包含的资源,但是在本章节,为了能让大家了解各类平台使用方法,还是推荐同学们按照提示步骤进行实验。

打开 lagent 路径:

bash 复制代码
cd /root/demo/lagent

在 terminal 中输入指令,构造软链接快捷访问方式:

bash 复制代码
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b

打开 lagent 路径下 examples/internlm2_agent_web_demo_hf.py 文件,并修改对应位置 (71行左右) 代码:

bash 复制代码
# 其他代码...
value='/root/models/internlm2-chat-7b'
# 其他代码...

输入运行命令 - 点开 6006 链接后,大约需要 5 分钟完成模型加载:

bash 复制代码
streamlit run /root/demo/lagent/examples/internlm2_agent_web_demo_hf.py --server.address 127.0.0.1 --server.port 6006

待程序运行的同时,对本地端口环境配置本地 PowerShell 。使用快捷键组合 Windows + R(Windows 即开始菜单键)打开指令界面,并输入命令,按下回车键。(Mac 用户打开终端即可)

打开 PowerShell 后,先查询端口,再根据端口键入命令 (例如图中端口示例为 38374):

bash 复制代码
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374

后面依次是输入密码,之后就可以直接访问了

🍋4. 实践部署 浦语·灵笔2 模型

初步介绍 XComposer2 相关知识

浦语·灵笔2 是基于 书生·浦语2 大语言模型研发的突破性的图文多模态大模型,具有非凡的图文写作和图像理解能力,在多种应用场景表现出色,总结起来其具有:

  • 自由指令输入的图文写作能力: 浦语·灵笔2 可以理解自由形式的图文指令输入,包括大纲、文章细节要求、参考图片等,为用户打造图文并貌的专属文章。生成的文章文采斐然,图文相得益彰,提供沉浸式的阅读体验。
  • 准确的图文问题解答能力:浦语·灵笔2 具有海量图文知识,可以准确的回复各种图文问答难题,在识别、感知、细节描述、视觉推理等能力上表现惊人。
  • 杰出的综合能力: 浦语·灵笔2-7B 基于 书生·浦语2-7B 模型,在13项多模态评测中大幅领先同量级多模态模型,在其中6项评测中超过 GPT-4V 和 Gemini Pro。

配置基础环境(开启 50% A100 权限后才可开启此章节)

选用 50% A100 进行开发:

进入开发机,启动 conda 环境:

bash 复制代码
conda activate demo
# 补充环境包
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

下载 InternLM-XComposer 仓库 相关的代码资源:

bash 复制代码
cd /root/demo
git clone https://gitee.com/internlm/InternLM-XComposer.git
# git clone https://github.com/internlm/InternLM-XComposer.git
cd /root/demo/InternLM-XComposer
git checkout f31220eddca2cf6246ee2ddf8e375a40457ff626

在 terminal 中输入指令,构造软链接快捷访问方式:

bash 复制代码
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

图文写作实战(开启 50% A100 权限后才可开启此章节)

继续输入指令,用于启动 InternLM-XComposer:

bash 复制代码
cd /root/demo/InternLM-XComposer
python /root/demo/InternLM-XComposer/examples/gradio_demo_composition.py  \
--code_path /root/models/internlm-xcomposer2-7b \
--private \
--num_gpus 1 \
--port 6006

待程序运行的同时,参考章节 3.3 部分对端口环境配置本地 PowerShell 。步骤雷同

图片理解实战(开启 50% A100 权限后才可开启此章节)

根据附录 6.4 的方法,关闭并重新启动一个新的 terminal,继续输入指令,启动 InternLM-XComposer2-vl:

bash 复制代码
conda activate demo

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

打开 http://127.0.0.1:6006 (上传图片后) 键入内容示例如下:

请分析一下图中内容即可

🍋总结

原文地址如下:https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md

挑战与创造都是很痛苦的,但是很充实。

相关推荐
快乐的学习2 小时前
开源相关术语及提交commit关键字总结
驱动开发·开源
Yawesh_best4 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
Ccjf酷儿6 小时前
操作系统 蒋炎岩 3.硬件视角的操作系统
笔记
习习.y7 小时前
python笔记梳理以及一些题目整理
开发语言·笔记·python
在逃热干面7 小时前
(笔记)自定义 systemd 服务
笔记
DKPT9 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
QT 小鲜肉10 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇
笔记·读书·孙子兵法
星轨初途11 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
NocoBase11 小时前
8 个最佳 Google Sheets 替代方案(附成本与能力分析)
低代码·开源·github
QT 小鲜肉11 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇深度解析与现代应用
笔记·读书·孙子兵法