浦语·灵笔2(XComposer2)是基于InternLM2大语言模型研发的突破性的图文多模态大模型,具有非凡的图文写作和图像理解能力,在多种应用场景表现出色,总结起来其具有:
- 自由指令输入的图文写作能力:XComposer2可以理解自由形式的图文指令输入,包括大纲、文章细节要求、参考图片等,为用户打造图文并貌的专属文章。生成的文章文采斐然,图文相得益彰,提供沉浸式的阅读体验。
- 准确的图文问题解答能力:XComposer2具有海量图文知识,可以准确的回复各种图文问答难题,在识别、感知、细节描述、视觉推理等能力上表现惊人。
- 杰出的综合能力: XComposer2-7b基于Internlm2-7B模型,在13项多模态评测中大幅领先同量级多模态模型,在其中6项评测中超过
GPT-4V
和Gemini Pro
运行灵笔2需要至少50%算力A100
一、配置基础环境
internStudio进入开发机,启动之前配置过的conda环境,补充环境包
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
运行结果如下图所示,启动conda环境后最前面的(base)会变成conda的名字
安装好后拉取XComposer仓库相关代码,demo文件夹下就会有一个InternLM-XComposer仓库,然后进入git仓库切换分支。我理解拉下来的这些代码主要是前端实现的代码,而真正的模型在share里
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
构造软连接快捷访问方式,解除、修改软连接方式可以自行百度或查看上一篇文章
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
二、运行XComposer2
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
设置了使用的基础模型,gpu个数、端口号
接下来就可以在本地使用ssl连接了,win+r powershell ,再输入
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
# 本地端口转发(由本地内网服务器某个端口转发到远程服务器端口)
# C:压缩数据传输 N:不执行脚本或命令 g:允许远程主机连接到建立的转发的端口
# L:本地端口:目标IP:目标端口 后面rootxxx是远程服务器
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374
运行成功截图如下
打开127.0.0.1:6006
三、实验效果
点击提交,稍等一会可以获得结果,并且在终端有很多log显示,可以看出文章生成的基本流程:首先根据需求生成文章,分析段落位置,选择合适插入图片的位置,然后给出适合这个位置的对图片的描述,灵笔根据标题生成候选图片,在每个位置根据上下文选择最合适的图片,最后插入图片
可以在结果中看出,有2-3张图片不是很符合要求,比如
我认为这个是由于对图片的要求描述的不是很准确。
可以看到页面中还可以上传一些图片素材以及一些高级设置
- Beam Size (集束大小):初始为1。
- Repetition_penalty (重复惩罚):初始为1。
- Max output tokens (最多输出字数):初始为4096。
- Random Seed (随机种子):初始为8909。可以理解为每个图画的唯一编码,当设置为-1时,图画随机生成,当遇见中意的图片时,复制下面的种子数值,填入随机种子框内,后续生成的图画基本都是一个样子。
1、仅将beam size调到最大
结果感觉比1时生成的文本更好一些,并且偏题的图片也少了,但还是有1张图片感觉不太符合水墨主题
2、仅将Repetition_penalty调到最大
图片和文字都明显偏题了
3、将beam size调到最大,reputation penalty调到中间
感觉与2区别不大
四、图片理解实验
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
第一次分析的挺好的,第二次脸上的微笑离谱了
感觉不是很智能...