Load and run Python 接口#
Python 版 Load and Run 的主要功能和用法与 C++ 版本 基本一致。
命令行中输入以下命令可以看到全部参数的列表与介绍:
python -m megengine.tools.load_network_and_run --help
参数列表及简介如下:
net
必需参数 ,指定 mge graph 文件路径
--output-name [OUTPUT_NAME [OUTPUT_NAME ...]]
指定用于测速的网络输出数据节点的名字,可用空格分隔指定多个,不指定则为网络编译 dump 时的输出
--load-input-data LOAD_INPUT_DATA
指定用作输入的 inputs data 文件路径,内容应该为 pickle 化的 numpy array 或者含 np array 的 dict,key 为 inputs 节点名
--input-desc INPUT_DESC
对于未指定 –load-input-data 的情况,会根据的 INPUT_DESC 指定的 shape 来随机生成数据,如果不指定,则会根据图中节点的 shape 来生成
--batchsize BATCHSIZE
类似 –input-desc,但是只指定 batchsize
--seed SEED
指定生成随机 inputs 数据的随机数种子
--rng RNG
指定生成随机数的配置,包括范围、大小等,也可用 python function 指定,指定大小时应确保与 inputs shape 一致
--profile PROFILE
开启后使用 GraphProfiler 记录 profile 信息,并将结果的 json 内容写到 PROFILE 文件路径中,可后续用于 profile_analyze.py 分析
--focused-nvprof
会在最后额外跑一个用 pycuda.driver profiler 包起来的 iter,用于外部 nvprof 进行测速
--warm-up
在开始测速前,先跑一个迭代,减少设备缓存等因素带来的性能影响
--iter ITER
正式运行测速的迭代数
--calc-output-rms
在运行日志中附带 outputs RMS(root meam square) 值的结果,用于快速比较两次输出结果是否一致
--device
(目前无效)指定 mge graph 加载时使用的 device,等同于 MGE_DEFAULT_DEVICE 环境变量
--fast-run
设置网络中 conv、matmul 等支持修改 execution strategy 选项的算子的执行算法,开启后会对当前平台的多个算法进行运行测速,选出最快的算法
--reproducible
影响 –fast-run 选项中的算法选择,开启后只选择带”reproducible”标签的算法进行比较
--optimize-for-inference 以及配套的 --enable-xxx 参数
对 mge graph 进行优化,会导致图节点被替换、修改,可参考 Inference optimization options table 。
--embed-input
是否将 inputs data 作为 SharedDeviceTensor 嵌入网络中替换 Host2Device 节点,以兼容 C++ 版 load-and-run, 不开启时 h2d 会被替换为 InputCallback 节点以支持 set_value
--dump-cpp-model DUMP_CPP_MODEL
在依次做完fast-run修改、optimize、embed-inputs等操作后,添加output callback前,将网络进行 dump
--verbose, -v
设置 log level 为 DEBUG,输出更多信息(包括 fast-run 测速过程等)
--log LOG
指定 log 输出的保存路径,不指定则不保存