书生·浦语大模型InternLM-Chat-7B 智能对话 Demo

2024-01-08 17:46:38

环境准备

  • 在InternStudio平台中选择 A100(1/4) 的配置,如下图所示镜像选择 Cuda11.7-conda,如下图所示:
    请添加图片描述
  • 打开刚刚租用服务器的进入开发机,进入开发机后,在页面的左上角可以切换 JupyterLab、终端和 VScode
    在这里插入图片描述在这里插入图片描述
  • 配置开发环境
    • 创建python=3.10.13,pytorch=2.0.1虚拟环境,也可以直接克隆一个pytorch=2.0.1的环境

      conda create --name internlm-demo --clone=/root/share/conda_envs/internlm-base
      
    • 激活internlm-demo环境

      conda activate internlm-demo
      
    • 安装demo需要的依赖包

      # 升级pip
      python -m pip install --upgrade pip
      
      pip install modelscope==1.9.5
      pip install transformers==4.35.2
      pip install streamlit==1.24.0
      pip install sentencepiece==0.1.99
      pip install accelerate==0.24.1
      

下载模型

  • 直接拷贝
    InternStudio平台的 share 目录下已经为我们准备了全系列的 InternLM 模型,所以我们可以直接复制即可。使用如下命令复制:

    mkdir -p /root/model/Shanghai_AI_Laboratory  # 在root路径下创建model文件,在model文件下创建Shanghai_AI_Laboratory
    cp -r /root/share/temp/model_repos/internlm-chat-7b /root/model/Shanghai_AI_Laboratory # 将模型拷贝到Shanghai_AI_Laboratory文件夹下
    
  • 网络下载

    • 也可以使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。
    • 在 /root 路径下新建目录model,在目录下新建 download.py 文件并在其中输入以下内容,粘贴代码后记得保存文件,如下图所示。并运行 python /root/model/download.py 执行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟
    import torch
    from modelscope import snapshot_download, AutoModel, AutoTokenizer
    import os
    model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-chat-7b', cache_dir='/root/model', revision='v1.0.3')
    

准备代码

  • 克隆代码
    在 /root 路径下新建 code 目录,然后切换路径, clone 代码

    mkdir -p /root/code # 创建code文件夹
    cd /root/code
    git clone https://gitee.com/internlm/InternLM.git # 克隆仓库
    
  • 切换commit 版本,与教程 commit 版本保持一致,可以让大家更好的复现

    cd InternLM
    git checkout 3028f07cb79e5b1d7342f4ad8d11efad3fd13d17
    
  • 将 /root/code/InternLM/web_demo.py中 29 行和 33 行的模型更换为本地的/root/model/Shanghai_AI_Laboratory/internlm-chat-7b
    在这里插入图片描述

终端运行

  • 我们可以在 /root/code/InternLM 目录下新建一个 cli_demo.py 文件,将以下代码填入其中:

    import torch
    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    
    model_name_or_path = "/root/model/Shanghai_AI_Laboratory/internlm-chat-7b"
    
    tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
    model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
    model = model.eval()
    
    messages = []
    
    print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")
    
    while True:
        input_text = input("User  >>> ")
        if input_text == "exit":
            break
        response, history = model.chat(tokenizer, input_text, history=messages)
        messages.append((input_text, response))
        print(f"robot >>> {response}")
    
  • 在终端运行以下命令,即可体验 InternLM-Chat-7B 模型的对话能力。对话效果如下所示:

    python /root/code/InternLM/cli_demo.py
    

请添加图片描述

web 运行demo

  • 端口映射到本地,在本地浏览器才可浏览

    • 在本地打开Power Shell终端,SSH公钥默认存储在 ~/.ssh/id_rsa.pub,可以通过系统自带的 cat 工具查看文件内容
      在这里插入图片描述

    • 将公钥复制到剪贴板中,然后回到 InternStudio 控制台,点击配置 SSH Key
      在这里插入图片描述

    • 将刚刚复制的公钥添加进入即可
      在这里插入图片描述

    • 在本地终端输入以下指令 .6006 是在服务器中打开的端口,而 33090 是根据开发机的端口进行更改
      在这里插入图片描述
      在这里插入图片描述

      ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 33854
      
  • 在InternStudio终端运行以下代码:

    bash
    conda activate internlm-demo  # 首次进入 vscode 会默认是 base 环境,所以首先切换环境
    cd /root/code/InternLM
    streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006
    

在这里插入图片描述
请添加图片描述

文章来源:https://blog.csdn.net/m0_49289284/article/details/135412067
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。