Graph Builder tool of the Rockmate package
Project description
rk-GraphBuilder
# Example of how to use rkgb
import torch
import rkgb
from models.GPT import GPT2
device = torch.device("cuda")
model = GPT2(nlayers=12,dropout=0.1)
model.to(device)
sample = torch.randint(5400,(100,20),device=device)
rkgb_result = rkgb.make_all_graphs(model,sample)
rkgb.print_all_graphs(rkgb_result,name="GPT2_12",render_format="pdf")
# To render the graphs in pdf you need Graphviz
# You can also try:
rkgb_result = rkgb.test_rkgb(model,sample)
Tests provided:
You can run the Python Notebook : test_rkgb.ipynb
,
which include some tests over GPT2, Resnet101, Regnetx32, MLP_Mixer and nn.transformer.
rk-GB works on these modules, but Rockmate fails on nn.transformer Rockmate.
rk-GB graphs:
B_graph
stands for Basic Graph, object built by processingtorch.jit.trace_module
output. It just a raw graph, consisting simply in a list of operations. Therefore, it cannot be rendered. Everything concerning this structure, and the way it's computed is inBtools.py
.D_graph
is the first useful DAG graph, data-flow of the forward computation. Each node consists of one assignment, defining one variable using one primitive operation. To generate it you need aB_graph
viaB_to_D
. SeeDtools.py
.In particular, each operation is run to collect basic information (dtype, shape, views etc).S_graph
is the simplified forward graph, where each node consist of one real operation, and a body code (shapes, viewing or in-place operations). You need aD_graph
to generate it, seeStools.py
. Note that you can manually apply each simplification step one by one, and print intermediate results usingrkgb.stools.print_S_graph
, check the code ofD_to_S
.- The
S_graph
can be cut usingStools.cut
to obtain the sequence of blocks, as needed byrk-Rotor
. Atools.py
handle anonymization stuff, to recognize equivalent blocks.- Finally, you can generate
K_graphs
, which are graphs containing bacKward nodes, and everything you need for rk-Checkmate, seeKtools.py
.
Thus the main function of rkgb
(rkgb.make_all_graphs
) runs :
bg = Btools.make_B(model,samples,device)
dg = Dtools.B_to_D(bg,model,samples,device)
sg = Stools.D_to_S(dg,model,device)
kg = Ktools.S_to_K(sg,model,device)
# For sequential graphs:
list_sg = Stools.cut(sg)
equivalent_classes,list_kg,list_ano_sg = Atools.S_list_to_K_list_eco(list_sg,model,device)
# You can print each graph using their respective function. Example:
Stools.print_S_graph(sg)
# Or the general function
rkgb.print_graph(sg)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rkgb-1.0.1.tar.gz
(83.5 kB
view details)
Built Distribution
rkgb-1.0.1-py3-none-any.whl
(77.1 kB
view details)
File details
Details for the file rkgb-1.0.1.tar.gz
.
File metadata
- Download URL: rkgb-1.0.1.tar.gz
- Upload date:
- Size: 83.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e141260242cd7ca900fcda4b6d559b5d962aef59d5d061f60b30140b4f9e909 |
|
MD5 | 5a2a4e57a8c9e278be162e14403ee696 |
|
BLAKE2b-256 | 6414f00d0e22c5d07c23852ce77ebb49101f8276a942976bf73cde1d9e7d97fa |
File details
Details for the file rkgb-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: rkgb-1.0.1-py3-none-any.whl
- Upload date:
- Size: 77.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8300ee22ae65d3959e1124ba4054ab5b8d204195072128a9ec8fd6a24a5e0f49 |
|
MD5 | bd64165c935e4dc59a3c7433adb9a403 |
|
BLAKE2b-256 | f41f0c90f92549a23100844f8cdfc6678a1ef511e81a5d7b0716f64ddcb09438 |