Buckets:
| import{s as ll,n as nl,o as il}from"../chunks/scheduler.f3b1e791.js";import{S as sl,i as al,e as a,s as i,c as p,h as rl,a as r,d as l,b as s,f as tl,g as o,j as d,k as xe,l as dl,m as n,n as c,t as h,o as u,p as M}from"../chunks/index.023a9934.js";import{C as pl,H as m,E as ol}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.b7cac204.js";import{C as y}from"../chunks/CodeBlock.725c80b2.js";function cl(Ut){let b,we,ge,ke,x,Je,w,$e,k,Ue,f,jt=`<p>The <a href="writing-kernels#quick-install">install script</a> automates | |
| the Nix and kernel-builder setup described below. Use these manual | |
| instructions if you prefer step-by-step control.</p>`,je,J,Ce,$,Ct=`The kernel builder uses Nix for building kernels. You can build or | |
| run the kernels directly if you have Nix installed on your system. | |
| We recommend installing Nix in the following way:`,Ie,U,It=`<li>Linux: use the <a href="https://nixos.org/download/" rel="nofollow">official Nix installer</a>.</li> <li>macOS: use the <a href="https://docs.determinate.systems/determinate-nix/" rel="nofollow">Determinate Nix installer</a>. | |
| In addition, Xcode 16.x is currently required to build kernels.</li>`,ve,j,Ge,C,vt=`Since the kernel builder depends on many packages (e.g. every supported | |
| PyTorch version), it is recommended to enable the huggingface cache | |
| to avoid expensive rebuilds.`,Ne,I,Gt="To use the cache, you can either install cachix and configure it:",Ze,v,We,G,Nt="Or run it once without installing cachix permanently:",He,N,Ve,Z,Be,W,Zt=`The kernel builder also provides Nix development shells with all Torch | |
| and CUDA/ROCm dependencies needed to develop kernels (see below). If | |
| you want to test your kernels inside a Nix development shell and you | |
| are not using NixOS, <a href="https://danieldk.eu/Nix-CUDA-on-non-NixOS-systems#make-runopengl-driverlib-and-symlink-the-driver-library" rel="nofollow">make sure that the CUDA driver is visible</a> to Torch.`,Le,H,Ee,V,Wt=`The easiest way to start a new kernel is using the <code>kernel-builder init</code> | |
| subcommand, which is discussed in <a href="writing-kernels">Writing Kernels</a>. | |
| The commands discussed in the following sections will also work on | |
| existing kernel sources that have <code>build.toml</code>/<code>flake.nix</code>.`,Ye,B,Se,L,Ht=`A kernel can be built with the <code>kernel-builder build-and-copy</code> command. | |
| For example:`,ze,E,Re,Y,Vt=`The <code>-L</code> option prints out build logs in the terminal, which can be handy | |
| for monitoring the build. The compiled kernel will then be in the local | |
| <code>build/</code> directory.`,Qe,S,Ae,z,Bt=`<code>kernel-builder</code> provides shells for developing kernels. In such a shell, | |
| all required dependencies are available, as well as <code>kernel-builder</code> for generating | |
| project files. For example:`,Xe,R,Fe,Q,Lt=`If you want to test the kernel as a Python package, you can do so. | |
| <code>kernel-builder devshell</code> will automatically create a virtual environment in | |
| the <code>.venv</code> and activate it. You can install the kernel as a regular | |
| Python package in this virtual environment:`,De,A,_e,X,Et=`Development shells are available for every build configuration. For | |
| instance, you can get a Torch 2.11 development shell for ROCm kernels | |
| using:`,Oe,F,Pe,D,Yt=`For an editor-driven workflow with <code>direnv</code> activating the devshell on | |
| <code>cd</code>, see <a href="./ide-setup">IDE Setup</a>.`,qe,_,St=`You can list the variants that the kernel supports with the <code>list-variants</code> | |
| subcommand:`,Ke,O,et,P,tt,q,zt=`You can also start a test shell. This will give you a Python interpreter | |
| with the kernel in Python’s search path. This makes it more convenient to run | |
| tests:`,lt,K,nt,ee,Rt=`<code>testshell</code> also supports the <code>--variant</code> option, so you can test a particular | |
| kernel variant.`,it,te,st,le,Qt=`You can add test dependencies to a development or testing shell. Adapt | |
| the kernel’s <code>flake.nix</code> to use the <code>pythonCheckInputs</code> option:`,at,ne,rt,ie,At='The available packages can be found on <a href="https://search.nixos.org/packages?channel=25.05&query=python312Packages" rel="nofollow">search.nixos.org</a>.',dt,se,Xt=`Keep in mind that these additional dependencies will only be available to | |
| the Nix shells, not the final kernel uploaded to the Hub.`,pt,ae,ot,re,Ft=`Finally, when you are ready to make a kernel release, you can build and | |
| upload a kernel to the Hub:`,ct,de,ht,g,Dt=`<p>Uploads go to a <code>kernel</code>-type Hub repository (the first-class kernel | |
| repository type). The owning user or org must have kernel-creation | |
| access. Request it from | |
| <a href="https://huggingface.co/settings/account" rel="nofollow">huggingface.co/settings/account</a> | |
| (“Request Kernels Creation”).</p>`,ut,pe,_t=`Aside from building and uploading the kernel itself, this will also fill | |
| the card template and upload it as <code>README.md</code> to the Hub if the card | |
| template is provided in the source repository as <code>CARD.md</code>.`,Mt,oe,Ot=`The repository to upload to is determined by the <code>repo-id</code> and <code>version</code> | |
| fields in <code>build.toml</code>. For example, with the following <code>build.toml</code>, the | |
| kernel will be uploaded to the repository <code>kernels-community/flash-attn4</code> | |
| in the <code>v1</code> version branch:`,mt,ce,yt,he,Pt=`See <a href="writing-kernels">Writing Kernels</a> for more details on the <code>build.toml</code> | |
| format.`,bt,T,qt=`<p>You can automate building, uploading, and testing kernels on Hugging Face | |
| Jobs from CI, see <a href="./github-actions">Building and testing kernels with GitHub Actions</a>.</p>`,ft,ue,gt,Me,Kt=`The kernel’s dependencies are fully pinned down in the <code>flake.lock</code> that | |
| is shipped with the kernel. We periodically release new versions of the | |
| build toolchain that includes bug fixes and supports newer Torch and compute backend | |
| versions. To update the kernel build toolchain, run <code>nix flake update</code> | |
| in the kernel directory:`,Tt,me,xt,ye,wt,be,el=`<code>kernel-builder</code> verifies that a kernel can be | |
| imported with the <a href="https://github.com/huggingface/kernels" rel="nofollow"><code>kernels</code></a> | |
| package. This check can be disabled by passing <code>doGetKernelCheck = false</code> | |
| to <code>genKernelFlakeOutputs</code>. <strong>Warning:</strong> it is strongly recommended to keep | |
| this check enabled, as it is one of the checks that validates that a kernel | |
| is compliant. This option is primarily intended for kernels with | |
| <code>triton.autotune</code> decorators, which can fail because there is no GPU available | |
| in the build sandbox.`,kt,fe,Jt,Te,$t;return x=new pl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),w=new m({props:{title:"Build with Nix",local:"build-with-nix",headingTag:"h1"}}),k=new m({props:{title:"Installation",local:"installation",headingTag:"h2"}}),J=new m({props:{title:"Installing Nix",local:"installing-nix",headingTag:"h3"}}),j=new m({props:{title:"Using the Hugging Face binary cache",local:"using-the-hugging-face-binary-cache",headingTag:"h3"}}),v=new y({props:{code:"JTIzJTIwSW5zdGFsbCUyMGNhY2hpeCUyMGFuZCUyMGNvbmZpZ3VyZSUyMHRoZSUyMGNhY2hlJTBBY2FjaGl4JTIwdXNlJTIwaHVnZ2luZ2ZhY2U=",highlighted:`<span class="hljs-comment"># Install cachix and configure the cache</span> | |
| cachix use huggingface`,lang:"bash",wrap:!1}}),N=new y({props:{code:"JTIzJTIwVXNlJTIwY2FjaGl4JTIwd2l0aG91dCUyMGluc3RhbGxpbmclMjBpdCUwQW5peCUyMHJ1biUyMG5peHBrZ3MlMjNjYWNoaXglMjAtLSUyMHVzZSUyMGh1Z2dpbmdmYWNl",highlighted:`<span class="hljs-comment"># Use cachix without installing it</span> | |
| nix run nixpkgs<span class="hljs-comment">#cachix -- use huggingface</span>`,lang:"bash",wrap:!1}}),Z=new m({props:{title:"GPU library configuration",local:"gpu-library-configuration",headingTag:"h3"}}),H=new m({props:{title:"Getting started",local:"getting-started",headingTag:"h2"}}),B=new m({props:{title:"Building a kernel",local:"building-a-kernel",headingTag:"h2"}}),E=new y({props:{code:"Y2QlMjBleGFtcGxlcyUyRnJlbHUlMEFrZXJuZWwtYnVpbGRlciUyMGJ1aWxkLWFuZC1jb3B5JTIwLUw=",highlighted:`<span class="hljs-built_in">cd</span> examples/relu | |
| kernel-builder build-and-copy -L`,lang:"bash",wrap:!1}}),S=new m({props:{title:"Shell for local development",local:"shell-for-local-development",headingTag:"h2"}}),R=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyMyUyMEElMjBkZXZzaGVsbCUyMGlzJTIwb3BlbmVkJTIwaW4lMjB3aGljaCUyMHlvdSUyMGNhbiUyMHJ1biUyMHRoZSUyMGZvbGxvd2luZyUyMGNvbW1hbmRzJTNBJTBBJTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBjcmVhdGUtcHlwcm9qZWN0JTBBJTI0JTIwY21ha2UlMjAtQiUyMGJ1aWxkLWV4dCUwQSUyNCUyMGNtYWtlJTIwLS1idWlsZCUyMGJ1aWxkLWV4dA==",highlighted:`$ kernel-builder devshell | |
| <span class="hljs-comment"># A devshell is opened in which you can run the following commands:</span> | |
| $ kernel-builder create-pyproject | |
| $ cmake -B build-ext | |
| $ cmake --build build-ext`,lang:"bash",wrap:!1}}),A=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwY3JlYXRlLXB5cHJvamVjdCUwQSUyNCUyMHBpcCUyMGluc3RhbGwlMjAtLW5vLWJ1aWxkLWlzb2xhdGlvbiUyMC1lJTIwLg==",highlighted:`$ kernel-builder devshell | |
| $ kernel-builder create-pyproject | |
| $ pip install --no-build-isolation -e .`,lang:"bash",wrap:!1}}),F=new y({props:{code:"JTI0JTIwcm0lMjAtcmYlMjAudmVudiUyMCUyMCUyMyUyMFJlbW92ZSUyMGV4aXN0aW5nJTIwdmVudiUyMGlmJTIwYW55LiUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwZGV2c2hlbGwlMjAtLXZhcmlhbnQlMjB0b3JjaDIxMS1jeHgxMS1yb2NtNzEteDg2XzY0LWxpbnV4",highlighted:`$ <span class="hljs-built_in">rm</span> -rf .venv <span class="hljs-comment"># Remove existing venv if any.</span> | |
| $ kernel-builder devshell --variant torch211-cxx11-rocm71-x86_64-linux`,lang:"bash",wrap:!1}}),O=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBsaXN0LXZhcmlhbnRzJTBBdG9yY2gyOS1jeHgxMS1jdTEyOS14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEyNi14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEyOC14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEzMC14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1yb2NtNzAteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTAtY3h4MTEtcm9jbTcxLXg4Nl82NC1saW51eCUwQXRvcmNoMjEwLWN4eDExLWNwdS14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS14cHUyMDI1My14ODZfNjQtbGludXglMEF0b3JjaDIxMS1jeHgxMS1jcHUteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMjYteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMjgteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMzAteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtcm9jbTcxLXg4Nl82NC1saW51eCUwQXRvcmNoMjExLWN4eDExLXJvY203Mi14ODZfNjQtbGludXglMEF0b3JjaDIxMS1jeHgxMS14cHUyMDI1My14ODZfNjQtbGludXg=",highlighted:`$ kernel-builder list-variants | |
| torch29-cxx11-cu129-x86_64-linux | |
| torch210-cxx11-cu126-x86_64-linux | |
| torch210-cxx11-cu128-x86_64-linux | |
| torch210-cxx11-cu130-x86_64-linux | |
| torch210-cxx11-rocm70-x86_64-linux | |
| torch210-cxx11-rocm71-x86_64-linux | |
| torch210-cxx11-cpu-x86_64-linux | |
| torch210-cxx11-xpu20253-x86_64-linux | |
| torch211-cxx11-cpu-x86_64-linux | |
| torch211-cxx11-cu126-x86_64-linux | |
| torch211-cxx11-cu128-x86_64-linux | |
| torch211-cxx11-cu130-x86_64-linux | |
| torch211-cxx11-rocm71-x86_64-linux | |
| torch211-cxx11-rocm72-x86_64-linux | |
| torch211-cxx11-xpu20253-x86_64-linux`,lang:"bash",wrap:!1}}),P=new m({props:{title:"Shell for testing a kernel",local:"shell-for-testing-a-kernel",headingTag:"h2"}}),K=new y({props:{code:"Y2QlMjBleGFtcGxlcyUyRnJlbHUlMEFrZXJuZWwtYnVpbGRlciUyMHRlc3RzaGVsbCUwQXB5dGhvbiUyMC1tJTIwcHl0ZXN0JTIwdGVzdHM=",highlighted:`<span class="hljs-built_in">cd</span> examples/relu | |
| kernel-builder testshell | |
| python -m pytest tests`,lang:"bash",wrap:!1}}),te=new m({props:{title:"Adding test dependencies to development shells",local:"adding-test-dependencies-to-development-shells",headingTag:"h2"}}),ne=new y({props:{code:"JTdCJTBBJTIwJTIwZGVzY3JpcHRpb24lMjAlM0QlMjAlMjJGbGFrZSUyMGZvciUyMG15JTIwa2VybmVsJTIyJTNCJTBBJTBBJTIwJTIwaW5wdXRzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwYnVpbGRlci51cmwlMjAlM0QlMjAlMjJnaXRodWIlM0FodWdnaW5nZmFjZSUyRmtlcm5lbHMlMjIlM0IlMEElMjAlMjAlN0QlM0IlMEElMEElMjAlMjBvdXRwdXRzJTIwJTNEJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwc2VsZiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMGJ1aWxkZXIlMkMlMEElMjAlMjAlMjAlMjAlN0QlM0ElMEElMjAlMjAlMjAlMjBidWlsZGVyLmxpYi5nZW5LZXJuZWxGbGFrZU91dHB1dHMlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjBpbmhlcml0JTIwc2VsZiUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMHBhdGglMjAlM0QlMjAuJTJGLiUzQiUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFRoZSUyMGVpbm9wcyUyMGFuZCUyMG51bXB5JTIwdGVzdCUyMGRlcGVuZGVuY2llcyUyMGFyZSUyMGFkZGVkJTIwaGVyZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMHB5dGhvbkNoZWNrSW5wdXRzJTIwJTNEJTIwcGtncyUzQSUyMHdpdGglMjBwa2dzJTNCJTIwJTVCJTIwbnVtcHklMjAlNUQlM0IlMEElMjAlMjAlMjAlMjAlN0QlM0IlMEElN0Q=",highlighted:`{ | |
| <span class="hljs-attr">description</span> = <span class="hljs-string">"Flake for my kernel"</span>; | |
| <span class="hljs-attr">inputs</span> = { | |
| builder.<span class="hljs-attr">url</span> = <span class="hljs-string">"github:huggingface/kernels"</span>; | |
| }; | |
| <span class="hljs-attr">outputs</span> = | |
| { | |
| self, | |
| builder, | |
| }: | |
| builder.lib.genKernelFlakeOutputs { | |
| <span class="hljs-keyword">inherit</span> self; | |
| <span class="hljs-attr">path</span> = ./.; | |
| <span class="hljs-comment"># The einops and numpy test dependencies are added here:</span> | |
| <span class="hljs-attr">pythonCheckInputs</span> = pkgs: <span class="hljs-keyword">with</span> pkgs; [ numpy ]; | |
| }; | |
| }`,lang:"nix",wrap:!1}}),ae=new m({props:{title:"Uploading your kernel to the Hub",local:"uploading-your-kernel-to-the-hub",headingTag:"h2"}}),de=new y({props:{code:"JTI0JTIwY2QlMjBteWtlcm5lbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwYnVpbGQtYW5kLXVwbG9hZA==",highlighted:`$ <span class="hljs-built_in">cd</span> mykernel | |
| $ kernel-builder build-and-upload`,lang:"bash",wrap:!1}}),ce=new y({props:{code:"JTVCZ2VuZXJhbCU1RCUwQSUyMyUyMC4uLiUwQXZlcnNpb24lMjAlM0QlMjAxJTBBJTBBJTVCZ2VuZXJhbC5odWIlNUQlMEFyZXBvLWlkJTIwJTNEJTIwJTIya2VybmVscy1jb21tdW5pdHklMkZmbGFzaC1hdHRuNCUyMg==",highlighted:`<span class="hljs-section">[general]</span> | |
| <span class="hljs-comment"># ...</span> | |
| <span class="hljs-attr">version</span> = <span class="hljs-number">1</span> | |
| <span class="hljs-section">[general.hub]</span> | |
| <span class="hljs-attr">repo-id</span> = <span class="hljs-string">"kernels-community/flash-attn4"</span>`,lang:"toml",wrap:!1}}),ue=new m({props:{title:"Updating the kernel build toolchain",local:"updating-the-kernel-build-toolchain",headingTag:"h2"}}),me=new y({props:{code:"JUUyJTlEJUFGJTIwbml4JTIwZmxha2UlMjB1cGRhdGUlMEElRTIlODAlQTIlMjBBZGRlZCUyMGlucHV0JTIwJ2tlcm5lbC1idWlsZGVyJyUzQSUwQSUyMCUyMCUyMCUyMCdnaXRodWIlM0FodWdnaW5nZmFjZSUyRmtlcm5lbHMlMkY4YWQ4YTUwOTRmMWIzYzQyNWY3MDkwMDY5OWVkNjkwZDY1ZDg3OGMzJTNGbmFySGFzaCUzRHNoYTI1Ni1tOHRCbnRDSWxIJTJGclk0QmNJdjVYNSUyNTJCZHRnU1MxeVFpODgzQ28lMjUyQmo1Y3VkSSUyNTNEJyUyMCgyMDI2LTA0LTA5KSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS1jb21wYXQnJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQWVkb2xzdHJhJTJGZmxha2UtY29tcGF0JTJGNWVkZjExYzQ0YmM3OGEwZDMzNGY2MzM0Y2RhZjdkNjBkNzMyZGFhYiUzRm5hckhhc2glM0RzaGEyNTYtdk5wVVNwRjVOdXc4eHZETGoyS0N3d2tzSWJqdWEyTFpDcWhWMUxOUkRucyUyNTNEJyUyMCgyMDI1LTEyLTI5KSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS11dGlscyclM0ElMEElMjAlMjAlMjAlMjAnZ2l0aHViJTNBbnVtdGlkZSUyRmZsYWtlLXV0aWxzJTJGMTE3MDdkYzJmNjE4ZGQ1NGNhODczOWIzMDllYzRmYzAyNGRlNTc4YiUzRm5hckhhc2glM0RzaGEyNTYtbDBLRmc1SGpyc2ZzTyUyRkpwRyUyNTJCcjdmUnJxbTEya3pGSHlVSHFIQ1ZwTU1iSSUyNTNEJyUyMCgyMDI0LTExLTEzKSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS11dGlscyUyRnN5c3RlbXMnJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQW5peC1zeXN0ZW1zJTJGZGVmYXVsdCUyRmRhNjcwOTZhM2I5YmY1NmE5MWQxNjkwMTI5M2U1MWJhNWI0OWEyN2UlM0ZuYXJIYXNoJTNEc2hhMjU2LVZ5MXJxNUFhUnVMek94Y3Q4bno0VDZ3bGd5VVI3ekxVMzA5azltQkM3NjglMjUzRCclMjAoMjAyMy0wNC0wOSklMEElRTIlODAlQTIlMjBBZGRlZCUyMGlucHV0JTIwJ2tlcm5lbC1idWlsZGVyJTJGbml4cGtncyclM0ElMEElMjAlMjAlMjAlMjAnZ2l0aHViJTNBTml4T1MlMkZuaXhwa2dzJTJGMmY0ZmQ1ZTFhYmY5YmFjOGMxZDIyNzUwYzcwMWE3YTVlNmI1MjRjNiUzRm5hckhhc2glM0RzaGEyNTYtTWg2YkxjWUFjRU5CQVprM1JvTVBNRkNHR01abWZhR01FUkU0c2laT2dQNCUyNTNEJyUyMCgyMDI2LTAzLTMxKSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZydXN0LW92ZXJsYXknJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQW94YWxpY2ElMkZydXN0LW92ZXJsYXklMkY5NjJhMDkzNGQwZTMyZjQyZDFiNWU0OTE4NmY5NTk1ZjliMTc4ZDJkJTNGbmFySGFzaCUzRHNoYTI1Ni1KTWREWW4wRiUyNTJCc3dZQklMbHBDZUhEYkNTeXpxa2VTR054WiUyRlE1SjU4NGpNJTI1M0QnJTIwKDIwMjYtMDMtMzEpJTBBJUUyJTgwJUEyJTIwQWRkZWQlMjBpbnB1dCUyMCdrZXJuZWwtYnVpbGRlciUyRnJ1c3Qtb3ZlcmxheSUyRm5peHBrZ3MnJTNBJTBBJTIwJTIwJTIwJTIwZm9sbG93cyUyMCdrZXJuZWwtYnVpbGRlciUyRm5peHBrZ3Mn",highlighted:`❯ nix flake update | |
| • Added input <span class="hljs-string">'kernel-builder'</span>: | |
| <span class="hljs-string">'github:huggingface/kernels/8ad8a5094f1b3c425f70900699ed690d65d878c3?narHash=sha256-m8tBntCIlH/rY4BcIv5X5%2BdtgSS1yQi883Co%2Bj5cudI%3D'</span> (2026-04-09) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-compat'</span>: | |
| <span class="hljs-string">'github:edolstra/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab?narHash=sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns%3D'</span> (2025-12-29) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-utils'</span>: | |
| <span class="hljs-string">'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D'</span> (2024-11-13) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-utils/systems'</span>: | |
| <span class="hljs-string">'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e?narHash=sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768%3D'</span> (2023-04-09) | |
| • Added input <span class="hljs-string">'kernel-builder/nixpkgs'</span>: | |
| <span class="hljs-string">'github:NixOS/nixpkgs/2f4fd5e1abf9bac8c1d22750c701a7a5e6b524c6?narHash=sha256-Mh6bLcYAcENBAZk3RoMPMFCGGMZmfaGMERE4siZOgP4%3D'</span> (2026-03-31) | |
| • Added input <span class="hljs-string">'kernel-builder/rust-overlay'</span>: | |
| <span class="hljs-string">'github:oxalica/rust-overlay/962a0934d0e32f42d1b5e49186f9595f9b178d2d?narHash=sha256-JMdDYn0F%2BswYBILlpCeHDbCSyzqkeSGNxZ/Q5J584jM%3D'</span> (2026-03-31) | |
| • Added input <span class="hljs-string">'kernel-builder/rust-overlay/nixpkgs'</span>: | |
| follows <span class="hljs-string">'kernel-builder/nixpkgs'</span>`,lang:"bash",wrap:!1}}),ye=new m({props:{title:"Skipping the get_kernel check",local:"skipping-the-getkernel-check",headingTag:"h2"}}),fe=new ol({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/build.md"}}),{c(){b=a("meta"),we=i(),ge=a("p"),ke=i(),p(x.$$.fragment),Je=i(),p(w.$$.fragment),$e=i(),p(k.$$.fragment),Ue=i(),f=a("blockquote"),f.innerHTML=jt,je=i(),p(J.$$.fragment),Ce=i(),$=a("p"),$.textContent=Ct,Ie=i(),U=a("ul"),U.innerHTML=It,ve=i(),p(j.$$.fragment),Ge=i(),C=a("p"),C.textContent=vt,Ne=i(),I=a("p"),I.textContent=Gt,Ze=i(),p(v.$$.fragment),We=i(),G=a("p"),G.textContent=Nt,He=i(),p(N.$$.fragment),Ve=i(),p(Z.$$.fragment),Be=i(),W=a("p"),W.innerHTML=Zt,Le=i(),p(H.$$.fragment),Ee=i(),V=a("p"),V.innerHTML=Wt,Ye=i(),p(B.$$.fragment),Se=i(),L=a("p"),L.innerHTML=Ht,ze=i(),p(E.$$.fragment),Re=i(),Y=a("p"),Y.innerHTML=Vt,Qe=i(),p(S.$$.fragment),Ae=i(),z=a("p"),z.innerHTML=Bt,Xe=i(),p(R.$$.fragment),Fe=i(),Q=a("p"),Q.innerHTML=Lt,De=i(),p(A.$$.fragment),_e=i(),X=a("p"),X.textContent=Et,Oe=i(),p(F.$$.fragment),Pe=i(),D=a("p"),D.innerHTML=Yt,qe=i(),_=a("p"),_.innerHTML=St,Ke=i(),p(O.$$.fragment),et=i(),p(P.$$.fragment),tt=i(),q=a("p"),q.textContent=zt,lt=i(),p(K.$$.fragment),nt=i(),ee=a("p"),ee.innerHTML=Rt,it=i(),p(te.$$.fragment),st=i(),le=a("p"),le.innerHTML=Qt,at=i(),p(ne.$$.fragment),rt=i(),ie=a("p"),ie.innerHTML=At,dt=i(),se=a("p"),se.textContent=Xt,pt=i(),p(ae.$$.fragment),ot=i(),re=a("p"),re.textContent=Ft,ct=i(),p(de.$$.fragment),ht=i(),g=a("blockquote"),g.innerHTML=Dt,ut=i(),pe=a("p"),pe.innerHTML=_t,Mt=i(),oe=a("p"),oe.innerHTML=Ot,mt=i(),p(ce.$$.fragment),yt=i(),he=a("p"),he.innerHTML=Pt,bt=i(),T=a("blockquote"),T.innerHTML=qt,ft=i(),p(ue.$$.fragment),gt=i(),Me=a("p"),Me.innerHTML=Kt,Tt=i(),p(me.$$.fragment),xt=i(),p(ye.$$.fragment),wt=i(),be=a("p"),be.innerHTML=el,kt=i(),p(fe.$$.fragment),Jt=i(),Te=a("p"),this.h()},l(e){const t=rl("svelte-u9bgzb",document.head);b=r(t,"META",{name:!0,content:!0}),t.forEach(l),we=s(e),ge=r(e,"P",{}),tl(ge).forEach(l),ke=s(e),o(x.$$.fragment,e),Je=s(e),o(w.$$.fragment,e),$e=s(e),o(k.$$.fragment,e),Ue=s(e),f=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),d(f)!=="svelte-1sf6dmq"&&(f.innerHTML=jt),je=s(e),o(J.$$.fragment,e),Ce=s(e),$=r(e,"P",{"data-svelte-h":!0}),d($)!=="svelte-5zbxl"&&($.textContent=Ct),Ie=s(e),U=r(e,"UL",{"data-svelte-h":!0}),d(U)!=="svelte-yt841z"&&(U.innerHTML=It),ve=s(e),o(j.$$.fragment,e),Ge=s(e),C=r(e,"P",{"data-svelte-h":!0}),d(C)!=="svelte-1gt1gp0"&&(C.textContent=vt),Ne=s(e),I=r(e,"P",{"data-svelte-h":!0}),d(I)!=="svelte-ephjfc"&&(I.textContent=Gt),Ze=s(e),o(v.$$.fragment,e),We=s(e),G=r(e,"P",{"data-svelte-h":!0}),d(G)!=="svelte-vbvwso"&&(G.textContent=Nt),He=s(e),o(N.$$.fragment,e),Ve=s(e),o(Z.$$.fragment,e),Be=s(e),W=r(e,"P",{"data-svelte-h":!0}),d(W)!=="svelte-1edfy9h"&&(W.innerHTML=Zt),Le=s(e),o(H.$$.fragment,e),Ee=s(e),V=r(e,"P",{"data-svelte-h":!0}),d(V)!=="svelte-oshv1y"&&(V.innerHTML=Wt),Ye=s(e),o(B.$$.fragment,e),Se=s(e),L=r(e,"P",{"data-svelte-h":!0}),d(L)!=="svelte-106kaqs"&&(L.innerHTML=Ht),ze=s(e),o(E.$$.fragment,e),Re=s(e),Y=r(e,"P",{"data-svelte-h":!0}),d(Y)!=="svelte-mql59w"&&(Y.innerHTML=Vt),Qe=s(e),o(S.$$.fragment,e),Ae=s(e),z=r(e,"P",{"data-svelte-h":!0}),d(z)!=="svelte-z48w5c"&&(z.innerHTML=Bt),Xe=s(e),o(R.$$.fragment,e),Fe=s(e),Q=r(e,"P",{"data-svelte-h":!0}),d(Q)!=="svelte-mpebzc"&&(Q.innerHTML=Lt),De=s(e),o(A.$$.fragment,e),_e=s(e),X=r(e,"P",{"data-svelte-h":!0}),d(X)!=="svelte-n51o54"&&(X.textContent=Et),Oe=s(e),o(F.$$.fragment,e),Pe=s(e),D=r(e,"P",{"data-svelte-h":!0}),d(D)!=="svelte-1txqxl"&&(D.innerHTML=Yt),qe=s(e),_=r(e,"P",{"data-svelte-h":!0}),d(_)!=="svelte-ewx7y5"&&(_.innerHTML=St),Ke=s(e),o(O.$$.fragment,e),et=s(e),o(P.$$.fragment,e),tt=s(e),q=r(e,"P",{"data-svelte-h":!0}),d(q)!=="svelte-1imq8kt"&&(q.textContent=zt),lt=s(e),o(K.$$.fragment,e),nt=s(e),ee=r(e,"P",{"data-svelte-h":!0}),d(ee)!=="svelte-m0u3an"&&(ee.innerHTML=Rt),it=s(e),o(te.$$.fragment,e),st=s(e),le=r(e,"P",{"data-svelte-h":!0}),d(le)!=="svelte-1f12544"&&(le.innerHTML=Qt),at=s(e),o(ne.$$.fragment,e),rt=s(e),ie=r(e,"P",{"data-svelte-h":!0}),d(ie)!=="svelte-1yhwali"&&(ie.innerHTML=At),dt=s(e),se=r(e,"P",{"data-svelte-h":!0}),d(se)!=="svelte-1p7pfs6"&&(se.textContent=Xt),pt=s(e),o(ae.$$.fragment,e),ot=s(e),re=r(e,"P",{"data-svelte-h":!0}),d(re)!=="svelte-1095wd7"&&(re.textContent=Ft),ct=s(e),o(de.$$.fragment,e),ht=s(e),g=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),d(g)!=="svelte-k9g5at"&&(g.innerHTML=Dt),ut=s(e),pe=r(e,"P",{"data-svelte-h":!0}),d(pe)!=="svelte-12hsqds"&&(pe.innerHTML=_t),Mt=s(e),oe=r(e,"P",{"data-svelte-h":!0}),d(oe)!=="svelte-1qvgavi"&&(oe.innerHTML=Ot),mt=s(e),o(ce.$$.fragment,e),yt=s(e),he=r(e,"P",{"data-svelte-h":!0}),d(he)!=="svelte-1bunmp3"&&(he.innerHTML=Pt),bt=s(e),T=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),d(T)!=="svelte-1dawwt8"&&(T.innerHTML=qt),ft=s(e),o(ue.$$.fragment,e),gt=s(e),Me=r(e,"P",{"data-svelte-h":!0}),d(Me)!=="svelte-1h1noce"&&(Me.innerHTML=Kt),Tt=s(e),o(me.$$.fragment,e),xt=s(e),o(ye.$$.fragment,e),wt=s(e),be=r(e,"P",{"data-svelte-h":!0}),d(be)!=="svelte-czbbir"&&(be.innerHTML=el),kt=s(e),o(fe.$$.fragment,e),Jt=s(e),Te=r(e,"P",{}),tl(Te).forEach(l),this.h()},h(){xe(b,"name","hf:doc:metadata"),xe(b,"content",hl),xe(f,"class","note"),xe(g,"class","note"),xe(T,"class","tip")},m(e,t){dl(document.head,b),n(e,we,t),n(e,ge,t),n(e,ke,t),c(x,e,t),n(e,Je,t),c(w,e,t),n(e,$e,t),c(k,e,t),n(e,Ue,t),n(e,f,t),n(e,je,t),c(J,e,t),n(e,Ce,t),n(e,$,t),n(e,Ie,t),n(e,U,t),n(e,ve,t),c(j,e,t),n(e,Ge,t),n(e,C,t),n(e,Ne,t),n(e,I,t),n(e,Ze,t),c(v,e,t),n(e,We,t),n(e,G,t),n(e,He,t),c(N,e,t),n(e,Ve,t),c(Z,e,t),n(e,Be,t),n(e,W,t),n(e,Le,t),c(H,e,t),n(e,Ee,t),n(e,V,t),n(e,Ye,t),c(B,e,t),n(e,Se,t),n(e,L,t),n(e,ze,t),c(E,e,t),n(e,Re,t),n(e,Y,t),n(e,Qe,t),c(S,e,t),n(e,Ae,t),n(e,z,t),n(e,Xe,t),c(R,e,t),n(e,Fe,t),n(e,Q,t),n(e,De,t),c(A,e,t),n(e,_e,t),n(e,X,t),n(e,Oe,t),c(F,e,t),n(e,Pe,t),n(e,D,t),n(e,qe,t),n(e,_,t),n(e,Ke,t),c(O,e,t),n(e,et,t),c(P,e,t),n(e,tt,t),n(e,q,t),n(e,lt,t),c(K,e,t),n(e,nt,t),n(e,ee,t),n(e,it,t),c(te,e,t),n(e,st,t),n(e,le,t),n(e,at,t),c(ne,e,t),n(e,rt,t),n(e,ie,t),n(e,dt,t),n(e,se,t),n(e,pt,t),c(ae,e,t),n(e,ot,t),n(e,re,t),n(e,ct,t),c(de,e,t),n(e,ht,t),n(e,g,t),n(e,ut,t),n(e,pe,t),n(e,Mt,t),n(e,oe,t),n(e,mt,t),c(ce,e,t),n(e,yt,t),n(e,he,t),n(e,bt,t),n(e,T,t),n(e,ft,t),c(ue,e,t),n(e,gt,t),n(e,Me,t),n(e,Tt,t),c(me,e,t),n(e,xt,t),c(ye,e,t),n(e,wt,t),n(e,be,t),n(e,kt,t),c(fe,e,t),n(e,Jt,t),n(e,Te,t),$t=!0},p:nl,i(e){$t||(h(x.$$.fragment,e),h(w.$$.fragment,e),h(k.$$.fragment,e),h(J.$$.fragment,e),h(j.$$.fragment,e),h(v.$$.fragment,e),h(N.$$.fragment,e),h(Z.$$.fragment,e),h(H.$$.fragment,e),h(B.$$.fragment,e),h(E.$$.fragment,e),h(S.$$.fragment,e),h(R.$$.fragment,e),h(A.$$.fragment,e),h(F.$$.fragment,e),h(O.$$.fragment,e),h(P.$$.fragment,e),h(K.$$.fragment,e),h(te.$$.fragment,e),h(ne.$$.fragment,e),h(ae.$$.fragment,e),h(de.$$.fragment,e),h(ce.$$.fragment,e),h(ue.$$.fragment,e),h(me.$$.fragment,e),h(ye.$$.fragment,e),h(fe.$$.fragment,e),$t=!0)},o(e){u(x.$$.fragment,e),u(w.$$.fragment,e),u(k.$$.fragment,e),u(J.$$.fragment,e),u(j.$$.fragment,e),u(v.$$.fragment,e),u(N.$$.fragment,e),u(Z.$$.fragment,e),u(H.$$.fragment,e),u(B.$$.fragment,e),u(E.$$.fragment,e),u(S.$$.fragment,e),u(R.$$.fragment,e),u(A.$$.fragment,e),u(F.$$.fragment,e),u(O.$$.fragment,e),u(P.$$.fragment,e),u(K.$$.fragment,e),u(te.$$.fragment,e),u(ne.$$.fragment,e),u(ae.$$.fragment,e),u(de.$$.fragment,e),u(ce.$$.fragment,e),u(ue.$$.fragment,e),u(me.$$.fragment,e),u(ye.$$.fragment,e),u(fe.$$.fragment,e),$t=!1},d(e){e&&(l(we),l(ge),l(ke),l(Je),l($e),l(Ue),l(f),l(je),l(Ce),l($),l(Ie),l(U),l(ve),l(Ge),l(C),l(Ne),l(I),l(Ze),l(We),l(G),l(He),l(Ve),l(Be),l(W),l(Le),l(Ee),l(V),l(Ye),l(Se),l(L),l(ze),l(Re),l(Y),l(Qe),l(Ae),l(z),l(Xe),l(Fe),l(Q),l(De),l(_e),l(X),l(Oe),l(Pe),l(D),l(qe),l(_),l(Ke),l(et),l(tt),l(q),l(lt),l(nt),l(ee),l(it),l(st),l(le),l(at),l(rt),l(ie),l(dt),l(se),l(pt),l(ot),l(re),l(ct),l(ht),l(g),l(ut),l(pe),l(Mt),l(oe),l(mt),l(yt),l(he),l(bt),l(T),l(ft),l(gt),l(Me),l(Tt),l(xt),l(wt),l(be),l(kt),l(Jt),l(Te)),l(b),M(x,e),M(w,e),M(k,e),M(J,e),M(j,e),M(v,e),M(N,e),M(Z,e),M(H,e),M(B,e),M(E,e),M(S,e),M(R,e),M(A,e),M(F,e),M(O,e),M(P,e),M(K,e),M(te,e),M(ne,e),M(ae,e),M(de,e),M(ce,e),M(ue,e),M(me,e),M(ye,e),M(fe,e)}}}const hl='{"title":"Build with Nix","local":"build-with-nix","sections":[{"title":"Installation","local":"installation","sections":[{"title":"Installing Nix","local":"installing-nix","sections":[],"depth":3},{"title":"Using the Hugging Face binary cache","local":"using-the-hugging-face-binary-cache","sections":[],"depth":3},{"title":"GPU library configuration","local":"gpu-library-configuration","sections":[],"depth":3}],"depth":2},{"title":"Getting started","local":"getting-started","sections":[],"depth":2},{"title":"Building a kernel","local":"building-a-kernel","sections":[],"depth":2},{"title":"Shell for local development","local":"shell-for-local-development","sections":[],"depth":2},{"title":"Shell for testing a kernel","local":"shell-for-testing-a-kernel","sections":[],"depth":2},{"title":"Adding test dependencies to development shells","local":"adding-test-dependencies-to-development-shells","sections":[],"depth":2},{"title":"Uploading your kernel to the Hub","local":"uploading-your-kernel-to-the-hub","sections":[],"depth":2},{"title":"Updating the kernel build toolchain","local":"updating-the-kernel-build-toolchain","sections":[],"depth":2},{"title":"Skipping the get_kernel check","local":"skipping-the-getkernel-check","sections":[],"depth":2}],"depth":1}';function ul(Ut){return il(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fl extends sl{constructor(b){super(),al(this,b,ul,cl,ll,{})}}export{fl as component}; | |
Xet Storage Details
- Size:
- 28.1 kB
- Xet hash:
- 598441b66628e5679545f999456b62011de3506e5cd80ac93854e140eef8750e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.