张量算符超自动调谐系统
lorien的Python项目详细描述
Lorien:张量算符的超自动调谐系统
Lorien是一个建立在TVM之上的系统,用于大规模地探索/基准测试最佳日程配置 TOPI时间表。在
动机
虽然TVM已经有了一个TOPI(TVM操作员库存)和算法的实现 而对于conv2d和dense等常用运算符的调度,则存在一个挑战 TOPI难以有效提高。在
TOPI的最佳时间表存储在 TopHub, 它是GitHub中的JSON文件。但也存在以下问题。在
- 在
将所有计划存储在单个文本文件中的可访问性和可伸缩性都很低。 每次AutoTVM必须加载整个JSON文件才能找到一个 为工作负载安排配置。在
在 - 在
当前版本的工作负载和平台覆盖不足。 例如,最新的TopHub仅覆盖690个工作负载 CUDA backend, 包括conv2、depthwise conv2d和5个GPU型号。在
在 - 在
与每天都有几次提交的TVM相比,TopHub并不经常更新。 因此,某些计划配置已过期,无法实现 再好的表现了。在
在
由于使用TVM CI对每个请求的性能进行基准测试是不切实际的,因此我们需要 一个单独的系统,定期对存储的计划配置进行基准测试和更新。在
命令行接口和示例用法
系统有一个完整的CLI,其中包含分层命令。所有命令也可以
以YAML格式在配置文件中指定,并使用前缀“@”展开它们。
有关CLI的用法,请参阅以下示例,configs/samples
有关配置的示例。
注意每个命令的完整描述都可以通过help命令检索:
python3 -m lorien <commands> -h
- 从胶子CV模型中提取工作负载。在
- 从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。在
文件
待定
- 项目
标签: