import{s as gl,o as Jl}from"../chunks/scheduler.37c15a92.js";import{S as jl,i as Cl,g as d,s as f,r as M,A as vl,h as _,f as s,c as p,j as Tl,u as y,x as b,k as wl,y as Ul,a as o,v as $,t as m,b as ve,d as c,w as T,p as Ue}from"../chunks/index.2bf4358c.js";import{Y as hl}from"../chunks/Youtube.1e50a667.js";import{C as k}from"../chunks/CodeBlock.4f5fc1ad.js";import{D as kl}from"../chunks/DocNotebookDropdown.d9dfeb24.js";import{F as Zl}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Ge}from"../chunks/Heading.8ada512a.js";function Bl(u){let l,r;return l=new kl({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter2/section3_tf.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Wl(u){let l,r;return l=new kl({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter2/section3_pt.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function xl(u){let l,r;return l=new hl({props:{id:"d3JVgghSOew"}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function El(u){let l,r;return l=new hl({props:{id:"AhChOFRegn4"}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Il(u){let l,r="이번 섹션에서는 모델을 생성하고 사용하는 방법에 대해 자세히 알아보겠습니다. 체크포인트에서 모델을 인스턴스화하는 데 유용한 <code>TFAutoModel</code> 클래스를 사용할 것입니다.",t,i,w="이 <code>TFAutoModel</code> 클래스와 관련 클래스들은 실제로 라이브러리에 있는 다양한 모델들을 감싸고 있는 간단한 래퍼입니다. 이 래퍼는 체크포인트에 적합한 모델 아키텍처를 자동으로 추측하고, 이 아키텍처를 가진 모델을 인스턴스화하는 것도 똑똑하게 처리합니다.";return{c(){l=d("p"),l.innerHTML=r,t=f(),i=d("p"),i.innerHTML=w},l(a){l=_(a,"P",{"data-svelte-h":!0}),b(l)!=="svelte-134zx5a"&&(l.innerHTML=r),t=p(a),i=_(a,"P",{"data-svelte-h":!0}),b(i)!=="svelte-1mlrknf"&&(i.innerHTML=w)},m(a,h){o(a,l,h),o(a,t,h),o(a,i,h)},d(a){a&&(s(l),s(t),s(i))}}}function Rl(u){let l,r="이번 섹션에서는 모델을 생성하고 사용하는 방법에 대해 자세히 알아보겠습니다. 체크포인트에서 모델을 인스턴스화하는 데 유용한 <code>AutoModel</code> 클래스를 사용할 것입니다.",t,i,w="이 <code>AutoModel</code> 클래스와 관련 클래스들은 실제로 라이브러리에 있는 다양한 모델들을 감싸고 있는 간단한 래퍼입니다. 이 래퍼는 체크포인트에 적합한 모델 아키텍처를 자동으로 추측하고, 이 아키텍처를 가진 모델을 인스턴스화하는 것도 똑똑하게 처리합니다.";return{c(){l=d("p"),l.innerHTML=r,t=f(),i=d("p"),i.innerHTML=w},l(a){l=_(a,"P",{"data-svelte-h":!0}),b(l)!=="svelte-21bfoo"&&(l.innerHTML=r),t=p(a),i=_(a,"P",{"data-svelte-h":!0}),b(i)!=="svelte-17klgbd"&&(i.innerHTML=w)},m(a,h){o(a,l,h),o(a,t,h),o(a,i,h)},d(a){a&&(s(l),s(t),s(i))}}}function Hl(u){let l,r;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwY29uZmlnJTBBY29uZmlnJTIwJTNEJTIwQmVydENvbmZpZygpJTBBJTBBJTIzJTIwQnVpbGRpbmclMjB0aGUlMjBtb2RlbCUyMGZyb20lMjB0aGUlMjBjb25maWclMEFtb2RlbCUyMCUzRCUyMFRGQmVydE1vZGVsKGNvbmZpZyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = TFBertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Vl(u){let l,r;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEElMjMlMjBCdWlsZGluZyUyMHRoZSUyMGNvbmZpZyUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwbW9kZWwlMjBmcm9tJTIwdGhlJTIwY29uZmlnJTBBbW9kZWwlMjAlM0QlMjBCZXJ0TW9kZWwoY29uZmlnKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = BertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Gl(u){let l,r;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQW1vZGVsJTIwJTNEJTIwVEZCZXJ0TW9kZWwoY29uZmlnKSUwQSUwQSUyMyUyME1vZGVsJTIwaXMlMjByYW5kb21seSUyMGluaXRpYWxpemVkIQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Nl(u){let l,r;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEFjb25maWclMjAlM0QlMjBCZXJ0Q29uZmlnKCklMEFtb2RlbCUyMCUzRCUyMEJlcnRNb2RlbChjb25maWcpJTBBJTBBJTIzJTIwTW9kZWwlMjBpcyUyMHJhbmRvbWx5JTIwaW5pdGlhbGl6ZWQh",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Al(u){let l,r,t,i="이전에 봤듯이, <code>TFBertModel</code> 대신 <code>TFAutoModel</code> 클래스를 사용할 수도 있습니다. 이제부터는 체크포인트에 독립적인 코드를 생성하기 위해 <code>TFAutoModel</code>를 사용하겠습니다. 만약 코드가 한 체크포인트에서 잘 동작한다면, 다른 체크포인트에서도 잘 동작해야 합니다. 이는 체크포인트의 아키텍처가 다르더라도, 비슷한 작업(예를 들어, 감성 분석 작업)을 위해 훈련된 경우에도 적용됩니다.",w;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQmVydE1vZGVsJTBBJTBBbW9kZWwlMjAlM0QlMjBURkJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyYmVydC1iYXNlLWNhc2VkJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFBertModel

model = TFBertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),r=f(),t=d("p"),t.innerHTML=i},l(a){y(l.$$.fragment,a),r=p(a),t=_(a,"P",{"data-svelte-h":!0}),b(t)!=="svelte-2n2ajq"&&(t.innerHTML=i)},m(a,h){$(l,a,h),o(a,r,h),o(a,t,h),w=!0},i(a){w||(c(l.$$.fragment,a),w=!0)},o(a){m(l.$$.fragment,a),w=!1},d(a){a&&(s(r),s(t)),T(l,a)}}}function Ql(u){let l,r,t,i="이전에 봤듯이, <code>BertModel</code> 대신 <code>AutoModel</code> 클래스를 사용할 수도 있습니다. 이제부터는 체크포인트에 독립적인 코드를 생성하기 위해 <code>AutoModel</code>를 사용하겠습니다. 만약 코드가 한 체크포인트에서 잘 동작한다면, 다른 체크포인트에서도 잘 동작해야 합니다. 이는 체크포인트의 아키텍처가 다르더라도, 비슷한 작업(예를 들어, 감성 분석 작업)을 위해 훈련된 경우에도 적용됩니다.",w;return l=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUwQSUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel

model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),r=f(),t=d("p"),t.innerHTML=i},l(a){y(l.$$.fragment,a),r=p(a),t=_(a,"P",{"data-svelte-h":!0}),b(t)!=="svelte-1fbu2yk"&&(t.innerHTML=i)},m(a,h){$(l,a,h),o(a,r,h),o(a,t,h),w=!0},i(a){w||(c(l.$$.fragment,a),w=!0)},o(a){m(l.$$.fragment,a),w=!1},d(a){a&&(s(r),s(t)),T(l,a)}}}function Ll(u){let l,r;return l=new k({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHRmX21vZGVsLmg1",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>tf_model.h5`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function zl(u){let l,r;return l=new k({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHB5dG9yY2hfbW9kZWwuYmlu",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>pytorch_model.<span class="hljs-keyword">bin</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Pl(u){let l,r="The <em>tf_model.h5</em> file is known as the <em>state dictionary</em>; it contains all your model’s weights. The two files go hand in hand; the configuration is necessary to know your model’s architecture, while the model weights are your model’s parameters.";return{c(){l=d("p"),l.innerHTML=r},l(t){l=_(t,"P",{"data-svelte-h":!0}),b(l)!=="svelte-phe9t5"&&(l.innerHTML=r)},m(t,i){o(t,l,i)},d(t){t&&s(l)}}}function Fl(u){let l,r="The <em>pytorch_model.bin</em> file is known as the <em>state dictionary</em>; it contains all your model’s weights. The two files go hand in hand; the configuration is necessary to know your model’s architecture, while the model weights are your model’s parameters.";return{c(){l=d("p"),l.innerHTML=r},l(t){l=_(t,"P",{"data-svelte-h":!0}),b(l)!=="svelte-fa4pia"&&(l.innerHTML=r)},m(t,i){o(t,l,i)},d(t){t&&s(l)}}}function Xl(u){let l,r;return l=new k({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0Zi5jb25zdGFudChlbmNvZGVkX3NlcXVlbmNlcyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

model_inputs = tf.constant(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function Yl(u){let l,r;return l=new k({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW5jb2RlZF9zZXF1ZW5jZXMp",highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){y(l.$$.fragment,t)},m(t,i){$(l,t,i),r=!0},i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){m(l.$$.fragment,t),r=!1},d(t){T(l,t)}}}function ql(u){let l,r,t,i,w,a,h,Ae,g,J,Ze,j,C,Be,We,N,xt="하지만, 만약 모델의 아키텍처를 직접 정의하고 싶다면, 해당 모델의 클래스를 사용할 수 있습니다. BERT 모델을 예로 들어보겠습니다.",Qe,A,Le,Q,Et="BERT 모델을 초기화 하기 위해서는 먼저 모델의 환경설정을 로드해야 합나다.",ze,v,U,xe,L,It="이 환경설정은 모델을 구축하는데 사용되는 많은 속성들을 포함하고 있습니다:",Pe,z,Fe,P,Xe,F,Rt="아직 이 속성들이 무엇을 의미하는지는 모르겠지만, 몇몇은 익숙할 것입니다: <code>hidden_size</code> 속성은 <code>hidden_states</code> 벡터의 크기를 정의하고, <code>num_hidden_layers</code>는 Transformer 모델이 가지고 있는 레이어의 수를 정의합니다.",Ye,X,qe,Y,Ht="무작위 값을 통한 기본 환경설정으로 모델 생성",Se,Z,B,Ee,q,Vt='이 모델은 무작위로 초기화되어 있기 때문에, 아직은 아무런 유용한 정보를 포함하고 있지 않습니다. 이 모델을 훈련시키기 위해서는, 먼저 훈련 데이터를 준비해야 합니다. 우리가 바닥부터 학습을 할 수 있지만, 이 과정은 <a href="/course/chapter1">Chapter 1</a>에서 확인 했듯이, 많은 시간과 많은 데이터가 필요하며, 학습 환경에도 큰 영향을 미칩니다.',De,S,Gt="이러한 불필요한 중복된 노력을 피하기 위해서, 이미 훈련된 모델을 공유하고 재사용할 수 있어야 합니다.",Ke,D,Nt="훈련된 Transformer 모델을 불러오는 것은 매우 간단합니다 - <code>from_pretrained</code> 메소드를 사용하면 됩니다.",Oe,W,x,Ie,K,At='이 코드 샘플에서는 <code>BertConfig</code>를 사용하지 않았고, 대신 <code>bert-base-cased</code> 식별자를 통해 사전 훈련된 모델을 불러왔습니다. 이는 BERT의 저자들이 직접 훈련시킨 체크포인트입니다. 자세한 내용은 <a href="https://huggingface.co/bert-base-cased" rel="nofollow">모델 카드</a>에서 확인할 수 있습니다.',et,O,Qt="이 모델은 체크포인트의 모든 가중치로 초기화되었습니다. 이 모델은 체크포인트에서 훈련된 작업에 대해 직접 추론에 사용할 수 있으며, 새로운 작업에 대해 미세 조정할 수도 있습니다. 사전 훈련된 가중치로부터 학습을 진행하면, 빈 상태에서 훈련을 시작하는 것보다 빠르게 좋은 결과를 얻을 수 있습니다.",tt,ee,Lt="모델을 불러오는 또 다른 방법은 <code>from_pretrained()</code> 메서드를 사용하는 것입니다. 이 메서드는 체크포인트를 다운로드하고, 캐시에 저장합니다(이후 <code>from_pretrained()</code> 메서드를 호출할 때 다시 다운로드하지 않습니다). 캐시 폴더는 기본적으로 <em>~/.cache/huggingface/transformers</em>에 저장됩니다. 캐시 폴더를 사용자 정의하려면 <code>HF_HOME</code> 환경 변수를 설정하면 됩니다.",lt,te,zt='모델을 불러오는 식별자는 BERT 아키텍처와 호환되는 경우 모델 허브의 모든 모델의 식별자가 될 수 있습니다. BERT 체크포인트의 전체 목록은 <a href="https://huggingface.co/models?filter=bert" rel="nofollow">여기</a>에서 확인할 수 있습니다.',nt,le,st,ne,Pt="모델을 저장하는 방법은 불러오는 방법처럼 쉽습니다. <code>save_pretrained()</code> 메서드를 사용하면 됩니다. 이 메서드는 <code>from_pretrained()</code> 메서드와 유사합니다.",rt,se,ot,re,Ft="이는 2가지 파일을 저장하게 됩니다:",it,E,I,Re,oe,Xt="<em>config.json</em> 파일은 모델 아키텍처를 구축하는 데 필요한 속성을 알려줍니다. 이 파일에는 체크포인트가 어디에서 생성되었는지, 마지막으로 체크포인트를 저장할 때 사용한 🤗 Transformers 버전 등의 메타데이터도 포함되어 있습니다.",at,He,ie,ft,ae,Yt="Now that you know how to load and save a model, let’s try using it to make some predictions. Transformer models can only process numbers — numbers that the tokenizer generates. But before we discuss tokenizers, let’s explore what inputs the model accepts.",pt,fe,qt="이제 모델을 불러오고 저장하는 방법을 알았으니, 모델을 사용하여 예측을 만들어 보겠습니다. Transformer 모델은 토크나이저가 생성하는 숫자만 처리할 수 있습니다. 그러나 토크나이저에 대해 논의하기 전에 모델이 받는 입력에 대해 알아보겠습니다.",mt,pe,St="토크나이저는 입력을 적절한 프레임워크의 텐서로 변환할 수 있지만, 이해도를 높이기 위해 모델에 입력을 보내기 전 무엇을 반드시 해야 하는지 간단히 살펴보겠습니다.",ct,me,Dt="우리가 여러 시퀀스들이 있다고 가정해 봅시다:",ut,ce,dt,ue,Kt="토크나이저는 이를 단어 인덱스로 변환합니다. 이를 <em>input IDs</em>라고 합니다. 각 시퀀스는 이제 숫자 목록입니다! 결과는 다음과 같습니다:",_t,de,bt,_e,Ot="이는 인코딩된 시퀀스의 목록입니다. 텐서는 정사각형 모양만 받을 수 있습니다 (행렬을 생각해 보세요). 이 “배열”은 이미 정사각형 모양이므로 텐서로 변환하는 것은 쉽습니다:",Mt,be,el="This is a list of encoded sequences: a list of lists. Tensors only accept rectangular shapes (think matrices). This “array” is already of rectangular shape, so converting it to a tensor is easy:",yt,R,H,Ve,Me,$t,ye,tl="모델의 텐서를 사용하는 것은 매우 간단합니다. 모델에 입력을 넣기만 하면 됩니다:",Tt,$e,wt,Te,ll="모델이 다양한 어규먼트를 받는 중에, 입력은 input IDs 만 필요합니다. 나머지 어규먼트들은 언제 필요한지, 어떤 역할을 하는지는 나중에 설명하겠습니다. 먼저 토크나이저에 대해 좀 더 자세히 알아보겠습니다.",ht,Ne,kt;w=new Zl({props:{fw:u[0]}}),h=new Ge({props:{title:"Models",local:"models",headingTag:"h1"}});const nl=[Wl,Bl],we=[];function sl(e,n){return e[0]==="pt"?0:1}g=sl(u),J=we[g]=nl[g](u);const rl=[El,xl],he=[];function ol(e,n){return e[0]==="pt"?0:1}j=ol(u),C=he[j]=rl[j](u);function il(e,n){return e[0]==="pt"?Rl:Il}let gt=il(u),V=gt(u);A=new Ge({props:{title:"Creating a Transformer (Transformer 생성하기)",local:"creating-a-transformer-transformer-생성하기",headingTag:"h2"}});const al=[Vl,Hl],ke=[];function fl(e,n){return e[0]==="pt"?0:1}v=fl(u),U=ke[v]=al[v](u),z=new k({props:{code:"cHJpbnQoY29uZmlnKQ==",highlighted:'<span class="hljs-built_in">print</span>(config)',wrap:!1}}),P=new k({props:{code:"QmVydENvbmZpZyUyMCU3QiUwQSUyMCUyMCU1Qi4uLiU1RCUwQSUyMCUyMCUyMmhpZGRlbl9zaXplJTIyJTNBJTIwNzY4JTJDJTBBJTIwJTIwJTIyaW50ZXJtZWRpYXRlX3NpemUlMjIlM0ElMjAzMDcyJTJDJTBBJTIwJTIwJTIybWF4X3Bvc2l0aW9uX2VtYmVkZGluZ3MlMjIlM0ElMjA1MTIlMkMlMEElMjAlMjAlMjJudW1fYXR0ZW50aW9uX2hlYWRzJTIyJTNBJTIwMTIlMkMlMEElMjAlMjAlMjJudW1faGlkZGVuX2xheWVycyUyMiUzQSUyMDEyJTJDJTBBJTIwJTIwJTVCLi4uJTVEJTBBJTdE",highlighted:`BertConfig {
  [...]
  <span class="hljs-string">&quot;hidden_size&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;intermediate_size&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;num_attention_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;num_hidden_layers&quot;</span>: <span class="hljs-number">12</span>,
  [...]
}`,wrap:!1}}),X=new Ge({props:{title:"Different loading methods (다른 로딩 방법)",local:"different-loading-methods-다른-로딩-방법",headingTag:"h3"}});const pl=[Nl,Gl],ge=[];function ml(e,n){return e[0]==="pt"?0:1}Z=ml(u),B=ge[Z]=pl[Z](u);const cl=[Ql,Al],Je=[];function ul(e,n){return e[0]==="pt"?0:1}W=ul(u),x=Je[W]=cl[W](u),le=new Ge({props:{title:"Saving methods (저장 방법)",local:"saving-methods-저장-방법",headingTag:"h3"}}),se=new k({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMmRpcmVjdG9yeV9vbl9teV9jb21wdXRlciUyMik=",highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)',wrap:!1}});const dl=[zl,Ll],je=[];function _l(e,n){return e[0]==="pt"?0:1}E=_l(u),I=je[E]=dl[E](u);function bl(e,n){return e[0]==="pt"?Fl:Pl}let Jt=bl(u),G=Jt(u);ie=new Ge({props:{title:"Using a Transformer model for inference (Transformer 모델을 추론에 사용하기)",local:"using-a-transformer-model-for-inference-transformer-모델을-추론에-사용하기",headingTag:"h2"}}),ce=new k({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySGVsbG8hJTIyJTJDJTIwJTIyQ29vbC4lMjIlMkMlMjAlMjJOaWNlISUyMiU1RA==",highlighted:'sequences = [<span class="hljs-string">&quot;Hello!&quot;</span>, <span class="hljs-string">&quot;Cool.&quot;</span>, <span class="hljs-string">&quot;Nice!&quot;</span>]',wrap:!1}}),de=new k({props:{code:"ZW5jb2RlZF9zZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjA3NTkyJTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMTAxJTJDJTIwNDY1OCUyQyUyMDEwMTIlMkMlMjAxMDIlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjAzODM1JTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTVE",highlighted:`encoded_sequences = [
    [<span class="hljs-number">101</span>, <span class="hljs-number">7592</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">4658</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">3835</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
]`,wrap:!1}});const Ml=[Yl,Xl],Ce=[];function yl(e,n){return e[0]==="pt"?0:1}return R=yl(u),H=Ce[R]=Ml[R](u),Me=new Ge({props:{title:"Using the tensors as inputs to the model (텐서를 모델의 입력으로 사용하기)",local:"using-the-tensors-as-inputs-to-the-model-텐서를-모델의-입력으로-사용하기",headingTag:"h3"}}),$e=new k({props:{code:"b3V0cHV0JTIwJTNEJTIwbW9kZWwobW9kZWxfaW5wdXRzKQ==",highlighted:"output = model(model_inputs)",wrap:!1}}),{c(){l=d("meta"),r=f(),t=d("p"),i=f(),M(w.$$.fragment),a=f(),M(h.$$.fragment),Ae=f(),J.c(),Ze=f(),C.c(),Be=f(),V.c(),We=f(),N=d("p"),N.textContent=xt,Qe=f(),M(A.$$.fragment),Le=f(),Q=d("p"),Q.textContent=Et,ze=f(),U.c(),xe=f(),L=d("p"),L.textContent=It,Pe=f(),M(z.$$.fragment),Fe=f(),M(P.$$.fragment),Xe=f(),F=d("p"),F.innerHTML=Rt,Ye=f(),M(X.$$.fragment),qe=f(),Y=d("p"),Y.textContent=Ht,Se=f(),B.c(),Ee=f(),q=d("p"),q.innerHTML=Vt,De=f(),S=d("p"),S.textContent=Gt,Ke=f(),D=d("p"),D.innerHTML=Nt,Oe=f(),x.c(),Ie=f(),K=d("p"),K.innerHTML=At,et=f(),O=d("p"),O.textContent=Qt,tt=f(),ee=d("p"),ee.innerHTML=Lt,lt=f(),te=d("p"),te.innerHTML=zt,nt=f(),M(le.$$.fragment),st=f(),ne=d("p"),ne.innerHTML=Pt,rt=f(),M(se.$$.fragment),ot=f(),re=d("p"),re.textContent=Ft,it=f(),I.c(),Re=f(),oe=d("p"),oe.innerHTML=Xt,at=f(),G.c(),He=f(),M(ie.$$.fragment),ft=f(),ae=d("p"),ae.textContent=Yt,pt=f(),fe=d("p"),fe.textContent=qt,mt=f(),pe=d("p"),pe.textContent=St,ct=f(),me=d("p"),me.textContent=Dt,ut=f(),M(ce.$$.fragment),dt=f(),ue=d("p"),ue.innerHTML=Kt,_t=f(),M(de.$$.fragment),bt=f(),_e=d("p"),_e.textContent=Ot,Mt=f(),be=d("p"),be.textContent=el,yt=f(),H.c(),Ve=f(),M(Me.$$.fragment),$t=f(),ye=d("p"),ye.textContent=tl,Tt=f(),M($e.$$.fragment),wt=f(),Te=d("p"),Te.textContent=ll,ht=f(),Ne=d("p"),this.h()},l(e){const n=vl("svelte-u9bgzb",document.head);l=_(n,"META",{name:!0,content:!0}),n.forEach(s),r=p(e),t=_(e,"P",{}),Tl(t).forEach(s),i=p(e),y(w.$$.fragment,e),a=p(e),y(h.$$.fragment,e),Ae=p(e),J.l(e),Ze=p(e),C.l(e),Be=p(e),V.l(e),We=p(e),N=_(e,"P",{"data-svelte-h":!0}),b(N)!=="svelte-rfqpyg"&&(N.textContent=xt),Qe=p(e),y(A.$$.fragment,e),Le=p(e),Q=_(e,"P",{"data-svelte-h":!0}),b(Q)!=="svelte-1sy9k0m"&&(Q.textContent=Et),ze=p(e),U.l(e),xe=p(e),L=_(e,"P",{"data-svelte-h":!0}),b(L)!=="svelte-4918vz"&&(L.textContent=It),Pe=p(e),y(z.$$.fragment,e),Fe=p(e),y(P.$$.fragment,e),Xe=p(e),F=_(e,"P",{"data-svelte-h":!0}),b(F)!=="svelte-1e8xh3r"&&(F.innerHTML=Rt),Ye=p(e),y(X.$$.fragment,e),qe=p(e),Y=_(e,"P",{"data-svelte-h":!0}),b(Y)!=="svelte-13ikagc"&&(Y.textContent=Ht),Se=p(e),B.l(e),Ee=p(e),q=_(e,"P",{"data-svelte-h":!0}),b(q)!=="svelte-1yw7n7u"&&(q.innerHTML=Vt),De=p(e),S=_(e,"P",{"data-svelte-h":!0}),b(S)!=="svelte-44rdi0"&&(S.textContent=Gt),Ke=p(e),D=_(e,"P",{"data-svelte-h":!0}),b(D)!=="svelte-10dy6w6"&&(D.innerHTML=Nt),Oe=p(e),x.l(e),Ie=p(e),K=_(e,"P",{"data-svelte-h":!0}),b(K)!=="svelte-cvzi5b"&&(K.innerHTML=At),et=p(e),O=_(e,"P",{"data-svelte-h":!0}),b(O)!=="svelte-17jdgt"&&(O.textContent=Qt),tt=p(e),ee=_(e,"P",{"data-svelte-h":!0}),b(ee)!=="svelte-14igyn2"&&(ee.innerHTML=Lt),lt=p(e),te=_(e,"P",{"data-svelte-h":!0}),b(te)!=="svelte-9vriyb"&&(te.innerHTML=zt),nt=p(e),y(le.$$.fragment,e),st=p(e),ne=_(e,"P",{"data-svelte-h":!0}),b(ne)!=="svelte-pdew2h"&&(ne.innerHTML=Pt),rt=p(e),y(se.$$.fragment,e),ot=p(e),re=_(e,"P",{"data-svelte-h":!0}),b(re)!=="svelte-1lqi2rw"&&(re.textContent=Ft),it=p(e),I.l(e),Re=p(e),oe=_(e,"P",{"data-svelte-h":!0}),b(oe)!=="svelte-155d6gs"&&(oe.innerHTML=Xt),at=p(e),G.l(e),He=p(e),y(ie.$$.fragment,e),ft=p(e),ae=_(e,"P",{"data-svelte-h":!0}),b(ae)!=="svelte-6brd07"&&(ae.textContent=Yt),pt=p(e),fe=_(e,"P",{"data-svelte-h":!0}),b(fe)!=="svelte-19s153b"&&(fe.textContent=qt),mt=p(e),pe=_(e,"P",{"data-svelte-h":!0}),b(pe)!=="svelte-ijlg93"&&(pe.textContent=St),ct=p(e),me=_(e,"P",{"data-svelte-h":!0}),b(me)!=="svelte-5ur23s"&&(me.textContent=Dt),ut=p(e),y(ce.$$.fragment,e),dt=p(e),ue=_(e,"P",{"data-svelte-h":!0}),b(ue)!=="svelte-j2rddg"&&(ue.innerHTML=Kt),_t=p(e),y(de.$$.fragment,e),bt=p(e),_e=_(e,"P",{"data-svelte-h":!0}),b(_e)!=="svelte-1pakz9q"&&(_e.textContent=Ot),Mt=p(e),be=_(e,"P",{"data-svelte-h":!0}),b(be)!=="svelte-y3q2fn"&&(be.textContent=el),yt=p(e),H.l(e),Ve=p(e),y(Me.$$.fragment,e),$t=p(e),ye=_(e,"P",{"data-svelte-h":!0}),b(ye)!=="svelte-m9n65x"&&(ye.textContent=tl),Tt=p(e),y($e.$$.fragment,e),wt=p(e),Te=_(e,"P",{"data-svelte-h":!0}),b(Te)!=="svelte-1ff0t23"&&(Te.textContent=ll),ht=p(e),Ne=_(e,"P",{}),Tl(Ne).forEach(s),this.h()},h(){wl(l,"name","hf:doc:metadata"),wl(l,"content",Sl)},m(e,n){Ul(document.head,l),o(e,r,n),o(e,t,n),o(e,i,n),$(w,e,n),o(e,a,n),$(h,e,n),o(e,Ae,n),we[g].m(e,n),o(e,Ze,n),he[j].m(e,n),o(e,Be,n),V.m(e,n),o(e,We,n),o(e,N,n),o(e,Qe,n),$(A,e,n),o(e,Le,n),o(e,Q,n),o(e,ze,n),ke[v].m(e,n),o(e,xe,n),o(e,L,n),o(e,Pe,n),$(z,e,n),o(e,Fe,n),$(P,e,n),o(e,Xe,n),o(e,F,n),o(e,Ye,n),$(X,e,n),o(e,qe,n),o(e,Y,n),o(e,Se,n),ge[Z].m(e,n),o(e,Ee,n),o(e,q,n),o(e,De,n),o(e,S,n),o(e,Ke,n),o(e,D,n),o(e,Oe,n),Je[W].m(e,n),o(e,Ie,n),o(e,K,n),o(e,et,n),o(e,O,n),o(e,tt,n),o(e,ee,n),o(e,lt,n),o(e,te,n),o(e,nt,n),$(le,e,n),o(e,st,n),o(e,ne,n),o(e,rt,n),$(se,e,n),o(e,ot,n),o(e,re,n),o(e,it,n),je[E].m(e,n),o(e,Re,n),o(e,oe,n),o(e,at,n),G.m(e,n),o(e,He,n),$(ie,e,n),o(e,ft,n),o(e,ae,n),o(e,pt,n),o(e,fe,n),o(e,mt,n),o(e,pe,n),o(e,ct,n),o(e,me,n),o(e,ut,n),$(ce,e,n),o(e,dt,n),o(e,ue,n),o(e,_t,n),$(de,e,n),o(e,bt,n),o(e,_e,n),o(e,Mt,n),o(e,be,n),o(e,yt,n),Ce[R].m(e,n),o(e,Ve,n),$(Me,e,n),o(e,$t,n),o(e,ye,n),o(e,Tt,n),$($e,e,n),o(e,wt,n),o(e,Te,n),o(e,ht,n),o(e,Ne,n),kt=!0},p(e,[n]){const $l={};n&1&&($l.fw=e[0]),w.$set($l);let jt=g;g=sl(e),g!==jt&&(Ue(),m(we[jt],1,1,()=>{we[jt]=null}),ve(),J=we[g],J||(J=we[g]=nl[g](e),J.c()),c(J,1),J.m(Ze.parentNode,Ze));let Ct=j;j=ol(e),j!==Ct&&(Ue(),m(he[Ct],1,1,()=>{he[Ct]=null}),ve(),C=he[j],C||(C=he[j]=rl[j](e),C.c()),c(C,1),C.m(Be.parentNode,Be)),gt!==(gt=il(e))&&(V.d(1),V=gt(e),V&&(V.c(),V.m(We.parentNode,We)));let vt=v;v=fl(e),v!==vt&&(Ue(),m(ke[vt],1,1,()=>{ke[vt]=null}),ve(),U=ke[v],U||(U=ke[v]=al[v](e),U.c()),c(U,1),U.m(xe.parentNode,xe));let Ut=Z;Z=ml(e),Z!==Ut&&(Ue(),m(ge[Ut],1,1,()=>{ge[Ut]=null}),ve(),B=ge[Z],B||(B=ge[Z]=pl[Z](e),B.c()),c(B,1),B.m(Ee.parentNode,Ee));let Zt=W;W=ul(e),W!==Zt&&(Ue(),m(Je[Zt],1,1,()=>{Je[Zt]=null}),ve(),x=Je[W],x||(x=Je[W]=cl[W](e),x.c()),c(x,1),x.m(Ie.parentNode,Ie));let Bt=E;E=_l(e),E!==Bt&&(Ue(),m(je[Bt],1,1,()=>{je[Bt]=null}),ve(),I=je[E],I||(I=je[E]=dl[E](e),I.c()),c(I,1),I.m(Re.parentNode,Re)),Jt!==(Jt=bl(e))&&(G.d(1),G=Jt(e),G&&(G.c(),G.m(He.parentNode,He)));let Wt=R;R=yl(e),R!==Wt&&(Ue(),m(Ce[Wt],1,1,()=>{Ce[Wt]=null}),ve(),H=Ce[R],H||(H=Ce[R]=Ml[R](e),H.c()),c(H,1),H.m(Ve.parentNode,Ve))},i(e){kt||(c(w.$$.fragment,e),c(h.$$.fragment,e),c(J),c(C),c(A.$$.fragment,e),c(U),c(z.$$.fragment,e),c(P.$$.fragment,e),c(X.$$.fragment,e),c(B),c(x),c(le.$$.fragment,e),c(se.$$.fragment,e),c(I),c(ie.$$.fragment,e),c(ce.$$.fragment,e),c(de.$$.fragment,e),c(H),c(Me.$$.fragment,e),c($e.$$.fragment,e),kt=!0)},o(e){m(w.$$.fragment,e),m(h.$$.fragment,e),m(J),m(C),m(A.$$.fragment,e),m(U),m(z.$$.fragment,e),m(P.$$.fragment,e),m(X.$$.fragment,e),m(B),m(x),m(le.$$.fragment,e),m(se.$$.fragment,e),m(I),m(ie.$$.fragment,e),m(ce.$$.fragment,e),m(de.$$.fragment,e),m(H),m(Me.$$.fragment,e),m($e.$$.fragment,e),kt=!1},d(e){e&&(s(r),s(t),s(i),s(a),s(Ae),s(Ze),s(Be),s(We),s(N),s(Qe),s(Le),s(Q),s(ze),s(xe),s(L),s(Pe),s(Fe),s(Xe),s(F),s(Ye),s(qe),s(Y),s(Se),s(Ee),s(q),s(De),s(S),s(Ke),s(D),s(Oe),s(Ie),s(K),s(et),s(O),s(tt),s(ee),s(lt),s(te),s(nt),s(st),s(ne),s(rt),s(ot),s(re),s(it),s(Re),s(oe),s(at),s(He),s(ft),s(ae),s(pt),s(fe),s(mt),s(pe),s(ct),s(me),s(ut),s(dt),s(ue),s(_t),s(bt),s(_e),s(Mt),s(be),s(yt),s(Ve),s($t),s(ye),s(Tt),s(wt),s(Te),s(ht),s(Ne)),s(l),T(w,e),T(h,e),we[g].d(e),he[j].d(e),V.d(e),T(A,e),ke[v].d(e),T(z,e),T(P,e),T(X,e),ge[Z].d(e),Je[W].d(e),T(le,e),T(se,e),je[E].d(e),G.d(e),T(ie,e),T(ce,e),T(de,e),Ce[R].d(e),T(Me,e),T($e,e)}}}const Sl='{"title":"Models","local":"models","sections":[{"title":"Creating a Transformer (Transformer 생성하기)","local":"creating-a-transformer-transformer-생성하기","sections":[{"title":"Different loading methods (다른 로딩 방법)","local":"different-loading-methods-다른-로딩-방법","sections":[],"depth":3},{"title":"Saving methods (저장 방법)","local":"saving-methods-저장-방법","sections":[],"depth":3}],"depth":2},{"title":"Using a Transformer model for inference (Transformer 모델을 추론에 사용하기)","local":"using-a-transformer-model-for-inference-transformer-모델을-추론에-사용하기","sections":[{"title":"Using the tensors as inputs to the model (텐서를 모델의 입력으로 사용하기)","local":"using-the-tensors-as-inputs-to-the-model-텐서를-모델의-입력으로-사용하기","sections":[],"depth":3}],"depth":2}],"depth":1}';function Dl(u,l,r){let t="pt";return Jl(()=>{const i=new URLSearchParams(window.location.search);r(0,t=i.get("fw")||"pt")}),[t]}class rn extends jl{constructor(l){super(),Cl(this,l,Dl,ql,gl,{})}}export{rn as component};
