不考虑时延的极限吞吐的调试方式如下所示。
./bin/mindieservice_daemon
回显如下则说明启动成功。
Daemon start success!
服务启动后,可通过info级打屏日志k_caches[0].shape=torch.Size([npuBlockNum, x, x, x])中torch.Size的第一个值获取npuBlockNum的值,如图1所示,与2.a中计算出来的值一致。
重开一个窗口,使用以下命令发送请求,获取当前的吞吐量(GenerateSpeedPerClient),如图2所示,此时吞吐量为2.8453 token/s。
benchmark \
--DatasetPath "/{模型库安装路径}/tests/modeltest/dataset/full/GSM8K" \ //数据集路径
--DatasetType "gsm8k" \ //数据集类型
--ModelName LLaMa3-8B \ //模型名称
--ModelPath "/{data}/LLaMa3-8B" \ //模型路径
--TestType client \ //模式选择
--Http https://{ipAddress}:{port} \ //请求url
--Concurrency 1000 \ //并发数
--TaskKind stream \ //Client不同推理模式,此处为文本流式推理
--Tokenizer True \ //分词向量化标识
--MaxOutputLen 512 //最大输出长度
当“maxBatchSize”的值为600时,此时的吞吐量明显下降,停止调高“maxBatchSize”的值。
综上所述,当“maxBatchSize”的值在500左右时,可达到极限吞吐。如需获取达到极限吞吐时更精准的“maxBatchSize”值,请根据以上操作步骤继续调试。