程序员开发实例大全宝库

网站首页 > 编程文章 正文

4卡3090部署Qwen1.5 72B AWQ模型和吞吐量测试

zazugpt 2024-08-27 00:28:05 编程文章 19 ℃ 0 评论

本文主要介绍如何在Linux环境下部署和安装Qwen 1.5 72B版本,包括安装VLLM(一个大型语言模型库)及其依赖项,特别是CUDA和cudnn。

此外,还将介绍如何通过Openai API服务的方式启动Qwen 72B模型,并进行硬件配置和并发访问测试的步骤。

准备工作

在开始之前,确保你的系统已经安装了Anaconda,以便创建隔离的Python环境。

安装过程

  • 创建conda虚拟环境

使用conda create的方式创建conda虚拟环境。

conda create -n vllm2 python=3.10
conda activate vllm2
  • 安装CUDA 12.1 和 cudnn 8.9.7
  • 下载CUDA 12.1安装包(cuda_12.1.1_530.30.02_linux.run)进行纯离线安装。

    下载CUDNN 8.9.7 (cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz)并安装(解压后,拷贝.h和.so文件到对应的cuda目录即可)。

    如果系统中已存在多个版本的CUDA,需要正确配置环境变量PATH、LD_LIBRARY_PATH和CUDA_HOME,以指向CUDA 12.1的安装路径。这些配置可添加至~/.bashrc文件中。

    export PATH=/usr/local/cuda-12.1/bin:$PATH 
    export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:/home/health/anaconda3/lib:$LD_LIBRARY_PATH 
    export CUDA_HOME=/usr/local/cuda-12.1
    • 安装PyTorch 2.1.2

    为了确保兼容性,使用下列命令安装指定版本的PyTorch、TorchVision和TorchAudio。

    pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
    • pip install VLLM

    可以直接使用命令安装。

    pip install vllm
  • 安装ModelScope的核心库
  • ModelScope是一个重要的组件,用于模型的管理和优化。使用以下命令安装:

    pip install modelscope

    为了让vllm从modelscope下载模型,还需要配置一下环境变量,可以配置在~/.bashrc中。

    export VLLM_USE_MODELSCOPE=True

    启动QWen 72B模型

    在完成所有必要的安装后,你可以通过以下命令启动Qwen 1.5 72B模型,该命令将以OpenAI API服务的形式运行模型,使用了modelscope的模型,所以在第一次启动时会从modelscope中下载,会需要比较长的时间,建议使用screen的方式挂在后台执行:

    python3 -m vllm.entrypoints.openai.api_server --model Qwen/Qwen1.5-72B-Chat-AWQ --max-model-len 16000 --quantization awq --dtype half --tensor-parallel-size 4 --gpu-memory-utilization 0.99 --enforce-eager --swap-space 16 --max-num-batched-tokens 16000

    硬件说明和并发访问测试

    我们使用了4张NVIDIA GeForce RTX 3090显卡,没有使用NVLink桥接。

    为了获取系统的并发能力,我们开发了一个简单的并发测试脚本,通过该脚本进行并发测试。

    从图中可以看出,单线程的吞吐量为10左右,但是随着并发数量增加,单线程吞吐量也在降低,当并发数量为32时,单线程吞吐量降低到8左右,总体来说3090跑Qwen 72B模型基本可以接受,而且并发数量控制在16左右即可,32 个并发后单线程吞吐量下降比较多。

    另外需要指出的是目前VLLM支持最大上下文总量为16K,而Qwen可以到32K,所以这点比较遗憾。

    还有VLLM为了获取高性能,会预先占用大量GPU的显存(可以通过参数设置gpu-memory-utilization),因此,如果有别的应用也要使用GPU资源,最好和VLLM区分开来。

    测试过2卡3090的情况,不过由于模型仅仅可以加载进去,设置的上下文长度只有900左右,只能基本跑起来,无法实际使用。

    3卡3090目前VLLM无法支持,涉及到要修改一个head token的参数。

    下一个目标会测试一下fastllm对于72B的支持。

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表