Skip to content

[Feat] extractor功能更新 #165

@fangfangssj

Description

@fangfangssj

运行extractor的时候,可能会因为dynamo的原因(dynamo遇到了不支持的算子,模型包含复杂的控制流,模型的输出包含标量等),捕捉到的整张图被打断,分成了很多很多的子图。

第一种情况,捕捉图时被打断的地方,torch会用python来运行,断点前后都使用dynamo来跟踪,例如下面这个提取yolov8n时,这个过程中捕捉不会停止,但是计算图会被打断成很多子图(相关PR,#133
第二种情况,有时捕捉GraphMoudle时,遇到torch._C._functorch.PyCapsule._vmap_increment_nesting这个函数的时候,dynamo的捕捉过程直接被打断,这时候不会有很多的子图,只会有前面捕捉的第一个(相关报错issue,#130

可以使用explain = torch._dynamo.explain(model)(**state_dict)来获得计算图数量,是否被打断,打断的原因等。

在extractor的时候,log信息多次打印出successfully的时,代表着计算图被打断,拆分成了对应的子图,这时候,每次的子图都重复保存到文件中,所以运行完只保存了最后一个子图在文件里。

Testing model: yolov8n on cuda:0
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
Graph and tensors for 'yolov8n' extracted successfully to: /root/graphnet_workspace/yolov8n
[OK] yolov8n

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions