使用NVIDIA GPU部署AI容器镜像Qwen-7B-Chat

本文聊天机器人为例,介绍如何使用Alibaba Cloud AI Containers(简称AC2)提供的AI容器镜像在NVIDIA GPU上部署通义千问Qwen-7B-Chat。

背景信息

通义千问-7B(Qwen-7B)是阿里云研发的通义千问大模型系列的70亿参数规模模型。Qwen-7B是基于Transformer的大语言模型,在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B 的基础上,使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。

重要

Qwen-7B-Chat的代码依照LICENSE开源,免费商用需填写商业授权申请。您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

步骤一:创建ECS实例

  1. 前往实例创建页

  2. 按照界面提示完成参数配置,创建一台ECS实例。

    需要注意的参数如下,其他参数的配置,请参见自定义购买实例

    • 实例:Qwen-7B-Chat需要显存大于16 GiB,为了保证模型运行的稳定,实例规格至少需要选择ecs.gn6i-c4g1.xlarge。

    • 镜像:Alibaba Cloud Linux 3.2104 LTS 64位。

    • 公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。

      image

    • 数据盘:Qwen-7B-Chat的运行需要下载多个模型文件,会占用大量存储空间,为了保证模型顺利运行,建议数据盘设置为100 GiB。

步骤二:创建Docker运行环境

  1. 安装Docker。

    在Alibaba Cloud Linux 3上安装Docker可以参考安装Docker并使用(Linux)

  2. 运行以下命令,确保Docker守护进程已经启用。

    sudo systemctl status docker
  3. 安装NVIDIA驱动以及CUDA组件。

    sudo dnf install -y anolis-epao-release
    sudo dnf install -y kernel-devel-$(uname -r) nvidia-driver{,-cuda}
  4. 使用以下命令安装NVIDIA Container Toolkit。

    sudo dnf install -y nvidia-container-toolkit
  5. 安装NVIDIA Container Toolkit时会添加OCI预启动钩子,以在启动阶段将GPU暴露给容器,所以需要重新启动Docker守护进程。

    sudo systemctl restart docker

    重启服务后,Docker就具备了GPU透传能力,后续创建容器时,需要添加--gpus <gpu-request>参数,指定需要透传的GPU。

  6. 运行以下命令,创建并运行PyTorch AI容器。

    AC2提供了丰富的AI场景下的容器镜像,可以使用该镜像快速创建一个PyTorch运行环境。

    sudo docker pull ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch:2.2.0.1-3.2304-cu121
    sudo docker run -itd --name pytorch --gpus all --net host -v $HOME/workspace:/workspace \
      ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch:2.2.0.1-3.2304-cu121

    以上命令首先拉取容器镜像,随后使用该镜像创建一个以分离模式运行的,名为pytorch的容器,并将用户的家目录映射到容器中,以保留开发内容。

步骤三:手动部署Qwen-7B-Chat

  1. 运行以下命令,进入容器环境。

    sudo docker exec -it -w /workspace pytorch /bin/bash

    后续命令需在容器环境中执行,如意外退出,请使用以上命令重新进入容器环境。您可以运行cat /proc/1/cgroup | grep docker命令查看当前环境是否为容器,如有回显信息则为容器环境。

  2. 运行以下命令,安装配置软件。

    yum install -y git git-lfs wget tmux
  3. 运行以下命令,启用Git LFS。

    下载预训练模型需要Git LFS的支持。

    git lfs install
  4. 下载源码与模型。

    1. 新建一个tmux session。

      tmux

      注意:下载预训练模型耗时较长,建议在tmux会话中下载。实例连接中断后,通过tmux attach恢复会话。

    2. 运行以下命令,下载Qwen-7B项目源码,以及预训练模型。

      git clone https://github.com/QwenLM/Qwen.git
      git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git qwen-7b-chat --depth=1
  5. 运行以下命令,部署运行环境。

    AC2容器中,集成了众多的Python AI依赖组件,可以直接使用yumdnf安装Python运行依赖。

    dnf install -y python-einops \
        python3-datasets \
        python3-gradio \
        python3-mdtex2html \
        python3-protobuf \
        python3-psutil \
        python3-pyyaml \
        python3-rich \
        python3-scikit-learn \
        python3-scipy \
        python3-sentencepiece \
        python3-tensorboard \
        python3-tiktoken \
        python3-transformers \
        python3-transformers-stream-generator \
        yum-utils

    部分依赖组件需要手动下载并安装,防止安装过程中覆盖 AC2 镜像中的组件。

    yumdownloader --destdir ./rpmpkgs python3-timm python3-accelerate
    rpm -ivh --nodeps rpmpkgs/*.rpm && rm -rf rpmpkgs
  6. 运行AI对话。

    1. 运行以下命令,启动聊天机器人。

      cd /workspace/Qwen
      python3 cli_demo.py -c ../qwen-7b-chat

      部署完成后可以通过在User>提示符处输入对话内容,就可以与Qwen-7B-Chat大模型进行实时对话。

      image.png

      说明

      您可以运行:exit命令退出聊天机器人