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