import{s as Le,n as ze,o as Ie}from"../chunks/scheduler.e3739aa0.js";import{S as Ne,i as Re,g as i,s as n,r as m,E as He,h as o,f as l,c as a,j as de,u,x as f,k as Pe,y as r,a as s,v as d,d as M,t as y,w as h}from"../chunks/index.13f5b837.js";import{C as S}from"../chunks/CodeBlock.de02009a.js";import{H as Te,E as Ve}from"../chunks/EditOnGithub.72bac8d8.js";function Se(ge){let $,E,Q,Y,T,q,g,Ze='<a href="https://github.com/huggingface/safetensors" rel="nofollow">safetensors</a>는 텐서를 저장하고 로드하기 위한 안전하고 빠른 파일 형식입니다. 일반적으로 PyTorch 모델 가중치는 Python의 <a href="https://docs.python.org/3/library/pickle.html" rel="nofollow"><code>pickle</code></a> 유틸리티를 사용하여 <code>.bin</code> 파일에 저장되거나 <code>피클</code>됩니다. 그러나 <code>피클</code>은 안전하지 않으며 피클된 파일에는 실행될 수 있는 악성 코드가 포함될 수 있습니다. 세이프텐서는 <code>피클</code>의 안전한 대안으로 모델 가중치를 공유하는 데 이상적입니다.',F,Z,we="이 가이드에서는 <code>.safetensor</code> 파일을 로드하는 방법과 다른 형식으로 저장된 안정적 확산 모델 가중치를 <code>.safetensor</code>로 변환하는 방법을 보여드리겠습니다. 시작하기 전에 세이프텐서가 설치되어 있는지 확인하세요:",D,w,A,v,ve='[‘runwayml/stable-diffusion-v1-5`] (<a href="https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main" rel="nofollow">https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main</a>) 리포지토리를 보면 <code>text_encoder</code>, <code>unet</code> 및 <code>vae</code> 하위 폴더에 가중치가 <code>.safetensors</code> 형식으로 저장되어 있는 것을 볼 수 있습니다. 기본적으로 🤗 디퓨저는 모델 저장소에서 사용할 수 있는 경우 해당 하위 폴더에서 이러한 ‘.safetensors` 파일을 자동으로 로드합니다.',O,G,Ge="보다 명시적인 제어를 위해 선택적으로 <code>사용_세이프텐서=True</code>를 설정할 수 있습니다(<code>세이프텐서</code>가 설치되지 않은 경우 설치하라는 오류 메시지가 표시됨):",K,J,ee,B,Je="그러나 모델 가중치가 위의 예시처럼 반드시 별도의 하위 폴더에 저장되는 것은 아닙니다. 모든 가중치가 하나의 ‘.safetensors<code>파일에 저장되는 경우도 있습니다. 이 경우 가중치가 Stable Diffusion 가중치인 경우</code>~diffusers.loaders.FromCkptMixin.from_ckpt` 메서드를 사용하여 파일을 직접 로드할 수 있습니다:",te,k,le,U,se,j,Be='허브의 모든 가중치를 ‘.safetensors<code>형식으로 사용할 수 있는 것은 아니며, &#39;.bin</code>으로 저장된 가중치가 있을 수 있습니다. 이 경우 <a href="https://huggingface.co/spaces/diffusers/convert" rel="nofollow">Convert Space</a>을 사용하여 가중치를 ‘.safetensors’로 변환하세요. Convert Space는 피클된 가중치를 다운로드하여 변환한 후 풀 리퀘스트를 열어 허브에 새로 변환된 <code>.safetensors</code> 파일을 업로드합니다. 이렇게 하면 피클된 파일에 악성 코드가 포함되어 있는 경우, 안전하지 않은 파일과 의심스러운 피클 가져오기를 탐지하는 <a href="https://huggingface.co/docs/hub/security-pickle#hubs-security-scanner" rel="nofollow">보안 스캐너</a>가 있는 허브로 업로드됩니다. - 개별 컴퓨터가 아닌.',ne,W,ke='개정<code>매개변수에 풀 리퀘스트에 대한 참조를 지정하여 새로운 &#39;.safetensors</code> 가중치가 적용된 모델을 사용할 수 있습니다(허브의 <a href="https://huggingface.co/spaces/diffusers/check_pr" rel="nofollow">Check PR</a> 공간에서 테스트할 수도 있음)(예: <code>refs/pr/22</code>):',ae,_,ie,x,oe,C,Ue="세이프티 센서를 사용하는 데에는 여러 가지 이유가 있습니다:",pe,b,N,je="<p>세이프텐서를 사용하는 가장 큰 이유는 안전입니다.오픈 소스 및 모델 배포가 증가함에 따라 다운로드한 모델 가중치에 악성 코드가 포함되어 있지 않다는 것을 신뢰할 수 있는 것이 중요해졌습니다.세이프센서의 현재 헤더 크기는 매우 큰 JSON 파일을 구문 분석하지 못하게 합니다.</p>",Me,p,R,We="모델 전환 간의 로딩 속도는 텐서의 제로 카피를 수행하는 세이프텐서를 사용해야 하는 또 다른 이유입니다. 가중치를 CPU(기본값)로 로드하는 경우 ‘피클’에 비해 특히 빠르며, 가중치를 GPU로 직접 로드하는 경우에도 빠르지는 않더라도 비슷하게 빠릅니다. 모델이 이미 로드된 경우에만 성능 차이를 느낄 수 있으며, 가중치를 다운로드하거나 모델을 처음 로드하는 경우에는 성능 차이를 느끼지 못할 것입니다.",ye,H,_e="전체 파이프라인을 로드하는 데 걸리는 시간입니다:",he,P,$e,V,xe="하지만 실제로 500MB의 모델 가중치를 로드하는 데 걸리는 시간은 얼마 되지 않습니다:",be,L,fe,z,Ce='지연 로딩은 세이프텐서에서도 지원되며, 이는 분산 설정에서 일부 텐서만 로드하는 데 유용합니다. 이 형식을 사용하면 <a href="https://huggingface.co/bigscience/bloom" rel="nofollow">BLOOM</a> 모델을 일반 PyTorch 가중치를 사용하여 10분이 걸리던 것을 8개의 GPU에서 45초 만에 로드할 수 있습니다.',re,I,ce,X,me;return T=new Te({props:{title:"세이프텐서 로드",local:"세이프텐서-로드",headingTag:"h1"}}),w=new S({props:{code:"IXBpcCUyMGluc3RhbGwlMjBzYWZldGVuc29ycw==",highlighted:"!pip install safetensors",wrap:!1}}),J=new S({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIycnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMkMlMjB1c2Vfc2FmZXRlbnNvcnMlM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;runwayml/stable-diffusion-v1-5&quot;</span>, use_safetensors=<span class="hljs-literal">True</span>)`,wrap:!1}}),k=new S({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25QaXBlbGluZS5mcm9tX2NrcHQoJTBBJTIwJTIwJTIwJTIwJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRldhcnJpb3JNYW1hNzc3JTJGT3JhbmdlTWl4cyUyRmJsb2IlMkZtYWluJTJGTW9kZWxzJTJGQWJ5c3NPcmFuZ2VNaXglMkZBYnlzc09yYW5nZU1peC5zYWZldGVuc29ycyUyMiUwQSk=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionPipeline

pipeline = StableDiffusionPipeline.from_ckpt(
    <span class="hljs-string">&quot;https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors&quot;</span>
)`,wrap:!1}}),U=new Te({props:{title:"세이프텐서로 변환",local:"세이프텐서로-변환",headingTag:"h2"}}),_=new S({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLTItMSUyMiUyQyUyMHJldmlzaW9uJTNEJTIycmVmcyUyRnByJTJGMjIlMjIp",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-2-1&quot;</span>, revision=<span class="hljs-string">&quot;refs/pr/22&quot;</span>)`,wrap:!1}}),x=new Te({props:{title:"세이프센서를 사용하는 이유는 무엇인가요?",local:"세이프센서를-사용하는-이유는-무엇인가요",headingTag:"h2"}}),P=new S({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLTItMSUyMiklMEElMjJMb2FkZWQlMjBpbiUyMHNhZmV0ZW5zb3JzJTIwMCUzQTAwJTNBMDIuMDMzNjU4JTIyJTBBJTIyTG9hZGVkJTIwaW4lMjBQeVRvcmNoJTIwMCUzQTAwJTNBMDIuNjYzMzc5JTIy",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionPipeline

pipeline = StableDiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-2-1&quot;</span>)
<span class="hljs-string">&quot;Loaded in safetensors 0:00:02.033658&quot;</span>
<span class="hljs-string">&quot;Loaded in PyTorch 0:00:02.663379&quot;</span>`,wrap:!1}}),L=new S({props:{code:"c2FmZXRlbnNvcnMlM0ElMjAzLjQ4NzNtcyUwQVB5VG9yY2glM0ElMjAxNzIuNzUzN21z",highlighted:`safetensors: 3.4873ms
PyTorch: 172.7537ms`,wrap:!1}}),I=new Ve({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/using-diffusers/using_safetensors.md"}}),{c(){$=i("meta"),E=n(),Q=i("p"),Y=n(),m(T.$$.fragment),q=n(),g=i("p"),g.innerHTML=Ze,F=n(),Z=i("p"),Z.innerHTML=we,D=n(),m(w.$$.fragment),A=n(),v=i("p"),v.innerHTML=ve,O=n(),G=i("p"),G.innerHTML=Ge,K=n(),m(J.$$.fragment),ee=n(),B=i("p"),B.innerHTML=Je,te=n(),m(k.$$.fragment),le=n(),m(U.$$.fragment),se=n(),j=i("p"),j.innerHTML=Be,ne=n(),W=i("p"),W.innerHTML=ke,ae=n(),m(_.$$.fragment),ie=n(),m(x.$$.fragment),oe=n(),C=i("p"),C.textContent=Ue,pe=n(),b=i("ul"),N=i("li"),N.innerHTML=je,Me=n(),p=i("li"),R=i("p"),R.textContent=We,ye=n(),H=i("p"),H.textContent=_e,he=n(),m(P.$$.fragment),$e=n(),V=i("p"),V.textContent=xe,be=n(),m(L.$$.fragment),fe=n(),z=i("p"),z.innerHTML=Ce,re=n(),m(I.$$.fragment),ce=n(),X=i("p"),this.h()},l(e){const t=He("svelte-u9bgzb",document.head);$=o(t,"META",{name:!0,content:!0}),t.forEach(l),E=a(e),Q=o(e,"P",{}),de(Q).forEach(l),Y=a(e),u(T.$$.fragment,e),q=a(e),g=o(e,"P",{"data-svelte-h":!0}),f(g)!=="svelte-xy39pg"&&(g.innerHTML=Ze),F=a(e),Z=o(e,"P",{"data-svelte-h":!0}),f(Z)!=="svelte-1quckm"&&(Z.innerHTML=we),D=a(e),u(w.$$.fragment,e),A=a(e),v=o(e,"P",{"data-svelte-h":!0}),f(v)!=="svelte-bfrnv6"&&(v.innerHTML=ve),O=a(e),G=o(e,"P",{"data-svelte-h":!0}),f(G)!=="svelte-1ood1ep"&&(G.innerHTML=Ge),K=a(e),u(J.$$.fragment,e),ee=a(e),B=o(e,"P",{"data-svelte-h":!0}),f(B)!=="svelte-1t7sg9j"&&(B.innerHTML=Je),te=a(e),u(k.$$.fragment,e),le=a(e),u(U.$$.fragment,e),se=a(e),j=o(e,"P",{"data-svelte-h":!0}),f(j)!=="svelte-kfki6q"&&(j.innerHTML=Be),ne=a(e),W=o(e,"P",{"data-svelte-h":!0}),f(W)!=="svelte-k67rn6"&&(W.innerHTML=ke),ae=a(e),u(_.$$.fragment,e),ie=a(e),u(x.$$.fragment,e),oe=a(e),C=o(e,"P",{"data-svelte-h":!0}),f(C)!=="svelte-89r6jc"&&(C.textContent=Ue),pe=a(e),b=o(e,"UL",{});var ue=de(b);N=o(ue,"LI",{"data-svelte-h":!0}),f(N)!=="svelte-5u0i6e"&&(N.innerHTML=je),Me=a(ue),p=o(ue,"LI",{});var c=de(p);R=o(c,"P",{"data-svelte-h":!0}),f(R)!=="svelte-1fytkny"&&(R.textContent=We),ye=a(c),H=o(c,"P",{"data-svelte-h":!0}),f(H)!=="svelte-grfvs7"&&(H.textContent=_e),he=a(c),u(P.$$.fragment,c),$e=a(c),V=o(c,"P",{"data-svelte-h":!0}),f(V)!=="svelte-zt4kwc"&&(V.textContent=xe),be=a(c),u(L.$$.fragment,c),c.forEach(l),ue.forEach(l),fe=a(e),z=o(e,"P",{"data-svelte-h":!0}),f(z)!=="svelte-p6xz18"&&(z.innerHTML=Ce),re=a(e),u(I.$$.fragment,e),ce=a(e),X=o(e,"P",{}),de(X).forEach(l),this.h()},h(){Pe($,"name","hf:doc:metadata"),Pe($,"content",Qe)},m(e,t){r(document.head,$),s(e,E,t),s(e,Q,t),s(e,Y,t),d(T,e,t),s(e,q,t),s(e,g,t),s(e,F,t),s(e,Z,t),s(e,D,t),d(w,e,t),s(e,A,t),s(e,v,t),s(e,O,t),s(e,G,t),s(e,K,t),d(J,e,t),s(e,ee,t),s(e,B,t),s(e,te,t),d(k,e,t),s(e,le,t),d(U,e,t),s(e,se,t),s(e,j,t),s(e,ne,t),s(e,W,t),s(e,ae,t),d(_,e,t),s(e,ie,t),d(x,e,t),s(e,oe,t),s(e,C,t),s(e,pe,t),s(e,b,t),r(b,N),r(b,Me),r(b,p),r(p,R),r(p,ye),r(p,H),r(p,he),d(P,p,null),r(p,$e),r(p,V),r(p,be),d(L,p,null),s(e,fe,t),s(e,z,t),s(e,re,t),d(I,e,t),s(e,ce,t),s(e,X,t),me=!0},p:ze,i(e){me||(M(T.$$.fragment,e),M(w.$$.fragment,e),M(J.$$.fragment,e),M(k.$$.fragment,e),M(U.$$.fragment,e),M(_.$$.fragment,e),M(x.$$.fragment,e),M(P.$$.fragment,e),M(L.$$.fragment,e),M(I.$$.fragment,e),me=!0)},o(e){y(T.$$.fragment,e),y(w.$$.fragment,e),y(J.$$.fragment,e),y(k.$$.fragment,e),y(U.$$.fragment,e),y(_.$$.fragment,e),y(x.$$.fragment,e),y(P.$$.fragment,e),y(L.$$.fragment,e),y(I.$$.fragment,e),me=!1},d(e){e&&(l(E),l(Q),l(Y),l(q),l(g),l(F),l(Z),l(D),l(A),l(v),l(O),l(G),l(K),l(ee),l(B),l(te),l(le),l(se),l(j),l(ne),l(W),l(ae),l(ie),l(oe),l(C),l(pe),l(b),l(fe),l(z),l(re),l(ce),l(X)),l($),h(T,e),h(w,e),h(J,e),h(k,e),h(U,e),h(_,e),h(x,e),h(P),h(L),h(I,e)}}}const Qe='{"title":"세이프텐서 로드","local":"세이프텐서-로드","sections":[{"title":"세이프텐서로 변환","local":"세이프텐서로-변환","sections":[],"depth":2},{"title":"세이프센서를 사용하는 이유는 무엇인가요?","local":"세이프센서를-사용하는-이유는-무엇인가요","sections":[],"depth":2}],"depth":1}';function Xe(ge){return Ie(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class De extends Ne{constructor($){super(),Re(this,$,Xe,Se,Le,{})}}export{De as component};
