ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ColossalAI-Inference 怎么运行 LLaMA 离线推理基准测试?

ColossalAI-Inference 怎么运行 LLaMA 离线推理基准测试? ColossalAI-Inference 怎么运行 LLaMA 离线推理基准测试【免费下载链接】ColossalAIMaking large AI models cheaper, faster and more accessible项目地址: https://gitcode.com/GitHub_Trending/co/ColossalAI如果你想知道 ColossalAI-Inference 引擎跑 LLaMA 时的实际吞吐、每 token 延迟和显存占用仓库里提供了一个现成的离线基准脚本 benchmark_llama.py配套批量脚本 run_benchmark.sh。脚本内置--test_random_weight模式按指定配置构造模型并使用随机权重不加载预训练权重因此不需要先下载完整模型文件适合做纯性能测量。本文按“单条命令 → 批量脚本 → 多 GPU 与模式对比”的顺序给出完整操作路径。运行前的准备基准脚本对运行环境有三点要求均在源码中可以直接核对CUDA GPU脚本内部使用get_accelerator()获取当前设备并统计 CUDA 显存run_benchmark.sh还依赖nvidia-smi查询 GPU 列表和显存占用因此需要一台可用nvidia-smi的 NVIDIA GPU 机器。ColossalAI 依赖仓库 requirements/requirements.txt 声明了torch2.2.0,2.5.1、transformers4.51.3等版本约束安装 ColossalAI 时保持这套环境。vllm 包benchmark_llama.py 第 9 行在文件顶部from vllm import LLM, SamplingParams即无论--mode选什么运行该脚本前都需要环境里装有 vllm。模型不需要预先下载使用--test_random_weight时模型权重随机初始化tokenizer 使用hf-internal-testing/llama-tokenizer见 benchmark_llama.py。如果不加该参数脚本会要求提供--model_path指向真实预训练权重否则断言失败。用单条命令跑一次基准测试最短路径是直接执行脚本例如测 LLaMA-2 7B 配置、随机权重、batch size 16、输入长 128、输出长 128python3 examples/inference/llama/benchmark_llama.py \ -m llama2-7b \ -b 16 -s 128 --output_len 128 \ --test_random_weight关键参数说明完整参数在脚本argparse定义中-m / --model模型配置名可选toy、llama-7b、llama-13b、llama2-7b、llama2-13b、llama3-8b、llama3-70b。这些对应脚本内置的LlamaConfig结构层数、hidden size 等而不是某个具体 checkpoint。-b / --batch_sizebatch size默认 8。-s / --seq_len输入序列长度--output_len输出长度默认 128。--mode选择推理框架可选colossalai默认、transformers、vllm用于对比 ColossalAI-Inference 引擎与其他框架的离线生成性能。--dtypefp16默认、fp32或bf16。--test_random_weight使用随机权重跑性能测试不加则必须给--model_path。--cb / --continous_batching与--mbsz启用 continuous batching 时--mbsz指定每一步实际进入引擎的 batch size。--profile启用 torch profilertrace 输出到./tb_log_{batch_size}_{mode}目录文档中的目录命名格式{batch_size}和{mode}会被实际值替换--nsys启用 nsys 分析窗口。脚本通过colossalai.launchspawn自行拉起进程所以用python3直接启动即可不需要再套colossalai run。用 run_benchmark.sh 批量扫参数run_benchmark.sh 用于一次性扫描多种负载组合。它的行为先执行CUDA_VISIBLE_DEVICES_set_n_least_memory_usage 1通过nvidia-smi --query-gpumemory.used找出当前显存占用最低的 1 张 GPU并把结果写入环境变量CUDA_VISIBLE_DEVICES随后固定在这张卡上测试以-m llama2-7b --tp_size 1 --test_random_weight为固定项三重循环遍历input_len取 128/512/1024output_len取 128/256bsz取 16/32/64共 18 组每组运行的实际命令形如python3 ${PY_SCRIPT} -m llama2-7b --tp_size 1 -b 16 -s 128 \ --output_len 128 --mode colossalai --test_random_weight \ | tee logs/16_128_128_colossalai_GPU型号.txt其中${PY_SCRIPT}是脚本相对自身目录解析出的benchmark_llama.pyGPU型号是nvidia-smi -L识别出的卡名如 A100实际运行时会替换为真实值结果通过tee追加到logs/目录脚本会先mkdir -p logs日志名格式为{bsz}_{input_len}_{output_len}_{mode}_{GPU}.txt。脚本的第一个位置参数是--mode的值即选择被测框架。运行方式bash examples/inference/llama/run_benchmark.sh colossalai对比其他框架时把colossalai换成transformers或vllm。注意两点18 组测试全部在单卡上串行执行仓库 CI 中把该脚本标注为 this test is slow见 test_ci.shCI 直接跳过了它本地跑完整扫描要预留足够时间脚本会修改当前 shell 会话的CUDA_VISIBLE_DEVICES如果你本机还有其他任务占卡建议先确认低显存占用卡确实是空闲卡。多 GPU 与框架对比张量并行把--tp_size设为 GPU 数即可例如--tp_size 2会在 2 张卡上做 Tensor Parallelism脚本内部按nprocsargs.tp_size拉起进程。这与 colossalai/inference/README.md 中InferenceConfig的tp_size默认 1即关闭张量并行语义一致。框架对比--mode colossalai走InferenceEngine内部固定了prefill_ratio1.2、block_size32、use_cuda_kernelTrue的InferenceConfig见 benchmark_llama.py--mode transformers直接使用 HuggingFace 模型generate--mode vllm使用 vllm 的离线LLM接口且此时需要--model_path提供真实模型路径随机权重模式只对非 vllm 路径生效。如何查看基准结果每次运行结束时rank 0 会打印两段汇总对应print_details_info见 benchmark_llama.py。字段结构如下数值随你的机器和参数变化这里只展示文档源码中的输出格式-------Perf Summary------- Whole batch end2end time: 整批生成总耗时 ms Whole batch per token latency: 每 token 平均延迟 ms Throughput: 总吞吐 tokens/s Flops: 按参数规模估算的算力 TFLOPS -------Memory Summary Device:设备------- Max memory allocated: 峰值已分配显存 GB Max memory reserved: 峰值预留显存 GB判断基准是否跑完看是否出现上面这段Perf Summary加显存汇总跑批量脚本时则检查logs/下是否按参数组合生成了 18 个日志文件。Throughput与per token latency来自计时统计Max memory allocated/reserved来自 CUDA 统计接口两者都是脚本真实输出的指标但具体数值取决于 GPU 型号和负载参数不要拿某次运行结果当作固定预期。限制与边界模型名只是内置配置结构-m llama3-70b之类的选择同样需要对应显存规模才能放下批量脚本默认只测llama2-7b。--mode vllm路径不兼容--test_random_weight必须提供--model_path。基准测的是离线批量生成的性能吞吐、延迟、显存不代表在线服务指标ColossalAI-Inference 的在线服务API server是另一条使用路径见 colossalai/inference/README.md。若只想验证引擎能正常做 LLaMA 推理而不做性能测量可用同目录的 llama_generation.py例如colossalai run --nproc_per_node 1 llama_generation.py -m PATH_MODEL --max_length 128PATH_MODEL替换为你的模型路径或模型卡名说明见 examples/inference/llama/README.md。【免费下载链接】ColossalAIMaking large AI models cheaper, faster and more accessible项目地址: https://gitcode.com/GitHub_Trending/co/ColossalAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表