Buckets:
| import{s as Tt,c as Ba,u as $a,g as Ea,d as Qa,e as Ra,B as mt,o as Xa,n as B}from"../chunks/scheduler.5eb9d175.js";import{S as yt,i as jt,g as T,s as p,h as y,j as _s,f as t,c as r,k as fs,a as n,d as j,t as d,z as Wa,m as dt,n as Ut,y as Jt,C as Va,o as ka,e as ba,p as Fa,b as Ga,r as u,A as va,u as f,x as w,v as h,w as g}from"../chunks/index.fcdcb606.js";import{T as us}from"../chunks/Tip.9272e506.js";import{C as A}from"../chunks/CodeBlock.a7036e06.js";import{H as C,E as Na}from"../chunks/EditOnGithub.98bf070f.js";import{e as _a}from"../chunks/each.e59479a4.js";import{s as bs}from"../chunks/stores.681f9d60.js";function Ya(m,a){const M=new URL(window.location.href),e=new URLSearchParams(M.search);e.set(m,a),M.search=e.toString(),history.replaceState(null,"",M.toString())}function Sa(m){const a=new URL(window.location.href);return new URLSearchParams(a.search).get(m)}function Ia(m,a,M){const e=m.slice();return e[7]=a[M],e}function Za(m){let a,M=m[7]+"",e,i,c,o,I;function b(){return m[6](m[7])}return{c(){a=T("div"),e=dt(M),i=p(),this.h()},l(U){a=y(U,"DIV",{class:!0});var _=_s(a);e=Ut(_,M),i=r(_),_.forEach(t),this.h()},h(){fs(a,"class",c="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(m[2][m[0]]===m[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))},m(U,_){n(U,a,_),Jt(a,e),Jt(a,i),o||(I=Va(a,"click",b),o=!0)},p(U,_){m=U,_&2&&M!==(M=m[7]+"")&&ka(e,M),_&7&&c!==(c="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(m[2][m[0]]===m[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))&&fs(a,"class",c)},d(U){U&&t(a),o=!1,I()}}}function za(m){let a,M,e,i,c=_a(m[1]),o=[];for(let U=0;U<c.length;U+=1)o[U]=Za(Ia(m,c,U));const I=m[5].default,b=Ba(I,m,m[4],null);return{c(){a=T("div");for(let U=0;U<o.length;U+=1)o[U].c();M=p(),e=T("div"),b&&b.c(),this.h()},l(U){a=y(U,"DIV",{class:!0});var _=_s(a);for(let Z=0;Z<o.length;Z+=1)o[Z].l(_);_.forEach(t),M=r(U),e=y(U,"DIV",{class:!0});var J=_s(e);b&&b.l(J),J.forEach(t),this.h()},h(){fs(a,"class","flex space-x-2 items-center my-1.5 mr-8 h-7 !pl-0 -mx-3 md:mx-0"),fs(e,"class","language-select")},m(U,_){n(U,a,_);for(let J=0;J<o.length;J+=1)o[J]&&o[J].m(a,null);n(U,M,_),n(U,e,_),b&&b.m(e,null),i=!0},p(U,[_]){if(_&15){c=_a(U[1]);let J;for(J=0;J<c.length;J+=1){const Z=Ia(U,c,J);o[J]?o[J].p(Z,_):(o[J]=Za(Z),o[J].c(),o[J].m(a,null))}for(;J<o.length;J+=1)o[J].d(1);o.length=c.length}b&&b.p&&(!i||_&16)&&$a(b,I,U,U[4],i?Qa(I,U[4],_,null):Ea(U[4]),null)},i(U){i||(j(b,U),i=!0)},o(U){d(b,U),i=!1},d(U){U&&(t(a),t(M),t(e)),Wa(o,U),b&&b.d(U)}}}function Ha(m,a,M){let e;Ra(m,bs,_=>M(2,e=_));let{$$slots:i={},$$scope:c}=a,{id:o}=a,{options:I}=a;mt(bs,e[o]=I[0],e);function b(_){mt(bs,e[o]=_,e),Ya(o,_)}Xa(()=>{const _=Sa(o);_&&I.includes(_)&&mt(bs,e[o]=_,e)});const U=_=>b(_);return m.$$set=_=>{"id"in _&&M(0,o=_.id),"options"in _&&M(1,I=_.options),"$$scope"in _&&M(4,c=_.$$scope)},[o,I,e,b,c,i,U]}class Aa extends yt{constructor(a){super(),jt(this,a,Ha,za,Tt,{id:0,options:1})}}function Ca(m){let a;const M=m[4].default,e=Ba(M,m,m[3],null);return{c(){e&&e.c()},l(i){e&&e.l(i)},m(i,c){e&&e.m(i,c),a=!0},p(i,c){e&&e.p&&(!a||c&8)&&$a(e,M,i,i[3],a?Qa(M,i[3],c,null):Ea(i[3]),null)},i(i){a||(j(e,i),a=!0)},o(i){d(e,i),a=!1},d(i){e&&e.d(i)}}}function xa(m){let a,M,e=m[2][m[0]]===m[1]&&Ca(m);return{c(){e&&e.c(),a=ba()},l(i){e&&e.l(i),a=ba()},m(i,c){e&&e.m(i,c),n(i,a,c),M=!0},p(i,[c]){i[2][i[0]]===i[1]?e?(e.p(i,c),c&7&&j(e,1)):(e=Ca(i),e.c(),j(e,1),e.m(a.parentNode,a)):e&&(Fa(),d(e,1,1,()=>{e=null}),Ga())},i(i){M||(j(e),M=!0)},o(i){d(e),M=!1},d(i){i&&t(a),e&&e.d(i)}}}function La(m,a,M){let e;Ra(m,bs,b=>M(2,e=b));let{$$slots:i={},$$scope:c}=a,{id:o}=a,{option:I}=a;return m.$$set=b=>{"id"in b&&M(0,o=b.id),"option"in b&&M(1,I=b.option),"$$scope"in b&&M(3,c=b.$$scope)},[o,I,e,c,i]}class ws extends yt{constructor(a){super(),jt(this,a,La,xa,Tt,{id:0,option:1})}}function Da(m){let a,M='بالإضافة إلى فئة <code>Trainer</code>, توفر مكتبة Transformers أيضًا فئة <code>Seq2SeqTrainer</code> للمهام التسلسلية مثل الترجمة أو التلخيص. هناك أيضًا فئة <code>SFTTrainer</code> من مكتبة <a href="https://hf.co/docs/trl" rel="nofollow">TRL</a> التي تغلّف فئة <code>Trainer</code> وهي مُحُسَّنة لتدريب نماذج اللغة مثل Llama-2 وMistral باستخدام تقنيات التوليد اللغوي. كما يدعم <code>SFTTrainer</code> ميزات مثل حزم التسلسلات، وLoRA، والقياس الكمي، وDeepSpeed مما يُمكّن من التدريب بكفاءة على نماذج ضخمة الحجم.',e,i,c,o,I='لا تتردد في الاطلاع على <a href="./main_classes/trainer">مرجع API</a> لهذه الفئات الأخرى من النوع <code>Trainer</code> لمعرفة المزيد حول متى يتم استخدام كل منها. بشكل عام، <code>Trainer</code> هو الخيار الأكثر تنوعًا ومناسبًا لمجموعة واسعة من المهام. تم تصميم <code>Seq2SeqTrainer</code> للمهام التسلسلية ، و <code>SFTTrainer</code> مُصمم لتدريب نماذج اللغة الكبيرة.';return{c(){a=T("p"),a.innerHTML=M,e=p(),i=T("br"),c=p(),o=T("p"),o.innerHTML=I},l(b){a=y(b,"P",{"data-svelte-h":!0}),w(a)!=="svelte-1uhbtx7"&&(a.innerHTML=M),e=r(b),i=y(b,"BR",{}),c=r(b),o=y(b,"P",{"data-svelte-h":!0}),w(o)!=="svelte-19v97v3"&&(o.innerHTML=I)},m(b,U){n(b,a,U),n(b,e,U),n(b,i,U),n(b,c,U),n(b,o,U)},p:B,d(b){b&&(t(a),t(e),t(i),t(c),t(o))}}}function qa(m){let a,M='راجع مرجع <a href="./main_classes/logging">API</a> للتسجيل للحصول على مزيد من المعلومات حول مستويات التسجيل المختلفة للأحداث.';return{c(){a=T("p"),a.innerHTML=M},l(e){a=y(e,"P",{"data-svelte-h":!0}),w(a)!=="svelte-1boamp8"&&(a.innerHTML=M)},m(e,i){n(e,a,i)},p:B,d(e){e&&t(a)}}}function Oa(m){let a,M="يحدد <code>Trainer</code> مُستوى التسجيل بشكل مُنفصل لكل عقدة في طريقة <code>Trainer.__init__()</code>، لذا فقد ترغب في التفكير في تعيين هذا الإعداد في وقت سابق إذا كنت تستخدم وظائف Transformers الأخرى قبل إنشاء كائن <code>Trainer</code>.";return{c(){a=T("p"),a.innerHTML=M},l(e){a=y(e,"P",{"data-svelte-h":!0}),w(a)!=="svelte-143phn2"&&(a.innerHTML=M)},m(e,i){n(e,a,i)},p:B,d(e){e&&t(a)}}}function Pa(m){let a,M;return a=new A({props:{code:"bXlfYXBwLnB5JTIwLi4uJTIwLS1sb2dfbGV2ZWwlMjB3YXJuaW5nJTIwLS1sb2dfbGV2ZWxfcmVwbGljYSUyMGVycm9y",highlighted:"my_app.py ... --log_level warning --log_level_replica error",wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function Ka(m){let a,M="أضف معلمة <code>log_on_each_node 0</code> لبيئات متعددة العقد.",e,i,c;return i=new A({props:{code:"bXlfYXBwLnB5JTIwLi4uJTIwLS1sb2dfbGV2ZWwlMjB3YXJuaW5nJTIwLS1sb2dfbGV2ZWxfcmVwbGljYSUyMGVycm9yJTIwLS1sb2dfb25fZWFjaF9ub2RlJTIwMCUwQSUwQSUyMyUyMHNldCUyMHRvJTIwb25seSUyMHJlcG9ydCUyMGVycm9ycyUwQW15X2FwcC5weSUyMC4uLiUyMC0tbG9nX2xldmVsJTIwZXJyb3IlMjAtLWxvZ19sZXZlbF9yZXBsaWNhJTIwZXJyb3IlMjAtLWxvZ19vbl9lYWNoX25vZGUlMjAw",highlighted:`my_app.py ... --log_level warning --log_level_replica error --log_on_each_node 0 | |
| <span class="hljs-comment"># set to only report errors</span> | |
| my_app.py ... --log_level error --log_level_replica error --log_on_each_node 0`,wrap:!1}}),{c(){a=T("p"),a.innerHTML=M,e=p(),u(i.$$.fragment)},l(o){a=y(o,"P",{"data-svelte-h":!0}),w(a)!=="svelte-vfushn"&&(a.innerHTML=M),e=r(o),f(i.$$.fragment,o)},m(o,I){n(o,a,I),n(o,e,I),h(i,o,I),c=!0},p:B,i(o){c||(j(i.$$.fragment,o),c=!0)},o(o){d(i.$$.fragment,o),c=!1},d(o){o&&(t(a),t(e)),g(i,o)}}}function ln(m){let a,M,e,i;return a=new ws({props:{id:"logging",option:"single node",$$slots:{default:[Pa]},$$scope:{ctx:m}}}),e=new ws({props:{id:"logging",option:"multi-node",$$slots:{default:[Ka]},$$scope:{ctx:m}}}),{c(){u(a.$$.fragment),M=p(),u(e.$$.fragment)},l(c){f(a.$$.fragment,c),M=r(c),f(e.$$.fragment,c)},m(c,o){h(a,c,o),n(c,M,o),h(e,c,o),i=!0},p(c,o){const I={};o&2&&(I.$$scope={dirty:o,ctx:c}),a.$set(I);const b={};o&2&&(b.$$scope={dirty:o,ctx:c}),e.$set(b)},i(c){i||(j(a.$$.fragment,c),j(e.$$.fragment,c),i=!0)},o(c){d(a.$$.fragment,c),d(e.$$.fragment,c),i=!1},d(c){c&&t(M),g(a,c),g(e,c)}}}function sn(m){let a,M="وفقًا للمؤلفين، يوصى باستخدام <code>AdaLomo</code> بدون <code>grad_norm</code> للحصول على أداء أفضل وسرعة أعلى.";return{c(){a=T("p"),a.innerHTML=M},l(e){a=y(e,"P",{"data-svelte-h":!0}),w(a)!=="svelte-113zb96"&&(a.innerHTML=M)},m(e,i){n(e,a,i)},p:B,d(e){e&&t(a)}}}function en(m){let a;return{c(){a=dt("يُعد GrokAdamW مفيدًا بشكل خاص للنماذج التي تتطلب تقنيات تحسين مُتقدمة لتحقيق أداء واستقرار أفضل.")},l(M){a=Ut(M,"يُعد GrokAdamW مفيدًا بشكل خاص للنماذج التي تتطلب تقنيات تحسين مُتقدمة لتحقيق أداء واستقرار أفضل.")},m(M,e){n(M,a,e)},d(M){M&&t(a)}}}function tn(m){let a,M='تعرف على المزيد حول استراتيجيات تجزئة FSDP، وتفريغ وحدة المعالجة المركزية (CPU)، والمزيد مع <code>Trainer</code> في <a href="fsdp">دليل Fully Sharded Data Parallel</a>.';return{c(){a=T("p"),a.innerHTML=M},l(e){a=y(e,"P",{"data-svelte-h":!0}),w(a)!=="svelte-1u0qwv9"&&(a.innerHTML=M)},m(e,i){n(e,a,i)},p:B,d(e){e&&t(a)}}}function an(m){let a,M;return a=new A({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwTVVMVElfR1BVJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTBBZG93bmNhc3RfYmYxNiUzQSUyMCdubyclMEFncHVfaWRzJTNBJTIwYWxsJTBBbWFjaGluZV9yYW5rJTNBJTIwMCUyMCUyM2NoYW5nZSUyMHJhbmslMjBhcyUyMHBlciUyMHRoZSUyMG5vZGUlMEFtYWluX3Byb2Nlc3NfaXAlM0ElMjAxOTIuMTY4LjIwLjElMEFtYWluX3Byb2Nlc3NfcG9ydCUzQSUyMDk4OTglMEFtYWluX3RyYWluaW5nX2Z1bmN0aW9uJTNBJTIwbWFpbiUwQW1peGVkX3ByZWNpc2lvbiUzQSUyMGZwMTYlMEFudW1fbWFjaGluZXMlM0ElMjAyJTBBbnVtX3Byb2Nlc3NlcyUzQSUyMDglMEFyZHp2X2JhY2tlbmQlM0ElMjBzdGF0aWMlMEFzYW1lX25ldHdvcmslM0ElMjB0cnVlJTBBdHB1X2VudiUzQSUyMCU1QiU1RCUwQXRwdV91c2VfY2x1c3RlciUzQSUyMGZhbHNlJTBBdHB1X3VzZV9zdWRvJTNBJTIwZmFsc2UlMEF1c2VfY3B1JTNBJTIwZmFsc2U=",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">MULTI_GPU</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">gpu_ids:</span> <span class="hljs-string">all</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> <span class="hljs-comment">#change rank as per the node</span> | |
| <span class="hljs-attr">main_process_ip:</span> <span class="hljs-number">192.168</span><span class="hljs-number">.20</span><span class="hljs-number">.1</span> | |
| <span class="hljs-attr">main_process_port:</span> <span class="hljs-number">9898</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">fp16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">8</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function nn(m){let a,M;return a=new A({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwRlNEUCUwQWRvd25jYXN0X2JmMTYlM0ElMjAnbm8nJTBBZnNkcF9jb25maWclM0ElMEElMjAlMjBmc2RwX2F1dG9fd3JhcF9wb2xpY3klM0ElMjBUUkFOU0ZPUk1FUl9CQVNFRF9XUkFQJTBBJTIwJTIwZnNkcF9iYWNrd2FyZF9wcmVmZXRjaF9wb2xpY3klM0ElMjBCQUNLV0FSRF9QUkUlMEElMjAlMjBmc2RwX2ZvcndhcmRfcHJlZmV0Y2glM0ElMjB0cnVlJTBBJTIwJTIwZnNkcF9vZmZsb2FkX3BhcmFtcyUzQSUyMGZhbHNlJTBBJTIwJTIwZnNkcF9zaGFyZGluZ19zdHJhdGVneSUzQSUyMDElMEElMjAlMjBmc2RwX3N0YXRlX2RpY3RfdHlwZSUzQSUyMEZVTExfU1RBVEVfRElDVCUwQSUyMCUyMGZzZHBfc3luY19tb2R1bGVfc3RhdGVzJTNBJTIwdHJ1ZSUwQSUyMCUyMGZzZHBfdHJhbnNmb3JtZXJfbGF5ZXJfY2xzX3RvX3dyYXAlM0ElMjBCZXJ0TGF5ZXIlMEElMjAlMjBmc2RwX3VzZV9vcmlnX3BhcmFtcyUzQSUyMHRydWUlMEFtYWNoaW5lX3JhbmslM0ElMjAwJTBBbWFpbl90cmFpbmluZ19mdW5jdGlvbiUzQSUyMG1haW4lMEFtaXhlZF9wcmVjaXNpb24lM0ElMjBiZjE2JTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjAyJTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNl",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">FSDP</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">fsdp_config:</span> | |
| <span class="hljs-attr">fsdp_auto_wrap_policy:</span> <span class="hljs-string">TRANSFORMER_BASED_WRAP</span> | |
| <span class="hljs-attr">fsdp_backward_prefetch_policy:</span> <span class="hljs-string">BACKWARD_PRE</span> | |
| <span class="hljs-attr">fsdp_forward_prefetch:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">fsdp_offload_params:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">fsdp_sharding_strategy:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">fsdp_state_dict_type:</span> <span class="hljs-string">FULL_STATE_DICT</span> | |
| <span class="hljs-attr">fsdp_sync_module_states:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">fsdp_transformer_layer_cls_to_wrap:</span> <span class="hljs-string">BertLayer</span> | |
| <span class="hljs-attr">fsdp_use_orig_params:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">bf16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function pn(m){let a,M;return a=new A({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEFkZWVwc3BlZWRfY29uZmlnJTNBJTBBJTIwJTIwZGVlcHNwZWVkX2NvbmZpZ19maWxlJTNBJTIwJTJGaG9tZSUyRnVzZXIlMkZjb25maWdzJTJGZHNfemVybzNfY29uZmlnLmpzb24lMEElMjAlMjB6ZXJvM19pbml0X2ZsYWclM0ElMjB0cnVlJTBBZGlzdHJpYnV0ZWRfdHlwZSUzQSUyMERFRVBTUEVFRCUwQWRvd25jYXN0X2JmMTYlM0ElMjAnbm8nJTBBbWFjaGluZV9yYW5rJTNBJTIwMCUwQW1haW5fdHJhaW5pbmdfZnVuY3Rpb24lM0ElMjBtYWluJTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjA0JTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNl",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">deepspeed_config:</span> | |
| <span class="hljs-attr">deepspeed_config_file:</span> <span class="hljs-string">/home/user/configs/ds_zero3_config.json</span> | |
| <span class="hljs-attr">zero3_init_flag:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">DEEPSPEED</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function rn(m){let a,M;return a=new A({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMEFkZWVwc3BlZWRfY29uZmlnJTNBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTBBJTIwJTIwZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNBJTIwMSUwQSUyMCUyMGdyYWRpZW50X2NsaXBwaW5nJTNBJTIwMC43JTBBJTIwJTIwb2ZmbG9hZF9vcHRpbWl6ZXJfZGV2aWNlJTNBJTIwY3B1JTBBJTIwJTIwb2ZmbG9hZF9wYXJhbV9kZXZpY2UlM0ElMjBjcHUlMEElMjAlMjB6ZXJvM19pbml0X2ZsYWclM0ElMjB0cnVlJTBBJTIwJTIwemVyb19zdGFnZSUzQSUyMDIlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwREVFUFNQRUVEJTBBZG93bmNhc3RfYmYxNiUzQSUyMCdubyclMEFtYWNoaW5lX3JhbmslM0ElMjAwJTBBbWFpbl90cmFpbmluZ19mdW5jdGlvbiUzQSUyMG1haW4lMEFtaXhlZF9wcmVjaXNpb24lM0ElMjBiZjE2JTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjA0JTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNl",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">deepspeed_config:</span> | |
| <span class="hljs-attr">gradient_accumulation_steps:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">gradient_clipping:</span> <span class="hljs-number">0.7</span> | |
| <span class="hljs-attr">offload_optimizer_device:</span> <span class="hljs-string">cpu</span> | |
| <span class="hljs-attr">offload_param_device:</span> <span class="hljs-string">cpu</span> | |
| <span class="hljs-attr">zero3_init_flag:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">zero_stage:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">DEEPSPEED</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">bf16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function Mn(m){let a,M;return a=new A({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEF0cF9jb25maWclM0ElMEElMjAlMjB0cF9zaXplJTNBJTIwNCUwQWRpc3RyaWJ1dGVkX3R5cGUlM0ElMjBUUCUwQWRvd25jYXN0X2JmMTYlM0ElMjAnbm8nJTBBbWFjaGluZV9yYW5rJTNBJTIwMCUwQW1haW5fdHJhaW5pbmdfZnVuY3Rpb24lM0ElMjBtYWluJTBBbWl4ZWRfcHJlY2lzaW9uJTNBJTIwJ25vJyUwQW51bV9tYWNoaW5lcyUzQSUyMDElMEFudW1fcHJvY2Vzc2VzJTNBJTIwNCUwQXJkenZfYmFja2VuZCUzQSUyMHN0YXRpYyUwQXNhbWVfbmV0d29yayUzQSUyMHRydWUlMEF0cHVfZW52JTNBJTIwJTVCJTVEJTBBdHB1X3VzZV9jbHVzdGVyJTNBJTIwZmFsc2UlMEF0cHVfdXNlX3N1ZG8lM0ElMjBmYWxzZSUwQXVzZV9jcHUlM0ElMjBmYWxzZSUwQQ==",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">tp_config:</span> | |
| <span class="hljs-attr">tp_size:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">TP</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span> | |
| `,wrap:!1}}),{c(){u(a.$$.fragment)},l(e){f(a.$$.fragment,e)},m(e,i){h(a,e,i),M=!0},p:B,i(e){M||(j(a.$$.fragment,e),M=!0)},o(e){d(a.$$.fragment,e),M=!1},d(e){g(a,e)}}}function cn(m){let a,M,e,i,c,o,I,b,U,_;return a=new ws({props:{id:"config",option:"DistributedDataParallel",$$slots:{default:[an]},$$scope:{ctx:m}}}),e=new ws({props:{id:"config",option:"FSDP",$$slots:{default:[nn]},$$scope:{ctx:m}}}),c=new ws({props:{id:"config",option:"DeepSpeed",$$slots:{default:[pn]},$$scope:{ctx:m}}}),I=new ws({props:{id:"config",option:"DeepSpeed with Accelerate plugin",$$slots:{default:[rn]},$$scope:{ctx:m}}}),U=new ws({props:{id:"config",option:"Tensor Parallelism with PyTorch 2",$$slots:{default:[Mn]},$$scope:{ctx:m}}}),{c(){u(a.$$.fragment),M=p(),u(e.$$.fragment),i=p(),u(c.$$.fragment),o=p(),u(I.$$.fragment),b=p(),u(U.$$.fragment)},l(J){f(a.$$.fragment,J),M=r(J),f(e.$$.fragment,J),i=r(J),f(c.$$.fragment,J),o=r(J),f(I.$$.fragment,J),b=r(J),f(U.$$.fragment,J)},m(J,Z){h(a,J,Z),n(J,M,Z),h(e,J,Z),n(J,i,Z),h(c,J,Z),n(J,o,Z),h(I,J,Z),n(J,b,Z),h(U,J,Z),_=!0},p(J,Z){const hs={};Z&2&&(hs.$$scope={dirty:Z,ctx:J}),a.$set(hs);const G={};Z&2&&(G.$$scope={dirty:Z,ctx:J}),e.$set(G);const $={};Z&2&&($.$$scope={dirty:Z,ctx:J}),c.$set($);const v={};Z&2&&(v.$$scope={dirty:Z,ctx:J}),I.$set(v);const E={};Z&2&&(E.$$scope={dirty:Z,ctx:J}),U.$set(E)},i(J){_||(j(a.$$.fragment,J),j(e.$$.fragment,J),j(c.$$.fragment,J),j(I.$$.fragment,J),j(U.$$.fragment,J),_=!0)},o(J){d(a.$$.fragment,J),d(e.$$.fragment,J),d(c.$$.fragment,J),d(I.$$.fragment,J),d(U.$$.fragment,J),_=!1},d(J){J&&(t(M),t(i),t(o),t(b)),g(a,J),g(e,J),g(c,J),g(I,J),g(U,J)}}}function on(m){let a,M,e,i,c,o,I,b="تُتيح وحدة <code>Trainer</code> حلقة تدريب وتقييم متكاملة لنماذج PyTorch المطبقة في مكتبة Transformers. تحتاج فقط إلى تمرير المكونات الضرورية للتدريب (النموذج، والمجزىء النصى، ومجموعة البيانات، دالة التقييم، معلمات التدريب الفائقة، إلخ)، وستتولى فئة <code>Trainer</code> الباقي. هذا يُسهّل بدء التدريب بشكل أسرع دون كتابة حلقة التدريب الخاصة بك يدويًا. ولكن في الوقت نفسه، فإن <code>Trainer</code> قابل للتخصيص بدرجة كبيرة ويوفر العديد من خيارات التدريب حتى تتمكن من تخصيصه وفقًا لاحتياجات التدريب الخاصة بك بدقة.",U,_,J,Z,hs='قبل البدء، تأكد من تثبيت مكتبة <a href="https://hf.co/docs/accelerate" rel="nofollow">Accelerate</a> - وهي مكتبة تُمكّن تشغيل تدريب PyTorch في بيئات مُوزعة.',G,$,v,E,wt="يوفر هذا الدليل نظرة عامة على فئة <code>Trainer</code>.",Is,N,Zs,Y,ut="يتضمن <code>Trainer</code> جميع التعليمات البرمجية التي ستجدها في حلقة التدريب الأساسية:",As,S,ft="<li>قم بتنفيذ خطوة تدريب لحساب الخسارة</li> <li>احسب المشتقات باستخدام طريقة <code>backward</code></li> <li>تحديث الأوزان بناءً على المشتقات</li> <li>كرر هذه العملية حتى تصل إلى عدد محدد مسبقًا من الدورات (epochs).</li>",Cs,z,ht="تُجرد فئة <code>Trainer</code> كل هذه التعليمات البرمجية حتى لا تضطر إلى القلق بشأن كتابة حلقة تدريب يدويًا في كل مرة أما إذا كنت بدأت للتو في PyTorch والتدريب. كل ما عليك فعله هو توفير المكونات الأساسية اللازمة للتدريب، مثل النموذج ومجموعة بيانات، وتتعامل فئة <code>Trainer</code> مع كل شيء آخر.",Bs,H,gt="إذا كنت تُريد تحديد أي خيارات تدريب أو معلمات فائقة، فيمكنك العثور عليها في فئة <code>TrainingArguments</code>. على سبيل المثال، دعنا نحدد أين يتم حفظ النموذج في <code>output_dir</code> ورفع النموذج إلى Hub بعد التدريب باستخدام <code>push_to_hub=True</code>.",$s,x,Es,L,bt="مرر <code>training_args</code> إلى <code>Trainer</code> جنبًا إلى جنب مع النموذج، ومجموعة بيانات، وشئ لمعالجة مجموعة البيانات مسبقًا (حسب نوع البيانات، فقد يكون محللًا رمزيًا أو مستخرج ميزات أو معالج صور)، وجامع بيانات، ودالة لحساب المقاييس التي تُريد تتبعها أثناء التدريب.",Qs,D,_t="أخيرًا، استدعِ <code>train()</code> لبدء التدريب!",Rs,q,Xs,O,Ws,P,It="تحفظ فئة <code>Trainer</code> نقاط الحفظ النموذج في الدليل المحدد في معامل <code>output_dir</code> من <code>TrainingArguments</code>. ستجد نقاط الحفظ في مجلد فرعي يسمى <code>checkpoint-000</code> حيث تتوافق الأرقام في النهاية مع خطوة التدريب. إن حفظ نقاط الحفظ مفيد لاستئناف التدريب لاحقًا.",Vs,K,ks,ll,Zt='يمكنك حفظ نقاط الحفظ الخاصة بك (لا يتم حفظ حالة المُجزىء اللغوى تقائيًا) إلى Hub عن طريق تعيين <code>push_to_hub=True</code> في <code>TrainingArguments</code> لرفعها. الخيارات الأخرى لاتخاذ القرار بشأن كيفية حفظ هذة النقاط الخاصة بك هي الإعداد في معامل <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.hub_strategy" rel="nofollow"><code>hub_strategy</code></a>:',Fs,sl,At="<li><code>hub_strategy="checkpoint"</code> يدفع أحدث نقطة حفظ إلى مجلد فرعي يسمى “last-checkpoint” يمكنك استئناف التدريب منه</li> <li><code>hub_strategy="all_checkpoints"</code> يدفع جميع نقاط الحفظ إلى الدليل المحدد في <code>output_dir</code> (سترى نقطة حفظ واحدة لكل مجلد في مستودع النموذج الخاص بك)</li>",Gs,el,Ct='عند استئناف التدريب من نقطة حفظ، تُحاول <code>Trainer</code> الحفاظ على حالات RNG Python وNumPy وPyTorch كما كانت عندما تم حفظ نقطة الحفظ. ولكن لأن PyTorch لديها العديد من الإعدادات الافتراضية غير الحتمية مُتنوعة، فإن حالات RNG ليست مضمونة لتكون هي نفسها. إذا كنت تريد تمكين الحتمية الكاملة، فراجع دليل <a href="https://pytorch.org/docs/stable/notes/randomness#controlling-sources-of-randomness" rel="nofollow">التحكم في مصادر العشوائية</a> لمعرفة ما يُمكنك تمكينه لجعل تدريبك حتميًا تمامًا. ضع في اعتبارك أنه من خلال جعل إعدادات معينة حتمية، فقد يكون التدريب أبطأ.',vs,tl,Ns,al,Bt="في حين أن فئة <code>Trainer</code> مُصممة لتكون سهلة الوصول وسهلة الاستخدام، فإنها توفر أيضًا الكثير من قابلية التخصيص للمستخدمين المغامرين. يُمكن إنشاء فئات فرعية من العديد من أساليب <code>Trainer</code> وتجاوزها لدعم الوظائف التي تُريدها، دون الحاجة إلى إعادة كتابة حلقة التدريب بأكملها من البداية لاستيعابها. تتضمن هذه الأساليب:",Ys,nl,$t="<li><code>get_train_dataloader()</code> ينشئ DataLoader للتدريب</li> <li><code>get_eval_dataloader()</code> ينشئ DataLoader للتقييم</li> <li><code>get_test_dataloader()</code> ينشئ DataLoader للاختبار</li> <li><code>log()</code> يسجل معلومات حول مختلف الكائنات التي تراقب التدريب</li> <li><code>create_optimizer_and_scheduler()</code> ينشئ محسنًا ومخططًا لمُعدل التعلم إذا لم يتم تمريرهما في <code>__init__</code>؛ يمكن أيضًا تخصيص هذه الوظائف بشكل منفصل باستخدام <code>create_optimizer()</code> و <code>create_scheduler()</code> على التوالي</li> <li><code>compute_loss()</code> يحسب دالة الخسارة على دفعة من مُدخلات التدريب</li> <li><code>training_step()</code> يُنفذ خطوة التدريب</li> <li><code>prediction_step()</code> يُنفذ خطوة التنبؤ والاختبار</li> <li><code>evaluate()</code> يُقيّم النموذج ويعيد مقاييس التقييم</li> <li><code>predict()</code> يُجري التنبؤات (مع المقاييس إذا كانت العلامات متاحة) على مجموعة الاختبار</li>",Ss,pl,Et="على سبيل المثال، إذا كنت تريد تخصيص طريقة <code>compute_loss()</code> لاستخدام دالة خسارة ذات ترجيح بدلاً من ذلك.",zs,rl,Hs,Ml,xs,il,Qt='خيار آخر لتخصيص <code>Trainer</code> هو استخدام <a href="callbacks">دوال الاستدعاء</a>. لا <em>تغير</em> دوال الاستدعاء أي شيء في حلقة التدريب. إنهم تفحص حالة حلقة التدريب ثم تُنفذ بعض الإجراءات (مثل الإيقاف المبكر أو تسجيل النتائج، إلخ) اعتمادًا على الحالة. وبعبارة أخرى، لا يمكن استخدام دالة الاستدعاء لتنفيذ شيء مثل دالة خسارة مخصصة، ويجب عليك تجاوز دالة <code>compute_loss()</code> لذلك.',Ls,cl,Rt="على سبيل المثال، إذا كنت تريد إضافة دالة استدعاء إيقاف مبكر إلى حلقة التدريب بعد 10 خطوات.",Ds,ol,qs,ml,Xt="ثم مرره إلى معامل <code>callback</code> في <code>Trainer</code>.",Os,Jl,Ps,Tl,Ks,Q,le,yl,Wt='يتم تعيين <code>Trainer</code> إلى <code>logging.INFO</code> افتراضيًا والذي يُبلغ عن الأخطاء والتحذيرات ومعلومات أساسية أخرى. يتم تعيين نسخة <code>Trainer</code> - في البيئات الموزعة - إلى <code>logging.WARNING</code> والتي يُبلغ فقط عن الأخطاء والتحذيرات. يمكنك تغيير مستوى تسجيل الأحداث باستخدام معاملي <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.log_level" rel="nofollow"><code>log_level</code></a> و <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.log_level_replica" rel="nofollow"><code>log_level_replica</code></a> في <code>TrainingArguments</code>.',se,jl,Vt='لتهيئة إعداد مُستوى تسجيل اﻷحداث لكل عقدة، استخدم معامل <a href="https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments.log_on_each_node" rel="nofollow"><code>log_on_each_node</code></a> لتحديد ما إذا كان سيتم استخدام مُستوى السجل على كل عقدة أو فقط على العقدة الرئيسية.',ee,R,te,dl,kt="على سبيل المثال، لتعيين التعليمات البرمجية والوحدات النمطية الرئيسية الخاصة بك لاستخدام نفس مُستوى التسجيل وفقًا لكل عقدة:",ae,Ul,ne,wl,Ft="استخدم تركيبات مختلفة من <code>log_level</code> و <code>log_level_replica</code> لتهيئة ما يتم تسجيله على كل من العقد.",pe,X,re,ul,Me,fl,Gt='<a href="https://hf.co/papers/2310.05914" rel="nofollow">NEFTune</a> هي تقنية يمكن أن تحسن الأداء عن طريق إضافة ضوضاء إلى مُتجهات التعلم أثناء التدريب. لتمكينه في <code>Trainer</code>, قم بتعيين معامل <code>neftune_noise_alpha</code> في <code>TrainingArguments</code> للتحكم في مقدار الضوضاء المُضافة.',ie,hl,ce,gl,vt="يتم تعطيل NEFTune بعد التدريب لاستعادة طبقة التعلم الأصلية لتجنب أي سلوك غير متوقع.",oe,bl,me,_l,Nt='<a href="https://github.com/linkedin/Liger-Kernel" rel="nofollow">Liger-Kernel</a> Kernel هي مجموعة من نوى Triton التي طورتها Linkedin مُصممة خصيصًا لتدريب نماذج اللغة الكبيرة (LLM). لقد قمنا بتنفيذ RMSNorm و RoPE و SwiGLU و CrossEntropy و FusedLinearCrossEntropy مُتوافقة مع Hugging Face، والمزيد قادم. يُمكنها زيادة إنتاجية التدريب متعدد وحدات معالجة الرسومات (GPU) بنسبة 20٪ وتقليل استخدام الذاكرة بنسبة 60٪. تعمل النواة بشكل تلقائي مع flash attention و PyTorch FSDP و Microsoft DeepSpeed.',Je,Il,Yt=`احصل على زيادة في الإنتاجية بنسبة 20٪ وتقليل استخدام الذاكرة بنسبة 60٪ على تدريب نماذج LLaMA 3-8B. حقق أطوال سياق أكبر وأحجام دفعات أكبر. كما أنها مُفيدة إذا كنت تُريد زيادة حجم نموذجك إلى تدريب بنماذج متعددة الرؤوس أو أحجام مُفردات ضخمة. أطلق العنان للتدريب بنماذج متعددة الرؤوس (medusa) والمزيد. راجع التفاصيل والأمثلة في <a href="https://github.com/linkedin/Liger-Kernel/tree/main/examples" rel="nofollow">Liger</a> | |
| تأكد أولاً من تثبيت مستودع Liger الرسمي:`,Te,Zl,ye,Al,St="يجب عليك تمرير <code>use_liger_kernel=True</code> لتطبيق نواة <code>liger</code> على نموذجك، على سبيل المثال:",je,Cl,de,Bl,zt='تدعم النواة معماريات نماذج Llama و Gemma و Mistral و Mixtral. يُمكن العثور على أحدث قائمة بالنمائج المدعومة <a href="https://github.com/linkedin/Liger-Kernel" rel="nofollow">هنا</a>. عندما يتم تعيين <code>use_liger_kernel</code> إلى <code>True</code>، سيتم تصحيح الطبقات المُقابلة في النموذج الأصلي باستخدام تطبيق Liger الفعال، لذلك لا تحتاج إلى فعل أي شيء إضافي بخلاف تعيين قيمة المعامل.',Ue,$l,we,El,Ht="يمكنك اختيار مُحسِّن مدمج للتدريب باستخدام:",ue,Ql,fe,Rl,xt='اطلع على <a href="https://github.com/huggingface/transformers/blob/main/src/transformers/training_args.py" rel="nofollow"><code>OptimizerNames</code></a> للاطلاع على القائمة الكاملة للخيارات. نُدرج أمثلة مُتقدمة في الأقسام أدناه.',he,Xl,Lt="يمكنك أيضًا استخدام مُحسِّن PyTorch عشوائي عبر:",ge,Wl,be,Vl,_e,kl,Dt="إسقاط التدرج ذو الرتبة المنخفضة (GaLore) هو إستراتيجية تدريب ذات رتبة منخفضة فعّالة من حيث الذاكرة، تسمح بتعلم المعلمات الكاملة ولكنها أكثر كفاءة من حيث الذاكرة من أساليب التكيّف الشائعة ذات الرتبة المنخفضة، مثل LoRA.",Ie,Fl,qt="أولاً، تأكد من تثبيت المستودع الرسمي لـ GaLore:",Ze,Gl,Ae,vl,Ot="ثم أضف ببساطة أحد <code>["galore_adamw"، "galore_adafactor"، "galore_adamw_8bit"]</code> في <code>optim</code> جنبًا إلى جنب مع <code>optim_target_modules</code>، والتي يمكن أن تكون قائمة من السلاسل أو التعبيرات النمطية regex أو المسار الكامل المطابق لأسماء الوحدات المستهدفة التي تريد تكييفها. فيما يلي مثال على النص البرمجي كامل(تأكد من <code>pip install trl datasets</code>):",Ce,Nl,Be,Yl,Pt="لتمرير معامﻻت إضافية يدعمها GaLore، يجب عليك تمرير <code>optim_args</code> بشكل صحيح، على سبيل المثال:",$e,Sl,Ee,zl,Kt='يمكنك قراءة المزيد حول الطريقة في <a href="https://github.com/jiaweizzhao/GaLore" rel="nofollow">المستودع الأصلي</a> أو <a href="https://arxiv.org/abs/2403.03507" rel="nofollow">الورقة البحثية</a>.',Qe,Hl,la="حاليًا، يمكنك فقط تدريب الطبقات الخطية التي تعتبر طبقات GaLore وستستخدم التحلل ذو الرتبة المنخفضة للتدريب بينما سيتم تحسين الطبقات المتبقية بالطريقة التقليدية.",Re,xl,sa="لاحظ أنه سيستغرق الأمر بعض الوقت قبل بدء التدريب (~3 دقائق لنموذج 2B على NVIDIA A100)، ولكن يجب أن يسير التدريب بسلاسة بعد ذلك.",Xe,Ll,ea="يمكنك أيضًا إجراء تحسين طبقة تلو الأخرى عن طريق إضافة <code>layerwise</code> إلى اسم المُحسِّن كما هو موضح أدناه:",We,Dl,Ve,ql,ta='لاحظ أن تحسين الطبقة تجريبي إلى حد ما ولا يدعم DDP (Distributed Data Parallel)، وبالتالي يمكنك تشغيل التعليمات البرمجية للتدريب على وحدة معالجة الرسومات (GPU) واحدة فقط. يرجى الاطلاع على <a href="https://github.com/jiaweizzhao/GaLore?tab=readme-ov-file#train-7b-model-with-a-single-gpu-with-24gb-memory" rel="nofollow">هذا القسم المناسب</a> لمزيد من التفاصيل. قد لا تدعم الميزات الأخرى مثل تقليم التدرجات أو DeepSpeed، إلخ. من الصندوق. يرجى <a href="https://github.com/huggingface/transformers/issues" rel="nofollow">تقديم تقرير عن المشكلة على GitHub</a> إذا واجهتك مثل هذه المشكلة.',ke,Ol,Fe,Pl,aa=`تم تقديم مُحسِّنات LOMO في <a href="https://hf.co/papers/2306.09782" rel="nofollow">التدريب على المعلمات الكاملة لنماذج اللغة الكبيرة باستخدام موارد محدودة</a> و <a href="https://hf.co/papers/2310.10195" rel="nofollow">AdaLomo: تحسين ذاكرة منخفضة بمعدل تعلم متكيف</a>. | |
| يتكون كلاهما من طريقة فعالة لضبط المعلمات الكاملة. تدمج محسنات LOMO حساب الاشتقاق وتحديث المعلمات في خطوة واحدة لتقليل استخدام الذاكرة. محسنات LOMO المدعومة هي <code>"lomo"</code> و <code>"adalomo"</code>. أولاً قم بتثبيت LOMO من pypi <code>pip install lomo-optim</code> أو قم بتثبيته من المصدر باستخدام <code>pip install git+https://github.com/OpenLMLab/LOMO.git</code>.`,Ge,W,ve,Kl,na='فيما يلي نص برمجي بسيط يوضح كيفية ضبط نموذج <a href="https://huggingface.co/google/gemma-2b" rel="nofollow">google/gemma-2b</a> على مجموعة بيانات IMDB في الدقة الكاملة:',Ne,ls,Ye,ss,Se,es,pa="تم تصميم مُحسِّن GrokAdamW لتعزيز أداء التدريب واستقراره، خاصةً للنماذج التي تستفيد من دوال إشارة <code>grokking</code>. لاستخدام <code>GrokAdamW</code>، قم أولاً بتثبيت حزمة المُحسِّن باستخدام <code>pip install grokadamw</code>.",ze,V,He,ts,ra='فيما يلي نص برمجى بسيط لشرح كيفية ضبط <a href="https://huggingface.co/google/gemma-2b" rel="nofollow">google/gemma-2b</a> بدقة على مجموعة بيانات IMDB باستخدام مُحسِّن GrokAdamW:',xe,as,Le,ns,Ma="يوضح هذا النص البرمجى كيفية ضبط نموذج google/gemma-2b بدقة على مجموعة بيانات IMDB باستخدام مُحسِّن GrokAdamW. يتم تكوين TrainingArguments لاستخدام GrokAdamW، ويتم تمرير مجموعة البيانات إلى Trainer للتدريب.",De,ps,qe,rs,ia=`تم تقديم مُحسِّنات بدون جدوله في <a href="https://hf.co/papers/2405.15682" rel="nofollow">The Road Less Scheduled</a>. | |
| يستبدل التعلم بدون جدوله زخم المُحسِّن الأساسي بمزيج من المتوسط والتداخل، لإزالة الحاجة تمامًا إلى تخفيف مُعدل التعلم باستخدام جدوله تقليديه. | |
| المُحسِّنات المدعومة لـ SFO هي “schedule_free_adamw” و “schedule_free_sgd”. قم أولاً بتثبيت <code>schedulefree</code> من pypi باستخدام الأمر <code>pip install schedulefree</code>.`,Oe,Ms,ca='فيما يلي نص برمجى بسيط لشرح كيفية ضبط <a href="https://huggingface.co/google/gemma-2b" rel="nofollow">google/gemma-2b</a> بدقة على مجموعة بيانات IMDB بدقة كاملة:',Pe,is,Ke,cs,lt,os,oa='يتم تشغيل فئة <code>Trainer</code> بواسطة <a href="https://hf.co/docs/accelerate" rel="nofollow">تسريع</a>، وهي مكتبة لتدريب نماذج PyTorch بسهولة في بيئات موزعة مع دعم عمليات التكامل مثل <a href="https://pytorch.org/blog/introducing-pytorch-fully-sharded-data-parallel-api/" rel="nofollow">FullyShardedDataParallel (FSDP)</a> و <a href="https://www.deepspeed.ai/" rel="nofollow">DeepSpeed</a>.',st,k,et,ms,ma='لاستخدام Accelerate مع <code>Trainer</code>]، قم بتشغيل الأمر <a href="https://huggingface.co/docs/accelerate/package_reference/cli#accelerate-config" rel="nofollow"><code>accelerate.config</code></a> لإعداد التدريب لبيئة التدريب الخاصة بك. نشئ هذا الأمر ملف <code>config_file.yaml</code> الذي سيتم استخدامه عند تشغيل نص للتدريب البرمجى. على سبيل المثال، بعض تكوينات المثال التي يمكنك إعدادها هي:',tt,F,at,Js,Ja='على سبيل المثال، لتشغيل النص البرنامجي للتدريب <a href="https://github.com/huggingface/transformers/blob/f4db565b695582891e43a5e042e5d318e28f20b8/examples/pytorch/text-classification/run_glue.py#L4" rel="nofollow">run_glue.py</a> مع تكوين FSDP:',nt,Ts,pt,ys,Ta="يمكنك أيضًا تحديد المعلمات من ملف <code>config_file.yaml</code> مباشرة في سطر الأوامر:",rt,js,Mt,ds,ya='اطلع على برنامج تعليمي <a href="https://huggingface.co/docs/accelerate/basic_tutorials/launch" rel="nofollow">Launching your Accelerate scripts</a> لمعرفة المزيد حول <code>accelerate_launch</code> والتكوينات المخصصة.',it,Us,ct,gs,ot;return c=new C({props:{title:"Trainer",local:"trainer",headingTag:"h1"}}),_=new us({props:{$$slots:{default:[Da]},$$scope:{ctx:m}}}),$=new A({props:{code:"cGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGUlMEElMEElMjMlMjB1cGdyYWRlJTBBcGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGUlMjAtLXVwZ3JhZGU=",highlighted:`pip install accelerate | |
| <span class="hljs-comment"># upgrade</span> | |
| pip install accelerate --upgrade`,wrap:!1}}),N=new C({props:{title:"الاستخدام الأساسي",local:"الاستخدام-الأساسي",headingTag:"h2"}}),x=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjJ5b3VyLW1vZGVsJTIyJUQ4JThDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTUlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0QxNiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEMTYlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNEMiUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheSUzRDAuMDElMkMlMEElMjAlMjAlMjAlMjBldmFsX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlRDglOEMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlRDglOEMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments | |
| training_args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"your-model"</span>، | |
| learning_rate=<span class="hljs-number">2e-5</span>, | |
| per_device_train_batch_size=<span class="hljs-number">16</span>, | |
| per_device_eval_batch_size=<span class="hljs-number">16</span>, | |
| num_train_epochs=<span class="hljs-number">2</span>, | |
| weight_decay=<span class="hljs-number">0.01</span>, | |
| eval_strategy=<span class="hljs-string">"epoch"</span>، | |
| save_strategy=<span class="hljs-string">"epoch"</span>، | |
| load_best_model_at_end=<span class="hljs-literal">True</span>, | |
| push_to_hub=<span class="hljs-literal">True</span>, | |
| )`,wrap:!1}}),q=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUzRHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJUQ4JThDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRlc3QlMjIlNUQlRDglOEMlMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMEElMjAlMjAlMjAlMjBkYXRhX2NvbGxhdG9yJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSklMEElMEF0cmFpbmVyLnRyYWluKCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| train_dataset=dataset[<span class="hljs-string">"train"</span>]، | |
| eval_dataset=dataset[<span class="hljs-string">"test"</span>]، | |
| tokenizer=tokenizer, | |
| data_collator=data_collator, | |
| compute_metrics=compute_metrics, | |
| ) | |
| trainer.train()`,wrap:!1}}),O=new C({props:{title:"نقاط الحفظ",local:"نقاط-الحفظ",headingTag:"h3"}}),K=new A({props:{code:"JTIzJTIwJUQ4JUE3JUQ4JUIzJUQ4JUFBJUQ4JUEzJUQ5JTg2JUQ5JTgxJTIwJUQ5JTg1JUQ5JTg2JTIwJUQ4JUEzJUQ4JUFEJUQ4JUFGJUQ4JUFCJTIwJUQ5JTg2JUQ5JTgyJUQ4JUI3JUQ4JUE5JTIwJUQ4JUFEJUQ5JTgxJUQ4JUI4JTBBdHJhaW5lci50cmFpbihyZXN1bWVfZnJvbV9jaGVja3BvaW50JTNEVHJ1ZSklMEElMEElMjMlMjAlRDglQTclRDglQjMlRDglQUElRDglQTMlRDklODYlRDklODElMjAlRDklODUlRDklODYlMjAlRDklODYlRDklODIlRDglQjclRDglQTklMjAlRDglQUQlRDklODElRDglQjglMjAlRDklODUlRDglQUQlRDglQUYlRDglQUYlRDglQTklMjAlRDklODUlRDglQUQlRDklODElRDklODglRDglQjglRDglQTklMjAlRDklODElRDklOEElMjAlRDglQUYlRDklODQlRDklOEElRDklODQlMjAlRDglQTclRDklODQlRDglQTUlRDglQUUlRDglQjElRDglQTclRDglQUMlMEF0cmFpbmVyLnRyYWluKHJlc3VtZV9mcm9tX2NoZWNrcG9pbnQlM0QlMjJ5b3VyLW1vZGVsJTJGY2hlY2twb2ludC0xMDAwJTIyKQ==",highlighted:`<span class="hljs-comment"># استأنف من أحدث نقطة حفظ</span> | |
| trainer.train(resume_from_checkpoint=<span class="hljs-literal">True</span>) | |
| <span class="hljs-comment"># استأنف من نقطة حفظ محددة محفوظة في دليل الإخراج</span> | |
| trainer.train(resume_from_checkpoint=<span class="hljs-string">"your-model/checkpoint-1000"</span>)`,wrap:!1}}),tl=new C({props:{title:"تخصيص المدرب",local:"تخصيص-المدرب",headingTag:"h2"}}),rl=new A({props:{code:"ZnJvbSUyMHRvcmNoJTIwaW1wb3J0JTIwbm4lMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwVHJhaW5lciUwQSUwQWNsYXNzJTIwQ3VzdG9tVHJhaW5lcihUcmFpbmVyKSUzQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGNvbXB1dGVfbG9zcyhzZWxmJTJDJTIwbW9kZWwlMkMlMjBpbnB1dHMlMkMlMjByZXR1cm5fb3V0cHV0cyUzREZhbHNlKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMGlucHV0cy5wb3AoJTIybGFiZWxzJTIyKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMGZvcndhcmQlMjBwYXNzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvZ2l0cyUyMCUzRCUyMG91dHB1dHMuZ2V0KCUyMmxvZ2l0cyUyMiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBjb21wdXRlJTIwY3VzdG9tJTIwbG9zcyUyMGZvciUyMDMlMjBsYWJlbHMlMjB3aXRoJTIwZGlmZmVyZW50JTIwd2VpZ2h0cyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3NfZmN0JTIwJTNEJTIwbm4uQ3Jvc3NFbnRyb3B5TG9zcyh3ZWlnaHQlM0R0b3JjaC50ZW5zb3IoJTVCMS4wJTJDJTIwMi4wJTJDJTIwMy4wJTVEJTJDJTIwZGV2aWNlJTNEbW9kZWwuZGV2aWNlKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwbG9zc19mY3QobG9naXRzLnZpZXcoLTElMkMlMjBzZWxmLm1vZGVsLmNvbmZpZy5udW1fbGFiZWxzKSUyQyUyMGxhYmVscy52aWV3KC0xKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAobG9zcyUyQyUyMG91dHB1dHMpJTIwaWYlMjByZXR1cm5fb3V0cHV0cyUyMGVsc2UlMjBsb3Nz",highlighted:`<span class="hljs-keyword">from</span> torch <span class="hljs-keyword">import</span> nn | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">CustomTrainer</span>(<span class="hljs-title class_ inherited__">Trainer</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_loss</span>(<span class="hljs-params">self, model, inputs, return_outputs=<span class="hljs-literal">False</span></span>): | |
| labels = inputs.pop(<span class="hljs-string">"labels"</span>) | |
| <span class="hljs-comment"># forward pass</span> | |
| outputs = model(**inputs) | |
| logits = outputs.get(<span class="hljs-string">"logits"</span>) | |
| <span class="hljs-comment"># compute custom loss for 3 labels with different weights</span> | |
| loss_fct = nn.CrossEntropyLoss(weight=torch.tensor([<span class="hljs-number">1.0</span>, <span class="hljs-number">2.0</span>, <span class="hljs-number">3.0</span>], device=model.device)) | |
| loss = loss_fct(logits.view(-<span class="hljs-number">1</span>, self.model.config.num_labels), labels.view(-<span class="hljs-number">1</span>)) | |
| <span class="hljs-keyword">return</span> (loss, outputs) <span class="hljs-keyword">if</span> return_outputs <span class="hljs-keyword">else</span> loss`,wrap:!1}}),Ml=new C({props:{title:"دوال الاستدعاء Callbacks",local:"دوال-الاستدعاء-callbacks",headingTag:"h3"}}),ol=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXJDYWxsYmFjayUwQSUwQWNsYXNzJTIwRWFybHlTdG9wcGluZ0NhbGxiYWNrKFRyYWluZXJDYWxsYmFjayklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmJTJDJTIwbnVtX3N0ZXBzJTNEMTApJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5udW1fc3RlcHMlMjAlM0QlMjBudW1fc3RlcHMlMEElMjAlMjAlMjAlMjAlMEElMjAlMjAlMjAlMjBkZWYlMjBvbl9zdGVwX2VuZChzZWxmJTJDJTIwYXJncyUyQyUyMHN0YXRlJTJDJTIwY29udHJvbCUyQyUyMCoqa3dhcmdzKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwc3RhdGUuZ2xvYmFsX3N0ZXAlMjAlM0UlM0QlMjBzZWxmLm51bV9zdGVwcyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMnNob3VsZF90cmFpbmluZ19zdG9wJTIyJTNBJTIwVHJ1ZSU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlN0Q=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainerCallback | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EarlyStoppingCallback</span>(<span class="hljs-title class_ inherited__">TrainerCallback</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, num_steps=<span class="hljs-number">10</span></span>): | |
| self.num_steps = num_steps | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">on_step_end</span>(<span class="hljs-params">self, args, state, control, **kwargs</span>): | |
| <span class="hljs-keyword">if</span> state.global_step >= self.num_steps: | |
| <span class="hljs-keyword">return</span> {<span class="hljs-string">"should_training_stop"</span>: <span class="hljs-literal">True</span>} | |
| <span class="hljs-keyword">else</span>: | |
| <span class="hljs-keyword">return</span> {}`,wrap:!1}}),Jl=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUzRHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJUQ4JThDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRlc3QlMjIlNUQlRDglOEMlMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMEElMjAlMjAlMjAlMjBkYXRhX2NvbGxhdG9yJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSUyMCUyMCUyMCUyMGNhbGxiYWNrJTNEJTVCRWFybHlTdG9wcGluZ0NhbGxiYWNrKCklNUQlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| train_dataset=dataset[<span class="hljs-string">"train"</span>]، | |
| eval_dataset=dataset[<span class="hljs-string">"test"</span>]، | |
| tokenizer=tokenizer, | |
| data_collator=data_collator, | |
| compute_metrics=compute_metrics, | |
| callback=[EarlyStoppingCallback()], | |
| )`,wrap:!1}}),Tl=new C({props:{title:"تسجيل الأحداث (Logging)",local:"تسجيل-الأحداث-logging",headingTag:"h2"}}),Q=new us({props:{$$slots:{default:[qa]},$$scope:{ctx:m}}}),R=new us({props:{$$slots:{default:[Oa]},$$scope:{ctx:m}}}),Ul=new A({props:{code:"bG9nZ2VyJTIwJTNEJTIwbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pJTBBJTBBbG9nZ2luZy5iYXNpY0NvbmZpZyglMEElMjAlMjAlMjAlMjBmb3JtYXQlM0QlMjIlMjUoYXNjdGltZSlzJTIwLSUyMCUyNShsZXZlbG5hbWUpcyUyMC0lMjAlMjUobmFtZSlzJTIwLSUyMCUyNShtZXNzYWdlKXMlMjIlRDglOEMlMEElMjAlMjAlMjAlMjBkYXRlZm10JTNEJTIyJTI1bSUyRiUyNWQlMkYlMjVZJTIwJTI1SCUzQSUyNU0lM0ElMjVTJTIyJUQ4JThDJTBBJTIwJTIwJTIwJTIwaGFuZGxlcnMlM0QlNUJsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCklNUQlMkMlMEEpJTBBJTBBbG9nX2xldmVsJTIwJTNEJTIwdHJhaW5pbmdfYXJncy5nZXRfcHJvY2Vzc19sb2dfbGV2ZWwoKSUwQWxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpJTBBZGF0YXNldHMudXRpbHMubG9nZ2luZy5zZXRfdmVyYm9zaXR5KGxvZ19sZXZlbCklMEF0cmFuc2Zvcm1lcnMudXRpbHMubG9nZ2luZy5zZXRfdmVyYm9zaXR5KGxvZ19sZXZlbCklMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciguLi4p",highlighted:`logger = logging.getLogger(__name__) | |
| logging.basicConfig( | |
| <span class="hljs-built_in">format</span>=<span class="hljs-string">"%(asctime)s - %(levelname)s - %(name)s - %(message)s"</span>، | |
| datefmt=<span class="hljs-string">"%m/%d/%Y %H:%M:%S"</span>، | |
| handlers=[logging.StreamHandler(sys.stdout)], | |
| ) | |
| log_level = training_args.get_process_log_level() | |
| logger.setLevel(log_level) | |
| datasets.utils.logging.set_verbosity(log_level) | |
| transformers.utils.logging.set_verbosity(log_level) | |
| trainer = Trainer(...)`,wrap:!1}}),X=new Aa({props:{id:"logging",options:["single node","multi-node"],$$slots:{default:[ln]},$$scope:{ctx:m}}}),ul=new C({props:{title:"NEFTune",local:"neftune",headingTag:"h2"}}),hl=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyguLi4lMkMlMjBuZWZ0dW5lX25vaXNlX2FscGhhJTNEMC4xKSUwQXRyYWluZXIlMjAlM0QlMjBUcmFpbmVyKC4uLiUyQyUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer | |
| training_args = TrainingArguments(..., neftune_noise_alpha=<span class="hljs-number">0.1</span>) | |
| trainer = Trainer(..., args=training_args)`,wrap:!1}}),bl=new C({props:{title:"نواة Liger",local:"نواة-liger",headingTag:"h2"}}),Zl=new A({props:{code:"cGlwJTIwaW5zdGFsbCUyMGxpZ2VyLWtlcm5lbA==",highlighted:"pip install liger-kernel",wrap:!1}}),Cl=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjJ5b3VyLW1vZGVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTUlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0QxNiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEMTYlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNEMiUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheSUzRDAuMDElMkMlMEElMjAlMjAlMjAlMjBldmFsX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHVzZV9saWdlcl9rZXJuZWwlM0RUcnVlJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments | |
| training_args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"your-model"</span>, | |
| learning_rate=<span class="hljs-number">2e-5</span>, | |
| per_device_train_batch_size=<span class="hljs-number">16</span>, | |
| per_device_eval_batch_size=<span class="hljs-number">16</span>, | |
| num_train_epochs=<span class="hljs-number">2</span>, | |
| weight_decay=<span class="hljs-number">0.01</span>, | |
| eval_strategy=<span class="hljs-string">"epoch"</span>, | |
| save_strategy=<span class="hljs-string">"epoch"</span>, | |
| load_best_model_at_end=<span class="hljs-literal">True</span>, | |
| push_to_hub=<span class="hljs-literal">True</span>, | |
| use_liger_kernel=<span class="hljs-literal">True</span> | |
| )`,wrap:!1}}),$l=new C({props:{title:"المُحسِّنات",local:"المحسنات",headingTag:"h2"}}),Ql=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKC4uLiUyQyUyMG9wdGltJTNEJTIyYWRhbXdfdG9yY2glMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments | |
| training_args = TrainingArguments(..., optim=<span class="hljs-string">"adamw_torch"</span>)`,wrap:!1}}),Wl=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFvcHRpbWl6ZXJfY2xzJTIwJTNEJTIwdG9yY2gub3B0aW0uQWRhbVclMEFvcHRpbWl6ZXJfa3dhcmdzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIybHIlMjIlM0ElMjA0ZS0zJTJDJTBBJTIwJTIwJTIwJTIwJTIyYmV0YXMlMjIlM0ElMjAoMC45JTJDJTIwMC45OTkpJTJDJTBBJTIwJTIwJTIwJTIwJTIyd2VpZ2h0X2RlY2F5JTIyJTNBJTIwMC4wNSUyQyUwQSU3RCUwQSUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmVyJTBBdHJhaW5lciUyMCUzRCUyMFRyYWluZXIoLi4uJTJDJTIwb3B0aW1pemVyX2Nsc19hbmRfa3dhcmdzJTNEKG9wdGltaXplcl9jbHMlMkMlMjBvcHRpbWl6ZXJfa3dhcmdzKSk=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| optimizer_cls = torch.optim.AdamW | |
| optimizer_kwargs = { | |
| <span class="hljs-string">"lr"</span>: <span class="hljs-number">4e-3</span>, | |
| <span class="hljs-string">"betas"</span>: (<span class="hljs-number">0.9</span>, <span class="hljs-number">0.999</span>), | |
| <span class="hljs-string">"weight_decay"</span>: <span class="hljs-number">0.05</span>, | |
| } | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| trainer = Trainer(..., optimizer_cls_and_kwargs=(optimizer_cls, optimizer_kwargs))`,wrap:!1}}),Vl=new C({props:{title:"GaLore",local:"galore",headingTag:"h3"}}),Gl=new A({props:{code:"cGlwJTIwaW5zdGFsbCUyMGdhbG9yZS10b3JjaA==",highlighted:"pip install galore-torch",wrap:!1}}),Nl=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWltcG9ydCUyMHRybCUwQSUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyUyQyUyMEF1dG9Db25maWclMkMlMjBBdXRvVG9rZW5pemVyJTJDJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0lMEElMEF0cmFpbl9kYXRhc2V0JTIwJTNEJTIwZGF0YXNldHMubG9hZF9kYXRhc2V0KCdpbWRiJyUyQyUyMHNwbGl0JTNEJ3RyYWluJyklMEElMEFhcmdzJTIwJTNEJTIwVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMi4lMkZ0ZXN0LWdhbG9yZSUyMiVEOCU4QyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDEwMCUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDIlMkMlMEElMjAlMjAlMjAlMjBvcHRpbSUzRCUyMmdhbG9yZV9hZGFtdyUyMiVEOCU4QyUwQSUyMCUyMCUyMCUyMG9wdGltX3RhcmdldF9tb2R1bGVzJTNEJTVCciUyMi4qLmF0dG4uKiUyMiVEOCU4QyUyMHIlMjIuKi5tbHAuKiUyMiU1RCUwQSklMEElMEFtb2RlbF9pZCUyMCUzRCUyMCUyMmdvb2dsZSUyRmdlbW1hLTJiJTIyJTBBJTBBY29uZmlnJTIwJTNEJTIwQXV0b0NvbmZpZy5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQpJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX2NvbmZpZyhjb25maWcpLnRvKDApJTBBJTBBdHJhaW5lciUyMCUzRCUyMHRybC5TRlRUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEbW9kZWwlMkMlMjAlMEElMjAlMjAlMjAlMjBhcmdzJTNEYXJncyUyQyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0R0cmFpbl9kYXRhc2V0JTJDJTBBJTIwJTIwJTIwJTIwZGF0YXNldF90ZXh0X2ZpZWxkJTNEJ3RleHQnJTJDJTBBJTIwJTIwJTIwJTIwbWF4X3NlcV9sZW5ndGglM0Q1MTIlMkMlMEEpJTBBJTBBdHJhaW5lci50cmFpbigp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">import</span> trl | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>, split=<span class="hljs-string">'train'</span>) | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-galore"</span>، | |
| max_steps=<span class="hljs-number">100</span>, | |
| per_device_train_batch_size=<span class="hljs-number">2</span>, | |
| optim=<span class="hljs-string">"galore_adamw"</span>، | |
| optim_target_modules=[<span class="hljs-string">r".*.attn.*"</span>، <span class="hljs-string">r".*.mlp.*"</span>] | |
| ) | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| config = AutoConfig.from_pretrained(model_id) | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_config(config).to(<span class="hljs-number">0</span>) | |
| trainer = trl.SFTTrainer( | |
| model=model, | |
| args=args, | |
| train_dataset=train_dataset, | |
| dataset_text_field=<span class="hljs-string">'text'</span>, | |
| max_seq_length=<span class="hljs-number">512</span>, | |
| ) | |
| trainer.train()`,wrap:!1}}),Sl=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWltcG9ydCUyMHRybCUwQSUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyUyQyUyMEF1dG9Db25maWclMkMlMjBBdXRvVG9rZW5pemVyJTJDJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0lMEElMEF0cmFpbl9kYXRhc2V0JTIwJTNEJTIwZGF0YXNldHMubG9hZF9kYXRhc2V0KCdpbWRiJyUyQyUyMHNwbGl0JTNEJ3RyYWluJyklMEElMEFhcmdzJTIwJTNEJTIwVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMi4lMkZ0ZXN0LWdhbG9yZSUyMiUyQyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDEwMCUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDIlMkMlMEElMjAlMjAlMjAlMjBvcHRpbSUzRCUyMmdhbG9yZV9hZGFtdyUyMiUyQyUwQSUyMCUyMCUyMCUyMG9wdGltX3RhcmdldF9tb2R1bGVzJTNEJTVCciUyMi4qLmF0dG4uKiUyMiUyQyUyMHIlMjIuKi5tbHAuKiUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMG9wdGltX2FyZ3MlM0QlMjJyYW5rJTNENjQlMkMlMjB1cGRhdGVfcHJval9nYXAlM0QxMDAlMkMlMjBzY2FsZSUzRDAuMTAlMjIlMkMlMEEpJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJnb29nbGUlMkZnZW1tYS0yYiUyMiUwQSUwQWNvbmZpZyUyMCUzRCUyMEF1dG9Db25maWcuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKSUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0uZnJvbV9jb25maWcoY29uZmlnKS50bygwKSUwQSUwQXRyYWluZXIlMjAlM0QlMjB0cmwuU0ZUVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTIwJTBBJTIwJTIwJTIwJTIwYXJncyUzRGFyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEdHJhaW5fZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMGRhdGFzZXRfdGV4dF9maWVsZCUzRCd0ZXh0JyUyQyUwQSUyMCUyMCUyMCUyMG1heF9zZXFfbGVuZ3RoJTNENTEyJTJDJTBBKSUwQSUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">import</span> trl | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>, split=<span class="hljs-string">'train'</span>) | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-galore"</span>, | |
| max_steps=<span class="hljs-number">100</span>, | |
| per_device_train_batch_size=<span class="hljs-number">2</span>, | |
| optim=<span class="hljs-string">"galore_adamw"</span>, | |
| optim_target_modules=[<span class="hljs-string">r".*.attn.*"</span>, <span class="hljs-string">r".*.mlp.*"</span>], | |
| optim_args=<span class="hljs-string">"rank=64, update_proj_gap=100, scale=0.10"</span>, | |
| ) | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| config = AutoConfig.from_pretrained(model_id) | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_config(config).to(<span class="hljs-number">0</span>) | |
| trainer = trl.SFTTrainer( | |
| model=model, | |
| args=args, | |
| train_dataset=train_dataset, | |
| dataset_text_field=<span class="hljs-string">'text'</span>, | |
| max_seq_length=<span class="hljs-number">512</span>, | |
| ) | |
| trainer.train()`,wrap:!1}}),Dl=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWltcG9ydCUyMHRybCUwQSUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyVEOCU4QyUyMEF1dG9Db25maWclRDglOEMlMjBBdXRvVG9rZW5pemVyJUQ4JThDJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0lMEElMEF0cmFpbl9kYXRhc2V0JTIwJTNEJTIwZGF0YXNldHMubG9hZF9kYXRhc2V0KCdpbWRiJyVEOCU4QyUyMHNwbGl0JTNEJ3RyYWluJyklMEElMEFhcmdzJTIwJTNEJTIwVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMi4lMkZ0ZXN0LWdhbG9yZSUyMiVEOCU4QyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDEwMCVEOCU4QyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDIlRDglOEMlMEElMjAlMjAlMjAlMjBvcHRpbSUzRCUyMmdhbG9yZV9hZGFtd19sYXllcndpc2UlMjIlRDglOEMlMEElMjAlMjAlMjAlMjBvcHRpbV90YXJnZXRfbW9kdWxlcyUzRCU1QnIlMjIuKi5hdHRuLiolMjIlRDglOEMlMjByJTIyLioubWxwLiolMjIlNUQlMEEpJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJnb29nbGUlMkZnZW1tYS0yYiUyMiUwQSUwQWNvbmZpZyUyMCUzRCUyMEF1dG9Db25maWcuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKSUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0uZnJvbV9jb25maWcoY29uZmlnKS50bygwKSUwQSUwQXRyYWluZXIlMjAlM0QlMjB0cmwuU0ZUVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJUQ4JThDJTBBJTIwJTIwJTIwJTIwYXJncyUzRGFyZ3MlRDglOEMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEdHJhaW5fZGF0YXNldCVEOCU4QyUwQSUyMCUyMCUyMCUyMGRhdGFzZXRfdGV4dF9maWVsZCUzRCd0ZXh0JyVEOCU4QyUwQSUyMCUyMCUyMCUyMG1heF9zZXFfbGVuZ3RoJTNENTEyJUQ4JThDJTBBKSUwQSUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">import</span> trl | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments، AutoConfig، AutoTokenizer، AutoModelForCausalLM | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>، split=<span class="hljs-string">'train'</span>) | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-galore"</span>، | |
| max_steps=<span class="hljs-number">100</span>، | |
| per_device_train_batch_size=<span class="hljs-number">2</span>، | |
| optim=<span class="hljs-string">"galore_adamw_layerwise"</span>، | |
| optim_target_modules=[<span class="hljs-string">r".*.attn.*"</span>، <span class="hljs-string">r".*.mlp.*"</span>] | |
| ) | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| config = AutoConfig.from_pretrained(model_id) | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_config(config).to(<span class="hljs-number">0</span>) | |
| trainer = trl.SFTTrainer( | |
| model=model، | |
| args=args، | |
| train_dataset=train_dataset، | |
| dataset_text_field=<span class="hljs-string">'text'</span>، | |
| max_seq_length=<span class="hljs-number">512</span>، | |
| ) | |
| trainer.train()`,wrap:!1}}),Ol=new C({props:{title:"محسنات LOMO",local:"محسنات-lomo",headingTag:"h3"}}),W=new us({props:{$$slots:{default:[sn]},$$scope:{ctx:m}}}),ls=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyVEOCU4QyUyMEF1dG9Ub2tlbml6ZXIlRDglOEMlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTSUwQWltcG9ydCUyMHRybCUwQSUwQXRyYWluX2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJ2ltZGInJUQ4JThDJTIwc3BsaXQlM0QndHJhaW4nKSUwQSUwQWFyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTNEJTIyLiUyRnRlc3QtbG9tbyUyMiVEOCU4QyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDEwMCVEOCU4QyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDQlRDglOEMlMEElMjAlMjAlMjAlMjBvcHRpbSUzRCUyMmFkYWxvbW8lMjIlRDglOEMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9jaGVja3BvaW50aW5nJTNEVHJ1ZSVEOCU4QyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiVEOCU4QyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RlcHMlM0QxJUQ4JThDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTYlRDglOEMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIybm8lMjIlRDglOEMlMEElMjAlMjAlMjAlMjBydW5fbmFtZSUzRCUyMmxvbW8taW1kYiUyMiVEOCU4QyUwQSklMEElMEFtb2RlbF9pZCUyMCUzRCUyMCUyMmdvb2dsZSUyRmdlbW1hLTJiJTIyJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQobW9kZWxfaWQlRDglOEMlMjBsb3dfY3B1X21lbV91c2FnZSUzRFRydWUpLnRvKDApJTBBJTBBdHJhaW5lciUyMCUzRCUyMHRybC5TRlRUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEbW9kZWwlRDglOEMlMEElMjAlMjAlMjAlMjBhcmdzJTNEYXJncyVEOCU4QyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0R0cmFpbl9kYXRhc2V0JUQ4JThDJTBBJTIwJTIwJTIwJTIwZGF0YXNldF90ZXh0X2ZpZWxkJTNEJ3RleHQnJUQ4JThDJTBBJTIwJTIwJTIwJTIwbWF4X3NlcV9sZW5ndGglM0QxMDI0JUQ4JThDJTBBKSUwQSUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments، AutoTokenizer، AutoModelForCausalLM | |
| <span class="hljs-keyword">import</span> trl | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>، split=<span class="hljs-string">'train'</span>) | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-lomo"</span>، | |
| max_steps=<span class="hljs-number">100</span>، | |
| per_device_train_batch_size=<span class="hljs-number">4</span>، | |
| optim=<span class="hljs-string">"adalomo"</span>، | |
| gradient_checkpointing=<span class="hljs-literal">True</span>، | |
| logging_strategy=<span class="hljs-string">"steps"</span>، | |
| logging_steps=<span class="hljs-number">1</span>، | |
| learning_rate=<span class="hljs-number">2e-6</span>، | |
| save_strategy=<span class="hljs-string">"no"</span>، | |
| run_name=<span class="hljs-string">"lomo-imdb"</span>، | |
| ) | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained(model_id، low_cpu_mem_usage=<span class="hljs-literal">True</span>).to(<span class="hljs-number">0</span>) | |
| trainer = trl.SFTTrainer( | |
| model=model، | |
| args=args، | |
| train_dataset=train_dataset، | |
| dataset_text_field=<span class="hljs-string">'text'</span>، | |
| max_seq_length=<span class="hljs-number">1024</span>، | |
| ) | |
| trainer.train()`,wrap:!1}}),ss=new C({props:{title:"مُحسِّن GrokAdamW",local:"محسن-grokadamw",headingTag:"h3"}}),V=new us({props:{$$slots:{default:[en]},$$scope:{ctx:m}}}),as=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyUyQyUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTSUyQyUyMFRyYWluZXIlMEElMEElMjMlMjAlRDglQUElRDglQUQlRDklODUlRDklOEElRDklODQlMjAlRDklODUlRDglQUMlRDklODUlRDklODglRDglQjklRDglQTklMjAlRDglQTclRDklODQlRDglQTglRDklOEElRDglQTclRDklODYlRDglQTclRDglQUElMjBJTURCJTBBdHJhaW5fZGF0YXNldCUyMCUzRCUyMGRhdGFzZXRzLmxvYWRfZGF0YXNldCgnaW1kYiclMkMlMjBzcGxpdCUzRCd0cmFpbicpJTBBJTBBJTIzJTIwJUQ4JUFBJUQ4JUI5JUQ4JUIxJUQ5JThBJUQ5JTgxJTIwJUQ5JTg1JUQ4JUI5JUQ4JUE3JUQ5JTg1JUVGJUJCJUJCJUQ4JUFBJTIwJUQ4JUE3JUQ5JTg0JUQ4JUFBJUQ4JUFGJUQ4JUIxJUQ5JThBJUQ4JUE4JTBBYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjIuJTJGdGVzdC1ncm9rYWRhbXclMjIlMkMlMEElMjAlMjAlMjAlMjBtYXhfc3RlcHMlM0QxMDAwJTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTNENCUyQyUwQSUyMCUyMCUyMCUyMG9wdGltJTNEJTIyZ3Jva2FkYW13JTIyJTJDJTBBJTIwJTIwJTIwJTIwbG9nZ2luZ19zdHJhdGVneSUzRCUyMnN0ZXBzJTIyJTJDJTBBJTIwJTIwJTIwJTIwbG9nZ2luZ19zdGVwcyUzRDElMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNEMmUtNSUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RyYXRlZ3klM0QlMjJubyUyMiUyQyUwQSUyMCUyMCUyMCUyMHJ1bl9uYW1lJTNEJTIyZ3Jva2FkYW13LWltZGIlMjIlMkMlMEEpJTBBJTBBJTIzJTIwJUQ4JUFBJUQ4JUFEJUQ5JTg1JUQ5JThBJUQ5JTg0JTIwJUQ4JUE3JUQ5JTg0JUQ5JTg2JUQ5JTg1JUQ5JTg4JUQ4JUIwJUQ4JUFDJTIwJUQ5JTg4JUQ4JUE3JUQ5JTg0JUQ5JTg1JUQ4JUFDJUQ4JUIyJUQ5JTg5JUQ4JUExJTIwJUQ4JUE3JUQ5JTg0JUQ5JTg0JUQ4JUJBJUQ5JTg4JUQ5JThBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJnb29nbGUlMkZnZW1tYS0yYiUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ2F1c2FsTE0uZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkJTJDJTIwbG93X2NwdV9tZW1fdXNhZ2UlM0RUcnVlKS50bygwKSUwQSUwQSUyMyUyMCVEOCVBQSVEOSU4NyVEOSU4QSVEOCVBNiVEOCVBOSUyMCVEOCVBNyVEOSU4NCVEOSU4NSVEOCVBRiVEOCVCMSVEOCVBOCUwQXRyYWluZXIlMjAlM0QlMjBUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEbW9kZWwlMkMlMEElMjAlMjAlMjAlMjBhcmdzJTNEYXJncyUyQyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0R0cmFpbl9kYXRhc2V0JTJDJTBBKSUwQSUwQSUyMyUyMCVEOCVBQSVEOCVBRiVEOCVCMSVEOSU4QSVEOCVBOCUyMCVEOCVBNyVEOSU4NCVEOSU4NiVEOSU4NSVEOSU4OCVEOCVCMCVEOCVBQyUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, AutoTokenizer, AutoModelForCausalLM, Trainer | |
| <span class="hljs-comment"># تحميل مجموعة البيانات IMDB</span> | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>, split=<span class="hljs-string">'train'</span>) | |
| <span class="hljs-comment"># تعريف معامﻻت التدريب</span> | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-grokadamw"</span>, | |
| max_steps=<span class="hljs-number">1000</span>, | |
| per_device_train_batch_size=<span class="hljs-number">4</span>, | |
| optim=<span class="hljs-string">"grokadamw"</span>, | |
| logging_strategy=<span class="hljs-string">"steps"</span>, | |
| logging_steps=<span class="hljs-number">1</span>, | |
| learning_rate=<span class="hljs-number">2e-5</span>, | |
| save_strategy=<span class="hljs-string">"no"</span>, | |
| run_name=<span class="hljs-string">"grokadamw-imdb"</span>, | |
| ) | |
| <span class="hljs-comment"># تحميل النموذج والمجزىء اللغوي</span> | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained(model_id, low_cpu_mem_usage=<span class="hljs-literal">True</span>).to(<span class="hljs-number">0</span>) | |
| <span class="hljs-comment"># تهيئة المدرب</span> | |
| trainer = Trainer( | |
| model=model, | |
| args=args, | |
| train_dataset=train_dataset, | |
| ) | |
| <span class="hljs-comment"># تدريب النموذج</span> | |
| trainer.train()`,wrap:!1}}),ps=new C({props:{title:"مُحسِّن بدون جدوله (Schedule Free Optimizer)",local:"محسن-بدون-جدوله-schedule-free-optimizer",headingTag:"h3"}}),is=new A({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBkYXRhc2V0cyUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBUcmFpbmluZ0FyZ3VtZW50cyUyQyUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTSUwQWltcG9ydCUyMHRybCUwQSUwQXRyYWluX2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJ2ltZGInJTJDJTIwc3BsaXQlM0QndHJhaW4nKSUwQSUwQWFyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTNEJTIyLiUyRnRlc3Qtc2NoZWR1bGVmcmVlJTIyJTJDJTBBJTIwJTIwJTIwJTIwbWF4X3N0ZXBzJTNEMTAwMCUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDQlMkMlMEElMjAlMjAlMjAlMjBvcHRpbSUzRCUyMnNjaGVkdWxlX2ZyZWVfYWRhbXclMjIlMkMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9jaGVja3BvaW50aW5nJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RlcHMlM0QxJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTYlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIybm8lMjIlMkMlMEElMjAlMjAlMjAlMjBydW5fbmFtZSUzRCUyMnNmby1pbWRiJTIyJTJDJTBBKSUwQSUwQW1vZGVsX2lkJTIwJTNEJTIwJTIyZ29vZ2xlJTJGZ2VtbWEtMmIlMjIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChtb2RlbF9pZCklMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvckNhdXNhbExNLmZyb21fcHJldHJhaW5lZChtb2RlbF9pZCUyQyUyMGxvd19jcHVfbWVtX3VzYWdlJTNEVHJ1ZSkudG8oMCklMEElMEF0cmFpbmVyJTIwJTNEJTIwdHJsLlNGVFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUyMCUwQSUyMCUyMCUyMCUyMGFyZ3MlM0RhcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHRyYWluX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBkYXRhc2V0X3RleHRfZmllbGQlM0QndGV4dCclMkMlMEElMjAlMjAlMjAlMjBtYXhfc2VxX2xlbmd0aCUzRDEwMjQlMkMlMEEpJTBBJTBBdHJhaW5lci50cmFpbigp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> datasets | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, AutoTokenizer, AutoModelForCausalLM | |
| <span class="hljs-keyword">import</span> trl | |
| train_dataset = datasets.load_dataset(<span class="hljs-string">'imdb'</span>, split=<span class="hljs-string">'train'</span>) | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"./test-schedulefree"</span>, | |
| max_steps=<span class="hljs-number">1000</span>, | |
| per_device_train_batch_size=<span class="hljs-number">4</span>, | |
| optim=<span class="hljs-string">"schedule_free_adamw"</span>, | |
| gradient_checkpointing=<span class="hljs-literal">True</span>, | |
| logging_strategy=<span class="hljs-string">"steps"</span>, | |
| logging_steps=<span class="hljs-number">1</span>, | |
| learning_rate=<span class="hljs-number">2e-6</span>, | |
| save_strategy=<span class="hljs-string">"no"</span>, | |
| run_name=<span class="hljs-string">"sfo-imdb"</span>, | |
| ) | |
| model_id = <span class="hljs-string">"google/gemma-2b"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained(model_id, low_cpu_mem_usage=<span class="hljs-literal">True</span>).to(<span class="hljs-number">0</span>) | |
| trainer = trl.SFTTrainer( | |
| model=model, | |
| args=args, | |
| train_dataset=train_dataset, | |
| dataset_text_field=<span class="hljs-string">'text'</span>, | |
| max_seq_length=<span class="hljs-number">1024</span>, | |
| ) | |
| trainer.train()`,wrap:!1}}),cs=new C({props:{title:"تسريع ومدرب",local:"تسريع-ومدرب",headingTag:"h2"}}),k=new us({props:{$$slots:{default:[tn]},$$scope:{ctx:m}}}),F=new Aa({props:{id:"config",options:["DistributedDataParallel","FSDP","DeepSpeed","DeepSpeed with Accelerate plugin","Tensor Parallelism with PyTorch 2"],$$slots:{default:[cn]},$$scope:{ctx:m}}}),Ts=new A({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMCU1QyUwQSUyMCUyMCUyMCUyMC4lMkZleGFtcGxlcyUyRnB5dG9yY2glMkZ0ZXh0LWNsYXNzaWZpY2F0aW9uJTJGcnVuX2dsdWUucHklMjAlNUMlMEElMjAlMjAlMjAlMjAtLW1vZGVsX25hbWVfb3JfcGF0aCUyMGdvb2dsZS1iZXJ0JTJGYmVydC1iYXNlLWNhc2VkJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10YXNrX25hbWUlMjAlMjRUQVNLX05BTUUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLWRvX3RyYWluJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kb19ldmFsJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1tYXhfc2VxX2xlbmd0aCUyMDEyOCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTIwMTYlMjAlNUMlMEElMjAlMjAlMjAlMjAtLWxlYXJuaW5nX3JhdGUlMjA1ZS01JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1udW1fdHJhaW5fZXBvY2hzJTIwMyUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tb3V0cHV0X2RpciUyMCUyRnRtcCUyRiUyNFRBU0tfTkFNRSUyRiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tb3ZlcndyaXRlX291dHB1dF9kaXI=",highlighted:`accelerate launch \\ | |
| ./examples/pytorch/text-classification/run_glue.py \\ | |
| --model_name_or_path google-bert/bert-base-cased \\ | |
| --task_name <span class="hljs-variable">$TASK_NAME</span> \\ | |
| --do_train \\ | |
| --do_eval \\ | |
| --max_seq_length 128 \\ | |
| --per_device_train_batch_size 16 \\ | |
| --learning_rate 5e-5 \\ | |
| --num_train_epochs 3 \\ | |
| --output_dir /tmp/<span class="hljs-variable">$TASK_NAME</span>/ \\ | |
| --overwrite_output_dir`,wrap:!1}}),js=new A({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMC0tbnVtX3Byb2Nlc3NlcyUzRDIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXVzZV9mc2RwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1taXhlZF9wcmVjaXNpb24lM0RiZjE2JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX2F1dG9fd3JhcF9wb2xpY3klM0RUUkFOU0ZPUk1FUl9CQVNFRF9XUkFQJTIwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX3RyYW5zZm9ybWVyX2xheWVyX2Nsc190b193cmFwJTNEJTIyQmVydExheWVyJTIyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX3NoYXJkaW5nX3N0cmF0ZWd5JTNEMSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZnNkcF9zdGF0ZV9kaWN0X3R5cGUlM0RGVUxMX1NUQVRFX0RJQ1QlMjAlNUMlMEElMjAlMjAlMjAlMjAuJTJGZXhhbXBsZXMlMkZweXRvcmNoJTJGdGV4dC1jbGFzc2lmaWNhdGlvbiUyRnJ1bl9nbHVlLnB5JTBBJTIwJTIwJTIwJTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBnb29nbGUtYmVydCUyRmJlcnQtYmFzZS1jYXNlZCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGFza19uYW1lJTIwJTI0VEFTS19OQU1FJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kb190cmFpbiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZG9fZXZhbCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbWF4X3NlcV9sZW5ndGglMjAxMjglMjAlNUMlMEElMjAlMjAlMjAlMjAtLXBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUyMDE2JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1sZWFybmluZ19yYXRlJTIwNWUtNSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbnVtX3RyYWluX2Vwb2NocyUyMDMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkYlMjRUQVNLX05BTUUlMkYlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW92ZXJ3cml0ZV9vdXRwdXRfZGly",highlighted:`accelerate launch --num_processes=2 \\ | |
| --use_fsdp \\ | |
| --mixed_precision=bf16 \\ | |
| --fsdp_auto_wrap_policy=TRANSFORMER_BASED_WRAP \\ | |
| --fsdp_transformer_layer_cls_to_wrap=<span class="hljs-string">"BertLayer"</span> \\ | |
| --fsdp_sharding_strategy=1 \\ | |
| --fsdp_state_dict_type=FULL_STATE_DICT \\ | |
| ./examples/pytorch/text-classification/run_glue.py | |
| --model_name_or_path google-bert/bert-base-cased \\ | |
| --task_name <span class="hljs-variable">$TASK_NAME</span> \\ | |
| --do_train \\ | |
| --do_eval \\ | |
| --max_seq_length 128 \\ | |
| --per_device_train_batch_size 16 \\ | |
| --learning_rate 5e-5 \\ | |
| --num_train_epochs 3 \\ | |
| --output_dir /tmp/<span class="hljs-variable">$TASK_NAME</span>/ \\ | |
| --overwrite_output_dir`,wrap:!1}}),Us=new Na({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ar/trainer.md"}}),{c(){a=T("meta"),M=p(),e=T("p"),i=p(),u(c.$$.fragment),o=p(),I=T("p"),I.innerHTML=b,U=p(),u(_.$$.fragment),J=p(),Z=T("p"),Z.innerHTML=hs,G=p(),u($.$$.fragment),v=p(),E=T("p"),E.innerHTML=wt,Is=p(),u(N.$$.fragment),Zs=p(),Y=T("p"),Y.innerHTML=ut,As=p(),S=T("ol"),S.innerHTML=ft,Cs=p(),z=T("p"),z.innerHTML=ht,Bs=p(),H=T("p"),H.innerHTML=gt,$s=p(),u(x.$$.fragment),Es=p(),L=T("p"),L.innerHTML=bt,Qs=p(),D=T("p"),D.innerHTML=_t,Rs=p(),u(q.$$.fragment),Xs=p(),u(O.$$.fragment),Ws=p(),P=T("p"),P.innerHTML=It,Vs=p(),u(K.$$.fragment),ks=p(),ll=T("p"),ll.innerHTML=Zt,Fs=p(),sl=T("ul"),sl.innerHTML=At,Gs=p(),el=T("p"),el.innerHTML=Ct,vs=p(),u(tl.$$.fragment),Ns=p(),al=T("p"),al.innerHTML=Bt,Ys=p(),nl=T("ul"),nl.innerHTML=$t,Ss=p(),pl=T("p"),pl.innerHTML=Et,zs=p(),u(rl.$$.fragment),Hs=p(),u(Ml.$$.fragment),xs=p(),il=T("p"),il.innerHTML=Qt,Ls=p(),cl=T("p"),cl.textContent=Rt,Ds=p(),u(ol.$$.fragment),qs=p(),ml=T("p"),ml.innerHTML=Xt,Os=p(),u(Jl.$$.fragment),Ps=p(),u(Tl.$$.fragment),Ks=p(),u(Q.$$.fragment),le=p(),yl=T("p"),yl.innerHTML=Wt,se=p(),jl=T("p"),jl.innerHTML=Vt,ee=p(),u(R.$$.fragment),te=p(),dl=T("p"),dl.textContent=kt,ae=p(),u(Ul.$$.fragment),ne=p(),wl=T("p"),wl.innerHTML=Ft,pe=p(),u(X.$$.fragment),re=p(),u(ul.$$.fragment),Me=p(),fl=T("p"),fl.innerHTML=Gt,ie=p(),u(hl.$$.fragment),ce=p(),gl=T("p"),gl.textContent=vt,oe=p(),u(bl.$$.fragment),me=p(),_l=T("p"),_l.innerHTML=Nt,Je=p(),Il=T("p"),Il.innerHTML=Yt,Te=p(),u(Zl.$$.fragment),ye=p(),Al=T("p"),Al.innerHTML=St,je=p(),u(Cl.$$.fragment),de=p(),Bl=T("p"),Bl.innerHTML=zt,Ue=p(),u($l.$$.fragment),we=p(),El=T("p"),El.textContent=Ht,ue=p(),u(Ql.$$.fragment),fe=p(),Rl=T("p"),Rl.innerHTML=xt,he=p(),Xl=T("p"),Xl.textContent=Lt,ge=p(),u(Wl.$$.fragment),be=p(),u(Vl.$$.fragment),_e=p(),kl=T("p"),kl.textContent=Dt,Ie=p(),Fl=T("p"),Fl.textContent=qt,Ze=p(),u(Gl.$$.fragment),Ae=p(),vl=T("p"),vl.innerHTML=Ot,Ce=p(),u(Nl.$$.fragment),Be=p(),Yl=T("p"),Yl.innerHTML=Pt,$e=p(),u(Sl.$$.fragment),Ee=p(),zl=T("p"),zl.innerHTML=Kt,Qe=p(),Hl=T("p"),Hl.textContent=la,Re=p(),xl=T("p"),xl.textContent=sa,Xe=p(),Ll=T("p"),Ll.innerHTML=ea,We=p(),u(Dl.$$.fragment),Ve=p(),ql=T("p"),ql.innerHTML=ta,ke=p(),u(Ol.$$.fragment),Fe=p(),Pl=T("p"),Pl.innerHTML=aa,Ge=p(),u(W.$$.fragment),ve=p(),Kl=T("p"),Kl.innerHTML=na,Ne=p(),u(ls.$$.fragment),Ye=p(),u(ss.$$.fragment),Se=p(),es=T("p"),es.innerHTML=pa,ze=p(),u(V.$$.fragment),He=p(),ts=T("p"),ts.innerHTML=ra,xe=p(),u(as.$$.fragment),Le=p(),ns=T("p"),ns.textContent=Ma,De=p(),u(ps.$$.fragment),qe=p(),rs=T("p"),rs.innerHTML=ia,Oe=p(),Ms=T("p"),Ms.innerHTML=ca,Pe=p(),u(is.$$.fragment),Ke=p(),u(cs.$$.fragment),lt=p(),os=T("p"),os.innerHTML=oa,st=p(),u(k.$$.fragment),et=p(),ms=T("p"),ms.innerHTML=ma,tt=p(),u(F.$$.fragment),at=dt("\nيُعد أمر [`accelerate_launch`](https://huggingface.co/docs/accelerate/package_reference/cli#accelerate-launch) هو الطريقة المُوصى بها لتشغيل نص البرمجى للتدريب على نظام موزع باستخدام Accelerate و `Trainer` مع المعلمات المحددة في `config_file.yaml`. يتم حفظ هذا الملف في مجلد ذاكرة التخزين المؤقت لـ Accelerate ويتم تحميله تلقائيًا عند تشغيل `accelerate_launch`.\n"),Js=T("p"),Js.innerHTML=Ja,nt=p(),u(Ts.$$.fragment),pt=p(),ys=T("p"),ys.innerHTML=Ta,rt=p(),u(js.$$.fragment),Mt=p(),ds=T("p"),ds.innerHTML=ya,it=p(),u(Us.$$.fragment),ct=p(),gs=T("p"),this.h()},l(l){const s=va("svelte-u9bgzb",document.head);a=y(s,"META",{name:!0,content:!0}),s.forEach(t),M=r(l),e=y(l,"P",{}),_s(e).forEach(t),i=r(l),f(c.$$.fragment,l),o=r(l),I=y(l,"P",{"data-svelte-h":!0}),w(I)!=="svelte-14iyiqv"&&(I.innerHTML=b),U=r(l),f(_.$$.fragment,l),J=r(l),Z=y(l,"P",{"data-svelte-h":!0}),w(Z)!=="svelte-no3zxm"&&(Z.innerHTML=hs),G=r(l),f($.$$.fragment,l),v=r(l),E=y(l,"P",{"data-svelte-h":!0}),w(E)!=="svelte-1xsqg8s"&&(E.innerHTML=wt),Is=r(l),f(N.$$.fragment,l),Zs=r(l),Y=y(l,"P",{"data-svelte-h":!0}),w(Y)!=="svelte-pdczck"&&(Y.innerHTML=ut),As=r(l),S=y(l,"OL",{"data-svelte-h":!0}),w(S)!=="svelte-10mzfdj"&&(S.innerHTML=ft),Cs=r(l),z=y(l,"P",{"data-svelte-h":!0}),w(z)!=="svelte-171pl6s"&&(z.innerHTML=ht),Bs=r(l),H=y(l,"P",{"data-svelte-h":!0}),w(H)!=="svelte-12j2u0m"&&(H.innerHTML=gt),$s=r(l),f(x.$$.fragment,l),Es=r(l),L=y(l,"P",{"data-svelte-h":!0}),w(L)!=="svelte-18sid4g"&&(L.innerHTML=bt),Qs=r(l),D=y(l,"P",{"data-svelte-h":!0}),w(D)!=="svelte-qybcbe"&&(D.innerHTML=_t),Rs=r(l),f(q.$$.fragment,l),Xs=r(l),f(O.$$.fragment,l),Ws=r(l),P=y(l,"P",{"data-svelte-h":!0}),w(P)!=="svelte-nh5oaf"&&(P.innerHTML=It),Vs=r(l),f(K.$$.fragment,l),ks=r(l),ll=y(l,"P",{"data-svelte-h":!0}),w(ll)!=="svelte-167szwr"&&(ll.innerHTML=Zt),Fs=r(l),sl=y(l,"UL",{"data-svelte-h":!0}),w(sl)!=="svelte-uyilki"&&(sl.innerHTML=At),Gs=r(l),el=y(l,"P",{"data-svelte-h":!0}),w(el)!=="svelte-4apm6y"&&(el.innerHTML=Ct),vs=r(l),f(tl.$$.fragment,l),Ns=r(l),al=y(l,"P",{"data-svelte-h":!0}),w(al)!=="svelte-1e06zxl"&&(al.innerHTML=Bt),Ys=r(l),nl=y(l,"UL",{"data-svelte-h":!0}),w(nl)!=="svelte-1t533wh"&&(nl.innerHTML=$t),Ss=r(l),pl=y(l,"P",{"data-svelte-h":!0}),w(pl)!=="svelte-797kaq"&&(pl.innerHTML=Et),zs=r(l),f(rl.$$.fragment,l),Hs=r(l),f(Ml.$$.fragment,l),xs=r(l),il=y(l,"P",{"data-svelte-h":!0}),w(il)!=="svelte-116ge65"&&(il.innerHTML=Qt),Ls=r(l),cl=y(l,"P",{"data-svelte-h":!0}),w(cl)!=="svelte-wa37q1"&&(cl.textContent=Rt),Ds=r(l),f(ol.$$.fragment,l),qs=r(l),ml=y(l,"P",{"data-svelte-h":!0}),w(ml)!=="svelte-1fdtjtn"&&(ml.innerHTML=Xt),Os=r(l),f(Jl.$$.fragment,l),Ps=r(l),f(Tl.$$.fragment,l),Ks=r(l),f(Q.$$.fragment,l),le=r(l),yl=y(l,"P",{"data-svelte-h":!0}),w(yl)!=="svelte-o6vpts"&&(yl.innerHTML=Wt),se=r(l),jl=y(l,"P",{"data-svelte-h":!0}),w(jl)!=="svelte-p42eqr"&&(jl.innerHTML=Vt),ee=r(l),f(R.$$.fragment,l),te=r(l),dl=y(l,"P",{"data-svelte-h":!0}),w(dl)!=="svelte-zdeluv"&&(dl.textContent=kt),ae=r(l),f(Ul.$$.fragment,l),ne=r(l),wl=y(l,"P",{"data-svelte-h":!0}),w(wl)!=="svelte-16gzw8y"&&(wl.innerHTML=Ft),pe=r(l),f(X.$$.fragment,l),re=r(l),f(ul.$$.fragment,l),Me=r(l),fl=y(l,"P",{"data-svelte-h":!0}),w(fl)!=="svelte-1coy3bz"&&(fl.innerHTML=Gt),ie=r(l),f(hl.$$.fragment,l),ce=r(l),gl=y(l,"P",{"data-svelte-h":!0}),w(gl)!=="svelte-kvtbwc"&&(gl.textContent=vt),oe=r(l),f(bl.$$.fragment,l),me=r(l),_l=y(l,"P",{"data-svelte-h":!0}),w(_l)!=="svelte-1r5mxcs"&&(_l.innerHTML=Nt),Je=r(l),Il=y(l,"P",{"data-svelte-h":!0}),w(Il)!=="svelte-w2t9nu"&&(Il.innerHTML=Yt),Te=r(l),f(Zl.$$.fragment,l),ye=r(l),Al=y(l,"P",{"data-svelte-h":!0}),w(Al)!=="svelte-t9k6lk"&&(Al.innerHTML=St),je=r(l),f(Cl.$$.fragment,l),de=r(l),Bl=y(l,"P",{"data-svelte-h":!0}),w(Bl)!=="svelte-1lwq629"&&(Bl.innerHTML=zt),Ue=r(l),f($l.$$.fragment,l),we=r(l),El=y(l,"P",{"data-svelte-h":!0}),w(El)!=="svelte-1sspfev"&&(El.textContent=Ht),ue=r(l),f(Ql.$$.fragment,l),fe=r(l),Rl=y(l,"P",{"data-svelte-h":!0}),w(Rl)!=="svelte-1j6zw5h"&&(Rl.innerHTML=xt),he=r(l),Xl=y(l,"P",{"data-svelte-h":!0}),w(Xl)!=="svelte-15mdgrt"&&(Xl.textContent=Lt),ge=r(l),f(Wl.$$.fragment,l),be=r(l),f(Vl.$$.fragment,l),_e=r(l),kl=y(l,"P",{"data-svelte-h":!0}),w(kl)!=="svelte-tj8j25"&&(kl.textContent=Dt),Ie=r(l),Fl=y(l,"P",{"data-svelte-h":!0}),w(Fl)!=="svelte-1xej1bn"&&(Fl.textContent=qt),Ze=r(l),f(Gl.$$.fragment,l),Ae=r(l),vl=y(l,"P",{"data-svelte-h":!0}),w(vl)!=="svelte-u09oe2"&&(vl.innerHTML=Ot),Ce=r(l),f(Nl.$$.fragment,l),Be=r(l),Yl=y(l,"P",{"data-svelte-h":!0}),w(Yl)!=="svelte-1x5m9bj"&&(Yl.innerHTML=Pt),$e=r(l),f(Sl.$$.fragment,l),Ee=r(l),zl=y(l,"P",{"data-svelte-h":!0}),w(zl)!=="svelte-1xn7wid"&&(zl.innerHTML=Kt),Qe=r(l),Hl=y(l,"P",{"data-svelte-h":!0}),w(Hl)!=="svelte-k0kxza"&&(Hl.textContent=la),Re=r(l),xl=y(l,"P",{"data-svelte-h":!0}),w(xl)!=="svelte-1pb5q9o"&&(xl.textContent=sa),Xe=r(l),Ll=y(l,"P",{"data-svelte-h":!0}),w(Ll)!=="svelte-z4hp74"&&(Ll.innerHTML=ea),We=r(l),f(Dl.$$.fragment,l),Ve=r(l),ql=y(l,"P",{"data-svelte-h":!0}),w(ql)!=="svelte-1il98p9"&&(ql.innerHTML=ta),ke=r(l),f(Ol.$$.fragment,l),Fe=r(l),Pl=y(l,"P",{"data-svelte-h":!0}),w(Pl)!=="svelte-1bb4e8c"&&(Pl.innerHTML=aa),Ge=r(l),f(W.$$.fragment,l),ve=r(l),Kl=y(l,"P",{"data-svelte-h":!0}),w(Kl)!=="svelte-1moljm0"&&(Kl.innerHTML=na),Ne=r(l),f(ls.$$.fragment,l),Ye=r(l),f(ss.$$.fragment,l),Se=r(l),es=y(l,"P",{"data-svelte-h":!0}),w(es)!=="svelte-5rtdso"&&(es.innerHTML=pa),ze=r(l),f(V.$$.fragment,l),He=r(l),ts=y(l,"P",{"data-svelte-h":!0}),w(ts)!=="svelte-1rrz0cf"&&(ts.innerHTML=ra),xe=r(l),f(as.$$.fragment,l),Le=r(l),ns=y(l,"P",{"data-svelte-h":!0}),w(ns)!=="svelte-hle75h"&&(ns.textContent=Ma),De=r(l),f(ps.$$.fragment,l),qe=r(l),rs=y(l,"P",{"data-svelte-h":!0}),w(rs)!=="svelte-1um7iw2"&&(rs.innerHTML=ia),Oe=r(l),Ms=y(l,"P",{"data-svelte-h":!0}),w(Ms)!=="svelte-ozb8la"&&(Ms.innerHTML=ca),Pe=r(l),f(is.$$.fragment,l),Ke=r(l),f(cs.$$.fragment,l),lt=r(l),os=y(l,"P",{"data-svelte-h":!0}),w(os)!=="svelte-99251m"&&(os.innerHTML=oa),st=r(l),f(k.$$.fragment,l),et=r(l),ms=y(l,"P",{"data-svelte-h":!0}),w(ms)!=="svelte-16fh6iz"&&(ms.innerHTML=ma),tt=r(l),f(F.$$.fragment,l),at=Ut(l,"\nيُعد أمر [`accelerate_launch`](https://huggingface.co/docs/accelerate/package_reference/cli#accelerate-launch) هو الطريقة المُوصى بها لتشغيل نص البرمجى للتدريب على نظام موزع باستخدام Accelerate و `Trainer` مع المعلمات المحددة في `config_file.yaml`. يتم حفظ هذا الملف في مجلد ذاكرة التخزين المؤقت لـ Accelerate ويتم تحميله تلقائيًا عند تشغيل `accelerate_launch`.\n"),Js=y(l,"P",{"data-svelte-h":!0}),w(Js)!=="svelte-vtyq3o"&&(Js.innerHTML=Ja),nt=r(l),f(Ts.$$.fragment,l),pt=r(l),ys=y(l,"P",{"data-svelte-h":!0}),w(ys)!=="svelte-188bkml"&&(ys.innerHTML=Ta),rt=r(l),f(js.$$.fragment,l),Mt=r(l),ds=y(l,"P",{"data-svelte-h":!0}),w(ds)!=="svelte-1bw2ud"&&(ds.innerHTML=ya),it=r(l),f(Us.$$.fragment,l),ct=r(l),gs=y(l,"P",{}),_s(gs).forEach(t),this.h()},h(){fs(a,"name","hf:doc:metadata"),fs(a,"content",mn)},m(l,s){Jt(document.head,a),n(l,M,s),n(l,e,s),n(l,i,s),h(c,l,s),n(l,o,s),n(l,I,s),n(l,U,s),h(_,l,s),n(l,J,s),n(l,Z,s),n(l,G,s),h($,l,s),n(l,v,s),n(l,E,s),n(l,Is,s),h(N,l,s),n(l,Zs,s),n(l,Y,s),n(l,As,s),n(l,S,s),n(l,Cs,s),n(l,z,s),n(l,Bs,s),n(l,H,s),n(l,$s,s),h(x,l,s),n(l,Es,s),n(l,L,s),n(l,Qs,s),n(l,D,s),n(l,Rs,s),h(q,l,s),n(l,Xs,s),h(O,l,s),n(l,Ws,s),n(l,P,s),n(l,Vs,s),h(K,l,s),n(l,ks,s),n(l,ll,s),n(l,Fs,s),n(l,sl,s),n(l,Gs,s),n(l,el,s),n(l,vs,s),h(tl,l,s),n(l,Ns,s),n(l,al,s),n(l,Ys,s),n(l,nl,s),n(l,Ss,s),n(l,pl,s),n(l,zs,s),h(rl,l,s),n(l,Hs,s),h(Ml,l,s),n(l,xs,s),n(l,il,s),n(l,Ls,s),n(l,cl,s),n(l,Ds,s),h(ol,l,s),n(l,qs,s),n(l,ml,s),n(l,Os,s),h(Jl,l,s),n(l,Ps,s),h(Tl,l,s),n(l,Ks,s),h(Q,l,s),n(l,le,s),n(l,yl,s),n(l,se,s),n(l,jl,s),n(l,ee,s),h(R,l,s),n(l,te,s),n(l,dl,s),n(l,ae,s),h(Ul,l,s),n(l,ne,s),n(l,wl,s),n(l,pe,s),h(X,l,s),n(l,re,s),h(ul,l,s),n(l,Me,s),n(l,fl,s),n(l,ie,s),h(hl,l,s),n(l,ce,s),n(l,gl,s),n(l,oe,s),h(bl,l,s),n(l,me,s),n(l,_l,s),n(l,Je,s),n(l,Il,s),n(l,Te,s),h(Zl,l,s),n(l,ye,s),n(l,Al,s),n(l,je,s),h(Cl,l,s),n(l,de,s),n(l,Bl,s),n(l,Ue,s),h($l,l,s),n(l,we,s),n(l,El,s),n(l,ue,s),h(Ql,l,s),n(l,fe,s),n(l,Rl,s),n(l,he,s),n(l,Xl,s),n(l,ge,s),h(Wl,l,s),n(l,be,s),h(Vl,l,s),n(l,_e,s),n(l,kl,s),n(l,Ie,s),n(l,Fl,s),n(l,Ze,s),h(Gl,l,s),n(l,Ae,s),n(l,vl,s),n(l,Ce,s),h(Nl,l,s),n(l,Be,s),n(l,Yl,s),n(l,$e,s),h(Sl,l,s),n(l,Ee,s),n(l,zl,s),n(l,Qe,s),n(l,Hl,s),n(l,Re,s),n(l,xl,s),n(l,Xe,s),n(l,Ll,s),n(l,We,s),h(Dl,l,s),n(l,Ve,s),n(l,ql,s),n(l,ke,s),h(Ol,l,s),n(l,Fe,s),n(l,Pl,s),n(l,Ge,s),h(W,l,s),n(l,ve,s),n(l,Kl,s),n(l,Ne,s),h(ls,l,s),n(l,Ye,s),h(ss,l,s),n(l,Se,s),n(l,es,s),n(l,ze,s),h(V,l,s),n(l,He,s),n(l,ts,s),n(l,xe,s),h(as,l,s),n(l,Le,s),n(l,ns,s),n(l,De,s),h(ps,l,s),n(l,qe,s),n(l,rs,s),n(l,Oe,s),n(l,Ms,s),n(l,Pe,s),h(is,l,s),n(l,Ke,s),h(cs,l,s),n(l,lt,s),n(l,os,s),n(l,st,s),h(k,l,s),n(l,et,s),n(l,ms,s),n(l,tt,s),h(F,l,s),n(l,at,s),n(l,Js,s),n(l,nt,s),h(Ts,l,s),n(l,pt,s),n(l,ys,s),n(l,rt,s),h(js,l,s),n(l,Mt,s),n(l,ds,s),n(l,it,s),h(Us,l,s),n(l,ct,s),n(l,gs,s),ot=!0},p(l,[s]){const ja={};s&2&&(ja.$$scope={dirty:s,ctx:l}),_.$set(ja);const da={};s&2&&(da.$$scope={dirty:s,ctx:l}),Q.$set(da);const Ua={};s&2&&(Ua.$$scope={dirty:s,ctx:l}),R.$set(Ua);const wa={};s&2&&(wa.$$scope={dirty:s,ctx:l}),X.$set(wa);const ua={};s&2&&(ua.$$scope={dirty:s,ctx:l}),W.$set(ua);const fa={};s&2&&(fa.$$scope={dirty:s,ctx:l}),V.$set(fa);const ha={};s&2&&(ha.$$scope={dirty:s,ctx:l}),k.$set(ha);const ga={};s&2&&(ga.$$scope={dirty:s,ctx:l}),F.$set(ga)},i(l){ot||(j(c.$$.fragment,l),j(_.$$.fragment,l),j($.$$.fragment,l),j(N.$$.fragment,l),j(x.$$.fragment,l),j(q.$$.fragment,l),j(O.$$.fragment,l),j(K.$$.fragment,l),j(tl.$$.fragment,l),j(rl.$$.fragment,l),j(Ml.$$.fragment,l),j(ol.$$.fragment,l),j(Jl.$$.fragment,l),j(Tl.$$.fragment,l),j(Q.$$.fragment,l),j(R.$$.fragment,l),j(Ul.$$.fragment,l),j(X.$$.fragment,l),j(ul.$$.fragment,l),j(hl.$$.fragment,l),j(bl.$$.fragment,l),j(Zl.$$.fragment,l),j(Cl.$$.fragment,l),j($l.$$.fragment,l),j(Ql.$$.fragment,l),j(Wl.$$.fragment,l),j(Vl.$$.fragment,l),j(Gl.$$.fragment,l),j(Nl.$$.fragment,l),j(Sl.$$.fragment,l),j(Dl.$$.fragment,l),j(Ol.$$.fragment,l),j(W.$$.fragment,l),j(ls.$$.fragment,l),j(ss.$$.fragment,l),j(V.$$.fragment,l),j(as.$$.fragment,l),j(ps.$$.fragment,l),j(is.$$.fragment,l),j(cs.$$.fragment,l),j(k.$$.fragment,l),j(F.$$.fragment,l),j(Ts.$$.fragment,l),j(js.$$.fragment,l),j(Us.$$.fragment,l),ot=!0)},o(l){d(c.$$.fragment,l),d(_.$$.fragment,l),d($.$$.fragment,l),d(N.$$.fragment,l),d(x.$$.fragment,l),d(q.$$.fragment,l),d(O.$$.fragment,l),d(K.$$.fragment,l),d(tl.$$.fragment,l),d(rl.$$.fragment,l),d(Ml.$$.fragment,l),d(ol.$$.fragment,l),d(Jl.$$.fragment,l),d(Tl.$$.fragment,l),d(Q.$$.fragment,l),d(R.$$.fragment,l),d(Ul.$$.fragment,l),d(X.$$.fragment,l),d(ul.$$.fragment,l),d(hl.$$.fragment,l),d(bl.$$.fragment,l),d(Zl.$$.fragment,l),d(Cl.$$.fragment,l),d($l.$$.fragment,l),d(Ql.$$.fragment,l),d(Wl.$$.fragment,l),d(Vl.$$.fragment,l),d(Gl.$$.fragment,l),d(Nl.$$.fragment,l),d(Sl.$$.fragment,l),d(Dl.$$.fragment,l),d(Ol.$$.fragment,l),d(W.$$.fragment,l),d(ls.$$.fragment,l),d(ss.$$.fragment,l),d(V.$$.fragment,l),d(as.$$.fragment,l),d(ps.$$.fragment,l),d(is.$$.fragment,l),d(cs.$$.fragment,l),d(k.$$.fragment,l),d(F.$$.fragment,l),d(Ts.$$.fragment,l),d(js.$$.fragment,l),d(Us.$$.fragment,l),ot=!1},d(l){l&&(t(M),t(e),t(i),t(o),t(I),t(U),t(J),t(Z),t(G),t(v),t(E),t(Is),t(Zs),t(Y),t(As),t(S),t(Cs),t(z),t(Bs),t(H),t($s),t(Es),t(L),t(Qs),t(D),t(Rs),t(Xs),t(Ws),t(P),t(Vs),t(ks),t(ll),t(Fs),t(sl),t(Gs),t(el),t(vs),t(Ns),t(al),t(Ys),t(nl),t(Ss),t(pl),t(zs),t(Hs),t(xs),t(il),t(Ls),t(cl),t(Ds),t(qs),t(ml),t(Os),t(Ps),t(Ks),t(le),t(yl),t(se),t(jl),t(ee),t(te),t(dl),t(ae),t(ne),t(wl),t(pe),t(re),t(Me),t(fl),t(ie),t(ce),t(gl),t(oe),t(me),t(_l),t(Je),t(Il),t(Te),t(ye),t(Al),t(je),t(de),t(Bl),t(Ue),t(we),t(El),t(ue),t(fe),t(Rl),t(he),t(Xl),t(ge),t(be),t(_e),t(kl),t(Ie),t(Fl),t(Ze),t(Ae),t(vl),t(Ce),t(Be),t(Yl),t($e),t(Ee),t(zl),t(Qe),t(Hl),t(Re),t(xl),t(Xe),t(Ll),t(We),t(Ve),t(ql),t(ke),t(Fe),t(Pl),t(Ge),t(ve),t(Kl),t(Ne),t(Ye),t(Se),t(es),t(ze),t(He),t(ts),t(xe),t(Le),t(ns),t(De),t(qe),t(rs),t(Oe),t(Ms),t(Pe),t(Ke),t(lt),t(os),t(st),t(et),t(ms),t(tt),t(at),t(Js),t(nt),t(pt),t(ys),t(rt),t(Mt),t(ds),t(it),t(ct),t(gs)),t(a),g(c,l),g(_,l),g($,l),g(N,l),g(x,l),g(q,l),g(O,l),g(K,l),g(tl,l),g(rl,l),g(Ml,l),g(ol,l),g(Jl,l),g(Tl,l),g(Q,l),g(R,l),g(Ul,l),g(X,l),g(ul,l),g(hl,l),g(bl,l),g(Zl,l),g(Cl,l),g($l,l),g(Ql,l),g(Wl,l),g(Vl,l),g(Gl,l),g(Nl,l),g(Sl,l),g(Dl,l),g(Ol,l),g(W,l),g(ls,l),g(ss,l),g(V,l),g(as,l),g(ps,l),g(is,l),g(cs,l),g(k,l),g(F,l),g(Ts,l),g(js,l),g(Us,l)}}}const mn='{"title":"Trainer","local":"trainer","sections":[{"title":"الاستخدام الأساسي","local":"الاستخدام-الأساسي","sections":[{"title":"نقاط الحفظ","local":"نقاط-الحفظ","sections":[],"depth":3}],"depth":2},{"title":"تخصيص المدرب","local":"تخصيص-المدرب","sections":[{"title":"دوال الاستدعاء Callbacks","local":"دوال-الاستدعاء-callbacks","sections":[],"depth":3}],"depth":2},{"title":"تسجيل الأحداث (Logging)","local":"تسجيل-الأحداث-logging","sections":[],"depth":2},{"title":"NEFTune","local":"neftune","sections":[],"depth":2},{"title":"نواة Liger","local":"نواة-liger","sections":[],"depth":2},{"title":"المُحسِّنات","local":"المحسنات","sections":[{"title":"GaLore","local":"galore","sections":[],"depth":3},{"title":"محسنات LOMO","local":"محسنات-lomo","sections":[],"depth":3},{"title":"مُحسِّن GrokAdamW","local":"محسن-grokadamw","sections":[],"depth":3},{"title":"مُحسِّن بدون جدوله (Schedule Free Optimizer)","local":"محسن-بدون-جدوله-schedule-free-optimizer","sections":[],"depth":3}],"depth":2},{"title":"تسريع ومدرب","local":"تسريع-ومدرب","sections":[],"depth":2}],"depth":1}';function Jn(m){return Xa(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fn extends yt{constructor(a){super(),jt(this,a,Jn,on,Tt,{})}}export{fn as component}; | |
Xet Storage Details
- Size:
- 105 kB
- Xet hash:
- e43e541576f0921f9624289b1c833f13ceb7911ddc084da52f305e9a406decc8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.