import{S as Sa,i as Za,s as xa,e as n,k as p,w as Z,t as i,N as Pa,c as a,d as t,m as h,a as s,x,h as l,b as c,P as $n,G as o,g as u,y as P,q as A,o as z,B as I,v as Aa}from"../chunks/vendor-hf-doc-builder.js";import{T as Mn}from"../chunks/Tip-hf-doc-builder.js";import{I as Oe}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as za}from"../chunks/CodeBlock-hf-doc-builder.js";function Ia(ee){let d;return{c(){d=i(`Your Space's URL will only be available and usable for connecting from your
local machine if the visibility of the space is set to 'Public'.`)},l(f){d=l(f,`Your Space's URL will only be available and usable for connecting from your
local machine if the visibility of the space is set to 'Public'.`)},m(f,m){u(f,d,m)},d(f){f&&t(d)}}}function Da(ee){let d;return{c(){d=i(`If you are using the space just for testing and experimentation, you don't need
to make any changes to the configuration. Everything will work out of the box.`)},l(f){d=l(f,`If you are using the space just for testing and experimentation, you don't need
to make any changes to the configuration. Everything will work out of the box.`)},m(f,m){u(f,d,m)},d(f){f&&t(d)}}}function Ua(ee){let d,f,m,_,k,$,ge,O,M,te,v,S,we,ve,D,U,oe,b,H,Y,ne,L;return{c(){d=i(`If you wish to use a cloud secrets backend together with ZenML for secrets
management, **you must take the following minimal security precautions** on your ZenML Server on the
Dashboard:
`),f=n("ul"),m=n("li"),_=i("change your password on the "),k=n("code"),$=i("default"),ge=i(` account that you get when you start. You
can do this from the Dashboard or via the CLI.`),O=p(),M=n("li"),te=i("create a new user account with a password and assign it the "),v=n("code"),S=i("admin"),we=i(` role. This
can also be done from the Dashboard (by \u2018inviting\u2019 a new user) or via the CLI.`),ve=p(),D=n("li"),U=i(`reconnect to the server using the new user account and password as described
above, and use this new user account as your working account.`),oe=p(),b=n("p"),H=i(`This is because the default user created by the
HuggingFace Spaces deployment process has no password assigned to it and as the
Space is publicly accessible (since the Space is public) `),Y=n("em"),ne=i(`potentially anyone
could access your secrets without this extra step`),L=i(`. To change your password
navigate to the Settings page by clicking the button in the upper right hand
corner of the Dashboard and then click \u2018Update Password\u2019.`)},l(y){d=l(y,`If you wish to use a cloud secrets backend together with ZenML for secrets
management, **you must take the following minimal security precautions** on your ZenML Server on the
Dashboard:
`),f=a(y,"UL",{});var g=s(f);m=a(g,"LI",{});var ae=s(m);_=l(ae,"change your password on the "),k=a(ae,"CODE",{});var Ye=s(k);$=l(Ye,"default"),Ye.forEach(t),ge=l(ae,` account that you get when you start. You
can do this from the Dashboard or via the CLI.`),ae.forEach(t),O=h(g),M=a(g,"LI",{});var j=s(M);te=l(j,"create a new user account with a password and assign it the "),v=a(j,"CODE",{});var V=s(v);S=l(V,"admin"),V.forEach(t),we=l(j,` role. This
can also be done from the Dashboard (by \u2018inviting\u2019 a new user) or via the CLI.`),j.forEach(t),ve=h(g),D=a(g,"LI",{});var W=s(D);U=l(W,`reconnect to the server using the new user account and password as described
above, and use this new user account as your working account.`),W.forEach(t),g.forEach(t),oe=h(y),b=a(y,"P",{});var be=s(b);H=l(be,`This is because the default user created by the
HuggingFace Spaces deployment process has no password assigned to it and as the
Space is publicly accessible (since the Space is public) `),Y=a(be,"EM",{});var _e=s(Y);ne=l(_e,`potentially anyone
could access your secrets without this extra step`),_e.forEach(t),L=l(be,`. To change your password
navigate to the Settings page by clicking the button in the upper right hand
corner of the Dashboard and then click \u2018Update Password\u2019.`),be.forEach(t)},m(y,g){u(y,d,g),u(y,f,g),o(f,m),o(m,_),o(m,k),o(k,$),o(m,ge),o(f,O),o(f,M),o(M,te),o(M,v),o(v,S),o(M,we),o(f,ve),o(f,D),o(D,U),u(y,oe,g),u(y,b,g),o(b,H),o(b,Y),o(Y,ne),o(b,L)},d(y){y&&t(d),y&&t(f),y&&t(oe),y&&t(b)}}}function Ha(ee){let d,f,m,_,k,$,ge,O,M,te,v,S,we,ve,D,U,oe,b,H,Y,ne,L,y,g,ae,Ye,j,V,W,be,_e,w,po,Le,ho,fo,Ee,mo,yo,ke,go,wo,$e,vo,bo,Mt,q,re,rt,Me,_o,st,Lo,St,je,Eo,Zt,Se,it,Sn,xt,Ve,ko,Pt,We,qe,Zn,At,Be,$o,zt,se,Mo,Ze,So,Zo,It,Ge,xo,Dt,Je,Po,Ut,B,ie,lt,xe,Ao,ut,zo,Ht,Qe,Io,Ct,le,Rt,C,Do,Pe,Uo,Ho,ct,Co,Ro,Tt,Xe,To,Ft,Ae,Nt,Ke,Fo,Ot,G,ue,pt,ze,No,ht,Oo,Yt,R,Yo,ft,jo,Vo,Ie,Wo,qo,jt,ce,Vt,E,Bo,De,Go,Jo,dt,Qo,Xo,Ue,Ko,en,Wt,pe,qt,J,he,mt,He,tn,yt,on,Bt,T,nn,gt,an,rn,wt,sn,ln,Gt,Q,fe,vt,Ce,un,bt,cn,Jt,F,pn,Re,hn,fn,X,dn,_t,mn,yn,gn,Qt,K,de,Lt,Te,wn,Et,vn,Xt,et,bn,Kt,me,_n,Fe,Ln,En,eo;return $=new Oe({}),Me=new Oe({}),xe=new Oe({}),le=new Mn({props:{warning:!0,$$slots:{default:[Ia]},$$scope:{ctx:ee}}}),Ae=new za({props:{code:"emVubWwlMjBjb25uZWN0JTIwLS11cmwlMjAnJTNDWU9VUl9IRl9TUEFDRVNfRElSRUNUX1VSTCUzRSclMjAtLXVzZXJuYW1lJTNEJ2RlZmF1bHQnJTIwLS1wYXNzd29yZCUzRCcn",highlighted:"zenml connect --url &#x27;&lt;YOUR_HF_SPACES_DIRECT_URL&gt;&#x27; --username=&#x27;default&#x27; --password=&#x27;&#x27;"}}),ze=new Oe({}),ce=new Mn({props:{$$slots:{default:[Da]},$$scope:{ctx:ee}}}),pe=new Mn({props:{warning:!0,$$slots:{default:[Ua]},$$scope:{ctx:ee}}}),He=new Oe({}),Ce=new Oe({}),Te=new Oe({}),{c(){d=n("meta"),f=p(),m=n("h1"),_=n("a"),k=n("span"),Z($.$$.fragment),ge=p(),O=n("span"),M=i("ZenML on Spaces"),te=p(),v=n("p"),S=n("a"),we=i("ZenML"),ve=i(" is an extensible, open-source MLOps framework for creating portable, production-ready MLOps pipelines. It\u2019s built for Data Scientists, ML Engineers, and MLOps Developers to collaborate as they develop to production."),D=p(),U=n("p"),oe=i(`ZenML offers a simple and flexible syntax, is cloud- and tool-agnostic, and has
interfaces/abstractions catered toward ML workflows. With ZenML you\u2019ll have all
your favorite tools in one place, so you can tailor a workflow that caters to
your specific needs.`),b=p(),H=n("p"),Y=i(`The ZenML Huggingface Space allows you to get up and running with a deployed version
of ZenML with just a few clicks. Within a few minutes, you\u2019ll have this default
ZenML dashboard deployed and ready for you to connect to from your local
machine.`),ne=p(),L=n("p"),y=i(`In the sections that follow, you\u2019ll learn to deploy your own instance of ZenML and use
it to view and manage your machine learning pipelines right from the Hub. ZenML
on Huggingface Spaces is a `),g=n("strong"),ae=i(`self-contained application completely hosted on the
Hub using Docker`),Ye=i(". The diagram below illustrates the complete process."),j=p(),V=n("p"),W=n("img"),_e=p(),w=n("p"),po=i("Visit "),Le=n("a"),ho=i("the ZenML documentation"),fo=i(` to learn more about its
features and how to get started with running your machine learning pipelines
through your Huggingface Spaces deployment. You can check out `),Ee=n("a"),mo=i(`some small sample
examples`),yo=i(` of ZenML pipelines to get started or take your pick of some more
complex production-grade projects at `),ke=n("a"),go=i(`the ZenML Projects
repository`),wo=i(`. ZenML integrates with
many of your favorite tools out of the box, `),$e=n("a"),vo=i(`including
Huggingface`),bo=i(` of course! If there\u2019s
something else you want to use, we\u2019re built to be extensible and you can easily
make it work with whatever your custom tool or workflow is.`),Mt=p(),q=n("h2"),re=n("a"),rt=n("span"),Z(Me.$$.fragment),_o=p(),st=n("span"),Lo=i("\u26A1\uFE0F Deploy ZenML on Spaces"),St=p(),je=n("p"),Eo=i("You can deploy ZenML on Spaces with just a few clicks:"),Zt=p(),Se=n("a"),it=n("img"),xt=p(),Ve=n("p"),ko=i(`To set up your ZenML app, you need to specify three main components: the Owner
(either your personal account or an organization), a Space name, and the
Visibility (a bit lower down the page). Note that the space visibility needs to
be set to \u2018Public\u2019 if you wish to connect to the ZenML server from your local
machine.`),Pt=p(),We=n("p"),qe=n("img"),At=p(),Be=n("p"),$o=i(`You have the option here to select a higher tier machine to use for your server.
The advantage of selecting a paid CPU instance is that it is not subject to
auto-shutdown policies and thus will stay up as long as you leave it up. In
order to make use of a persistent CPU, you\u2019ll likely want to create and set up a
MySQL database to connect to (see below).`),zt=p(),se=n("p"),Mo=i(`To personalize your Space\u2019s appearance, such as the title, emojis, and colors,
navigate to \u201CFiles and Versions\u201D and modify the metadata in your README.md file.
Full information on Spaces configuration parameters can be found on the
HuggingFace `),Ze=n("a"),So=i("documentation reference guide"),Zo=i("."),It=p(),Ge=n("p"),xo=i(`After creating your Space, you\u2019ll notice a \u2018Building\u2019 status along with logs
displayed on the screen. When this switches to \u2018Running\u2019, your Space is ready for use. If the
ZenML login UI isn\u2019t visible, try refreshing the page.`),Dt=p(),Je=n("p"),Po=i(`Use our default login to access the dashboard (username: \u2018default\u2019, password:
(leave it empty)).`),Ut=p(),B=n("h2"),ie=n("a"),lt=n("span"),Z(xe.$$.fragment),Ao=p(),ut=n("span"),zo=i("Connecting to your ZenML Server from your Local Machine"),Ht=p(),Qe=n("p"),Io=i(`Once you have your ZenML server up and running, you can connect to it from your
local machine. To do this, you\u2019ll need to get your Space\u2019s URL.`),Ct=p(),Z(le.$$.fragment),Rt=p(),C=n("p"),Do=i(`In the upper-right hand corner of your space you\u2019ll see a button with three dots
which, when you click on it, will offer you a menu option to \u201CEmbed this Space\u201D.
(See `),Pe=n("a"),Uo=i(`the HuggingFace
documentation`),Ho=i(` for more details on
this feature.) Copy the \u201CDirect URL\u201D shown in the box that you can now see on
the screen. This should look something like this:
`),ct=n("code"),Co=i("https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space"),Ro=i("."),Tt=p(),Xe=n("p"),To=i(`You can now use this URL to connect to your ZenML server from your local machine
with the following CLI command (after installing ZenML, and using your custom
URL instead of the placeholder):`),Ft=p(),Z(Ae.$$.fragment),Nt=p(),Ke=n("p"),Fo=i(`You can also use the Direct URL in your browser to use the ZenML dashboard as a
fullscreen application (i.e. without the HuggingFace Spaces wrapper around it).`),Ot=p(),G=n("h2"),ue=n("a"),pt=n("span"),Z(ze.$$.fragment),No=p(),ht=n("span"),Oo=i("Extra Configuration Options"),Yt=p(),R=n("p"),Yo=i(`By default the ZenML application will be configured to use a SQLite
non-persistent database. If you want to use a persistent database, you can
configure this by amending the `),ft=n("code"),jo=i("Dockerfile"),Vo=i(` in your Space\u2019s root directory. For
full details on the various parameters you can change, see `),Ie=n("a"),Wo=i(`our reference
documentation`),qo=i(` on configuring
ZenML when deployed with Docker.`),jt=p(),Z(ce.$$.fragment),Vt=p(),E=n("p"),Bo=i(`You can also use an external secrets backend together with your HuggingFace
Spaces as described in `),De=n("a"),Go=i(`our
documentation`),Jo=i(`. You should be
sure to use HuggingFace\u2019s inbuilt \u2018Repository secrets\u2019 functionality to
configure any secrets you need to use in your`),dt=n("code"),Qo=i("Dockerfile"),Xo=i(" configuration. "),Ue=n("a"),Ko=i(`See the
documentation`),en=i(`
for more details how to set this up.`),Wt=p(),Z(pe.$$.fragment),qt=p(),J=n("h2"),he=n("a"),mt=n("span"),Z(He.$$.fragment),tn=p(),yt=n("span"),on=i("Upgrading your ZenML Server on HF Spaces"),Bt=p(),T=n("p"),nn=i(`The default space will use the latest version of ZenML automatically. If you
want to update your version, you can simply select the \u2018Factory reboot\u2019 option
within the \u2018Settings\u2019 tab of the space. Note that this will wipe any data
contained within the space and so if you are not using a MySQL persistent
database (as described above) you will lose any data contained within your ZenML
deployment on the space. You can also configure the space to use an earlier
version by updating the `),gt=n("code"),an=i("Dockerfile"),rn=i("\u2019s "),wt=n("code"),sn=i("FROM"),ln=i(" import statement at the very top."),Gt=p(),Q=n("h2"),fe=n("a"),vt=n("span"),Z(Ce.$$.fragment),un=p(),bt=n("span"),cn=i("Next Steps"),Jt=p(),F=n("p"),pn=i("As a next step, check out our "),Re=n("a"),hn=i(`Starter Guide to MLOps with
ZenML`),fn=i(` which is a series of short
practical pages on how to get going quickly. Alternatively, check out `),X=n("a"),dn=i(`our
`),_t=n("code"),mn=i("quickstart"),yn=i(`
example`),gn=i(` which
is a full end-to-end example of many of the features of ZenML.`),Qt=p(),K=n("h2"),de=n("a"),Lt=n("span"),Z(Te.$$.fragment),wn=p(),Et=n("span"),vn=i("\u{1F917} Feedback and support"),Xt=p(),et=n("p"),bn=i(`If you are having trouble with your ZenML server on HuggingFace Spaces, you can
view the logs by clicking on the \u201COpen Logs\u201D button at the top of the space.
This will give you more context of what\u2019s happening with your server.`),Kt=p(),me=n("p"),_n=i(`If you have suggestions or need specific support for anything else which isn\u2019t
working, please `),Fe=n("a"),Ln=i("join the ZenML Slack community"),En=i(`
and we\u2019ll be happy to help you out!`),this.h()},l(e){const r=Pa('[data-svelte="svelte-1phssyn"]',document.head);d=a(r,"META",{name:!0,content:!0}),r.forEach(t),f=h(e),m=a(e,"H1",{class:!0});var Ne=s(m);_=a(Ne,"A",{id:!0,class:!0,href:!0});var kt=s(_);k=a(kt,"SPAN",{});var $t=s(k);x($.$$.fragment,$t),$t.forEach(t),kt.forEach(t),ge=h(Ne),O=a(Ne,"SPAN",{});var xn=s(O);M=l(xn,"ZenML on Spaces"),xn.forEach(t),Ne.forEach(t),te=h(e),v=a(e,"P",{});var kn=s(v);S=a(kn,"A",{href:!0,rel:!0});var Pn=s(S);we=l(Pn,"ZenML"),Pn.forEach(t),ve=l(kn," is an extensible, open-source MLOps framework for creating portable, production-ready MLOps pipelines. It\u2019s built for Data Scientists, ML Engineers, and MLOps Developers to collaborate as they develop to production."),kn.forEach(t),D=h(e),U=a(e,"P",{});var An=s(U);oe=l(An,`ZenML offers a simple and flexible syntax, is cloud- and tool-agnostic, and has
interfaces/abstractions catered toward ML workflows. With ZenML you\u2019ll have all
your favorite tools in one place, so you can tailor a workflow that caters to
your specific needs.`),An.forEach(t),b=h(e),H=a(e,"P",{});var zn=s(H);Y=l(zn,`The ZenML Huggingface Space allows you to get up and running with a deployed version
of ZenML with just a few clicks. Within a few minutes, you\u2019ll have this default
ZenML dashboard deployed and ready for you to connect to from your local
machine.`),zn.forEach(t),ne=h(e),L=a(e,"P",{});var to=s(L);y=l(to,`In the sections that follow, you\u2019ll learn to deploy your own instance of ZenML and use
it to view and manage your machine learning pipelines right from the Hub. ZenML
on Huggingface Spaces is a `),g=a(to,"STRONG",{});var In=s(g);ae=l(In,`self-contained application completely hosted on the
Hub using Docker`),In.forEach(t),Ye=l(to,". The diagram below illustrates the complete process."),to.forEach(t),j=h(e),V=a(e,"P",{});var Dn=s(V);W=a(Dn,"IMG",{src:!0,alt:!0}),Dn.forEach(t),_e=h(e),w=a(e,"P",{});var N=s(w);po=l(N,"Visit "),Le=a(N,"A",{href:!0,rel:!0});var Un=s(Le);ho=l(Un,"the ZenML documentation"),Un.forEach(t),fo=l(N,` to learn more about its
features and how to get started with running your machine learning pipelines
through your Huggingface Spaces deployment. You can check out `),Ee=a(N,"A",{href:!0,rel:!0});var Hn=s(Ee);mo=l(Hn,`some small sample
examples`),Hn.forEach(t),yo=l(N,` of ZenML pipelines to get started or take your pick of some more
complex production-grade projects at `),ke=a(N,"A",{href:!0,rel:!0});var Cn=s(ke);go=l(Cn,`the ZenML Projects
repository`),Cn.forEach(t),wo=l(N,`. ZenML integrates with
many of your favorite tools out of the box, `),$e=a(N,"A",{href:!0,rel:!0});var Rn=s($e);vo=l(Rn,`including
Huggingface`),Rn.forEach(t),bo=l(N,` of course! If there\u2019s
something else you want to use, we\u2019re built to be extensible and you can easily
make it work with whatever your custom tool or workflow is.`),N.forEach(t),Mt=h(e),q=a(e,"H2",{class:!0});var oo=s(q);re=a(oo,"A",{id:!0,class:!0,href:!0});var Tn=s(re);rt=a(Tn,"SPAN",{});var Fn=s(rt);x(Me.$$.fragment,Fn),Fn.forEach(t),Tn.forEach(t),_o=h(oo),st=a(oo,"SPAN",{});var Nn=s(st);Lo=l(Nn,"\u26A1\uFE0F Deploy ZenML on Spaces"),Nn.forEach(t),oo.forEach(t),St=h(e),je=a(e,"P",{});var On=s(je);Eo=l(On,"You can deploy ZenML on Spaces with just a few clicks:"),On.forEach(t),Zt=h(e),Se=a(e,"A",{href:!0});var Yn=s(Se);it=a(Yn,"IMG",{src:!0}),Yn.forEach(t),xt=h(e),Ve=a(e,"P",{});var jn=s(Ve);ko=l(jn,`To set up your ZenML app, you need to specify three main components: the Owner
(either your personal account or an organization), a Space name, and the
Visibility (a bit lower down the page). Note that the space visibility needs to
be set to \u2018Public\u2019 if you wish to connect to the ZenML server from your local
machine.`),jn.forEach(t),Pt=h(e),We=a(e,"P",{});var Vn=s(We);qe=a(Vn,"IMG",{src:!0,alt:!0}),Vn.forEach(t),At=h(e),Be=a(e,"P",{});var Wn=s(Be);$o=l(Wn,`You have the option here to select a higher tier machine to use for your server.
The advantage of selecting a paid CPU instance is that it is not subject to
auto-shutdown policies and thus will stay up as long as you leave it up. In
order to make use of a persistent CPU, you\u2019ll likely want to create and set up a
MySQL database to connect to (see below).`),Wn.forEach(t),zt=h(e),se=a(e,"P",{});var no=s(se);Mo=l(no,`To personalize your Space\u2019s appearance, such as the title, emojis, and colors,
navigate to \u201CFiles and Versions\u201D and modify the metadata in your README.md file.
Full information on Spaces configuration parameters can be found on the
HuggingFace `),Ze=a(no,"A",{href:!0,rel:!0});var qn=s(Ze);So=l(qn,"documentation reference guide"),qn.forEach(t),Zo=l(no,"."),no.forEach(t),It=h(e),Ge=a(e,"P",{});var Bn=s(Ge);xo=l(Bn,`After creating your Space, you\u2019ll notice a \u2018Building\u2019 status along with logs
displayed on the screen. When this switches to \u2018Running\u2019, your Space is ready for use. If the
ZenML login UI isn\u2019t visible, try refreshing the page.`),Bn.forEach(t),Dt=h(e),Je=a(e,"P",{});var Gn=s(Je);Po=l(Gn,`Use our default login to access the dashboard (username: \u2018default\u2019, password:
(leave it empty)).`),Gn.forEach(t),Ut=h(e),B=a(e,"H2",{class:!0});var ao=s(B);ie=a(ao,"A",{id:!0,class:!0,href:!0});var Jn=s(ie);lt=a(Jn,"SPAN",{});var Qn=s(lt);x(xe.$$.fragment,Qn),Qn.forEach(t),Jn.forEach(t),Ao=h(ao),ut=a(ao,"SPAN",{});var Xn=s(ut);zo=l(Xn,"Connecting to your ZenML Server from your Local Machine"),Xn.forEach(t),ao.forEach(t),Ht=h(e),Qe=a(e,"P",{});var Kn=s(Qe);Io=l(Kn,`Once you have your ZenML server up and running, you can connect to it from your
local machine. To do this, you\u2019ll need to get your Space\u2019s URL.`),Kn.forEach(t),Ct=h(e),x(le.$$.fragment,e),Rt=h(e),C=a(e,"P",{});var tt=s(C);Do=l(tt,`In the upper-right hand corner of your space you\u2019ll see a button with three dots
which, when you click on it, will offer you a menu option to \u201CEmbed this Space\u201D.
(See `),Pe=a(tt,"A",{href:!0,rel:!0});var ea=s(Pe);Uo=l(ea,`the HuggingFace
documentation`),ea.forEach(t),Ho=l(tt,` for more details on
this feature.) Copy the \u201CDirect URL\u201D shown in the box that you can now see on
the screen. This should look something like this:
`),ct=a(tt,"CODE",{});var ta=s(ct);Co=l(ta,"https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space"),ta.forEach(t),Ro=l(tt,"."),tt.forEach(t),Tt=h(e),Xe=a(e,"P",{});var oa=s(Xe);To=l(oa,`You can now use this URL to connect to your ZenML server from your local machine
with the following CLI command (after installing ZenML, and using your custom
URL instead of the placeholder):`),oa.forEach(t),Ft=h(e),x(Ae.$$.fragment,e),Nt=h(e),Ke=a(e,"P",{});var na=s(Ke);Fo=l(na,`You can also use the Direct URL in your browser to use the ZenML dashboard as a
fullscreen application (i.e. without the HuggingFace Spaces wrapper around it).`),na.forEach(t),Ot=h(e),G=a(e,"H2",{class:!0});var ro=s(G);ue=a(ro,"A",{id:!0,class:!0,href:!0});var aa=s(ue);pt=a(aa,"SPAN",{});var ra=s(pt);x(ze.$$.fragment,ra),ra.forEach(t),aa.forEach(t),No=h(ro),ht=a(ro,"SPAN",{});var sa=s(ht);Oo=l(sa,"Extra Configuration Options"),sa.forEach(t),ro.forEach(t),Yt=h(e),R=a(e,"P",{});var ot=s(R);Yo=l(ot,`By default the ZenML application will be configured to use a SQLite
non-persistent database. If you want to use a persistent database, you can
configure this by amending the `),ft=a(ot,"CODE",{});var ia=s(ft);jo=l(ia,"Dockerfile"),ia.forEach(t),Vo=l(ot,` in your Space\u2019s root directory. For
full details on the various parameters you can change, see `),Ie=a(ot,"A",{href:!0,rel:!0});var la=s(Ie);Wo=l(la,`our reference
documentation`),la.forEach(t),qo=l(ot,` on configuring
ZenML when deployed with Docker.`),ot.forEach(t),jt=h(e),x(ce.$$.fragment,e),Vt=h(e),E=a(e,"P",{});var ye=s(E);Bo=l(ye,`You can also use an external secrets backend together with your HuggingFace
Spaces as described in `),De=a(ye,"A",{href:!0,rel:!0});var ua=s(De);Go=l(ua,`our
documentation`),ua.forEach(t),Jo=l(ye,`. You should be
sure to use HuggingFace\u2019s inbuilt \u2018Repository secrets\u2019 functionality to
configure any secrets you need to use in your`),dt=a(ye,"CODE",{});var ca=s(dt);Qo=l(ca,"Dockerfile"),ca.forEach(t),Xo=l(ye," configuration. "),Ue=a(ye,"A",{href:!0,rel:!0});var pa=s(Ue);Ko=l(pa,`See the
documentation`),pa.forEach(t),en=l(ye,`
for more details how to set this up.`),ye.forEach(t),Wt=h(e),x(pe.$$.fragment,e),qt=h(e),J=a(e,"H2",{class:!0});var so=s(J);he=a(so,"A",{id:!0,class:!0,href:!0});var ha=s(he);mt=a(ha,"SPAN",{});var fa=s(mt);x(He.$$.fragment,fa),fa.forEach(t),ha.forEach(t),tn=h(so),yt=a(so,"SPAN",{});var da=s(yt);on=l(da,"Upgrading your ZenML Server on HF Spaces"),da.forEach(t),so.forEach(t),Bt=h(e),T=a(e,"P",{});var nt=s(T);nn=l(nt,`The default space will use the latest version of ZenML automatically. If you
want to update your version, you can simply select the \u2018Factory reboot\u2019 option
within the \u2018Settings\u2019 tab of the space. Note that this will wipe any data
contained within the space and so if you are not using a MySQL persistent
database (as described above) you will lose any data contained within your ZenML
deployment on the space. You can also configure the space to use an earlier
version by updating the `),gt=a(nt,"CODE",{});var ma=s(gt);an=l(ma,"Dockerfile"),ma.forEach(t),rn=l(nt,"\u2019s "),wt=a(nt,"CODE",{});var ya=s(wt);sn=l(ya,"FROM"),ya.forEach(t),ln=l(nt," import statement at the very top."),nt.forEach(t),Gt=h(e),Q=a(e,"H2",{class:!0});var io=s(Q);fe=a(io,"A",{id:!0,class:!0,href:!0});var ga=s(fe);vt=a(ga,"SPAN",{});var wa=s(vt);x(Ce.$$.fragment,wa),wa.forEach(t),ga.forEach(t),un=h(io),bt=a(io,"SPAN",{});var va=s(bt);cn=l(va,"Next Steps"),va.forEach(t),io.forEach(t),Jt=h(e),F=a(e,"P",{});var at=s(F);pn=l(at,"As a next step, check out our "),Re=a(at,"A",{href:!0,rel:!0});var ba=s(Re);hn=l(ba,`Starter Guide to MLOps with
ZenML`),ba.forEach(t),fn=l(at,` which is a series of short
practical pages on how to get going quickly. Alternatively, check out `),X=a(at,"A",{href:!0,rel:!0});var lo=s(X);dn=l(lo,`our
`),_t=a(lo,"CODE",{});var _a=s(_t);mn=l(_a,"quickstart"),_a.forEach(t),yn=l(lo,`
example`),lo.forEach(t),gn=l(at,` which
is a full end-to-end example of many of the features of ZenML.`),at.forEach(t),Qt=h(e),K=a(e,"H2",{class:!0});var uo=s(K);de=a(uo,"A",{id:!0,class:!0,href:!0});var La=s(de);Lt=a(La,"SPAN",{});var Ea=s(Lt);x(Te.$$.fragment,Ea),Ea.forEach(t),La.forEach(t),wn=h(uo),Et=a(uo,"SPAN",{});var ka=s(Et);vn=l(ka,"\u{1F917} Feedback and support"),ka.forEach(t),uo.forEach(t),Xt=h(e),et=a(e,"P",{});var $a=s(et);bn=l($a,`If you are having trouble with your ZenML server on HuggingFace Spaces, you can
view the logs by clicking on the \u201COpen Logs\u201D button at the top of the space.
This will give you more context of what\u2019s happening with your server.`),$a.forEach(t),Kt=h(e),me=a(e,"P",{});var co=s(me);_n=l(co,`If you have suggestions or need specific support for anything else which isn\u2019t
working, please `),Fe=a(co,"A",{href:!0,rel:!0});var Ma=s(Fe);Ln=l(Ma,"join the ZenML Slack community"),Ma.forEach(t),En=l(co,`
and we\u2019ll be happy to help you out!`),co.forEach(t),this.h()},h(){c(d,"name","hf:doc:metadata"),c(d,"content",JSON.stringify(Ca)),c(_,"id","zenml-on-spaces"),c(_,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(_,"href","#zenml-on-spaces"),c(m,"class","relative group"),c(S,"href","https://github.com/zenml-io/zenml"),c(S,"rel","nofollow"),$n(W.src,be="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/hf_spaces_chart.png")||c(W,"src",be),c(W,"alt","ZenML on HuggingFace Spaces -- default deployment"),c(Le,"href","https://docs.zenml.io/"),c(Le,"rel","nofollow"),c(Ee,"href","https://github.com/zenml-io/zenml/tree/main/examples"),c(Ee,"rel","nofollow"),c(ke,"href","https://github.com/zenml-io/zenml-projects"),c(ke,"rel","nofollow"),c($e,"href","https://zenml.io/integrations/huggingface"),c($e,"rel","nofollow"),c(re,"id","deploy-zenml-on-spaces"),c(re,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(re,"href","#deploy-zenml-on-spaces"),c(q,"class","relative group"),$n(it.src,Sn="https://huggingface.co/datasets/huggingface/badges/raw/main/deploy-to-spaces-lg.svg")||c(it,"src",Sn),c(Se,"href","https://huggingface.co/new-space?template=zenml/zenml-template-space"),$n(qe.src,Zn="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/choose_space.png")||c(qe,"src",Zn),c(qe,"alt","Choose the ZenML Docker template"),c(Ze,"href","https://huggingface.co/docs/hub/spaces-config-reference"),c(Ze,"rel","nofollow"),c(ie,"id","connecting-to-your-zenml-server-from-your-local-machine"),c(ie,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(ie,"href","#connecting-to-your-zenml-server-from-your-local-machine"),c(B,"class","relative group"),c(Pe,"href","https://huggingface.co/docs/hub/spaces-embed"),c(Pe,"rel","nofollow"),c(ue,"id","extra-configuration-options"),c(ue,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(ue,"href","#extra-configuration-options"),c(G,"class","relative group"),c(Ie,"href","https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options"),c(Ie,"rel","nofollow"),c(De,"href","https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options"),c(De,"rel","nofollow"),c(Ue,"href","https://huggingface.co/docs/hub/spaces-sdks-docker#secret-management"),c(Ue,"rel","nofollow"),c(he,"id","upgrading-your-zenml-server-on-hf-spaces"),c(he,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(he,"href","#upgrading-your-zenml-server-on-hf-spaces"),c(J,"class","relative group"),c(fe,"id","next-steps"),c(fe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(fe,"href","#next-steps"),c(Q,"class","relative group"),c(Re,"href","https://docs.zenml.io/starter-guide/pipelines"),c(Re,"rel","nofollow"),c(X,"href","https://github.com/zenml-io/zenml/tree/main/examples/quickstart"),c(X,"rel","nofollow"),c(de,"id","feedback-and-support"),c(de,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(de,"href","#feedback-and-support"),c(K,"class","relative group"),c(Fe,"href","https://zenml.io/slack-invite/"),c(Fe,"rel","nofollow")},m(e,r){o(document.head,d),u(e,f,r),u(e,m,r),o(m,_),o(_,k),P($,k,null),o(m,ge),o(m,O),o(O,M),u(e,te,r),u(e,v,r),o(v,S),o(S,we),o(v,ve),u(e,D,r),u(e,U,r),o(U,oe),u(e,b,r),u(e,H,r),o(H,Y),u(e,ne,r),u(e,L,r),o(L,y),o(L,g),o(g,ae),o(L,Ye),u(e,j,r),u(e,V,r),o(V,W),u(e,_e,r),u(e,w,r),o(w,po),o(w,Le),o(Le,ho),o(w,fo),o(w,Ee),o(Ee,mo),o(w,yo),o(w,ke),o(ke,go),o(w,wo),o(w,$e),o($e,vo),o(w,bo),u(e,Mt,r),u(e,q,r),o(q,re),o(re,rt),P(Me,rt,null),o(q,_o),o(q,st),o(st,Lo),u(e,St,r),u(e,je,r),o(je,Eo),u(e,Zt,r),u(e,Se,r),o(Se,it),u(e,xt,r),u(e,Ve,r),o(Ve,ko),u(e,Pt,r),u(e,We,r),o(We,qe),u(e,At,r),u(e,Be,r),o(Be,$o),u(e,zt,r),u(e,se,r),o(se,Mo),o(se,Ze),o(Ze,So),o(se,Zo),u(e,It,r),u(e,Ge,r),o(Ge,xo),u(e,Dt,r),u(e,Je,r),o(Je,Po),u(e,Ut,r),u(e,B,r),o(B,ie),o(ie,lt),P(xe,lt,null),o(B,Ao),o(B,ut),o(ut,zo),u(e,Ht,r),u(e,Qe,r),o(Qe,Io),u(e,Ct,r),P(le,e,r),u(e,Rt,r),u(e,C,r),o(C,Do),o(C,Pe),o(Pe,Uo),o(C,Ho),o(C,ct),o(ct,Co),o(C,Ro),u(e,Tt,r),u(e,Xe,r),o(Xe,To),u(e,Ft,r),P(Ae,e,r),u(e,Nt,r),u(e,Ke,r),o(Ke,Fo),u(e,Ot,r),u(e,G,r),o(G,ue),o(ue,pt),P(ze,pt,null),o(G,No),o(G,ht),o(ht,Oo),u(e,Yt,r),u(e,R,r),o(R,Yo),o(R,ft),o(ft,jo),o(R,Vo),o(R,Ie),o(Ie,Wo),o(R,qo),u(e,jt,r),P(ce,e,r),u(e,Vt,r),u(e,E,r),o(E,Bo),o(E,De),o(De,Go),o(E,Jo),o(E,dt),o(dt,Qo),o(E,Xo),o(E,Ue),o(Ue,Ko),o(E,en),u(e,Wt,r),P(pe,e,r),u(e,qt,r),u(e,J,r),o(J,he),o(he,mt),P(He,mt,null),o(J,tn),o(J,yt),o(yt,on),u(e,Bt,r),u(e,T,r),o(T,nn),o(T,gt),o(gt,an),o(T,rn),o(T,wt),o(wt,sn),o(T,ln),u(e,Gt,r),u(e,Q,r),o(Q,fe),o(fe,vt),P(Ce,vt,null),o(Q,un),o(Q,bt),o(bt,cn),u(e,Jt,r),u(e,F,r),o(F,pn),o(F,Re),o(Re,hn),o(F,fn),o(F,X),o(X,dn),o(X,_t),o(_t,mn),o(X,yn),o(F,gn),u(e,Qt,r),u(e,K,r),o(K,de),o(de,Lt),P(Te,Lt,null),o(K,wn),o(K,Et),o(Et,vn),u(e,Xt,r),u(e,et,r),o(et,bn),u(e,Kt,r),u(e,me,r),o(me,_n),o(me,Fe),o(Fe,Ln),o(me,En),eo=!0},p(e,[r]){const Ne={};r&2&&(Ne.$$scope={dirty:r,ctx:e}),le.$set(Ne);const kt={};r&2&&(kt.$$scope={dirty:r,ctx:e}),ce.$set(kt);const $t={};r&2&&($t.$$scope={dirty:r,ctx:e}),pe.$set($t)},i(e){eo||(A($.$$.fragment,e),A(Me.$$.fragment,e),A(xe.$$.fragment,e),A(le.$$.fragment,e),A(Ae.$$.fragment,e),A(ze.$$.fragment,e),A(ce.$$.fragment,e),A(pe.$$.fragment,e),A(He.$$.fragment,e),A(Ce.$$.fragment,e),A(Te.$$.fragment,e),eo=!0)},o(e){z($.$$.fragment,e),z(Me.$$.fragment,e),z(xe.$$.fragment,e),z(le.$$.fragment,e),z(Ae.$$.fragment,e),z(ze.$$.fragment,e),z(ce.$$.fragment,e),z(pe.$$.fragment,e),z(He.$$.fragment,e),z(Ce.$$.fragment,e),z(Te.$$.fragment,e),eo=!1},d(e){t(d),e&&t(f),e&&t(m),I($),e&&t(te),e&&t(v),e&&t(D),e&&t(U),e&&t(b),e&&t(H),e&&t(ne),e&&t(L),e&&t(j),e&&t(V),e&&t(_e),e&&t(w),e&&t(Mt),e&&t(q),I(Me),e&&t(St),e&&t(je),e&&t(Zt),e&&t(Se),e&&t(xt),e&&t(Ve),e&&t(Pt),e&&t(We),e&&t(At),e&&t(Be),e&&t(zt),e&&t(se),e&&t(It),e&&t(Ge),e&&t(Dt),e&&t(Je),e&&t(Ut),e&&t(B),I(xe),e&&t(Ht),e&&t(Qe),e&&t(Ct),I(le,e),e&&t(Rt),e&&t(C),e&&t(Tt),e&&t(Xe),e&&t(Ft),I(Ae,e),e&&t(Nt),e&&t(Ke),e&&t(Ot),e&&t(G),I(ze),e&&t(Yt),e&&t(R),e&&t(jt),I(ce,e),e&&t(Vt),e&&t(E),e&&t(Wt),I(pe,e),e&&t(qt),e&&t(J),I(He),e&&t(Bt),e&&t(T),e&&t(Gt),e&&t(Q),I(Ce),e&&t(Jt),e&&t(F),e&&t(Qt),e&&t(K),I(Te),e&&t(Xt),e&&t(et),e&&t(Kt),e&&t(me)}}}const Ca={local:"zenml-on-spaces",sections:[{local:"deploy-zenml-on-spaces",title:"\u26A1\uFE0F Deploy ZenML on Spaces"},{local:"connecting-to-your-zenml-server-from-your-local-machine",title:"Connecting to your ZenML Server from your Local Machine"},{local:"extra-configuration-options",title:"Extra Configuration Options"},{local:"upgrading-your-zenml-server-on-hf-spaces",title:"Upgrading your ZenML Server on HF Spaces"},{local:"next-steps",title:"Next Steps"},{local:"feedback-and-support",title:"\u{1F917} Feedback and support"}],title:"ZenML on Spaces"};function Ra(ee){return Aa(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ya extends Sa{constructor(d){super();Za(this,d,Ra,Ha,xa,{})}}export{Ya as default,Ca as metadata};
