Buckets:
| import{s as Fl,n as Yl,o as Ql}from"../chunks/scheduler.94020406.js";import{S as Vl,i as zl,g as n,s as a,r as m,E as Rl,h as i,f as l,c as p,j as Xl,u as M,x as r,k as Hl,y as Nl,a as s,v as f,d as o,t as y,w}from"../chunks/index.a08c8d92.js";import{C as b}from"../chunks/CodeBlock.f1fae7de.js";import{D as Sl}from"../chunks/DocNotebookDropdown.a1753374.js";import{H as J,E as Ll}from"../chunks/index.9fb21c13.js";function Al(tl){let u,Xe,Ze,He,j,Fe,$,Ye,c,ll='๐ค Hugging Face [Diffusers] (<a href="https://github.com/huggingface/diffusers" rel="nofollow">https://github.com/huggingface/diffusers</a>) ๋ ๋ฒ์ 0.5.1๋ถํฐ Flax๋ฅผ ์ง์ํฉ๋๋ค! ์ด๋ฅผ ํตํด Colab, Kaggle, Google Cloud Platform์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ฒ๋ผ Google TPU์์ ์ด๊ณ ์ ์ถ๋ก ์ด ๊ฐ๋ฅํฉ๋๋ค.',Qe,T,sl='์ด ๋ ธํธ๋ถ์ JAX / Flax๋ฅผ ์ฌ์ฉํด ์ถ๋ก ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. Stable Diffusion์ ์๋ ๋ฐฉ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ํ๊ฑฐ๋ GPU์์ ์คํํ๋ ค๋ฉด ์ด [๋ ธํธ๋ถ] ](<a href="https://huggingface.co/docs/diffusers/stable_diffusion)%EC%9D%84" rel="nofollow">https://huggingface.co/docs/diffusers/stable_diffusion)์</a> ์ฐธ์กฐํ์ธ์.',Ve,d,al="๋จผ์ , TPU ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค. Colab์์ ์ด ๋ ธํธ๋ถ์ ์คํํ๋ ๊ฒฝ์ฐ, ๋ฉ๋ด์์ ๋ฐํ์์ ์ ํํ ๋ค์ โ๋ฐํ์ ์ ํ ๋ณ๊ฒฝโ ์ต์ ์ ์ ํํ ๋ค์ ํ๋์จ์ด ๊ฐ์๊ธฐ ์ค์ ์์ TPU๋ฅผ ์ ํํฉ๋๋ค.",ze,h,pl="JAX๋ TPU ์ ์ฉ์ ์๋์ง๋ง ๊ฐ TPU ์๋ฒ์๋ 8๊ฐ์ TPU ๊ฐ์๊ธฐ๊ฐ ๋ณ๋ ฌ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ํด๋น ํ๋์จ์ด์์ ๋ ๋น์ ๋ฐํ๋ค๋ ์ ์ ์์๋์ธ์.",Re,U,Ne,g,nl="๋จผ์ diffusers๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.",Se,B,Le,C,Ae,_,Pe,I,Ee,k,il="๊ทธ๋ฐ ๋ค์ ๋ชจ๋ dependencies๋ฅผ ๊ฐ์ ธ์ต๋๋ค.",qe,x,De,v,Ke,G,ml="TPU ์ฅ์น๋ ํจ์จ์ ์ธ half-float ์ ํ์ธ bfloat16์ ์ง์ํฉ๋๋ค. ํ ์คํธ์๋ ์ด ์ ํ์ ์ฌ์ฉํ์ง๋ง ๋์ float32๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ ๋ฐ๋(full precision)๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.",Oe,Z,et,W,Ml="Flax๋ ํจ์ํ ํ๋ ์์ํฌ์ด๋ฏ๋ก ๋ชจ๋ธ์ ๋ฌด์ํ(stateless)ํ์ด๋ฉฐ ๋งค๊ฐ๋ณ์๋ ๋ชจ๋ธ ์ธ๋ถ์ ์ ์ฅ๋ฉ๋๋ค. ์ฌ์ ํ์ต๋ Flax ํ์ดํ๋ผ์ธ์ ๋ถ๋ฌ์ค๋ฉด ํ์ดํ๋ผ์ธ ์์ฒด์ ๋ชจ๋ธ ๊ฐ์ค์น(๋๋ ๋งค๊ฐ๋ณ์)๊ฐ ๋ชจ๋ ๋ฐํ๋ฉ๋๋ค. ์ ํฌ๋ bf16 ๋ฒ์ ์ ๊ฐ์ค์น๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ ํ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง๋ง ๋ฌด์ํด๋ ๋ฉ๋๋ค.",tt,X,lt,H,st,F,fl="TPU์๋ ์ผ๋ฐ์ ์ผ๋ก 8๊ฐ์ ๋๋ฐ์ด์ค๊ฐ ๋ณ๋ ฌ๋ก ์๋ํ๋ฏ๋ก ๋ณด์ ํ ๋๋ฐ์ด์ค ์๋งํผ ํ๋กฌํํธ๋ฅผ ๋ณต์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ๊ฐ ํ๋์ ์ด๋ฏธ์ง ์์ฑ์ ๋ด๋นํ๋ 8๊ฐ์ ๋๋ฐ์ด์ค์์ ํ ๋ฒ์ ์ถ๋ก ์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ ํ๋์ ์นฉ์ด ํ๋์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ๋์ผํ ์๊ฐ์ 8๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.",at,Y,ol="ํ๋กฌํํธ๋ฅผ ๋ณต์ ํ๊ณ ๋๋ฉด ํ์ดํ๋ผ์ธ์ <code>prepare_inputs</code> ํจ์๋ฅผ ํธ์ถํ์ฌ ํ ํฐํ๋ ํ ์คํธ ID๋ฅผ ์ป์ต๋๋ค. ํ ํฐํ๋ ํ ์คํธ์ ๊ธธ์ด๋ ๊ธฐ๋ณธ CLIP ํ ์คํธ ๋ชจ๋ธ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ 77ํ ํฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค.",pt,Q,nt,V,it,z,mt,R,yl="๋ชจ๋ธ ๋งค๊ฐ๋ณ์์ ์ ๋ ฅ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ๋ณด์ ํ 8๊ฐ์ ๋ณ๋ ฌ ์ฅ์น์ ๋ณต์ฌ(Replication)๋์ด์ผ ํฉ๋๋ค. ๋งค๊ฐ๋ณ์ ๋์ ๋๋ฆฌ๋ <code>flax.jax_utils.replicate</code>(๋์ ๋๋ฆฌ๋ฅผ ์ํํ๋ฉฐ ๊ฐ์ค์น์ ๋ชจ์์ ๋ณ๊ฒฝํ์ฌ 8๋ฒ ๋ฐ๋ณตํ๋ ํจ์)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ฌ๋ฉ๋๋ค. ๋ฐฐ์ด์ <code>shard</code>๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ฉ๋๋ค.",Mt,N,ft,S,ot,L,yt,A,wl="์ด shape์ 8๊ฐ์ ๋๋ฐ์ด์ค ๊ฐ๊ฐ์ด shape <code>(1, 77)</code>์ jnp ๋ฐฐ์ด์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ๋๋ค๋ ์๋ฏธ์ ๋๋ค. ์ฆ 1์ ๋๋ฐ์ด์ค๋น batch(๋ฐฐ์น) ํฌ๊ธฐ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ TPU์์๋ ํ ๋ฒ์ ์ฌ๋ฌ ์ด๋ฏธ์ง(์นฉ๋น)๋ฅผ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ 1๋ณด๋ค ํด ์ ์์ต๋๋ค.",wt,P,rl="์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ค๋น๊ฐ ๊ฑฐ์ ์๋ฃ๋์์ต๋๋ค! ์ด์ ์์ฑ ํจ์์ ์ ๋ฌํ ๋์ ์์ฑ๊ธฐ๋ง ๋ง๋ค๋ฉด ๋ฉ๋๋ค. ์ด๊ฒ์ ๋์๋ฅผ ๋ค๋ฃจ๋ ๋ชจ๋ ํจ์์ ๋์ ์์ฑ๊ธฐ๊ฐ ์์ด์ผ ํ๋ค๋, ๋์์ ๋ํด ๋งค์ฐ ์ง์งํ๊ณ ๋ ๋จ์ ์ธ Flax์ ํ์ค ์ ์ฐจ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ๋ถ์ฐ๋ ๊ธฐ๊ธฐ์์ ํ๋ จํ ๋์๋ ์ฌํ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.",rt,E,bl="์๋ ํฌํผ ํจ์๋ ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ๋์ผํ ์๋๋ฅผ ์ฌ์ฉํ๋ ํ ์ ํํ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋์ค์ ๋ ธํธ๋ถ์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ํ ๋์ ๋ค๋ฅธ ์๋๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ธ์.",bt,q,ut,D,ul="rng๋ฅผ ์ป์ ๋ค์ 8๋ฒ โ๋ถํ โํ์ฌ ๊ฐ ๋๋ฐ์ด์ค๊ฐ ๋ค๋ฅธ ์ ๋๋ ์ดํฐ๋ฅผ ์์ ํ๋๋ก ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ ๋๋ฐ์ด์ค๋ง๋ค ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋๋ฉฐ ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.",Jt,K,jt,O,Jl="JAX ์ฝ๋๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์คํ๋๋ ํจ์จ์ ์ธ ํํ์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ํ์ง๋ง ํ์ ํธ์ถ์์ ๋ชจ๋ ์ ๋ ฅ์ด ๋์ผํ ๋ชจ์์ ๊ฐ๋๋ก ํด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด JAX๊ฐ ์ฝ๋๋ฅผ ๋ค์ ์ปดํ์ผํด์ผ ํ๋ฏ๋ก ์ต์ ํ๋ ์๋๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.",$t,ee,jl="<code>jit = True</code>๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉด Flax ํ์ดํ๋ผ์ธ์ด ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค. ๋ํ ๋ชจ๋ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํ 8๊ฐ์ ๋๋ฐ์ด์ค์์ ๋ณ๋ ฌ๋ก ์คํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.",ct,te,$l="๋ค์ ์ ์ ์ฒ์ ์คํํ๋ฉด ์ปดํ์ผํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ์ง๋ง ์ดํ ํธ์ถ(์ ๋ ฅ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์๋)์ ํจ์ฌ ๋นจ๋ผ์ง๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์คํธํ์ ๋ TPU v2-8์์ ์ปดํ์ผํ๋ ๋ฐ 1๋ถ ์ด์ ๊ฑธ๋ฆฌ์ง๋ง ์ดํ ์ถ๋ก ์คํ์๋ ์ฝ 7์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค.",Tt,le,dt,se,ht,ae,cl="๋ฐํ๋ ๋ฐฐ์ด์ shape์ <code>(8, 1, 512, 512, 3)</code>์ ๋๋ค. ์ด๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ๋ ๋ฒ์งธ ์ฐจ์์ ์ ๊ฑฐํ๊ณ 512 ร 512 ร 3์ ์ด๋ฏธ์ง 8๊ฐ๋ฅผ ์ป์ ๋ค์ PIL๋ก ๋ณํํฉ๋๋ค.",Ut,pe,gt,ne,Bt,ie,Tl="์ด๋ฏธ์ง๋ฅผ ๊ทธ๋ฆฌ๋์ ํ์ํ๋ ๋์ฐ๋ฏธ ํจ์๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.",Ct,me,_t,Me,It,fe,dl='<img src="https://huggingface.co/datasets/YiYiXu/test-doc-assets/resolve/main/stable_diffusion_jax_how_to_cell_38_output_0.jpeg" alt="img"/>',kt,oe,xt,ye,hl="๋ชจ๋ ๋๋ฐ์ด์ค์์ ๋์ผํ ํ๋กฌํํธ๋ฅผ ๋ณต์ ํ ํ์๋ ์์ต๋๋ค. ํ๋กฌํํธ 2๊ฐ๋ฅผ ๊ฐ๊ฐ 4๋ฒ์ฉ ์์ฑํ๊ฑฐ๋ ํ ๋ฒ์ 8๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋กฌํํธ๋ฅผ ์์ฑํ๋ ๋ฑ ์ํ๋ ๊ฒ์ ๋ฌด์์ด๋ ํ ์ ์์ต๋๋ค. ํ๋ฒ ํด๋ณด์ธ์!",vt,we,Ul="๋จผ์ ์ ๋ ฅ ์ค๋น ์ฝ๋๋ฅผ ํธ๋ฆฌํ ํจ์๋ก ๋ฆฌํฉํฐ๋งํ๊ฒ ์ต๋๋ค:",Gt,re,Zt,be,Wt,ue,gl='<img src="https://huggingface.co/datasets/YiYiXu/test-doc-assets/resolve/main/stable_diffusion_jax_how_to_cell_43_output_0.jpeg" alt="img"/>',Xt,Je,Ht,je,Bl="์์ <code>diffusers</code> Flax ํ์ดํ๋ผ์ธ์ด ๋ชจ๋ธ์ ์๋์ผ๋ก ์ปดํ์ผํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ธฐ๊ธฐ์์ ๋ณ๋ ฌ๋ก ์คํํ๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ์ด์ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ณ ์๋ ๋ฐฉ์์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.",Ft,$e,Cl='JAX ๋ณ๋ ฌํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ jax.pmap ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ํ๋ก๊ทธ๋จ, ๋ค์ค ๋ฐ์ดํฐ(SPMD) ๋ณ๋ ฌํ๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ๋์ผํ ์ฝ๋์ ๋ณต์ฌ๋ณธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ๋ ฅ์ ๋ํด ์ฌ๋ฌ ๊ฐ ์คํํ๋ ๊ฒ์ ๋๋ค. ๋ ์ ๊ตํ ์ ๊ทผ ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ฏ๋ก ๊ด์ฌ์ด ์์ผ์๋ค๋ฉด <a href="https://jax.readthedocs.io/en/latest/index.html" rel="nofollow">JAX ๋ฌธ์</a>์ <a href="https://jax.readthedocs.io/en/latest/jax-101/08-pjit.html?highlight=pjit" rel="nofollow"><code>pjit</code> ํ์ด์ง</a>์์ ์ด ์ฃผ์ ๋ฅผ ์ดํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค!',Yt,ce,_l="<code>jax.pmap</code>์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค:",Qt,Te,Il="<li><code>jax.jit()</code>๋ฅผ ํธ์ถํ ๊ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ์ปดํ์ผ(๋๋ <code>jit</code>)ํฉ๋๋ค. ์ด ์์ ์ <code>pmap</code>์ ํธ์ถํ ๋๊ฐ ์๋๋ผ pmapped ํจ์๊ฐ ์ฒ์ ํธ์ถ๋ ๋ ์ํ๋ฉ๋๋ค.</li> <li>์ปดํ์ผ๋ ์ฝ๋๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ธฐ๊ธฐ์์ ๋ณ๋ ฌ๋ก ์คํ๋๋๋ก ํฉ๋๋ค.</li>",Vt,de,kl="์๋ ๋ฐฉ์์ ๋ณด์ฌ๋๋ฆฌ๊ธฐ ์ํด ์ด๋ฏธ์ง ์์ฑ์ ์คํํ๋ ๋น๊ณต๊ฐ ๋ฉ์๋์ธ ํ์ดํ๋ผ์ธ์ <code>_generate</code> ๋ฉ์๋๋ฅผ <code>pmap</code>ํฉ๋๋ค. ์ด ๋ฉ์๋๋ ํฅํ <code>Diffusers</code> ๋ฆด๋ฆฌ์ค์์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์.",zt,he,Rt,Ue,xl="<code>pmap</code>์ ์ฌ์ฉํ ํ ์ค๋น๋ ํจ์ <code>p_generate</code>๋ ๊ฐ๋ ์ ์ผ๋ก ๋ค์์ ์ํํฉ๋๋ค:",Nt,ge,vl="<li>๊ฐ ์ฅ์น์์ ๊ธฐ๋ณธ ํจ์ <code>pipeline._generate</code>์ ๋ณต์ฌ๋ณธ์ ํธ์ถํฉ๋๋ค.</li> <li>๊ฐ ์ฅ์น์ ์ ๋ ฅ ์ธ์์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ณด๋ ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ค๋ฉ์ด ์ฌ์ฉ๋๋ ์ด์ ์ ๋๋ค. ์ด ๊ฒฝ์ฐ <code>prompt_ids</code>์ shape์ <code>(8, 1, 77, 768)</code>์ ๋๋ค. ์ด ๋ฐฐ์ด์ 8๊ฐ๋ก ๋ถํ ๋๊ณ <code>_generate</code>์ ๊ฐ ๋ณต์ฌ๋ณธ์ <code>(1, 77, 768)</code>์ shape์ ๊ฐ์ง ์ ๋ ฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.</li>",St,Be,Gl="๋ณ๋ ฌ๋ก ํธ์ถ๋๋ค๋ ์ฌ์ค์ ์์ ํ ๋ฌด์ํ๊ณ <code>_generate</code>๋ฅผ ์ฝ๋ฉํ ์ ์์ต๋๋ค. batch(๋ฐฐ์น) ํฌ๊ธฐ(์ด ์์ ์์๋ <code>1</code>)์ ์ฝ๋์ ์ ํฉํ ์ฐจ์๋ง ์ ๊ฒฝ ์ฐ๋ฉด ๋๋ฉฐ, ๋ณ๋ ฌ๋ก ์๋ํ๊ธฐ ์ํด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.",Lt,Ce,Zl="ํ์ดํ๋ผ์ธ ํธ์ถ์ ์ฌ์ฉํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ค์ ์ ์ ์ฒ์ ์คํํ ๋๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง ๊ทธ ์ดํ์๋ ํจ์ฌ ๋นจ๋ผ์ง๋๋ค.",At,_e,Pt,Ie,Et,ke,qt,xe,Dt,ve,Wl="JAX๋ ๋น๋๊ธฐ ๋์คํจ์น๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ ์ด๊ถ์ Python ๋ฃจํ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ถ๋ก ์๊ฐ์ ์ ํํ๊ฒ ์ธก์ ํ๊ธฐ ์ํด <code>block_until_ready()</code>๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ง ๊ตฌ์ฒดํ๋์ง ์์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฐจ๋จ์ด ์ํ๋๋ฏ๋ก ์ฝ๋์์ ์ด ํจ์๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.",Kt,Ge,Ot,We,el;return j=new J({props:{title:"JAX / Flax์์์ ๐งจ Stable Diffusion!",local:"jax--flax์์์--stable-diffusion",headingTag:"h1"}}),$=new Sl({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/stable_diffusion_jax_how_to.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/stable_diffusion_jax_how_to.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/stable_diffusion_jax_how_to.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/stable_diffusion_jax_how_to.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/stable_diffusion_jax_how_to.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/stable_diffusion_jax_how_to.ipynb"}]}}),U=new J({props:{title:"Setup",local:"setup",headingTag:"h2"}}),B=new b({props:{code:"IXBpcCUyMGluc3RhbGwlMjBqYXglM0QlM0QwLjMuMjUlMjBqYXhsaWIlM0QlM0QwLjMuMjUlMjBmbGF4JTIwdHJhbnNmb3JtZXJzJTIwZnRmeSUwQSFwaXAlMjBpbnN0YWxsJTIwZGlmZnVzZXJz",highlighted:`!pip install jax==0.3.25 jaxlib==0.3.25 flax transformers ftfy | |
| !pip install diffusers`,wrap:!1}}),C=new b({props:{code:"aW1wb3J0JTIwamF4LnRvb2xzLmNvbGFiX3RwdSUwQSUwQWpheC50b29scy5jb2xhYl90cHUuc2V0dXBfdHB1KCklMEFpbXBvcnQlMjBqYXg=",highlighted:`<span class="hljs-keyword">import</span> jax.tools.colab_tpu | |
| jax.tools.colab_tpu.setup_tpu() | |
| <span class="hljs-keyword">import</span> jax`,wrap:!1}}),_=new b({props:{code:"bnVtX2RldmljZXMlMjAlM0QlMjBqYXguZGV2aWNlX2NvdW50KCklMEFkZXZpY2VfdHlwZSUyMCUzRCUyMGpheC5kZXZpY2VzKCklNUIwJTVELmRldmljZV9raW5kJTBBJTBBcHJpbnQoZiUyMkZvdW5kJTIwJTdCbnVtX2RldmljZXMlN0QlMjBKQVglMjBkZXZpY2VzJTIwb2YlMjB0eXBlJTIwJTdCZGV2aWNlX3R5cGUlN0QuJTIyKSUwQWFzc2VydCUyMCglMEElMjAlMjAlMjAlMjAlMjJUUFUlMjIlMjBpbiUyMGRldmljZV90eXBlJTBBKSUyQyUyMCUyMkF2YWlsYWJsZSUyMGRldmljZSUyMGlzJTIwbm90JTIwYSUyMFRQVSUyQyUyMHBsZWFzZSUyMHNlbGVjdCUyMFRQVSUyMGZyb20lMjBFZGl0JTIwJTNFJTIwTm90ZWJvb2slMjBzZXR0aW5ncyUyMCUzRSUyMEhhcmR3YXJlJTIwYWNjZWxlcmF0b3IlMjI=",highlighted:`num_devices = jax.device_count() | |
| device_type = jax.devices()[<span class="hljs-number">0</span>].device_kind | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Found <span class="hljs-subst">{num_devices}</span> JAX devices of type <span class="hljs-subst">{device_type}</span>."</span>) | |
| <span class="hljs-keyword">assert</span> ( | |
| <span class="hljs-string">"TPU"</span> <span class="hljs-keyword">in</span> device_type | |
| ), <span class="hljs-string">"Available device is not a TPU, please select TPU from Edit > Notebook settings > Hardware accelerator"</span>`,wrap:!1}}),I=new b({props:{code:"Rm91bmQlMjA4JTIwSkFYJTIwZGV2aWNlcyUyMG9mJTIwdHlwZSUyMENsb3VkJTIwVFBVLg==",highlighted:'Found <span class="hljs-number">8</span> JAX devices of <span class="hljs-built_in">type</span> Cloud TPU.',wrap:!1}}),x=new b({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwamF4JTBBaW1wb3J0JTIwamF4Lm51bXB5JTIwYXMlMjBqbnAlMEElMEFmcm9tJTIwcGF0aGxpYiUyMGltcG9ydCUyMFBhdGglMEFmcm9tJTIwamF4JTIwaW1wb3J0JTIwcG1hcCUwQWZyb20lMjBmbGF4LmpheF91dGlscyUyMGltcG9ydCUyMHJlcGxpY2F0ZSUwQWZyb20lMjBmbGF4LnRyYWluaW5nLmNvbW1vbl91dGlscyUyMGltcG9ydCUyMHNoYXJkJTBBZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBJTBBZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEZsYXhTdGFibGVEaWZmdXNpb25QaXBlbGluZQ==",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| <span class="hljs-keyword">import</span> jax | |
| <span class="hljs-keyword">import</span> jax.numpy <span class="hljs-keyword">as</span> jnp | |
| <span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path | |
| <span class="hljs-keyword">from</span> jax <span class="hljs-keyword">import</span> pmap | |
| <span class="hljs-keyword">from</span> flax.jax_utils <span class="hljs-keyword">import</span> replicate | |
| <span class="hljs-keyword">from</span> flax.training.common_utils <span class="hljs-keyword">import</span> shard | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> FlaxStableDiffusionPipeline`,wrap:!1}}),v=new J({props:{title:"๋ชจ๋ธ ๋ถ๋ฌ์ค๊ธฐ",local:"๋ชจ๋ธ-๋ถ๋ฌ์ค๊ธฐ",headingTag:"h2"}}),Z=new b({props:{code:"ZHR5cGUlMjAlM0QlMjBqbnAuYmZsb2F0MTY=",highlighted:"dtype = jnp.bfloat16",wrap:!1}}),X=new b({props:{code:"cGlwZWxpbmUlMkMlMjBwYXJhbXMlMjAlM0QlMjBGbGF4U3RhYmxlRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMkNvbXBWaXMlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTQlMjIlMkMlMEElMjAlMjAlMjAlMjB2YXJpYW50JTNEJTIyYmYxNiUyMiUyQyUwQSUyMCUyMCUyMCUyMGR0eXBlJTNEZHR5cGUlMkMlMEEp",highlighted:`pipeline, params = FlaxStableDiffusionPipeline.from_pretrained( | |
| <span class="hljs-string">"CompVis/stable-diffusion-v1-4"</span>, | |
| variant=<span class="hljs-string">"bf16"</span>, | |
| dtype=dtype, | |
| )`,wrap:!1}}),H=new J({props:{title:"์ถ๋ก ",local:"์ถ๋ก ",headingTag:"h2"}}),Q=new b({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIyQSUyMGNpbmVtYXRpYyUyMGZpbG0lMjBzdGlsbCUyMG9mJTIwTW9yZ2FuJTIwRnJlZW1hbiUyMHN0YXJyaW5nJTIwYXMlMjBKaW1pJTIwSGVuZHJpeCUyQyUyMHBvcnRyYWl0JTJDJTIwNDBtbSUyMGxlbnMlMkMlMjBzaGFsbG93JTIwZGVwdGglMjBvZiUyMGZpZWxkJTJDJTIwY2xvc2UlMjB1cCUyQyUyMHNwbGl0JTIwbGlnaHRpbmclMkMlMjBjaW5lbWF0aWMlMjIlMEFwcm9tcHQlMjAlM0QlMjAlNUJwcm9tcHQlNUQlMjAqJTIwamF4LmRldmljZV9jb3VudCgpJTBBcHJvbXB0X2lkcyUyMCUzRCUyMHBpcGVsaW5lLnByZXBhcmVfaW5wdXRzKHByb21wdCklMEFwcm9tcHRfaWRzLnNoYXBl",highlighted:`prompt = <span class="hljs-string">"A cinematic film still of Morgan Freeman starring as Jimi Hendrix, portrait, 40mm lens, shallow depth of field, close up, split lighting, cinematic"</span> | |
| prompt = [prompt] * jax.device_count() | |
| prompt_ids = pipeline.prepare_inputs(prompt) | |
| prompt_ids.shape`,wrap:!1}}),V=new b({props:{code:"KDglMkMlMjA3Nyk=",highlighted:'(<span class="hljs-number">8</span>, <span class="hljs-number">77</span>)',wrap:!1}}),z=new J({props:{title:"๋ณต์ฌ(Replication) ๋ฐ ์ ๋ ฌํ",local:"๋ณต์ฌreplication-๋ฐ-์ ๋ ฌํ",headingTag:"h3"}}),N=new b({props:{code:"cF9wYXJhbXMlMjAlM0QlMjByZXBsaWNhdGUocGFyYW1zKQ==",highlighted:"p_params = replicate(params)",wrap:!1}}),S=new b({props:{code:"cHJvbXB0X2lkcyUyMCUzRCUyMHNoYXJkKHByb21wdF9pZHMpJTBBcHJvbXB0X2lkcy5zaGFwZQ==",highlighted:`prompt_ids = shard(prompt_ids) | |
| prompt_ids.shape`,wrap:!1}}),L=new b({props:{code:"KDglMkMlMjAxJTJDJTIwNzcp",highlighted:'(<span class="hljs-number">8</span>, <span class="hljs-number">1</span>, <span class="hljs-number">77</span>)',wrap:!1}}),q=new b({props:{code:"ZGVmJTIwY3JlYXRlX2tleShzZWVkJTNEMCklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjBqYXgucmFuZG9tLlBSTkdLZXkoc2VlZCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">create_key</span>(<span class="hljs-params">seed=<span class="hljs-number">0</span></span>): | |
| <span class="hljs-keyword">return</span> jax.random.PRNGKey(seed)`,wrap:!1}}),K=new b({props:{code:"cm5nJTIwJTNEJTIwY3JlYXRlX2tleSgwKSUwQXJuZyUyMCUzRCUyMGpheC5yYW5kb20uc3BsaXQocm5nJTJDJTIwamF4LmRldmljZV9jb3VudCgpKQ==",highlighted:`rng = create_key(<span class="hljs-number">0</span>) | |
| rng = jax.random.split(rng, jax.device_count())`,wrap:!1}}),le=new b({props:{code:"JTI1JTI1dGltZSUwQWltYWdlcyUyMCUzRCUyMHBpcGVsaW5lKHByb21wdF9pZHMlMkMlMjBwX3BhcmFtcyUyQyUyMHJuZyUyQyUyMGppdCUzRFRydWUpJTVCMCU1RA==",highlighted:`%%time | |
| images = pipeline(prompt_ids, p_params, rng, <span class="hljs-attribute">jit</span>=<span class="hljs-literal">True</span>)[0]`,wrap:!1}}),se=new b({props:{code:"Q1BVJTIwdGltZXMlM0ElMjB1c2VyJTIwNTYuMiUyMHMlMkMlMjBzeXMlM0ElMjA0Mi41JTIwcyUyQyUyMHRvdGFsJTNBJTIwMW1pbiUyMDM4cyUwQVdhbGwlMjB0aW1lJTNBJTIwMW1pbiUyMDI5cw==",highlighted:`CPU times: user <span class="hljs-number">56.2</span> s, sys: <span class="hljs-number">42.5</span> s, total: 1<span class="hljs-built_in">min</span> 38s | |
| Wall time: 1<span class="hljs-built_in">min</span> 29s`,wrap:!1}}),pe=new b({props:{code:"aW1hZ2VzJTIwJTNEJTIwaW1hZ2VzLnJlc2hhcGUoKGltYWdlcy5zaGFwZSU1QjAlNUQlMjAqJTIwaW1hZ2VzLnNoYXBlJTVCMSU1RCUyQyklMjAlMkIlMjBpbWFnZXMuc2hhcGUlNUItMyUzQSU1RCklMEFpbWFnZXMlMjAlM0QlMjBwaXBlbGluZS5udW1weV90b19waWwoaW1hZ2VzKQ==",highlighted:`images = images.reshape((images.shape[<span class="hljs-number">0</span>] * images.shape[<span class="hljs-number">1</span>],) + images.shape[-<span class="hljs-number">3</span>:]) | |
| images = pipeline.numpy_to_pil(images)`,wrap:!1}}),ne=new J({props:{title:"์๊ฐํ",local:"์๊ฐํ",headingTag:"h3"}}),me=new b({props:{code:"ZGVmJTIwaW1hZ2VfZ3JpZChpbWdzJTJDJTIwcm93cyUyQyUyMGNvbHMpJTNBJTBBJTIwJTIwJTIwJTIwdyUyQyUyMGglMjAlM0QlMjBpbWdzJTVCMCU1RC5zaXplJTBBJTIwJTIwJTIwJTIwZ3JpZCUyMCUzRCUyMEltYWdlLm5ldyglMjJSR0IlMjIlMkMlMjBzaXplJTNEKGNvbHMlMjAqJTIwdyUyQyUyMHJvd3MlMjAqJTIwaCkpJTBBJTIwJTIwJTIwJTIwZm9yJTIwaSUyQyUyMGltZyUyMGluJTIwZW51bWVyYXRlKGltZ3MpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ3JpZC5wYXN0ZShpbWclMkMlMjBib3glM0QoaSUyMCUyNSUyMGNvbHMlMjAqJTIwdyUyQyUyMGklMjAlMkYlMkYlMjBjb2xzJTIwKiUyMGgpKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGdyaWQ=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">image_grid</span>(<span class="hljs-params">imgs, rows, cols</span>): | |
| w, h = imgs[<span class="hljs-number">0</span>].size | |
| grid = Image.new(<span class="hljs-string">"RGB"</span>, size=(cols * w, rows * h)) | |
| <span class="hljs-keyword">for</span> i, img <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(imgs): | |
| grid.paste(img, box=(i % cols * w, i // cols * h)) | |
| <span class="hljs-keyword">return</span> grid`,wrap:!1}}),Me=new b({props:{code:"aW1hZ2VfZ3JpZChpbWFnZXMlMkMlMjAyJTJDJTIwNCk=",highlighted:'image_grid(images, <span class="hljs-number">2</span>, <span class="hljs-number">4</span>)',wrap:!1}}),oe=new J({props:{title:"๋ค๋ฅธ ํ๋กฌํํธ ์ฌ์ฉ",local:"๋ค๋ฅธ-ํ๋กฌํํธ-์ฌ์ฉ",headingTag:"h2"}}),re=new b({props:{code:"cHJvbXB0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkxhYnJhZG9yJTIwaW4lMjB0aGUlMjBzdHlsZSUyMG9mJTIwSG9rdXNhaSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMlBhaW50aW5nJTIwb2YlMjBhJTIwc3F1aXJyZWwlMjBza2F0aW5nJTIwaW4lMjBOZXclMjBZb3JrJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIySEFMLTkwMDAlMjBpbiUyMHRoZSUyMHN0eWxlJTIwb2YlMjBWYW4lMjBHb2doJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyVGltZXMlMjBTcXVhcmUlMjB1bmRlciUyMHdhdGVyJTJDJTIwd2l0aCUyMGZpc2glMjBhbmQlMjBhJTIwZG9scGhpbiUyMHN3aW1taW5nJTIwYXJvdW5kJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyQW5jaWVudCUyMFJvbWFuJTIwZnJlc2NvJTIwc2hvd2luZyUyMGElMjBtYW4lMjB3b3JraW5nJTIwb24lMjBoaXMlMjBsYXB0b3AlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJDbG9zZS11cCUyMHBob3RvZ3JhcGglMjBvZiUyMHlvdW5nJTIwYmxhY2slMjB3b21hbiUyMGFnYWluc3QlMjB1cmJhbiUyMGJhY2tncm91bmQlMkMlMjBoaWdoJTIwcXVhbGl0eSUyQyUyMGJva2VoJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyQXJtY2hhaXIlMjBpbiUyMHRoZSUyMHNoYXBlJTIwb2YlMjBhbiUyMGF2b2NhZG8lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJDbG93biUyMGFzdHJvbmF1dCUyMGluJTIwc3BhY2UlMkMlMjB3aXRoJTIwRWFydGglMjBpbiUyMHRoZSUyMGJhY2tncm91bmQlMjIlMkMlMEElNUQ=",highlighted:`prompts = [ | |
| <span class="hljs-string">"Labrador in the style of Hokusai"</span>, | |
| <span class="hljs-string">"Painting of a squirrel skating in New York"</span>, | |
| <span class="hljs-string">"HAL-9000 in the style of Van Gogh"</span>, | |
| <span class="hljs-string">"Times Square under water, with fish and a dolphin swimming around"</span>, | |
| <span class="hljs-string">"Ancient Roman fresco showing a man working on his laptop"</span>, | |
| <span class="hljs-string">"Close-up photograph of young black woman against urban background, high quality, bokeh"</span>, | |
| <span class="hljs-string">"Armchair in the shape of an avocado"</span>, | |
| <span class="hljs-string">"Clown astronaut in space, with Earth in the background"</span>, | |
| ]`,wrap:!1}}),be=new b({props:{code:"cHJvbXB0X2lkcyUyMCUzRCUyMHBpcGVsaW5lLnByZXBhcmVfaW5wdXRzKHByb21wdHMpJTBBcHJvbXB0X2lkcyUyMCUzRCUyMHNoYXJkKHByb21wdF9pZHMpJTBBJTBBaW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0X2lkcyUyQyUyMHBfcGFyYW1zJTJDJTIwcm5nJTJDJTIwaml0JTNEVHJ1ZSkuaW1hZ2VzJTBBaW1hZ2VzJTIwJTNEJTIwaW1hZ2VzLnJlc2hhcGUoKGltYWdlcy5zaGFwZSU1QjAlNUQlMjAqJTIwaW1hZ2VzLnNoYXBlJTVCMSU1RCUyQyklMjAlMkIlMjBpbWFnZXMuc2hhcGUlNUItMyUzQSU1RCklMEFpbWFnZXMlMjAlM0QlMjBwaXBlbGluZS5udW1weV90b19waWwoaW1hZ2VzKSUwQSUwQWltYWdlX2dyaWQoaW1hZ2VzJTJDJTIwMiUyQyUyMDQp",highlighted:`prompt_ids = pipeline.prepare_inputs(prompts) | |
| prompt_ids = shard(prompt_ids) | |
| images = pipeline(prompt_ids, p_params, rng, jit=<span class="hljs-literal">True</span>).images | |
| images = images.reshape((images.shape[<span class="hljs-number">0</span>] * images.shape[<span class="hljs-number">1</span>],) + images.shape[-<span class="hljs-number">3</span>:]) | |
| images = pipeline.numpy_to_pil(images) | |
| image_grid(images, <span class="hljs-number">2</span>, <span class="hljs-number">4</span>)`,wrap:!1}}),Je=new J({props:{title:"๋ณ๋ ฌํ(parallelization)๋ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?",local:"๋ณ๋ ฌํparallelization๋-์ด๋ป๊ฒ-์๋ํ๋๊ฐ",headingTag:"h2"}}),he=new b({props:{code:"cF9nZW5lcmF0ZSUyMCUzRCUyMHBtYXAocGlwZWxpbmUuX2dlbmVyYXRlKQ==",highlighted:"p_generate = pmap(pipeline._generate)",wrap:!1}}),_e=new b({props:{code:"JTI1JTI1dGltZSUwQWltYWdlcyUyMCUzRCUyMHBfZ2VuZXJhdGUocHJvbXB0X2lkcyUyQyUyMHBfcGFyYW1zJTJDJTIwcm5nKSUwQWltYWdlcyUyMCUzRCUyMGltYWdlcy5ibG9ja191bnRpbF9yZWFkeSgpJTBBaW1hZ2VzLnNoYXBl",highlighted:`%%time | |
| images = p<span class="hljs-constructor">_generate(<span class="hljs-params">prompt_ids</span>, <span class="hljs-params">p_params</span>, <span class="hljs-params">rng</span>)</span> | |
| images = images.block<span class="hljs-constructor">_until_ready()</span> | |
| images.shape`,wrap:!1}}),Ie=new b({props:{code:"Q1BVJTIwdGltZXMlM0ElMjB1c2VyJTIwMW1pbiUyMDE1cyUyQyUyMHN5cyUzQSUyMDE4LjIlMjBzJTJDJTIwdG90YWwlM0ElMjAxbWluJTIwMzRzJTBBV2FsbCUyMHRpbWUlM0ElMjAxbWluJTIwMTVz",highlighted:`CPU times: user 1<span class="hljs-built_in">min</span> 15s, sys: <span class="hljs-number">18.2</span> s, total: 1<span class="hljs-built_in">min</span> 34s | |
| Wall time: 1<span class="hljs-built_in">min</span> 15s`,wrap:!1}}),ke=new b({props:{code:"aW1hZ2VzLnNoYXBl",highlighted:"images.shape",wrap:!1}}),xe=new b({props:{code:"KDglMkMlMjAxJTJDJTIwNTEyJTJDJTIwNTEyJTJDJTIwMyk=",highlighted:'(<span class="hljs-number">8</span>, <span class="hljs-number">1</span>, <span class="hljs-number">512</span>, <span class="hljs-number">512</span>, <span class="hljs-number">3</span>)',wrap:!1}}),Ge=new Ll({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/using-diffusers/stable_diffusion_jax_how_to.md"}}),{c(){u=n("meta"),Xe=a(),Ze=n("p"),He=a(),m(j.$$.fragment),Fe=a(),m($.$$.fragment),Ye=a(),c=n("p"),c.innerHTML=ll,Qe=a(),T=n("p"),T.innerHTML=sl,Ve=a(),d=n("p"),d.textContent=al,ze=a(),h=n("p"),h.textContent=pl,Re=a(),m(U.$$.fragment),Ne=a(),g=n("p"),g.textContent=nl,Se=a(),m(B.$$.fragment),Le=a(),m(C.$$.fragment),Ae=a(),m(_.$$.fragment),Pe=a(),m(I.$$.fragment),Ee=a(),k=n("p"),k.textContent=il,qe=a(),m(x.$$.fragment),De=a(),m(v.$$.fragment),Ke=a(),G=n("p"),G.textContent=ml,Oe=a(),m(Z.$$.fragment),et=a(),W=n("p"),W.textContent=Ml,tt=a(),m(X.$$.fragment),lt=a(),m(H.$$.fragment),st=a(),F=n("p"),F.textContent=fl,at=a(),Y=n("p"),Y.innerHTML=ol,pt=a(),m(Q.$$.fragment),nt=a(),m(V.$$.fragment),it=a(),m(z.$$.fragment),mt=a(),R=n("p"),R.innerHTML=yl,Mt=a(),m(N.$$.fragment),ft=a(),m(S.$$.fragment),ot=a(),m(L.$$.fragment),yt=a(),A=n("p"),A.innerHTML=wl,wt=a(),P=n("p"),P.textContent=rl,rt=a(),E=n("p"),E.textContent=bl,bt=a(),m(q.$$.fragment),ut=a(),D=n("p"),D.textContent=ul,Jt=a(),m(K.$$.fragment),jt=a(),O=n("p"),O.textContent=Jl,$t=a(),ee=n("p"),ee.innerHTML=jl,ct=a(),te=n("p"),te.textContent=$l,Tt=a(),m(le.$$.fragment),dt=a(),m(se.$$.fragment),ht=a(),ae=n("p"),ae.innerHTML=cl,Ut=a(),m(pe.$$.fragment),gt=a(),m(ne.$$.fragment),Bt=a(),ie=n("p"),ie.textContent=Tl,Ct=a(),m(me.$$.fragment),_t=a(),m(Me.$$.fragment),It=a(),fe=n("p"),fe.innerHTML=dl,kt=a(),m(oe.$$.fragment),xt=a(),ye=n("p"),ye.textContent=hl,vt=a(),we=n("p"),we.textContent=Ul,Gt=a(),m(re.$$.fragment),Zt=a(),m(be.$$.fragment),Wt=a(),ue=n("p"),ue.innerHTML=gl,Xt=a(),m(Je.$$.fragment),Ht=a(),je=n("p"),je.innerHTML=Bl,Ft=a(),$e=n("p"),$e.innerHTML=Cl,Yt=a(),ce=n("p"),ce.innerHTML=_l,Qt=a(),Te=n("ul"),Te.innerHTML=Il,Vt=a(),de=n("p"),de.innerHTML=kl,zt=a(),m(he.$$.fragment),Rt=a(),Ue=n("p"),Ue.innerHTML=xl,Nt=a(),ge=n("ul"),ge.innerHTML=vl,St=a(),Be=n("p"),Be.innerHTML=Gl,Lt=a(),Ce=n("p"),Ce.textContent=Zl,At=a(),m(_e.$$.fragment),Pt=a(),m(Ie.$$.fragment),Et=a(),m(ke.$$.fragment),qt=a(),m(xe.$$.fragment),Dt=a(),ve=n("p"),ve.innerHTML=Wl,Kt=a(),m(Ge.$$.fragment),Ot=a(),We=n("p"),this.h()},l(e){const t=Rl("svelte-u9bgzb",document.head);u=i(t,"META",{name:!0,content:!0}),t.forEach(l),Xe=p(e),Ze=i(e,"P",{}),Xl(Ze).forEach(l),He=p(e),M(j.$$.fragment,e),Fe=p(e),M($.$$.fragment,e),Ye=p(e),c=i(e,"P",{"data-svelte-h":!0}),r(c)!=="svelte-1gxtaje"&&(c.innerHTML=ll),Qe=p(e),T=i(e,"P",{"data-svelte-h":!0}),r(T)!=="svelte-1bumom2"&&(T.innerHTML=sl),Ve=p(e),d=i(e,"P",{"data-svelte-h":!0}),r(d)!=="svelte-17mi6da"&&(d.textContent=al),ze=p(e),h=i(e,"P",{"data-svelte-h":!0}),r(h)!=="svelte-hjgegg"&&(h.textContent=pl),Re=p(e),M(U.$$.fragment,e),Ne=p(e),g=i(e,"P",{"data-svelte-h":!0}),r(g)!=="svelte-17ncbx5"&&(g.textContent=nl),Se=p(e),M(B.$$.fragment,e),Le=p(e),M(C.$$.fragment,e),Ae=p(e),M(_.$$.fragment,e),Pe=p(e),M(I.$$.fragment,e),Ee=p(e),k=i(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-95k7v6"&&(k.textContent=il),qe=p(e),M(x.$$.fragment,e),De=p(e),M(v.$$.fragment,e),Ke=p(e),G=i(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-71fx65"&&(G.textContent=ml),Oe=p(e),M(Z.$$.fragment,e),et=p(e),W=i(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-1uvv4fp"&&(W.textContent=Ml),tt=p(e),M(X.$$.fragment,e),lt=p(e),M(H.$$.fragment,e),st=p(e),F=i(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-7wabl0"&&(F.textContent=fl),at=p(e),Y=i(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-13u2ylm"&&(Y.innerHTML=ol),pt=p(e),M(Q.$$.fragment,e),nt=p(e),M(V.$$.fragment,e),it=p(e),M(z.$$.fragment,e),mt=p(e),R=i(e,"P",{"data-svelte-h":!0}),r(R)!=="svelte-qzdgm1"&&(R.innerHTML=yl),Mt=p(e),M(N.$$.fragment,e),ft=p(e),M(S.$$.fragment,e),ot=p(e),M(L.$$.fragment,e),yt=p(e),A=i(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-i4vbvw"&&(A.innerHTML=wl),wt=p(e),P=i(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-1ghn5le"&&(P.textContent=rl),rt=p(e),E=i(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-1lcan7m"&&(E.textContent=bl),bt=p(e),M(q.$$.fragment,e),ut=p(e),D=i(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-1ngdgb0"&&(D.textContent=ul),Jt=p(e),M(K.$$.fragment,e),jt=p(e),O=i(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-103e30a"&&(O.textContent=Jl),$t=p(e),ee=i(e,"P",{"data-svelte-h":!0}),r(ee)!=="svelte-1sbamam"&&(ee.innerHTML=jl),ct=p(e),te=i(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-15bwfw"&&(te.textContent=$l),Tt=p(e),M(le.$$.fragment,e),dt=p(e),M(se.$$.fragment,e),ht=p(e),ae=i(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-1egnab9"&&(ae.innerHTML=cl),Ut=p(e),M(pe.$$.fragment,e),gt=p(e),M(ne.$$.fragment,e),Bt=p(e),ie=i(e,"P",{"data-svelte-h":!0}),r(ie)!=="svelte-1e76x5r"&&(ie.textContent=Tl),Ct=p(e),M(me.$$.fragment,e),_t=p(e),M(Me.$$.fragment,e),It=p(e),fe=i(e,"P",{"data-svelte-h":!0}),r(fe)!=="svelte-e1s2k"&&(fe.innerHTML=dl),kt=p(e),M(oe.$$.fragment,e),xt=p(e),ye=i(e,"P",{"data-svelte-h":!0}),r(ye)!=="svelte-1buolzv"&&(ye.textContent=hl),vt=p(e),we=i(e,"P",{"data-svelte-h":!0}),r(we)!=="svelte-1fscvnd"&&(we.textContent=Ul),Gt=p(e),M(re.$$.fragment,e),Zt=p(e),M(be.$$.fragment,e),Wt=p(e),ue=i(e,"P",{"data-svelte-h":!0}),r(ue)!=="svelte-1nea4f2"&&(ue.innerHTML=gl),Xt=p(e),M(Je.$$.fragment,e),Ht=p(e),je=i(e,"P",{"data-svelte-h":!0}),r(je)!=="svelte-1780g9f"&&(je.innerHTML=Bl),Ft=p(e),$e=i(e,"P",{"data-svelte-h":!0}),r($e)!=="svelte-d62kvx"&&($e.innerHTML=Cl),Yt=p(e),ce=i(e,"P",{"data-svelte-h":!0}),r(ce)!=="svelte-1ykkmgr"&&(ce.innerHTML=_l),Qt=p(e),Te=i(e,"UL",{"data-svelte-h":!0}),r(Te)!=="svelte-2aqcsn"&&(Te.innerHTML=Il),Vt=p(e),de=i(e,"P",{"data-svelte-h":!0}),r(de)!=="svelte-mu1la1"&&(de.innerHTML=kl),zt=p(e),M(he.$$.fragment,e),Rt=p(e),Ue=i(e,"P",{"data-svelte-h":!0}),r(Ue)!=="svelte-52cpde"&&(Ue.innerHTML=xl),Nt=p(e),ge=i(e,"UL",{"data-svelte-h":!0}),r(ge)!=="svelte-11847k7"&&(ge.innerHTML=vl),St=p(e),Be=i(e,"P",{"data-svelte-h":!0}),r(Be)!=="svelte-1x822d1"&&(Be.innerHTML=Gl),Lt=p(e),Ce=i(e,"P",{"data-svelte-h":!0}),r(Ce)!=="svelte-1ukvcj9"&&(Ce.textContent=Zl),At=p(e),M(_e.$$.fragment,e),Pt=p(e),M(Ie.$$.fragment,e),Et=p(e),M(ke.$$.fragment,e),qt=p(e),M(xe.$$.fragment,e),Dt=p(e),ve=i(e,"P",{"data-svelte-h":!0}),r(ve)!=="svelte-1s6my01"&&(ve.innerHTML=Wl),Kt=p(e),M(Ge.$$.fragment,e),Ot=p(e),We=i(e,"P",{}),Xl(We).forEach(l),this.h()},h(){Hl(u,"name","hf:doc:metadata"),Hl(u,"content",Pl)},m(e,t){Nl(document.head,u),s(e,Xe,t),s(e,Ze,t),s(e,He,t),f(j,e,t),s(e,Fe,t),f($,e,t),s(e,Ye,t),s(e,c,t),s(e,Qe,t),s(e,T,t),s(e,Ve,t),s(e,d,t),s(e,ze,t),s(e,h,t),s(e,Re,t),f(U,e,t),s(e,Ne,t),s(e,g,t),s(e,Se,t),f(B,e,t),s(e,Le,t),f(C,e,t),s(e,Ae,t),f(_,e,t),s(e,Pe,t),f(I,e,t),s(e,Ee,t),s(e,k,t),s(e,qe,t),f(x,e,t),s(e,De,t),f(v,e,t),s(e,Ke,t),s(e,G,t),s(e,Oe,t),f(Z,e,t),s(e,et,t),s(e,W,t),s(e,tt,t),f(X,e,t),s(e,lt,t),f(H,e,t),s(e,st,t),s(e,F,t),s(e,at,t),s(e,Y,t),s(e,pt,t),f(Q,e,t),s(e,nt,t),f(V,e,t),s(e,it,t),f(z,e,t),s(e,mt,t),s(e,R,t),s(e,Mt,t),f(N,e,t),s(e,ft,t),f(S,e,t),s(e,ot,t),f(L,e,t),s(e,yt,t),s(e,A,t),s(e,wt,t),s(e,P,t),s(e,rt,t),s(e,E,t),s(e,bt,t),f(q,e,t),s(e,ut,t),s(e,D,t),s(e,Jt,t),f(K,e,t),s(e,jt,t),s(e,O,t),s(e,$t,t),s(e,ee,t),s(e,ct,t),s(e,te,t),s(e,Tt,t),f(le,e,t),s(e,dt,t),f(se,e,t),s(e,ht,t),s(e,ae,t),s(e,Ut,t),f(pe,e,t),s(e,gt,t),f(ne,e,t),s(e,Bt,t),s(e,ie,t),s(e,Ct,t),f(me,e,t),s(e,_t,t),f(Me,e,t),s(e,It,t),s(e,fe,t),s(e,kt,t),f(oe,e,t),s(e,xt,t),s(e,ye,t),s(e,vt,t),s(e,we,t),s(e,Gt,t),f(re,e,t),s(e,Zt,t),f(be,e,t),s(e,Wt,t),s(e,ue,t),s(e,Xt,t),f(Je,e,t),s(e,Ht,t),s(e,je,t),s(e,Ft,t),s(e,$e,t),s(e,Yt,t),s(e,ce,t),s(e,Qt,t),s(e,Te,t),s(e,Vt,t),s(e,de,t),s(e,zt,t),f(he,e,t),s(e,Rt,t),s(e,Ue,t),s(e,Nt,t),s(e,ge,t),s(e,St,t),s(e,Be,t),s(e,Lt,t),s(e,Ce,t),s(e,At,t),f(_e,e,t),s(e,Pt,t),f(Ie,e,t),s(e,Et,t),f(ke,e,t),s(e,qt,t),f(xe,e,t),s(e,Dt,t),s(e,ve,t),s(e,Kt,t),f(Ge,e,t),s(e,Ot,t),s(e,We,t),el=!0},p:Yl,i(e){el||(o(j.$$.fragment,e),o($.$$.fragment,e),o(U.$$.fragment,e),o(B.$$.fragment,e),o(C.$$.fragment,e),o(_.$$.fragment,e),o(I.$$.fragment,e),o(x.$$.fragment,e),o(v.$$.fragment,e),o(Z.$$.fragment,e),o(X.$$.fragment,e),o(H.$$.fragment,e),o(Q.$$.fragment,e),o(V.$$.fragment,e),o(z.$$.fragment,e),o(N.$$.fragment,e),o(S.$$.fragment,e),o(L.$$.fragment,e),o(q.$$.fragment,e),o(K.$$.fragment,e),o(le.$$.fragment,e),o(se.$$.fragment,e),o(pe.$$.fragment,e),o(ne.$$.fragment,e),o(me.$$.fragment,e),o(Me.$$.fragment,e),o(oe.$$.fragment,e),o(re.$$.fragment,e),o(be.$$.fragment,e),o(Je.$$.fragment,e),o(he.$$.fragment,e),o(_e.$$.fragment,e),o(Ie.$$.fragment,e),o(ke.$$.fragment,e),o(xe.$$.fragment,e),o(Ge.$$.fragment,e),el=!0)},o(e){y(j.$$.fragment,e),y($.$$.fragment,e),y(U.$$.fragment,e),y(B.$$.fragment,e),y(C.$$.fragment,e),y(_.$$.fragment,e),y(I.$$.fragment,e),y(x.$$.fragment,e),y(v.$$.fragment,e),y(Z.$$.fragment,e),y(X.$$.fragment,e),y(H.$$.fragment,e),y(Q.$$.fragment,e),y(V.$$.fragment,e),y(z.$$.fragment,e),y(N.$$.fragment,e),y(S.$$.fragment,e),y(L.$$.fragment,e),y(q.$$.fragment,e),y(K.$$.fragment,e),y(le.$$.fragment,e),y(se.$$.fragment,e),y(pe.$$.fragment,e),y(ne.$$.fragment,e),y(me.$$.fragment,e),y(Me.$$.fragment,e),y(oe.$$.fragment,e),y(re.$$.fragment,e),y(be.$$.fragment,e),y(Je.$$.fragment,e),y(he.$$.fragment,e),y(_e.$$.fragment,e),y(Ie.$$.fragment,e),y(ke.$$.fragment,e),y(xe.$$.fragment,e),y(Ge.$$.fragment,e),el=!1},d(e){e&&(l(Xe),l(Ze),l(He),l(Fe),l(Ye),l(c),l(Qe),l(T),l(Ve),l(d),l(ze),l(h),l(Re),l(Ne),l(g),l(Se),l(Le),l(Ae),l(Pe),l(Ee),l(k),l(qe),l(De),l(Ke),l(G),l(Oe),l(et),l(W),l(tt),l(lt),l(st),l(F),l(at),l(Y),l(pt),l(nt),l(it),l(mt),l(R),l(Mt),l(ft),l(ot),l(yt),l(A),l(wt),l(P),l(rt),l(E),l(bt),l(ut),l(D),l(Jt),l(jt),l(O),l($t),l(ee),l(ct),l(te),l(Tt),l(dt),l(ht),l(ae),l(Ut),l(gt),l(Bt),l(ie),l(Ct),l(_t),l(It),l(fe),l(kt),l(xt),l(ye),l(vt),l(we),l(Gt),l(Zt),l(Wt),l(ue),l(Xt),l(Ht),l(je),l(Ft),l($e),l(Yt),l(ce),l(Qt),l(Te),l(Vt),l(de),l(zt),l(Rt),l(Ue),l(Nt),l(ge),l(St),l(Be),l(Lt),l(Ce),l(At),l(Pt),l(Et),l(qt),l(Dt),l(ve),l(Kt),l(Ot),l(We)),l(u),w(j,e),w($,e),w(U,e),w(B,e),w(C,e),w(_,e),w(I,e),w(x,e),w(v,e),w(Z,e),w(X,e),w(H,e),w(Q,e),w(V,e),w(z,e),w(N,e),w(S,e),w(L,e),w(q,e),w(K,e),w(le,e),w(se,e),w(pe,e),w(ne,e),w(me,e),w(Me,e),w(oe,e),w(re,e),w(be,e),w(Je,e),w(he,e),w(_e,e),w(Ie,e),w(ke,e),w(xe,e),w(Ge,e)}}}const Pl='{"title":"JAX / Flax์์์ ๐งจ Stable Diffusion!","local":"jax--flax์์์--stable-diffusion","sections":[{"title":"Setup","local":"setup","sections":[],"depth":2},{"title":"๋ชจ๋ธ ๋ถ๋ฌ์ค๊ธฐ","local":"๋ชจ๋ธ-๋ถ๋ฌ์ค๊ธฐ","sections":[],"depth":2},{"title":"์ถ๋ก ","local":"์ถ๋ก ","sections":[{"title":"๋ณต์ฌ(Replication) ๋ฐ ์ ๋ ฌํ","local":"๋ณต์ฌreplication-๋ฐ-์ ๋ ฌํ","sections":[],"depth":3},{"title":"์๊ฐํ","local":"์๊ฐํ","sections":[],"depth":3}],"depth":2},{"title":"๋ค๋ฅธ ํ๋กฌํํธ ์ฌ์ฉ","local":"๋ค๋ฅธ-ํ๋กฌํํธ-์ฌ์ฉ","sections":[],"depth":2},{"title":"๋ณ๋ ฌํ(parallelization)๋ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?","local":"๋ณ๋ ฌํparallelization๋-์ด๋ป๊ฒ-์๋ํ๋๊ฐ","sections":[],"depth":2}],"depth":1}';function El(tl){return Ql(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ts extends Vl{constructor(u){super(),zl(this,u,El,Al,Fl,{})}}export{ts as component}; | |
Xet Storage Details
- Size:
- 36.1 kB
- Xet hash:
- e2c1af84efe69e88e4853e8a15d48209615821d25a035589d810e67b3534c5e2
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.