重庆企业网站制作外包,宁波建站,高级网络规划设计师,网站数据中心的建设文章目录 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话1.1 配置环境1.2 下载 InternLM2-Chat-1.8B 模型 2. 实战#xff1a;部署实战营优秀作品 八戒-Chat-1.8B 模型2.1 配置基础环境2.2 使用 git 命令来获得仓库内的 Demo 文件#xff1a;2.3 下载运行 Chat-八戒 Demo 3. … 文章目录 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话1.1 配置环境1.2 下载 InternLM2-Chat-1.8B 模型 2. 实战部署实战营优秀作品 八戒-Chat-1.8B 模型2.1 配置基础环境2.2 使用 git 命令来获得仓库内的 Demo 文件2.3 下载运行 Chat-八戒 Demo 3. 使用 Lagent 运行 InternLM2-Chat-7B 模型4. 使用 Lagent 运行 InternLM2-Chat-7B 模型为内核的智能体5. 实践部署 浦语·灵笔2 模型5.1 配置基础环境5.2 图文写作实战5.3 图片理解实战 教程文档https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md智能体lagent repo: https://github.com/InternLM/lagent 多模态大模型InternLM-XComposerhttps://github.com/InternLM/InternLM-XComposer/tree/main轻松玩转书生·浦语大模型趣味 Demo 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话
1.1 配置环境
创建conda环境安装必要的库
studio-conda -o internlm-base -t demo
# 与 studio-conda 等效的配置方案
# conda create -n demo python3.10 -y
# conda activate demo
# conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.7 -c pytorch -c nvidia配置完成后进入到新创建的 conda 环境之中
conda activate demo输入以下命令完成环境包的安装
pip install huggingface-hub0.17.3
pip install transformers4.34
pip install psutil5.9.8
pip install accelerate0.24.1
pip install streamlit1.32.2
pip install matplotlib3.8.3
pip install modelscope1.9.5
pip install sentencepiece0.1.99查看该环境内已安装的包
conda list1.2 下载 InternLM2-Chat-1.8B 模型
按路径创建文件夹并进入到对应文件目录中
mkdir -p /root/demo
touch /root/demo/cli_demo.py
touch /root/demo/download_mini.py
cd /root/demo这里的touch命令用于创建两个空的Python文件:cli_demo.py和download_mini.py。如果这些文件已经存在,touch命令不会更改它们的内容,只会更新时间戳。 touch命令通常用于: 创建空文件更新文件的时间戳(访问时间和修改时间)避免在脚本或Makefile中创建文件时出现文件不存在的错误 通过左侧文件夹栏目双击进入demo文件夹。 双击打开 /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/modelssnapshot_download(Shanghai_AI_Laboratory/internlm2-chat-1_8b, cache_dirsave_dir, revisionv1.1.0) 3. 执行命令下载模型参数文件
python /root/demo/download_mini.py4. 运行 cli_demo 双击打开 /root/demo/cli_demo.py 文件复制以下代码
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_name_or_path /root/models/Shanghai_AI_Laboratory/internlm2-chat-1_8btokenizer AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_codeTrue, device_mapcuda:0)
model AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_codeTrue, torch_dtypetorch.bfloat16, device_mapcuda: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:breaklength 0for response, _ in model.stream_chat(tokenizer, input_text, messages):if response is not None:print(response[length:], flushTrue, end)length len(response) 使用 Hugging Face Transformers 库与 InternLM 对话模型进行交互的 Python代码。 加载分词器和模型: tokenizer AutoTokenizer.from_pretrained(...): 加载与模型相对应的分词器。model AutoModelForCausalLM.from_pretrained(...): 加载语言模型,使用 bfloat16 数据类型,并指定设备为 cuda:0。model model.eval(): 将模型设置为评估模式。 定义系统提示: system_prompt ...: 定义一个系统提示,介绍 InternLM 助手的基本信息。 初始化消息列表: messages [(system_prompt, )]: 将系统提示添加到消息列表中。 开始交互循环: while True: 进入无限循环,直到用户输入 “exit” 时退出。input_text input(\nUser ): 提示用户输入问题。input_text input_text.replace( , ): 去除输入文本中的空格。 生成助手的响应: for response, _ in model.stream_chat(tokenizer, input_text, messages): 使用 stream_chat 方法生成助手的响应。 tokenizer: 分词器对象。input_text: 用户输入的问题。messages: 之前的对话消息列表。 循环内部: 如果 response 不为 None,则打印从上次打印的长度到当前长度的新生成内容。更新 length 变量为当前响应的长度。 在命令行运行 python /root/demo/cli_demo.py 2. 实战部署实战营优秀作品 八戒-Chat-1.8B 模型
2.1 配置基础环境
运行环境命令
conda activate demo2.2 使用 git 命令来获得仓库内的 Demo 文件
cd /root/
git clone https://gitee.com/InternLM/Tutorial -b camp2
# git clone https://github.com/InternLM/Tutorial -b camp2
cd /root/Tutorial2.3 下载运行 Chat-八戒 Demo
在 Web IDE 中执行 bajie_download.py
python /root/Tutorial/helloworld/bajie_download.py可以看到这部分代码的作用是下载模型权重 待程序下载完成后输入运行命令
streamlit run /root/Tutorial/helloworld/bajie_chat.py --server.address 127.0.0.1 --server.port 6006这条命令的意思是使用Streamlit运行位于/root/Tutorial/helloworld/bajie_chat.py的Python脚本作为web应用并且仅允许从运行该命令的本地机器访问此应用通过端口号6006进行访问。 查询开发机端口是40637
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 rootssh.intern-ai.org.cn -p 40637命令ssh -CNg -L 6006:127.0.0.1:6006 rootssh.intern-ai.org.cn -p 38374是使用SSH协议创建一个安全的隧道用于将本地计算机的端口转发到远程服务器或从远程服务器转发到本地。这里的命令可以分解为几个部分每个部分的作用如下 ssh这是Secure ShellSSH的命令行接口用于安全地访问远程服务器。-C这个选项会启用压缩可以加快传输速度。-Ng-N 表示不执行远程命令只进行端口转发-g 允许远程主机连接到本地转发的端口通常出于安全考虑不推荐开启。-L 6006:127.0.0.1:6006这是本地端口转发的参数。-L 表示本地端口转发格式为本地端口:远程地址:远程端口。这里将本地的6006端口转发到远程主机ssh.intern-ai.org.cn上的127.0.0.1地址的6006端口。简单来说通过本地6006端口访问的所有数据都会发送到远程服务器的6006端口。rootssh.intern-ai.org.cn这部分指定了要连接的远程服务器和用户。这里使用root用户连接到ssh.intern-ai.org.cn。-p 38374指定连接远程服务器时使用的端口号。这里是38374。 总之这条命令的作用是在不执行任何远程命令的情况下将本地机器的6006端口转发到远程服务器ssh.intern-ai.org.cn的6006端口通过38374端口建立安全的SSH连接。这样本地机器上运行的应用比如Streamlit应用就可以通过远程服务器访问实现了一种安全的端口转发。 我为什么运行了这行命令后ssh -CNg -L 6006:127.0.0.1:6006 rootssh.intern-ai.org.cn -p 40637 等了很久命令行都没反应? 答 命令行没有反应是预期行为这意味着SSH隧道已经成功建立并在后台运行。这条命令的作用是创建一个SSH隧道通过端口转发将本地的6006端口映射到远程服务器上的6006端口且该命令是在后台执行的。 因为使用了-N选项所以SSH客户端不会打开一个远程shell命令执行后不会有任何输出表明命令正在执行。它只是静静地在后台运行等待通过端口转发的数据。这正是你所观察到的“没有反应”的原因。 使用隧道访问通过浏览器访问http://127.0.0.1:6006看是否能够成功连接到通过隧道映射的服务。 3. 使用 Lagent 运行 InternLM2-Chat-7B 模型
输入命令开启 conda 环境
conda activate demo打开文件子路径
cd /root/demo使用 git 命令下载 Lagent 相关的代码库
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 . # 源码安装运行效果如图
4. 使用 Lagent 运行 InternLM2-Chat-7B 模型为内核的智能体
打开 lagent 路径
cd /root/demo/lagent在 terminal 中输入指令构造软链接快捷访问方式
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b使用了ln命令的-s选项来创建一个符号链接类似于Windows中的快捷方式。它会在/root/models/internlm2-chat-7b位置创建一个指向/root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b的符号链接。这意味着当访问/root/models/internlm2-chat-7b时实际上会被重定向到/root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b。 打开 lagent 路径下 examples/internlm2_agent_web_demo_hf.py 文件并修改对应位置 (71行左右) 代码
# 其他代码...
value/root/models/internlm2-chat-7b
# 其他代码...输入运行命令 - 点开 6006 链接后大约需要 5 分钟完成模型加载
streamlit run /root/demo/lagent/examples/internlm2_agent_web_demo_hf.py --server.address 127.0.0.1 --server.port 6006mac在命令行输入
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 rootssh.intern-ai.org.cn -p 40637访问127.0.0.1等待加载模型 表现还不错哦。
5. 实践部署 浦语·灵笔2 模型
5.1 配置基础环境
选用 50% A100 进行开发 进入开发机启动 conda 环境
conda activate demo
# 补充环境包
pip install timm0.4.12 sentencepiece0.1.99 markdown22.4.10 xlsxwriter3.1.2 gradio4.13.0 modelscope1.9.5下载 InternLM-XComposer 仓库 相关的代码资源
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 中输入指令构造软链接快捷访问方式
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-7b5.2 图文写作实战
继续输入指令用于启动 InternLM-XComposer
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 6006mac打开端口映射
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 rootssh.intern-ai.org.cn -p 38374显存占用记录 控制台输出记录 先生成文章再插入和下载图片。
插入的图片是从互联网中下载的。见上一期测试记录https://blog.csdn.net/qq_37397652/article/details/135540633
5.3 图片理解实战
关闭并重新启动一个新的 terminal继续输入指令启动 InternLM-XComposer2-vl
conda activate democd /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 (上传图片后) 键入内容示例如下
图片内容理解的非常好虽然交规知识的答案解答错了。 图片理解的很好有上下文记忆答案也接近正确答案。