ECI 平台推理服务构建指南文档 (v1rc1)

目标

在 ECI 平台上构建一套 AI 推理服务,并且可通过互联网访问 web 服务

准备工作

1. 准备并行账号和绑定超算账

  • 参见 注册并行账号 下面步骤中以 wanghui@paratera.com 并行账号 和 NC-N30 超算分区的 pcs 账号演示

2. 安装 scc 命令行工具

3. 准备本地开发环境 vscode

4. 准备 AI 推理项目 ChatGLM2-6B 和模型数据

  • 4.1 创建 ai 目录
mkdir ai
cd ai
  • 4.2 下载 ChatGLM2-6B
$ git clone https://github.com/THUDM/ChatGLM2-6B
$ cd ChatGLM2-6B
  • 4.2 下载模型

地址:https://huggingface.co/THUDM/chatglm2-6b/tree/main (opens in a new tab)

  • 创建 THUDM 目录
mkdir THUDM
  • 下载 chatglm2-6b 仓库 从 Hugging Face Hub 下载模型需要先安装 Git LFS (opens in a new tab),然后运行(模型文件较大,花费时间较长,请耐心等待)
cd THUDM
git clone https://huggingface.co/THUDM/chatglm2-6b

实施流程

1. 创建 volume

1.1 创建 chatglm2-6b-ai volume

$ scc eci volume create chatglm2-6b-ai -s
  • 1.2 成功结果
volume/chatglm2-6b-ai created
https://ncn30-pcs-chatglm2-6b-ai:rdspknhwbkbvvb4nmbn8sswpp8zl8pkk@webdav.eci.paracloud.com published
sftp://ncn30-pcs-chatglm2-6b-ai:rdspknhwbkbvvb4nmbn8sswpp8zl8pkk@sftp.eci.paracloud.com:2022 published
⚠️ Please remember your password as it cannot be retrieved again.

2. 创建配置 jupyter 容器

  • 2.1 创建 jupyter 容器
$ scc eci container run -r n30.xlarge --name chatglm2-6b-ai \
-v chatglm2-6b-ai:/data -p https:lab  \
jupyter/minimal-notebook:lab-4.0.3 \
-- jupyter lab --port \$BAT_PORT_lab --NotebookApp.token chatglm2token --no-browser --allow-root
  • 成功返回
container/chatglm2-6b-ai created
https://nc-n30-pcs-chatglm2-6b-ai-lab.eci.paracloud.com -> port/lab published
  • 查看 container
$ scc eci container list
Cluster   Account   Name              Image                                Status
NC-N30    pcs       chatglm2-6b-ai   jupyter/minimal-notebook:lab-4.0.3     Running
  • 2.2 浏览器中访问以下地址: https://nc-n30-pcs-chatglm2-6b-ai-lab.eci.paracloud.com (opens in a new tab)

  • 2.3 配置 token(token值是前面创建jupyter容器时设置的 chatglm2token), password (请自行设置), 并登录

  • 2.4 点击 File > New > Termial 打开一个 Termial

  • 2.5 在打开的 Termial 创建一个项目目录 ai(用于统一存放项目数据,后面sftp配置时需要用到)

cd /data
mkdir ai

3. 配置 vscode sftp

  • 3.1 在 vscode 中打开前面本地创建的 ai 项目目录

  • 3.2 安装 sftp 扩展插件

    • 在 vscode 中快捷键 ctrl+shift+P 打开指令窗口,输入extension:install,回车,左侧即打开扩展安装的界面
    • 选择 publisher 是 Natizyskunk 的这个 SFTP 插件,目前最新版本 v1.16.3, 点击 Install 安装即可
    • 然后快捷键 ctrl+shift+P 打开指令窗口,输入 sftp:config ,回车,就会在当前工作工程的 .vscode 文件夹下生成一个 sftp.json 文件,我们需要配置的是:host, username, password, remotePath, ignore这几个内容即可:
  • 3.3 配置 sftp.json 如下所示

    {
      "name": "ai",
      "host": "sftp.eci.paracloud.com",
      "protocol": "sftp",
      "port": 2022,
      "username": "ncn30-pcs-chatglm2-6b-ai",
      "password": "tpvgrs99h9gzmphdz259bvhp9wwzgwna",
      "remotePath": "/ai",
      "uploadOnSave": false,
      "useTempFile": false,
      "openSsh": false,
      "ignore": [".vscode", ".git", ".DS_Store", "model"]
    }

4. 同步本地项目及模型数据

  • 4.1 在 vscode EXPLORER 界面空白出,右键选择 Sync Local -> Remote 同步本地数据到远程 volume , 在 OUTPUT 中可查看实时同步的状态(此处模型数据较大耗时较长,请耐心等待完成)
  • 4.2 本地项目若有更新修改,需执行 4.1 同步数据

5. 配置推理运行环境

  • 5.1 打开一个jupyter 的 Terminal

  • 5.2 安装 anaconda

  • 5.3 创建虚拟环境并激活 python 环境

    • 进入 /data/ai/ChatGLM2-6B
    cd /data/ai/ChatGLM2-6B
    • 创建 python 环境 venv
    conda create --name venv python=3.8
    • 激活环境
    conda activate venv
  • 5.4 安装 ChatGLM2-6B 项目依赖库

    • 进入 ChatGLM2-6B 项目目录
    cd /data/ai/ChatGLM2-6B
    • 安装依赖
    pip install -r requirements.txt

6. 启动推理服务

  • 6.1 启动基于 Gradio 的网页版 demo
python web_demo.py
  • 6.2 成功返回
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:39<00:00,  5.68s/it]
/data/scc-labs/ChatGLM2-6B/web_demo.py:89: GradioDeprecationWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.
  user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

7. 配置推理服务 http 服务代理

  • 7.1 在 /data/bin 目录下安装 scc 命令,方法参考前面 2. 安装 scc 命令行工具
  • 7.2 配置 http 代理
$ scc tunnel http  http://127.0.0.1:7860
🎉 You're ready to go live at https://be22fe9f-d140-474c-81f4-30fb068157b5.tunnel.paracloud.com => http://127.0.0.1:7860

8. 访问推理服务