Buckets:

rtrm's picture
download
raw
38.3 kB
import{s as Ba,f as ta,n as Ra,o as za}from"../chunks/scheduler.9bc65507.js";import{S as Ia,i as Na,g as p,s as l,r as V,m as y,H as u,A as Ea,h as m,f as t,c as e,j as ts,u as J,x as i,n as g,B as C,k as M,y as r,a as n,v as T,d as _,t as Q,w as k}from"../chunks/index.707bf1b6.js";import{C as na}from"../chunks/CodeBlock.54a9f38d.js";import{D as $a}from"../chunks/DocNotebookDropdown.41f65cb5.js";import{H as la,E as Sa}from"../chunks/EditOnGithub.922df6ba.js";function Ga(ea){let d,ns,ss,ls,F,es,j,ps,B,pa=`펄플렉서티(Perplexity, PPL)는 가장 일반적인 언어 모델 평가지표 중 하나입니다.
자세히 알아보기 전에 이 평가지표는 고전적인 언어 모델(자기회귀 또는 인과적 언어 모델이라고도 함)에만 적용되며 BERT와 같은 마스킹된 언어 모델에는 잘 적용하지 않습니다 (BERT는 <a href="../en/model_summary">summary of the models</a> 문서를 참고하세요).`,ms,o,Ds,is,xa='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>X</mi><mo>=</mo><mo stretchy="false">(</mo><msub><mi>x</mi><mn>0</mn></msub><mo separator="true">,</mo><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><mo>…</mo><mo separator="true">,</mo><msub><mi>x</mi><mi>t</mi></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">X = (x_0, x_1, \\dots, x_t)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.07847em;">X</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner">…</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>',rs,os,Va='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>X</mi></mrow><annotation encoding="application/x-tex">X</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.07847em;">X</span></span></span></span>',cs,hs,Ja='<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>PPL</mtext><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo><mo>=</mo><mi>exp</mi><mo>⁡</mo><mrow><mo fence="true">{</mo><mrow><mo>−</mo><mfrac><mn>1</mn><mi>t</mi></mfrac><munderover><mo>∑</mo><mi>i</mi><mi>t</mi></munderover><mi>log</mi><mo>⁡</mo><msub><mi>p</mi><mi>θ</mi></msub><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mi mathvariant="normal">∣</mi><msub><mi>x</mi><mrow><mo>&lt;</mo><mi>i</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mo fence="true">}</mo></mrow></mrow><annotation encoding="application/x-tex">\\text{PPL}(X) = \\exp \\left\\{ {-\\frac{1}{t}\\sum_i^t \\log p_\\theta (x_i|x_{&lt;i}) } \\right\\}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord text"><span class="mord">PPL</span></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.07847em;">X</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:3.0582em;vertical-align:-1.2777em;"></span><span class="mop">exp</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">t</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.7806em;"><span style="top:-1.8723em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span><span style="top:-3.05em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.2777em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">lo<span style="margin-right:0.01389em;">g</span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">∣</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mrel mtight">&lt;</span><span class="mord mathnormal mtight">i</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.1774em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size4">}</span></span></span></span></span></span></span>',ys,gs,Ta='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>log</mi><mo>⁡</mo><msub><mi>p</mi><mi>θ</mi></msub><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mi mathvariant="normal">∣</mi><msub><mi>x</mi><mrow><mo>&lt;</mo><mi>i</mi></mrow></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\\log p_\\theta (x_i|x_{&lt;i})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mop">lo<span style="margin-right:0.01389em;">g</span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">∣</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mrel mtight">&lt;</span><span class="mord mathnormal mtight">i</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.1774em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>',Ms,Us,R,ma=`직관적으로 말뭉치에서 지정된 토큰 집합을 균일하게 예측하는 모델의 능력에 대한 평가로 생각할 수 있습니다.
중요한 점은 토큰화 과정이 모델의 펄플렉서티에 직접적인 영향을 미치므로 서로 다른 모델을 비교할 때 항상 이를 고려해야 합니다.`,ds,z,ia=`이는 데이터와 모델 예측 간의 cross-entropy 값에 지수를 취한 것과 동일합니다.
펄플렉서티와 문자당 비트 수(BPC) 및 데이터 압축과의 관계에 대해 더 직관적인 이해를 원하신다면 다음 글
<a href="https://thegradient.pub/understanding-evaluation-metrics-for-language-models/" rel="nofollow">fantastic blog post on The Gradient</a>을 확인하세요.`,us,I,Cs,N,ra=`모델의 컨텍스트 크기가 정해져있지 않다면,
아래와 같이 시퀀스를 자동 회귀적으로 분해하고 각 단계에서 선행 하는 전체 시퀀스를 조건부 확률에 넣어 모델의 펄플렉서티를 계산할 것입니다.`,ws,w,oa,vs,c,Ks,E,ca="GPT-2",sa,fs,_a='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi></mrow><annotation encoding="application/x-tex">t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6151em;"></span><span class="mord mathnormal">t</span></span></span></span>',bs,xs,Qa='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>p</mi><mi>θ</mi></msub><mo stretchy="false">(</mo><msub><mi>x</mi><mi>t</mi></msub><mi mathvariant="normal">∣</mi><msub><mi>x</mi><mrow><mo>&lt;</mo><mi>t</mi></mrow></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">p_\\theta(x_t|x_{&lt;t})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">∣</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mrel mtight">&lt;</span><span class="mord mathnormal mtight">t</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.1774em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>',Vs,Js,h,aa,Ts,ka='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi></mrow><annotation encoding="application/x-tex">k</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span></span></span></span>',_s,Qs,Fa='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>t</mi></msub></mrow><annotation encoding="application/x-tex">x_t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">t</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>',ks,Fs,ja='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7778em;vertical-align:-0.0833em;"></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>',js,Bs,$,ha=`모델의 시퀀스에 대한 펄플렉서티를 계산할 때,
수월하지만 차선책은 시퀀스를 청크로 쪼개고 분해된 각 부분의 로그 우도 값을 독립적으로 합산하는 것입니다.`,Rs,v,ya,zs,S,ga=`이 방법은 각 부분의 펄플렉서티를 한 번의 포워드 패스로 계산할 수 있어 빠르지만 일반적으로 더 높은(더 나쁜) PPL을 산출합니다.
왜냐하면 대부분의 예측 단계에서 모델의 컨텍스트가 적기 때문입니다.`,Is,G,Ma=`대신, 고정 길이 모델의 PPL은 슬라이딩 윈도우 전략으로 평가해야 합니다.
이 전략에는 컨텍스트 윈도우을 반복적으로 슬라이딩해 모델이 각 예측을 수행할 때 더 많은 컨텍스트를 갖도록 하는 작업이 포함됩니다.`,Ns,f,Ua,Es,P,da=`이는 시퀀스 확률의 실제 분해에 더 가까운 근사치이며 일반적으로 더 유리한 점수를 산출합니다.
단점은 말뭉치의 각 토큰에 대해 별도의 포워드 패스가 필요하다는 것입니다.
현실적으로 좋은 절충안은 한 번에 한 토큰씩 슬라이딩하는 것이 아니라 더 큰 간격으로 컨텍스트를 이동하는 스트라이드가 적용된 슬라이딩 윈도우을 사용하는 것입니다.
이렇게 하면 계산을 훨씬 더 빠르게 진행하면서도 모델에 각 단계에서 예측을 수행할 수 있는 긴 컨텍스트를 제공할 수 있습니다.`,$s,Z,Ss,W,ua="이제 GPT-2로 위의 과정을 시연해 보겠습니다.",Gs,L,Ps,X,Ca=`WikiText-2 데이터 세트를 가져오고 몇 가지 슬라이딩 윈도우 전략을 사용해 펄플렉서티를 계산해보겠습니다.
이 데이터 세트는 크기가 작고 포워드 패스 한 번만 수행하기 때문에 전체 데이터 세트를 메모리에 가져오고 인코딩할 수 있습니다.`,Zs,H,Ws,A,wa=`🤗 Transformers를 사용하면 모델의 <code>labels</code>로 <code>input_ids</code>를 전달해 각 토큰에 대한 평균 음의 우도 값을 손실로 반환할 수 있습니다.
하지만 슬라이딩 윈도우 방식을 사용하면 각 반복마다 모델에 전달하는 토큰이 겹칩니다.
컨텍스트로 처리하는 토큰에 대한 로그 우도 값이 손실에 포함되는 것을 원하지 않기 때문에 이러한 토큰의 <code>input_ids</code>를 <code>-100</code>으로 설정하여 무시할 수 있습니다.`,Ls,O,va=`다음은 스트라이드(stride)를 <code>512</code>로 사용한 예시입니다.
즉, 모델이 한 토큰의 조건부 우도 값을 계산할 때 컨텍스트에 최소한 512개의 토큰이 포함되어있다는 의미입니다 (해당 토큰 앞에 512개의 토큰이 있는 경우).`,Xs,Y,Hs,q,fa=`스트라이드를 최대 입력 길이와 동일하게 설정하면 위에서 설명한 차선책인 비슬라이딩 윈도우 전략과 동일합니다.
일반적으로 스트라이드가 작을수록 모델이 각 예측을 할 때 더 많은 컨텍스트를 볼 수 있게 되어 펄플렉서티 값이 좋아집니다.`,As,D,ba=`위의 계산을 토큰이 겹치지 않도록 <code>stride = 1024</code>로 설정하면 PPL은 <code>19.44</code>로 GPT-2 논문에서 보고된 <code>19.93</code>과 거의 동일합니다.
<code>stride = 512</code>로 슬라이딩 윈도우 전략을 사용하면 PPL은 <code>16.45</code>로 떨어집니다.
이는 더 좋은 점수일 뿐만 아니라 시퀀스 확률의 실제 자동 회귀 분해에 더 가까운 방식으로 계산됩니다.`,Os,K,Ys,as,qs;return F=new la({props:{title:"고정 길이 모델의 펄플렉서티(Perplexity)",local:"perplexity-of-fixedlength-models",headingTag:"h1"}}),j=new $a({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/perplexity.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/perplexity.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/perplexity.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/perplexity.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/perplexity.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/perplexity.ipynb"}]}}),I=new la({props:{title:"고정 길이 모델의 펄플렉서티(PPL) 계산하기",local:"calculating-ppl-with-fixedlength-models",headingTag:"h2"}}),Z=new la({props:{title:"예제: 🤗 Transformers에서 GPT-2로 펄플렉서티(perplexity) 계산하기",local:"example-calculating-perplexity-with-gpt2-in-transformers",headingTag:"h2"}}),L=new na({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEdQVDJMTUhlYWRNb2RlbCUyQyUyMEdQVDJUb2tlbml6ZXJGYXN0JTBBJTBBZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUwQW1vZGVsX2lkJTIwJTNEJTIwJTIyb3BlbmFpLWNvbW11bml0eSUyRmdwdDItbGFyZ2UlMjIlMEFtb2RlbCUyMCUzRCUyMEdQVDJMTUhlYWRNb2RlbC5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQpLnRvKGRldmljZSklMEF0b2tlbml6ZXIlMjAlM0QlMjBHUFQyVG9rZW5pemVyRmFzdC5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> GPT2LMHeadModel, GPT2TokenizerFast
device = <span class="hljs-string">&quot;cuda&quot;</span>
model_id = <span class="hljs-string">&quot;openai-community/gpt2-large&quot;</span>
model = GPT2LMHeadModel.from_pretrained(model_id).to(device)
tokenizer = GPT2TokenizerFast.from_pretrained(model_id)`,wrap:!1}}),H=new na({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBdGVzdCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJ3aWtpdGV4dCUyMiUyQyUyMCUyMndpa2l0ZXh0LTItcmF3LXYxJTIyJTJDJTIwc3BsaXQlM0QlMjJ0ZXN0JTIyKSUwQWVuY29kaW5ncyUyMCUzRCUyMHRva2VuaXplciglMjIlNUNuJTVDbiUyMi5qb2luKHRlc3QlNUIlMjJ0ZXh0JTIyJTVEKSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
test = load_dataset(<span class="hljs-string">&quot;wikitext&quot;</span>, <span class="hljs-string">&quot;wikitext-2-raw-v1&quot;</span>, split=<span class="hljs-string">&quot;test&quot;</span>)
encodings = tokenizer(<span class="hljs-string">&quot;\\n\\n&quot;</span>.join(test[<span class="hljs-string">&quot;text&quot;</span>]), return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)`,wrap:!1}}),Y=new na({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHFkbSUyMGltcG9ydCUyMHRxZG0lMEElMEFtYXhfbGVuZ3RoJTIwJTNEJTIwbW9kZWwuY29uZmlnLm5fcG9zaXRpb25zJTBBc3RyaWRlJTIwJTNEJTIwNTEyJTBBc2VxX2xlbiUyMCUzRCUyMGVuY29kaW5ncy5pbnB1dF9pZHMuc2l6ZSgxKSUwQSUwQW5sbHMlMjAlM0QlMjAlNUIlNUQlMEFwcmV2X2VuZF9sb2MlMjAlM0QlMjAwJTBBZm9yJTIwYmVnaW5fbG9jJTIwaW4lMjB0cWRtKHJhbmdlKDAlMkMlMjBzZXFfbGVuJTJDJTIwc3RyaWRlKSklM0ElMEElMjAlMjAlMjAlMjBlbmRfbG9jJTIwJTNEJTIwbWluKGJlZ2luX2xvYyUyMCUyQiUyMG1heF9sZW5ndGglMkMlMjBzZXFfbGVuKSUwQSUyMCUyMCUyMCUyMHRyZ19sZW4lMjAlM0QlMjBlbmRfbG9jJTIwLSUyMHByZXZfZW5kX2xvYyUyMCUyMCUyMyUyMCVFQiVBNyU4OCVFQyVBNyU4MCVFQiVBNyU4OSUyMCVFQiVBMyVBOCVFRCU5NCU4NCVFQyU5RCU5OCUyMCVFQyU4QSVBNCVFRCU4QSVCOCVFQiU5RCVCQyVFQyU5RCVCNCVFQiU5MyU5QyUyMCVFQSVCMCU5MiVFQSVCMyVCQyUyMCVFQiU4QiVBNCVFQiVBNSVCQyUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQyU5RCU4QyUwQSUyMCUyMCUyMCUyMGlucHV0X2lkcyUyMCUzRCUyMGVuY29kaW5ncy5pbnB1dF9pZHMlNUIlM0ElMkMlMjBiZWdpbl9sb2MlM0FlbmRfbG9jJTVELnRvKGRldmljZSklMEElMjAlMjAlMjAlMjB0YXJnZXRfaWRzJTIwJTNEJTIwaW5wdXRfaWRzLmNsb25lKCklMEElMjAlMjAlMjAlMjB0YXJnZXRfaWRzJTVCJTNBJTJDJTIwJTNBLXRyZ19sZW4lNUQlMjAlM0QlMjAtMTAwJTBBJTBBJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG91dHB1dHMlMjAlM0QlMjBtb2RlbChpbnB1dF9pZHMlMkMlMjBsYWJlbHMlM0R0YXJnZXRfaWRzKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQyU4NiU5MCVFQyU4QiVBNCVFQyU5RCU4MCUyMCVFQiVBQSVBOCVFQiU5MyVBMCUyMCVFQyU5QyVBMCVFRCU5QSVBOCVFRCU5NSU5QyUyMCVFQiVBMCU4OCVFQyU5RCVCNCVFQiVCOCU5NCVFQyU5NyU5MCUyMCVFQiU4QyU4MCVFRCU5NSU5QyUyMCVFRCU4RiU4OSVFQSVCNyVBMCVFQSVCMCU5MiVFQyU5RCU4NCUyMCVFQSVCNSVBQyVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQSVCNSU5MCVFQyVCMCVBOCUyMCVFQyU5NyU5NCVFRCU4QSVCOCVFQiVBMSU5QyVFRCU5NCVCQyhjcm9zcyUyMGVudHJvcHkpJUVCJUExJTlDJTIwJUVBJUIzJTg0JUVDJTgyJUIwJUVCJTkwJUE5JUVCJThCJTg4JUVCJThCJUE0LiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQiU4MiU5OCVFQyU5RCVCNCVFQiVCOCU4QyUyMCVFQiVCMiVBMCVFQyU5RCVCNCVFQyVBNyU4MCVFQyU5NSU4OCUyMCVFQiVBQSVBOCVFQiU4RCVCOCVFQyU5RCU4MCUyMCVFQiU4MiVCNCVFQiVCNiU4MCVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQiVBMCU4OCVFQyU5RCVCNCVFQiVCOCU5NCVFQyU5RCU4NCUyMCVFQyU5OSVCQyVFQyVBQSVCRCVFQyU5QyVCQyVFQiVBMSU5QyUyMDElRUElQjAlOUMlRUMlOTQlQTklMjAlRUIlQjAlODAlRUElQjglQjAlMjAlRUIlOTUlOEMlRUIlQUMlQjglRUMlOTclOTAlMkMlMjAoJUVEJTgzJTgwJUVDJUJDJTkzJTIwLSUyMDEpJUVBJUIwJTlDJTIwJUVCJUE3JThDJUVEJTgxJUJDJUVDJTlEJTk4JTIwJUVCJUEwJTg4JUVDJTlEJUI0JUVCJUI4JTk0JUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JUI0JTIwJUVDJTg2JTkwJUVDJThCJUE0JUVDJTlEJTg0JTIwJUVBJUIzJTg0JUVDJTgyJUIwJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG5lZ19sb2dfbGlrZWxpaG9vZCUyMCUzRCUyMG91dHB1dHMubG9zcyUwQSUwQSUyMCUyMCUyMCUyMG5sbHMuYXBwZW5kKG5lZ19sb2dfbGlrZWxpaG9vZCklMEElMEElMjAlMjAlMjAlMjBwcmV2X2VuZF9sb2MlMjAlM0QlMjBlbmRfbG9jJTBBJTIwJTIwJTIwJTIwaWYlMjBlbmRfbG9jJTIwJTNEJTNEJTIwc2VxX2xlbiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJyZWFrJTBBJTBBcHBsJTIwJTNEJTIwdG9yY2guZXhwKHRvcmNoLnN0YWNrKG5sbHMpLm1lYW4oKSk=",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm
max_length = model.config.n_positions
stride = <span class="hljs-number">512</span>
seq_len = encodings.input_ids.size(<span class="hljs-number">1</span>)
nlls = []
prev_end_loc = <span class="hljs-number">0</span>
<span class="hljs-keyword">for</span> begin_loc <span class="hljs-keyword">in</span> tqdm(<span class="hljs-built_in">range</span>(<span class="hljs-number">0</span>, seq_len, stride)):
end_loc = <span class="hljs-built_in">min</span>(begin_loc + max_length, seq_len)
trg_len = end_loc - prev_end_loc <span class="hljs-comment"># 마지막 루프의 스트라이드 값과 다를 수 있음</span>
input_ids = encodings.input_ids[:, begin_loc:end_loc].to(device)
target_ids = input_ids.clone()
target_ids[:, :-trg_len] = -<span class="hljs-number">100</span>
<span class="hljs-keyword">with</span> torch.no_grad():
outputs = model(input_ids, labels=target_ids)
<span class="hljs-comment"># 손실은 모든 유효한 레이블에 대한 평균값을 구하는 교차 엔트로피(cross entropy)로 계산됩니다.</span>
<span class="hljs-comment"># 나이브 베이지안 모델은 내부적으로 레이블을 왼쪽으로 1개씩 밀기 때문에, (타켓 - 1)개 만큼의 레이블에 대해 손실을 계산합니다.</span>
neg_log_likelihood = outputs.loss
nlls.append(neg_log_likelihood)
prev_end_loc = end_loc
<span class="hljs-keyword">if</span> end_loc == seq_len:
<span class="hljs-keyword">break</span>
ppl = torch.exp(torch.stack(nlls).mean())`,wrap:!1}}),K=new Sa({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ko/perplexity.md"}}),{c(){d=p("meta"),ns=l(),ss=p("p"),ls=l(),V(F.$$.fragment),es=l(),V(j.$$.fragment),ps=l(),B=p("p"),B.innerHTML=pa,ms=l(),o=p("p"),Ds=y(`펄플렉서티는 시퀀스의 음의 로그 우도(negative log-likelihood, NLL) 값의 평균에 지수(exponentiate)를 취한 값으로 정의됩니다.
토큰화된 시퀀스`),is=new u(!1),rs=y(" 가 있을 때,"),os=new u(!1),cs=y(` 의 펄플렉서티는 아래 수식과 같이 구할 수 있습니다.
`),hs=new u(!1),ys=l(),gs=new u(!1),Ms=y(" 는 모델에 i번째 이전까지 토큰이 주어졌을 때 i번째 토큰의 로그 우도값입니다."),Us=l(),R=p("p"),R.textContent=ma,ds=l(),z=p("p"),z.innerHTML=ia,us=l(),V(I.$$.fragment),Cs=l(),N=p("p"),N.textContent=ra,ws=l(),w=p("img"),vs=l(),c=p("p"),Ks=y(`그러나 모델의 근사치를 구할 때는 일반적으로 모델이 처리할 수 있는 토큰 수에 제한이 있습니다.
예를 들어, 가장 큰 버전의 `),E=p("a"),E.textContent=ca,sa=y(`는 토큰의 길이가 1024로 고정되어 있습니다.
따라서`),fs=new u(!1),bs=y(" 가 1024보다 큰 경우에"),xs=new u(!1),Vs=y(" 을 계산할 수 없습니다."),Js=l(),h=p("p"),aa=y(`대신 시퀀스는 일반적으로 모델의 최대 입력 크기와 동일한 길이는 가지는 부분 시퀀스로 쪼갭니다.
만약 모델의 최대 입력 길이가`),Ts=new u(!1),_s=y(` 라면,
토큰`),Qs=new u(!1),ks=y(" 의 우도 값을 계산할 때 이전 토큰을 모두 사용하지 않고,"),Fs=new u(!1),js=y(" 토큰까지 사용해 대략적인 우도 값을 추정합니다."),Bs=l(),$=p("p"),$.textContent=ha,Rs=l(),v=p("img"),zs=l(),S=p("p"),S.textContent=ga,Is=l(),G=p("p"),G.textContent=Ma,Ns=l(),f=p("img"),Es=l(),P=p("p"),P.textContent=da,$s=l(),V(Z.$$.fragment),Ss=l(),W=p("p"),W.textContent=ua,Gs=l(),V(L.$$.fragment),Ps=l(),X=p("p"),X.textContent=Ca,Zs=l(),V(H.$$.fragment),Ws=l(),A=p("p"),A.innerHTML=wa,Ls=l(),O=p("p"),O.innerHTML=va,Xs=l(),V(Y.$$.fragment),Hs=l(),q=p("p"),q.textContent=fa,As=l(),D=p("p"),D.innerHTML=ba,Os=l(),V(K.$$.fragment),Ys=l(),as=p("p"),this.h()},l(s){const a=Ea("svelte-u9bgzb",document.head);d=m(a,"META",{name:!0,content:!0}),a.forEach(t),ns=e(s),ss=m(s,"P",{}),ts(ss).forEach(t),ls=e(s),J(F.$$.fragment,s),es=e(s),J(j.$$.fragment,s),ps=e(s),B=m(s,"P",{"data-svelte-h":!0}),i(B)!=="svelte-11w5q0v"&&(B.innerHTML=pa),ms=e(s),o=m(s,"P",{});var U=ts(o);Ds=g(U,`펄플렉서티는 시퀀스의 음의 로그 우도(negative log-likelihood, NLL) 값의 평균에 지수(exponentiate)를 취한 값으로 정의됩니다.
토큰화된 시퀀스`),is=C(U,!1),rs=g(U," 가 있을 때,"),os=C(U,!1),cs=g(U,` 의 펄플렉서티는 아래 수식과 같이 구할 수 있습니다.
`),hs=C(U,!1),ys=e(U),gs=C(U,!1),Ms=g(U," 는 모델에 i번째 이전까지 토큰이 주어졌을 때 i번째 토큰의 로그 우도값입니다."),U.forEach(t),Us=e(s),R=m(s,"P",{"data-svelte-h":!0}),i(R)!=="svelte-1b4v3xq"&&(R.textContent=ma),ds=e(s),z=m(s,"P",{"data-svelte-h":!0}),i(z)!=="svelte-33m9h2"&&(z.innerHTML=ia),us=e(s),J(I.$$.fragment,s),Cs=e(s),N=m(s,"P",{"data-svelte-h":!0}),i(N)!=="svelte-1sg414w"&&(N.textContent=ra),ws=e(s),w=m(s,"IMG",{width:!0,alt:!0,src:!0}),vs=e(s),c=m(s,"P",{});var b=ts(c);Ks=g(b,`그러나 모델의 근사치를 구할 때는 일반적으로 모델이 처리할 수 있는 토큰 수에 제한이 있습니다.
예를 들어, 가장 큰 버전의 `),E=m(b,"A",{href:!0,"data-svelte-h":!0}),i(E)!=="svelte-1kdeo4m"&&(E.textContent=ca),sa=g(b,`는 토큰의 길이가 1024로 고정되어 있습니다.
따라서`),fs=C(b,!1),bs=g(b," 가 1024보다 큰 경우에"),xs=C(b,!1),Vs=g(b," 을 계산할 수 없습니다."),b.forEach(t),Js=e(s),h=m(s,"P",{});var x=ts(h);aa=g(x,`대신 시퀀스는 일반적으로 모델의 최대 입력 크기와 동일한 길이는 가지는 부분 시퀀스로 쪼갭니다.
만약 모델의 최대 입력 길이가`),Ts=C(x,!1),_s=g(x,` 라면,
토큰`),Qs=C(x,!1),ks=g(x," 의 우도 값을 계산할 때 이전 토큰을 모두 사용하지 않고,"),Fs=C(x,!1),js=g(x," 토큰까지 사용해 대략적인 우도 값을 추정합니다."),x.forEach(t),Bs=e(s),$=m(s,"P",{"data-svelte-h":!0}),i($)!=="svelte-p30g18"&&($.textContent=ha),Rs=e(s),v=m(s,"IMG",{width:!0,alt:!0,src:!0}),zs=e(s),S=m(s,"P",{"data-svelte-h":!0}),i(S)!=="svelte-1b7o98p"&&(S.textContent=ga),Is=e(s),G=m(s,"P",{"data-svelte-h":!0}),i(G)!=="svelte-10v5nla"&&(G.textContent=Ma),Ns=e(s),f=m(s,"IMG",{width:!0,alt:!0,src:!0}),Es=e(s),P=m(s,"P",{"data-svelte-h":!0}),i(P)!=="svelte-1bx3afe"&&(P.textContent=da),$s=e(s),J(Z.$$.fragment,s),Ss=e(s),W=m(s,"P",{"data-svelte-h":!0}),i(W)!=="svelte-1scr742"&&(W.textContent=ua),Gs=e(s),J(L.$$.fragment,s),Ps=e(s),X=m(s,"P",{"data-svelte-h":!0}),i(X)!=="svelte-g326s0"&&(X.textContent=Ca),Zs=e(s),J(H.$$.fragment,s),Ws=e(s),A=m(s,"P",{"data-svelte-h":!0}),i(A)!=="svelte-aa9p9w"&&(A.innerHTML=wa),Ls=e(s),O=m(s,"P",{"data-svelte-h":!0}),i(O)!=="svelte-bou0a7"&&(O.innerHTML=va),Xs=e(s),J(Y.$$.fragment,s),Hs=e(s),q=m(s,"P",{"data-svelte-h":!0}),i(q)!=="svelte-1ro3gyl"&&(q.textContent=fa),As=e(s),D=m(s,"P",{"data-svelte-h":!0}),i(D)!=="svelte-1cfqojp"&&(D.innerHTML=ba),Os=e(s),J(K.$$.fragment,s),Ys=e(s),as=m(s,"P",{}),ts(as).forEach(t),this.h()},h(){M(d,"name","hf:doc:metadata"),M(d,"content",Pa),is.a=rs,os.a=cs,hs.a=ys,gs.a=Ms,M(w,"width","600"),M(w,"alt","Full decomposition of a sequence with unlimited context length"),ta(w.src,oa="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/ppl_full.gif")||M(w,"src",oa),M(E,"href","model_doc/gpt2"),fs.a=bs,xs.a=Vs,Ts.a=_s,Qs.a=ks,Fs.a=js,M(v,"width","600"),M(v,"alt","Suboptimal PPL not taking advantage of full available context"),ta(v.src,ya="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/ppl_chunked.gif")||M(v,"src",ya),M(f,"width","600"),M(f,"alt","Sliding window PPL taking advantage of all available context"),ta(f.src,Ua="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/ppl_sliding.gif")||M(f,"src",Ua)},m(s,a){r(document.head,d),n(s,ns,a),n(s,ss,a),n(s,ls,a),T(F,s,a),n(s,es,a),T(j,s,a),n(s,ps,a),n(s,B,a),n(s,ms,a),n(s,o,a),r(o,Ds),is.m(xa,o),r(o,rs),os.m(Va,o),r(o,cs),hs.m(Ja,o),r(o,ys),gs.m(Ta,o),r(o,Ms),n(s,Us,a),n(s,R,a),n(s,ds,a),n(s,z,a),n(s,us,a),T(I,s,a),n(s,Cs,a),n(s,N,a),n(s,ws,a),n(s,w,a),n(s,vs,a),n(s,c,a),r(c,Ks),r(c,E),r(c,sa),fs.m(_a,c),r(c,bs),xs.m(Qa,c),r(c,Vs),n(s,Js,a),n(s,h,a),r(h,aa),Ts.m(ka,h),r(h,_s),Qs.m(Fa,h),r(h,ks),Fs.m(ja,h),r(h,js),n(s,Bs,a),n(s,$,a),n(s,Rs,a),n(s,v,a),n(s,zs,a),n(s,S,a),n(s,Is,a),n(s,G,a),n(s,Ns,a),n(s,f,a),n(s,Es,a),n(s,P,a),n(s,$s,a),T(Z,s,a),n(s,Ss,a),n(s,W,a),n(s,Gs,a),T(L,s,a),n(s,Ps,a),n(s,X,a),n(s,Zs,a),T(H,s,a),n(s,Ws,a),n(s,A,a),n(s,Ls,a),n(s,O,a),n(s,Xs,a),T(Y,s,a),n(s,Hs,a),n(s,q,a),n(s,As,a),n(s,D,a),n(s,Os,a),T(K,s,a),n(s,Ys,a),n(s,as,a),qs=!0},p:Ra,i(s){qs||(_(F.$$.fragment,s),_(j.$$.fragment,s),_(I.$$.fragment,s),_(Z.$$.fragment,s),_(L.$$.fragment,s),_(H.$$.fragment,s),_(Y.$$.fragment,s),_(K.$$.fragment,s),qs=!0)},o(s){Q(F.$$.fragment,s),Q(j.$$.fragment,s),Q(I.$$.fragment,s),Q(Z.$$.fragment,s),Q(L.$$.fragment,s),Q(H.$$.fragment,s),Q(Y.$$.fragment,s),Q(K.$$.fragment,s),qs=!1},d(s){s&&(t(ns),t(ss),t(ls),t(es),t(ps),t(B),t(ms),t(o),t(Us),t(R),t(ds),t(z),t(us),t(Cs),t(N),t(ws),t(w),t(vs),t(c),t(Js),t(h),t(Bs),t($),t(Rs),t(v),t(zs),t(S),t(Is),t(G),t(Ns),t(f),t(Es),t(P),t($s),t(Ss),t(W),t(Gs),t(Ps),t(X),t(Zs),t(Ws),t(A),t(Ls),t(O),t(Xs),t(Hs),t(q),t(As),t(D),t(Os),t(Ys),t(as)),t(d),k(F,s),k(j,s),k(I,s),k(Z,s),k(L,s),k(H,s),k(Y,s),k(K,s)}}}const Pa='{"title":"고정 길이 모델의 펄플렉서티(Perplexity)","local":"perplexity-of-fixedlength-models","sections":[{"title":"고정 길이 모델의 펄플렉서티(PPL) 계산하기","local":"calculating-ppl-with-fixedlength-models","sections":[],"depth":2},{"title":"예제: 🤗 Transformers에서 GPT-2로 펄플렉서티(perplexity) 계산하기","local":"example-calculating-perplexity-with-gpt2-in-transformers","sections":[],"depth":2}],"depth":1}';function Za(ea){return za(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Oa extends Ia{constructor(d){super(),Na(this,d,Za,Ga,Ba,{})}}export{Oa as component};

Xet Storage Details

Size:
38.3 kB
·
Xet hash:
ee5a67d0ec0c27e43a535f2e158e582135223ce39f249a2a9757cfa17ae1f802

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.