Ascend-SACT/LlaVA-Next-Video-34B
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

1模型概述

LLaVA-Next-Video 是一个开源聊天机器人,通过在多模态指令跟随数据上微调大语言模型(LLM)进行训练。该模型基于 LLaVa-NeXT 构建,并通过对视频和图像数据的混合调整来实现更好的视频理解能力。视频被均匀采样为每段 32 帧。 该模型是 VideoMME 基准中开源模型中的当前 SOTA。 基础 LLM: lmsys/vicuna-7b-v1.5

详细模型介绍可以参考模型开源社区内容 https://modelscope.cn/models/llava-hf/LLaVA-NeXT-Video-34B-hf

本项目提供该模型在昇腾 Atlas A2推理服务器基于 vllm-ascend的推理使用指导

2安装环境

部署时的基础环境是siirl_npu_0902_cann8.2.rc1_torch2.6.0:3 NPU资源:4卡910B

使用约束

依赖软件版本
昇腾NPU驱动>=25.0.RC1.1商发版本
昇腾NPU固件>=25.0.RC1.1商发版本
CANN Toolkit>=8.2.RC1商发版本
CANN Kernel>=8.2.RC1商发版本
CANN NNAL>=8.2.RC1商发版本

硬件设备

设备型号NPU配置
Atlas 800I A2 910B4卡

3 模型推理部署指导

3.1 模型下载(从ModelScope平台下载)

1、创建模型下载的目录 (1)进入服务器后,创建模型下载目录

mkdir /home/model/Llava-video/

(2)创建 LLaVA-NeXT-Video-34B-hf模型目录

mkdir /home/model/Llava-video/LLaVA-NeXT-Video-34B-hf/

2、模型下载:

从ModelScope 平台下载指定的模型到指定的模型目录(模型名称可以在modelscope.cn的模型库里拷贝,保持一致)

modelscope download --model llava-hf/LLaVA-NeXT-Video-34B-hf --local_dir /home/model/Llava-video/LLaVA-NeXT-Video-34B-hf/

3.2 拉取vLLM-Ascend镜像

查询服务器上已经安装哪些镜像

docker image ls

如果服务器上已经有需要的vllm-ascend镜像,则此步骤可忽略,否则通过下面命令拉取镜像

#从镜像仓库下载镜像到本地机器
docker pull quay.io/ascend/vllm-ascend:v0.10.0rc1

3.3 创建容器

在后台启动一个名为LLaVA-NeXT-Video-34B-hf 的容器,以最高权限和直接硬件访问的方式,在主机的第0,1,2,3块昇腾 NPU (davinci0-3) 上运行 vLLM 服务来部署模型

docker run -itd -u 0  --ipc=host --privileged \
-e VLLM_USE_MODELSCOPE=True -e PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256 \
-e  ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 \
--name LLaVA-NeXT-Video-34B-hf \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /home/model/Llava-video/LLaVA-NeXT-Video-34B-hf:/model \
-p 3030:8000 \
-it quay.io/ascend/vllm-ascend:v0.10.0rc1 bash

3.4 启动VLLM推理服务(容器内)

首先进入容器(可以用容器ID或者名称)

docker exec -it LLaVA-NeXT-Video-34B-hf bash

容器内启动vllm推理服务(模型下载之前已经下载在宿主机/home/model/Qwen/Qwen3-8B 中,并且模型文件已经映射在容器内/model),这边注意因为模型比较大,因此需要配置TP并行

nohup  vllm serve /model --served-model-name LLaVA-NeXT-Video-34B-hf --tensor-parallel-size 4 &

上面的命令会在后台执行,可以通过下面的命令查看执行日志

tail  -f nohup.out

3.5 模型功能验证

(1)容器外验证: 当服务拉起完毕,可以到容器外进行验证(可以在xshell通过复制会话的方式,拉起另外一个验证界面) 在容器外查看模型(注意端口要和刚才创建容器时的宿主服务器端口保持一致)

curl http://localhost:3030/v1/models

验证功能

curl http://localhost:3030/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"LLaVA-NeXT-Video-34B-hf","prompt":"说出你认为中国最宜居的城市","max_tokens":1024,"temperature":0.9,"top_p":0.8}'

(2)容器内验证: 如果没有安装curl,一般需要先安装curl

apt-get update
apt-get install curl

容器内拉起,端口一般就是8000

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"LLaVA-NeXT-Video-34B-hf","prompt":"说出你认为中国最宜居的城市","max_tokens":1024,"temperature":0.9,"top_p":0.8}'

3.6 模型性能测试(容器内)

(1)安装测试工具: 目前只支持源码构建安装,请确保安装环境网络畅通(建议在容器里进行)

git clone https://gitee.com/aisbench/benchmark.git
cd benchmark/
pip3 install -e ./

安装过程中会自动安装基础依赖。 由于本工具支持多种模型服务框架(如vLLM、Trition等),需额外安装服务化的依赖

pip3 install -r requirements/api.txt

(2)修改模型任务配置文件 参考如下,各配置项详解参考“AISbench服务化性能测评指南” https://gitee.com/aisbench/benchmark/blob/master/doc/users_guide/performance_benchmark.md

cd benchmark/ais_bench/benchmark/configs/models/vllm_api
vim vllm_api_stream_chat.py 

修改vllm_api_stream_chat.py文件:

from ais_bench.benchmark.models import VLLMCustomAPIChatStream
from ais_bench.benchmark.utils.model_postprocessors import extract_non_reasoning_content

models = [
    dict(
        attr="service",
        type=VLLMCustomAPIChatStream,
        abbr='vllm-api-stream-chat',
        path="/model",
        model="LLaVA-NeXT-Video-34B-hf",
        request_rate = 1,
        retry = 2,
        host_ip = "localhost",
        host_port = 8000,
        max_seq_len = 1024,
        max_out_len = 1024,
        batch_size=500,
        trust_remote_code=False,
        generation_kwargs = dict(
            temperature = 0,
            top_k = 10,
            top_p = 0.95,
            seed = None,
            repetition_penalty = 1.03,
            ignore_eos = True,
        ),
        pred_postprocessor=dict(type=extract_non_reasoning_content)
    )
]                   

(3)测试用例文件修改 性能测试可以基于测试用例直接生成测试数据

cd /workspace
cd benchmark/ais_bench/datasets/synthetic
vim synthetic_config.py         

synthetic_config.py文件示例

synthetic_config = {
    "Type":"string",   # [tokenid/string],生成的随机数据集类型,支持固定长度的随机tokenid,和随机长度的string,两种类型的数据集
    "RequestCount": 500, # 生成的请求条数,应与模型侧配置文件中的 decode_batch_size 一致
    "StringConfig" : {  # string类型的随机数据集的配置相关项,请参考以上注释处:"StringConfig中的随机生成方法参数说明"
        "Input" : {     # 每条请求的输入长度
            "Method": "uniform",
            "Params": {"MinValue": 1024, "MaxValue": 1024}
        },
        "Output" : {    # 每条请求的输出长度
            "Method": "uniform",
            "Params": {"MinValue": 1024, "MaxValue": 1024}
        }
    },

}

(4)执行性能测试命令:

ais_bench --models vllm_api_stream_chat --datasets synthetic_gen -m perf

测试时,可以通过修改vllm_api_stream_chat.py文件中request_rate = 0, batch_size=500, max_seq_len = 1024, max_out_len = 1, synthetic_config.py文件中的  input 和output的值来找到最佳性能配置

测试时可以通过打开多个窗口,一个模型配置文件窗口,一个测试工具输入窗口,一个测试窗口。这样修改配置后,不需要推出页面,保持配置即可进行测试。