Buckets:

HuggingFaceDocBuilder's picture
download
raw
10.4 kB
import{s as Xe,n as Ve,o as Ze}from"../chunks/scheduler.f3b1e791.js";import{S as Re,i as Ee,e as s,s as i,c as o,h as Ye,a as r,d as l,b as a,f as We,g as p,j as u,k as Pe,l as Se,m as n,n as d,t as m,o as f,p as c}from"../chunks/index.023a9934.js";import{C as qe,H as we,E as Ne}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.76705b3b.js";import{C as Y}from"../chunks/CodeBlock.368f51b1.js";function Be(ke){let h,N,S,B,b,D,$,F,y,z,g,Te=`<code>kernel-builder</code> builds kernels in a sandbox. This has various benefits,
such as building kernels for a wide range of Torch versions, compatibility
with older C library versions and avoiding accidental dependencies.`,A,w,ve=`However, this is not ideal during kernel development, since language
servers and IDEs do not interpret the <code>build.toml</code> file. As a result,
code completion will typically not work. <code>kernel-builder</code> provides the
<code>kernel-builder</code> utility to generate CMake files to build native code and
setuptools files for building the kernel as a regular Python package.
Since CMake and setuptools are widely supported by IDEs, this provides
a much-improved development experience.`,Q,k,K,T,Me=`<code>kernel-builder</code> can create CMake/Python project files for a kernel with
a <a href="./writing-kernels"><code>build.toml</code></a> file. The <code>create-pyproject</code>
command will create the files for the kernel in the current directory:`,O,v,ee,M,Je=`The <code>-f</code> flag is optional and instructs <code>kernel-builder</code> to overwrite
existing files.`,te,J,Ce="You can build the kernel with",le,C,ne,_,_e=`This builds the kernel and puts the variant that is compatible with the build
environment in <code>build</code>. The build can then be loaded directly with <code>kernels</code>:`,ie,x,ae,L,xe=`For AOT kernels, if you want to skip the CMake configuration step in subsequent
builds, you can also run Ninja directly to do incremental builds:`,se,I,re,H,Le="You can also create a Python project for a kernel in another directory:",oe,G,pe,j,Ie="<strong>Warnings:</strong>",ue,U,He=`<li>Kernels built in this way should <strong>not</strong> be published on the Kernel
Hub. They do not fulfill the <a href="../kernel-requirements">kernel requirements</a>.</li> <li>Do not add the generated files to Git. <code>kernel-builder</code> has regular updates
and you generally want to use files generated by the latest version.</li>`,de,W,Ge=`See <a href="./ide-setup">IDE Setup</a> for wiring the generated project into
VS Code with direnv.`,me,P,fe,X,je=`Once you have built a kernel with kernel builder, you may want to test it
locally with software that uses <code>get_kernel</code> or <code>LayerRepository</code> before
publishing. This can be done using the <code>LOCAL_KERNELS</code> variable, which
maps a repository ID to a local kernel directory. For example, you could
use the kernel in <code>devel/activation</code> for any use of the
<code>kernels-community/activation</code> repository with:`,ce,V,he,Z,Ue=`It is also possible to map multiple repositories to local kernel directories
by separating the entries with a colon (<code>:</code>):`,be,R,$e,E,ye,q,ge;return b=new qe({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),$=new we({props:{title:"Develop locally",local:"develop-locally",headingTag:"h1"}}),y=new we({props:{title:"Introduction",local:"introduction",headingTag:"h2"}}),k=new we({props:{title:"Generating a Python project with kernel-builder",local:"generating-a-python-project-with-kernel-builder",headingTag:"h2"}}),v=new Y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBjcmVhdGUtcHlwcm9qZWN0JTIwLWY=",highlighted:"$ kernel-builder create-pyproject -f",lang:"bash",wrap:!1}}),C=new Y({props:{code:"JTI0JTIwcHl0aG9uJTIwc2V0dXAucHklMjBidWlsZF9rZXJuZWw=",highlighted:"$ python setup.py build_kernel",lang:"bash",wrap:!1}}),x=new Y({props:{code:"JTI0JTIwcHl0aG9uJTIwLWMlMjAnaW1wb3J0JTIwcGF0aGxpYiUzQiUyMGltcG9ydCUyMGtlcm5lbHMlM0IlMjBrJTIwJTNEJTIwa2VybmVscy5nZXRfbG9jYWxfa2VybmVsKHBhdGhsaWIuUGF0aCglMjJidWlsZCUyMikpJTNCJTIwcHJpbnQoaykn",highlighted:'<span class="hljs-meta prompt_">$ </span><span class="language-bash">python -c <span class="hljs-string">&#x27;import pathlib; import kernels; k = kernels.get_local_kernel(pathlib.Path(&quot;build&quot;)); print(k)&#x27;</span></span>',lang:"shell",wrap:!1}}),I=new Y({props:{code:"JTI0JTIwbmluamElMjAtQyUyMF9jbWFrZV9idWlsZCUyMGxvY2FsX2luc3RhbGw=",highlighted:'<span class="hljs-meta prompt_">$ </span><span class="language-bash">ninja -C _cmake_build local_install</span>',lang:"shell",wrap:!1}}),G=new Y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBjcmVhdGUtcHlwcm9qZWN0JTIwLWYlMjBwYXRoJTJGdG8lMkZrZXJuZWw=",highlighted:"$ kernel-builder create-pyproject -f path/to/kernel",lang:"bash",wrap:!1}}),P=new we({props:{title:"Testing kernel builds before publishing",local:"testing-kernel-builds-before-publishing",headingTag:"h2"}}),V=new Y({props:{code:"JTI0JTIwTE9DQUxfS0VSTkVMUyUzRCUyMmtlcm5lbHMtY29tbXVuaXR5JTJGYWN0aXZhdGlvbiUzRGRldmVsJTJGYWN0aXZhdGlvbiUyMiUyMCU1QyUwQSUyMCUyMHB5dGhvbiUyMG15X2FwcC5weQ==",highlighted:`$ LOCAL_KERNELS=<span class="hljs-string">&quot;kernels-community/activation=devel/activation&quot;</span> \\
python my_app.py`,lang:"bash",wrap:!1}}),R=new Y({props:{code:"JTI0JTIwTE9DQUxfS0VSTkVMUyUzRCUyMmtlcm5lbHMtY29tbXVuaXR5JTJGYWN0aXZhdGlvbiUzRGRldmVsJTJGYWN0aXZhdGlvbiUzQWtlcm5lbHMtY29tbXVuaXR5JTJGZmxhc2gtYXR0bjIlM0RkZXZlbCUyRmZsYXNoLWF0dG4yJTIyJTIwJTVDJTBBJTIwJTIwcHl0aG9uJTIwbXlfYXBwLnB5",highlighted:`$ LOCAL_KERNELS=<span class="hljs-string">&quot;kernels-community/activation=devel/activation:kernels-community/flash-attn2=devel/flash-attn2&quot;</span> \\
python my_app.py`,lang:"bash",wrap:!1}}),E=new Ne({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/local-dev.md"}}),{c(){h=s("meta"),N=i(),S=s("p"),B=i(),o(b.$$.fragment),D=i(),o($.$$.fragment),F=i(),o(y.$$.fragment),z=i(),g=s("p"),g.innerHTML=Te,A=i(),w=s("p"),w.innerHTML=ve,Q=i(),o(k.$$.fragment),K=i(),T=s("p"),T.innerHTML=Me,O=i(),o(v.$$.fragment),ee=i(),M=s("p"),M.innerHTML=Je,te=i(),J=s("p"),J.textContent=Ce,le=i(),o(C.$$.fragment),ne=i(),_=s("p"),_.innerHTML=_e,ie=i(),o(x.$$.fragment),ae=i(),L=s("p"),L.textContent=xe,se=i(),o(I.$$.fragment),re=i(),H=s("p"),H.textContent=Le,oe=i(),o(G.$$.fragment),pe=i(),j=s("p"),j.innerHTML=Ie,ue=i(),U=s("ul"),U.innerHTML=He,de=i(),W=s("p"),W.innerHTML=Ge,me=i(),o(P.$$.fragment),fe=i(),X=s("p"),X.innerHTML=je,ce=i(),o(V.$$.fragment),he=i(),Z=s("p"),Z.innerHTML=Ue,be=i(),o(R.$$.fragment),$e=i(),o(E.$$.fragment),ye=i(),q=s("p"),this.h()},l(e){const t=Ye("svelte-u9bgzb",document.head);h=r(t,"META",{name:!0,content:!0}),t.forEach(l),N=a(e),S=r(e,"P",{}),We(S).forEach(l),B=a(e),p(b.$$.fragment,e),D=a(e),p($.$$.fragment,e),F=a(e),p(y.$$.fragment,e),z=a(e),g=r(e,"P",{"data-svelte-h":!0}),u(g)!=="svelte-rs46k0"&&(g.innerHTML=Te),A=a(e),w=r(e,"P",{"data-svelte-h":!0}),u(w)!=="svelte-k18632"&&(w.innerHTML=ve),Q=a(e),p(k.$$.fragment,e),K=a(e),T=r(e,"P",{"data-svelte-h":!0}),u(T)!=="svelte-1a27bcp"&&(T.innerHTML=Me),O=a(e),p(v.$$.fragment,e),ee=a(e),M=r(e,"P",{"data-svelte-h":!0}),u(M)!=="svelte-1argkq5"&&(M.innerHTML=Je),te=a(e),J=r(e,"P",{"data-svelte-h":!0}),u(J)!=="svelte-dcmfc1"&&(J.textContent=Ce),le=a(e),p(C.$$.fragment,e),ne=a(e),_=r(e,"P",{"data-svelte-h":!0}),u(_)!=="svelte-dm67zu"&&(_.innerHTML=_e),ie=a(e),p(x.$$.fragment,e),ae=a(e),L=r(e,"P",{"data-svelte-h":!0}),u(L)!=="svelte-25sto"&&(L.textContent=xe),se=a(e),p(I.$$.fragment,e),re=a(e),H=r(e,"P",{"data-svelte-h":!0}),u(H)!=="svelte-1oav1so"&&(H.textContent=Le),oe=a(e),p(G.$$.fragment,e),pe=a(e),j=r(e,"P",{"data-svelte-h":!0}),u(j)!=="svelte-1u66aq8"&&(j.innerHTML=Ie),ue=a(e),U=r(e,"UL",{"data-svelte-h":!0}),u(U)!=="svelte-2khbd3"&&(U.innerHTML=He),de=a(e),W=r(e,"P",{"data-svelte-h":!0}),u(W)!=="svelte-6k4c84"&&(W.innerHTML=Ge),me=a(e),p(P.$$.fragment,e),fe=a(e),X=r(e,"P",{"data-svelte-h":!0}),u(X)!=="svelte-1fqf7j9"&&(X.innerHTML=je),ce=a(e),p(V.$$.fragment,e),he=a(e),Z=r(e,"P",{"data-svelte-h":!0}),u(Z)!=="svelte-5f7yaa"&&(Z.innerHTML=Ue),be=a(e),p(R.$$.fragment,e),$e=a(e),p(E.$$.fragment,e),ye=a(e),q=r(e,"P",{}),We(q).forEach(l),this.h()},h(){Pe(h,"name","hf:doc:metadata"),Pe(h,"content",De)},m(e,t){Se(document.head,h),n(e,N,t),n(e,S,t),n(e,B,t),d(b,e,t),n(e,D,t),d($,e,t),n(e,F,t),d(y,e,t),n(e,z,t),n(e,g,t),n(e,A,t),n(e,w,t),n(e,Q,t),d(k,e,t),n(e,K,t),n(e,T,t),n(e,O,t),d(v,e,t),n(e,ee,t),n(e,M,t),n(e,te,t),n(e,J,t),n(e,le,t),d(C,e,t),n(e,ne,t),n(e,_,t),n(e,ie,t),d(x,e,t),n(e,ae,t),n(e,L,t),n(e,se,t),d(I,e,t),n(e,re,t),n(e,H,t),n(e,oe,t),d(G,e,t),n(e,pe,t),n(e,j,t),n(e,ue,t),n(e,U,t),n(e,de,t),n(e,W,t),n(e,me,t),d(P,e,t),n(e,fe,t),n(e,X,t),n(e,ce,t),d(V,e,t),n(e,he,t),n(e,Z,t),n(e,be,t),d(R,e,t),n(e,$e,t),d(E,e,t),n(e,ye,t),n(e,q,t),ge=!0},p:Ve,i(e){ge||(m(b.$$.fragment,e),m($.$$.fragment,e),m(y.$$.fragment,e),m(k.$$.fragment,e),m(v.$$.fragment,e),m(C.$$.fragment,e),m(x.$$.fragment,e),m(I.$$.fragment,e),m(G.$$.fragment,e),m(P.$$.fragment,e),m(V.$$.fragment,e),m(R.$$.fragment,e),m(E.$$.fragment,e),ge=!0)},o(e){f(b.$$.fragment,e),f($.$$.fragment,e),f(y.$$.fragment,e),f(k.$$.fragment,e),f(v.$$.fragment,e),f(C.$$.fragment,e),f(x.$$.fragment,e),f(I.$$.fragment,e),f(G.$$.fragment,e),f(P.$$.fragment,e),f(V.$$.fragment,e),f(R.$$.fragment,e),f(E.$$.fragment,e),ge=!1},d(e){e&&(l(N),l(S),l(B),l(D),l(F),l(z),l(g),l(A),l(w),l(Q),l(K),l(T),l(O),l(ee),l(M),l(te),l(J),l(le),l(ne),l(_),l(ie),l(ae),l(L),l(se),l(re),l(H),l(oe),l(pe),l(j),l(ue),l(U),l(de),l(W),l(me),l(fe),l(X),l(ce),l(he),l(Z),l(be),l($e),l(ye),l(q)),l(h),c(b,e),c($,e),c(y,e),c(k,e),c(v,e),c(C,e),c(x,e),c(I,e),c(G,e),c(P,e),c(V,e),c(R,e),c(E,e)}}}const De='{"title":"Develop locally","local":"develop-locally","sections":[{"title":"Introduction","local":"introduction","sections":[],"depth":2},{"title":"Generating a Python project with kernel-builder","local":"generating-a-python-project-with-kernel-builder","sections":[],"depth":2},{"title":"Testing kernel builds before publishing","local":"testing-kernel-builds-before-publishing","sections":[],"depth":2}],"depth":1}';function Fe(ke){return Ze(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Oe extends Re{constructor(h){super(),Ee(this,h,Fe,Be,Xe,{})}}export{Oe as component};

Xet Storage Details

Size:
10.4 kB
·
Xet hash:
0d0eacf9d0706e80c21a56da446f2b91fe52645b0915073140d7f3de9a5bda88

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.