AISBench ARM64 测试镜像构建简记

发表于 15 小时前  20 次阅读


文章目录

一、背景

需要在昇腾 ARM 节点上做 vLLM/MindIE 服务化性能测试。测试侧工具使用 AISBench,并叠加 aisbench_auto_tools_prefix 自动测试脚本,用于生成 GSM8K 格式数据集、执行 prefix cache 压测、统计命中率和导出结果 CSV。

本次构建在 Intel Mac 上进行,通过 Docker Buildx + QEMU 产出 linux/arm64 镜像,再导出 tar.gz 部署到 ARM/NPU 服务器。

二、构建方案

AISBench 官方已提供 aarch64 镜像,因此没有在镜像内重新编译整套 AISBench 依赖,而是以官方 aarch64 镜像作为基础层:

  • 基础镜像:ghcr.io/aisbench/aisbench_benchmark:v3.1-20260630-master-ubuntu22.04-py310-aarch64
  • GHCR 直连不稳定时,改用华为云 OBS 的官方离线包加载:
  • 文件:ais_bench_benchmark_image_v3.1-20260630-master-ubuntu22.04-py310-aarch64.tar.gz
  • 将 aisbench_auto_tools_prefix 复制到镜像内 /opt/aisbench_auto_tools_prefix
  • 使用 config.docker.py 覆盖默认 config.py,路径对齐 AISBench 官方镜像结构

三、镜像内容

组件版本/路径
操作系统Ubuntu 22.04
架构arm64 / aarch64
Python3.10.12
AISBenchv3.1-20260630-master
torch2.12.0+cpu
transformers5.12.1
pandas2.3.3
AISBench 工作目录/benchmark
自动测试工具/opt/aisbench_auto_tools_prefix
默认输出目录/workspace/outputs
默认数据集目录/datasets

四、构建过程

首先加载官方 aarch64 基础镜像:

docker load -i ais_bench_benchmark_image_v3.1-20260630-master-ubuntu22.04-py310-aarch64.tar.gz

然后执行 ARM64 构建:

docker buildx build \
  --platform linux/arm64 \
  --load \
  -f Dockerfile.arm64 \
  -t aisbench-arm64:latest \
  .

Dockerfile 的关键步骤:

ARG AISBENCH_IMAGE=ghcr.io/aisbench/aisbench_benchmark:v3.1-20260630-master-ubuntu22.04-py310-aarch64
FROM ${AISBENCH_IMAGE}

COPY . /opt/aisbench_auto_tools_prefix

RUN cp config.docker.py config.py \
    && python3 -m compileall -q . \
    && python3 aisbench_test.py --help >/dev/null

WORKDIR /workspace
ENTRYPOINT ["python3", "/opt/aisbench_auto_tools_prefix/aisbench_test.py"]

五、验证结果

构建完成后在 QEMU 下验证了以下内容:

  • uname -m 返回 aarch64
  • python3 -V 返回 Python 3.10.12
  • torch/transformers/pandas 均可正常导入
  • ais_bench --help 正常输出
  • 自动工具生成的 vllm_api_chat_temp 配置可被 ais_bench --search 解析
  • gsm8k_gen_0_shot_cot_str_perf 性能数据集配置可被正常找到

最终镜像大小约 2.38GB。

六、使用与导出

运行压测示例:

docker run --rm --platform linux/arm64 --network host \
  -v /host/dataset:/datasets \
  -v /host/model_weights:/workspace/model_weights \
  -v /host/output:/workspace/outputs \
  aisbench-arm64:latest \
  --input_len 2048 --output_len 2048 --data_num 160 --concurrency 40 --request_rate 10

需要修改模型服务信息时,可以挂载自定义 config.py:

-v /host/config.py:/opt/aisbench_auto_tools_prefix/config.py

其中关键配置为:

MODEL_NAME = "模型名"
MODEL_PATH = "/workspace/model_weights"
HOST_IP = "服务IP"
HOST_PORT = "8004"

导出到 ARM 服务器:

docker save aisbench-arm64:latest | gzip > aisbench-arm64.tar.gz
docker load -i aisbench-arm64.tar.gz

简记。

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客