import{s as El,o as Wl}from"../chunks/scheduler.6452e238.js";import{S as Il,i as xl,e as f,s as i,c as g,h as Vl,a as d,d as _,b as c,f as j,g as $,j as b,k as C,l as a,m as k,n as M,o as p,q as be,t as m,p as y,v as ge}from"../chunks/index.16d4f4c3.js";import{C as Rl,H as Ye,E as Hl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.2d145648.js";import{Y as Bl}from"../chunks/Youtube.11690af1.js";import{C as J}from"../chunks/CodeBlock.6260005a.js";import{C as Ul}from"../chunks/CourseFloatingBanner.088b098d.js";import{F as Gl}from"../chunks/FrameworkSwitchCourse.7ffa6237.js";function Ll(u){let t,r;return t=new Ul({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_tf.ipynb"}]}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Ql(u){let t,r;return t=new Ul({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_pt.ipynb"}]}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function zl(u){let t,r;return t=new Bl({props:{id:"d3JVgghSOew"}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Al(u){let t,r;return t=new Bl({props:{id:"AhChOFRegn4"}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Nl(u){let t,r="در این بخش نگاهی نزدیک‌تر به ساخت و استفاده از مدل‌ها می‌اندازیم. کلاس <code>TFAutoModel</code> را به کار خواهیم گرفت که برای ساختن مدل‌ها از نقطه‌های تعلیم مشخص، بسیار پرکاربرد است.",e,o,v="کلاس <code>TFAutoModel</code> و تمامی کلاس‌های شبیه آن، در واقع پوسته‌ای ساده روی انواع مختلف مدل‌های موجود در کتابخانه هستند. پوسته‌ای هوشمند که می‌تواند به صورت خودکار معماری مدل استفاده شده در نقطه‌های تعلیم را تشخیص دهد و سپس مدلی با آن معماری بسازد.";return{c(){t=f("p"),t.innerHTML=r,e=i(),o=f("p"),o.innerHTML=v},l(h){t=d(h,"P",{"data-svelte-h":!0}),b(t)!=="svelte-1h51mje"&&(t.innerHTML=r),e=c(h),o=d(h,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1qgxt6n"&&(o.innerHTML=v)},m(h,l){k(h,t,l),k(h,e,l),k(h,o,l)},d(h){h&&(_(t),_(e),_(o))}}}function Dl(u){let t,r="در این بخش نگاهی نزدیک‌تر به ساخت و استفاده از مدل‌ها می‌اندازیم. کلاس <code>AutoModel</code> را به کار خواهیم گرفت که برای ساختن مدل‌ها از نقطه‌های تعلیم مشخص، بسیار پرکاربرد است.",e,o,v="کلاس <code>AutoModel</code> و تمامی کلاس‌های شبیه آن، در واقع پوسته‌ای ساده روی انواع مختلف مدل‌های موجود در کتابخانه هستند. پوسته‌ای هوشمند که می‌تواند به صورت خودکار معماری مدل استفاده شده در نقطه‌های تعلیم را تشخیص دهد و سپس مدلی با آن معماری بسازد.";return{c(){t=f("p"),t.innerHTML=r,e=i(),o=f("p"),o.innerHTML=v},l(h){t=d(h,"P",{"data-svelte-h":!0}),b(t)!=="svelte-clze4c"&&(t.innerHTML=r),e=c(h),o=d(h,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1p9l9ch"&&(o.innerHTML=v)},m(h,l){k(h,t,l),k(h,e,l),k(h,o,l)},d(h){h&&(_(t),_(e),_(o))}}}function Fl(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Xl(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function ql(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Pl(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Yl(u){let t,r,e,o,v="همان طور که قبلا دیدید، می‌توانیم کلاس <code>TFBertModel</code> را با کلاس معادل <code>TFAutoModel</code> جایگزین کنیم. از این پس همین کار را خواهیم کرد چون به این صورت کد وابسته به نقطه تعلیم خاصی نخواهد بود. اگر کد شما با یک نقطه تعلیم اجرا می‌شود، بدون تغییر با نقاط تعلیم دیگر هم اجرا خواهد شد. این حتی در مورد معماری‌های متفاوت هم صدق می‌کند، البته در صورتی که نقطه تعلیم متعلق به مسئله مشابهی(برای مثال تحلیل احساسات) باشد.",h;return r=new J({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(){t=f("div"),g(r.$$.fragment),e=i(),o=f("p"),o.innerHTML=v,this.h()},l(l){t=d(l,"DIV",{dir:!0});var w=j(t);$(r.$$.fragment,w),w.forEach(_),e=c(l),o=d(l,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1nx32l8"&&(o.innerHTML=v),this.h()},h(){C(t,"dir","ltr")},m(l,w){k(l,t,w),M(r,t,null),k(l,e,w),k(l,o,w),h=!0},i(l){h||(m(r.$$.fragment,l),h=!0)},o(l){p(r.$$.fragment,l),h=!1},d(l){l&&(_(t),_(e),_(o)),y(r)}}}function Sl(u){let t,r,e,o,v="همان طور که قبلا دیدید، می‌توانیم کلاس <code>BertModel</code> را با کلاس معادل <code>AutoModel</code> جایگزین کنیم. از این پس همین کار را خواهیم کرد چون به این صورت کد وابسته به نقطه تعلیم خاصی نخواهد بود. اگر کد شما با یک نقطه تعلیم اجرا می‌شود، بدون تغییر با نقاط تعلیم دیگر هم اجرا خواهد شد. این حتی در مورد معماری‌های متفاوت هم صدق می‌کند، البته در صورتی که نقطه تعلیم متعلق به مسئله مشابهی(برای مثال تحلیل احساسات) باشد.",h;return r=new J({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(){t=f("div"),g(r.$$.fragment),e=i(),o=f("p"),o.innerHTML=v,this.h()},l(l){t=d(l,"DIV",{dir:!0});var w=j(t);$(r.$$.fragment,w),w.forEach(_),e=c(l),o=d(l,"P",{"data-svelte-h":!0}),b(o)!=="svelte-ngbvs0"&&(o.innerHTML=v),this.h()},h(){C(t,"dir","ltr")},m(l,w){k(l,t,w),M(r,t,null),k(l,e,w),k(l,o,w),h=!0},i(l){h||(m(r.$$.fragment,l),h=!0)},o(l){p(r.$$.fragment,l),h=!1},d(l){l&&(_(t),_(e),_(o)),y(r)}}}function Kl(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function Ol(u){let t,r;return t=new J({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMG1vZGVsLnNhZmV0ZW5zb3Jz",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>model.safetensors`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function en(u){let t,r="فایل <em>tf_model.h5</em> در واقع <em>دیکشنری وضعیت‌ها</em> است و حاوی تمام وزن‌های مدل شماست. این دو فایل به همراه هم کاربرد دارند؛ فایل تنظیمات برای دانستن معماری به کار رفته در مدل ضروری است و پارامترهای مدل هم که همان وزن‌های داخل فایل دوم هستند.";return{c(){t=f("p"),t.innerHTML=r},l(e){t=d(e,"P",{"data-svelte-h":!0}),b(t)!=="svelte-g01lm5"&&(t.innerHTML=r)},m(e,o){k(e,t,o)},d(e){e&&_(t)}}}function tn(u){let t,r="فایل <em>model.safetensors</em> در واقع <em>دیکشنری وضعیت‌ها</em> است و حاوی تمام وزن‌های مدل شماست. این دو فایل به همراه هم کاربرد دارند؛ فایل تنظیمات برای دانستن معماری به کار رفته در مدل ضروری است و پارامترهای مدل هم که همان وزن‌های داخل فایل دوم هستند.";return{c(){t=f("p"),t.innerHTML=r},l(e){t=d(e,"P",{"data-svelte-h":!0}),b(t)!=="svelte-1dtq98c"&&(t.innerHTML=r)},m(e,o){k(e,t,o)},d(e){e&&_(t)}}}function ln(u){let t,r;return t=new J({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(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function nn(u){let t,r;return t=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW5jb2RlZF9zZXF1ZW5jZXMp",highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){$(t.$$.fragment,e)},m(e,o){M(t,e,o),r=!0},i(e){r||(m(t.$$.fragment,e),r=!0)},o(e){p(t.$$.fragment,e),r=!1},d(e){y(t,e)}}}function rn(u){let t,r,e,o,v,h,l,w,it,X,ct,Z,B,Ke,U,E,Oe,et,$e,Dt="با این وجود، اگر نوع مدلی که می‌خواهید استفاده کنید را می‌دانید، می‌توانید مستقیماً کلاسی که معماری خاص آن مدل را تعریف می‌کند به کار ببرید. نگاهی به چگونگی انجام این عملیات با مدل BERT می‌اندازیم.",ft,q,dt,Me,Ft="اولین کار برای ساخت نمونه‌ای از مدل BERT، بارگذاری شیء تنظیمات است:",pt,P,W,I,mt,ye,Xt="شیء تنظیمات ویژگی‌های بسیاری دارد که برای ساختن مدل به کار می‌روند.",ut,D,Y,_t,S,ht,Te,qt="با وجود اینکه هنوز ندیده‌اید تک تک این ویژگی‌ها چه تاثیری دارند، بعضی از آنها برای شما آشنا هستند: ویژگی <code>hidden_size</code> اندازه بردار <code>hidden_states</code> را مشخص می‌کند و ویژگی <code>num_hidden_layers</code> مشخص کننده تعداد لایه‌های مدل ترنسفورمر است.",bt,K,gt,ke,Pt="ساختن مدل با تنظیمات پیش‌فرض، باعث مقداردهی اولیه وزن‌های آن با اعداد تصادفی می‌شود.",$t,O,x,V,Mt,we,Yt='می‌توان از مدل در این وضعیت استفاده کرد ولی خروجی آن بی‌معنی خواهد بود؛ ابتدا باید مدل را تعلیم دهیم. می‌توانیم مدل را از صفر برای مسئله مورد نظرمان تعلیم دهیم ولی همان گونه که در <a href="/course/chapter1">فصل اول</a> دیدیم، برای این کار نیاز به زمان طولانی و داده بسیار داریم. این عملیات تاثیرات منفی غیر قابل چشم‌پوشی‌‌ای بر محیط‌زیست دارد. برای جلوگیری از دوباره‌کاری باید بتوانیم مدل‌های از پیش تعلیم دیده را به اشتراک گذاشته و به کار ببریم.',yt,ve,St="بارگذاری مدل از پیش تعلیم دیده ترنسفورمر، ساده است. برای این کار از تابع <code>from_pretrained()</code> استفاده‌‌ می‌کنیم.",Tt,R,H,tt,Je,Kt='در کد نمونه بالا، کلاس <code>BertConfig</code> را به کار نبرده و در عوض از مدلی از پیش تعلیم دیده با شناسه <code>bert-base-cased</code> استفاده کردیم؛ نقطه تعلیم مدلی که توسط خود مؤلفان مدل BERT تعلیم دیده است. اطلاعات بیشتر در مورد این نقطه تعلیم را می‌توانید در <a href="https://huggingface.co/bert-base-cased" rel="nofollow">صفحه توضیحات</a> آن ببینید.',kt,je,Ot="این مدل اکنون با وزن‌های نقطه تعلیم پر شده است و می‌توان آن را مستقیماً برای مسائلی که برای آن تعلیم دیده به کار برد یا برای مسئله جدیدی کوک کرد. با تعلیم روی وزن‌های از پیش تعلیم دیده، به جای تعلیم از صفر، می‌توانیم به سرعت به نتایج خوبی دست پیدا کنیم.",wt,Ce,el="این وزن‌ها دانلود و در پوشه‌ای مخصوص انبار شده‌اند، تا اجرای تابع <code>from_pretrained()</code> در آینده مسبب دانلود دوباره‌اشان نباشد. این پوشه به صورت پیش‌فرض در آدرس <em>~/.cache/huggingface/transformers</em> قرار دارد. شما می‌توانید با تخصیص مقدار به متغیر محیطی <code>HF_HOME</code> مکان این پوشه را تغییر دهید.",vt,Ze,tl='شناسه هر مدلی در هاب مدل‌ها را می‌توانید برای بارگذاری استفاده کنید. البته در صورتی که آن مدل با معماری BERT سازگاری داشته باشد. فهرست کامل تمام نقاط تعلیم سازگار با BERT را <a href="https://huggingface.co/models?filter=bert" rel="nofollow">اینجا مشاهده کنید</a>.',Jt,ee,jt,Be,ll="ذخیره‌سازی مدل به سادگی بارگذاری آن است. از تابع <code>save_pretrained()</code> استفاده می‌کنیم که متناظر با تابع <code>from_pretrained()</code> است:",Ct,Ue,te,Zt,Ee,nl="اجرای این تابع باعث ذخیره شدن دو فایل در سیستم شما می‌شود:",Bt,le,G,L,Ut,We,rl="اگر نگاهی به فایل <em>config.json</em> بیاندازید، با ویژگی‌های آشنای مورد نیاز برای ساختن معماری مدل روبرو خواهید شد. این فایل حاوی مقادیری متادیتا، مانند نقطه مادر این نقطه تعلیم و نسخه‌‌ کتابخانه ترنسفورمرهای هاگینگ‌فِیس که آخرین بار برای ذخیره‌سازی این نقطه به کار رفته است، می‌باشد.",Et,lt,ne,Wt,Ie,sl="حالا که می‌دانید چگونه مدل‌ها را ذخیره‌سازی و بارگذاری کنید، می‌توانیم آنها را برای پیش‌بینی به کار بگیریم. مدل‌های ترنسفورمر فقط می‌توانند اعداد را پردازش کنند؛ اعدادی که توکِنایزر تولید نموده است. ولی پیش از آن که سراغ بحث توکِنایزرها برویم، ورودی‌های قابل قبول برای مدل‌ها را بررسی می‌کنیم.",It,xe,al="توکِنایزرها می‌توانند ورودی‌ها را به تِنسورهای مخصوص هر فریمورک تبدیل کنند ولی برای آنکه درست متوجه آنچه اتفاق می‌افتد شویم، نگاهی کوتاه به کارهایی که باید قبل از فرستادن ورودی‌ها به مدل انجام شود می‌اندازیم.",xt,Ve,ol="تصور کنید چند جمله به این صورت داریم:",Vt,Re,re,Rt,He,il="توکِنایزر این جملات را به اندیس‌های مخصوص کلمات که معمولا به آنها <em>شناسه‌های ورودی</em> می‌گوییم، تبدیل می‌کند. هر رشته اکنون لیستی از اعداد است! نتیجه خروجی از این قرار است:",Ht,Ge,se,Gt,Le,cl="این خروجی لیستی از رشته‌های کد شده شده است: لیستی از لیست‌ها. تِنسورها تنها مقادیر به شکل مستطیل(همان ماتریس) را می‌پذیرند. این «آرایه» خود شکل مستطیلی دارد پس تبدیل آن به تِنسور ساده است:",Lt,ae,Q,z,Qt,oe,zt,Qe,fl="به کار بردن تِنسورها به عنوان ورودی مدل بسیار ساده است؛ تنها آرگومان تِنسور ورودی را به صورت زیر به مدل پاس می‌دهیم:",At,ze,ie,Nt,Ae,dl="این تابع آرگومان‌های بسیاری را می‌پذیرد ولی تنها شناسه‌های ورودی ضروری هستند. کاربرد آرگومان‌های دیگر و شرایط ضرورت آنها را بعد توضیح خواهیم داد. ولی ابتدا باید نگاهی نزدیک‌تر به توکِنایزرهایی که ورودی‌های قابل فهم مدل‌های ترنسفورمر را می‌سازند، بیاندازیم.",nt,ce,rt,Se,st;v=new Gl({props:{fw:u[0]}}),w=new Rl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),X=new Ye({props:{title:"مدل‌ها",local:"مدلها",headingTag:"h1"}});const pl=[Ql,Ll],fe=[];function ml(n,T){return n[0]==="pt"?0:1}Z=ml(u),B=fe[Z]=pl[Z](u);const ul=[Al,zl],de=[];function _l(n,T){return n[0]==="pt"?0:1}U=_l(u),E=de[U]=ul[U](u);function hl(n,T){return n[0]==="pt"?Dl:Nl}let at=hl(u),A=at(u);q=new Ye({props:{title:"ساخت ترنسفورمر",local:"ساخت-ترنسفورمر",headingTag:"h2"}});const bl=[Xl,Fl],pe=[];function gl(n,T){return n[0]==="pt"?0:1}W=gl(u),I=pe[W]=bl[W](u),Y=new J({props:{code:"cHJpbnQoY29uZmlnKQ==",highlighted:'<span class="hljs-built_in">print</span>(config)',wrap:!1}}),S=new J({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}}),K=new Ye({props:{title:"روش‌های مختلف بارگذاری",local:"روشهای-مختلف-بارگذاری",headingTag:"h3"}});const $l=[Pl,ql],me=[];function Ml(n,T){return n[0]==="pt"?0:1}x=Ml(u),V=me[x]=$l[x](u);const yl=[Sl,Yl],ue=[];function Tl(n,T){return n[0]==="pt"?0:1}R=Tl(u),H=ue[R]=yl[R](u),ee=new Ye({props:{title:"روش‌های ذخیره‌سازی",local:"روشهای-ذخیرهسازی",headingTag:"h3"}}),te=new J({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMmRpcmVjdG9yeV9vbl9teV9jb21wdXRlciUyMik=",highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)',wrap:!1}});const kl=[Ol,Kl],_e=[];function wl(n,T){return n[0]==="pt"?0:1}G=wl(u),L=_e[G]=kl[G](u);function vl(n,T){return n[0]==="pt"?tn:en}let ot=vl(u),N=ot(u);ne=new Ye({props:{title:"اجرای یک مدل ترنسفورمر",local:"اجرای-یک-مدل-ترنسفورمر",headingTag:"h2"}}),re=new J({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}}),se=new J({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 Jl=[nn,ln],he=[];function jl(n,T){return n[0]==="pt"?0:1}return Q=jl(u),z=he[Q]=Jl[Q](u),oe=new Ye({props:{title:"استفاده از تِنسور‌ها به عنوان ورودی مدل",local:"استفاده-از-تنسورها-به-عنوان-ورودی-مدل",headingTag:"h3"}}),ie=new J({props:{code:"b3V0cHV0JTIwJTNEJTIwbW9kZWwobW9kZWxfaW5wdXRzKQ==",highlighted:"output = model(model_inputs)",wrap:!1}}),ce=new Hl({props:{source:"https://github.com/huggingface/course/blob/main/chapters/fa/chapter2/3.mdx"}}),{c(){t=f("meta"),r=i(),e=f("p"),o=i(),g(v.$$.fragment),h=i(),l=f("div"),g(w.$$.fragment),it=i(),g(X.$$.fragment),ct=i(),B.c(),Ke=i(),E.c(),Oe=i(),A.c(),et=i(),$e=f("p"),$e.textContent=Dt,ft=i(),g(q.$$.fragment),dt=i(),Me=f("p"),Me.textContent=Ft,pt=i(),P=f("div"),I.c(),mt=i(),ye=f("p"),ye.textContent=Xt,ut=i(),D=f("div"),g(Y.$$.fragment),_t=i(),g(S.$$.fragment),ht=i(),Te=f("p"),Te.innerHTML=qt,bt=i(),g(K.$$.fragment),gt=i(),ke=f("p"),ke.textContent=Pt,$t=i(),O=f("div"),V.c(),Mt=i(),we=f("p"),we.innerHTML=Yt,yt=i(),ve=f("p"),ve.innerHTML=St,Tt=i(),H.c(),tt=i(),Je=f("p"),Je.innerHTML=Kt,kt=i(),je=f("p"),je.textContent=Ot,wt=i(),Ce=f("p"),Ce.innerHTML=el,vt=i(),Ze=f("p"),Ze.innerHTML=tl,Jt=i(),g(ee.$$.fragment),jt=i(),Be=f("p"),Be.innerHTML=ll,Ct=i(),Ue=f("div"),g(te.$$.fragment),Zt=i(),Ee=f("p"),Ee.textContent=nl,Bt=i(),le=f("div"),L.c(),Ut=i(),We=f("p"),We.innerHTML=rl,Et=i(),N.c(),lt=i(),g(ne.$$.fragment),Wt=i(),Ie=f("p"),Ie.textContent=sl,It=i(),xe=f("p"),xe.textContent=al,xt=i(),Ve=f("p"),Ve.textContent=ol,Vt=i(),Re=f("div"),g(re.$$.fragment),Rt=i(),He=f("p"),He.innerHTML=il,Ht=i(),Ge=f("div"),g(se.$$.fragment),Gt=i(),Le=f("p"),Le.textContent=cl,Lt=i(),ae=f("div"),z.c(),Qt=i(),g(oe.$$.fragment),zt=i(),Qe=f("p"),Qe.textContent=fl,At=i(),ze=f("div"),g(ie.$$.fragment),Nt=i(),Ae=f("p"),Ae.textContent=dl,nt=i(),g(ce.$$.fragment),rt=i(),Se=f("p"),this.h()},l(n){const T=Vl("svelte-u9bgzb",document.head);t=d(T,"META",{name:!0,content:!0}),T.forEach(_),r=c(n),e=d(n,"P",{}),j(e).forEach(_),o=c(n),$(v.$$.fragment,n),h=c(n),l=d(n,"DIV",{dir:!0});var s=j(l);$(w.$$.fragment,s),it=c(s),$(X.$$.fragment,s),ct=c(s),B.l(s),Ke=c(s),E.l(s),Oe=c(s),A.l(s),et=c(s),$e=d(s,"P",{"data-svelte-h":!0}),b($e)!=="svelte-czne41"&&($e.textContent=Dt),ft=c(s),$(q.$$.fragment,s),dt=c(s),Me=d(s,"P",{"data-svelte-h":!0}),b(Me)!=="svelte-1eesr91"&&(Me.textContent=Ft),pt=c(s),P=d(s,"DIV",{dir:!0});var Ne=j(P);I.l(Ne),Ne.forEach(_),mt=c(s),ye=d(s,"P",{"data-svelte-h":!0}),b(ye)!=="svelte-1xdutk6"&&(ye.textContent=Xt),ut=c(s),D=d(s,"DIV",{dir:!0});var F=j(D);$(Y.$$.fragment,F),_t=c(F),$(S.$$.fragment,F),F.forEach(_),ht=c(s),Te=d(s,"P",{"data-svelte-h":!0}),b(Te)!=="svelte-24frjt"&&(Te.innerHTML=qt),bt=c(s),$(K.$$.fragment,s),gt=c(s),ke=d(s,"P",{"data-svelte-h":!0}),b(ke)!=="svelte-e5uwia"&&(ke.textContent=Pt),$t=c(s),O=d(s,"DIV",{dir:!0});var De=j(O);V.l(De),De.forEach(_),Mt=c(s),we=d(s,"P",{"data-svelte-h":!0}),b(we)!=="svelte-pdt5zy"&&(we.innerHTML=Yt),yt=c(s),ve=d(s,"P",{"data-svelte-h":!0}),b(ve)!=="svelte-t9ah4a"&&(ve.innerHTML=St),Tt=c(s),H.l(s),tt=c(s),Je=d(s,"P",{"data-svelte-h":!0}),b(Je)!=="svelte-hhpyg1"&&(Je.innerHTML=Kt),kt=c(s),je=d(s,"P",{"data-svelte-h":!0}),b(je)!=="svelte-xw3fue"&&(je.textContent=Ot),wt=c(s),Ce=d(s,"P",{"data-svelte-h":!0}),b(Ce)!=="svelte-165qbd1"&&(Ce.innerHTML=el),vt=c(s),Ze=d(s,"P",{"data-svelte-h":!0}),b(Ze)!=="svelte-xex0hu"&&(Ze.innerHTML=tl),Jt=c(s),$(ee.$$.fragment,s),jt=c(s),Be=d(s,"P",{"data-svelte-h":!0}),b(Be)!=="svelte-dv8x2b"&&(Be.innerHTML=ll),Ct=c(s),Ue=d(s,"DIV",{dir:!0});var Fe=j(Ue);$(te.$$.fragment,Fe),Fe.forEach(_),Zt=c(s),Ee=d(s,"P",{"data-svelte-h":!0}),b(Ee)!=="svelte-ml3g3g"&&(Ee.textContent=nl),Bt=c(s),le=d(s,"DIV",{dir:!0});var Xe=j(le);L.l(Xe),Xe.forEach(_),Ut=c(s),We=d(s,"P",{"data-svelte-h":!0}),b(We)!=="svelte-33js67"&&(We.innerHTML=rl),Et=c(s),N.l(s),lt=c(s),$(ne.$$.fragment,s),Wt=c(s),Ie=d(s,"P",{"data-svelte-h":!0}),b(Ie)!=="svelte-1lsbq5y"&&(Ie.textContent=sl),It=c(s),xe=d(s,"P",{"data-svelte-h":!0}),b(xe)!=="svelte-1m92ogi"&&(xe.textContent=al),xt=c(s),Ve=d(s,"P",{"data-svelte-h":!0}),b(Ve)!=="svelte-1nxsbm3"&&(Ve.textContent=ol),Vt=c(s),Re=d(s,"DIV",{dir:!0});var qe=j(Re);$(re.$$.fragment,qe),qe.forEach(_),Rt=c(s),He=d(s,"P",{"data-svelte-h":!0}),b(He)!=="svelte-1um6261"&&(He.innerHTML=il),Ht=c(s),Ge=d(s,"DIV",{dir:!0});var Pe=j(Ge);$(se.$$.fragment,Pe),Pe.forEach(_),Gt=c(s),Le=d(s,"P",{"data-svelte-h":!0}),b(Le)!=="svelte-14rb5nb"&&(Le.textContent=cl),Lt=c(s),ae=d(s,"DIV",{dir:!0});var Cl=j(ae);z.l(Cl),Cl.forEach(_),Qt=c(s),$(oe.$$.fragment,s),zt=c(s),Qe=d(s,"P",{"data-svelte-h":!0}),b(Qe)!=="svelte-mq937q"&&(Qe.textContent=fl),At=c(s),ze=d(s,"DIV",{dir:!0});var Zl=j(ze);$(ie.$$.fragment,Zl),Zl.forEach(_),Nt=c(s),Ae=d(s,"P",{"data-svelte-h":!0}),b(Ae)!=="svelte-1tyutlc"&&(Ae.textContent=dl),s.forEach(_),nt=c(n),$(ce.$$.fragment,n),rt=c(n),Se=d(n,"P",{}),j(Se).forEach(_),this.h()},h(){C(t,"name","hf:doc:metadata"),C(t,"content",sn),C(P,"dir","ltr"),C(D,"dir","ltr"),C(O,"dir","ltr"),C(Ue,"dir","ltr"),C(le,"dir","ltr"),C(Re,"dir","ltr"),C(Ge,"dir","ltr"),C(ae,"dir","ltr"),C(ze,"dir","ltr"),C(l,"dir","rtl")},m(n,T){a(document.head,t),k(n,r,T),k(n,e,T),k(n,o,T),M(v,n,T),k(n,h,T),k(n,l,T),M(w,l,null),a(l,it),M(X,l,null),a(l,ct),fe[Z].m(l,null),a(l,Ke),de[U].m(l,null),a(l,Oe),A.m(l,null),a(l,et),a(l,$e),a(l,ft),M(q,l,null),a(l,dt),a(l,Me),a(l,pt),a(l,P),pe[W].m(P,null),a(l,mt),a(l,ye),a(l,ut),a(l,D),M(Y,D,null),a(D,_t),M(S,D,null),a(l,ht),a(l,Te),a(l,bt),M(K,l,null),a(l,gt),a(l,ke),a(l,$t),a(l,O),me[x].m(O,null),a(l,Mt),a(l,we),a(l,yt),a(l,ve),a(l,Tt),ue[R].m(l,null),a(l,tt),a(l,Je),a(l,kt),a(l,je),a(l,wt),a(l,Ce),a(l,vt),a(l,Ze),a(l,Jt),M(ee,l,null),a(l,jt),a(l,Be),a(l,Ct),a(l,Ue),M(te,Ue,null),a(l,Zt),a(l,Ee),a(l,Bt),a(l,le),_e[G].m(le,null),a(l,Ut),a(l,We),a(l,Et),N.m(l,null),a(l,lt),M(ne,l,null),a(l,Wt),a(l,Ie),a(l,It),a(l,xe),a(l,xt),a(l,Ve),a(l,Vt),a(l,Re),M(re,Re,null),a(l,Rt),a(l,He),a(l,Ht),a(l,Ge),M(se,Ge,null),a(l,Gt),a(l,Le),a(l,Lt),a(l,ae),he[Q].m(ae,null),a(l,Qt),M(oe,l,null),a(l,zt),a(l,Qe),a(l,At),a(l,ze),M(ie,ze,null),a(l,Nt),a(l,Ae),k(n,nt,T),M(ce,n,T),k(n,rt,T),k(n,Se,T),st=!0},p(n,[T]){const s={};T&1&&(s.fw=n[0]),v.$set(s);let Ne=Z;Z=ml(n),Z!==Ne&&(ge(),p(fe[Ne],1,1,()=>{fe[Ne]=null}),be(),B=fe[Z],B||(B=fe[Z]=pl[Z](n),B.c()),m(B,1),B.m(l,Ke));let F=U;U=_l(n),U!==F&&(ge(),p(de[F],1,1,()=>{de[F]=null}),be(),E=de[U],E||(E=de[U]=ul[U](n),E.c()),m(E,1),E.m(l,Oe)),at!==(at=hl(n))&&(A.d(1),A=at(n),A&&(A.c(),A.m(l,et)));let De=W;W=gl(n),W!==De&&(ge(),p(pe[De],1,1,()=>{pe[De]=null}),be(),I=pe[W],I||(I=pe[W]=bl[W](n),I.c()),m(I,1),I.m(P,null));let Fe=x;x=Ml(n),x!==Fe&&(ge(),p(me[Fe],1,1,()=>{me[Fe]=null}),be(),V=me[x],V||(V=me[x]=$l[x](n),V.c()),m(V,1),V.m(O,null));let Xe=R;R=Tl(n),R!==Xe&&(ge(),p(ue[Xe],1,1,()=>{ue[Xe]=null}),be(),H=ue[R],H||(H=ue[R]=yl[R](n),H.c()),m(H,1),H.m(l,tt));let qe=G;G=wl(n),G!==qe&&(ge(),p(_e[qe],1,1,()=>{_e[qe]=null}),be(),L=_e[G],L||(L=_e[G]=kl[G](n),L.c()),m(L,1),L.m(le,null)),ot!==(ot=vl(n))&&(N.d(1),N=ot(n),N&&(N.c(),N.m(l,lt)));let Pe=Q;Q=jl(n),Q!==Pe&&(ge(),p(he[Pe],1,1,()=>{he[Pe]=null}),be(),z=he[Q],z||(z=he[Q]=Jl[Q](n),z.c()),m(z,1),z.m(ae,null))},i(n){st||(m(v.$$.fragment,n),m(w.$$.fragment,n),m(X.$$.fragment,n),m(B),m(E),m(q.$$.fragment,n),m(I),m(Y.$$.fragment,n),m(S.$$.fragment,n),m(K.$$.fragment,n),m(V),m(H),m(ee.$$.fragment,n),m(te.$$.fragment,n),m(L),m(ne.$$.fragment,n),m(re.$$.fragment,n),m(se.$$.fragment,n),m(z),m(oe.$$.fragment,n),m(ie.$$.fragment,n),m(ce.$$.fragment,n),st=!0)},o(n){p(v.$$.fragment,n),p(w.$$.fragment,n),p(X.$$.fragment,n),p(B),p(E),p(q.$$.fragment,n),p(I),p(Y.$$.fragment,n),p(S.$$.fragment,n),p(K.$$.fragment,n),p(V),p(H),p(ee.$$.fragment,n),p(te.$$.fragment,n),p(L),p(ne.$$.fragment,n),p(re.$$.fragment,n),p(se.$$.fragment,n),p(z),p(oe.$$.fragment,n),p(ie.$$.fragment,n),p(ce.$$.fragment,n),st=!1},d(n){n&&(_(r),_(e),_(o),_(h),_(l),_(nt),_(rt),_(Se)),_(t),y(v,n),y(w),y(X),fe[Z].d(),de[U].d(),A.d(),y(q),pe[W].d(),y(Y),y(S),y(K),me[x].d(),ue[R].d(),y(ee),y(te),_e[G].d(),N.d(),y(ne),y(re),y(se),he[Q].d(),y(oe),y(ie),y(ce,n)}}}const sn='{"title":"مدل‌ها","local":"مدلها","sections":[{"title":"ساخت ترنسفورمر","local":"ساخت-ترنسفورمر","sections":[{"title":"روش‌های مختلف بارگذاری","local":"روشهای-مختلف-بارگذاری","sections":[],"depth":3},{"title":"روش‌های ذخیره‌سازی","local":"روشهای-ذخیرهسازی","sections":[],"depth":3}],"depth":2},{"title":"اجرای یک مدل ترنسفورمر","local":"اجرای-یک-مدل-ترنسفورمر","sections":[{"title":"استفاده از تِنسور‌ها به عنوان ورودی مدل","local":"استفاده-از-تنسورها-به-عنوان-ورودی-مدل","sections":[],"depth":3}],"depth":2}],"depth":1}';function an(u,t,r){let e="pt";return Wl(()=>{const o=new URLSearchParams(window.location.search);r(0,e=o.get("fw")||"pt")}),[e]}class _n extends Il{constructor(t){super(),xl(this,t,an,rn,El,{})}}export{_n as component};
