Buckets:
| import{s as yl,o as Ml,n as P}from"../chunks/scheduler.f3b1e791.js";import{S as ul,i as fl,e as w,s as a,c as d,h as hl,a as T,d as s,b as o,f as $,g as y,j as U,k as j,l as i,m as p,n as M,t as u,o as f,p as h}from"../chunks/index.d8b6a549.js";import{C as wl}from"../chunks/CopyLLMTxtMenu.1edf0ddf.js";import{D as I,E as q}from"../chunks/ExampleCodeBlock.d686d227.js";import{C as K}from"../chunks/CodeBlock.05c913ee.js";import{H as b,E as Tl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a742978a.js";function Jl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaC5ubiUyMGFzJTIwbm4lMEElMEFmcm9tJTIwa2VybmVscyUyMGltcG9ydCUyMHVzZV9rZXJuZWxfZm9yd2FyZF9mcm9tX2h1YiUwQWZyb20lMjBrZXJuZWxzJTIwaW1wb3J0JTIwTW9kZSUyQyUyMGtlcm5lbGl6ZSUwQSUwQSU0MHVzZV9rZXJuZWxfZm9yd2FyZF9mcm9tX2h1YiglMjJNeUN1c3RvbUxheWVyJTIyKSUwQWNsYXNzJTIwTXlDdXN0b21MYXllcihubi5Nb2R1bGUpJTNBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiUyQyUyMGhpZGRlbl9zaXplKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1cGVyKCkuX19pbml0X18oKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuaGlkZGVuX3NpemUlMjAlM0QlMjBoaWRkZW5fc2l6ZSUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMHglM0ElMjB0b3JjaC5UZW5zb3IpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwb3JpZ2luYWwlMjBpbXBsZW1lbnRhdGlvbiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMHglMEElMEFtb2RlbCUyMCUzRCUyME15Q3VzdG9tTGF5ZXIoNzY4KSUwQSUwQSUyMyUyMFRoZSUyMGxheWVyJTIwY2FuJTIwbm93JTIwYmUlMjBrZXJuZWxpemVkJTNBJTBBJTIzJTIwbW9kZWwlMjAlM0QlMjBrZXJuZWxpemUobW9kZWwlMkMlMjBtb2RlJTNETW9kZS5UUkFJTklORyUyMCU3QyUyME1vZGUuVE9SQ0hfQ09NUElMRSUyQyUyMGRldmljZSUzRCUyMmN1ZGElMjIp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> use_kernel_forward_from_hub | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> Mode, kernelize | |
| <span class="hljs-meta">@use_kernel_forward_from_hub(<span class="hljs-params"><span class="hljs-string">"MyCustomLayer"</span></span>)</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyCustomLayer</span>(nn.Module): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, hidden_size</span>): | |
| <span class="hljs-built_in">super</span>().__init__() | |
| self.hidden_size = hidden_size | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, x: torch.Tensor</span>): | |
| <span class="hljs-comment"># original implementation</span> | |
| <span class="hljs-keyword">return</span> x | |
| model = MyCustomLayer(<span class="hljs-number">768</span>) | |
| <span class="hljs-comment"># The layer can now be kernelized:</span> | |
| <span class="hljs-comment"># model = kernelize(model, mode=Mode.TRAINING | Mode.TORCH_COMPILE, device="cuda")</span>`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function gl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaC5ubiUyMGFzJTIwbm4lMEElMEFmcm9tJTIwa2VybmVscyUyMGltcG9ydCUyMHVzZV9rZXJuZWxfZnVuY19mcm9tX2h1YiUwQWZyb20lMjBrZXJuZWxzJTIwaW1wb3J0JTIwTW9kZSUyQyUyMGtlcm5lbGl6ZSUwQSUwQSU0MHVzZV9rZXJuZWxfZnVuY19mcm9tX2h1YiglMjJteV9jdXN0b21fZnVuYyUyMiklMEFkZWYlMjBteV9jdXN0b21fZnVuYyh4JTNBJTIwdG9yY2guVGVuc29yKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyME9yaWdpbmFsJTIwaW1wbGVtZW50YXRpb24lMEElMjAlMjAlMjAlMjByZXR1cm4lMjB4JTBBJTBBY2xhc3MlMjBNeU1vZGVsKHRvcmNoLm5uLk1vZHVsZSklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1cGVyKCkuX19pbml0X18oKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuZm4lMjAlM0QlMjBteV9jdXN0b21fZnVuYyUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMHgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwc2VsZi5mbih4KSUwQSUwQW1vZGVsJTIwJTNEJTIwTXlNb2RlbCgpJTBBJTBBJTIzJTIwVGhlJTIwbGF5ZXIlMjBjYW4lMjBub3clMjBiZSUyMGtlcm5lbGl6ZWQlM0ElMEElMjMlMjBtb2RlbCUyMCUzRCUyMGtlcm5lbGl6ZShtb2RlbCUyQyUyMG1vZGUlM0RNb2RlLlRSQUlOSU5HJTIwJTdDJTIwTW9kZS5UT1JDSF9DT01QSUxFJTJDJTIwZGV2aWNlJTNEJTIyY3VkYSUyMik=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> use_kernel_func_from_hub | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> Mode, kernelize | |
| <span class="hljs-meta">@use_kernel_func_from_hub(<span class="hljs-params"><span class="hljs-string">"my_custom_func"</span></span>)</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">my_custom_func</span>(<span class="hljs-params">x: torch.Tensor</span>): | |
| <span class="hljs-comment"># Original implementation</span> | |
| <span class="hljs-keyword">return</span> x | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyModel</span>(torch.nn.Module): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self</span>): | |
| <span class="hljs-built_in">super</span>().__init__() | |
| self.fn = my_custom_func | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, x</span>): | |
| <span class="hljs-keyword">return</span> self.fn(x) | |
| model = MyModel() | |
| <span class="hljs-comment"># The layer can now be kernelized:</span> | |
| <span class="hljs-comment"># model = kernelize(model, mode=Mode.TRAINING | Mode.TORCH_COMPILE, device="cuda")</span>`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function Ul(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjByZXBsYWNlX2tlcm5lbF9mb3J3YXJkX2Zyb21faHViJTBBaW1wb3J0JTIwdG9yY2gubm4lMjBhcyUyMG5uJTBBJTBBcmVwbGFjZV9rZXJuZWxfZm9yd2FyZF9mcm9tX2h1Yihubi5MYXllck5vcm0lMkMlMjAlMjJMYXllck5vcm0lMjIp",highlighted:`<span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> replace_kernel_forward_from_hub | |
| <span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn | |
| replace_kernel_forward_from_hub(nn.LayerNorm, <span class="hljs-string">"LayerNorm"</span>)`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function kl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaC5ubiUyMGFzJTIwbm4lMEFmcm9tJTIwdG9yY2gubm4lMjBpbXBvcnQlMjBmdW5jdGlvbmFsJTIwYXMlMjBGJTBBJTBBZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjB1c2Vfa2VybmVsX2ZvcndhcmRfZnJvbV9odWIlMEFmcm9tJTIwa2VybmVscyUyMGltcG9ydCUyMHVzZV9rZXJuZWxfbWFwcGluZyUyQyUyMExheWVyUmVwb3NpdG9yeSUyQyUyMERldmljZSUwQWZyb20lMjBrZXJuZWxzJTIwaW1wb3J0JTIwTW9kZSUyQyUyMGtlcm5lbGl6ZSUwQSUwQSUyMyUyMERlZmluZSUyMGElMjBtYXBwaW5nJTBBbWFwcGluZyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMlNpbHVBbmRNdWwlMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjdWRhJTIyJTNBJTIwTGF5ZXJSZXBvc2l0b3J5KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcG9faWQlM0QlMjJrZXJuZWxzLWNvbW11bml0eSUyRmFjdGl2YXRpb24lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYXllcl9uYW1lJTNEJTIyU2lsdUFuZE11bCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZlcnNpb24lM0QxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCU3RCUwQSU3RCUwQSUwQSU0MHVzZV9rZXJuZWxfZm9yd2FyZF9mcm9tX2h1YiglMjJTaWx1QW5kTXVsJTIyKSUwQWNsYXNzJTIwU2lsdUFuZE11bChubi5Nb2R1bGUpJTNBJTBBJTIwJTIwJTIwJTIwZGVmJTIwZm9yd2FyZChzZWxmJTJDJTIweCUzQSUyMHRvcmNoLlRlbnNvciklMjAtJTNFJTIwdG9yY2guVGVuc29yJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZCUyMCUzRCUyMHguc2hhcGUlNUItMSU1RCUyMCUyRiUyRiUyMDIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBGLnNpbHUoeCU1Qi4uLiUyQyUyMCUzQWQlNUQpJTIwKiUyMHglNUIuLi4lMkMlMjBkJTNBJTVEJTBBJTBBbW9kZWwlMjAlM0QlMjBTaWx1QW5kTXVsKCklMEElMEElMjMlMjBVc2UlMjB0aGUlMjBtYXBwaW5nJTIwZm9yJTIwdGhlJTIwZHVyYXRpb24lMjBvZiUyMHRoZSUyMGNvbnRleHQuJTBBd2l0aCUyMHVzZV9rZXJuZWxfbWFwcGluZyhtYXBwaW5nKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMGtlcm5lbGl6ZSUyMHVzZXMlMjB0aGUlMjB0ZW1wb3JhcnklMjBtYXBwaW5nJTBBJTIwJTIwJTIwJTIwbW9kZWwlMjAlM0QlMjBrZXJuZWxpemUobW9kZWwlMkMlMjBtb2RlJTNETW9kZS5UUkFJTklORyUyMCU3QyUyME1vZGUuVE9SQ0hfQ09NUElMRSUyQyUyMGRldmljZSUzRCUyMmN1ZGElMjIpJTBBJTBBJTIzJTIwT3V0c2lkZSUyMHRoZSUyMGNvbnRleHQlMkMlMjBvcmlnaW5hbCUyMG1hcHBpbmdzJTIwYXJlJTIwcmVzdG9yZWQ=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn | |
| <span class="hljs-keyword">from</span> torch.nn <span class="hljs-keyword">import</span> functional <span class="hljs-keyword">as</span> F | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> use_kernel_forward_from_hub | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> use_kernel_mapping, LayerRepository, Device | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> Mode, kernelize | |
| <span class="hljs-comment"># Define a mapping</span> | |
| mapping = { | |
| <span class="hljs-string">"SiluAndMul"</span>: { | |
| <span class="hljs-string">"cuda"</span>: LayerRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/activation"</span>, | |
| layer_name=<span class="hljs-string">"SiluAndMul"</span>, | |
| version=<span class="hljs-number">1</span> | |
| ) | |
| } | |
| } | |
| <span class="hljs-meta">@use_kernel_forward_from_hub(<span class="hljs-params"><span class="hljs-string">"SiluAndMul"</span></span>)</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">SiluAndMul</span>(nn.Module): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, x: torch.Tensor</span>) -> torch.Tensor: | |
| d = x.shape[-<span class="hljs-number">1</span>] // <span class="hljs-number">2</span> | |
| <span class="hljs-keyword">return</span> F.silu(x[..., :d]) * x[..., d:] | |
| model = SiluAndMul() | |
| <span class="hljs-comment"># Use the mapping for the duration of the context.</span> | |
| <span class="hljs-keyword">with</span> use_kernel_mapping(mapping): | |
| <span class="hljs-comment"># kernelize uses the temporary mapping</span> | |
| model = kernelize(model, mode=Mode.TRAINING | Mode.TORCH_COMPILE, device=<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-comment"># Outside the context, original mappings are restored</span>`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function bl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBMYXllclJlcG9zaXRvcnklMkMlMjByZWdpc3Rlcl9rZXJuZWxfbWFwcGluZyUyQyUyME1vZGUlMEElMEElMjMlMjBTaW1wbGUlMjBtYXBwaW5nJTIwZm9yJTIwYSUyMHNpbmdsZSUyMGtlcm5lbCUyMHBlciUyMGRldmljZSUwQWtlcm5lbF9sYXllcl9tYXBwaW5nJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIyTGxhbWFSTVNOb3JtJTIyJTNBJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY3VkYSUyMiUzQSUyMExheWVyUmVwb3NpdG9yeSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIya2VybmVscy1jb21tdW5pdHklMkZsYXllcl9ub3JtJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGF5ZXJfbmFtZSUzRCUyMkxsYW1hUk1TTm9ybSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZlcnNpb24lM0QxJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUyQyUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSU3RCUwQXJlZ2lzdGVyX2tlcm5lbF9tYXBwaW5nKGtlcm5lbF9sYXllcl9tYXBwaW5nKSUwQSUwQSUyMyUyMEFkdmFuY2VkJTIwbWFwcGluZyUyMHdpdGglMjBtb2RlLXNwZWNpZmljJTIwa2VybmVscyUwQWFkdmFuY2VkX21hcHBpbmclMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjJNdWx0aUhlYWRBdHRlbnRpb24lMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjdWRhJTIyJTNBJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTW9kZS5UUkFJTklORyUzQSUyMExheWVyUmVwb3NpdG9yeSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIydXNlcm5hbWUlMkZ0cmFpbmluZy1rZXJuZWxzJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGF5ZXJfbmFtZSUzRCUyMlRyYWluaW5nQXR0ZW50aW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdmVyc2lvbiUzRDElMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTW9kZS5JTkZFUkVOQ0UlM0ElMjBMYXllclJlcG9zaXRvcnkoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVwb19pZCUzRCUyMnVzZXJuYW1lJTJGaW5mZXJlbmNlLWtlcm5lbHMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYXllcl9uYW1lJTNEJTIyRmFzdEF0dGVudGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZlcnNpb24lM0QxJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCU3RCUwQSU3RCUwQXJlZ2lzdGVyX2tlcm5lbF9tYXBwaW5nKGFkdmFuY2VkX21hcHBpbmcp",highlighted:`<span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> LayerRepository, register_kernel_mapping, Mode | |
| <span class="hljs-comment"># Simple mapping for a single kernel per device</span> | |
| kernel_layer_mapping = { | |
| <span class="hljs-string">"LlamaRMSNorm"</span>: { | |
| <span class="hljs-string">"cuda"</span>: LayerRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/layer_norm"</span>, | |
| layer_name=<span class="hljs-string">"LlamaRMSNorm"</span>, | |
| version=<span class="hljs-number">1</span>, | |
| ), | |
| }, | |
| } | |
| register_kernel_mapping(kernel_layer_mapping) | |
| <span class="hljs-comment"># Advanced mapping with mode-specific kernels</span> | |
| advanced_mapping = { | |
| <span class="hljs-string">"MultiHeadAttention"</span>: { | |
| <span class="hljs-string">"cuda"</span>: { | |
| Mode.TRAINING: LayerRepository( | |
| repo_id=<span class="hljs-string">"username/training-kernels"</span>, | |
| layer_name=<span class="hljs-string">"TrainingAttention"</span>, | |
| version=<span class="hljs-number">1</span>, | |
| ), | |
| Mode.INFERENCE: LayerRepository( | |
| repo_id=<span class="hljs-string">"username/inference-kernels"</span>, | |
| layer_name=<span class="hljs-string">"FastAttention"</span>, | |
| version=<span class="hljs-number">1</span>, | |
| ), | |
| } | |
| } | |
| } | |
| register_kernel_mapping(advanced_mapping)`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function $l(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaC5ubiUyMGFzJTIwbm4lMEElMEFmcm9tJTIwa2VybmVscyUyMGltcG9ydCUyMGtlcm5lbGl6ZSUyQyUyME1vZGUlMkMlMjByZWdpc3Rlcl9rZXJuZWxfbWFwcGluZyUyQyUyMExheWVyUmVwb3NpdG9yeSUwQWZyb20lMjBrZXJuZWxzJTIwaW1wb3J0JTIwdXNlX2tlcm5lbF9mb3J3YXJkX2Zyb21faHViJTBBJTBBJTQwdXNlX2tlcm5lbF9mb3J3YXJkX2Zyb21faHViKCUyMlNpbHVBbmRNdWwlMjIpJTBBY2xhc3MlMjBTaWx1QW5kTXVsKG5uLk1vZHVsZSklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBmb3J3YXJkKHNlbGYlMkMlMjB4JTNBJTIwdG9yY2guVGVuc29yKSUyMC0lM0UlMjB0b3JjaC5UZW5zb3IlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkJTIwJTNEJTIweC5zaGFwZSU1Qi0xJTVEJTIwJTJGJTJGJTIwMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMEYuc2lsdSh4JTVCLi4uJTJDJTIwJTNBZCU1RCklMjAqJTIweCU1Qi4uLiUyQyUyMGQlM0ElNUQlMEElMEFtYXBwaW5nJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIyU2lsdUFuZE11bCUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmN1ZGElMjIlM0ElMjBMYXllclJlcG9zaXRvcnkoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVwb19pZCUzRCUyMmtlcm5lbHMtY29tbXVuaXR5JTJGYWN0aXZhdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxheWVyX25hbWUlM0QlMjJTaWx1QW5kTXVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCU3RCUwQSU3RCUwQXJlZ2lzdGVyX2tlcm5lbF9tYXBwaW5nKG1hcHBpbmcpJTBBJTBBJTIzJTIwQ3JlYXRlJTIwYW5kJTIwa2VybmVsaXplJTIwYSUyMG1vZGVsJTBBbW9kZWwlMjAlM0QlMjBubi5TZXF1ZW50aWFsKCUwQSUyMCUyMCUyMCUyMG5uLkxpbmVhcigxMDI0JTJDJTIwMjA0OCUyQyUyMGRldmljZSUzRCUyMmN1ZGElMjIpJTJDJTBBJTIwJTIwJTIwJTIwU2lsdUFuZE11bCgpJTJDJTBBKSUwQSUwQSUyMyUyMEtlcm5lbGl6ZSUyMGZvciUyMGluZmVyZW5jZSUwQWtlcm5lbGl6ZWRfbW9kZWwlMjAlM0QlMjBrZXJuZWxpemUobW9kZWwlMkMlMjBtb2RlJTNETW9kZS5UUkFJTklORyUyMCU3QyUyME1vZGUuVE9SQ0hfQ09NUElMRSk=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> kernelize, Mode, register_kernel_mapping, LayerRepository | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> use_kernel_forward_from_hub | |
| <span class="hljs-meta">@use_kernel_forward_from_hub(<span class="hljs-params"><span class="hljs-string">"SiluAndMul"</span></span>)</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">SiluAndMul</span>(nn.Module): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, x: torch.Tensor</span>) -> torch.Tensor: | |
| d = x.shape[-<span class="hljs-number">1</span>] // <span class="hljs-number">2</span> | |
| <span class="hljs-keyword">return</span> F.silu(x[..., :d]) * x[..., d:] | |
| mapping = { | |
| <span class="hljs-string">"SiluAndMul"</span>: { | |
| <span class="hljs-string">"cuda"</span>: LayerRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/activation"</span>, | |
| layer_name=<span class="hljs-string">"SiluAndMul"</span>, | |
| ) | |
| } | |
| } | |
| register_kernel_mapping(mapping) | |
| <span class="hljs-comment"># Create and kernelize a model</span> | |
| model = nn.Sequential( | |
| nn.Linear(<span class="hljs-number">1024</span>, <span class="hljs-number">2048</span>, device=<span class="hljs-string">"cuda"</span>), | |
| SiluAndMul(), | |
| ) | |
| <span class="hljs-comment"># Kernelize for inference</span> | |
| kernelized_model = kernelize(model, mode=Mode.TRAINING | Mode.TORCH_COMPILE)`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function jl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBEZXZpY2UlMkMlMjBDVURBUHJvcGVydGllcyUwQSUwQSUyMyUyMEJhc2ljJTIwQ1VEQSUyMGRldmljZSUwQWN1ZGFfZGV2aWNlJTIwJTNEJTIwRGV2aWNlKHR5cGUlM0QlMjJjdWRhJTIyKSUwQSUwQSUyMyUyMENVREElMjBkZXZpY2UlMjB3aXRoJTIwc3BlY2lmaWMlMjBjYXBhYmlsaXR5JTIwcmVxdWlyZW1lbnRzJTBBY3VkYV9kZXZpY2Vfd2l0aF9wcm9wcyUyMCUzRCUyMERldmljZSglMEElMjAlMjAlMjAlMjB0eXBlJTNEJTIyY3VkYSUyMiUyQyUwQSUyMCUyMCUyMCUyMHByb3BlcnRpZXMlM0RDVURBUHJvcGVydGllcyhtaW5fY2FwYWJpbGl0eSUzRDc1JTJDJTIwbWF4X2NhcGFiaWxpdHklM0Q5MCklMEEpJTBBJTBBJTIzJTIwTVBTJTIwZGV2aWNlJTIwZm9yJTIwQXBwbGUlMjBTaWxpY29uJTBBbXBzX2RldmljZSUyMCUzRCUyMERldmljZSh0eXBlJTNEJTIybXBzJTIyKSUwQSUwQSUyMyUyMFhQVSUyMGRldmljZSUyMChlLmcuJTJDJTIwSW50ZWwoUiklMjBEYXRhJTIwQ2VudGVyJTIwR1BVJTIwTWF4JTIwMTU1MCklMEF4cHVfZGV2aWNlJTIwJTNEJTIwRGV2aWNlKHR5cGUlM0QlMjJ4cHUlMjIpJTBBJTBBJTIzJTIwTlBVJTIwZGV2aWNlJTIwKEh1YXdlaSUyMEFzY2VuZCklMEFucHVfZGV2aWNlJTIwJTNEJTIwRGV2aWNlKHR5cGUlM0QlMjJucHUlMjIp",highlighted:`<span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> Device, CUDAProperties | |
| <span class="hljs-comment"># Basic CUDA device</span> | |
| cuda_device = Device(<span class="hljs-built_in">type</span>=<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-comment"># CUDA device with specific capability requirements</span> | |
| cuda_device_with_props = Device( | |
| <span class="hljs-built_in">type</span>=<span class="hljs-string">"cuda"</span>, | |
| properties=CUDAProperties(min_capability=<span class="hljs-number">75</span>, max_capability=<span class="hljs-number">90</span>) | |
| ) | |
| <span class="hljs-comment"># MPS device for Apple Silicon</span> | |
| mps_device = Device(<span class="hljs-built_in">type</span>=<span class="hljs-string">"mps"</span>) | |
| <span class="hljs-comment"># XPU device (e.g., Intel(R) Data Center GPU Max 1550)</span> | |
| xpu_device = Device(<span class="hljs-built_in">type</span>=<span class="hljs-string">"xpu"</span>) | |
| <span class="hljs-comment"># NPU device (Huawei Ascend)</span> | |
| npu_device = Device(<span class="hljs-built_in">type</span>=<span class="hljs-string">"npu"</span>)`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function _l(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBGdW5jUmVwb3NpdG9yeSUwQSUwQSUyMyUyMFJlZmVyZW5jZSUyMGElMjBzcGVjaWZpYyUyMGxheWVyJTIwYnklMjByZXZpc2lvbiUwQWxheWVyX3JlcG8lMjAlM0QlMjBGdW5jUmVwb3NpdG9yeSglMEElMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIya2VybmVscy1jb21tdW5pdHklMkZhY3RpdmF0aW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwZnVuY19uYW1lJTNEJTIyc2lsdV9hbmRfbXVsJTIyJTJDJTBBKSUwQSUwQSUyMyUyMFJlZmVyZW5jZSUyMGElMjBsYXllciUyMGJ5JTIwdmVyc2lvbiUwQWxheWVyX3JlcG9fdmVyc2lvbmVkJTIwJTNEJTIwRnVuY1JlcG9zaXRvcnkoJTBBJTIwJTIwJTIwJTIwcmVwb19pZCUzRCUyMmtlcm5lbHMtY29tbXVuaXR5JTJGcmVsdSUyMiUyQyUwQSUyMCUyMCUyMCUyMGZ1bmNfbmFtZSUzRCUyMnJlbHUlMjIlMkMlMEElMjAlMjAlMjAlMjB2ZXJzaW9uJTNEMSUwQSk=",highlighted:`<span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> FuncRepository | |
| <span class="hljs-comment"># Reference a specific layer by revision</span> | |
| layer_repo = FuncRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/activation"</span>, | |
| func_name=<span class="hljs-string">"silu_and_mul"</span>, | |
| ) | |
| <span class="hljs-comment"># Reference a layer by version</span> | |
| layer_repo_versioned = FuncRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/relu"</span>, | |
| func_name=<span class="hljs-string">"relu"</span>, | |
| version=<span class="hljs-number">1</span> | |
| )`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function Il(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBMYXllclJlcG9zaXRvcnklMEElMEElMjMlMjBSZWZlcmVuY2UlMjBhJTIwc3BlY2lmaWMlMjBsYXllciUyMGJ5JTIwcmV2aXNpb24lMEFsYXllcl9yZXBvJTIwJTNEJTIwTGF5ZXJSZXBvc2l0b3J5KCUwQSUyMCUyMCUyMCUyMHJlcG9faWQlM0QlMjJrZXJuZWxzLWNvbW11bml0eSUyRmFjdGl2YXRpb24lMjIlMkMlMEElMjAlMjAlMjAlMjBsYXllcl9uYW1lJTNEJTIyU2lsdUFuZE11bCUyMiUyQyUwQSUyMCUyMCUyMCUyMHZlcnNpb24lM0QxJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> LayerRepository | |
| <span class="hljs-comment"># Reference a specific layer by revision</span> | |
| layer_repo = LayerRepository( | |
| repo_id=<span class="hljs-string">"kernels-community/activation"</span>, | |
| layer_name=<span class="hljs-string">"SiluAndMul"</span>, | |
| version=<span class="hljs-number">1</span>, | |
| )`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function Cl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMHBhdGhsaWIlMjBpbXBvcnQlMjBQYXRoJTBBJTBBZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBMb2NhbEZ1bmNSZXBvc2l0b3J5JTBBJTBBJTIzJTIwUmVmZXJlbmNlJTIwYSUyMHNwZWNpZmljJTIwbGF5ZXIlMjBieSUyMHJldmlzaW9uJTBBbGF5ZXJfcmVwbyUyMCUzRCUyMExvY2FsRnVuY1JlcG9zaXRvcnkoJTBBJTIwJTIwJTIwJTIwcmVwb19wYXRoJTNEUGF0aCglMjIlMkZob21lJTJGZGFuaWVsJTJGa2VybmVscyUyRmFjdGl2YXRpb24lMjIpJTJDJTBBJTIwJTIwJTIwJTIwcGFja2FnZV9uYW1lJTNEJTIyYWN0aXZhdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMGZ1bmNfbmFtZSUzRCUyMnNpbHVfYW5kX211bCUyMiUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> LocalFuncRepository | |
| <span class="hljs-comment"># Reference a specific layer by revision</span> | |
| layer_repo = LocalFuncRepository( | |
| repo_path=Path(<span class="hljs-string">"/home/daniel/kernels/activation"</span>), | |
| package_name=<span class="hljs-string">"activation"</span>, | |
| func_name=<span class="hljs-string">"silu_and_mul"</span>, | |
| )`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function vl(k){let l,g="Example:",m,r,c;return r=new K({props:{code:"ZnJvbSUyMHBhdGhsaWIlMjBpbXBvcnQlMjBQYXRoJTBBJTBBZnJvbSUyMGtlcm5lbHMlMjBpbXBvcnQlMjBMb2NhbExheWVyUmVwb3NpdG9yeSUwQSUwQSUyMyUyMFJlZmVyZW5jZSUyMGElMjBzcGVjaWZpYyUyMGxheWVyJTIwYnklMjByZXZpc2lvbiUwQWxheWVyX3JlcG8lMjAlM0QlMjBMb2NhbExheWVyUmVwb3NpdG9yeSglMEElMjAlMjAlMjAlMjByZXBvX3BhdGglM0RQYXRoKCUyMiUyRmhvbWUlMkZkYW5pZWwlMkZrZXJuZWxzJTJGYWN0aXZhdGlvbiUyMiklMkMlMEElMjAlMjAlMjAlMjBwYWNrYWdlX25hbWUlM0QlMjJhY3RpdmF0aW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGF5ZXJfbmFtZSUzRCUyMlNpbHVBbmRNdWwlMjIlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path | |
| <span class="hljs-keyword">from</span> kernels <span class="hljs-keyword">import</span> LocalLayerRepository | |
| <span class="hljs-comment"># Reference a specific layer by revision</span> | |
| layer_repo = LocalLayerRepository( | |
| repo_path=Path(<span class="hljs-string">"/home/daniel/kernels/activation"</span>), | |
| package_name=<span class="hljs-string">"activation"</span>, | |
| layer_name=<span class="hljs-string">"SiluAndMul"</span>, | |
| )`,wrap:!1}}),{c(){l=w("p"),l.textContent=g,m=a(),d(r.$$.fragment)},l(n){l=T(n,"P",{"data-svelte-h":!0}),U(l)!=="svelte-11lpom8"&&(l.textContent=g),m=o(n),y(r.$$.fragment,n)},m(n,J){p(n,l,J),p(n,m,J),M(r,n,J),c=!0},p:P,i(n){c||(u(r.$$.fragment,n),c=!0)},o(n){f(r.$$.fragment,n),c=!1},d(n){n&&(s(l),s(m)),h(r,n)}}}function xl(k){let l,g,m,r,c,n,J,kn,ye,bn,Me,$n,C,ue,st,ze,Vt="Decorator factory that makes a layer extensible using the specified layer name.",rt,Ye,Nt=`This is a decorator factory that returns a decorator which prepares a layer class to use kernels from the | |
| Hugging Face Hub.`,at,te,jn,fe,_n,_,he,ot,He,At="Decorator that makes a function extensible using the specified function name.",pt,De,Ft=`This is a decorator factory that returns a decorator which prepares a function to use kernels from the | |
| Hugging Face Hub.`,it,qe,Lt=`The function will be exposed as an instance of <code>torch.nn.Module</code> in which | |
| the function is called in <code>forward</code>. For the function to be properly | |
| kernelized, it <strong>must</strong> be a member of another <code>torch.nn.Module</code> that is | |
| part of the model (see the example).`,ct,le,In,we,Cn,v,Te,mt,Pe,zt="Function that prepares a layer class to use kernels from the Hugging Face Hub.",dt,Ke,Yt=`It is recommended to use <a href="/docs/kernels/pr_321/en/api/layers#kernels.use_kernel_forward_from_hub">use_kernel_forward_from_hub()</a> decorator instead. | |
| This function should only be used as a last resort to extend third-party layers, | |
| it is inherently fragile since the member variables and <code>forward</code> signature | |
| of such a layer can change.`,yt,se,vn,Je,xn,ge,Bn,x,Ue,Mt,Oe,Ht="Context manager that sets a kernel mapping for the duration of the context.",ut,en,Dt=`This function allows temporary kernel mappings to be applied within a specific context, enabling different | |
| kernel configurations for different parts of your code.`,ft,re,Zn,ke,Rn,B,be,ht,nn,qt="Register a global mapping between layer names and their corresponding kernel implementations.",wt,tn,Pt=`This function allows you to register a mapping between a layer name and the corresponding kernel(s) to use, | |
| depending on the device and mode. This should be used in conjunction with <a href="/docs/kernels/pr_321/en/api/layers#kernels.kernelize">kernelize()</a>.`,Tt,ae,En,$e,Wn,je,Gn,Z,_e,Jt,ln,Kt="Replace layer forward methods with optimized kernel implementations.",gt,sn,Ot=`This function iterates over all modules in the model and replaces the <code>forward</code> method of extensible layers | |
| for which kernels are registered using <a href="/docs/kernels/pr_321/en/api/layers#kernels.register_kernel_mapping">register_kernel_mapping()</a> or <a href="/docs/kernels/pr_321/en/api/layers#kernels.use_kernel_mapping">use_kernel_mapping()</a>.`,Ut,oe,Sn,Ie,Xn,Ce,Qn,R,ve,kt,rn,el="Represents a compute device with optional properties.",bt,an,nl=`This class encapsulates device information including device type and optional device-specific properties | |
| like CUDA capabilities.`,$t,pe,Vn,xe,Nn,E,Be,jt,on,tl="Kernelize mode",_t,pn,ll=`The <code>Mode</code> flag is used by <a href="/docs/kernels/pr_321/en/api/layers#kernels.kernelize">kernelize()</a> to select kernels for the given mode. Mappings can be registered for | |
| specific modes.`,It,cn,sl=`Note: | |
| Different modes can be combined. For instance, <code>INFERENCE | TORCH_COMPILE</code> should be used for layers that | |
| are used for inference <em>with</em> <code>torch.compile</code>.`,An,Ze,Fn,G,Re,Ct,mn,rl="Repository and name of a function for kernel mapping.",vt,ie,Ln,Ee,zn,S,We,xt,dn,al="Repository and name of a layer for kernel mapping.",Bt,ce,Yn,Ge,Hn,X,Se,Zt,yn,ol="Repository and function name from a local directory for kernel mapping.",Rt,me,Dn,Xe,qn,Q,Qe,Et,Mn,pl="Repository from a local directory for kernel mapping.",Wt,de,Pn,Ve,Kn,V,Ne,Gt,un,il="Repository and name of a function.",St,fn,cl=`In contrast to <code>FuncRepository</code>, this class uses repositories that | |
| are locked inside a project.`,On,Ae,et,N,Fe,Xt,hn,ml="Repository and name of a layer.",Qt,wn,dl=`In contrast to <code>LayerRepository</code>, this class uses repositories that | |
| are locked inside a project.`,nt,Le,tt,Un,lt;return c=new wl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),J=new b({props:{title:"Layers API Reference",local:"layers-api-reference",headingTag:"h1"}}),ye=new b({props:{title:"Making layers kernel-aware",local:"making-layers-kernel-aware",headingTag:"h2"}}),Me=new b({props:{title:"use_kernel_forward_from_hub",local:"kernels.use_kernel_forward_from_hub",headingTag:"h3"}}),ue=new I({props:{name:"kernels.use_kernel_forward_from_hub",anchor:"kernels.use_kernel_forward_from_hub",parameters:[{name:"layer_name",val:": str"}],parametersDescription:[{anchor:"kernels.use_kernel_forward_from_hub.layer_name",description:`<strong>layer_name</strong> (<code>str</code>) — | |
| The name of the layer to use for kernel lookup in registered mappings.`,name:"layer_name"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/layer.py#L251",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>A decorator function that can be applied to layer classes.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>Callable</code></p> | |
| `}}),te=new q({props:{anchor:"kernels.use_kernel_forward_from_hub.example",$$slots:{default:[Jl]},$$scope:{ctx:k}}}),fe=new b({props:{title:"use_kernel_func_from_hub",local:"kernels.use_kernel_func_from_hub",headingTag:"h3"}}),he=new I({props:{name:"kernels.use_kernel_func_from_hub",anchor:"kernels.use_kernel_func_from_hub",parameters:[{name:"func_name",val:": str"}],parametersDescription:[{anchor:"kernels.use_kernel_func_from_hub.func_name",description:`<strong>func_name</strong> (<code>str</code>) — | |
| The name of the function name to use for kernel lookup in registered mappings.`,name:"func_name"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/func.py#L167",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>A decorator function that can be applied to layer classes.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>Callable</code></p> | |
| `}}),le=new q({props:{anchor:"kernels.use_kernel_func_from_hub.example",$$slots:{default:[gl]},$$scope:{ctx:k}}}),we=new b({props:{title:"replace_kernel_forward_from_hub",local:"kernels.replace_kernel_forward_from_hub",headingTag:"h3"}}),Te=new I({props:{name:"kernels.replace_kernel_forward_from_hub",anchor:"kernels.replace_kernel_forward_from_hub",parameters:[{name:"layer_name",val:": str"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/layer.py#L228"}}),se=new q({props:{anchor:"kernels.replace_kernel_forward_from_hub.example",$$slots:{default:[Ul]},$$scope:{ctx:k}}}),Je=new b({props:{title:"Registering kernel mappings",local:"registering-kernel-mappings",headingTag:"h2"}}),ge=new b({props:{title:"use_kernel_mapping",local:"kernels.use_kernel_mapping",headingTag:"h3"}}),Ue=new I({props:{name:"kernels.use_kernel_mapping",anchor:"kernels.use_kernel_mapping",parameters:[{name:"mapping",val:": dict[str, dict[Device | str, RepositoryProtocol | dict[Mode, RepositoryProtocol]]]"},{name:"inherit_mapping",val:": bool = True"}],parametersDescription:[{anchor:"kernels.use_kernel_mapping.mapping",description:`<strong>mapping</strong> (<code>dict[str, dict[Union[Device, str], Union[LayerRepositoryProtocol, dict[Mode, LayerRepositoryProtocol]]]]</code>) — | |
| The kernel mapping to apply. Maps layer names to device-specific kernel configurations.`,name:"mapping"},{anchor:"kernels.use_kernel_mapping.inherit_mapping",description:`<strong>inherit_mapping</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) — | |
| When <code>True</code>, the current mapping will be extended by <code>mapping</code> inside the context. When <code>False</code>, | |
| only <code>mapping</code> is used inside the context.`,name:"inherit_mapping"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/kernelize.py#L17",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>Context manager that handles the temporary kernel mapping.</p> | |
| `}}),re=new q({props:{anchor:"kernels.use_kernel_mapping.example",$$slots:{default:[kl]},$$scope:{ctx:k}}}),ke=new b({props:{title:"register_kernel_mapping",local:"kernels.register_kernel_mapping",headingTag:"h3"}}),be=new I({props:{name:"kernels.register_kernel_mapping",anchor:"kernels.register_kernel_mapping",parameters:[{name:"mapping",val:": dict[str, dict[Device | str, RepositoryProtocol | dict[Mode, RepositoryProtocol]]]"},{name:"inherit_mapping",val:": bool = True"}],parametersDescription:[{anchor:"kernels.register_kernel_mapping.mapping",description:`<strong>mapping</strong> (<code>dict[str, dict[Union[Device, str], Union[RepositoryProtocol, dict[Mode, RepositoryProtocol]]]]</code>) — | |
| The kernel mapping to register globally. Maps layer names to device-specific kernels. | |
| The mapping can specify different kernels for different modes (training, inference, etc.).`,name:"mapping"},{anchor:"kernels.register_kernel_mapping.inherit_mapping",description:`<strong>inherit_mapping</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) — | |
| When <code>True</code>, the current mapping will be extended by <code>mapping</code>. When <code>False</code>, the existing mappings | |
| are erased before adding <code>mapping</code>.`,name:"inherit_mapping"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/kernelize.py#L97"}}),ae=new q({props:{anchor:"kernels.register_kernel_mapping.example",$$slots:{default:[bl]},$$scope:{ctx:k}}}),$e=new b({props:{title:"Kernelizing a model",local:"kernelizing-a-model",headingTag:"h2"}}),je=new b({props:{title:"kernelize",local:"kernels.kernelize",headingTag:"h3"}}),_e=new I({props:{name:"kernels.kernelize",anchor:"kernels.kernelize",parameters:[{name:"model",val:": 'nn.Module'"},{name:"mode",val:": Mode"},{name:"device",val:": str | 'torch.device' | None = None"},{name:"use_fallback",val:": bool = True"}],parametersDescription:[{anchor:"kernels.kernelize.model",description:`<strong>model</strong> (<code>nn.Module</code>) — | |
| The PyTorch model to kernelize.`,name:"model"},{anchor:"kernels.kernelize.mode",description:`<strong>mode</strong> (<a href="/docs/kernels/pr_321/en/api/layers#kernels.Mode">Mode</a>) — The mode that the kernel is going to be used in. For example, | |
| <code>Mode.TRAINING | Mode.TORCH_COMPILE</code> kernelizes the model for training with | |
| <code>torch.compile</code>.`,name:"mode"},{anchor:"kernels.kernelize.device",description:`<strong>device</strong> (<code>Union[str, torch.device]</code>, <em>optional</em>) — | |
| The device type to load kernels for. Supported device types are: “cuda”, “mps”, “npu”, “rocm”, “xpu”. | |
| The device type will be inferred from the model parameters when not provided.`,name:"device"},{anchor:"kernels.kernelize.use_fallback",description:`<strong>use_fallback</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) — | |
| Whether to use the original forward method of modules when no compatible kernel could be found. | |
| If set to <code>False</code>, an exception will be raised in such cases.`,name:"use_fallback"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/kernelize.py#L179",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>The kernelized model with optimized kernel implementations.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>nn.Module</code></p> | |
| `}}),oe=new q({props:{anchor:"kernels.kernelize.example",$$slots:{default:[$l]},$$scope:{ctx:k}}}),Ie=new b({props:{title:"Classes",local:"classes",headingTag:"h2"}}),Ce=new b({props:{title:"Device",local:"kernels.Device",headingTag:"h3"}}),ve=new I({props:{name:"class kernels.Device",anchor:"kernels.Device",parameters:[{name:"type",val:": str"},{name:"properties",val:": kernels.layer.device.CUDAProperties | None = None"}],parametersDescription:[{anchor:"kernels.Device.type",description:`<strong>type</strong> (<code>str</code>) — | |
| The device type (e.g., “cuda”, “mps”, “npu”, “rocm”, “xpu”).`,name:"type"},{anchor:"kernels.Device.properties",description:`<strong>properties</strong> (<code>CUDAProperties</code>, <em>optional</em>) — | |
| Device-specific properties. Currently only <code>CUDAProperties</code> is supported for CUDA devices.`,name:"properties"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/device.py#L95"}}),pe=new q({props:{anchor:"kernels.Device.example",$$slots:{default:[jl]},$$scope:{ctx:k}}}),xe=new b({props:{title:"Mode",local:"kernels.Mode",headingTag:"h3"}}),Be=new I({props:{name:"class kernels.Mode",anchor:"kernels.Mode",parameters:[{name:"value",val:""},{name:"names",val:" = None"},{name:"module",val:" = None"},{name:"qualname",val:" = None"},{name:"type",val:" = None"},{name:"start",val:" = 1"}],parametersDescription:[{anchor:"kernels.Mode.INFERENCE",description:"<strong>INFERENCE</strong> — The kernel is used for inference.",name:"INFERENCE"},{anchor:"kernels.Mode.TRAINING",description:"<strong>TRAINING</strong> — The kernel is used for training.",name:"TRAINING"},{anchor:"kernels.Mode.TORCH_COMPILE",description:"<strong>TORCH_COMPILE</strong> — The kernel is used with <code>torch.compile</code>.",name:"TORCH_COMPILE"},{anchor:"kernels.Mode.FALLBACK",description:"<strong>FALLBACK</strong> — In a kernel mapping, this kernel is used when no other mode matches.",name:"FALLBACK"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/mode.py#L4"}}),Ze=new b({props:{title:"FuncRepository",local:"kernels.FuncRepository",headingTag:"h3"}}),Re=new I({props:{name:"class kernels.FuncRepository",anchor:"kernels.FuncRepository",parameters:[{name:"repo_id",val:": str"},{name:"func_name",val:": str"},{name:"revision",val:": str | None = None"},{name:"version",val:": int | str | None = None"}],parametersDescription:[{anchor:"kernels.FuncRepository.repo_id",description:`<strong>repo_id</strong> (<code>str</code>) — | |
| The Hub repository containing the layer.`,name:"repo_id"},{anchor:"kernels.FuncRepository.func_name",description:`<strong>func_name</strong> (<code>str</code>) — | |
| The name of the function within the kernel repository.`,name:"func_name"},{anchor:"kernels.FuncRepository.revision",description:`<strong>revision</strong> (<code>str</code>, <em>optional</em>, defaults to <code>"main"</code>) — | |
| The specific revision (branch, tag, or commit) to download. Cannot be used together with <code>version</code>.`,name:"revision"},{anchor:"kernels.FuncRepository.version",description:`<strong>version</strong> (<code>int|str</code>, <em>optional</em>) — | |
| The kernel version to download as an integer. The <code>str</code> variant is deprecated and will be | |
| removed in a future release. Cannot be used together with <code>revision</code>.`,name:"version"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/func.py#L27"}}),ie=new q({props:{anchor:"kernels.FuncRepository.example",$$slots:{default:[_l]},$$scope:{ctx:k}}}),Ee=new b({props:{title:"LayerRepository",local:"kernels.LayerRepository",headingTag:"h3"}}),We=new I({props:{name:"class kernels.LayerRepository",anchor:"kernels.LayerRepository",parameters:[{name:"repo_id",val:": str"},{name:"layer_name",val:": str"},{name:"revision",val:": str | None = None"},{name:"version",val:": int | str | None = None"}],parametersDescription:[{anchor:"kernels.LayerRepository.repo_id",description:`<strong>repo_id</strong> (<code>str</code>) — | |
| The Hub repository containing the layer.`,name:"repo_id"},{anchor:"kernels.LayerRepository.layer_name",description:`<strong>layer_name</strong> (<code>str</code>) — | |
| The name of the layer within the kernel repository.`,name:"layer_name"},{anchor:"kernels.LayerRepository.revision",description:`<strong>revision</strong> (<code>str</code>, <em>optional</em>, defaults to <code>"main"</code>) — | |
| The specific revision (branch, tag, or commit) to download. Cannot be used together with <code>version</code>.`,name:"revision"},{anchor:"kernels.LayerRepository.version",description:`<strong>version</strong> (<code>int|str</code>, <em>optional</em>) — | |
| The kernel version to download as an integer. The <code>str</code> variant is deprecated and will be | |
| removed in a future release. Cannot be used together with <code>revision</code>.`,name:"version"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/layer.py#L32"}}),ce=new q({props:{anchor:"kernels.LayerRepository.example",$$slots:{default:[Il]},$$scope:{ctx:k}}}),Ge=new b({props:{title:"LocalFuncRepository",local:"kernels.LocalFuncRepository",headingTag:"h3"}}),Se=new I({props:{name:"class kernels.LocalFuncRepository",anchor:"kernels.LocalFuncRepository",parameters:[{name:"repo_path",val:": Path"},{name:"package_name",val:": str"},{name:"func_name",val:": str"}],parametersDescription:[{anchor:"kernels.LocalFuncRepository.repo_path",description:`<strong>repo_path</strong> (<code>Path</code>) — | |
| The local repository containing the layer.`,name:"repo_path"},{anchor:"kernels.LocalFuncRepository.package_name",description:`<strong>package_name</strong> (<code>str</code>) — | |
| Package name of the kernel.`,name:"package_name"},{anchor:"kernels.LocalFuncRepository.func_name",description:`<strong>func_name</strong> (<code>str</code>) — | |
| The name of the function within the kernel repository.`,name:"func_name"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/func.py#L110"}}),me=new q({props:{anchor:"kernels.LocalFuncRepository.example",$$slots:{default:[Cl]},$$scope:{ctx:k}}}),Xe=new b({props:{title:"LocalLayerRepository",local:"kernels.LocalLayerRepository",headingTag:"h3"}}),Qe=new I({props:{name:"class kernels.LocalLayerRepository",anchor:"kernels.LocalLayerRepository",parameters:[{name:"repo_path",val:": Path"},{name:"package_name",val:": str"},{name:"layer_name",val:": str"}],parametersDescription:[{anchor:"kernels.LocalLayerRepository.repo_path",description:`<strong>repo_path</strong> (<code>Path</code>) — | |
| The local repository containing the layer.`,name:"repo_path"},{anchor:"kernels.LocalLayerRepository.package_name",description:`<strong>package_name</strong> (<code>str</code>) — | |
| Package name of the kernel.`,name:"package_name"},{anchor:"kernels.LocalLayerRepository.layer_name",description:`<strong>layer_name</strong> (<code>str</code>) — | |
| The name of the layer within the kernel repository.`,name:"layer_name"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/layer.py#L109"}}),de=new q({props:{anchor:"kernels.LocalLayerRepository.example",$$slots:{default:[vl]},$$scope:{ctx:k}}}),Ve=new b({props:{title:"LockedFuncRepository",local:"kernels.LockedFuncRepository",headingTag:"h3"}}),Ne=new I({props:{name:"class kernels.LockedFuncRepository",anchor:"kernels.LockedFuncRepository",parameters:[{name:"repo_id",val:": str"},{name:"lockfile",val:": pathlib.Path | None = None"},{name:"func_name",val:": str"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/func.py#L222"}}),Ae=new b({props:{title:"LockedLayerRepository",local:"kernels.LockedLayerRepository",headingTag:"h3"}}),Fe=new I({props:{name:"class kernels.LockedLayerRepository",anchor:"kernels.LockedLayerRepository",parameters:[{name:"repo_id",val:": str"},{name:"lockfile",val:": Path | None = None"},{name:"layer_name",val:": str"}],source:"https://github.com/huggingface/kernels/blob/vr_321/src/kernels/layer/layer.py#L166"}}),Le=new Tl({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/api/layers.md"}}),{c(){l=w("meta"),g=a(),m=w("p"),r=a(),d(c.$$.fragment),n=a(),d(J.$$.fragment),kn=a(),d(ye.$$.fragment),bn=a(),d(Me.$$.fragment),$n=a(),C=w("div"),d(ue.$$.fragment),st=a(),ze=w("p"),ze.textContent=Vt,rt=a(),Ye=w("p"),Ye.textContent=Nt,at=a(),d(te.$$.fragment),jn=a(),d(fe.$$.fragment),_n=a(),_=w("div"),d(he.$$.fragment),ot=a(),He=w("p"),He.textContent=At,pt=a(),De=w("p"),De.textContent=Ft,it=a(),qe=w("p"),qe.innerHTML=Lt,ct=a(),d(le.$$.fragment),In=a(),d(we.$$.fragment),Cn=a(),v=w("div"),d(Te.$$.fragment),mt=a(),Pe=w("p"),Pe.textContent=zt,dt=a(),Ke=w("p"),Ke.innerHTML=Yt,yt=a(),d(se.$$.fragment),vn=a(),d(Je.$$.fragment),xn=a(),d(ge.$$.fragment),Bn=a(),x=w("div"),d(Ue.$$.fragment),Mt=a(),Oe=w("p"),Oe.textContent=Ht,ut=a(),en=w("p"),en.textContent=Dt,ft=a(),d(re.$$.fragment),Zn=a(),d(ke.$$.fragment),Rn=a(),B=w("div"),d(be.$$.fragment),ht=a(),nn=w("p"),nn.textContent=qt,wt=a(),tn=w("p"),tn.innerHTML=Pt,Tt=a(),d(ae.$$.fragment),En=a(),d($e.$$.fragment),Wn=a(),d(je.$$.fragment),Gn=a(),Z=w("div"),d(_e.$$.fragment),Jt=a(),ln=w("p"),ln.textContent=Kt,gt=a(),sn=w("p"),sn.innerHTML=Ot,Ut=a(),d(oe.$$.fragment),Sn=a(),d(Ie.$$.fragment),Xn=a(),d(Ce.$$.fragment),Qn=a(),R=w("div"),d(ve.$$.fragment),kt=a(),rn=w("p"),rn.textContent=el,bt=a(),an=w("p"),an.textContent=nl,$t=a(),d(pe.$$.fragment),Vn=a(),d(xe.$$.fragment),Nn=a(),E=w("div"),d(Be.$$.fragment),jt=a(),on=w("p"),on.textContent=tl,_t=a(),pn=w("p"),pn.innerHTML=ll,It=a(),cn=w("p"),cn.innerHTML=sl,An=a(),d(Ze.$$.fragment),Fn=a(),G=w("div"),d(Re.$$.fragment),Ct=a(),mn=w("p"),mn.textContent=rl,vt=a(),d(ie.$$.fragment),Ln=a(),d(Ee.$$.fragment),zn=a(),S=w("div"),d(We.$$.fragment),xt=a(),dn=w("p"),dn.textContent=al,Bt=a(),d(ce.$$.fragment),Yn=a(),d(Ge.$$.fragment),Hn=a(),X=w("div"),d(Se.$$.fragment),Zt=a(),yn=w("p"),yn.textContent=ol,Rt=a(),d(me.$$.fragment),Dn=a(),d(Xe.$$.fragment),qn=a(),Q=w("div"),d(Qe.$$.fragment),Et=a(),Mn=w("p"),Mn.textContent=pl,Wt=a(),d(de.$$.fragment),Pn=a(),d(Ve.$$.fragment),Kn=a(),V=w("div"),d(Ne.$$.fragment),Gt=a(),un=w("p"),un.textContent=il,St=a(),fn=w("p"),fn.innerHTML=cl,On=a(),d(Ae.$$.fragment),et=a(),N=w("div"),d(Fe.$$.fragment),Xt=a(),hn=w("p"),hn.textContent=ml,Qt=a(),wn=w("p"),wn.innerHTML=dl,nt=a(),d(Le.$$.fragment),tt=a(),Un=w("p"),this.h()},l(e){const t=hl("svelte-u9bgzb",document.head);l=T(t,"META",{name:!0,content:!0}),t.forEach(s),g=o(e),m=T(e,"P",{}),$(m).forEach(s),r=o(e),y(c.$$.fragment,e),n=o(e),y(J.$$.fragment,e),kn=o(e),y(ye.$$.fragment,e),bn=o(e),y(Me.$$.fragment,e),$n=o(e),C=T(e,"DIV",{class:!0});var A=$(C);y(ue.$$.fragment,A),st=o(A),ze=T(A,"P",{"data-svelte-h":!0}),U(ze)!=="svelte-17ebw3h"&&(ze.textContent=Vt),rt=o(A),Ye=T(A,"P",{"data-svelte-h":!0}),U(Ye)!=="svelte-wgdatn"&&(Ye.textContent=Nt),at=o(A),y(te.$$.fragment,A),A.forEach(s),jn=o(e),y(fe.$$.fragment,e),_n=o(e),_=T(e,"DIV",{class:!0});var W=$(_);y(he.$$.fragment,W),ot=o(W),He=T(W,"P",{"data-svelte-h":!0}),U(He)!=="svelte-1gabpyp"&&(He.textContent=At),pt=o(W),De=T(W,"P",{"data-svelte-h":!0}),U(De)!=="svelte-nc81mu"&&(De.textContent=Ft),it=o(W),qe=T(W,"P",{"data-svelte-h":!0}),U(qe)!=="svelte-1fgrp05"&&(qe.innerHTML=Lt),ct=o(W),y(le.$$.fragment,W),W.forEach(s),In=o(e),y(we.$$.fragment,e),Cn=o(e),v=T(e,"DIV",{class:!0});var F=$(v);y(Te.$$.fragment,F),mt=o(F),Pe=T(F,"P",{"data-svelte-h":!0}),U(Pe)!=="svelte-17bjf1v"&&(Pe.textContent=zt),dt=o(F),Ke=T(F,"P",{"data-svelte-h":!0}),U(Ke)!=="svelte-111obn9"&&(Ke.innerHTML=Yt),yt=o(F),y(se.$$.fragment,F),F.forEach(s),vn=o(e),y(Je.$$.fragment,e),xn=o(e),y(ge.$$.fragment,e),Bn=o(e),x=T(e,"DIV",{class:!0});var L=$(x);y(Ue.$$.fragment,L),Mt=o(L),Oe=T(L,"P",{"data-svelte-h":!0}),U(Oe)!=="svelte-4v5vcp"&&(Oe.textContent=Ht),ut=o(L),en=T(L,"P",{"data-svelte-h":!0}),U(en)!=="svelte-124m5et"&&(en.textContent=Dt),ft=o(L),y(re.$$.fragment,L),L.forEach(s),Zn=o(e),y(ke.$$.fragment,e),Rn=o(e),B=T(e,"DIV",{class:!0});var z=$(B);y(be.$$.fragment,z),ht=o(z),nn=T(z,"P",{"data-svelte-h":!0}),U(nn)!=="svelte-h5yso0"&&(nn.textContent=qt),wt=o(z),tn=T(z,"P",{"data-svelte-h":!0}),U(tn)!=="svelte-189eop3"&&(tn.innerHTML=Pt),Tt=o(z),y(ae.$$.fragment,z),z.forEach(s),En=o(e),y($e.$$.fragment,e),Wn=o(e),y(je.$$.fragment,e),Gn=o(e),Z=T(e,"DIV",{class:!0});var Y=$(Z);y(_e.$$.fragment,Y),Jt=o(Y),ln=T(Y,"P",{"data-svelte-h":!0}),U(ln)!=="svelte-11gfrdt"&&(ln.textContent=Kt),gt=o(Y),sn=T(Y,"P",{"data-svelte-h":!0}),U(sn)!=="svelte-wtpz73"&&(sn.innerHTML=Ot),Ut=o(Y),y(oe.$$.fragment,Y),Y.forEach(s),Sn=o(e),y(Ie.$$.fragment,e),Xn=o(e),y(Ce.$$.fragment,e),Qn=o(e),R=T(e,"DIV",{class:!0});var H=$(R);y(ve.$$.fragment,H),kt=o(H),rn=T(H,"P",{"data-svelte-h":!0}),U(rn)!=="svelte-19eu2wi"&&(rn.textContent=el),bt=o(H),an=T(H,"P",{"data-svelte-h":!0}),U(an)!=="svelte-9t0i4c"&&(an.textContent=nl),$t=o(H),y(pe.$$.fragment,H),H.forEach(s),Vn=o(e),y(xe.$$.fragment,e),Nn=o(e),E=T(e,"DIV",{class:!0});var D=$(E);y(Be.$$.fragment,D),jt=o(D),on=T(D,"P",{"data-svelte-h":!0}),U(on)!=="svelte-wlnf64"&&(on.textContent=tl),_t=o(D),pn=T(D,"P",{"data-svelte-h":!0}),U(pn)!=="svelte-v3z88v"&&(pn.innerHTML=ll),It=o(D),cn=T(D,"P",{"data-svelte-h":!0}),U(cn)!=="svelte-x58jtu"&&(cn.innerHTML=sl),D.forEach(s),An=o(e),y(Ze.$$.fragment,e),Fn=o(e),G=T(e,"DIV",{class:!0});var O=$(G);y(Re.$$.fragment,O),Ct=o(O),mn=T(O,"P",{"data-svelte-h":!0}),U(mn)!=="svelte-1fbxeta"&&(mn.textContent=rl),vt=o(O),y(ie.$$.fragment,O),O.forEach(s),Ln=o(e),y(Ee.$$.fragment,e),zn=o(e),S=T(e,"DIV",{class:!0});var ee=$(S);y(We.$$.fragment,ee),xt=o(ee),dn=T(ee,"P",{"data-svelte-h":!0}),U(dn)!=="svelte-1foq575"&&(dn.textContent=al),Bt=o(ee),y(ce.$$.fragment,ee),ee.forEach(s),Yn=o(e),y(Ge.$$.fragment,e),Hn=o(e),X=T(e,"DIV",{class:!0});var ne=$(X);y(Se.$$.fragment,ne),Zt=o(ne),yn=T(ne,"P",{"data-svelte-h":!0}),U(yn)!=="svelte-1nb80ft"&&(yn.textContent=ol),Rt=o(ne),y(me.$$.fragment,ne),ne.forEach(s),Dn=o(e),y(Xe.$$.fragment,e),qn=o(e),Q=T(e,"DIV",{class:!0});var Tn=$(Q);y(Qe.$$.fragment,Tn),Et=o(Tn),Mn=T(Tn,"P",{"data-svelte-h":!0}),U(Mn)!=="svelte-17opoc3"&&(Mn.textContent=pl),Wt=o(Tn),y(de.$$.fragment,Tn),Tn.forEach(s),Pn=o(e),y(Ve.$$.fragment,e),Kn=o(e),V=T(e,"DIV",{class:!0});var Jn=$(V);y(Ne.$$.fragment,Jn),Gt=o(Jn),un=T(Jn,"P",{"data-svelte-h":!0}),U(un)!=="svelte-10rrvzk"&&(un.textContent=il),St=o(Jn),fn=T(Jn,"P",{"data-svelte-h":!0}),U(fn)!=="svelte-1m7rt2a"&&(fn.innerHTML=cl),Jn.forEach(s),On=o(e),y(Ae.$$.fragment,e),et=o(e),N=T(e,"DIV",{class:!0});var gn=$(N);y(Fe.$$.fragment,gn),Xt=o(gn),hn=T(gn,"P",{"data-svelte-h":!0}),U(hn)!=="svelte-10njn0v"&&(hn.textContent=ml),Qt=o(gn),wn=T(gn,"P",{"data-svelte-h":!0}),U(wn)!=="svelte-1u9ojx1"&&(wn.innerHTML=dl),gn.forEach(s),nt=o(e),y(Le.$$.fragment,e),tt=o(e),Un=T(e,"P",{}),$(Un).forEach(s),this.h()},h(){j(l,"name","hf:doc:metadata"),j(l,"content",Bl),j(C,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(_,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(v,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(x,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(B,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(Z,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(R,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(E,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(G,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(S,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(X,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(Q,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(V,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),j(N,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,t){i(document.head,l),p(e,g,t),p(e,m,t),p(e,r,t),M(c,e,t),p(e,n,t),M(J,e,t),p(e,kn,t),M(ye,e,t),p(e,bn,t),M(Me,e,t),p(e,$n,t),p(e,C,t),M(ue,C,null),i(C,st),i(C,ze),i(C,rt),i(C,Ye),i(C,at),M(te,C,null),p(e,jn,t),M(fe,e,t),p(e,_n,t),p(e,_,t),M(he,_,null),i(_,ot),i(_,He),i(_,pt),i(_,De),i(_,it),i(_,qe),i(_,ct),M(le,_,null),p(e,In,t),M(we,e,t),p(e,Cn,t),p(e,v,t),M(Te,v,null),i(v,mt),i(v,Pe),i(v,dt),i(v,Ke),i(v,yt),M(se,v,null),p(e,vn,t),M(Je,e,t),p(e,xn,t),M(ge,e,t),p(e,Bn,t),p(e,x,t),M(Ue,x,null),i(x,Mt),i(x,Oe),i(x,ut),i(x,en),i(x,ft),M(re,x,null),p(e,Zn,t),M(ke,e,t),p(e,Rn,t),p(e,B,t),M(be,B,null),i(B,ht),i(B,nn),i(B,wt),i(B,tn),i(B,Tt),M(ae,B,null),p(e,En,t),M($e,e,t),p(e,Wn,t),M(je,e,t),p(e,Gn,t),p(e,Z,t),M(_e,Z,null),i(Z,Jt),i(Z,ln),i(Z,gt),i(Z,sn),i(Z,Ut),M(oe,Z,null),p(e,Sn,t),M(Ie,e,t),p(e,Xn,t),M(Ce,e,t),p(e,Qn,t),p(e,R,t),M(ve,R,null),i(R,kt),i(R,rn),i(R,bt),i(R,an),i(R,$t),M(pe,R,null),p(e,Vn,t),M(xe,e,t),p(e,Nn,t),p(e,E,t),M(Be,E,null),i(E,jt),i(E,on),i(E,_t),i(E,pn),i(E,It),i(E,cn),p(e,An,t),M(Ze,e,t),p(e,Fn,t),p(e,G,t),M(Re,G,null),i(G,Ct),i(G,mn),i(G,vt),M(ie,G,null),p(e,Ln,t),M(Ee,e,t),p(e,zn,t),p(e,S,t),M(We,S,null),i(S,xt),i(S,dn),i(S,Bt),M(ce,S,null),p(e,Yn,t),M(Ge,e,t),p(e,Hn,t),p(e,X,t),M(Se,X,null),i(X,Zt),i(X,yn),i(X,Rt),M(me,X,null),p(e,Dn,t),M(Xe,e,t),p(e,qn,t),p(e,Q,t),M(Qe,Q,null),i(Q,Et),i(Q,Mn),i(Q,Wt),M(de,Q,null),p(e,Pn,t),M(Ve,e,t),p(e,Kn,t),p(e,V,t),M(Ne,V,null),i(V,Gt),i(V,un),i(V,St),i(V,fn),p(e,On,t),M(Ae,e,t),p(e,et,t),p(e,N,t),M(Fe,N,null),i(N,Xt),i(N,hn),i(N,Qt),i(N,wn),p(e,nt,t),M(Le,e,t),p(e,tt,t),p(e,Un,t),lt=!0},p(e,[t]){const A={};t&2&&(A.$$scope={dirty:t,ctx:e}),te.$set(A);const W={};t&2&&(W.$$scope={dirty:t,ctx:e}),le.$set(W);const F={};t&2&&(F.$$scope={dirty:t,ctx:e}),se.$set(F);const L={};t&2&&(L.$$scope={dirty:t,ctx:e}),re.$set(L);const z={};t&2&&(z.$$scope={dirty:t,ctx:e}),ae.$set(z);const Y={};t&2&&(Y.$$scope={dirty:t,ctx:e}),oe.$set(Y);const H={};t&2&&(H.$$scope={dirty:t,ctx:e}),pe.$set(H);const D={};t&2&&(D.$$scope={dirty:t,ctx:e}),ie.$set(D);const O={};t&2&&(O.$$scope={dirty:t,ctx:e}),ce.$set(O);const ee={};t&2&&(ee.$$scope={dirty:t,ctx:e}),me.$set(ee);const ne={};t&2&&(ne.$$scope={dirty:t,ctx:e}),de.$set(ne)},i(e){lt||(u(c.$$.fragment,e),u(J.$$.fragment,e),u(ye.$$.fragment,e),u(Me.$$.fragment,e),u(ue.$$.fragment,e),u(te.$$.fragment,e),u(fe.$$.fragment,e),u(he.$$.fragment,e),u(le.$$.fragment,e),u(we.$$.fragment,e),u(Te.$$.fragment,e),u(se.$$.fragment,e),u(Je.$$.fragment,e),u(ge.$$.fragment,e),u(Ue.$$.fragment,e),u(re.$$.fragment,e),u(ke.$$.fragment,e),u(be.$$.fragment,e),u(ae.$$.fragment,e),u($e.$$.fragment,e),u(je.$$.fragment,e),u(_e.$$.fragment,e),u(oe.$$.fragment,e),u(Ie.$$.fragment,e),u(Ce.$$.fragment,e),u(ve.$$.fragment,e),u(pe.$$.fragment,e),u(xe.$$.fragment,e),u(Be.$$.fragment,e),u(Ze.$$.fragment,e),u(Re.$$.fragment,e),u(ie.$$.fragment,e),u(Ee.$$.fragment,e),u(We.$$.fragment,e),u(ce.$$.fragment,e),u(Ge.$$.fragment,e),u(Se.$$.fragment,e),u(me.$$.fragment,e),u(Xe.$$.fragment,e),u(Qe.$$.fragment,e),u(de.$$.fragment,e),u(Ve.$$.fragment,e),u(Ne.$$.fragment,e),u(Ae.$$.fragment,e),u(Fe.$$.fragment,e),u(Le.$$.fragment,e),lt=!0)},o(e){f(c.$$.fragment,e),f(J.$$.fragment,e),f(ye.$$.fragment,e),f(Me.$$.fragment,e),f(ue.$$.fragment,e),f(te.$$.fragment,e),f(fe.$$.fragment,e),f(he.$$.fragment,e),f(le.$$.fragment,e),f(we.$$.fragment,e),f(Te.$$.fragment,e),f(se.$$.fragment,e),f(Je.$$.fragment,e),f(ge.$$.fragment,e),f(Ue.$$.fragment,e),f(re.$$.fragment,e),f(ke.$$.fragment,e),f(be.$$.fragment,e),f(ae.$$.fragment,e),f($e.$$.fragment,e),f(je.$$.fragment,e),f(_e.$$.fragment,e),f(oe.$$.fragment,e),f(Ie.$$.fragment,e),f(Ce.$$.fragment,e),f(ve.$$.fragment,e),f(pe.$$.fragment,e),f(xe.$$.fragment,e),f(Be.$$.fragment,e),f(Ze.$$.fragment,e),f(Re.$$.fragment,e),f(ie.$$.fragment,e),f(Ee.$$.fragment,e),f(We.$$.fragment,e),f(ce.$$.fragment,e),f(Ge.$$.fragment,e),f(Se.$$.fragment,e),f(me.$$.fragment,e),f(Xe.$$.fragment,e),f(Qe.$$.fragment,e),f(de.$$.fragment,e),f(Ve.$$.fragment,e),f(Ne.$$.fragment,e),f(Ae.$$.fragment,e),f(Fe.$$.fragment,e),f(Le.$$.fragment,e),lt=!1},d(e){e&&(s(g),s(m),s(r),s(n),s(kn),s(bn),s($n),s(C),s(jn),s(_n),s(_),s(In),s(Cn),s(v),s(vn),s(xn),s(Bn),s(x),s(Zn),s(Rn),s(B),s(En),s(Wn),s(Gn),s(Z),s(Sn),s(Xn),s(Qn),s(R),s(Vn),s(Nn),s(E),s(An),s(Fn),s(G),s(Ln),s(zn),s(S),s(Yn),s(Hn),s(X),s(Dn),s(qn),s(Q),s(Pn),s(Kn),s(V),s(On),s(et),s(N),s(nt),s(tt),s(Un)),s(l),h(c,e),h(J,e),h(ye,e),h(Me,e),h(ue),h(te),h(fe,e),h(he),h(le),h(we,e),h(Te),h(se),h(Je,e),h(ge,e),h(Ue),h(re),h(ke,e),h(be),h(ae),h($e,e),h(je,e),h(_e),h(oe),h(Ie,e),h(Ce,e),h(ve),h(pe),h(xe,e),h(Be),h(Ze,e),h(Re),h(ie),h(Ee,e),h(We),h(ce),h(Ge,e),h(Se),h(me),h(Xe,e),h(Qe),h(de),h(Ve,e),h(Ne),h(Ae,e),h(Fe),h(Le,e)}}}const Bl='{"title":"Layers API Reference","local":"layers-api-reference","sections":[{"title":"Making layers kernel-aware","local":"making-layers-kernel-aware","sections":[{"title":"use_kernel_forward_from_hub","local":"kernels.use_kernel_forward_from_hub","sections":[],"depth":3},{"title":"use_kernel_func_from_hub","local":"kernels.use_kernel_func_from_hub","sections":[],"depth":3},{"title":"replace_kernel_forward_from_hub","local":"kernels.replace_kernel_forward_from_hub","sections":[],"depth":3}],"depth":2},{"title":"Registering kernel mappings","local":"registering-kernel-mappings","sections":[{"title":"use_kernel_mapping","local":"kernels.use_kernel_mapping","sections":[],"depth":3},{"title":"register_kernel_mapping","local":"kernels.register_kernel_mapping","sections":[],"depth":3}],"depth":2},{"title":"Kernelizing a model","local":"kernelizing-a-model","sections":[{"title":"kernelize","local":"kernels.kernelize","sections":[],"depth":3}],"depth":2},{"title":"Classes","local":"classes","sections":[{"title":"Device","local":"kernels.Device","sections":[],"depth":3},{"title":"Mode","local":"kernels.Mode","sections":[],"depth":3},{"title":"FuncRepository","local":"kernels.FuncRepository","sections":[],"depth":3},{"title":"LayerRepository","local":"kernels.LayerRepository","sections":[],"depth":3},{"title":"LocalFuncRepository","local":"kernels.LocalFuncRepository","sections":[],"depth":3},{"title":"LocalLayerRepository","local":"kernels.LocalLayerRepository","sections":[],"depth":3},{"title":"LockedFuncRepository","local":"kernels.LockedFuncRepository","sections":[],"depth":3},{"title":"LockedLayerRepository","local":"kernels.LockedLayerRepository","sections":[],"depth":3}],"depth":2}],"depth":1}';function Zl(k){return Ml(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ql extends ul{constructor(l){super(),fl(this,l,Zl,xl,yl,{})}}export{Ql as component}; | |
Xet Storage Details
- Size:
- 62.6 kB
- Xet hash:
- 2c508baf98508896fac81bf556149ac7d69612b6b6cc5222e0dc686cb5691477
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.