import{s as Je,n as ke,o as He}from"../chunks/scheduler.bdbef820.js";import{S as Xe,i as Be,g as s,s as n,r as m,A as Ie,h as p,f as l,c as a,j as Ze,u as f,x as o,k as We,y as Ee,a as i,v as u,d,t as g,w as c}from"../chunks/index.33f81d56.js";import{C as Ue}from"../chunks/CodeBlock.3bad7fc9.js";import{H as F,E as Pe}from"../chunks/index.9edc4842.js";function Fe(ge){let r,S,E,V,h,j,T,ce='GGUF 파일 형식은 <a href="https://github.com/ggerganov/ggml" rel="nofollow">GGML</a>과 그에 의존하는 다른 라이브러리, 예를 들어 매우 인기 있는 <a href="https://github.com/ggerganov/llama.cpp" rel="nofollow">llama.cpp</a>이나 <a href="https://github.com/ggerganov/whisper.cpp" rel="nofollow">whisper.cpp</a>에서 추론을 위한 모델을 저장하는데 사용됩니다.',q,_,he='이 파일 형식은 <a href="https://huggingface.co/docs/hub/en/gguf" rel="nofollow">Hugging Face Hub</a>에서 지원되며, 파일 내의 텐서와 메타데이터를 신속하게 검사할 수 있는 기능을 제공합니다.',Y,$,Te='이 형식은 “단일 파일 형식(single-file-format)“으로 설계되었으며, 하나의 파일에 설정 속성, 토크나이저 어휘, 기타 속성뿐만 아니라 모델에서 로드되는 모든 텐서가 포함됩니다. 이 파일들은 파일의 양자화 유형에 따라 다른 형식으로 제공됩니다. 다양한 양자화 유형에 대한 간략한 설명은 <a href="https://huggingface.co/docs/hub/en/gguf#quantization-types" rel="nofollow">여기</a>에서 확인할 수 있습니다.',z,M,R,v,_e="<code>transformers</code> 내에서 <code>gguf</code> 파일을 로드할 수 있는 기능을 추가하여 GGUF 모델의 추가 학습/미세 조정을 제공한 후 <code>ggml</code> 생태계에서 다시 사용할 수 있도록 <code>gguf</code> 파일로 변환하는 기능을 제공합니다. 모델을 로드할 때 먼저 FP32로 역양자화한 후, PyTorch에서 사용할 수 있도록 가중치를 로드합니다.",N,b,$e=`<p>[!NOTE]
지원은 아직 초기 단계에 있으며, 다양한 양자화 유형과 모델 아키텍처에 대해 이를 강화하기 위한 기여를 환영합니다.</p>`,K,w,Me="현재 지원되는 모델 아키텍처와 양자화 유형은 다음과 같습니다:",A,y,O,x,ve="초기에 지원되는 양자화 유형은 Hub에서 공유된 인기 있는 양자화 파일에 따라 결정되었습니다.",D,C,be="<li>F32</li> <li>F16</li> <li>BF16</li> <li>Q4_0</li> <li>Q4_1</li> <li>Q5_0</li> <li>Q5_1</li> <li>Q8_0</li> <li>Q2_K</li> <li>Q3_K</li> <li>Q4_K</li> <li>Q5_K</li> <li>Q6_K</li> <li>IQ1_S</li> <li>IQ1_M</li> <li>IQ2_XXS</li> <li>IQ2_XS</li> <li>IQ2_S</li> <li>IQ3_XXS</li> <li>IQ3_S</li> <li>IQ4_XS</li> <li>IQ4_NL</li>",ee,L,we=`<p>[!NOTE]
GGUF 역양자화를 지원하려면 <code>gguf&gt;=0.10.0</code> 설치가 필요합니다.</p>`,te,G,le,Q,ye="현재 지원되는 모델 아키텍처는 Hub에서 매우 인기가 많은 아키텍처들로 제한되어 있습니다:",ie,Z,xe="<li>LLaMa</li> <li>Mistral</li> <li>Qwen2</li> <li>Qwen2Moe</li> <li>Phi3</li> <li>Bloom</li>",ne,W,ae,U,Ce="<code>transformers</code>에서 <code>gguf</code> 파일을 로드하려면 <code>from_pretrained</code> 메소드에 <code>gguf_file</code> 인수를 지정해야 합니다. 동일한 파일에서 토크나이저와 모델을 로드하는 방법은 다음과 같습니다:",se,J,pe,k,Le="이제 PyTorch 생태계에서 모델의 양자화되지 않은 전체 버전에 접근할 수 있으며, 다른 여러 도구들과 결합하여 사용할 수 있습니다.",oe,H,Ge='<code>gguf</code> 파일로 다시 변환하려면 llama.cpp의 <a href="https://github.com/ggerganov/llama.cpp/blob/master/convert_hf_to_gguf.py" rel="nofollow"><code>convert-hf-to-gguf.py</code></a>를 사용하는 것을 권장합니다.',re,X,Qe="위의 스크립트를 완료하여 모델을 저장하고 다시 <code>gguf</code>로 내보내는 방법은 다음과 같습니다:",me,B,fe,I,ue,P,de;return h=new F({props:{title:"GGUF와 Transformers의 상호작용",local:"gguf-and-interaction-with-transformers",headingTag:"h1"}}),M=new F({props:{title:"Transformers 내 지원",local:"support-within-transformers",headingTag:"h2"}}),y=new F({props:{title:"지원되는 양자화 유형",local:"supported-quantization-types",headingTag:"h3"}}),G=new F({props:{title:"지원되는 모델 아키텍처",local:"supported-model-architectures",headingTag:"h3"}}),W=new F({props:{title:"사용 예시",local:"example-usage",headingTag:"h2"}}),J=new Ue({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTSUwQSUwQW1vZGVsX2lkJTIwJTNEJTIwJTIyVGhlQmxva2UlMkZUaW55TGxhbWEtMS4xQi1DaGF0LXYxLjAtR0dVRiUyMiUwQWZpbGVuYW1lJTIwJTNEJTIwJTIydGlueWxsYW1hLTEuMWItY2hhdC12MS4wLlE2X0suZ2d1ZiUyMiUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkJTJDJTIwZ2d1Zl9maWxlJTNEZmlsZW5hbWUpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQlMkMlMjBnZ3VmX2ZpbGUlM0RmaWxlbmFtZSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForCausalLM

model_id = <span class="hljs-string">&quot;TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF&quot;</span>
filename = <span class="hljs-string">&quot;tinyllama-1.1b-chat-v1.0.Q6_K.gguf&quot;</span>

tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)`,wrap:!1}}),B=new Ue({props:{code:"dG9rZW5pemVyLnNhdmVfcHJldHJhaW5lZCgnZGlyZWN0b3J5JyklMEFtb2RlbC5zYXZlX3ByZXRyYWluZWQoJ2RpcmVjdG9yeScpJTBBJTBBIXB5dGhvbiUyMCUyNCU3QnBhdGhfdG9fbGxhbWFfY3BwJTdEJTJGY29udmVydC1oZi10by1nZ3VmLnB5JTIwJTI0JTdCZGlyZWN0b3J5JTdE",highlighted:`tokenizer.save_pretrained(<span class="hljs-string">&#x27;directory&#x27;</span>)
model.save_pretrained(<span class="hljs-string">&#x27;directory&#x27;</span>)

!python \${path_to_llama_cpp}/convert-hf-to-gguf.py \${directory}`,wrap:!1}}),I=new Pe({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ko/gguf.md"}}),{c(){r=s("meta"),S=n(),E=s("p"),V=n(),m(h.$$.fragment),j=n(),T=s("p"),T.innerHTML=ce,q=n(),_=s("p"),_.innerHTML=he,Y=n(),$=s("p"),$.innerHTML=Te,z=n(),m(M.$$.fragment),R=n(),v=s("p"),v.innerHTML=_e,N=n(),b=s("blockquote"),b.innerHTML=$e,K=n(),w=s("p"),w.textContent=Me,A=n(),m(y.$$.fragment),O=n(),x=s("p"),x.textContent=ve,D=n(),C=s("ul"),C.innerHTML=be,ee=n(),L=s("blockquote"),L.innerHTML=we,te=n(),m(G.$$.fragment),le=n(),Q=s("p"),Q.textContent=ye,ie=n(),Z=s("ul"),Z.innerHTML=xe,ne=n(),m(W.$$.fragment),ae=n(),U=s("p"),U.innerHTML=Ce,se=n(),m(J.$$.fragment),pe=n(),k=s("p"),k.textContent=Le,oe=n(),H=s("p"),H.innerHTML=Ge,re=n(),X=s("p"),X.innerHTML=Qe,me=n(),m(B.$$.fragment),fe=n(),m(I.$$.fragment),ue=n(),P=s("p"),this.h()},l(e){const t=Ie("svelte-u9bgzb",document.head);r=p(t,"META",{name:!0,content:!0}),t.forEach(l),S=a(e),E=p(e,"P",{}),Ze(E).forEach(l),V=a(e),f(h.$$.fragment,e),j=a(e),T=p(e,"P",{"data-svelte-h":!0}),o(T)!=="svelte-11f2wai"&&(T.innerHTML=ce),q=a(e),_=p(e,"P",{"data-svelte-h":!0}),o(_)!=="svelte-19nl15r"&&(_.innerHTML=he),Y=a(e),$=p(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-2q169p"&&($.innerHTML=Te),z=a(e),f(M.$$.fragment,e),R=a(e),v=p(e,"P",{"data-svelte-h":!0}),o(v)!=="svelte-rt99ms"&&(v.innerHTML=_e),N=a(e),b=p(e,"BLOCKQUOTE",{"data-svelte-h":!0}),o(b)!=="svelte-1itg8a0"&&(b.innerHTML=$e),K=a(e),w=p(e,"P",{"data-svelte-h":!0}),o(w)!=="svelte-1hwmv9b"&&(w.textContent=Me),A=a(e),f(y.$$.fragment,e),O=a(e),x=p(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-1irch4b"&&(x.textContent=ve),D=a(e),C=p(e,"UL",{"data-svelte-h":!0}),o(C)!=="svelte-1f29qgp"&&(C.innerHTML=be),ee=a(e),L=p(e,"BLOCKQUOTE",{"data-svelte-h":!0}),o(L)!=="svelte-27l9s6"&&(L.innerHTML=we),te=a(e),f(G.$$.fragment,e),le=a(e),Q=p(e,"P",{"data-svelte-h":!0}),o(Q)!=="svelte-knydm"&&(Q.textContent=ye),ie=a(e),Z=p(e,"UL",{"data-svelte-h":!0}),o(Z)!=="svelte-gmjjmd"&&(Z.innerHTML=xe),ne=a(e),f(W.$$.fragment,e),ae=a(e),U=p(e,"P",{"data-svelte-h":!0}),o(U)!=="svelte-ha7vjv"&&(U.innerHTML=Ce),se=a(e),f(J.$$.fragment,e),pe=a(e),k=p(e,"P",{"data-svelte-h":!0}),o(k)!=="svelte-55k75b"&&(k.textContent=Le),oe=a(e),H=p(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-17lolal"&&(H.innerHTML=Ge),re=a(e),X=p(e,"P",{"data-svelte-h":!0}),o(X)!=="svelte-1ppx0pk"&&(X.innerHTML=Qe),me=a(e),f(B.$$.fragment,e),fe=a(e),f(I.$$.fragment,e),ue=a(e),P=p(e,"P",{}),Ze(P).forEach(l),this.h()},h(){We(r,"name","hf:doc:metadata"),We(r,"content",Se)},m(e,t){Ee(document.head,r),i(e,S,t),i(e,E,t),i(e,V,t),u(h,e,t),i(e,j,t),i(e,T,t),i(e,q,t),i(e,_,t),i(e,Y,t),i(e,$,t),i(e,z,t),u(M,e,t),i(e,R,t),i(e,v,t),i(e,N,t),i(e,b,t),i(e,K,t),i(e,w,t),i(e,A,t),u(y,e,t),i(e,O,t),i(e,x,t),i(e,D,t),i(e,C,t),i(e,ee,t),i(e,L,t),i(e,te,t),u(G,e,t),i(e,le,t),i(e,Q,t),i(e,ie,t),i(e,Z,t),i(e,ne,t),u(W,e,t),i(e,ae,t),i(e,U,t),i(e,se,t),u(J,e,t),i(e,pe,t),i(e,k,t),i(e,oe,t),i(e,H,t),i(e,re,t),i(e,X,t),i(e,me,t),u(B,e,t),i(e,fe,t),u(I,e,t),i(e,ue,t),i(e,P,t),de=!0},p:ke,i(e){de||(d(h.$$.fragment,e),d(M.$$.fragment,e),d(y.$$.fragment,e),d(G.$$.fragment,e),d(W.$$.fragment,e),d(J.$$.fragment,e),d(B.$$.fragment,e),d(I.$$.fragment,e),de=!0)},o(e){g(h.$$.fragment,e),g(M.$$.fragment,e),g(y.$$.fragment,e),g(G.$$.fragment,e),g(W.$$.fragment,e),g(J.$$.fragment,e),g(B.$$.fragment,e),g(I.$$.fragment,e),de=!1},d(e){e&&(l(S),l(E),l(V),l(j),l(T),l(q),l(_),l(Y),l($),l(z),l(R),l(v),l(N),l(b),l(K),l(w),l(A),l(O),l(x),l(D),l(C),l(ee),l(L),l(te),l(le),l(Q),l(ie),l(Z),l(ne),l(ae),l(U),l(se),l(pe),l(k),l(oe),l(H),l(re),l(X),l(me),l(fe),l(ue),l(P)),l(r),c(h,e),c(M,e),c(y,e),c(G,e),c(W,e),c(J,e),c(B,e),c(I,e)}}}const Se='{"title":"GGUF와 Transformers의 상호작용","local":"gguf-and-interaction-with-transformers","sections":[{"title":"Transformers 내 지원","local":"support-within-transformers","sections":[{"title":"지원되는 양자화 유형","local":"supported-quantization-types","sections":[],"depth":3},{"title":"지원되는 모델 아키텍처","local":"supported-model-architectures","sections":[],"depth":3}],"depth":2},{"title":"사용 예시","local":"example-usage","sections":[],"depth":2}],"depth":1}';function Ve(ge){return He(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Re extends Xe{constructor(r){super(),Be(this,r,Ve,Fe,Je,{})}}export{Re as component};
