已关闭
[Bug]: 量化精度自动调优中的yaml参数配置,输入参数有误时没有提前做参数校验拦截,影响易用性 #22
mominhua创建于  1月31日关闭于  2月13日
mominhua成员
1月31日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

安装的对应软件版本如下:
https://www.openlibing.com/apps/obsDetails?bucketName=ascend-package
image.png

🐛 问题描述

1、命令行参数中,device没有做参数校验,例如参数值不在可选范围内,直接正常执行,实际应该报错提示参数值不正确
例如:--device cpu

2、alpha参数范围不正确时,日志打印无法看出是哪个参数值的范围不正确
例如:alpha: -1
image.png

3、method参数当前是走到量化之后才开始拦截,可以如dtype参数一样,不在支持范围内的值在前面就开始校验,提前拦截吗

4、part_file_size没有做参数校验,设置成负数后在保存权重阶段才报错,提示路径不存在,应该提前拦截,给出合理日志提示,提升易用性

5、metadata下的所有参数都没有做参数校验,输入不匹配的值或类型不正确的值等,没有提前校验拦截,给出合理日志提示,提升易用性

6、demand下的参数没有做参数校验,输入不匹配的值或类型不正确的值等,没有提前校验拦截,给出合理日志提示,提升易用性

7、evaluation-aisbench下的参数,输入不匹配的值或类型不正确的值等,没有提前校验拦截,给出合理日志提示,提升易用性

8、evaluation-datasets下的参数,输入不匹配的值或类型不正确的值等,没有提前校验拦截,给出合理日志提示,提升易用性

9、inference_engine下的参数,输入不匹配的值或类型不正确的值等,没有提前校验拦截,给出合理日志提示,提升易用性

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
Mmominhua成员
1月31日 关联了里程碑:MindStudio 26.0.0
Mmominhua成员
1月31日 添加了label:medium-priority
xyxin_006
xyxin_006成员
1月31日 评论:

您好,您的问题已收到,我们将尽快核查。

likedislike
ascend-robotascend-robot成员
1月31日 添加了label:bug
xyxin_006
xyxin_006成员
1月31日 评论:

/label add triaged

likedislike
ascend-robotascend-robot成员
1月31日 添加了label:triaged
Aanreywmh成员
2月3日 关联了看板:msit
xyxin_006xyxin_006成员
2月4日 关联了pull request:【bugfix】add auto tune param validation
xyxin_006
xyxin_006成员
2月6日 评论:

问题已在PR110中修正,请验证 @mominhua

likedislike
xyxin_006
xyxin_006成员
2月6日 评论:

/label add resolved

likedislike
ascend-robotascend-robot成员
2月6日 添加了label:resolved
Mmominhua成员
2月13日 issue状态由 TODO 改变为 DONE
Mmominhua成员
2月13日 关闭了 issue
mominhua成员
2月13日 评论:

测试通过,问题已解决

验证yaml中的evaluation下的所有参数(除了动态参数不做校验:inference_engine-env_vars、inference_engineargs、aisbench-generation_kwargs、aisbench-extra_args、datasets-chat_template_kwargs、datasets-extra_args),均做了异常值校验

1、针对inference_engine参数:
● type:当前只支持vllm-ascend,其他字段报不支持错误
● entrypoint:str类型校验,非空字符串校验,长度校验
● env_vars:环境变量部分,属于动态参数,只校验env_vars为字典类型,不对其中具体参数进行校验
● served_model_name:str类型校验,非空字符串校验,长度校验
● host:str类型校验,安全校验
● port:int类型校验,可用端口校验
● health_check_endpoint:str类型校验,安全校验
● startup_timeout:int类型校验,大于零校验
● args:属于动态参数,用于拼接命令行,只校验args为字典类型,不对其中具体参数进行校验

2、针对evaluation-evaluation-aisbench参数
● binary:aisbench启动命令,固定为ais_bench
● mode:str类型校验,字符串长度校验
● timeout:int类型校验,大于零校验
● cleanup_model_config:bool类型校验
● model_meta:下面的参数都做str类型校验,字符串长度校验
● request_rate:float类型校验,大于零校验
● pred_postprocessor:str类型校验,字符串长度校验
● retry:int类型校验,大于等于零校验
● batch_size:int类型校验,大于零校验
● max_out_len:int类型校验,大于零校验
● trust_remotye_code:bool类型校验
● generation_kwargs:字典类型校验,动态参数,不对其中具体参数进行校验
● extra_args:list类型校验,动态参数,不对其中具体参数进行校验
● log_dirs:str类型校验,字符串长度校验

3、针对evaluation-evaluation-datasets参数
● config_name:str类型校验,非空字符串校验,长度校验
● mode:str类型校验,字符串长度校验
● request_rate:float类型校验,大于等于零校验
● max_out_len:int类型校验,大于零校验
● returns_tool_calls:bool类型校验
● api_chat_type:str类型校验,非空字符串校验,长度校验
● chat_template_kwargs:dict类型校验,动态参数,不对其中具体参数进行校验
● extra_args:list类型校验,动态参数,不对其中具体参数进行校验

4、针对evaluation-evaluation-precheck参数
● type:仅支持expected_answer和garbled_test字段,其他字段会报错
● test_case:不同type有区别,针对具体语句进行str类型校验,长度校验
● max_tokens:int类型校验,大于零校验
● timeout:float类型校验,大于零校验

5、evaluation-evaluation下其他参数
● type:当前仅支持指定 aisbench
● host:str类型校验,安全校验
● port:int类型校验,可用端口校验
● served_model_name:str类型校验,非空字符串校验,长度校验

6、evaluation-demand-expectations字段
● dataset:指定数据集在evaluation-evaluation-datasets下没有出现,会报错
● target:float类型校验,大于零校验
● tolerance:float类型校验,大于等于零校验

likedislike
zeshengzongzeshengzong成员
3月11日 关联了里程碑:MindStudio 26.0.0