import{s as ze,n as Ie,o as Ne}from"../chunks/scheduler.e3739aa0.js";import{S as Re,i as He,g as a,s as n,r as d,E as Ve,h as o,f as l,c as i,j as de,u as M,x as p,k as Le,y as r,a as s,v as y,d as h,t as b,w as T}from"../chunks/index.13f5b837.js";import{C as S}from"../chunks/CodeBlock.de02009a.js";import{H as Se,E as Qe}from"../chunks/EditOnGithub.72bac8d8.js";function Xe($e){let m,E,Q,Y,$,q,Z,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,g,ge="이 가이드에서는 <code>.safetensor</code> 파일을 로드하는 방법과 다른 형식으로 저장된 안정적 확산 모델 가중치를 <code>.safetensor</code>로 변환하는 방법을 보여드리겠습니다. 시작하기 전에 세이프텐서가 설치되어 있는지 확인하세요:",D,v,A,w,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,we="보다 명시적인 제어를 위해 선택적으로 <code>사용_세이프텐서=True</code>를 설정할 수 있습니다(<code>세이프텐서</code>가 설치되지 않은 경우 설치하라는 오류 메시지가 표시됨):",K,J,ee,B,Ge="그러나 모델 가중치가 위의 예시처럼 반드시 별도의 하위 폴더에 저장되는 것은 아닙니다. 모든 가중치가 하나의 ‘.safetensors<code>파일에 저장되는 경우도 있습니다. 이 경우 가중치가 Stable Diffusion 가중치인 경우</code>~diffusers.loaders.FromCkptMixin.from_ckpt` 메서드를 사용하여 파일을 직접 로드할 수 있습니다:",te,k,le,x,Je="## 세이프텐서로 변환",se,U,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,j,ke='개정<code>매개변수에 풀 리퀘스트에 대한 참조를 지정하여 새로운 &#39;.safetensors</code> 가중치가 적용된 모델을 사용할 수 있습니다(허브의 <a href="https://huggingface.co/spaces/diffusers/check_pr" rel="nofollow">Check PR</a> 공간에서 테스트할 수도 있음)(예: <code>refs/pr/22</code>):',ie,C,ae,_,xe="## 세이프센서를 사용하는 이유는 무엇인가요?",oe,W,Ue="세이프티 센서를 사용하는 데에는 여러 가지 이유가 있습니다:",pe,u,N,je="<p>세이프텐서를 사용하는 가장 큰 이유는 안전입니다.오픈 소스 및 모델 배포가 증가함에 따라 다운로드한 모델 가중치에 악성 코드가 포함되어 있지 않다는 것을 신뢰할 수 있는 것이 중요해졌습니다.세이프센서의 현재 헤더 크기는 매우 큰 JSON 파일을 구문 분석하지 못하게 합니다.</p>",Me,f,R,Ce="모델 전환 간의 로딩 속도는 텐서의 제로 카피를 수행하는 세이프텐서를 사용해야 하는 또 다른 이유입니다. 가중치를 CPU(기본값)로 로드하는 경우 ‘피클’에 비해 특히 빠르며, 가중치를 GPU로 직접 로드하는 경우에도 빠르지는 않더라도 비슷하게 빠릅니다. 모델이 이미 로드된 경우에만 성능 차이를 느낄 수 있으며, 가중치를 다운로드하거나 모델을 처음 로드하는 경우에는 성능 차이를 느끼지 못할 것입니다.",ye,H,_e="전체 파이프라인을 로드하는 데 걸리는 시간입니다:",he,P,be,V,We="하지만 실제로 500MB의 모델 가중치를 로드하는 데 걸리는 시간은 얼마 되지 않습니다:",Te,L,fe,z,Pe='지연 로딩은 세이프텐서에서도 지원되며, 이는 분산 설정에서 일부 텐서만 로드하는 데 유용합니다. 이 형식을 사용하면 <a href="https://huggingface.co/bigscience/bloom" rel="nofollow">BLOOM</a> 모델을 일반 PyTorch 가중치를 사용하여 10분이 걸리던 것을 8개의 GPU에서 45초 만에 로드할 수 있습니다.',re,I,ce,X,me;return $=new Se({props:{title:"세이프텐서 로드",local:"세이프텐서-로드",headingTag:"h1"}}),v=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}}),C=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}}),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 Qe({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/using-diffusers/using_safetensors.md"}}),{c(){m=a("meta"),E=n(),Q=a("p"),Y=n(),d($.$$.fragment),q=n(),Z=a("p"),Z.innerHTML=Ze,F=n(),g=a("p"),g.innerHTML=ge,D=n(),d(v.$$.fragment),A=n(),w=a("p"),w.innerHTML=ve,O=n(),G=a("p"),G.innerHTML=we,K=n(),d(J.$$.fragment),ee=n(),B=a("p"),B.innerHTML=Ge,te=n(),d(k.$$.fragment),le=n(),x=a("p"),x.textContent=Je,se=n(),U=a("p"),U.innerHTML=Be,ne=n(),j=a("p"),j.innerHTML=ke,ie=n(),d(C.$$.fragment),ae=n(),_=a("p"),_.textContent=xe,oe=n(),W=a("p"),W.textContent=Ue,pe=n(),u=a("ul"),N=a("li"),N.innerHTML=je,Me=n(),f=a("li"),R=a("p"),R.textContent=Ce,ye=n(),H=a("p"),H.textContent=_e,he=n(),d(P.$$.fragment),be=n(),V=a("p"),V.textContent=We,Te=n(),d(L.$$.fragment),fe=n(),z=a("p"),z.innerHTML=Pe,re=n(),d(I.$$.fragment),ce=n(),X=a("p"),this.h()},l(e){const t=Ve("svelte-u9bgzb",document.head);m=o(t,"META",{name:!0,content:!0}),t.forEach(l),E=i(e),Q=o(e,"P",{}),de(Q).forEach(l),Y=i(e),M($.$$.fragment,e),q=i(e),Z=o(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-xy39pg"&&(Z.innerHTML=Ze),F=i(e),g=o(e,"P",{"data-svelte-h":!0}),p(g)!=="svelte-1quckm"&&(g.innerHTML=ge),D=i(e),M(v.$$.fragment,e),A=i(e),w=o(e,"P",{"data-svelte-h":!0}),p(w)!=="svelte-bfrnv6"&&(w.innerHTML=ve),O=i(e),G=o(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-1ood1ep"&&(G.innerHTML=we),K=i(e),M(J.$$.fragment,e),ee=i(e),B=o(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-1t7sg9j"&&(B.innerHTML=Ge),te=i(e),M(k.$$.fragment,e),le=i(e),x=o(e,"P",{"data-svelte-h":!0}),p(x)!=="svelte-7l1thq"&&(x.textContent=Je),se=i(e),U=o(e,"P",{"data-svelte-h":!0}),p(U)!=="svelte-67c5ek"&&(U.innerHTML=Be),ne=i(e),j=o(e,"P",{"data-svelte-h":!0}),p(j)!=="svelte-k67rn6"&&(j.innerHTML=ke),ie=i(e),M(C.$$.fragment,e),ae=i(e),_=o(e,"P",{"data-svelte-h":!0}),p(_)!=="svelte-1oz2qj3"&&(_.textContent=xe),oe=i(e),W=o(e,"P",{"data-svelte-h":!0}),p(W)!=="svelte-89r6jc"&&(W.textContent=Ue),pe=i(e),u=o(e,"UL",{});var ue=de(u);N=o(ue,"LI",{"data-svelte-h":!0}),p(N)!=="svelte-5u0i6e"&&(N.innerHTML=je),Me=i(ue),f=o(ue,"LI",{});var c=de(f);R=o(c,"P",{"data-svelte-h":!0}),p(R)!=="svelte-1fytkny"&&(R.textContent=Ce),ye=i(c),H=o(c,"P",{"data-svelte-h":!0}),p(H)!=="svelte-grfvs7"&&(H.textContent=_e),he=i(c),M(P.$$.fragment,c),be=i(c),V=o(c,"P",{"data-svelte-h":!0}),p(V)!=="svelte-zt4kwc"&&(V.textContent=We),Te=i(c),M(L.$$.fragment,c),c.forEach(l),ue.forEach(l),fe=i(e),z=o(e,"P",{"data-svelte-h":!0}),p(z)!=="svelte-p6xz18"&&(z.innerHTML=Pe),re=i(e),M(I.$$.fragment,e),ce=i(e),X=o(e,"P",{}),de(X).forEach(l),this.h()},h(){Le(m,"name","hf:doc:metadata"),Le(m,"content",Ee)},m(e,t){r(document.head,m),s(e,E,t),s(e,Q,t),s(e,Y,t),y($,e,t),s(e,q,t),s(e,Z,t),s(e,F,t),s(e,g,t),s(e,D,t),y(v,e,t),s(e,A,t),s(e,w,t),s(e,O,t),s(e,G,t),s(e,K,t),y(J,e,t),s(e,ee,t),s(e,B,t),s(e,te,t),y(k,e,t),s(e,le,t),s(e,x,t),s(e,se,t),s(e,U,t),s(e,ne,t),s(e,j,t),s(e,ie,t),y(C,e,t),s(e,ae,t),s(e,_,t),s(e,oe,t),s(e,W,t),s(e,pe,t),s(e,u,t),r(u,N),r(u,Me),r(u,f),r(f,R),r(f,ye),r(f,H),r(f,he),y(P,f,null),r(f,be),r(f,V),r(f,Te),y(L,f,null),s(e,fe,t),s(e,z,t),s(e,re,t),y(I,e,t),s(e,ce,t),s(e,X,t),me=!0},p:Ie,i(e){me||(h($.$$.fragment,e),h(v.$$.fragment,e),h(J.$$.fragment,e),h(k.$$.fragment,e),h(C.$$.fragment,e),h(P.$$.fragment,e),h(L.$$.fragment,e),h(I.$$.fragment,e),me=!0)},o(e){b($.$$.fragment,e),b(v.$$.fragment,e),b(J.$$.fragment,e),b(k.$$.fragment,e),b(C.$$.fragment,e),b(P.$$.fragment,e),b(L.$$.fragment,e),b(I.$$.fragment,e),me=!1},d(e){e&&(l(E),l(Q),l(Y),l(q),l(Z),l(F),l(g),l(D),l(A),l(w),l(O),l(G),l(K),l(ee),l(B),l(te),l(le),l(x),l(se),l(U),l(ne),l(j),l(ie),l(ae),l(_),l(oe),l(W),l(pe),l(u),l(fe),l(z),l(re),l(ce),l(X)),l(m),T($,e),T(v,e),T(J,e),T(k,e),T(C,e),T(P),T(L),T(I,e)}}}const Ee='{"title":"세이프텐서 로드","local":"세이프텐서-로드","sections":[],"depth":1}';function Ye($e){return Ne(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Oe extends Re{constructor(m){super(),He(this,m,Ye,Xe,ze,{})}}export{Oe as component};
