按照以下链接走流程:https://github.com/InternLM/tutorial/blob/main/helloworld/hello_world.md
算力网站:https://studio.intern-ai.org.cn/console/dashboard
创建开发机。可以选择A100(20G),或者A100*2(40G),这个demo只需要用20G的显卡。
键入conda create --name internlm-demo --clone=/root/share/conda_envs/internlm-base
创建一个conda环境,这个创建过程很慢。
使用conda activate internlm-demo命令激活conda环境,下载所需包
由于share目录已提供模型,直接将其复制过来即可。这里两个命令,一个命令是创建目录,一个是将模型复制到刚刚创建的目录里。
通过cd命令移动到/root目录下,使用mkdir命令创建目录,然后git clone将InternLM仓库拉下来
进入目录,使用git checkout切换分支为教程所用分支。
创建一个文件,把教程提供的代码放进去,文件命名为cli_demo.py
仔细看一下这个代码
首先,InternLM这个模型肯定上传到了hugging face上,这样才能用transformers库的接口来载入InternLM的tokenizer(词表)和model(模型)
然后通过eval将模型变为变为验证模式,不积累梯度,只做推理。
通过input函数接收用户输入,如果用户输入了exit,就退出这个程序。
通过model.chat来回答用户的query,输入参数有词表tokenizer,用户的输入input_text,还有历史消息messages(数组形式)
将用户的输入和模型的回答加入到历史信息中。
键入python /root/code/InternLM/cli_demo.py命令,即可开启对话。下面是一个对话的例子:
开启一个web demo
通过教程,配置好ssh后,查看开发机的端口号,可以从图里看到,这台开发机的端口为33762
进入浏览器,在网址一栏输入127.0.0.1:6006,等待其模型载入完成,就可以在web页面与InternLM进行聊天了。
这里使用的是InternLM-Chat-7B那个开发机,所以一些模型复制的操作我就不重复做了。
根据上面同样的步骤配置ssh,就可以在本地打开浏览器体验demo了
问了2x+8=10,让他求x=多少,以下是一个示例(等待过程稍微优点漫长)
这个demo需要40G的显存,需要换了一个40G显存的开发机,因此需要执行前面模型下载的一些步骤
需要创建一个新的环境,进入环境,下载新的一些包。
用下面的命令将图文模型xcomposer移动到指定目录
mkdir -p /root/model/Shanghai_AI_Laboratory
cp -r /root/share/temp/model_repos/internlm-xcomposer-7b /root/model/Shanghai_AI_Laboratory
cd /root/code
git clone https://gitee.com/internlm/InternLM-XComposer.git
cd /root/code/InternLM-XComposer
git checkout 3e8c79051a1356b9c388a6447867355c0634932d # 最好保证和教程的 commit 版本一致
在终端运行以下代码:
cd /root/code/InternLM-XComposer
python examples/web_demo.py \
--folder /root/model/Shanghai_AI_Laboratory/internlm-xcomposer-7b \
--num_gpus 1 \
--port 6006
这个的等待时间比较久,需要耐心等待到有文字提示"Running on local URL: http://0.0.0.0:6006"后,你才能在本地ssh连接后在本地浏览器看到。不然提前操作都是没有用的。
我们可以从终端的输出看到,他是从根据关键词在网上搜索插图,放到文章里的。
点击旁边的edit,可以更换图片,同时也可以看到模型搜图的prompt。
有些地方本身没有图片,但是旁边也有加号,也可以添加图片。
比如这里:
我选了命运石之门里的”助手“角色,问什么场景,前半部分回答对了,后半杜撰了“观众席”,不知道他咋想的。
整体体验还是挺不错的。
有可能就是你没下载这个库
最大可能就是你没有conda activate对应的那个环境,因为包下在了某个环境里。
如果你中途换了开发机,需要看一下使用的开发机的端口,在命令中修改这一端口值。