[InternLM训练营第二期笔记]2. 轻松分钟玩转书生·浦语大模型趣味 Demo


该系列是上海AI Lab举行的书生 浦语大模型训练营的相关笔记部分。
该笔记是第二节课,完成对话、多模态等demo,形成对InternLM的初步了解


1. 部署InternLM2-Chat-1.8B

InternLM2-Chat-1.8B是一个对话小模型,只有1.8B参数,因此运行只需要10%的A100即可。

首先在官方提供的开发机页面(https://studio.intern-ai.org.cn/console/dashboard)配置环境,选择10% * A100。

随后,进行初步的环境配置:

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.2 
pip install matplotlib==3.8.3 
pip install modelscope==1.9.5
pip install sentencepiece==0.1.99

安装完成后,我们需要创建文件夹,然后把模型下载下来

mkdir -p /root/demo
touch /root/demo/cli_demo.py  # 创建文件 一会填充代码
touch /root/demo/download_mini.py  # 创建文件 一会填充代码
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')

上面代码的作用就是从模型库中下载代码

然后打开另一个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)

上面这段代码的作用是加载模型,并给定prompt以让模型扮演某个角色。对于每次对话,都必须传一遍prompt。

之后,我们依次运行上面两个文件。

首先,我们下载模型:

python /root/demo/download_mini.py

耐心等待即可

在这里插入图片描述

下载完成后,我们运行cli_demo.py,就可以开始对话

python /root/demo/cli_demo.py

我输入了提示词:请写一个300字左右的温情小故事

结果:
在这里插入图片描述
可以看到效果还是不错的,确实比较温情。按照程序的设计,可以输入exit退出。

2. 尝试训练营第一期优秀作品~Chat-嬛嬛

官方文档上讲了八戒的chat,所以在此就不赘述,我来尝试一下嬛嬛的模型。

首先,安装包(在刚刚的demo/文件夹下操作即可):

pip install modelscope

然后下载模型权重:

from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('kmno4zx/huanhuan-chat-internlm2', cache_dir='./')

下载好的权重如下:

在这里插入图片描述

随后,git clone代码库:

git clone https://github.com/KMnO4-zx/xlab-huanhuan.git

随后,我们打开工程内的start.py,并修改为以下内容:(按照原本的端口和ip 不work)

import os

os.system('streamlit run app.py --server.address=127.0.0.1 --server.port 6006')

之后,在本地配置ssh,在windows powershell中输入

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

其中p换成开发机的端口号

运行start.py, 然后在浏览器进入http://127.0.0.1:6006/即可:
在这里插入图片描述

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

Lagent是一个工具,其可以快速将LLM变成用户需要的智能体,整体框图如下:

在这里插入图片描述

调整开发机环境为30% * A100,然后在前文构建的虚拟环境下执行以下命令:

cd /root/demo

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 . # 源码安装

Intern Studio 在 share 文件中预留了一些我们可以用到的模型,因此我们先用一个软链接,将本地模型链接到share里:

cd /root/demo/lagent
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行左右) 代码,将路径指向/root/models/internlm2-chat-7b
在这里插入图片描述

剩余的事情和部署前面的嬛嬛一样,需要先在服务器上运行,然后本地与服务器用ssh链接:

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

结果如下图:
在这里插入图片描述
然后我指定它用matlab写,但是它还是用python,可能创建智能体的时候没有这个约束。。

在这里插入图片描述

进阶作业:熟悉hugging_face的下载功能

lagent文件夹下新建download_config.py,填入以下代码:

## huggingface_hub包使用示例
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id='internlm/internlm2-chat-7b',filename="config.json",local_dir='/root/demo/lagent')

运行即可,得到的config.json:

在这里插入图片描述

4. 体验多模态浦语·灵笔2模型

4.1 图文创作

按照以下命令,分别安装依赖的package和创建模型软链接等操作:


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

cd /root/demo
git clone https://gitee.com/internlm/InternLM-XComposer.git
cd /root/demo/InternLM-XComposer
git checkout f31220eddca2cf6246ee2ddf8e375a40457ff626

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

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

然后根据前面的ssh连接教程,即可打开demo界面。

然后我们根据已经填好的文本,让他生成内容,这是正在生成的时候:

在这里插入图片描述

它应该是先生成文本,再根据文本生成图片的。

在这里插入图片描述

可以看到,效果还是相当不错的,风格也很对口~

4.2 图片问答

我们关闭terminal,终止上一个进程,然后运行如下脚本:


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

在这里插入图片描述
然后,我上传的是这张图片:

在这里插入图片描述
prompt是:

这是一个什么风格的图片?请描述一下内容

回答是:

在这里插入图片描述
可以看到效果是相当不错的~ 果然参数量大了效果就上来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值