megengine.utils package

megengine.utils.comp_graph_tools

megengine.utils.comp_graph_tools.get_dep_vars(var, var_type=None)[源代码]

返回一个输入的 var 依赖的、类型是 var_typetensor.core.megbrain_graph.VarNode 。如果 var_type 是 None,返回所有类型。

返回类型

List[VarNode]

megengine.utils.comp_graph_tools.get_opr_type(opr)[源代码]

获取一个算子的类型。

返回类型

str

megengine.utils.comp_graph_tools.get_oprs_seq(outputs, prune_reshape=False)[源代码]

获取一个导出模型的按照拓扑序排列的算子列表。

参数
  • outputs (List[VarNode]) – 模型输出。

  • prune_reshape – 是否在推理时剪掉无用的算子。

返回类型

List[OperatorNode]

返回

按照运行顺序排列的算子列表。

megengine.utils.comp_graph_tools.get_owner_opr_inputs(var)[源代码]

获取拥有这个变量的算子的所有输入。

返回类型

List[VarNode]

megengine.utils.comp_graph_tools.get_owner_opr_type(var)[源代码]

获得拥有这个变量的算子类型。

返回类型

str

megengine.utils.comp_graph_tools.graph_traversal(outputs)[源代码]

一个用于遍历计算图并返回足够有用的信息的辅助函数。

参数

outputs (VarNode) – 模型输出。

返回

元组(map_oprs, map_vars, var2oprs, opr2receivers, indegree2opr, opr2indegree)。其中,map_oprs是把算子下标(opr_id)映射到实际的算子(opr)的字典,map_vars是把变量下标(var_id)映射到实际的变量(var)的字典,var2oprs是一个把变量(var)映射到目标算子(opr)的字典,opr2receivers是一个把算子(opr)映射到下一个算子(opr)的字典,indegree2opr是一个把入度(in_degree)映射到计算图中的算子(opr)的字典,opr2indegree是一个把算子(opr)映射到入度(in_degree)的字典。

(indegree2opr, opr2indegree) 只会在函数 get_oprs_seq 中被用于拓扑排序。

megengine.utils.comp_graph_tools.load_and_inference(file, inp_data_list)[源代码]

加载一个序列化的计算图并根据输入数据进行推理。

参数
  • file – 输入文件的路径或句柄。

  • inp_data_list (List[ndarray]) – 输入数据的列表。

返回类型

List[ndarray]

返回

推理结果的列表。

megengine.utils.comp_graph_tools.replace_oprs(dst, oprmap)[源代码]

替换图中的算子。

参数
  • dst (List[VarNode]) – 将会出现在新图中的目标变量。

  • oprmap (Dict[OperatorNode, OperatorNode]) – 一个指示如何替换算子的映射。

返回类型

List[VarNode]

返回

dst 对应且所有依赖都被替换好的新变量。

megengine.utils.comp_graph_tools.replace_vars(dst, varmap)[源代码]

替换图中的变量。

参数
  • dst (VarNode) – 将会出现在新图中的目标变量。

  • varmap (Dict[VarNode, VarNode]) – 一个指示如何替换变量的映射。

返回类型

List[VarNode]

返回

dst 对应且所有依赖都被替换好的新变量。

megengine.utils.comp_graph_tools.set_priority_to_id(dest_vars)[源代码]
对于根据 dest_vars 构建的子图中的所有算子,

如果它的初始优先级是0,就把它的优先级设置为id。

参数

dest_vars – 将会出现在新图中的目标变量。

megengine.utils.compare_binary_iodump

megengine.utils.compare_binary_iodump.check(v0, v1, name, max_err)[源代码]
megengine.utils.compare_binary_iodump.main()[源代码]

megengine.utils.deprecation

megengine.utils.future

class megengine.utils.future.Future(ack=True)[源代码]

基类:object

get()[源代码]
set(value)[源代码]

megengine.utils.hook

class megengine.utils.hook.HookHandler(source_dict, hook)[源代码]

基类:object

hook_num = 0
remove()[源代码]

