张量算符超自动调谐系统

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第三方库


热门话题
javagae/JPA/Datastore如何查询无主列表   java从xml中读取未知元素   java如何在控制台上显示MavReplugin单元测试覆盖率报告   java什么被认为是遍历LDAP DIT的正确方法?   Eclipse(Java)在创建了一个新包之后,我无法向其中添加源文件   java new REngine启动并立即停止   java Android:如何从保存在SQLite数据库中的listview中删除项目?   找不到java Gradle DSL方法:“compile()”错误   java使用POI获取具有特定列名的每一行中的值   java解析JSON文件   java中断for循环,返回4个结果,而不是2个   LDAP处理过程中发生java未分类异常;嵌套的异常是javax。命名。NamingException   当表单在基于spring3注释的控制器中验证失败时,java引用数据将丢失   java Android,从web获取数据并更新UI(多线程和MVC设计模式)   用于OS X Yosemite的java优化Swing程序