import{s as ht,n as Tt,o as rt}from"../chunks/scheduler.b108d059.js";import{S as _t,i as vt,g as p,s as n,r as w,A as Pt,h as u,f as i,c as o,j as Ht,u as y,x as s,k as $t,y as Lt,a as l,v as A,d as G,t as R,w as E}from"../chunks/index.008de539.js";import{H as et,E as Mt}from"../chunks/EditOnGithub.d1c48e3d.js";function bt(it){let c,S,C,k,a,j,f,lt="<code>huggingface_hub</code>库是用于与Hugging Face Hub进行交互的库，Hugging Face Hub是一组基于Git的存储库（模型、数据集或Spaces）。使用 <code>huggingface_hub</code>有两种主要方式来访问Hub。",F,d,nt="第一种方法，即所谓的“基于git”的方法，由<code>Repository</code>类驱动。这种方法使用了一个包装器，它在 <code>git</code>命令的基础上增加了专门与Hub交互的额外函数。第二种选择，称为“基于HTTP”的方法，涉及使用<code>HfApi</code>客户端进行HTTP请求。让我们来看一看每种方法的优缺点。",U,m,z,g,ot="最初，<code>huggingface_hub</code>主要围绕 <code>Repository</code> 类构建。它为常见的 <code>git</code> 命令（如 <code>&quot;git add&quot;</code>、<code>&quot;git commit&quot;</code>、<code>&quot;git push&quot;</code>、<code>&quot;git tag&quot;</code>、<code>&quot;git checkout&quot;</code> 等）提供了 Python 包装器",I,H,pt="该库还可以帮助设置凭据和跟踪大型文件，这些文件通常在机器学习存储库中使用。此外，该库允许您在后台执行其方法，使其在训练期间上传数据很有用。",O,$,ut="使用 <code>Repository</code> 的最大优点是它允许你在本地机器上维护整个存储库的本地副本。这也可能是一个缺点，因为它需要你不断更新和维护这个本地副本。这类似于传统软件开发中，每个开发人员都维护自己的本地副本，并在开发功能时推送更改。但是，在机器学习的上下文中，这可能并不总是必要的，因为用户可能只需要下载推理所需的权重，或将权重从一种格式转换为另一种格式，而无需克隆整个存储库。",B,h,D,T,st="<code>HfApi</code> 被开发为本地 git 存储库的替代方案，因为本地 git 存储库在处理大型模型或数据集时可能会很麻烦。<code>HfApi</code> 提供与基于 git 的方法相同的功能，例如下载和推送文件以及创建分支和标签，但无需本地文件夹来保持同步。",J,r,ct="<code>HfApi</code>除了提供 <code>git</code> 已经提供的功能外，还提供其他功能，例如：",K,_,at="<li>管理存储库</li> <li>使用缓存下载文件以进行有效的重复使用</li> <li>在 Hub 中搜索存储库和元数据</li> <li>访问社区功能，如讨论、PR和评论</li> <li>配置Spaces</li>",N,v,Q,P,ft="总的来说，在大多数情况下，<code>HTTP 方法</code>是使用 huggingface_hub 的推荐方法。但是，在以下几种情况下，维护本地 git 克隆（使用 <code>Repository</code>）可能更有益：",V,L,dt=`如果您在本地机器上训练模型，使用传统的 git 工作流程并定期推送更新可能更有效。<code>Repository</code> 被优化为此类情况，因为它能够在后台运行。
如果您需要手动编辑大型文件，<code>git </code>是最佳选择，因为它只会将文件的差异发送到服务器。使用 <code>HfAPI</code> 客户端，每次编辑都会上传整个文件。请记住，大多数大型文件是二进制文件，因此无法从 git 差异中受益。`,W,M,mt="并非所有 git 命令都通过 <code>HfApi</code> 提供。有些可能永远不会被实现，但我们一直在努力改进并缩小差距。如果您没有看到您的用例被覆盖。",X,b,gt='请在<a href="https://github.com/huggingface/huggingface_hub" rel="nofollow">Github</a>打开一个 issue！我们欢迎反馈，以帮助我们与我们的用户一起构建 🤗 生态系统。',Y,x,Z,q,tt;return a=new et({props:{title:"Git 与 HTTP 范式",local:"git-与-http-范式",headingTag:"h1"}}),m=new et({props:{title:"存储库：基于历史的 Git 方法",local:"存储库基于历史的-git-方法",headingTag:"h2"}}),h=new et({props:{title:"HfApi: 一个功能强大且方便的HTTP客户端",local:"hfapi-一个功能强大且方便的http客户端",headingTag:"h2"}}),v=new et({props:{title:"我应该使用什么？以及何时使用？",local:"我应该使用什么以及何时使用",headingTag:"h2"}}),x=new Mt({props:{source:"https://github.com/huggingface/huggingface_hub/blob/main/docs/source/cn/concepts/git_vs_http.md"}}),{c(){c=p("meta"),S=n(),C=p("p"),k=n(),w(a.$$.fragment),j=n(),f=p("p"),f.innerHTML=lt,F=n(),d=p("p"),d.innerHTML=nt,U=n(),w(m.$$.fragment),z=n(),g=p("p"),g.innerHTML=ot,I=n(),H=p("p"),H.textContent=pt,O=n(),$=p("p"),$.innerHTML=ut,B=n(),w(h.$$.fragment),D=n(),T=p("p"),T.innerHTML=st,J=n(),r=p("p"),r.innerHTML=ct,K=n(),_=p("ul"),_.innerHTML=at,N=n(),w(v.$$.fragment),Q=n(),P=p("p"),P.innerHTML=ft,V=n(),L=p("p"),L.innerHTML=dt,W=n(),M=p("p"),M.innerHTML=mt,X=n(),b=p("p"),b.innerHTML=gt,Y=n(),w(x.$$.fragment),Z=n(),q=p("p"),this.h()},l(t){const e=Pt("svelte-u9bgzb",document.head);c=u(e,"META",{name:!0,content:!0}),e.forEach(i),S=o(t),C=u(t,"P",{}),Ht(C).forEach(i),k=o(t),y(a.$$.fragment,t),j=o(t),f=u(t,"P",{"data-svelte-h":!0}),s(f)!=="svelte-1sg7tkf"&&(f.innerHTML=lt),F=o(t),d=u(t,"P",{"data-svelte-h":!0}),s(d)!=="svelte-7v3o49"&&(d.innerHTML=nt),U=o(t),y(m.$$.fragment,t),z=o(t),g=u(t,"P",{"data-svelte-h":!0}),s(g)!=="svelte-4s6lpf"&&(g.innerHTML=ot),I=o(t),H=u(t,"P",{"data-svelte-h":!0}),s(H)!=="svelte-1le7n87"&&(H.textContent=pt),O=o(t),$=u(t,"P",{"data-svelte-h":!0}),s($)!=="svelte-1fh2wgl"&&($.innerHTML=ut),B=o(t),y(h.$$.fragment,t),D=o(t),T=u(t,"P",{"data-svelte-h":!0}),s(T)!=="svelte-15xbxuy"&&(T.innerHTML=st),J=o(t),r=u(t,"P",{"data-svelte-h":!0}),s(r)!=="svelte-t0icw5"&&(r.innerHTML=ct),K=o(t),_=u(t,"UL",{"data-svelte-h":!0}),s(_)!=="svelte-1tfngkq"&&(_.innerHTML=at),N=o(t),y(v.$$.fragment,t),Q=o(t),P=u(t,"P",{"data-svelte-h":!0}),s(P)!=="svelte-ownqpp"&&(P.innerHTML=ft),V=o(t),L=u(t,"P",{"data-svelte-h":!0}),s(L)!=="svelte-1h3smco"&&(L.innerHTML=dt),W=o(t),M=u(t,"P",{"data-svelte-h":!0}),s(M)!=="svelte-pi33ji"&&(M.innerHTML=mt),X=o(t),b=u(t,"P",{"data-svelte-h":!0}),s(b)!=="svelte-1ae98q2"&&(b.innerHTML=gt),Y=o(t),y(x.$$.fragment,t),Z=o(t),q=u(t,"P",{}),Ht(q).forEach(i),this.h()},h(){$t(c,"name","hf:doc:metadata"),$t(c,"content",xt)},m(t,e){Lt(document.head,c),l(t,S,e),l(t,C,e),l(t,k,e),A(a,t,e),l(t,j,e),l(t,f,e),l(t,F,e),l(t,d,e),l(t,U,e),A(m,t,e),l(t,z,e),l(t,g,e),l(t,I,e),l(t,H,e),l(t,O,e),l(t,$,e),l(t,B,e),A(h,t,e),l(t,D,e),l(t,T,e),l(t,J,e),l(t,r,e),l(t,K,e),l(t,_,e),l(t,N,e),A(v,t,e),l(t,Q,e),l(t,P,e),l(t,V,e),l(t,L,e),l(t,W,e),l(t,M,e),l(t,X,e),l(t,b,e),l(t,Y,e),A(x,t,e),l(t,Z,e),l(t,q,e),tt=!0},p:Tt,i(t){tt||(G(a.$$.fragment,t),G(m.$$.fragment,t),G(h.$$.fragment,t),G(v.$$.fragment,t),G(x.$$.fragment,t),tt=!0)},o(t){R(a.$$.fragment,t),R(m.$$.fragment,t),R(h.$$.fragment,t),R(v.$$.fragment,t),R(x.$$.fragment,t),tt=!1},d(t){t&&(i(S),i(C),i(k),i(j),i(f),i(F),i(d),i(U),i(z),i(g),i(I),i(H),i(O),i($),i(B),i(D),i(T),i(J),i(r),i(K),i(_),i(N),i(Q),i(P),i(V),i(L),i(W),i(M),i(X),i(b),i(Y),i(Z),i(q)),i(c),E(a,t),E(m,t),E(h,t),E(v,t),E(x,t)}}}const xt='{"title":"Git 与 HTTP 范式","local":"git-与-http-范式","sections":[{"title":"存储库：基于历史的 Git 方法","local":"存储库基于历史的-git-方法","sections":[],"depth":2},{"title":"HfApi: 一个功能强大且方便的HTTP客户端","local":"hfapi-一个功能强大且方便的http客户端","sections":[],"depth":2},{"title":"我应该使用什么？以及何时使用？","local":"我应该使用什么以及何时使用","sections":[],"depth":2}],"depth":1}';function Ct(it){return rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class At extends _t{constructor(c){super(),vt(this,c,Ct,bt,ht,{})}}export{At as component};