megengine.utils.http_download

exception megengine.utils.http_download.HTTPDownloadError[源代码]

基类:BaseException

表示http请求错误的类。

megengine.utils.http_download.download_from_url(url, dst, http_read_timeout=120)[源代码]

从指定URL下载文件到 dst .

参数
  • url (str) – 来源网址URL.

  • dst (str) – 保存路径。

  • http_read_timeout – 等待数据多少秒后放弃。

megengine.utils.max_recursion_limit

class megengine.utils.max_recursion_limit.AlternativeRecursionLimit(new_py_limit)[源代码]

基类:object

一个可重入上下文管理器,可用于设置全局递归限制。

megengine.utils.max_recursion_limit.max_recursion_limit()[源代码]

设置递归限制为最大可能值。

megengine.utils.net_stats

megengine.utils.net_stats.count_convNd(module, input, output)[源代码]
megengine.utils.net_stats.count_deconvNd(module, input, output)[源代码]
megengine.utils.net_stats.count_linear(module, input, output)[源代码]
megengine.utils.net_stats.net_stats(model, input_size, bar_length_max=20, log_params=True, log_flops=True)[源代码]

megengine.utils.plugin

megengine.utils.plugin.load_tensor_binary(fobj)[源代码]

载入一个通过 BinaryOprIODump 存入文件的张量;真实的张量数值存储由 mgb::debug::dump_tensor 实现。

多个值可以通过 tools/compare_binary_iodump.py 进行比较。

参数

fobj – 文件对象,或者一个文件名的字符串。

返回

元组 (tensor_value, tensor_name)

megengine.utils.profile_analyze

megengine.utils.profile_analyze.main(passed_args=None)[源代码]

分析 profile_analyzer 中的性能分析信息。

运行该文件时,附带 --help 得到更详细的使用说明。

megengine.utils.profile_analyzer

class megengine.utils.profile_analyzer.NonExistNum[源代码]

基类:object

一个内部方法类似数字型的对象,但用来表明一个域不存在。它总是大于任何实数。

class megengine.utils.profile_analyzer.OprProfRst(entry)[源代码]

基类:object

从megengine profiler抛出的opr profiling结果。

__init__(entry)[源代码]

opr profiling初始化,其中设置opr_info的name,type,id。

参数

entry (dict) – 对json exec_graph条目进行性能分析。

footprint = None

"memory""computation" 到对应操作中实际数据的映射。

opr_info = None

一个包含操作符信息的dict型变量,信息包括 : name, id and type。

time_dict = None

"host""device" 到性能测试(profiling)结果列表的映射。

update_device_prof_info(dev_time)[源代码]

更新设备性能测试信息(profiling info)。

参数

dev_time (dict) – 对于单个算子(operator)的设备时间,是性能测试(profiling)结果的属性之一。

update_footprint(footprint)[源代码]

更新算子性能记录(footprint)。

参数

footprint (dict) – 单个算子的内存大小(footprint)性能记录,是性能测试结果的属性之一。

update_host_prof_info(host_time)[源代码]

更新host的性能测试信息(profiling info)。

参数

host_time (dict) – 单个算子的host时间, 性能测试结果的属性之一。

class megengine.utils.profile_analyzer.ProfileAnalyzer(obj, opr_filter=<function ProfileAnalyzer.<lambda>>)[源代码]

基类:object

__init__(obj, opr_filter=<function ProfileAnalyzer.<lambda>>)[源代码]

初始化ProfileAnalyzer.

参数
  • obj (dict) – 由json字符串生成的dict字典。

  • opr_filter (Callable) – 一个可以筛选算子的函数。

select(time_func, opr_filter=<function ProfileAnalyzer.<lambda>>, aggregate=None, aggregate_by=None, sort_by=None, top_k=0)[源代码]

选择操作。

