import{s as pe,o as re,n as Dt}from"../chunks/scheduler.5eb9d175.js";import{S as me,i as ie,g as f,s as p,r as h,m as oe,A as ce,h as M,f as s,c as r,j as Et,u as y,x as J,n as de,k as Qt,y as Vt,a as l,v as g,d as u,t as $,w as j}from"../chunks/index.fcdcb606.js";import{T as Kt}from"../chunks/Tip.9272e506.js";import{Y as te}from"../chunks/Youtube.398fab2b.js";import{C as k}from"../chunks/CodeBlock.a7036e06.js";import{F as ne,M as ee}from"../chunks/Markdown.927e6a50.js";import{H as bt,E as fe}from"../chunks/EditOnGithub.98bf070f.js";function Me(it){let m,w="سترى تحذيرًا بشأن بعض أوزان النموذج المُدرب مسبقًا لن تُستخدم وبعض الأوزان الأخرى ستُبدء بشكل عشوائي. لا تقلق، هذا أمر طبيعي تمامًا! يتم التخلص من رأس النموذج المُدرب مسبقًا لشبكة BERT، ويتم استبداله برأس تصنيف يُبدء بشكل عشوائي. سوف تقوم بضبط الرأس الجديد للنموذج بدقة على مهمة تصنيف التسلسلات الخاصة بك، مما ينقل المعرفة من النموذج المُدرب مسبقًا إليه.";return{c(){m=f("p"),m.textContent=w},l(i){m=M(i,"P",{"data-svelte-h":!0}),J(m)!=="svelte-xfc3t9"&&(m.textContent=w)},m(i,T){l(i,m,T)},p:Dt,d(i){i&&s(m)}}}function he(it){let m,w,i,T,U,lt="تقدم مكتبة 🤗 Transformers فئة <code>Trainer</code> مُحسّنة لتدريب نماذج 🤗 Transformers، مما يسهل بدء التدريب دون الحاجة إلى كتابة حلقة التدريب الخاصة بك يدويًا. تدعم واجهة برمجة تطبيقات <code>Trainer</code> مجموعة واسعة من خيارات التدريب والميزات مثل التسجيل، وتراكم التدرجات، والدقة المختلطة.",Y,ct,at='ابدأ بتحميل نموذجك وتحديد عدد التصنيفات المتوقعة. من بطاقة مجموعة بيانات Yelp Review <a href="https://huggingface.co/datasets/yelp_review_full#data-fields" rel="nofollow">dataset card</a>، تعرف أنه يوجد خمسة تصنيفات:',W,S,nt,H,X,b,ot,O,gt='بعد ذلك، قم بإنشاء كائن من فئة <code>TrainingArguments</code> والتي تحتوي على جميع العوامل والمتغيرات التي يمكنك ضبطها بالإضافة إلى خيارات تنشيط التدريب المختلفة. بالنسبة لهذا البرنامج التعليمي، يمكنك البدء بمعاملات التدريب الافتراضية <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments" rel="nofollow">hyperparameters</a>، ولكن لا تتردد في تجربتها للعثور على الإعدادات المثلى.',L,v,Jt="حدد مكان حفظ النسخ من تدريبك:",et,G,dt,C,Ct,F,Q='لا يقوم <code>Trainer</code> تلقائيًا بتقييم أداء النموذج أثناء التدريب. ستحتاج إلى تمرير دالة إلى <code>Trainer</code> لحساب وإبلاغ المقاييس. توفر مكتبة <a href="https://huggingface.co/docs/evaluate/index" rel="nofollow">🤗 Evaluate</a> دالة <a href="https://huggingface.co/spaces/evaluate-metric/accuracy" rel="nofollow"><code>accuracy</code></a> بسيطة يمكنك تحميلها باستخدام الدالة <code>evaluate.load</code> (راجع هذا <a href="https://huggingface.co/docs/evaluate/a_quick_tour" rel="nofollow">الدليل السريع</a> لمزيد من المعلومات):',ut,V,pt,N,st="استدعِ دالة <code>compute</code> على <code>metric</code> لحساب دقة تنبؤاتك. قبل تمرير تنبؤاتك إلى دالة <code>compute</code>، تحتاج إلى تحويل  النتائج الخام logits إلى تنبؤات نهائية (تذكر أن جميع نماذج 🤗 Transformers تعيد نتائج الخام logits):",$t,_,q,E,ft="إذا كنت ترغب في مراقبة مقاييس التقييم الخاصة بك أثناء الضبط الدقيق، فحدد معلمة <code>eval_strategy</code> في معاملات التدريب الخاصة بك لإظهار مقياس التقييم في نهاية كل حقبة تدريبه:",P,I,wt,B,x,D,rt="قم بإنشاء كائن <code>Trainer</code> باستخدام نموذجك، ومعاملات التدريب، ومجموعات البيانات التدريبية والاختبارية، ودالة التقييم:",z,K,R,mt,A="ثم قم بضبط نموذجك عن طريق استدعاء <code>train()</code>:",tt,Z,Mt;return m=new te({props:{id:"nvBXf7s7vTI"}}),i=new bt({props:{title:"التدريب باستخدام PyTorch Trainer",local:"التدريب-باستخدام-pytorch-trainer",headingTag:"h2"}}),S=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZS1iZXJ0JTJGYmVydC1iYXNlLWNhc2VkJTIyJTJDJTIwbnVtX2xhYmVscyUzRDUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>, num_labels=<span class="hljs-number">5</span>)`,wrap:!1}}),H=new Kt({props:{$$slots:{default:[Me]},$$scope:{ctx:it}}}),b=new bt({props:{title:"اختيار أحسن العوامل والمتغيرات للتدريب (Training hyperparameters)",local:"اختيار-أحسن-العوامل-والمتغيرات-للتدريب-training-hyperparameters",headingTag:"h3"}}),G=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKG91dHB1dF9kaXIlM0QlMjJ0ZXN0X3RyYWluZXIlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>)`,wrap:!1}}),C=new bt({props:{title:"التقييم",local:"التقييم",headingTag:"h3"}}),V=new k({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)`,wrap:!1}}),_=new k({props:{code:"ZGVmJTIwY29tcHV0ZV9tZXRyaWNzKGV2YWxfcHJlZCklM0ElMEElMjAlMjAlMjAlMjBsb2dpdHMlRDglOEMlMjBsYWJlbHMlMjAlM0QlMjBldmFsX3ByZWQlMEElMjAlMjAlMjAlMjBwcmVkaWN0aW9ucyUyMCUzRCUyMG5wLmFyZ21heChsb2dpdHMlMkMlMjBheGlzJTNELTEpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RsYWJlbHMp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>):
<span class="hljs-meta">... </span>    logits، labels = eval_pred
<span class="hljs-meta">... </span>    predictions = np.argmax(logits, axis=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> metric.compute(predictions=predictions, references=labels)`,wrap:!1}}),I=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyhvdXRwdXRfZGlyJTNEJTIydGVzdF90cmFpbmVyJTIyJTJDJTIwZXZhbF9zdHJhdGVneSUzRCUyMmVwb2NoJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>, eval_strategy=<span class="hljs-string">&quot;epoch&quot;</span>)`,wrap:!1}}),B=new bt({props:{title:"المدرب",local:"المدرب",headingTag:"h3"}}),K=new k({props:{code:"dHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHNtYWxsX3RyYWluX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0RzbWFsbF9ldmFsX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBjb21wdXRlX21ldHJpY3MlM0Rjb21wdXRlX21ldHJpY3MlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Trainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=small_train_dataset,
<span class="hljs-meta">... </span>    eval_dataset=small_eval_dataset,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)`,wrap:!1}}),Z=new k({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()',wrap:!1}}),{c(){h(m.$$.fragment),w=p(),h(i.$$.fragment),T=p(),U=f("p"),U.innerHTML=lt,Y=p(),ct=f("p"),ct.innerHTML=at,W=p(),h(S.$$.fragment),nt=p(),h(H.$$.fragment),X=p(),h(b.$$.fragment),ot=p(),O=f("p"),O.innerHTML=gt,L=p(),v=f("p"),v.textContent=Jt,et=p(),h(G.$$.fragment),dt=p(),h(C.$$.fragment),Ct=p(),F=f("p"),F.innerHTML=Q,ut=p(),h(V.$$.fragment),pt=p(),N=f("p"),N.innerHTML=st,$t=p(),h(_.$$.fragment),q=p(),E=f("p"),E.innerHTML=ft,P=p(),h(I.$$.fragment),wt=p(),h(B.$$.fragment),x=p(),D=f("p"),D.innerHTML=rt,z=p(),h(K.$$.fragment),R=p(),mt=f("p"),mt.innerHTML=A,tt=p(),h(Z.$$.fragment)},l(a){y(m.$$.fragment,a),w=r(a),y(i.$$.fragment,a),T=r(a),U=M(a,"P",{"data-svelte-h":!0}),J(U)!=="svelte-arbzca"&&(U.innerHTML=lt),Y=r(a),ct=M(a,"P",{"data-svelte-h":!0}),J(ct)!=="svelte-5oyllg"&&(ct.innerHTML=at),W=r(a),y(S.$$.fragment,a),nt=r(a),y(H.$$.fragment,a),X=r(a),y(b.$$.fragment,a),ot=r(a),O=M(a,"P",{"data-svelte-h":!0}),J(O)!=="svelte-y56a24"&&(O.innerHTML=gt),L=r(a),v=M(a,"P",{"data-svelte-h":!0}),J(v)!=="svelte-s7q85c"&&(v.textContent=Jt),et=r(a),y(G.$$.fragment,a),dt=r(a),y(C.$$.fragment,a),Ct=r(a),F=M(a,"P",{"data-svelte-h":!0}),J(F)!=="svelte-1bpvwpx"&&(F.innerHTML=Q),ut=r(a),y(V.$$.fragment,a),pt=r(a),N=M(a,"P",{"data-svelte-h":!0}),J(N)!=="svelte-12weu0m"&&(N.innerHTML=st),$t=r(a),y(_.$$.fragment,a),q=r(a),E=M(a,"P",{"data-svelte-h":!0}),J(E)!=="svelte-1iciqzd"&&(E.innerHTML=ft),P=r(a),y(I.$$.fragment,a),wt=r(a),y(B.$$.fragment,a),x=r(a),D=M(a,"P",{"data-svelte-h":!0}),J(D)!=="svelte-2j09i4"&&(D.innerHTML=rt),z=r(a),y(K.$$.fragment,a),R=r(a),mt=M(a,"P",{"data-svelte-h":!0}),J(mt)!=="svelte-1r3oswf"&&(mt.innerHTML=A),tt=r(a),y(Z.$$.fragment,a)},m(a,o){g(m,a,o),l(a,w,o),g(i,a,o),l(a,T,o),l(a,U,o),l(a,Y,o),l(a,ct,o),l(a,W,o),g(S,a,o),l(a,nt,o),g(H,a,o),l(a,X,o),g(b,a,o),l(a,ot,o),l(a,O,o),l(a,L,o),l(a,v,o),l(a,et,o),g(G,a,o),l(a,dt,o),g(C,a,o),l(a,Ct,o),l(a,F,o),l(a,ut,o),g(V,a,o),l(a,pt,o),l(a,N,o),l(a,$t,o),g(_,a,o),l(a,q,o),l(a,E,o),l(a,P,o),g(I,a,o),l(a,wt,o),g(B,a,o),l(a,x,o),l(a,D,o),l(a,z,o),g(K,a,o),l(a,R,o),l(a,mt,o),l(a,tt,o),g(Z,a,o),Mt=!0},p(a,o){const ht={};o&2&&(ht.$$scope={dirty:o,ctx:a}),H.$set(ht)},i(a){Mt||(u(m.$$.fragment,a),u(i.$$.fragment,a),u(S.$$.fragment,a),u(H.$$.fragment,a),u(b.$$.fragment,a),u(G.$$.fragment,a),u(C.$$.fragment,a),u(V.$$.fragment,a),u(_.$$.fragment,a),u(I.$$.fragment,a),u(B.$$.fragment,a),u(K.$$.fragment,a),u(Z.$$.fragment,a),Mt=!0)},o(a){$(m.$$.fragment,a),$(i.$$.fragment,a),$(S.$$.fragment,a),$(H.$$.fragment,a),$(b.$$.fragment,a),$(G.$$.fragment,a),$(C.$$.fragment,a),$(V.$$.fragment,a),$(_.$$.fragment,a),$(I.$$.fragment,a),$(B.$$.fragment,a),$(K.$$.fragment,a),$(Z.$$.fragment,a),Mt=!1},d(a){a&&(s(w),s(T),s(U),s(Y),s(ct),s(W),s(nt),s(X),s(ot),s(O),s(L),s(v),s(et),s(dt),s(Ct),s(F),s(ut),s(pt),s(N),s($t),s(q),s(E),s(P),s(wt),s(x),s(D),s(z),s(R),s(mt),s(tt)),j(m,a),j(i,a),j(S,a),j(H,a),j(b,a),j(G,a),j(C,a),j(V,a),j(_,a),j(I,a),j(B,a),j(K,a),j(Z,a)}}}function ye(it){let m,w;return m=new ee({props:{$$slots:{default:[he]},$$scope:{ctx:it}}}),{c(){h(m.$$.fragment)},l(i){y(m.$$.fragment,i)},m(i,T){g(m,i,T),w=!0},p(i,T){const U={};T&2&&(U.$$scope={dirty:T,ctx:i}),m.$set(U)},i(i){w||(u(m.$$.fragment,i),w=!0)},o(i){$(m.$$.fragment,i),w=!1},d(i){j(m,i)}}}function ge(it){let m,w=`أنت لست مضطرًا لتمرير دالة خسارة إلى نماذجك عند تجميعها! تختار نماذج Hugging Face تلقائيًا
دالة خسارة مناسبة لمهمتها وهندسة نموذجها إذا تُركت هذه الحجة فارغة. يمكنك دائمًا
تجاوز ذلك عن طريق تحديد دالة خسارة بنفسك إذا كنت تريد ذلك!`;return{c(){m=f("p"),m.textContent=w},l(i){m=M(i,"P",{"data-svelte-h":!0}),J(m)!=="svelte-1vdt88a"&&(m.textContent=w)},m(i,T){l(i,m,T)},p:Dt,d(i){i&&s(m)}}}function ue(it){let m,w,i,T,U,lt,Y,ct="يمكنك أيضًا تدريب نماذج 🤗 Transformers في TensorFlow باستخدام واجهة برمجة تطبيقات Keras!",at,W,S,nt,H=`عندما تريد تدريب نموذج 🤗 Transformers باستخدام واجهة برمجة تطبيقات Keras، فأنت بحاجة إلى تحويل مجموعة البيانات الخاصة بك إلى تنسيق يفهمه
Keras. إذا كانت مجموعة البيانات الخاصة بك صغيرة، فيمكنك ببساطة تحويلها بالكامل إلى مصفوفات NumPy وإرسالها إلى Keras.
دعونا نجرب ذلك أولاً قبل أن نقوم بأي شيء أكثر تعقيدًا.`,X,b,ot=`أولاً، قم بتحميل مجموعة بيانات. سنستخدم مجموعة بيانات CoLA من معيار <a href="https://huggingface.co/datasets/glue" rel="nofollow">GLUE benchmark</a>،
نظرًا لأنه مهمة تصنيف نص ثنائي بسيطة، وسنأخذ فقط قسم التدريب الآن.`,O,gt,L,v,Jt=`بعد ذلك، قم بتحميل أداة المُجزّئ اللغوي وقم بترميز البيانات كمصفوفات NumPy. لاحظ أن التصنيفات هي بالفعل قائمة من 0 و 1،
لذا يمكننا ببساطة تحويل ذلك مباشرة إلى مصفوفة NumPy بدون ترميز!`,et,G,dt,C,Ct="أخيرًا، قم بتحميل وتجميع وتناسب النموذج. لاحظ أن نماذج Transformers تحتوي جميعها على دالة خسارة ذات صلة بالمهمة بشكل افتراضي، لذا فأنت لست بحاجة إلى تحديد واحدة ما لم ترغب في ذلك:",F,Q,ut,V,pt,N,st=`يعمل هذا النهج بشكل رائع لمجموعات البيانات الصغيرة، ولكن بالنسبة لمجموعات البيانات الأكبر، فقد تجد أنه يصبح مشكلة. لماذا؟
لأن المصفوفة المرمزة والتصنيفات يجب أن يتم تحميلها بالكامل في الذاكرة، ولأن NumPy لا يتعامل مع
المصفوفات”غير المنتظمة”، لذا حشو كل عينة  إلى طول أطول عينة في مجموعة البيانات بأكملها. سيؤدي ذلك إلى زيادة حجم المصفوفة لديك، وستبطئ الرموز الزائده من عملية التدريب أيضًا!`,$t,_,q,E,ft="إذا كنت تريد تجنب إبطاء التدريب، فيمكنك تحميل بياناتك كـ <code>tf.data.Dataset</code> بدلاً من ذلك. على الرغم من أنه يمكنك كتابة خط أنابيب <code>tf.data</code> الخاص بك إذا كنت تريد، إلا أن لدينا طريقتين مختصرتين للقيام بذلك:",P,I,wt=`<li><code>prepare_tf_dataset()</code>: هذه هي الطريقة التي نوصي بها في معظم الحالات. نظرًا لأنه طريقة
على نموذجك، فيمكنه فحص النموذج لتحديد الأعمدة القابلة للاستخدام كمدخلات للنموذج تلقائيًا،
واستبعاد الأعمدة الأخرى لإنشاء مجموعة بيانات أبسط وأكثر كفاءة.</li> <li><code>to_tf_dataset</code>: هذه الطريقة أكثر أساسية، وهي مفيدة عندما تريد التحكم بدقة في كيفية
إنشاء مجموعة البيانات الخاصة بك، عن طريق تحديد أعمدة <code>columns</code> و <code>label_cols</code> المحددة التي سيتم تضمينها.</li>`,B,x,D=`قبل أن تتمكن من استخدام <code>prepare_tf_dataset()</code>، ستحتاج إلى إضافة مخرجات المُجزئ إلى مجموعة البيانات الخاصة بك كأعمدة، كما هو موضح في
عينة التعليمات البرمجية التالية:`,rt,z,K,R,mt="تذكر أن مجموعات بيانات Hugging Face يتم تخزينها على القرص بشكل افتراضي، لذا فلن يؤدي ذلك إلى تضخيم استخدام الذاكرة لديك! بمجرد إضافة الأعمدة، يمكنك بث الدفعات من مجموعة البيانات وإضافة الترميز إلى كل دفعة، مما يقلل بشكل كبير من عدد رموز الترقيم مقارنة بترميز مجموعة البيانات بأكملها.",A,tt,Z,Mt,a=`لاحظ أنه في عينة التعليمات البرمجية أعلاه، تحتاج إلى تمرير المُجزئ اللغوي إلى <code>prepare_tf_dataset</code> حتى تتمكن من حشو الدُفعات بشكل صحيح أثناء تحميلها.
إذا كانت جميع العينات في مجموعة البيانات الخاصة بك بنفس الطول ولم يكن الترميز ضروريًا، فيمكنك تخطي هذا المعامل.
إذا كنت بحاجة إلى القيام بشيء أكثر تعقيدًا من مجرد ترميز العينات (على سبيل المثال، إفساد الرموز للنمذجة اللغوية المُقنعة)،
فيمكنك استخدام معامل <code>collate_fn</code> بدلاً من ذلك لتمرير دالة يتم استدعاؤها لتحويل
قائمة العينات إلى دفعة وتطبيق أي معالجة مسبقة تريدها. راجع أمثلةنا <a href="https://github.com/huggingface/transformers/tree/main/examples" rel="nofollow">examples</a> أو
<a href="https://huggingface.co/docs/transformers/notebooks" rel="nofollow">دفاتر الملاحظات</a> لرؤية هذا النهج في العمل.`,o,ht,Tt="بمجرد إنشاء <code>tf.data.Dataset</code>، يمكنك تجميع النموذج وتناسبه كما هو الحال من قبل:",Ut,jt,yt;return i=new te({props:{id:"rnTGBy2ax1c"}}),U=new bt({props:{title:"تدريب نموذج TensorFlow باستخدام Keras",local:"تدريب-نموذج-tensorflow-باستخدام-keras",headingTag:"h2"}}),W=new bt({props:{title:"تحميل البيانات لـ Keras",local:"تحميل-البيانات-لـ-keras",headingTag:"h3"}}),gt=new k({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJnbHVlJTIyJUQ4JThDJTIwJTIyY29sYSUyMiklMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldCUyMCU1QiUyMnRyYWluJTIyJTVEJTIwJTIzJTIwJUQ4JUFFJUQ4JUIwJTIwJUQ5JTgxJUQ5JTgyJUQ4JUI3JTIwJUQ5JTgyJUQ4JUIzJUQ5JTg1JTIwJUQ4JUE3JUQ5JTg0JUQ4JUFBJUQ4JUFGJUQ4JUIxJUQ5JThBJUQ4JUE4JTIwJUQ4JUE3JUQ5JTg0JUQ4JUEyJUQ5JTg2",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

dataset = load_dataset(<span class="hljs-string">&quot;glue&quot;</span>، <span class="hljs-string">&quot;cola&quot;</span>)
dataset = dataset [<span class="hljs-string">&quot;train&quot;</span>] <span class="hljs-comment"># خذ فقط قسم التدريب الآن</span>`,wrap:!1}}),G=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEFpbXBvcnQlMjBudW1weSUyMGFzJTIwbnAlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUtYmVydCUyRmJlcnQtYmFzZS1jYXNlZCUyMiklMEF0b2tlbml6ZWRfZGF0YSUyMCUzRCUyMHRva2VuaXplcihkYXRhc2V0JTVCJTIyc2VudGVuY2UlMjIlNUQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMm5wJTIyJTJDJTIwcGFkZGluZyUzRFRydWUpJTBBJTIzJTIwVG9rZW5pemVyJTIwcmV0dXJucyUyMGElMjBCYXRjaEVuY29kaW5nJTJDJTIwYnV0JTIwd2UlMjBjb252ZXJ0JTIwdGhhdCUyMHRvJTIwYSUyMGRpY3QlMjBmb3IlMjBLZXJhcyUwQXRva2VuaXplZF9kYXRhJTIwJTNEJTIwZGljdCh0b2tlbml6ZWRfZGF0YSklMEElMEFsYWJlbHMlMjAlM0QlMjBucC5hcnJheShkYXRhc2V0JTVCJTIybGFiZWwlMjIlNUQpJTIwJTIwJTIzJTIwTGFiZWwlMjBpcyUyMGFscmVhZHklMjBhbiUyMGFycmF5JTIwb2YlMjAwJTIwYW5kJTIwMQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)
tokenized_data = tokenizer(dataset[<span class="hljs-string">&quot;sentence&quot;</span>], return_tensors=<span class="hljs-string">&quot;np&quot;</span>, padding=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Tokenizer returns a BatchEncoding, but we convert that to a dict for Keras</span>
tokenized_data = <span class="hljs-built_in">dict</span>(tokenized_data)

labels = np.array(dataset[<span class="hljs-string">&quot;label&quot;</span>])  <span class="hljs-comment"># Label is already an array of 0 and 1</span>`,wrap:!1}}),Q=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQWZyb20lMjB0ZW5zb3JmbG93LmtlcmFzLm9wdGltaXplcnMlMjBpbXBvcnQlMjBBZGFtJTBBJTBBJTIzJTIwJUQ4JUFBJUQ4JUFEJUQ5JTg1JUQ5JThBJUQ5JTg0JTIwJUQ5JTg4JUQ4JUFBJUQ4JUFDJUQ5JTg1JUQ5JThBJUQ4JUI5JTIwJUQ4JUE3JUQ5JTg0JUQ5JTg2JUQ5JTg1JUQ5JTg4JUQ4JUIwJUQ4JUFDJTIwJUQ4JUE3JUQ5JTg0JUQ4JUFFJUQ4JUE3JUQ4JUI1JTIwJUQ4JUE4JUQ5JTg2JUQ4JUE3JTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZS1iZXJ0JTJGYmVydC1iYXNlLWNhc2VkJTIyKSUwQSUyMyUyMCVEOSU4NSVEOCVCOSVEOCVBRiVEOSU4NCVEOCVBNyVEOCVBQSUyMCVEOCVBNyVEOSU4NCVEOCVBQSVEOCVCOSVEOSU4NCVEOSU4NSUyMCVEOCVBNyVEOSU4NCVEOSU4NSVEOSU4NiVEOCVBRSVEOSU4MSVEOCVCNiVEOCVBOSUyMCVEOCVBMyVEOSU4MSVEOCVCNiVEOSU4NCUyMCVEOCVCQSVEOCVBNyVEOSU4NCVEOCVBOCVEOSU4QiVEOCVBNyUyMCVEOSU4NCVEOCVCNiVEOCVBOCVEOCVCNyUyMCVEOCVBNyVEOSU4NCVEOSU4NiVEOSU4NSVEOCVBNyVEOCVCMCVEOCVBQyUyMCVEOCVBNyVEOSU4NCVEOCVBRiVEOSU4MiVEOSU4QSVEOSU4MiVEOCVBOSUwQW1vZGVsLmNvbXBpbGUob3B0aW1pemVyJTNEQWRhbSgzZS01KSklMjAlMjMlMjAlRDklODQlRDglQTclMjAlRDglQUElRDklODglRDglQUMlRDglQUYlMjAlRDglQUYlRDglQTclRDklODQlRDglQTklMjAlRDglQUUlRDglQjMlRDglQTclRDglQjElRDglQTkhJTBBJTBBbW9kZWwuZml0KHRva2VuaXplZF9kYXRhJTJDJTIwbGFiZWxzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification
<span class="hljs-keyword">from</span> tensorflow.keras.optimizers <span class="hljs-keyword">import</span> Adam

<span class="hljs-comment"># تحميل وتجميع النموذج الخاص بنا</span>
model = TFAutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)
<span class="hljs-comment"># معدلات التعلم المنخفضة أفضل غالبًا لضبط النماذج الدقيقة</span>
model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>)) <span class="hljs-comment"># لا توجد دالة خسارة!</span>

