import{s as le,o as _e,n as me}from"../chunks/scheduler.6062bdaf.js";import{S as de,i as $e,g as f,s as p,r as x,A as He,h as o,f as i,c as g,j as he,u as A,x as u,k as se,y as be,a,v as w,d as C,t as q,w as E}from"../chunks/index.4bca734e.js";import{T as Te}from"../chunks/Tip.b9ac1f03.js";import{H as ee,E as ke}from"../chunks/EditOnGithub.74ab2baa.js";function ve(S){let n,h='<a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a>는 지원이 중단될 예정이므로 HTTP 기반 대안을 사용하는 것을 권장합니다. 기존 코드에서 널리 사용되기 때문에 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a>의 완전한 제거는 릴리스 <code>v1.0</code>에서 이루어질 예정입니다.';return{c(){n=f("p"),n.innerHTML=h},l(r){n=o(r,"P",{"data-svelte-h":!0}),u(n)!=="svelte-1g8rxvr"&&(n.innerHTML=h)},m(r,R){a(r,n,R)},p:me,d(r){r&&i(n)}}}function ye(S){let n,h,r,R,s,j,l,te=`<code>huggingface_hub</code> 라이브러리는 git 기반의 저장소(Models, Datasets 또는 Spaces)로 구성된 Hugging Face Hub과 상호 작용하기 위한 라이브러리입니다.
<code>huggingface_hub</code>를 사용하여 Hub에 접근하는 방법은 크게 두 가지입니다.`,z,_,ie=`첫 번째 접근 방식인 소위 “git 기반” 접근 방식은 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a> 클래스가 주도합니다.
이 방법은 허브와 상호 작용하도록 특별히 설계된 추가 기능이 있는 <code>git</code> 명령에 랩퍼를 사용합니다.
두 번째 방법은 “HTTP 기반” 접근 방식이며, <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a> 클라이언트를 사용하여 HTTP 요청을 수행합니다.
각 방법의 장단점을 살펴보겠습니다.`,F,m,D,d,ae=`먼저, <code>huggingface_hub</code>는 주로 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a> 클래스를 기반으로 구축되었습니다.
이 클래스는 <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> 등과 같은 일반적인 <code>git</code> 명령에 대한 Python 랩퍼를 제공합니다.`,O,$,pe=`이 라이브러리는 머신러닝 저장소에서 자주 사용되는 큰 파일을 추적하고 자격 증명을 설정하는 데 도움이 됩니다.
또한, 이 라이브러리는 백그라운드에서 메소드를 실행할 수 있어, 훈련 중에 데이터를 업로드할 때 유용합니다.`,U,H,ge=`로컬 머신에 전체 저장소의 로컬 복사본을 유지할 수 있다는 것은 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a>를 사용하는 가장 큰 장점입니다.
하지만 동시에 로컬 복사본을 지속적으로 업데이트하고 유지해야 한다는 단점이 될 수도 있습니다.
이는 각 개발자가 자체 로컬 복사본을 유지하고 기능을 개발할 때 변경 사항을 push하는 전통적인 소프트웨어 개발과 유사합니다.
그러나 머신러닝의 경우, 사용자가 전체 저장소를 복제할 필요 없이 추론을 위해 가중치만 다운로드하거나 가중치를 한 형식에서 다른 형식으로 변환하기만 하면 되기 때문에 이런 방식이 항상 필요한 것은 아닙니다.`,B,c,I,b,J,T,ne=`<a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a> 클래스는 특히 큰 모델이나 데이터셋을 처리할 때 유지하기 어려운 로컬 git 저장소의 대안으로 개발되었습니다.
<a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a> 클래스는 파일 다운로드 및 push, 브랜치 및 태그 생성과 같은 git 기반 접근 방식과 동일한 기능을 제공하지만, 동기화 상태를 유지해야 하는 로컬 폴더가 필요하지 않습니다.`,K,k,fe=`<a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a> 클래스는 <code>git</code>이 제공하는 기능 외에도 추가적인 기능을 제공합니다.
저장소를 관리하고, 효율적인 재사용을 위해 캐싱을 사용하여 파일을 다운로드하고, Hub에서 저장소 및 메타데이터를 검색하고, 토론, PR 및 코멘트와 같은 커뮤니티 기능에 접근하고, Spaces 하드웨어 및 시크릿을 구성할 수 있습니다.`,N,v,Q,y,oe=`전반적으로, <strong>HTTP 기반 접근 방식은 모든 경우에</strong> <code>huggingface_hub</code>를 사용하는 것이 좋습니다.
<a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a>를 사용하면 변경 사항을 pull하고 push하고, PR, 태그 및 브랜치로 작업하고, 토론과 상호 작용하는 등의 작업을 할 수 있습니다.
<code>0.16</code> 릴리스부터는 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a> 클래스의 마지막 주요 장점이었던 http 기반 메소드도 백그라운드에서 실행할 수 있습니다.`,V,P,re=`그러나 모든 git 명령이 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a>를 통해 사용 가능한 것은 아닙니다. 일부는 구현되지 않을 수도 있지만, 저희는 항상 개선하고 격차를 줄이기 위해 노력하고 있습니다.
사용 사례에 해당되지 않는 경우, <a href="https://github.com/huggingface/huggingface_hub" rel="nofollow">Github에서 이슈</a>를 개설해 주세요!
사용자와 함께, 사용자를 위한 🤗 생태계를 구축하는 데 도움이 되는 피드백을 환영합니다.`,W,M,ue=`git 기반 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/repository#huggingface_hub.Repository">Repository</a>보다 http 기반 <a href="/docs/huggingface_hub/pr_2373/ko/package_reference/hf_api#huggingface_hub.HfApi">HfApi</a>를 선호한다고 해서 Hugging Face Hub에서 git 버전 관리가 바로 사라지는 것은 아닙니다.
워크플로우 상 합당하다면 언제든 로컬에서 <code>git</code> 명령을 사용할 수 있습니다.`,X,L,Y,G,Z;return s=new ee({props:{title:"Git 대 HTTP 패러다임",local:"git-대-http-패러다임",headingTag:"h1"}}),m=new ee({props:{title:"Repository: 역사적인 Git 기반 접근 방식",local:"repository-역사적인-git-기반-접근-방식",headingTag:"h2"}}),c=new Te({props:{warning:!0,$$slots:{default:[ve]},$$scope:{ctx:S}}}),b=new ee({props:{title:"HfApi: 유연하고 편리한 HTTP 클라이언트",local:"hfapi-유연하고-편리한-http-클라이언트",headingTag:"h2"}}),v=new ee({props:{title:"무엇을 사용해야 하나요? 언제 사용하나요?",local:"무엇을-사용해야-하나요-언제-사용하나요",headingTag:"h2"}}),L=new ke({props:{source:"https://github.com/huggingface/huggingface_hub/blob/main/docs/source/ko/concepts/git_vs_http.md"}}),{c(){n=f("meta"),h=p(),r=f("p"),R=p(),x(s.$$.fragment),j=p(),l=f("p"),l.innerHTML=te,z=p(),_=f("p"),_.innerHTML=ie,F=p(),x(m.$$.fragment),D=p(),d=f("p"),d.innerHTML=ae,O=p(),$=f("p"),$.textContent=pe,U=p(),H=f("p"),H.innerHTML=ge,B=p(),x(c.$$.fragment),I=p(),x(b.$$.fragment),J=p(),T=f("p"),T.innerHTML=ne,K=p(),k=f("p"),k.innerHTML=fe,N=p(),x(v.$$.fragment),Q=p(),y=f("p"),y.innerHTML=oe,V=p(),P=f("p"),P.innerHTML=re,W=p(),M=f("p"),M.innerHTML=ue,X=p(),x(L.$$.fragment),Y=p(),G=f("p"),this.h()},l(e){const t=He("svelte-u9bgzb",document.head);n=o(t,"META",{name:!0,content:!0}),t.forEach(i),h=g(e),r=o(e,"P",{}),he(r).forEach(i),R=g(e),A(s.$$.fragment,e),j=g(e),l=o(e,"P",{"data-svelte-h":!0}),u(l)!=="svelte-piflqw"&&(l.innerHTML=te),z=g(e),_=o(e,"P",{"data-svelte-h":!0}),u(_)!=="svelte-1gdpu81"&&(_.innerHTML=ie),F=g(e),A(m.$$.fragment,e),D=g(e),d=o(e,"P",{"data-svelte-h":!0}),u(d)!=="svelte-9eznuq"&&(d.innerHTML=ae),O=g(e),$=o(e,"P",{"data-svelte-h":!0}),u($)!=="svelte-14e9kdh"&&($.textContent=pe),U=g(e),H=o(e,"P",{"data-svelte-h":!0}),u(H)!=="svelte-v5a7ft"&&(H.innerHTML=ge),B=g(e),A(c.$$.fragment,e),I=g(e),A(b.$$.fragment,e),J=g(e),T=o(e,"P",{"data-svelte-h":!0}),u(T)!=="svelte-5lc016"&&(T.innerHTML=ne),K=g(e),k=o(e,"P",{"data-svelte-h":!0}),u(k)!=="svelte-1ddm3l9"&&(k.innerHTML=fe),N=g(e),A(v.$$.fragment,e),Q=g(e),y=o(e,"P",{"data-svelte-h":!0}),u(y)!=="svelte-b582i3"&&(y.innerHTML=oe),V=g(e),P=o(e,"P",{"data-svelte-h":!0}),u(P)!=="svelte-147h9jh"&&(P.innerHTML=re),W=g(e),M=o(e,"P",{"data-svelte-h":!0}),u(M)!=="svelte-13gyhhu"&&(M.innerHTML=ue),X=g(e),A(L.$$.fragment,e),Y=g(e),G=o(e,"P",{}),he(G).forEach(i),this.h()},h(){se(n,"name","hf:doc:metadata"),se(n,"content",Pe)},m(e,t){be(document.head,n),a(e,h,t),a(e,r,t),a(e,R,t),w(s,e,t),a(e,j,t),a(e,l,t),a(e,z,t),a(e,_,t),a(e,F,t),w(m,e,t),a(e,D,t),a(e,d,t),a(e,O,t),a(e,$,t),a(e,U,t),a(e,H,t),a(e,B,t),w(c,e,t),a(e,I,t),w(b,e,t),a(e,J,t),a(e,T,t),a(e,K,t),a(e,k,t),a(e,N,t),w(v,e,t),a(e,Q,t),a(e,y,t),a(e,V,t),a(e,P,t),a(e,W,t),a(e,M,t),a(e,X,t),w(L,e,t),a(e,Y,t),a(e,G,t),Z=!0},p(e,[t]){const ce={};t&2&&(ce.$$scope={dirty:t,ctx:e}),c.$set(ce)},i(e){Z||(C(s.$$.fragment,e),C(m.$$.fragment,e),C(c.$$.fragment,e),C(b.$$.fragment,e),C(v.$$.fragment,e),C(L.$$.fragment,e),Z=!0)},o(e){q(s.$$.fragment,e),q(m.$$.fragment,e),q(c.$$.fragment,e),q(b.$$.fragment,e),q(v.$$.fragment,e),q(L.$$.fragment,e),Z=!1},d(e){e&&(i(h),i(r),i(R),i(j),i(l),i(z),i(_),i(F),i(D),i(d),i(O),i($),i(U),i(H),i(B),i(I),i(J),i(T),i(K),i(k),i(N),i(Q),i(y),i(V),i(P),i(W),i(M),i(X),i(Y),i(G)),i(n),E(s,e),E(m,e),E(c,e),E(b,e),E(v,e),E(L,e)}}}const Pe='{"title":"Git 대 HTTP 패러다임","local":"git-대-http-패러다임","sections":[{"title":"Repository: 역사적인 Git 기반 접근 방식","local":"repository-역사적인-git-기반-접근-방식","sections":[],"depth":2},{"title":"HfApi: 유연하고 편리한 HTTP 클라이언트","local":"hfapi-유연하고-편리한-http-클라이언트","sections":[],"depth":2},{"title":"무엇을 사용해야 하나요? 언제 사용하나요?","local":"무엇을-사용해야-하나요-언제-사용하나요","sections":[],"depth":2}],"depth":1}';function Me(S){return _e(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class we extends de{constructor(n){super(),$e(this,n,Me,ye,le,{})}}export{we as component};
