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