model.fit(tokenized_data, labels)`,wrap:!1}}),V=new Kt({props:{$$slots:{default:[ge]},$$scope:{ctx:it}}}),_=new bt({props:{title:"تحميل البيانات كـ tf.data.Dataset",local:"تحميل-البيانات-كـ-tfdatadataset",headingTag:"h3"}}),z=new k({props:{code:"ZGVmJTIwdG9rZW5pemVfZGF0YXNldCUyMChkYXRhKSUzQSUwQSUyMyUyMCVEOCVCMyVEOCVBQSVEOCVBQSVEOSU4NSUyMCVEOCVBNSVEOCVCNiVEOCVBNyVEOSU4MSVEOCVBOSUyMCVEOSU4NSVEOSU4MSVEOCVBNyVEOCVBQSVEOSU4QSVEOCVBRCUyMCVEOCVBNyVEOSU4NCVEOSU4MiVEOCVBNyVEOSU4NSVEOSU4OCVEOCVCMyUyMCVEOCVBNyVEOSU4NCVEOCVCMCVEOSU4QSUyMCVEOCVBQSVEOSU4NSVEOCVBQSUyMCVEOCVBNSVEOCVCOSVEOCVBNyVEOCVBRiVEOCVBQSVEOSU4NyUyMCVEOSU4MyVEOCVBMyVEOCVCOSVEOSU4NSVEOCVBRiVEOCVBOSUyMCVEOCVBNSVEOSU4NCVEOSU4OSUyMCVEOSU4NSVEOCVBQyVEOSU4NSVEOSU4OCVEOCVCOSVEOCVBOSUyMCVEOCVBNyVEOSU4NCVEOCVBOCVEOSU4QSVEOCVBNyVEOSU4NiVEOCVBNyVEOCVBQSUwQXJldHVybiUyMHRva2VuaXplcihkYXRhJTVCJTIydGV4dCUyMiU1RCklMEElMEElMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldC5tYXAodG9rZW5pemVfZGF0YXNldCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_dataset</span> (data):
<span class="hljs-comment"># ستتم إضافة مفاتيح القاموس الذي تمت إعادته كأعمدة إلى مجموعة البيانات</span>
<span class="hljs-keyword">return</span> tokenizer(data[<span class="hljs-string">&quot;text&quot;</span>])


dataset = dataset.<span class="hljs-built_in">map</span>(tokenize_dataset)`,wrap:!1}}),tt=new k({props:{code:"dGZfZGF0YXNldCUyMCUzRCUyMG1vZGVsLnByZXBhcmVfdGZfZGF0YXNldChkYXRhc2V0JTVCJTIydHJhaW4lMjIlNUQlMkMlMjBiYXRjaF9zaXplJTNEMTYlMkMlMjBzaHVmZmxlJTNEVHJ1ZSUyQyUyMHRva2VuaXplciUzRHRva2VuaXplcik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tf_dataset = model.prepare_tf_dataset(dataset[<span class="hljs-string">&quot;train&quot;</span>], batch_size=<span class="hljs-number">16</span>, shuffle=<span class="hljs-literal">True</span>, tokenizer=tokenizer)',wrap:!1}}),jt=new k({props:{code:"bW9kZWwuY29tcGlsZShvcHRpbWl6ZXIlM0RBZGFtKDNlLTUpKSUyMCUyMCUyMyUyME5vJTIwbG9zcyUyMGFyZ3VtZW50ISUwQSUwQW1vZGVsLmZpdCh0Zl9kYXRhc2V0KQ==",highlighted:`model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>))  <span class="hljs-comment"># No loss argument!</span>

model.fit(tf_dataset)`,wrap:!1}}),{c(){m=f("a"),w=p(),h(i.$$.fragment),T=p(),h(U.$$.fragment),lt=p(),Y=f("p"),Y.textContent=ct,at=p(),h(W.$$.fragment),S=p(),nt=f("p"),nt.textContent=H,X=p(),b=f("p"),b.innerHTML=ot,O=p(),h(gt.$$.fragment),L=p(),v=f("p"),v.textContent=Jt,et=p(),h(G.$$.fragment),dt=p(),C=f("p"),C.textContent=Ct,F=p(),h(Q.$$.fragment),ut=p(),h(V.$$.fragment),pt=p(),N=f("p"),N.textContent=st,$t=p(),h(_.$$.fragment),q=p(),E=f("p"),E.innerHTML=ft,P=p(),I=f("ul"),I.innerHTML=wt,B=p(),x=f("p"),x.innerHTML=D,rt=p(),h(z.$$.fragment),K=p(),R=f("p"),R.textContent=mt,A=p(),h(tt.$$.fragment),Z=p(),Mt=f("p"),Mt.innerHTML=a,o=p(),ht=f("p"),ht.innerHTML=Tt,Ut=p(),h(jt.$$.fragment),this.h()},l(n){m=M(n,"A",{id:!0}),Et(m).forEach(s),w=r(n),y(i.$$.fragment,n),T=r(n),y(U.$$.fragment,n),lt=r(n),Y=M(n,"P",{"data-svelte-h":!0}),J(Y)!=="svelte-jnm64z"&&(Y.textContent=ct),at=r(n),y(W.$$.fragment,n),S=r(n),nt=M(n,"P",{"data-svelte-h":!0}),J(nt)!=="svelte-s0mj8c"&&(nt.textContent=H),X=r(n),b=M(n,"P",{"data-svelte-h":!0}),J(b)!=="svelte-w9ig49"&&(b.innerHTML=ot),O=r(n),y(gt.$$.fragment,n),L=r(n),v=M(n,"P",{"data-svelte-h":!0}),J(v)!=="svelte-1nvgxli"&&(v.textContent=Jt),et=r(n),y(G.$$.fragment,n),dt=r(n),C=M(n,"P",{"data-svelte-h":!0}),J(C)!=="svelte-15uhmp5"&&(C.textContent=Ct),F=r(n),y(Q.$$.fragment,n),ut=r(n),y(V.$$.fragment,n),pt=r(n),N=M(n,"P",{"data-svelte-h":!0}),J(N)!=="svelte-1ehv4qq"&&(N.textContent=st),$t=r(n),y(_.$$.fragment,n),q=r(n),E=M(n,"P",{"data-svelte-h":!0}),J(E)!=="svelte-jite7c"&&(E.innerHTML=ft),P=r(n),I=M(n,"UL",{"data-svelte-h":!0}),J(I)!=="svelte-ddahl1"&&(I.innerHTML=wt),B=r(n),x=M(n,"P",{"data-svelte-h":!0}),J(x)!=="svelte-1aro3o3"&&(x.innerHTML=D),rt=r(n),y(z.$$.fragment,n),K=r(n),R=M(n,"P",{"data-svelte-h":!0}),J(R)!=="svelte-a5dau1"&&(R.textContent=mt),A=r(n),y(tt.$$.fragment,n),Z=r(n),Mt=M(n,"P",{"data-svelte-h":!0}),J(Mt)!=="svelte-10zakf9"&&(Mt.innerHTML=a),o=r(n),ht=M(n,"P",{"data-svelte-h":!0}),J(ht)!=="svelte-1hjesxj"&&(ht.innerHTML=Tt),Ut=r(n),y(jt.$$.fragment,n),this.h()},h(){Qt(m,"id","keras")},m(n,t){l(n,m,t),l(n,w,t),g(i,n,t),l(n,T,t),g(U,n,t),l(n,lt,t),l(n,Y,t),l(n,at,t),g(W,n,t),l(n,S,t),l(n,nt,t),l(n,X,t),l(n,b,t),l(n,O,t),g(gt,n,t),l(n,L,t),l(n,v,t),l(n,et,t),g(G,n,t),l(n,dt,t),l(n,C,t),l(n,F,t),g(Q,n,t),l(n,ut,t),g(V,n,t),l(n,pt,t),l(n,N,t),l(n,$t,t),g(_,n,t),l(n,q,t),l(n,E,t),l(n,P,t),l(n,I,t),l(n,B,t),l(n,x,t),l(n,rt,t),g(z,n,t),l(n,K,t),l(n,R,t),l(n,A,t),g(tt,n,t),l(n,Z,t),l(n,Mt,t),l(n,o,t),l(n,ht,t),l(n,Ut,t),g(jt,n,t),yt=!0},p(n,t){const d={};t&2&&(d.$$scope={dirty:t,ctx:n}),V.$set(d)},i(n){yt||(u(i.$$.fragment,n),u(U.$$.fragment,n),u(W.$$.fragment,n),u(gt.$$.fragment,n),u(G.$$.fragment,n),u(Q.$$.fragment,n),u(V.$$.fragment,n),u(_.$$.fragment,n),u(z.$$.fragment,n),u(tt.$$.fragment,n),u(jt.$$.fragment,n),yt=!0)},o(n){$(i.$$.fragment,n),$(U.$$.fragment,n),$(W.$$.fragment,n),$(gt.$$.fragment,n),$(G.$$.fragment,n),$(Q.$$.fragment,n),$(V.$$.fragment,n),$(_.$$.fragment,n),$(z.$$.fragment,n),$(tt.$$.fragment,n),$(jt.$$.fragment,n),yt=!1},d(n){n&&(s(m),s(w),s(T),s(lt),s(Y),s(at),s(S),s(nt),s(X),s(b),s(O),s(L),s(v),s(et),s(dt),s(C),s(F),s(ut),s(pt),s(N),s($t),s(q),s(E),s(P),s(I),s(B),s(x),s(rt),s(K),s(R),s(A),s(Z),s(Mt),s(o),s(ht),s(Ut)),j(i,n),j(U,n),j(W,n),j(gt,n),j(G,n),j(Q,n),j(V,n),j(_,n),j(z,n),j(tt,n),j(jt,n)}}}function $e(it){let m,w;return m=new ee({props:{$$slots:{default:[ue]},$$scope:{ctx:it}}}),{c(){h(m.$$.fragment)},l(i){y(m.$$.fragment,i)},m(i,T){g(m,i,T),w=!0},p(i,T){const U={};T&2&&(U.$$scope={dirty:T,ctx:i}),m.$set(U)},i(i){w||(u(m.$$.fragment,i),w=!0)},o(i){$(m.$$.fragment,i),w=!1},d(i){j(m,i)}}}function je(it){let m,w='احصل على وصول مجاني إلى وحدة معالجة رسومات سحابية إذا لم يكن لديك واحدة مع دفتر ملاحظات مستضاف مثل <a href="https://colab.research.google.com/" rel="nofollow">Colaboratory</a> أو <a href="https://studiolab.sagemaker.aws/" rel="nofollow">SageMaker StudioLab</a>.';return{c(){m=f("p"),m.innerHTML=w},l(i){m=M(i,"P",{"data-svelte-h":!0}),J(m)!=="svelte-17aktbv"&&(m.innerHTML=w)},m(i,T){l(i,m,T)},p:Dt,d(i){i&&s(m)}}}function Je(it){let m,w,i,T="<code>Trainer</code> يهتم بحلقة التدريب ويسمح لك بضبط نموذج في سطر واحد من التعليمات البرمجية. بالنسبة للمستخدمين الذين يفضلون كتابة حلقة التدريب الخاصة بهم، يمكنك أيضًا ضبط نموذج 🤗 Transformers في PyTorch الأصلي.",U,lt,Y="في هذه المرحلة، قد تحتاج إلى إعادة تشغيل دفتر الملاحظات الخاص بك أو تنفيذ التعليمات البرمجية التالية لتحرير بعض الذاكرة:",ct,at,W,S,nt="بعد ذلك، قم بمعالجة <code>tokenized_dataset</code> يدويًا لإعداده للتدريب.",H,X,b,ot,O="إزالة عمود <code>text</code> لأن النموذج لا يقبل النص الخام كإدخال:",gt,L,v,Jt,et,G="إعادة تسمية عمود <code>label</code> إلى <code>labels</code> لأن النموذج يتوقع أن يكون الاسم <code>labels</code>:",dt,C,Ct,F,Q,ut="قم بتعيين تنسيق مجموعة البيانات لإرجاع مؤشرات PyTorch بدلاً من القوائم:",V,pt,N,st,$t="بعد ذلك، قم بإنشاء مجموعة فرعية أصغر من مجموعة البيانات كما هو موضح سابقًا لتسريع الضبط الدقيق:",_,q,E,ft,P,I,wt="قم بإنشاء <code>DataLoader</code> لمجموعات بيانات التدريب والاختبار الخاصة بك حتى تتمكن من التكرار عبر دفعات البيانات:",B,x,D,rt,z="قم بتحميل نموذجك مع عدد التصنيفات المتوقعة:",K,R,mt,A,tt,Z,Mt='قم بإنشاء محسن ومخطط معدل تعلم لضبط النموذج الدقيق. دعنا نستخدم <a href="https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html" rel="nofollow"><code>AdamW</code></a> المحسن من PyTorch:',a,o,ht,Tt,Ut="قم بإنشاء مخطط معدل التعلم الافتراضي من <code>Trainer</code>:",jt,yt,n,t,d="أخيرًا، حدد <code>device</code> لاستخدام وحدة معالجة الرسومات (GPU) إذا كان لديك حق الوصول إليها. وإلا، فقد يستغرق التدريب على وحدة المعالجة المركزية (CPU) عدة ساعات بدلاً من دقائق قليلة.",vt,Zt,Nt,kt,xt,_t,se="رائع، الآن أنت مستعد للتدريب! 🥳",zt,Rt,Yt,Gt,le='لمراقبة تقدم التدريب الخاص بك، استخدم مكتبة <a href="https://tqdm.github.io/" rel="nofollow">tqdm</a> لإضافة شريط تقدم فوق عدد خطوات التدريب:',St,It,Ht,Bt,Ot,Wt,ae="تمامًا كما أضفت وظيفة تقييم إلى <code>Trainer</code>]، تحتاج إلى القيام بنفس الشيء عندما تكتب حلقة التدريب الخاصة بك. ولكن بدلاً من حساب الإبلاغ عن المقياس في نهاية كل حقبة، هذه المرة ستقوم بتجميع جميع الدفعات باستخدام <code>add_batch</code> وحساب المقياس في النهاية.",At,Xt,Lt;return m=new te({props:{id:"Dh9CL8fyG80"}}),at=new k({props:{code:"ZGVsJTIwbW9kZWwlMEFkZWwlMjB0cmFpbmVyJTBBdG9yY2guY3VkYS5lbXB0eV9jYWNoZSgp",highlighted:`<span class="hljs-keyword">del</span> model
<span class="hljs-keyword">del</span> trainer
torch.cuda.empty_cache()`,wrap:!1}}),L=new k({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbW92ZV9jb2x1bW5zKCU1QiUyMnRleHQlMjIlNUQp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.remove_columns([<span class="hljs-string">&quot;text&quot;</span>])',wrap:!1}}),C=new k({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbmFtZV9jb2x1bW4oJTIybGFiZWwlMjIlRDglOEMlMjAlMjJsYWJlbHMlMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.rename_column(<span class="hljs-string">&quot;label&quot;</span>، <span class="hljs-string">&quot;labels&quot;</span>)',wrap:!1}}),pt=new k({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzLnNldF9mb3JtYXQoJTIydG9yY2glMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets.set_format(<span class="hljs-string">&quot;torch&quot;</span>)',wrap:!1}}),q=new k({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`,wrap:!1}}),ft=new bt({props:{title:"DataLoader",local:"dataloader",headingTag:"h3"}}),x=new k({props:{code:"ZnJvbSUyMHRvcmNoLnV0aWxzLmRhdGElMjBpbXBvcnQlMjBEYXRhTG9hZGVyJTBBJTBBdHJhaW5fZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoc21hbGxfdHJhaW5fZGF0YXNldCVEOCU4QyUyMHNodWZmbGUlM0RUcnVlJUQ4JThDJTIwYmF0Y2hfc2l6ZSUzRDgpJTBBZXZhbF9kYXRhbG9hZGVyJTIwJTNEJTIwRGF0YUxvYWRlcihzbWFsbF9ldmFsX2RhdGFzZXQlRDglOEMlMjBiYXRjaF9zaXplJTNEOCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.utils.data <span class="hljs-keyword">import</span> DataLoader

<span class="hljs-meta">&gt;&gt;&gt; </span>train_dataloader = DataLoader(small_train_dataset، shuffle=<span class="hljs-literal">True</span>، batch_size=<span class="hljs-number">8</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>eval_dataloader = DataLoader(small_eval_dataset، batch_size=<span class="hljs-number">8</span>)`,wrap:!1}}),R=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZS1iZXJ0JTJGYmVydC1iYXNlLWNhc2VkJTIyJUQ4JThDJTIwbnVtX2xhYmVscyUzRDUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>، num_labels=<span class="hljs-number">5</span>)`,wrap:!1}}),A=new bt({props:{title:"المحسن ومخطط معدل التعلم",local:"المحسن-ومخطط-معدل-التعلم",headingTag:"h3"}}),o=new k({props:{code:"ZnJvbSUyMHRvcmNoLm9wdGltJTIwaW1wb3J0JTIwQWRhbVclMEElMEFvcHRpbWl6ZXIlMjAlM0QlMjBBZGFtVyhtb2RlbC5wYXJhbWV0ZXJzKCklRDglOEMlMjBsciUzRDVlLTUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.optim <span class="hljs-keyword">import</span> AdamW

<span class="hljs-meta">&gt;&gt;&gt; </span>optimizer = AdamW(model.parameters()، lr=<span class="hljs-number">5e-5</span>)`,wrap:!1}}),yt=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGdldF9zY2hlZHVsZXIlMEElMEFudW1fZXBvY2hzJTIwJTNEJTIwMyUwQW51bV90cmFpbmluZ19zdGVwcyUyMCUzRCUyMG51bV9lcG9jaHMlMjAqJTIwbGVuKHRyYWluX2RhdGFsb2FkZXIpJTBBbHJfc2NoZWR1bGVyJTIwJTNEJTIwZ2V0X3NjaGVkdWxlciglMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIybGluZWFyJTIyJUQ4JThDJTIwb3B0aW1pemVyJTNEb3B0aW1pemVyJUQ4JThDJTIwbnVtX3dhcm11cF9zdGVwcyUzRDAlRDglOEMlMjBudW1fdHJhaW5pbmdfc3RlcHMlM0RudW1fdHJhaW5pbmdfc3RlcHMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> get_scheduler

<span class="hljs-meta">&gt;&gt;&gt; </span>num_epochs = <span class="hljs-number">3</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>num_training_steps = num_epochs * <span class="hljs-built_in">len</span>(train_dataloader)
<span class="hljs-meta">&gt;&gt;&gt; </span>lr_scheduler = get_scheduler(
<span class="hljs-meta">... </span>    name=<span class="hljs-string">&quot;linear&quot;</span>، optimizer=optimizer، num_warmup_steps=<span class="hljs-number">0</span>، num_training_steps=num_training_steps
<span class="hljs-meta">... </span>)`,wrap:!1}}),Zt=new k({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFkZXZpY2UlMjAlM0QlMjB0b3JjaC5kZXZpY2UoJTIyY3VkYSUyMiklMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwdG9yY2guZGV2aWNlKCUyMmNwdSUyMiklMEFtb2RlbC50byhkZXZpY2Up",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span>device = torch.device(<span class="hljs-string">&quot;cuda&quot;</span>) <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> torch.device(<span class="hljs-string">&quot;cpu&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.to(device)`,wrap:!1}}),kt=new Kt({props:{$$slots:{default:[je]},$$scope:{ctx:it}}}),Rt=new bt({props:{title:"حلقة التدريب",local:"حلقة-التدريب",headingTag:"h3"}}),It=new k({props:{code:"ZnJvbSUyMHRxZG0uYXV0byUyMGltcG9ydCUyMHRxZG0lMEElMEFwcm9ncmVzc19iYXIlMjAlM0QlMjB0cWRtKHJhbmdlKG51bV90cmFpbmluZ19zdGVwcykpJTBBJTBBbW9kZWwudHJhaW4oKSUwQWZvciUyMGVwb2NoJTIwaW4lMjByYW5nZShudW1fZXBvY2hzKSUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGJhdGNoJTIwaW4lMjB0cmFpbl9kYXRhbG9hZGVyJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayVEOCU4QyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9zcy5iYWNrd2FyZCgpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxyX3NjaGVkdWxlci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuemVyb19ncmFkKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIudXBkYXRlKDEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> tqdm.auto <span class="hljs-keyword">import</span> tqdm

<span class="hljs-meta">&gt;&gt;&gt; </span>progress_bar = tqdm(<span class="hljs-built_in">range</span>(num_training_steps))

<span class="hljs-meta">&gt;&gt;&gt; </span>model.train()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_epochs):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_dataloader:
<span class="hljs-meta">... </span>        batch = {k: v.to(device) <span class="hljs-keyword">for</span> k، v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>        outputs = model(**batch)
<span class="hljs-meta">... </span>        loss = outputs.loss
<span class="hljs-meta">... </span>        loss.backward()

<span class="hljs-meta">... </span>        optimizer.step()
<span class="hljs-meta">... </span>        lr_scheduler.step()
<span class="hljs-meta">... </span>        optimizer.zero_grad()
<span class="hljs-meta">... </span>        progress_bar.update(<span class="hljs-number">1</span>)`,wrap:!1}}),Bt=new bt({props:{title:"تقييم",local:"تقييم",headingTag:"h3"}}),Xt=new k({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKSUwQW1vZGVsLmV2YWwoKSUwQWZvciUyMGJhdGNoJTIwaW4lMjBldmFsX2RhdGFsb2FkZXIlM0ElMEElMjAlMjAlMjAlMjBiYXRjaCUyMCUzRCUyMCU3QmslM0ElMjB2LnRvKGRldmljZSklMjBmb3IlMjBrJUQ4JThDJTIwdiUyMGluJTIwYmF0Y2guaXRlbXMoKSU3RCUwQSUyMCUyMCUyMCUyMHdpdGglMjB0b3JjaC5ub19ncmFkKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMEElMjAlMjAlMjAlMjBsb2dpdHMlMjAlM0QlMjBvdXRwdXRzLmxvZ2l0cyUwQSUyMCUyMCUyMCUyMHByZWRpY3Rpb25zJTIwJTNEJTIwdG9yY2guYXJnbWF4KGxvZ2l0cyVEOCU4QyUyMGRpbSUzRC0xKSUwQSUyMCUyMCUyMCUyMG1ldHJpYy5hZGRfYmF0Y2gocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyVEOCU4QyUyMHJlZmVyZW5jZXMlM0RiYXRjaCU1QiUyMmxhYmVscyUyMiU1RCklMEElMEFtZXRyaWMuY29tcHV0ZSgp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.<span class="hljs-built_in">eval</span>()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> eval_dataloader:
<span class="hljs-meta">... </span>    batch = {k: v.to(device) <span class="hljs-keyword">for</span> k، v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>    <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span>        outputs = model(**batch)

<span class="hljs-meta">... </span>    logits = outputs.logits
<span class="hljs-meta">... </span>    predictions = torch.argmax(logits، dim=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    metric.add_batch(predictions=predictions، references=batch[<span class="hljs-string">&quot;labels&quot;</span>])

<span class="hljs-meta">&gt;&gt;&gt; </span>metric.compute()`,wrap:!1}}),{c(){h(m.$$.fragment),w=p(),i=f("p"),i.innerHTML=T,U=p(),lt=f("p"),lt.textContent=Y,ct=p(),h(at.$$.fragment),W=p(),S=f("p"),S.innerHTML=nt,H=p(),X=f("ol"),b=f("li"),ot=f("p"),ot.innerHTML=O,gt=p(),h(L.$$.fragment),v=p(),Jt=f("li"),et=f("p"),et.innerHTML=G,dt=p(),h(C.$$.fragment),Ct=p(),F=f("li"),Q=f("p"),Q.textContent=ut,V=p(),h(pt.$$.fragment),N=p(),st=f("p"),st.textContent=$t,_=p(),h(q.$$.fragment),E=p(),h(ft.$$.fragment),P=p(),I=f("p"),I.innerHTML=wt,B=p(),h(x.$$.fragment),D=p(),rt=f("p"),rt.textContent=z,K=p(),h(R.$$.fragment),mt=p(),h(A.$$.fragment),tt=p(),Z=f("p"),Z.innerHTML=Mt,a=p(),h(o.$$.fragment),ht=p(),Tt=f("p"),Tt.innerHTML=Ut,jt=p(),h(yt.$$.fragment),n=p(),t=f("p"),t.innerHTML=d,vt=p(),h(Zt.$$.fragment),Nt=p(),h(kt.$$.fragment),xt=p(),_t=f("p"),_t.textContent=se,zt=p(),h(Rt.$$.fragment),Yt=p(),Gt=f("p"),Gt.innerHTML=le,St=p(),h(It.$$.fragment),Ht=p(),h(Bt.$$.fragment),Ot=p(),Wt=f("p"),Wt.innerHTML=ae,At=p(),h(Xt.$$.fragment)},l(e){y(m.$$.fragment,e),w=r(e),i=M(e,"P",{"data-svelte-h":!0}),J(i)!=="svelte-1au92y4"&&(i.innerHTML=T),U=r(e),lt=M(e,"P",{"data-svelte-h":!0}),J(lt)!=="svelte-6p3hc0"&&(lt.textContent=Y),ct=r(e),y(at.$$.fragment,e),W=r(e),S=M(e,"P",{"data-svelte-h":!0}),J(S)!=="svelte-1idotys"&&(S.innerHTML=nt),H=r(e),X=M(e,"OL",{});var c=Et(X);b=M(c,"LI",{});var Ft=Et(b);ot=M(Ft,"P",{"data-svelte-h":!0}),J(ot)!=="svelte-jea1c3"&&(ot.innerHTML=O),gt=r(Ft),y(L.$$.fragment,Ft),Ft.forEach(s),v=r(c),Jt=M(c,"LI",{});var qt=Et(Jt);et=M(qt,"P",{"data-svelte-h":!0}),J(et)!=="svelte-1facmye"&&(et.innerHTML=G),dt=r(qt),y(C.$$.fragment,qt),qt.forEach(s),Ct=r(c),F=M(c,"LI",{});var Pt=Et(F);Q=M(Pt,"P",{"data-svelte-h":!0}),J(Q)!=="svelte-1eax8yt"&&(Q.textContent=ut),V=r(Pt),y(pt.$$.fragment,Pt),Pt.forEach(s),c.forEach(s),N=r(e),st=M(e,"P",{"data-svelte-h":!0}),J(st)!=="svelte-12y9ybt"&&(st.textContent=$t),_=r(e),y(q.$$.fragment,e),E=r(e),y(ft.$$.fragment,e),P=r(e),I=M(e,"P",{"data-svelte-h":!0}),J(I)!=="svelte-dv8vfp"&&(I.innerHTML=wt),B=r(e),y(x.$$.fragment,e),D=r(e),rt=M(e,"P",{"data-svelte-h":!0}),J(rt)!=="svelte-okzb58"&&(rt.textContent=z),K=r(e),y(R.$$.fragment,e),mt=r(e),y(A.$$.fragment,e),tt=r(e),Z=M(e,"P",{"data-svelte-h":!0}),J(Z)!=="svelte-kzw67v"&&(Z.innerHTML=Mt),a=r(e),y(o.$$.fragment,e),ht=r(e),Tt=M(e,"P",{"data-svelte-h":!0}),J(Tt)!=="svelte-86nsrn"&&(Tt.innerHTML=Ut),jt=r(e),y(yt.$$.fragment,e),n=r(e),t=M(e,"P",{"data-svelte-h":!0}),J(t)!=="svelte-16p4u8f"&&(t.innerHTML=d),vt=r(e),y(Zt.$$.fragment,e),Nt=r(e),y(kt.$$.fragment,e),xt=r(e),_t=M(e,"P",{"data-svelte-h":!0}),J(_t)!=="svelte-58lz05"&&(_t.textContent=se),zt=r(e),y(Rt.$$.fragment,e),Yt=r(e),Gt=M(e,"P",{"data-svelte-h":!0}),J(Gt)!=="svelte-4yeuhz"&&(Gt.innerHTML=le),St=r(e),y(It.$$.fragment,e),Ht=r(e),y(Bt.$$.fragment,e),Ot=r(e),Wt=M(e,"P",{"data-svelte-h":!0}),J(Wt)!=="svelte-1m5iclq"&&(Wt.innerHTML=ae),At=r(e),y(Xt.$$.fragment,e)},m(e,c){g(m,e,c),l(e,w,c),l(e,i,c),l(e,U,c),l(e,lt,c),l(e,ct,c),g(at,e,c),l(e,W,c),l(e,S,c),l(e,H,c),l(e,X,c),Vt(X,b),Vt(b,ot),Vt(b,gt),g(L,b,null),Vt(X,v),Vt(X,Jt),Vt(Jt,et),Vt(Jt,dt),g(C,Jt,null),Vt(X,Ct),Vt(X,F),Vt(F,Q),Vt(F,V),g(pt,F,null),l(e,N,c),l(e,st,c),l(e,_,c),g(q,e,c),l(e,E,c),g(ft,e,c),l(e,P,c),l(e,I,c),l(e,B,c),g(x,e,c),l(e,D,c),l(e,rt,c),l(e,K,c),g(R,e,c),l(e,mt,c),g(A,e,c),l(e,tt,c),l(e,Z,c),l(e,a,c),g(o,e,c),l(e,ht,c),l(e,Tt,c),l(e,jt,c),g(yt,e,c),l(e,n,c),l(e,t,c),l(e,vt,c),g(Zt,e,c),l(e,Nt,c),g(kt,e,c),l(e,xt,c),l(e,_t,c),l(e,zt,c),g(Rt,e,c),l(e,Yt,c),l(e,Gt,c),l(e,St,c),g(It,e,c),l(e,Ht,c),g(Bt,e,c),l(e,Ot,c),l(e,Wt,c),l(e,At,c),g(Xt,e,c),Lt=!0},p(e,c){const Ft={};c&2&&(Ft.$$scope={dirty:c,ctx:e}),kt.$set(Ft)},i(e){Lt||(u(m.$$.fragment,e),u(at.$$.fragment,e),u(L.$$.fragment,e),u(C.$$.fragment,e),u(pt.$$.fragment,e),u(q.$$.fragment,e),u(ft.$$.fragment,e),u(x.$$.fragment,e),u(R.$$.fragment,e),u(A.$$.fragment,e),u(o.$$.fragment,e),u(yt.$$.fragment,e),u(Zt.$$.fragment,e),u(kt.$$.fragment,e),u(Rt.$$.fragment,e),u(It.$$.fragment,e),u(Bt.$$.fragment,e),u(Xt.$$.fragment,e),Lt=!0)},o(e){$(m.$$.fragment,e),$(at.$$.fragment,e),$(L.$$.fragment,e),$(C.$$.fragment,e),$(pt.$$.fragment,e),$(q.$$.fragment,e),$(ft.$$.fragment,e),$(x.$$.fragment,e),$(R.$$.fragment,e),$(A.$$.fragment,e),$(o.$$.fragment,e),$(yt.$$.fragment,e),$(Zt.$$.fragment,e),$(kt.$$.fragment,e),$(Rt.$$.fragment,e),$(It.$$.fragment,e),$(Bt.$$.fragment,e),$(Xt.$$.fragment,e),Lt=!1},d(e){e&&(s(w),s(i),s(U),s(lt),s(ct),s(W),s(S),s(H),s(X),s(N),s(st),s(_),s(E),s(P),s(I),s(B),s(D),s(rt),s(K),s(mt),s(tt),s(Z),s(a),s(ht),s(Tt),s(jt),s(n),s(t),s(vt),s(Nt),s(xt),s(_t),s(zt),s(Yt),s(Gt),s(St),s(Ht),s(Ot),s(Wt),s(At)),j(m,e),j(at,e),j(L),j(C),j(pt),j(q,e),j(ft,e),j(x,e),j(R,e),j(A,e),j(o,e),j(yt,e),j(Zt,e),j(kt,e),j(Rt,e),j(It,e),j(Bt,e),j(Xt,e)}}}function we(it){let m,w;return m=new ee({props:{$$slots:{default:[Je]},$$scope:{ctx:it}}}),{c(){h(m.$$.fragment)},l(i){y(m.$$.fragment,i)},m(i,T){g(m,i,T),w=!0},p(i,T){const U={};T&2&&(U.$$scope={dirty:T,ctx:i}),m.$set(U)},i(i){w||(u(m.$$.fragment,i),w=!0)},o(i){$(m.$$.fragment,i),w=!1},d(i){j(m,i)}}}function Te(it){let m,w,i,T,U,lt,Y,ct="هناك فوائد كبيرة لاستخدام نموذج مُدرب مسبقًا. فهو يقلل من تكاليف الحوسبة، ويحد من أثرنا البيئي، ويتيح لك استخدام أحدث النماذج دون الحاجة إلى تدريبها من الصفر. توفر مكتبة 🤗 Transformers إمكانية الوصول إلى آلاف النماذج المُدربة مسبقًا لمجموعة واسعة من المهام. عندما تستخدم نموذجًا مُدربًا مسبقًا، فإنك تقوم بتدريبه على مجموعة بيانات خاصة بمهمتك. يُعرف ذلك بالضبط الدقيق، وهي تقنية تدريب قوية للغاية. في هذا البرنامج التعليمي، سوف تقوم بضبط نموذج مُدرب مسبقًا باستخدام إطار عمل للتعلم العميق الذي تختاره:",at,W,S="<li>ضبط نموذج مُدرب مسبقًا باستخدام 🤗 Transformers <code>Trainer</code>.</li> <li>ضبط نموذج مُدرب مسبقًا في TensorFlow باستخدام Keras.</li> <li>ضبط نموذج مُدرب مسبقًا في PyTorch الأصلي.</li>",nt,H,X,b,ot,O,gt="قبل أن تتمكن من ضبط نموذج مُدرب مسبقًا، قم بتنزيل مجموعة بيانات وإعدادها للتدريب. أظهر البرنامج التعليمي السابق كيفية معالجة البيانات للتدريب، والآن لديك الفرصة لاختبار تلك المهارات!",L,v,Jt='ابدأ بتحميل مجموعة بيانات <a href="https://huggingface.co/datasets/yelp_review_full" rel="nofollow">Yelp Reviews</a>:',et,G,dt,C,Ct='كما تعلم الآن، تحتاج إلى محول نص إلى رمز (tokenizer) لمعالجة النص وتضمين استراتيجيات للحشو والقص للتعامل مع أي أطوال متسلسلة متغيرة. لمعالجة مجموعة البيانات الخاصة بك في خطوة واحدة، استخدم طريقة 🤗 Datasets <a href="https://huggingface.co/docs/datasets/process#map" rel="nofollow"><code>map</code></a> لتطبيق دالة معالجة مسبقة على مجموعة البيانات بأكملها:',F,Q,ut,V,pt="إذا كنت ترغب، يمكنك إنشاء مجموعة فرعية أصغر من مجموعة البيانات الكاملة لضبطها لتقليل الوقت الذي تستغرقه:",N,st,$t,_,q,E,ft,P,I=`في هذه المرحلة، يجب عليك اتباع القسم الذي يتوافق مع الإطار الذي تريد استخدامه. يمكنك استخدام الروابط
في شريط التنقل الأيمن للقفز إلى الإطار الذي تريده - وإذا كنت تريد إخفاء كل المحتوى لإطار معين،
فاستخدم الزر في الركن العلوي الأيمن من كتلة الإطار!`,wt,B,x,D,rt,z,K,R,mt,A,tt,Z,Mt="لمزيد من الأمثلة على الضبط الدقيق، راجع:",a,o,ht=`<li><p><a href="https://github.com/huggingface/transformers/tree/main/examples" rel="nofollow">🤗 أمثلة المحولات</a> تتضمن
النصوص البرمجية لتدريب مهام NLP الشائعة في PyTorch وTensorFlow.</p></li> <li><p><a href="notebooks">🤗 دفاتر ملاحظات المحولات</a> يحتوي على دفاتر ملاحظات مختلفة حول كيفية ضبط نموذج لمهمة محددة في PyTorch وTensorFlow.</p></li>`,Tt,Ut,jt,yt,n;return U=new bt({props:{title:"ضبط نموذج مُدرب مسبقًا",local:"ضبط-نموذج-مدرب-مسبقا",headingTag:"h1"}}),b=new bt({props:{title:"إعداد مجموعة بيانات",local:"إعداد-مجموعة-بيانات",headingTag:"h2"}}),G=new k({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJ5ZWxwX3Jldmlld19mdWxsJTIyKSUwQWRhdGFzZXQlNUIlMjJ0cmFpbiUyMiU1RCU1QjEwMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = load_dataset(<span class="hljs-string">&quot;yelp_review_full&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">100</span>]
{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-number">0</span>,
 <span class="hljs-string">&#x27;text&#x27;</span>: <span class="hljs-string">&#x27;My expectations for McDonalds are t rarely high. But for one to still fail so spectacularly...that takes something special!\\\\nThe cashier took my friends\\&#x27;s order, then promptly ignored me. I had to force myself in front of a cashier who opened his register to wait on the person BEHIND me. I waited over five minutes for a gigantic order that included precisely one kid\\&#x27;s meal. After watching two people who ordered after me be handed their food, I asked where mine was. The manager started yelling at the cashiers for \\\\&quot;serving off their orders\\\\&quot; when they didn\\&#x27;t have their food. But neither cashier was anywhere near those controls, and the manager was the one serving food to customers and clearing the boards.\\\\nThe manager was rude when giving me my order. She didn\\&#x27;t make sure that I had everything ON MY RECEIPT, and never even had the decency to apologize that I felt I was getting poor service.\\\\nI\\&#x27;ve eaten at various McDonalds restaurants for over 30 years. I\\&#x27;ve worked at more than one location. I expect bad days, bad moods, and the occasional mistake. But I have yet to have a decent experience at this store. It will remain a place I avoid unless someone in my party needs to avoid illness from low blood sugar. Perhaps I should go back to the racially biased service of Steak n Shake instead!&#x27;</span>}`,wrap:!1}}),Q=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUtYmVydCUyRmJlcnQtYmFzZS1jYXNlZCUyMiklMEElMEElMEFkZWYlMjB0b2tlbml6ZV9mdW5jdGlvbihleGFtcGxlcyklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjB0b2tlbml6ZXIoZXhhbXBsZXMlNUIlMjJ0ZXh0JTIyJTVEJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSklMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUtYmVydCUyRmJlcnQtYmFzZS1jYXNlZCUyMiklMEElMEElMEFkZWYlMjB0b2tlbml6ZV9mdW5jdGlvbihleGFtcGxlcyklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjB0b2tlbml6ZXIoZXhhbXBsZXMlNUIlMjJ0ZXh0JTIyJTVEJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSklMEElMEElMEF0b2tlbml6ZWRfZGF0YXNldHMlMjAlM0QlMjBkYXRhc2V0Lm1hcCh0b2tlbml6ZV9mdW5jdGlvbiUyQyUyMGJhdGNoZWQlM0RUcnVlKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> tokenizer(examples[<span class="hljs-string">&quot;text&quot;</span>], padding=<span class="hljs-string">&quot;max_length&quot;</span>, truncation=<span class="hljs-literal">True</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> tokenizer(examples[<span class="hljs-string">&quot;text&quot;</span>], padding=<span class="hljs-string">&quot;max_length&quot;</span>, truncation=<span class="hljs-literal">True</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = dataset.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)`,wrap:!1}}),st=new k({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`,wrap:!1}}),E=new bt({props:{title:"التدريب",local:"التدريب",headingTag:"h2"}}),B=new ne({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[$e],pytorch:[ye]},$$scope:{ctx:it}}}),z=new ne({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[we]},$$scope:{ctx:it}}}),A=new bt({props:{title:"موارد إضافية",local:"موارد-إضافية",headingTag:"h2"}}),Ut=new fe({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ar/training.md"}}),{c(){m=f("meta"),w=p(),i=f("p"),T=p(),h(U.$$.fragment),lt=p(),Y=f("p"),Y.textContent=ct,at=p(),W=f("ul"),W.innerHTML=S,nt=p(),H=f("a"),X=p(),h(b.$$.fragment),ot=p(),O=f("p"),O.textContent=gt,L=p(),v=f("p"),v.innerHTML=Jt,et=p(),h(G.$$.fragment),dt=p(),C=f("p"),C.innerHTML=Ct,F=p(),h(Q.$$.fragment),ut=p(),V=f("p"),V.textContent=pt,N=p(),h(st.$$.fragment),$t=p(),_=f("a"),q=p(),h(E.$$.fragment),ft=p(),P=f("p"),P.textContent=I,wt=p(),h(B.$$.fragment),x=p(),D=f("a"),rt=oe(`
## تدريب في PyTorch الأصلي
`),h(z.$$.fragment),K=p(),R=f("a"),mt=p(),h(A.$$.fragment),tt=p(),Z=f("p"),Z.textContent=Mt,a=p(),o=f("ul"),o.innerHTML=ht,Tt=p(),h(Ut.$$.fragment),jt=p(),yt=f("p"),this.h()},l(t){const d=ce("svelte-u9bgzb",document.head);m=M(d,"META",{name:!0,content:!0}),d.forEach(s),w=r(t),i=M(t,"P",{}),Et(i).forEach(s),T=r(t),y(U.$$.fragment,t),lt=r(t),Y=M(t,"P",{"data-svelte-h":!0}),J(Y)!=="svelte-x25qt8"&&(Y.textContent=ct),at=r(t),W=M(t,"UL",{"data-svelte-h":!0}),J(W)!=="svelte-1e34g1"&&(W.innerHTML=S),nt=r(t),H=M(t,"A",{id:!0}),Et(H).forEach(s),X=r(t),y(b.$$.fragment,t),ot=r(t),O=M(t,"P",{"data-svelte-h":!0}),J(O)!=="svelte-13m1cte"&&(O.textContent=gt),L=r(t),v=M(t,"P",{"data-svelte-h":!0}),J(v)!=="svelte-1t4f02q"&&(v.innerHTML=Jt),et=r(t),y(G.$$.fragment,t),dt=r(t),C=M(t,"P",{"data-svelte-h":!0}),J(C)!=="svelte-12gk51z"&&(C.innerHTML=Ct),F=r(t),y(Q.$$.fragment,t),ut=r(t),V=M(t,"P",{"data-svelte-h":!0}),J(V)!=="svelte-1ysljfi"&&(V.textContent=pt),N=r(t),y(st.$$.fragment,t),$t=r(t),_=M(t,"A",{id:!0}),Et(_).forEach(s),q=r(t),y(E.$$.fragment,t),ft=r(t),P=M(t,"P",{"data-svelte-h":!0}),J(P)!=="svelte-125s68s"&&(P.textContent=I),wt=r(t),y(B.$$.fragment,t),x=r(t),D=M(t,"A",{id:!0}),Et(D).forEach(s),rt=de(t,`
## تدريب في PyTorch الأصلي
`),y(z.$$.fragment,t),K=r(t),R=M(t,"A",{id:!0}),Et(R).forEach(s),mt=r(t),y(A.$$.fragment,t),tt=r(t),Z=M(t,"P",{"data-svelte-h":!0}),J(Z)!=="svelte-g9m8s9"&&(Z.textContent=Mt),a=r(t),o=M(t,"UL",{"data-svelte-h":!0}),J(o)!=="svelte-1df42rp"&&(o.innerHTML=ht),Tt=r(t),y(Ut.$$.fragment,t),jt=r(t),yt=M(t,"P",{}),Et(yt).forEach(s),this.h()},h(){Qt(m,"name","hf:doc:metadata"),Qt(m,"content",Ue),Qt(H,"id","data-processing"),Qt(_,"id","trainer"),Qt(D,"id","pytorch_native"),Qt(R,"id","additional-resources")},m(t,d){Vt(document.head,m),l(t,w,d),l(t,i,d),l(t,T,d),g(U,t,d),l(t,lt,d),l(t,Y,d),l(t,at,d),l(t,W,d),l(t,nt,d),l(t,H,d),l(t,X,d),g(b,t,d),l(t,ot,d),l(t,O,d),l(t,L,d),l(t,v,d),l(t,et,d),g(G,t,d),l(t,dt,d),l(t,C,d),l(t,F,d),g(Q,t,d),l(t,ut,d),l(t,V,d),l(t,N,d),g(st,t,d),l(t,$t,d),l(t,_,d),l(t,q,d),g(E,t,d),l(t,ft,d),l(t,P,d),l(t,wt,d),g(B,t,d),l(t,x,d),l(t,D,d),l(t,rt,d),g(z,t,d),l(t,K,d),l(t,R,d),l(t,mt,d),g(A,t,d),l(t,tt,d),l(t,Z,d),l(t,a,d),l(t,o,d),l(t,Tt,d),g(Ut,t,d),l(t,jt,d),l(t,yt,d),n=!0},p(t,[d]){const vt={};d&2&&(vt.$$scope={dirty:d,ctx:t}),B.$set(vt);const Zt={};d&2&&(Zt.$$scope={dirty:d,ctx:t}),z.$set(Zt)},i(t){n||(u(U.$$.fragment,t),u(b.$$.fragment,t),u(G.$$.fragment,t),u(Q.$$.fragment,t),u(st.$$.fragment,t),u(E.$$.fragment,t),u(B.$$.fragment,t),u(z.$$.fragment,t),u(A.$$.fragment,t),u(Ut.$$.fragment,t),n=!0)},o(t){$(U.$$.fragment,t),$(b.$$.fragment,t),$(G.$$.fragment,t),$(Q.$$.fragment,t),$(st.$$.fragment,t),$(E.$$.fragment,t),$(B.$$.fragment,t),$(z.$$.fragment,t),$(A.$$.fragment,t),$(Ut.$$.fragment,t),n=!1},d(t){t&&(s(w),s(i),s(T),s(lt),s(Y),s(at),s(W),s(nt),s(H),s(X),s(ot),s(O),s(L),s(v),s(et),s(dt),s(C),s(F),s(ut),s(V),s(N),s($t),s(_),s(q),s(ft),s(P),s(wt),s(x),s(D),s(rt),s(K),s(R),s(mt),s(tt),s(Z),s(a),s(o),s(Tt),s(jt),s(yt)),s(m),j(U,t),j(b,t),j(G,t),j(Q,t),j(st,t),j(E,t),j(B,t),j(z,t),j(A,t),j(Ut,t)}}}const Ue='{"title":"ضبط نموذج مُدرب مسبقًا","local":"ضبط-نموذج-مدرب-مسبقا","sections":[{"title":"إعداد مجموعة بيانات","local":"إعداد-مجموعة-بيانات","sections":[],"depth":2},{"title":"التدريب","local":"التدريب","sections":[],"depth":2},{"title":"التدريب باستخدام PyTorch Trainer","local":"التدريب-باستخدام-pytorch-trainer","sections":[{"title":"اختيار أحسن العوامل والمتغيرات للتدريب (Training hyperparameters)","local":"اختيار-أحسن-العوامل-والمتغيرات-للتدريب-training-hyperparameters","sections":[],"depth":3},{"title":"التقييم","local":"التقييم","sections":[],"depth":3},{"title":"المدرب","local":"المدرب","sections":[],"depth":3}],"depth":2},{"title":"تدريب نموذج TensorFlow باستخدام Keras","local":"تدريب-نموذج-tensorflow-باستخدام-keras","sections":[{"title":"تحميل البيانات لـ Keras","local":"تحميل-البيانات-لـ-keras","sections":[],"depth":3},{"title":"تحميل البيانات كـ tf.data.Dataset","local":"تحميل-البيانات-كـ-tfdatadataset","sections":[],"depth":3},{"title":"DataLoader","local":"dataloader","sections":[],"depth":3},{"title":"المحسن ومخطط معدل التعلم","local":"المحسن-ومخطط-معدل-التعلم","sections":[],"depth":3},{"title":"حلقة التدريب","local":"حلقة-التدريب","sections":[],"depth":3},{"title":"تقييم","local":"تقييم","sections":[],"depth":3}],"depth":2},{"title":"موارد إضافية","local":"موارد-إضافية","sections":[],"depth":2}],"depth":1}';function be(it){return re(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Re extends me{constructor(m){super(),ie(this,m,be,Te,pe,{})}}export{Re as component};
