张量算符超自动调谐系统

lorien的Python项目详细描述


Lorien:张量算符的超自动调谐系统

Build Status

Lorien是一个建立在TVM之上的系统,用于大规模地探索/基准测试最佳日程配置 TOPI时间表。在

动机

虽然TVM已经有了一个TOPI(TVM操作员库存)和算法的实现 而对于conv2d和dense等常用运算符的调度,则存在一个挑战 TOPI难以有效提高。在

TOPI的最佳时间表存储在 TopHub, 它是GitHub中的JSON文件。但也存在以下问题。在

  1. 将所有计划存储在单个文本文件中的可访问性和可伸缩性都很低。 每次AutoTVM必须加载整个JSON文件才能找到一个 为工作负载安排配置。在

  2. 当前版本的工作负载和平台覆盖不足。 例如,最新的TopHub仅覆盖690个工作负载 CUDA backend, 包括conv2、depthwise conv2d和5个GPU型号。在

  3. 与每天都有几次提交的TVM相比,TopHub并不经常更新。 因此,某些计划配置已过期,无法实现 再好的表现了。在

由于使用TVM CI对每个请求的性能进行基准测试是不切实际的,因此我们需要 一个单独的系统,定期对存储的计划配置进行基准测试和更新。在

命令行接口和示例用法

系统有一个完整的CLI,其中包含分层命令。所有命令也可以 以YAML格式在配置文件中指定,并使用前缀“@”展开它们。 有关CLI的用法,请参阅以下示例,configs/samples有关配置的示例。 注意每个命令的完整描述都可以通过help命令检索:

python3 -m lorien <commands> -h
  • 从胶子CV模型中提取工作负载。在
^{pr2}$
  • 从TF模型提取工作负载。在
python3 -m lorien generate extract tf --model ./mobilenet.pb --target llvm
  • 从胶子CV模型中提取工作负载并对其进行变异以生成新的工作负载。在
python3 -m lorien generate mutate modelzoo rules.yaml --model alexnet --target llvm
  • 使用RPC服务器优化工作负载。在
# tune.yaml
rpc:
    llvm -mcpu=skylake-avx512:
      - localhost:18871
db:
    endpoint_url:
        http://localhost:10020
log-s3-bucket: saved-tuning-logs
ntrial: 3000
python3 -m lorien tune @tune.yaml @gcv_workloads_llvm.yaml

系统要求

  • Python 3.6+

  • Amazon DynamoDB(local或aws):DynamoDB用于存储和维护调整后的时间表。 您可以选择1)启动local version 并指定端点URL(例如--db "endpoint_url: http://<your IP>:8000"),2)或启动AWS服务,configure 并在调用调优时指定区域名称(例如--db "region_name: us-west-1")。在

  • AWS S3(可选):S3用于存储完整的调整日志(AutoTVM生成的JSON文件)。这是一个可选要求, 因此,如果您没有指定--log-s3-bucket bucket_name,则不会上载完整的调整日志,而只上载最好的日志 计划配置将提交给发电机B。在

文件

待定

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

推荐PyPI第三方库


热门话题
JavaHTTP。请求侦听器   java Selenium webdriver遍历行并仅检索某些列   JavaSpring批处理在启动运行方法之前启动SimpleZoblancher运行方法   maven如何使用Maven2从javadoc生成java源代码?   java为什么我的Unicodont(Slick2D)不画画?   java取消对未使用对象的引用是否会提高冗长方法的性能?   java可执行Jar的画布比使用Eclipse Runner的小   为什么我的for循环在Android studio中与eclipse(java)产生不同的结果   java代码段字节数组到端口号   java在DynamoDB范围键中插入项   java 安卓。看法WindowManager$BadTokenException:无法添加窗口,您的活动正在运行吗?   java我想要两个列表视图同时滚动   java测试数据分离   java Saxon:每次重新部署后都需要重新启动Glassfish