bytedance / ByteMLPerf

AI Accelerator Benchmark focuses on evaluating AI Accelerators from a practical production perspective, including the ease of use and versatility of software and hardware.
https://bytemlperf.ai/
Apache License 2.0
188 stars 50 forks source link

修复已知BUG,增加feature #48

Closed MikuGhoul closed 6 months ago

MikuGhoul commented 6 months ago

增加接入文档:https://bytedance.larkoffice.com/docx/ZoU7dkPXYoKtJtxlrRMcNGMwnTc

Bugfix:

  1. 在input长度比较小的时候,first token latency数据偏低(受框架开销影响较大):scheduler获取请求方式从sleep/weakup/check切换为condition notify,减少延迟
  2. throughput计算的时候,分母的时间是加上了模型加载和server、client进程启动的总时间:开始计时时间从服务启动修正为每次client开始发起grpc请求,并且每轮测试reset计时
  3. 时延计算时,是按照字符串长度,不是按照token个数:修改GRPC协议,支持server端返回completion_tokens字段,每产生一个token增加1
  4. 压测时报timeout错误/压测时报grpc获取response失败:修改client数量为batch_size,避免大于worker数量时产生timeout,修改同步GRPC协议为异步GRPC,修改GRPC worker数量为最大100,避免有client饥饿。
  5. 修复精度测试 短output时,概率性logits dump文件被覆盖问题
  6. throughput计算时,修改使用当前时间为最后一次提交时间,减少误差

Feature:

  1. 抽象卡间通信类,实现GPU从NCCL修改为IPC,删除非RANK0卡周期sleep逻辑,进行堵塞获取请求,减少延迟
  2. 修改packet退出判断条件,支持finish_reaseon字段,后续可以通过GRPC返回给client(如需)
  3. 修改chatglm/chatglm2/llama2的inputs,从model接口改为手动构造,来支持多卡之间用python data通信而不是CUDA tensor
  4. benchmark client支持backoff重试策略
  5. performance 测试支持手动构造数据,例如自定义压测input长度为2048、output长度为256,压测并发数量为4时的延迟与吞吐性能
  6. 增加accuracy与performance测试格式、debug信息与exception处理
  7. server端GRPC从同步切换为异步,优化消息格式,支持accuracy与performance测试时不同的返回消息
  8. 修改model.json定义,删除dataset字段
  9. 修改workload.json定义,删除压测client,使用batch_size替代,增加input_tokens配置,增加perf_time配置,增加dataset配置
  10. 增加grpc序列化与反序列化对更多数据类型的适配