用于发布使用基准人工智能框架的度量的客户端库。
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
内部细节
模式
从现在起,库可以在以下模式下使用:
- stdout打印(这是default模式)
- 基准人工智能基础设施
要控制所需的行为,可以将环境变量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基础设施。它们被列出 此处仅供参考。