问题:

通集采正在进行测试用例的摸底,目前发现DeepSeek-R1-Distill-Llama-70B在C-Eval上面的精度比较低

动图封面

客户要求的约90的精度

bad cases发现很多都是重复输出

排查思路:

用的是xxx-64gb的机器,模型后参数设置

"seed": null,

"temperature": 0,

"top_p": 0.95

模型权重是否下载正确

和网上版本对比发现没有问题

尝试用数据子集再跑一遍模型

开启确定性计算,用DeepSeek-R1-Distill-Llama-70B模型跑,发现仍然很多重复回答

动图封面

把模型后参数

"temperature": 0,

"top_p": 0.95删掉之后跑,按照官方的规定来看,是用了temperature = 1和top-p=1 很强的随机性。但是在48条数据集中,只有一条跑出来是胡言乱语,但是尝试用curl只跑这一条数据集并不会胡言乱语,可以正常输出

尝试用更多的并发一起跑 看响应结果 128batch size

对比相同输入和权重之下在GPU上的精度

子集上测试

GPU采用的模型是llama,NPU上模型deepseek但是保持tokenizer版本0.20.3和NPU版本保持一致,transformers版本是4.47.0.dev0,GPU上跑子集ceval-tax_accountant在设置后处理参数temperature=0得到的精度是51.02,相比于NPU反而还是NPU的结果较好。查看GPU输出结果预测,大多数都是存在语句重复胡言乱语;根据官网所说:

动图封面

动图封面

temperature=0.6,top-p=0.95可以预防胡言乱语。在使用这些后处理参数后得到的精度是57.14,有大幅度提升(temperature=0的精度是53.06),并且在看输出,仅存在一条胡言乱语

GPU服务化命令

容器:jiang-vllmv0.7.3

确定性计算:

export LCCL_DETERMINISTIC=1 export HCCL_DETERMINISTIC=1 ATB_MATMUL_SHUFFLE_K_ENABLE=0 ATB_LLM_LCOC_ENABLE=0

起服务命令:vllm serve /home/jiangkun/DeepSeek-R1-Distill-Llama-70B/ --served-model-name llama --trust-remote-code --max-num-seqs 1000 -tp 8 --port 30000

模型权重放置路径

数据集:data或者datasets底下

AISbench测试说明

以下,对AISbench的测试步骤与测评标准进行介绍。

1.测试步骤

(1)拉取代码与安装

安装步骤如下所示

git clone https://gitee.com/aisbench/benchmark.git

cd benchmark/

pip3 install -e ./

注:安装AISbench需要先安装gcc,g++,make和cmake。建议使用Python3.10进行安装,如果使用Python3.11及以上进行安装,需先对依赖中的pyext-0.7进行手动源码安装,下载pyext-0.7源码,修改pyext-0.7/pyext.py文件如下,再用pip3 install -e ./进行安装。

import inspect

if not hasattr(inspect, 'getargspec'):

inspect.getargspec = inspect.getfullargspec

math500数据集的评测需要引入额外的第三方库,需要安装额外依赖

pip3 install -r requirements/extra.txt

如果查看输入和url 可以在如下脚本中print,输出在output的一个文件中

动图封面

查看accuracy:

https://gitee.com/aisbench/benchmark/blob/master/ais_bench/benchmark/utils/text_postprocessors.py 路径下文件

动图封面

可以参考prompt输入路径找到该指定文件

如果要找token id输出的地方:

pip3 show vllm

然后再路径下找vllm 根据该网址

大模型推理框架 vLLM 源码解析(一) - marsggbo - 博客园

全集测试

为了验证是否是通过修改后处理参数可以提升精度:temperature=0.6,top-p=0.95能使得胡言乱语程度普遍大幅度下降,在GPU上运行全集测试精度,得到精度75.26,有64条在1344条中是胡言乱语。

但是精度仍然未达到客户预期,思考是否是prompt导致的精度问题:原本的prompt格式:'以下是中国关于{_ch_name}考试的单项选择题,请选出其中的正确答案。回答的最后一行应采用以下格式:”answer:$LETTER“(不带引号),其中LETTER 是ABCD之一。回答之前先一步步思考。\n\n{{question}}\nA. {{A}}\nB. {{B}}\nC. {{C}}\nD. {{D}}’继续尝试的prompt格式:'以下是中国关于{_ch_name}考试的单项选择题,请选出其中的正确答案。\n{{question}}\nA. {{A}}\nB. {{B}}\nC. {{C}}\nD. {{D}}\n答案: {{answer}}’和'以下是中国关于{_ch_name}考试的单项选择题,请选出其中的正确答案。\n{{question}}\nA. {{A}}\nB. {{B}}\nC. {{C}}\nD. {{D}}\n <think>\n\n</think> 答案: {{answer}}’ 下一种prompt是为了强制llm没有思考,看是否可以提升精度

第一个不控制llm思考的prompt给到的accuracy是22.21下一个强制llm不思考的prompt给到的accuracy是41.75观察这两个accuracy极低,看bad cases发现,问题出在predictions提取正确选项的过程中:因为prompt没有给固定输出格式,所以答案出现的很随机,出现答案之前的词也不固定

因为找predictions中正确选项的规则如下:是通过找文本中第一个出现的大写字母

所以出现的问题有如下:

动图封面

动图封面

动图封面

排查步骤目的结果
检查mindie版本和模型权重确认模型下载是完整的以及版本和模型兼容mindie版本2.0.T6,模型权重下载和魔塔社区一致
用相同的工具ais_bench和相同模型跑小的数据子集验证精度出现问题,会重复回答确实出现大比例的精度问题,回答重复较多
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