用于发布使用基准人工智能框架的度量的客户端库。

benchmarkai-client-lib的Python项目详细描述


一个小库,用于在使用基准ai基础设施运行工作流时发布度量。

安装

pip install benchmarkai-client-lib

API

库提供单一方法:

def emit(metrics: Dict[str, float])

ps:这个库也适用于python 2,它没有类型系统。

示例用法

frombenchmarkaiimportemitdefmy_fancy_benchmark():importtimebegin=time.time()forepochinrange(100):execute_training()elapsed_time=time.time()-beginemit({"alexnet.batchsize16.latency":elapsed_time})

性能

作为作者,您不必担心emit()速度慢,因为它有两个功能:

  • metrics序列化为json
  • 将此字符串写入文件(请参阅内部详细信息)

所以它会尽可能的慢,这是相当快的操作。

接受值

metrics参数提供的字典的格式为:

"metric-name" => value

  • metric-name是一个string
  • value是一个float

运行测试

要设置运行测试的环境,将提供文件test-environment.yml。这个conda环境文件 具有运行测试所需的所有依赖项。

$ conda env create -f test-environment.yml
$ conda activate benchmark-ai-client-library-tests
$ tox

内部细节

模式

从现在起,库可以在以下模式下使用:

  1. stdout打印(这是default模式)
  2. 基准人工智能基础设施

要控制所需的行为,可以将环境变量BENCHMARK_AI设置为以下值之一:

  • stdout:默认模式。在此配置中,emit()方法等价于:

    defemit(metrics):importjsonprint(json.dumps(metrics))
  • fifo:在基准ai基础设施中运行时,这是使用的模式。

先进先出模式

在这种模式下,emit()方法将json字符串写入创建为 named pipe。它不会not写入stdout

请记住,客户端库不会not创建named pipe文件,这是委托给 “守护进程”,它将与基准ai基础设施中的基准进程一起运行。

守护进程负责:

  • 创建命名管道
  • 阅读此管道中的内容
  • 将此管道的内容发布到Metrics服务器(例如:Elastic Search、CloudWatch等)

第一次调用^ {CD1>},它检查文件的存在并使用它。如果它不存在,它 等待一段时间,然后放弃并引发异常FifoNotCreatedInTimeError

先进先出模式配置

这些环境变量控制客户端库的行为:

  • BENCHMARK_AI_FIFO_FILEPATH:将创建为命名管道的文件的路径。 默认值:/tmp/benchmark-ai-fifo
  • ^ }:客户端库将等待的最大时间量 要创建的命名管道文件。 类型为float,单位为seconds,默认值为10
  • BENCHMARK_AI_FIFO_WAIT_TIME_STEP:客户端库在每次检查之前等待的时间 再次检查^ {EM1}$$命名管道文件EEM>的存在性。 类型为float,单位为seconds,默认值为0.5

important:这些环境变量用于内部使用基准ai基础设施。它们被列出 此处仅供参考。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
二维数组的java置换   eclipse如何在java中提供读取文件的相对地址   java将嵌套文档添加到嵌套文档数组中   java为什么要删除。导致maven编译错误的目录?   java Weave AspectJ方面依赖于约束注释   java如何在listview中选择后自动播放视频序列?   JavaEEWeb应用程序与Web服务   JavaSpringWebFlow提交包含新项的数组   java Try and Catch with JOption无法按预期工作   java如何使用导航抽屉中的字符串链接本地HTML页面?   java如何确保关闭文件   这能在一个Mac桌面应用程序中使用Java后端提供的ObjectiveC UI吗?   protobuf生成的代码导致的java Eclipse构建循环(与Maven Project Builder相关)   java JPA onetomany过滤   java实体管理器批量更新提供了组织。冬眠PersistentObjectException:传递给persist的分离实体   macos java。lang.RuntimeException:无法启动Selenium会话:   java Glide转换选择墙纸的位置?   java(在实体上使用@ConditionalOnProperty的变通方法)   Android系列。对java进行排序。lang.NullPointerException