参数
  • time_func (Callable) – 由用户提供的time_func,它依次作用于每一个OprProfRst.

  • opr_filter (Callable) – 满足筛选条件的算子。

  • aggregate (Optional[Callable]) – 在一组被 atype 聚合的记录上进行调用的函数。

  • aggregate_by (Optional[str]) – 聚合(aggregate)所依据的类型。

  • sort_by (Optional[str]) – 对所有记录进行排序时使用的关键字。

  • top_k (int) – 指定最大记录数。

返回类型

List[Record]

返回

通过选择,聚合,排序过程的记录。

class megengine.utils.profile_analyzer.Record(time, info, footprint)[源代码]

基类:object

分析结果记录

__init__(time, info, footprint)[源代码]

初始化单个记录。

参数
  • time (float) – 算子的运行时间,通过将用户提供的函数作用于OprProfRst的方式进行衡量。

  • info (dict) – 算子的信息,可以是原来的OPR信息,或启用aggregating聚合的条件下,聚合后的信息。

  • footprint (dict) – 包含内存使用记录的信息,截至目前, 支持的类型有 "computation", "memory", "in_shapes", "out_shapes"

__slot__ = ['time', 'info', 'computation', 'memory', 'in_shapes', 'in_layouts', 'out_shapes', 'flops', 'bandwidth', 'opr_id']
get_column_by_name(name=None)[源代码]

根据列名提取列值。

参数

name (Optional[str]) – 列名称,None表示时间。

class megengine.utils.profile_analyzer.TimeFuncHelper[源代码]

基类:object

为用户提供的时间函数助手。

static eval_time_func(prof_type, end_key, func)[源代码]

测试算子时间性能。

参数
  • prof_type (str) – ‘host’ 或 ‘device’.

  • end_key (str) – ‘kern’ 或 ‘end’.

  • func (Callable) – 作用于 gpu 时间的所有 thread

返回类型

float

返回

评估时间结果

static max_end_func(prof_type, end_key, func)[源代码]

测试算子的最长结束时间

参数
  • prof_type (str) – ‘host’ 或 ‘device’.

  • end_key (str) – ‘kern’ 或 ‘end’.

  • func (Callable) – 作用于 gpu 时间的所有 thread

返回类型

float

返回

评估时间结果

static min_start_func(prof_type, end_key, func)[源代码]

测试算子最短开始时间

参数
  • prof_type (str) – ‘host’ 或 ‘device’.

  • end_key (str) – ‘kern’ 或 ‘end’.

  • func (Callable) – 作用于 gpu 时间的所有 thread

返回类型

float

返回

评估时间结果

megengine.utils.profiler

class megengine.utils.profiler.Profiler(path='profile', *, formats='chrome_timeline', type_filter='.*', exit_dump=True)[源代码]

基类:object

imperative模式下对图执行进行性能分析。

参数

path (str) – 性能分析文件存储的默认文件路径

例如:

import megengine as mge
import megengine.module as M
from megengine.utils.profiler import Profiler

# With Learnable Parameters
for iter in range(0, 10):
    # Only profile record of last iter would be saved
    with Profiler("profile"):
        # your code here

# Then open the profile file in chrome timeline window
CHROME_TIMELINE = 'chrome_timeline'
COMPATIBLE = 'compatible'
GRAPHVIZ = 'graphviz'
WITH_FOOTPRINT = 1
dump(path=None)[源代码]
classmethod fetch_attrs(op)[源代码]
megengine.utils.profiler.profile

megengine.utils.profiler.Profiler 的别名

megengine.utils.tensor_sanity_check

class megengine.utils.tensor_sanity_check.TensorSanityCheck[源代码]

基类:object

一个检查每一个算子输入张量是否在算子执行前后发生了变化的对象。

例如:

from megengine import tensor
from megengine.utils.tensor_sanity_check import TensorSanityCheck
with TensorSanityCheck() as checker:
    a = tensor([1, 2])
    b = tensor([3, 4])
    c = a + b

megengine.utils.types

megengine.utils.types.get_ndtuple(value, *, n, allow_zero=True)[源代码]

转换可能为一维的元组到N维元组。

参数

allow_zero (bool) – 是否允许元组值为零。