Buckets:
| import{s as fs,o as ds,n as b}from"../chunks/scheduler.b9285784.js";import{S as bs,i as Ss,e as m,s as j,c as U,h as $s,a as A,d as n,b as r,f as us,g as J,j as u,k as hs,l as gs,m as p,n as o,t as c,o as T,p as i}from"../chunks/index.26bc89a1.js";import{C as Bs,H as jl,E as Ls}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.6d2489e0.js";import{C as f}from"../chunks/CodeBlock.1473c2ca.js";import{H as Ul,a as d}from"../chunks/HfOption.76c7ca3e.js";function _s(C){let t,a;return t=new f({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaHZpc2lvbi5tb2RlbHMlMjBhcyUyMG1vZGVscyUwQWZyb20lMjB0b3JjaC5wcm9maWxlciUyMGltcG9ydCUyMHByb2ZpbGUlMkMlMjByZWNvcmRfZnVuY3Rpb24lMkMlMjBQcm9maWxlckFjdGl2aXR5JTBBJTBBbW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKSUwQWlucHV0cyUyMCUzRCUyMHRvcmNoLnJhbmRuKDUlMkMlMjAzJTJDJTIwMjI0JTJDJTIwMjI0KSUwQSUwQXdpdGglMjBwcm9maWxlKGFjdGl2aXRpZXMlM0QlNUJQcm9maWxlckFjdGl2aXR5LkNQVSU1RCUyQyUyMHJlY29yZF9zaGFwZXMlM0RUcnVlKSUyMGFzJTIwcHJvZiUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsKGlucHV0cyklMEElMEFwcmludChwcm9mLmtleV9hdmVyYWdlcygpLnRhYmxlKHNvcnRfYnklM0QlMjJjcHVfdGltZV90b3RhbCUyMiUyQyUyMHJvd19saW1pdCUzRDEwKSk=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torchvision.models <span class="hljs-keyword">as</span> models | |
| <span class="hljs-keyword">from</span> torch.profiler <span class="hljs-keyword">import</span> profile, record_function, ProfilerActivity | |
| model = models.resnet18() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>) | |
| <span class="hljs-keyword">with</span> profile(activities=[ProfilerActivity.CPU], record_shapes=<span class="hljs-literal">True</span>) <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"cpu_time_total"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Zs(C){let t,a;return t=new f({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUyQyUyMFByb2ZpbGVLd2FyZ3MlMEFpbXBvcnQlMjB0b3JjaCUwQWltcG9ydCUyMHRvcmNodmlzaW9uLm1vZGVscyUyMGFzJTIwbW9kZWxzJTBBJTBBbW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKSUwQWlucHV0cyUyMCUzRCUyMHRvcmNoLnJhbmRuKDUlMkMlMjAzJTJDJTIwMjI0JTJDJTIwMjI0KSUwQSUwQXByb2ZpbGVfa3dhcmdzJTIwJTNEJTIwUHJvZmlsZUt3YXJncyglMEElMjAlMjAlMjAlMjBhY3Rpdml0aWVzJTNEJTVCJTIyY3B1JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwcmVjb3JkX3NoYXBlcyUzRFRydWUlMEEpJTBBJTBBYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvcihjcHUlM0RUcnVlJTJDJTIwa3dhcmdzX2hhbmRsZXJzJTNEJTVCcHJvZmlsZV9rd2FyZ3MlNUQpJTBBbW9kZWwlMjAlM0QlMjBhY2NlbGVyYXRvci5wcmVwYXJlKG1vZGVsKSUwQSUwQXdpdGglMjBhY2NlbGVyYXRvci5wcm9maWxlKCklMjBhcyUyMHByb2YlM0ElMEElMjAlMjAlMjAlMjB3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbW9kZWwoaW5wdXRzKSUwQSUwQXByaW50KHByb2Yua2V5X2F2ZXJhZ2VzKCkudGFibGUoc29ydF9ieSUzRCUyMmNwdV90aW1lX3RvdGFsJTIyJTJDJTIwcm93X2xpbWl0JTNEMTApKQ==",highlighted:`<span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> Accelerator, ProfileKwargs | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torchvision.models <span class="hljs-keyword">as</span> models | |
| model = models.resnet18() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>) | |
| profile_kwargs = ProfileKwargs( | |
| activities=[<span class="hljs-string">"cpu"</span>], | |
| record_shapes=<span class="hljs-literal">True</span> | |
| ) | |
| accelerator = Accelerator(cpu=<span class="hljs-literal">True</span>, kwargs_handlers=[profile_kwargs]) | |
| model = accelerator.prepare(model) | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| <span class="hljs-keyword">with</span> torch.no_grad(): | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"cpu_time_total"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Vs(C){let t,a,s,w;return t=new d({props:{id:"cpu execution time",option:"PyTorch",$$slots:{default:[_s]},$$scope:{ctx:C}}}),s=new d({props:{id:"cpu execution time",option:"Accelerate",$$slots:{default:[Zs]},$$scope:{ctx:C}}}),{c(){U(t.$$.fragment),a=j(),U(s.$$.fragment)},l(M){J(t.$$.fragment,M),a=r(M),J(s.$$.fragment,M)},m(M,y){o(t,M,y),p(M,a,y),o(s,M,y),w=!0},p(M,y){const I={};y&2&&(I.$$scope={dirty:y,ctx:M}),t.$set(I);const h={};y&2&&(h.$$scope={dirty:y,ctx:M}),s.$set(h)},i(M){w||(c(t.$$.fragment,M),c(s.$$.fragment,M),w=!0)},o(M){T(t.$$.fragment,M),T(s.$$.fragment,M),w=!1},d(M){M&&n(a),i(t,M),i(s,M)}}}function ks(C){let t,a;return t=new f({props:{code:"bW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKSUwQWlucHV0cyUyMCUzRCUyMHRvcmNoLnJhbmRuKDUlMkMlMjAzJTJDJTIwMjI0JTJDJTIwMjI0KSUwQSUwQXdpdGglMjBwcm9maWxlKGFjdGl2aXRpZXMlM0QlNUJQcm9maWxlckFjdGl2aXR5LkNQVSU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByb2ZpbGVfbWVtb3J5JTNEVHJ1ZSUyQyUyMHJlY29yZF9zaGFwZXMlM0RUcnVlKSUyMGFzJTIwcHJvZiUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsKGlucHV0cyklMEElMEFwcmludChwcm9mLmtleV9hdmVyYWdlcygpLnRhYmxlKHNvcnRfYnklM0QlMjJzZWxmX2NwdV9tZW1vcnlfdXNhZ2UlMjIlMkMlMjByb3dfbGltaXQlM0QxMCkp",highlighted:`model = models.resnet18() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>) | |
| <span class="hljs-keyword">with</span> profile(activities=[ProfilerActivity.CPU], | |
| profile_memory=<span class="hljs-literal">True</span>, record_shapes=<span class="hljs-literal">True</span>) <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"self_cpu_memory_usage"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function vs(C){let t,a;return t=new f({props:{code:"bW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKSUwQWlucHV0cyUyMCUzRCUyMHRvcmNoLnJhbmRuKDUlMkMlMjAzJTJDJTIwMjI0JTJDJTIwMjI0KSUwQSUwQXByb2ZpbGVfa3dhcmdzJTIwJTNEJTIwUHJvZmlsZUt3YXJncyglMEElMjAlMjAlMjAlMjBhY3Rpdml0aWVzJTNEJTVCJTIyY3B1JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwcHJvZmlsZV9tZW1vcnklM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwcmVjb3JkX3NoYXBlcyUzRFRydWUlMEEpJTBBJTBBYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvcihjcHUlM0RUcnVlJTJDJTIwa3dhcmdzX2hhbmRsZXJzJTNEJTVCcHJvZmlsZV9rd2FyZ3MlNUQpJTBBbW9kZWwlMjAlM0QlMjBhY2NlbGVyYXRvci5wcmVwYXJlKG1vZGVsKSUwQSUwQXdpdGglMjBhY2NlbGVyYXRvci5wcm9maWxlKCklMjBhcyUyMHByb2YlM0ElMEElMjAlMjAlMjAlMjBtb2RlbChpbnB1dHMpJTBBJTBBcHJpbnQocHJvZi5rZXlfYXZlcmFnZXMoKS50YWJsZShzb3J0X2J5JTNEJTIyc2VsZl9jcHVfbWVtb3J5X3VzYWdlJTIyJTJDJTIwcm93X2xpbWl0JTNEMTApKQ==",highlighted:`model = models.resnet18() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>) | |
| profile_kwargs = ProfileKwargs( | |
| activities=[<span class="hljs-string">"cpu"</span>], | |
| profile_memory=<span class="hljs-literal">True</span>, | |
| record_shapes=<span class="hljs-literal">True</span> | |
| ) | |
| accelerator = Accelerator(cpu=<span class="hljs-literal">True</span>, kwargs_handlers=[profile_kwargs]) | |
| model = accelerator.prepare(model) | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"self_cpu_memory_usage"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Gs(C){let t,a,s,w;return t=new d({props:{id:"memory consumption",option:"PyTorch",$$slots:{default:[ks]},$$scope:{ctx:C}}}),s=new d({props:{id:"memory consumption",option:"Accelerate",$$slots:{default:[vs]},$$scope:{ctx:C}}}),{c(){U(t.$$.fragment),a=j(),U(s.$$.fragment)},l(M){J(t.$$.fragment,M),a=r(M),J(s.$$.fragment,M)},m(M,y){o(t,M,y),p(M,a,y),o(s,M,y),w=!0},p(M,y){const I={};y&2&&(I.$$scope={dirty:y,ctx:M}),t.$set(I);const h={};y&2&&(h.$$scope={dirty:y,ctx:M}),s.$set(h)},i(M){w||(c(t.$$.fragment,M),c(s.$$.fragment,M),w=!0)},o(M){T(t.$$.fragment,M),T(s.$$.fragment,M),w=!1},d(M){M&&n(a),i(t,M),i(s,M)}}}function Es(C){let t,a;return t=new f({props:{code:"bW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKS5jdWRhKCklMEFpbnB1dHMlMjAlM0QlMjB0b3JjaC5yYW5kbig1JTJDJTIwMyUyQyUyMDIyNCUyQyUyMDIyNCkuY3VkYSgpJTBBJTBBd2l0aCUyMHByb2ZpbGUoYWN0aXZpdGllcyUzRCU1QlByb2ZpbGVyQWN0aXZpdHkuQ1BVJTJDJTIwUHJvZmlsZXJBY3Rpdml0eS5DVURBJTVEKSUyMGFzJTIwcHJvZiUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsKGlucHV0cyklMEElMEFwcm9mLmV4cG9ydF9jaHJvbWVfdHJhY2UoJTIydHJhY2UuanNvbiUyMik=",highlighted:`model = models.resnet18().cuda() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>).cuda() | |
| <span class="hljs-keyword">with</span> profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| prof.export_chrome_trace(<span class="hljs-string">"trace.json"</span>)`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Xs(C){let t,a,s,w="For other hardware accelerators, e.g. XPU, you can change <code>cuda</code> to <code>xpu</code> in the above example code.",M;return t=new f({props:{code:"bW9kZWwlMjAlM0QlMjBtb2RlbHMucmVzbmV0MTgoKSUwQWlucHV0cyUyMCUzRCUyMHRvcmNoLnJhbmRuKDUlMkMlMjAzJTJDJTIwMjI0JTJDJTIwMjI0KS5jdWRhKCklMEFwcm9maWxlX2t3YXJncyUyMCUzRCUyMFByb2ZpbGVLd2FyZ3MoJTBBJTIwJTIwJTIwJTIwYWN0aXZpdGllcyUzRCU1QiUyMmNwdSUyMiUyQyUyMCUyMmN1ZGElMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBvdXRwdXRfdHJhY2VfZGlyJTNEJTIydHJhY2UlMjIlMEEpJTBBJTBBYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvcihrd2FyZ3NfaGFuZGxlcnMlM0QlNUJwcm9maWxlX2t3YXJncyU1RCklMEFtb2RlbCUyMCUzRCUyMGFjY2VsZXJhdG9yLnByZXBhcmUobW9kZWwpJTBBJTBBd2l0aCUyMGFjY2VsZXJhdG9yLnByb2ZpbGUoKSUyMGFzJTIwcHJvZiUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsKGlucHV0cyklMEElMEElMjMlMjBUaGUlMjB0cmFjZSUyMHdpbGwlMjBiZSUyMHNhdmVkJTIwdG8lMjB0aGUlMjBzcGVjaWZpZWQlMjBkaXJlY3Rvcnk=",highlighted:`model = models.resnet18() | |
| inputs = torch.randn(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>, <span class="hljs-number">224</span>, <span class="hljs-number">224</span>).cuda() | |
| profile_kwargs = ProfileKwargs( | |
| activities=[<span class="hljs-string">"cpu"</span>, <span class="hljs-string">"cuda"</span>], | |
| output_trace_dir=<span class="hljs-string">"trace"</span> | |
| ) | |
| accelerator = Accelerator(kwargs_handlers=[profile_kwargs]) | |
| model = accelerator.prepare(model) | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-comment"># The trace will be saved to the specified directory</span>`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment),a=j(),s=m("p"),s.innerHTML=w},l(y){J(t.$$.fragment,y),a=r(y),s=A(y,"P",{"data-svelte-h":!0}),u(s)!=="svelte-1yfjemg"&&(s.innerHTML=w)},m(y,I){o(t,y,I),p(y,a,I),p(y,s,I),M=!0},p:b,i(y){M||(c(t.$$.fragment,y),M=!0)},o(y){T(t.$$.fragment,y),M=!1},d(y){y&&(n(a),n(s)),i(t,y)}}}function Ns(C){let t,a,s,w;return t=new d({props:{id:"exporting chrome trace",option:"PyTorch",$$slots:{default:[Es]},$$scope:{ctx:C}}}),s=new d({props:{id:"exporting chrome trace",option:"Accelerate",$$slots:{default:[Xs]},$$scope:{ctx:C}}}),{c(){U(t.$$.fragment),a=j(),U(s.$$.fragment)},l(M){J(t.$$.fragment,M),a=r(M),J(s.$$.fragment,M)},m(M,y){o(t,M,y),p(M,a,y),o(s,M,y),w=!0},p(M,y){const I={};y&2&&(I.$$scope={dirty:y,ctx:M}),t.$set(I);const h={};y&2&&(h.$$scope={dirty:y,ctx:M}),s.$set(h)},i(M){w||(c(t.$$.fragment,M),c(s.$$.fragment,M),w=!0)},o(M){T(t.$$.fragment,M),T(s.$$.fragment,M),w=!1},d(M){M&&n(a),i(t,M),i(s,M)}}}function Ws(C){let t,a;return t=new f({props:{code:"ZnJvbSUyMHRvcmNoLnByb2ZpbGVyJTIwaW1wb3J0JTIwc2NoZWR1bGUlMEElMEFteV9zY2hlZHVsZSUyMCUzRCUyMHNjaGVkdWxlKCUwQSUyMCUyMCUyMCUyMHNraXBfZmlyc3QlM0QxJTJDJTBBJTIwJTIwJTIwJTIwd2FpdCUzRDUlMkMlMEElMjAlMjAlMjAlMjB3YXJtdXAlM0QxJTJDJTBBJTIwJTIwJTIwJTIwYWN0aXZlJTNEMyUyQyUwQSUyMCUyMCUyMCUyMHJlcGVhdCUzRDIlMEEpJTBBJTBBZGVmJTIwdHJhY2VfaGFuZGxlcihwKSUzQSUwQSUyMCUyMCUyMCUyMG91dHB1dCUyMCUzRCUyMHAua2V5X2F2ZXJhZ2VzKCkudGFibGUoc29ydF9ieSUzRCUyMnNlbGZfY3VkYV90aW1lX3RvdGFsJTIyJTJDJTIwcm93X2xpbWl0JTNEMTApJTBBJTIwJTIwJTIwJTIwcHJpbnQob3V0cHV0KSUwQSUyMCUyMCUyMCUyMHAuZXhwb3J0X2Nocm9tZV90cmFjZSglMjIlMkZ0bXAlMkZ0cmFjZV8lMjIlMjAlMkIlMjBzdHIocC5zdGVwX251bSklMjAlMkIlMjAlMjIuanNvbiUyMiklMEElMEF3aXRoJTIwcHJvZmlsZSglMEElMjAlMjAlMjAlMjBhY3Rpdml0aWVzJTNEJTVCUHJvZmlsZXJBY3Rpdml0eS5DUFUlMkMlMjBQcm9maWxlckFjdGl2aXR5LkNVREElNUQlMkMlMEElMjAlMjAlMjAlMjBzY2hlZHVsZSUzRG15X3NjaGVkdWxlJTJDJTBBJTIwJTIwJTIwJTIwb25fdHJhY2VfcmVhZHklM0R0cmFjZV9oYW5kbGVyJTBBKSUyMGFzJTIwcCUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGlkeCUyMGluJTIwcmFuZ2UoOCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbChpbnB1dHMpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcC5zdGVwKCk=",highlighted:`<span class="hljs-keyword">from</span> torch.profiler <span class="hljs-keyword">import</span> schedule | |
| my_schedule = schedule( | |
| skip_first=<span class="hljs-number">1</span>, | |
| wait=<span class="hljs-number">5</span>, | |
| warmup=<span class="hljs-number">1</span>, | |
| active=<span class="hljs-number">3</span>, | |
| repeat=<span class="hljs-number">2</span> | |
| ) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">trace_handler</span>(<span class="hljs-params">p</span>): | |
| output = p.key_averages().table(sort_by=<span class="hljs-string">"self_cuda_time_total"</span>, row_limit=<span class="hljs-number">10</span>) | |
| <span class="hljs-built_in">print</span>(output) | |
| p.export_chrome_trace(<span class="hljs-string">"/tmp/trace_"</span> + <span class="hljs-built_in">str</span>(p.step_num) + <span class="hljs-string">".json"</span>) | |
| <span class="hljs-keyword">with</span> profile( | |
| activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], | |
| schedule=my_schedule, | |
| on_trace_ready=trace_handler | |
| ) <span class="hljs-keyword">as</span> p: | |
| <span class="hljs-keyword">for</span> idx <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">8</span>): | |
| model(inputs) | |
| p.step()`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Qs(C){let t,a;return t=new f({props:{code:"ZGVmJTIwdHJhY2VfaGFuZGxlcihwKSUzQSUwQSUyMCUyMCUyMCUyMG91dHB1dCUyMCUzRCUyMHAua2V5X2F2ZXJhZ2VzKCkudGFibGUoc29ydF9ieSUzRCUyMnNlbGZfY3VkYV90aW1lX3RvdGFsJTIyJTJDJTIwcm93X2xpbWl0JTNEMTApJTBBJTIwJTIwJTIwJTIwcHJpbnQob3V0cHV0KSUwQSUyMCUyMCUyMCUyMHAuZXhwb3J0X2Nocm9tZV90cmFjZSglMjIlMkZ0bXAlMkZ0cmFjZV8lMjIlMjAlMkIlMjBzdHIocC5zdGVwX251bSklMjAlMkIlMjAlMjIuanNvbiUyMiklMEElMEFwcm9maWxlX2t3YXJncyUyMCUzRCUyMFByb2ZpbGVLd2FyZ3MoJTBBJTIwJTIwJTIwJTIwYWN0aXZpdGllcyUzRCU1QiUyMmNwdSUyMiUyQyUyMCUyMmN1ZGElMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBzY2hlZHVsZV9vcHRpb24lM0QlN0IlMjJ3YWl0JTIyJTNBJTIwNSUyQyUyMCUyMndhcm11cCUyMiUzQSUyMDElMkMlMjAlMjJhY3RpdmUlMjIlM0ElMjAzJTJDJTIwJTIycmVwZWF0JTIyJTNBJTIwMiUyQyUyMCUyMnNraXBfZmlyc3QlMjIlM0ElMjAxJTdEJTJDJTBBJTIwJTIwJTIwJTIwb25fdHJhY2VfcmVhZHklM0R0cmFjZV9oYW5kbGVyJTBBKSUwQSUwQWFjY2VsZXJhdG9yJTIwJTNEJTIwQWNjZWxlcmF0b3Ioa3dhcmdzX2hhbmRsZXJzJTNEJTVCcHJvZmlsZV9rd2FyZ3MlNUQpJTBBbW9kZWwlMjAlM0QlMjBhY2NlbGVyYXRvci5wcmVwYXJlKG1vZGVsKSUwQSUwQXdpdGglMjBhY2NlbGVyYXRvci5wcm9maWxlKCklMjBhcyUyMHByb2YlM0ElMEElMjAlMjAlMjAlMjBmb3IlMjBpZHglMjBpbiUyMHJhbmdlKDgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbW9kZWwoaW5wdXRzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByb2Yuc3RlcCgp",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">trace_handler</span>(<span class="hljs-params">p</span>): | |
| output = p.key_averages().table(sort_by=<span class="hljs-string">"self_cuda_time_total"</span>, row_limit=<span class="hljs-number">10</span>) | |
| <span class="hljs-built_in">print</span>(output) | |
| p.export_chrome_trace(<span class="hljs-string">"/tmp/trace_"</span> + <span class="hljs-built_in">str</span>(p.step_num) + <span class="hljs-string">".json"</span>) | |
| profile_kwargs = ProfileKwargs( | |
| activities=[<span class="hljs-string">"cpu"</span>, <span class="hljs-string">"cuda"</span>], | |
| schedule_option={<span class="hljs-string">"wait"</span>: <span class="hljs-number">5</span>, <span class="hljs-string">"warmup"</span>: <span class="hljs-number">1</span>, <span class="hljs-string">"active"</span>: <span class="hljs-number">3</span>, <span class="hljs-string">"repeat"</span>: <span class="hljs-number">2</span>, <span class="hljs-string">"skip_first"</span>: <span class="hljs-number">1</span>}, | |
| on_trace_ready=trace_handler | |
| ) | |
| accelerator = Accelerator(kwargs_handlers=[profile_kwargs]) | |
| model = accelerator.prepare(model) | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| <span class="hljs-keyword">for</span> idx <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">8</span>): | |
| model(inputs) | |
| prof.step()`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function zs(C){let t,a,s,w;return t=new d({props:{id:"custom handler",option:"PyTorch",$$slots:{default:[Ws]},$$scope:{ctx:C}}}),s=new d({props:{id:"custom handler",option:"Accelerate",$$slots:{default:[Qs]},$$scope:{ctx:C}}}),{c(){U(t.$$.fragment),a=j(),U(s.$$.fragment)},l(M){J(t.$$.fragment,M),a=r(M),J(s.$$.fragment,M)},m(M,y){o(t,M,y),p(M,a,y),o(s,M,y),w=!0},p(M,y){const I={};y&2&&(I.$$scope={dirty:y,ctx:M}),t.$set(I);const h={};y&2&&(h.$$scope={dirty:y,ctx:M}),s.$set(h)},i(M){w||(c(t.$$.fragment,M),c(s.$$.fragment,M),w=!0)},o(M){T(t.$$.fragment,M),T(s.$$.fragment,M),w=!1},d(M){M&&n(a),i(t,M),i(s,M)}}}function Rs(C){let t,a;return t=new f({props:{code:"d2l0aCUyMHByb2ZpbGUoJTBBJTIwJTIwJTIwJTIwYWN0aXZpdGllcyUzRCU1QlByb2ZpbGVyQWN0aXZpdHkuQ1BVJTJDJTIwUHJvZmlsZXJBY3Rpdml0eS5DVURBJTVEJTJDJTBBJTIwJTIwJTIwJTIwd2l0aF9mbG9wcyUzRFRydWUlMEEpJTIwYXMlMjBwcm9mJTNBJTBBJTIwJTIwJTIwJTIwbW9kZWwoaW5wdXRzKSUwQSUwQXByaW50KHByb2Yua2V5X2F2ZXJhZ2VzKCkudGFibGUoc29ydF9ieSUzRCUyMmZsb3BzJTIyJTJDJTIwcm93X2xpbWl0JTNEMTApKQ==",highlighted:`<span class="hljs-keyword">with</span> profile( | |
| activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], | |
| with_flops=<span class="hljs-literal">True</span> | |
| ) <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"flops"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Ys(C){let t,a;return t=new f({props:{code:"cHJvZmlsZV9rd2FyZ3MlMjAlM0QlMjBQcm9maWxlS3dhcmdzKCUwQSUyMCUyMCUyMCUyMHdpdGhfZmxvcHMlM0RUcnVlJTBBKSUwQWFjY2VsZXJhdG9yJTIwJTNEJTIwQWNjZWxlcmF0b3Ioa3dhcmdzX2hhbmRsZXJzJTNEJTVCcHJvZmlsZV9rd2FyZ3MlNUQpJTBBJTBBd2l0aCUyMGFjY2VsZXJhdG9yLnByb2ZpbGUoKSUyMGFzJTIwcHJvZiUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsKGlucHV0cyklMEElMEFwcmludChwcm9mLmtleV9hdmVyYWdlcygpLnRhYmxlKHNvcnRfYnklM0QlMjJmbG9wcyUyMiUyQyUyMHJvd19saW1pdCUzRDEwKSk=",highlighted:`profile_kwargs = ProfileKwargs( | |
| with_flops=<span class="hljs-literal">True</span> | |
| ) | |
| accelerator = Accelerator(kwargs_handlers=[profile_kwargs]) | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"flops"</span>, row_limit=<span class="hljs-number">10</span>))`,lang:"python",wrap:!1}}),{c(){U(t.$$.fragment)},l(s){J(t.$$.fragment,s)},m(s,w){o(t,s,w),a=!0},p:b,i(s){a||(c(t.$$.fragment,s),a=!0)},o(s){T(t.$$.fragment,s),a=!1},d(s){i(t,s)}}}function Hs(C){let t,a,s,w;return t=new d({props:{id:"FLOPS",option:"PyTorch",$$slots:{default:[Rs]},$$scope:{ctx:C}}}),s=new d({props:{id:"FLOPS",option:"Accelerate",$$slots:{default:[Ys]},$$scope:{ctx:C}}}),{c(){U(t.$$.fragment),a=j(),U(s.$$.fragment)},l(M){J(t.$$.fragment,M),a=r(M),J(s.$$.fragment,M)},m(M,y){o(t,M,y),p(M,a,y),o(s,M,y),w=!0},p(M,y){const I={};y&2&&(I.$$scope={dirty:y,ctx:M}),t.$set(I);const h={};y&2&&(h.$$scope={dirty:y,ctx:M}),s.$set(h)},i(M){w||(c(t.$$.fragment,M),c(s.$$.fragment,M),w=!0)},o(M){T(t.$$.fragment,M),T(s.$$.fragment,M),w=!1},d(M){M&&n(a),i(t,M),i(s,M)}}}function xs(C){let t,a,s,w,M,y,I,h,_,Kl="Profiler is a tool that allows the collection of performance metrics during training and inference. Profiler’s context manager API can be used to better understand what model operators are the most expensive, examine their input shapes and stack traces, study device kernel activity, and visualize the execution trace. It provides insights into the performance of your model, allowing you to optimize and improve it.",Jl,Z,ql="This guide explains how to use PyTorch Profiler to measure the time and memory consumption of the model’s operators and how to integrate this with Accelerate. We will cover various use cases and provide examples for each.",ol,V,cl,k,Ol="Profiler allows one to check which operators were called during the execution of a code range wrapped with a profiler context manager.",Tl,v,ls="Let’s see how we can use profiler to analyze the execution time:",il,S,Cl,G,ss="The resulting table output (omitting some columns):",Il,E,ml,X,ts="To get a finer granularity of results and include operator input shapes, pass <code>group_by_input_shape=True</code> (note: this requires running the profiler with <code>record_shapes=True</code>):",Al,N,ul,W,hl,Q,Ms="Profiler can also show the amount of memory (used by the model’s tensors) that was allocated (or released) during the execution of the model’s operators. To enable memory profiling functionality pass <code>profile_memory=True</code>.",fl,$,dl,z,es="The resulting table output (omitting some columns):",bl,R,Sl,Y,as="If you need one or two aggregate numbers for experiment tracking instead of a full operator table, combine the profiler with the runtime memory stats exposed by PyTorch. This is often enough for logging peak memory usage per run:",$l,H,gl,x,ns="This pattern keeps the profiler output available for debugging while also producing compact values that can be logged to an experiment tracker.",Bl,F,Ll,D,ps="You can examine the sequence of profiled operators and CUDA kernels in Chrome trace viewer (<code>chrome://tracing</code>):",_l,P,ys='<img src="https://github.com/huggingface/accelerate/assets/100389977/5acb193f-6d11-4f7b-9873-c600c19e8172" alt="profile_export"/>',Zl,g,Vl,K,kl,q,ws="Profiler offers an additional API to handle long-running jobs (such as training loops). Tracing all of the execution can be slow and result in very large trace files. To avoid this, use optional arguments:",vl,O,js="<li><code>schedule_option</code>: Scheduling options allow you to control when profiling is active. This is useful for long-running jobs to avoid collecting too much data. Available keys are <code>wait</code>, <code>warmup</code>, <code>active</code>, <code>repeat</code> and <code>skip_first</code>. The profiler will skip the first <code>skip_first</code> steps, then wait for <code>wait</code> steps, then do the warmup for the next <code>warmup</code> steps, then do the active recording for the next <code>active</code> steps and then repeat the cycle starting with <code>wait</code> steps. The optional number of cycles is specified with the <code>repeat</code> parameter, the zero value means that the cycles will continue until the profiling is finished.</li> <li><code>on_trace_ready</code>: specifies a function that takes a reference to the profiler as an input and is called by the profiler each time the new trace is ready.</li>",Gl,ll,rs="To illustrate how the API works, consider the following example:",El,B,Xl,sl,Nl,tl,Us="Use formula to estimate the FLOPs (floating point operations) of specific operators (matrix multiplication and 2D convolution).",Wl,Ml,Js="To measure floating-point operations (FLOPS):",Ql,L,zl,el,os="The resulting table output (omitting some columns):",Rl,al,Yl,nl,Hl,pl,cs="PyTorch Profiler is a powerful tool for analyzing the performance of your models. By integrating it with Accelerate, you can easily profile your models and gain insights into their performance, helping you to optimize and improve them.",xl,yl,Ts='For more detailed information, refer to the <a href="https://pytorch.org/docs/stable/profiler.html" rel="nofollow">PyTorch Profiler documentation</a>.',Fl,wl,Dl,rl,Pl;return M=new Bs({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),I=new jl({props:{title:"Profiler",local:"profiler",headingTag:"h1"}}),V=new jl({props:{title:"Using profiler to analyze execution time",local:"using-profiler-to-analyze-execution-time",headingTag:"h2"}}),S=new Ul({props:{id:"cpu execution time",options:["PyTorch","Accelerate"],$$slots:{default:[Vs]},$$scope:{ctx:C}}}),E=new f({props:{code:"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTmFtZSUyMCUyMCUyMCUyMCUyMCUyMFNlbGYlMjBDUFUlMjAlMjAlMjAlMjAlMjBDUFUlMjB0b3RhbCUyMCUyMENQVSUyMHRpbWUlMjBhdmclMjAlMjAlMjAlMjAlMjMlMjBvZiUyMENhbGxzJTIwJTIwJTBBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWNvbnYyZCUyMCUyMCUyMCUyMCUyMDE3MS4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMDUyLjI2MG1zJTIwJTIwJTIwJTIwJTIwJTIwJTIwMi42MTNtcyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDIwJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWNvbnZvbHV0aW9uJTIwJTIwJTIwJTIwJTIwMjI3LjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwNTIuMDg5bXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAyLjYwNG1zJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjAlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBX2NvbnZvbHV0aW9uJTIwJTIwJTIwJTIwJTIwMjcwLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwNTEuODYybXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAyLjU5M21zJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjAlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBbWtsZG5uX2NvbnZvbHV0aW9uJTIwJTIwJTIwJTIwJTIwJTIwNTEuMjczbXMlMjAlMjAlMjAlMjAlMjAlMjA1MS41OTJtcyUyMCUyMCUyMCUyMCUyMCUyMCUyMDIuNTgwbXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAyMCUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FiYXRjaF9ub3JtJTIwJTIwJTIwJTIwJTIwMTE4LjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwNy4wNTltcyUyMCUyMCUyMCUyMCUyMDM1Mi45NTB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDIwJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQV9iYXRjaF9ub3JtX2ltcGxfaW5kZXglMjAlMjAlMjAlMjAlMjAzMTUuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjA2Ljk0MW1zJTIwJTIwJTIwJTIwJTIwMzQ3LjA1MHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjAlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBbmF0aXZlX2JhdGNoX25vcm0lMjAlMjAlMjAlMjAlMjAlMjAlMjA2LjMwNW1zJTIwJTIwJTIwJTIwJTIwJTIwJTIwNi41OTltcyUyMCUyMCUyMCUyMCUyMDMyOS45NTB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDIwJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQW1heF9wb29sMmQlMjAlMjAlMjAlMjAlMjAlMjA0MC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMDQuMDA4bXMlMjAlMjAlMjAlMjAlMjAlMjAlMjA0LjAwOG1zJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMSUyMCUyMCUwQSUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FtYXhfcG9vbDJkX3dpdGhfaW5kaWNlcyUyMCUyMCUyMCUyMCUyMCUyMCUyMDMuOTY4bXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAzLjk2OG1zJTIwJTIwJTIwJTIwJTIwJTIwJTIwMy45NjhtcyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDElMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBYWRkXyUyMCUyMCUyMCUyMCUyMDc4MC4wMDB1cyUyMCUyMCUyMCUyMCUyMDc4MC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMDI3Ljg1N3VzJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjglMjAlMjAlMEEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0lMjAlMjAtLS0tLS0tLS0tLS0lMjAlMjAtLS0tLS0tLS0tLS0lMjAlMjAtLS0tLS0tLS0tLS0lMjAlMjAtLS0tLS0tLS0tLS0lMjAlMjAlMEFTZWxmJTIwQ1BVJTIwdGltZSUyMHRvdGFsJTNBJTIwNjcuMDE2bXM=",highlighted:`<span class="hljs-params">---------------------------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> | |
| Name Self CPU CPU total CPU time avg <span class="hljs-comment"># of Calls </span> | |
| <span class="hljs-params">---------------------------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> | |
| aten:<span class="hljs-function">:conv2d</span> 171.000us 52.260ms 2.613ms 20 | |
| aten:<span class="hljs-function">:convolution</span> 227.000us 52.089ms 2.604ms 20 | |
| aten:<span class="hljs-function">:_convolution</span> 270.000us 51.862ms 2.593ms 20 | |
| aten:<span class="hljs-function">:mkldnn_convolution</span> 51.273ms 51.592ms 2.580ms 20 | |
| aten:<span class="hljs-function">:batch_norm</span> 118.000us 7.059ms 352.950us 20 | |
| aten:<span class="hljs-function">:_batch_norm_impl_index</span> 315.000us 6.941ms 347.050us 20 | |
| aten:<span class="hljs-function">:native_batch_norm</span> 6.305ms 6.599ms 329.950us 20 | |
| aten:<span class="hljs-function">:max_pool2d</span> 40.000us 4.008ms 4.008ms 1 | |
| aten:<span class="hljs-function">:max_pool2d_with_indices</span> 3.968ms 3.968ms 3.968ms 1 | |
| aten:<span class="hljs-function">:add_</span> 780.000us 780.000us 27.857us 28 | |
| <span class="hljs-params">---------------------------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> <span class="hljs-params">------------</span> | |
| Self CPU time total: 67.016ms`,lang:"",wrap:!1}}),N=new f({props:{code:"cHJpbnQocHJvZi5rZXlfYXZlcmFnZXMoZ3JvdXBfYnlfaW5wdXRfc2hhcGUlM0RUcnVlKS50YWJsZShzb3J0X2J5JTNEJTIyY3B1X3RpbWVfdG90YWwlMjIlMkMlMjByb3dfbGltaXQlM0QxMCkp",highlighted:'<span class="hljs-built_in">print</span>(prof.key_averages(group_by_input_shape=<span class="hljs-literal">True</span>).table(sort_by=<span class="hljs-string">"cpu_time_total"</span>, row_limit=<span class="hljs-number">10</span>))',lang:"python",wrap:!1}}),W=new jl({props:{title:"Using profiler to analyze memory consumption",local:"using-profiler-to-analyze-memory-consumption",headingTag:"h2"}}),$=new Ul({props:{id:"memory consumption",options:["PyTorch","Accelerate"],$$slots:{default:[Gs]},$$scope:{ctx:C}}}),R=new f({props:{code:"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTmFtZSUyMCUyMCUyMCUyMCUyMCUyMCUyMENQVSUyME1lbSUyMCUyMFNlbGYlMjBDUFUlMjBNZW0lMjAlMjAlMjAlMjAlMjMlMjBvZiUyMENhbGxzJTIwJTIwJTBBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWVtcHR5JTIwJTIwJTIwJTIwJTIwJTIwOTQuODUlMjBNYiUyMCUyMCUyMCUyMCUyMCUyMDk0Ljg1JTIwTWIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAyMDUlMjAlMjAlMEElMjAlMjAlMjAlMjBhdGVuJTNBJTNBbWF4X3Bvb2wyZF93aXRoX2luZGljZXMlMjAlMjAlMjAlMjAlMjAlMjAxMS40OCUyME1iJTIwJTIwJTIwJTIwJTIwJTIwMTEuNDglMjBNYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDElMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBYWRkbW0lMjAlMjAlMjAlMjAlMjAlMjAxOS41MyUyMEtiJTIwJTIwJTIwJTIwJTIwJTIwMTkuNTMlMjBLYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDElMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBbWVhbiUyMCUyMCUyMCUyMCUyMCUyMDEwLjAwJTIwS2IlMjAlMjAlMjAlMjAlMjAlMjAxMC4wMCUyMEtiJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FlbXB0eV9zdHJpZGVkJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwNDkyJTIwYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDQ5MiUyMGIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjA1JTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWNhdCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDI0MCUyMGIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAyNDAlMjBiJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwNiUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FhYnMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjA0ODAlMjBiJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjQwJTIwYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDQlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBbWFza2VkX3NlbGVjdCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDEyMCUyMGIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAxMTIlMjBiJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FuZSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDYxJTIwYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDUzJTIwYiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDMlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBZXElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAzMCUyMGIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAzMCUyMGIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAxJTIwJTIwJTBBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwLS0tLS0tLS0tLS0tJTIwJTIwJTBBU2VsZiUyMENQVSUyMHRpbWUlMjB0b3RhbCUzQSUyMDY5LjMzMm1z",highlighted:`--------------------------------- ------------ ------------ ------------ | |
| Name CPU Mem Self CPU Mem <span class="hljs-comment"># of Calls </span> | |
| --------------------------------- ------------ ------------ ------------ | |
| aten::empty 94.85 Mb 94.85 Mb <span class="hljs-number"> 205 </span> | |
| aten::max_pool2d_with_indices 11.48 Mb 11.48 Mb <span class="hljs-number"> 1 </span> | |
| aten::addmm 19.53 Kb 19.53 Kb <span class="hljs-number"> 1 </span> | |
| aten::mean 10.00 Kb 10.00 Kb <span class="hljs-number"> 1 </span> | |
| aten::empty_strided <span class="hljs-number"> 492 </span>b <span class="hljs-number"> 492 </span>b <span class="hljs-number"> 5 </span> | |
| aten::cat <span class="hljs-number"> 240 </span>b <span class="hljs-number"> 240 </span>b <span class="hljs-number"> 6 </span> | |
| aten::abs <span class="hljs-number"> 480 </span>b <span class="hljs-number"> 240 </span>b <span class="hljs-number"> 4 </span> | |
| aten::masked_select <span class="hljs-number"> 120 </span>b <span class="hljs-number"> 112 </span>b <span class="hljs-number"> 1 </span> | |
| aten::ne <span class="hljs-number"> 61 </span>b <span class="hljs-number"> 53 </span>b <span class="hljs-number"> 3 </span> | |
| aten::eq <span class="hljs-number"> 30 </span>b <span class="hljs-number"> 30 </span>b <span class="hljs-number"> 1 </span> | |
| --------------------------------- ------------ ------------ ------------ | |
| Self CPU time total: 69.332ms`,lang:"",wrap:!1}}),H=new f({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwYWNjZWxlcmF0ZSUyMGltcG9ydCUyMEFjY2VsZXJhdG9yJTJDJTIwUHJvZmlsZUt3YXJncyUwQSUwQSUwQWRlZiUyMHN1bW1hcml6ZV9tZW1vcnlfc3RhdHMoKSUzQSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBlYWtfYWxsb2NhdGVkX21iJTIyJTNBJTIwdG9yY2guY3VkYS5tYXhfbWVtb3J5X2FsbG9jYXRlZCgpJTIwJTJGJTIwMTAyNCoqMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBlYWtfcmVzZXJ2ZWRfbWIlMjIlM0ElMjB0b3JjaC5jdWRhLm1heF9tZW1vcnlfcmVzZXJ2ZWQoKSUyMCUyRiUyMDEwMjQqKjIlMkMlMEElMjAlMjAlMjAlMjAlN0QlMEElMEElMEFwcm9maWxlX2t3YXJncyUyMCUzRCUyMFByb2ZpbGVLd2FyZ3MoJTBBJTIwJTIwJTIwJTIwYWN0aXZpdGllcyUzRCU1QiUyMmNwdSUyMiUyQyUyMCUyMmN1ZGElMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBwcm9maWxlX21lbW9yeSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjByZWNvcmRfc2hhcGVzJTNEVHJ1ZSUyQyUwQSklMEElMEFhY2NlbGVyYXRvciUyMCUzRCUyMEFjY2VsZXJhdG9yKGt3YXJnc19oYW5kbGVycyUzRCU1QnByb2ZpbGVfa3dhcmdzJTVEKSUwQSUwQXRvcmNoLmN1ZGEucmVzZXRfcGVha19tZW1vcnlfc3RhdHMoKSUwQSUwQXdpdGglMjBhY2NlbGVyYXRvci5wcm9maWxlKCklMjBhcyUyMHByb2YlM0ElMEElMjAlMjAlMjAlMjBtb2RlbChpbnB1dHMpJTBBJTBBcHJpbnQocHJvZi5rZXlfYXZlcmFnZXMoKS50YWJsZShzb3J0X2J5JTNEJTIyc2VsZl9jdWRhX21lbW9yeV91c2FnZSUyMiUyQyUyMHJvd19saW1pdCUzRDEwKSklMEFwcmludChzdW1tYXJpemVfbWVtb3J5X3N0YXRzKCkp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> Accelerator, ProfileKwargs | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">summarize_memory_stats</span>(): | |
| <span class="hljs-keyword">return</span> { | |
| <span class="hljs-string">"peak_allocated_mb"</span>: torch.cuda.max_memory_allocated() / <span class="hljs-number">1024</span>**<span class="hljs-number">2</span>, | |
| <span class="hljs-string">"peak_reserved_mb"</span>: torch.cuda.max_memory_reserved() / <span class="hljs-number">1024</span>**<span class="hljs-number">2</span>, | |
| } | |
| profile_kwargs = ProfileKwargs( | |
| activities=[<span class="hljs-string">"cpu"</span>, <span class="hljs-string">"cuda"</span>], | |
| profile_memory=<span class="hljs-literal">True</span>, | |
| record_shapes=<span class="hljs-literal">True</span>, | |
| ) | |
| accelerator = Accelerator(kwargs_handlers=[profile_kwargs]) | |
| torch.cuda.reset_peak_memory_stats() | |
| <span class="hljs-keyword">with</span> accelerator.profile() <span class="hljs-keyword">as</span> prof: | |
| model(inputs) | |
| <span class="hljs-built_in">print</span>(prof.key_averages().table(sort_by=<span class="hljs-string">"self_cuda_memory_usage"</span>, row_limit=<span class="hljs-number">10</span>)) | |
| <span class="hljs-built_in">print</span>(summarize_memory_stats())`,lang:"python",wrap:!1}}),F=new jl({props:{title:"Exporting chrome trace",local:"exporting-chrome-trace",headingTag:"h2"}}),g=new Ul({props:{id:"exporting chrome trace",options:["PyTorch","Accelerate"],$$slots:{default:[Ns]},$$scope:{ctx:C}}}),K=new jl({props:{title:"Using Profiler to Analyze Long-Running Jobs",local:"using-profiler-to-analyze-long-running-jobs",headingTag:"h2"}}),B=new Ul({props:{id:"custom handler",options:["PyTorch","Accelerate"],$$slots:{default:[zs]},$$scope:{ctx:C}}}),sl=new jl({props:{title:"FLOPS",local:"flops",headingTag:"h2"}}),L=new Ul({props:{id:"FLOPS",options:["PyTorch","Accelerate"],$$slots:{default:[Hs]},$$scope:{ctx:C}}}),al=new f({props:{code:"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyME5hbWUlMjAlMjAlMjAlMjAlMjAlMjBTZWxmJTIwQ1BVJTIwJTIwJTIwJTIwJTIwU2VsZiUyMENVREElMjAlMjAlMjAlMjBUb3RhbCUyMEZMT1BzJTIwJTIwJTBBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0Fjb252MmQlMjAlMjAlMjAlMjAlMjAxOTcuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjAwMHVzJTIwJTIwMTgxMzU2MTM0NDAuMDAwJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWFkZG1tJTIwJTIwJTIwJTIwJTIwMTAzLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwMTcuMDAwdXMlMjAlMjAlMjAlMjAlMjA1MTIwMDAwLjAwMCUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF0ZW4lM0ElM0FtdWwlMjAlMjAlMjAlMjAlMjAlMjAyOS4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMDIuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAzMC4wMDAlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBY29udm9sdXRpb24lMjAlMjAlMjAlMjAlMjA0MDkuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLS0lMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdGVuJTNBJTNBX2NvbnZvbHV0aW9uJTIwJTIwJTIwJTIwJTIwMjUzLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwMC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXRlbiUzQSUzQWN1ZG5uX2NvbnZvbHV0aW9uJTIwJTIwJTIwJTIwJTIwJTIwJTIwNS40NjVtcyUyMCUyMCUyMCUyMCUyMCUyMCUyMDIuOTcwbXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtLSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1ZGFFdmVudFJlY29yZCUyMCUyMCUyMCUyMCUyMDEzOC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMDAuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtLSUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1ZGFTdHJlYW1Jc0NhcHR1cmluZyUyMCUyMCUyMCUyMCUyMCUyMDQzLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwMC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC0tJTIwJTIwJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3VkYVN0cmVhbUdldFByaW9yaXR5JTIwJTIwJTIwJTIwJTIwJTIwNDAuMDAwdXMlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLS0lMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjdWRhRGV2aWNlR2V0U3RyZWFtUHJpb3JpdHlSYW5nZSUyMCUyMCUyMCUyMCUyMCUyMDEwLjAwMHVzJTIwJTIwJTIwJTIwJTIwJTIwJTIwMC4wMDB1cyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC0tJTIwJTIwJTBBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMC0tLS0tLS0tLS0tLSUyMCUyMCUwQVNlbGYlMjBDUFUlMjB0aW1lJTIwdG90YWwlM0ElMjAyMS45MzhtcyUwQVNlbGYlMjBDVURBJTIwdGltZSUyMHRvdGFsJTNBJTIwNC4xNjVtcw==",highlighted:`<span class="hljs-literal">-------------------------------------------------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> | |
| <span class="hljs-comment">Name Self CPU Self CUDA Total FLOPs</span> | |
| <span class="hljs-literal">-------------------------------------------------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> | |
| <span class="hljs-comment">aten::conv2d 197</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us 18135613440</span><span class="hljs-string">.</span><span class="hljs-comment">000</span> | |
| <span class="hljs-comment">aten::addmm 103</span><span class="hljs-string">.</span><span class="hljs-comment">000us 17</span><span class="hljs-string">.</span><span class="hljs-comment">000us 5120000</span><span class="hljs-string">.</span><span class="hljs-comment">000</span> | |
| <span class="hljs-comment">aten::mul 29</span><span class="hljs-string">.</span><span class="hljs-comment">000us 2</span><span class="hljs-string">.</span><span class="hljs-comment">000us 30</span><span class="hljs-string">.</span><span class="hljs-comment">000</span> | |
| <span class="hljs-comment">aten::convolution 409</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">aten::_convolution 253</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">aten::cudnn_convolution 5</span><span class="hljs-string">.</span><span class="hljs-comment">465ms 2</span><span class="hljs-string">.</span><span class="hljs-comment">970ms</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">cudaEventRecord 138</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">cudaStreamIsCapturing 43</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">cudaStreamGetPriority 40</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-comment">cudaDeviceGetStreamPriorityRange 10</span><span class="hljs-string">.</span><span class="hljs-comment">000us 0</span><span class="hljs-string">.</span><span class="hljs-comment">000us</span> <span class="hljs-literal">--</span> | |
| <span class="hljs-literal">-------------------------------------------------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> <span class="hljs-literal">------------</span> | |
| <span class="hljs-comment">Self CPU time total: 21</span><span class="hljs-string">.</span><span class="hljs-comment">938ms</span> | |
| <span class="hljs-comment">Self CUDA time total: 4</span><span class="hljs-string">.</span><span class="hljs-comment">165ms</span>`,lang:"",wrap:!1}}),nl=new jl({props:{title:"Conclusion and Further Information",local:"conclusion-and-further-information",headingTag:"h2"}}),wl=new Ls({props:{source:"https://github.com/huggingface/accelerate/blob/main/docs/source/usage_guides/profiler.md"}}),{c(){t=m("meta"),a=j(),s=m("p"),w=j(),U(M.$$.fragment),y=j(),U(I.$$.fragment),h=j(),_=m("p"),_.textContent=Kl,Jl=j(),Z=m("p"),Z.textContent=ql,ol=j(),U(V.$$.fragment),cl=j(),k=m("p"),k.textContent=Ol,Tl=j(),v=m("p"),v.textContent=ls,il=j(),U(S.$$.fragment),Cl=j(),G=m("p"),G.textContent=ss,Il=j(),U(E.$$.fragment),ml=j(),X=m("p"),X.innerHTML=ts,Al=j(),U(N.$$.fragment),ul=j(),U(W.$$.fragment),hl=j(),Q=m("p"),Q.innerHTML=Ms,fl=j(),U($.$$.fragment),dl=j(),z=m("p"),z.textContent=es,bl=j(),U(R.$$.fragment),Sl=j(),Y=m("p"),Y.textContent=as,$l=j(),U(H.$$.fragment),gl=j(),x=m("p"),x.textContent=ns,Bl=j(),U(F.$$.fragment),Ll=j(),D=m("p"),D.innerHTML=ps,_l=j(),P=m("p"),P.innerHTML=ys,Zl=j(),U(g.$$.fragment),Vl=j(),U(K.$$.fragment),kl=j(),q=m("p"),q.textContent=ws,vl=j(),O=m("ul"),O.innerHTML=js,Gl=j(),ll=m("p"),ll.textContent=rs,El=j(),U(B.$$.fragment),Xl=j(),U(sl.$$.fragment),Nl=j(),tl=m("p"),tl.textContent=Us,Wl=j(),Ml=m("p"),Ml.textContent=Js,Ql=j(),U(L.$$.fragment),zl=j(),el=m("p"),el.textContent=os,Rl=j(),U(al.$$.fragment),Yl=j(),U(nl.$$.fragment),Hl=j(),pl=m("p"),pl.textContent=cs,xl=j(),yl=m("p"),yl.innerHTML=Ts,Fl=j(),U(wl.$$.fragment),Dl=j(),rl=m("p"),this.h()},l(l){const e=$s("svelte-u9bgzb",document.head);t=A(e,"META",{name:!0,content:!0}),e.forEach(n),a=r(l),s=A(l,"P",{}),us(s).forEach(n),w=r(l),J(M.$$.fragment,l),y=r(l),J(I.$$.fragment,l),h=r(l),_=A(l,"P",{"data-svelte-h":!0}),u(_)!=="svelte-nolygo"&&(_.textContent=Kl),Jl=r(l),Z=A(l,"P",{"data-svelte-h":!0}),u(Z)!=="svelte-mqipw7"&&(Z.textContent=ql),ol=r(l),J(V.$$.fragment,l),cl=r(l),k=A(l,"P",{"data-svelte-h":!0}),u(k)!=="svelte-rec50t"&&(k.textContent=Ol),Tl=r(l),v=A(l,"P",{"data-svelte-h":!0}),u(v)!=="svelte-556cz1"&&(v.textContent=ls),il=r(l),J(S.$$.fragment,l),Cl=r(l),G=A(l,"P",{"data-svelte-h":!0}),u(G)!=="svelte-1nltvv4"&&(G.textContent=ss),Il=r(l),J(E.$$.fragment,l),ml=r(l),X=A(l,"P",{"data-svelte-h":!0}),u(X)!=="svelte-6rbdvd"&&(X.innerHTML=ts),Al=r(l),J(N.$$.fragment,l),ul=r(l),J(W.$$.fragment,l),hl=r(l),Q=A(l,"P",{"data-svelte-h":!0}),u(Q)!=="svelte-1eenghb"&&(Q.innerHTML=Ms),fl=r(l),J($.$$.fragment,l),dl=r(l),z=A(l,"P",{"data-svelte-h":!0}),u(z)!=="svelte-1nltvv4"&&(z.textContent=es),bl=r(l),J(R.$$.fragment,l),Sl=r(l),Y=A(l,"P",{"data-svelte-h":!0}),u(Y)!=="svelte-pyeucv"&&(Y.textContent=as),$l=r(l),J(H.$$.fragment,l),gl=r(l),x=A(l,"P",{"data-svelte-h":!0}),u(x)!=="svelte-1c797ky"&&(x.textContent=ns),Bl=r(l),J(F.$$.fragment,l),Ll=r(l),D=A(l,"P",{"data-svelte-h":!0}),u(D)!=="svelte-r8y8s9"&&(D.innerHTML=ps),_l=r(l),P=A(l,"P",{"data-svelte-h":!0}),u(P)!=="svelte-14g38nf"&&(P.innerHTML=ys),Zl=r(l),J(g.$$.fragment,l),Vl=r(l),J(K.$$.fragment,l),kl=r(l),q=A(l,"P",{"data-svelte-h":!0}),u(q)!=="svelte-voqhk0"&&(q.textContent=ws),vl=r(l),O=A(l,"UL",{"data-svelte-h":!0}),u(O)!=="svelte-zcfpqf"&&(O.innerHTML=js),Gl=r(l),ll=A(l,"P",{"data-svelte-h":!0}),u(ll)!=="svelte-1idin3s"&&(ll.textContent=rs),El=r(l),J(B.$$.fragment,l),Xl=r(l),J(sl.$$.fragment,l),Nl=r(l),tl=A(l,"P",{"data-svelte-h":!0}),u(tl)!=="svelte-wx7pol"&&(tl.textContent=Us),Wl=r(l),Ml=A(l,"P",{"data-svelte-h":!0}),u(Ml)!=="svelte-yw0di5"&&(Ml.textContent=Js),Ql=r(l),J(L.$$.fragment,l),zl=r(l),el=A(l,"P",{"data-svelte-h":!0}),u(el)!=="svelte-1nltvv4"&&(el.textContent=os),Rl=r(l),J(al.$$.fragment,l),Yl=r(l),J(nl.$$.fragment,l),Hl=r(l),pl=A(l,"P",{"data-svelte-h":!0}),u(pl)!=="svelte-ubv7yt"&&(pl.textContent=cs),xl=r(l),yl=A(l,"P",{"data-svelte-h":!0}),u(yl)!=="svelte-15zce5a"&&(yl.innerHTML=Ts),Fl=r(l),J(wl.$$.fragment,l),Dl=r(l),rl=A(l,"P",{}),us(rl).forEach(n),this.h()},h(){hs(t,"name","hf:doc:metadata"),hs(t,"content",Fs)},m(l,e){gs(document.head,t),p(l,a,e),p(l,s,e),p(l,w,e),o(M,l,e),p(l,y,e),o(I,l,e),p(l,h,e),p(l,_,e),p(l,Jl,e),p(l,Z,e),p(l,ol,e),o(V,l,e),p(l,cl,e),p(l,k,e),p(l,Tl,e),p(l,v,e),p(l,il,e),o(S,l,e),p(l,Cl,e),p(l,G,e),p(l,Il,e),o(E,l,e),p(l,ml,e),p(l,X,e),p(l,Al,e),o(N,l,e),p(l,ul,e),o(W,l,e),p(l,hl,e),p(l,Q,e),p(l,fl,e),o($,l,e),p(l,dl,e),p(l,z,e),p(l,bl,e),o(R,l,e),p(l,Sl,e),p(l,Y,e),p(l,$l,e),o(H,l,e),p(l,gl,e),p(l,x,e),p(l,Bl,e),o(F,l,e),p(l,Ll,e),p(l,D,e),p(l,_l,e),p(l,P,e),p(l,Zl,e),o(g,l,e),p(l,Vl,e),o(K,l,e),p(l,kl,e),p(l,q,e),p(l,vl,e),p(l,O,e),p(l,Gl,e),p(l,ll,e),p(l,El,e),o(B,l,e),p(l,Xl,e),o(sl,l,e),p(l,Nl,e),p(l,tl,e),p(l,Wl,e),p(l,Ml,e),p(l,Ql,e),o(L,l,e),p(l,zl,e),p(l,el,e),p(l,Rl,e),o(al,l,e),p(l,Yl,e),o(nl,l,e),p(l,Hl,e),p(l,pl,e),p(l,xl,e),p(l,yl,e),p(l,Fl,e),o(wl,l,e),p(l,Dl,e),p(l,rl,e),Pl=!0},p(l,[e]){const is={};e&2&&(is.$$scope={dirty:e,ctx:l}),S.$set(is);const Cs={};e&2&&(Cs.$$scope={dirty:e,ctx:l}),$.$set(Cs);const Is={};e&2&&(Is.$$scope={dirty:e,ctx:l}),g.$set(Is);const ms={};e&2&&(ms.$$scope={dirty:e,ctx:l}),B.$set(ms);const As={};e&2&&(As.$$scope={dirty:e,ctx:l}),L.$set(As)},i(l){Pl||(c(M.$$.fragment,l),c(I.$$.fragment,l),c(V.$$.fragment,l),c(S.$$.fragment,l),c(E.$$.fragment,l),c(N.$$.fragment,l),c(W.$$.fragment,l),c($.$$.fragment,l),c(R.$$.fragment,l),c(H.$$.fragment,l),c(F.$$.fragment,l),c(g.$$.fragment,l),c(K.$$.fragment,l),c(B.$$.fragment,l),c(sl.$$.fragment,l),c(L.$$.fragment,l),c(al.$$.fragment,l),c(nl.$$.fragment,l),c(wl.$$.fragment,l),Pl=!0)},o(l){T(M.$$.fragment,l),T(I.$$.fragment,l),T(V.$$.fragment,l),T(S.$$.fragment,l),T(E.$$.fragment,l),T(N.$$.fragment,l),T(W.$$.fragment,l),T($.$$.fragment,l),T(R.$$.fragment,l),T(H.$$.fragment,l),T(F.$$.fragment,l),T(g.$$.fragment,l),T(K.$$.fragment,l),T(B.$$.fragment,l),T(sl.$$.fragment,l),T(L.$$.fragment,l),T(al.$$.fragment,l),T(nl.$$.fragment,l),T(wl.$$.fragment,l),Pl=!1},d(l){l&&(n(a),n(s),n(w),n(y),n(h),n(_),n(Jl),n(Z),n(ol),n(cl),n(k),n(Tl),n(v),n(il),n(Cl),n(G),n(Il),n(ml),n(X),n(Al),n(ul),n(hl),n(Q),n(fl),n(dl),n(z),n(bl),n(Sl),n(Y),n($l),n(gl),n(x),n(Bl),n(Ll),n(D),n(_l),n(P),n(Zl),n(Vl),n(kl),n(q),n(vl),n(O),n(Gl),n(ll),n(El),n(Xl),n(Nl),n(tl),n(Wl),n(Ml),n(Ql),n(zl),n(el),n(Rl),n(Yl),n(Hl),n(pl),n(xl),n(yl),n(Fl),n(Dl),n(rl)),n(t),i(M,l),i(I,l),i(V,l),i(S,l),i(E,l),i(N,l),i(W,l),i($,l),i(R,l),i(H,l),i(F,l),i(g,l),i(K,l),i(B,l),i(sl,l),i(L,l),i(al,l),i(nl,l),i(wl,l)}}}const Fs='{"title":"Profiler","local":"profiler","sections":[{"title":"Using profiler to analyze execution time","local":"using-profiler-to-analyze-execution-time","sections":[],"depth":2},{"title":"Using profiler to analyze memory consumption","local":"using-profiler-to-analyze-memory-consumption","sections":[],"depth":2},{"title":"Exporting chrome trace","local":"exporting-chrome-trace","sections":[],"depth":2},{"title":"Using Profiler to Analyze Long-Running Jobs","local":"using-profiler-to-analyze-long-running-jobs","sections":[],"depth":2},{"title":"FLOPS","local":"flops","sections":[],"depth":2},{"title":"Conclusion and Further Information","local":"conclusion-and-further-information","sections":[],"depth":2}],"depth":1}';function Ds(C){return ds(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class st extends bs{constructor(t){super(),Ss(this,t,Ds,xs,fs,{})}}export{st as component}; | |
Xet Storage Details
- Size:
- 56.4 kB
- Xet hash:
- a0b94aaa66fd466a0fcf40a494b9ffa583499c35fdb512aaebd899a17bb7ebf4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.