From 62f765bf4b93c6469117a26e6b9a62b02e37f7fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E9=9F=B5=E6=B8=85?= Date: Wed, 27 Aug 2025 16:49:09 +0800 Subject: [PATCH] feature: add --- README.md | 50 +++++++++++++++++-- docker-images/Dockerfile | 8 --- docker-images/a100.dockerfile | 8 +++ .../{launch_service => a100_launch_service} | 5 +- docker-images/mlu370.dockerfile | 7 +++ 5 files changed, 63 insertions(+), 15 deletions(-) delete mode 100644 docker-images/Dockerfile create mode 100644 docker-images/a100.dockerfile rename docker-images/{launch_service => a100_launch_service} (96%) mode change 100755 => 100644 create mode 100644 docker-images/mlu370.dockerfile diff --git a/README.md b/README.md index 9282450..e45f539 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,46 @@ 该模型测试框架在寒武纪mlu370 (X8/X4)加速卡上,基于vllm 推理引擎,适配了 Qwen1.5-1.8B-Chat 模型。 * Qwen1.5-1.8B-Chat 是通义千问系列中一款约18亿参数、轻量级的中英文对话大模型,专为高效推理和多场景聊天交互设计。 +* Llama-2-7b-chat-hf:Meta 发布的 LLaMA 2 系列中 70 亿参数的对话优化版开源大模型,适合多轮聊天与通用任务。 +* ChatGLM3-6B:智谱 AI 推出的第 3 代 ChatGLM 系列中 60 亿参数的中英双语对话大模型,支持推理、代码和多任务能力。 +## Quick Start +1. 首先从modelscope上下载文本生成大模型,如`Qwen1.5-1.8B-Chat` +```bash +modelscope download --model Qwen/Qwen1.5-1.8B-Chat --local_dir /mnt/contest_ceph/wenyunqing/models/Qwen1.5-1.8B-Chat +``` +2. 拉取vllm server 镜像. +``` +docker pull harbor.4pd.io/mic-llm-x/combricon_vllm_mlu_wyq:1.0.0 +``` +3. 启动docker +```bash +docker run -it --rm \ + -p 100086:8000 \ + -e MLU_VISIBLE_DEVICES=6 \ + --name test_wyq1 \ + -v /mnt/contest_ceph/wenyunqing/models/Qwen1.5-1.8B-Chat:/model:rw \ + --device=/dev/cambricon_dev6:/dev/cambricon_dev6 \ + --device=/dev/cambricon_ctl:/dev/cambricon_ctl \ + --device=/dev/cambricon_ipcm6:/dev/cambricon_ipcm6 \ + --entrypoint=/bin/bash \ + --privileged harbor.4pd.io/mic-llm-x/combricon_vllm_mlu_wyq:1.0.0 +``` +注意需要在本地使用寒武纪 mlu370 芯片 +4. 测试服务 +```bash +curl http://localhost:80/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llm", + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "你知道黄健翔著名的”伟大的意大利左后卫“的事件吗"} + ], + "max_tokens": 200, + "temperature": 0.7 + }' +``` ## 模型测试服务原理 对于大模型文本生成,目前业界还没有一个完全统一的大模型文本生成 API 标准,但正在逐渐出现一些事实上的“通用接口规范”: @@ -110,10 +149,13 @@ curl http://localhost:80/v1/chat/completions \ 测试框架集成了现成的可用的镜像`harbor.4pd.io/mic-llm-x/combricon_vllm_mlu_wyq:1.0.0`(`launch_service `作为入口),可以用于本地端(如有GPU卡)测试。 -作为测试对比,我们也提供a100相对应的镜像 `harbor.4pd.io/sagegpt-aio/pk_platform/vllm-installed_wyq:1.0.0` -## 寒武纪mlu370-X8上文本生成模型运行测试结果 -在mlu370-X8上对部分视觉理解多模态模型进行适配,测试方式为在 Nvidia A100 和 mlu370-X8 加速卡上对10个图片相关问题回答,获取运行时间 +作为测试对比,我们也提供a100相对应的镜像 `harbor.4pd.io/sagegpt-aio/pk_platform/vllm-installed_wyq:1.0.1` +## 寒武纪mlu370-X4上文本生成模型运行测试结果 +在mlu370-X8上对部分视觉理解多模态模型进行适配,测试方式为在 Nvidia A100 和 mlu370-X4 加速卡上对10个图片相关问题回答,获取运行时间 -| 模型名称 | 模型类型 | 适配状态 | mlu370-X8首字延迟(秒) | mlu370-X8输入处理速度(字每秒) | mlu370-X8输出速度(字每秒) | mlu370-X8输出质量 | Nvidia A100字延迟(秒) | Nvidia A100输入处理速度(字每秒) | Nvidia A100输出速度(字每秒) | Nvidia A100输出质量 | +| 模型名称 | 模型类型 | 适配状态 | mlu370-X4首字延迟(秒) | mlu370-X4输入处理速度(字每秒) | mlu370-X4输出速度(字每秒) | mlu370-X4输出质量 | Nvidia A100字延迟(秒) | Nvidia A100输入处理速度(字每秒) | Nvidia A100输出速度(字每秒) | Nvidia A100输出质量 | | ------------------- | ------------------- | -------------------| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | | Qwen1.5-1.8B-Chat | Qwen 系列 | 成功 |0.124 | 10086.6 | 89.6 | 53.8 | 0.069 | 19601.3 | 154.3 | 61.2| +| Llama-2-7b-chat-hf | Llama 系列 | 成功 |0.262 | 6147.5 | 62.2 | 75.0 | 0.083 | 11776.5 | 146.7 | 31.2| +| chatglm3-6b | chatglm 系列 | 成功 |0.244 | 4974.0 | 34.1 | 80.0 | 0.053 | 15788.3 | 110.6 | 80.0| + \ No newline at end of file diff --git a/docker-images/Dockerfile b/docker-images/Dockerfile deleted file mode 100644 index a9809d1..0000000 --- a/docker-images/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM harbor.4pd.io/mic-llm-x/combricon_vllm_mlu:v1.0_0510 - -WORKDIR /workspace - -COPY launch_service /workspace - - -CMD ["bash", "launch_service"] diff --git a/docker-images/a100.dockerfile b/docker-images/a100.dockerfile new file mode 100644 index 0000000..22d442e --- /dev/null +++ b/docker-images/a100.dockerfile @@ -0,0 +1,8 @@ +FROM harbor.4pd.io/sagegpt-aio/pk_platform/vllm-installed:v0.10.0 + +WORKDIR /workspace + +COPY a100_launch_service /workspace +COPY template.jinja /workspace + +ENTRYPOINT ["bash","/workspace/a100_launch_service"] diff --git a/docker-images/launch_service b/docker-images/a100_launch_service old mode 100755 new mode 100644 similarity index 96% rename from docker-images/launch_service rename to docker-images/a100_launch_service index 2b84376..52d76ba --- a/docker-images/launch_service +++ b/docker-images/a100_launch_service @@ -7,7 +7,7 @@ export date DEFAULT_HOST="0.0.0.0" -DEFAULT_PORT="8000" +DEFAULT_PORT="80" DEFAULT_SERVED_MODEL_NAME="llm" DEFAULT_MODEL_PATH="/model" DEFAULT_MAX_MODEL_LEN="8192" @@ -47,7 +47,7 @@ CMD_ARGS+=(--model "$MODEL_PATH_VAL") CMD_ARGS+=(--max-model-len "$MAX_MODEL_LEN_VAL") CMD_ARGS+=(--tensor-parallel-size "$TENSOR_PARALLEL_SIZE_VAL") CMD_ARGS+=(--max-num-seqs "$MAX_NUM_SEQS_VAL") -CMD_ARGS+=(--trust-remote-code --dtype float16 --block-size 8192) +CMD_ARGS+=(--trust-remote-code --dtype float16 --chat-template /workspace/template.jinja) echo "--------------------------------------------------" echo "Starting VLLM OpenAI API Server..." echo "Using effective arguments:" @@ -66,4 +66,3 @@ echo "python3 -m vllm.entrypoints.openai.api_server ${CMD_ARGS[*]}" echo "--------------------------------------------------" python3 -m vllm.entrypoints.openai.api_server "${CMD_ARGS[@]}" - diff --git a/docker-images/mlu370.dockerfile b/docker-images/mlu370.dockerfile new file mode 100644 index 0000000..e68ad52 --- /dev/null +++ b/docker-images/mlu370.dockerfile @@ -0,0 +1,7 @@ +FROM harbor.4pd.io/mic-llm-x/combricon_vllm_mlu:v1.0_0510 + +WORKDIR /workspace + +COPY mlu370_launch_service /workspace + +ENTRYPOINT ["bash","/workspace/mlu370_launch_service"]