Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"تحميل النماذج","local":"loading-models","sections":[{"title":"النماذج والإعدادات","local":"models-and-configurations","sections":[],"depth":2},{"title":"فئات النماذج","local":"model-classes","sections":[],"depth":2},{"title":"النماذج الكبيرة","local":"large-models","sections":[{"title":"نقاط التفتيش المجزأة","local":"sharded-checkpoints","sections":[],"depth":3},{"title":"استدلال النماذج الكبيرة","local":"big-model-inference","sections":[],"depth":3},{"title":"تفريغ البيانات على القرص","local":"disk-offloading","sections":[],"depth":3},{"title":"نوع بيانات النموذج","local":"model-data-type","sections":[],"depth":3}],"depth":2},{"title":"نماذج مخصصة","local":"custom-models","sections":[],"depth":2}],"depth":1}"/> | |
| <link href="/docs/transformers/main/en/_app/immutable/entry/start.ByZEd4qm.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DHdg-_0Z.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/CBySwR1V.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/entry/app.CQqZS61p.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/Cdb1BouH.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/dUGfULTE.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DOLBYqcr.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/nodes/0.CEy2b_T8.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/Conj1S5Z.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/nodes/670.DyldRV8D.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DoQ7MZQh.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DnCf4Kx5.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/uQdIcFiG.js" rel="modulepreload"> | |
| <!--18pldtr--><meta name="hf:doc:metadata" content="{"title":"Loading models","local":"loading-models","sections":[{"title":"Models and configurations","local":"models-and-configurations","sections":[],"depth":2},{"title":"Model classes","local":"model-classes","sections":[],"depth":2},{"title":"Large models","local":"large-models","sections":[{"title":"Sharded checkpoints","local":"sharded-checkpoints","sections":[],"depth":3},{"title":"Big Model Inference","local":"big-model-inference","sections":[],"depth":3},{"title":"Disk offloading","local":"disk-offloading","sections":[],"depth":3},{"title":"Model data type","local":"model-data-type","sections":[],"depth":3}],"depth":2},{"title":"Custom models","local":"custom-models","sections":[],"depth":2}],"depth":1}"/><!----> | |
| <link href="/docs/transformers/main/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="loading-models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#loading-models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->تحميل النماذج<!----></span></h1><!--]--><!----> <p>توفر مكتبة Transformers العديد من النماذج المُسبقة التدريب الجاهزة للاستخدام بسطر واحد من الكود. ويتطلب الأمر فئة نموذج وطريقة <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a>.</p> <p>استدعِ <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> لتنزيل أوزان النموذج وإعداداته وتحميلها المخزنة على <a href="https://hf.co/models" rel="nofollow">Hub</a> في Hugging Face.</p> <blockquote class="tip"><p>The <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> method loads weights stored in the <a href="https://hf.co/docs/safetensors/index" rel="nofollow">safetensors</a> file format if they’re available. Traditionally, PyTorch model weights are serialized with the <a href="https://docs.python.org/3/library/pickle.html" rel="nofollow">pickle</a> utility which is known to be insecure. Safetensor files are more secure and faster to load.</p></blockquote> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>, device_map=<span class="hljs-string">"auto"</span>)<!----></pre></div><!----> <p>يشرح هذا الدليل كيفية تحميل النماذج، والطرق المختلفة التي يمكنك من خلالها تحميل نموذج، وكيفية التغلب على مشاكل الذاكرة للنماذج الكبيرة جداً، وكيفية تحميل نماذج مخصصة.</p> <!--[1--><h2 class="relative group"><a id="models-and-configurations" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#models-and-configurations"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->النماذج والإعدادات<!----></span></h2><!--]--><!----> <p>تحتوي جميع النماذج على ملف <code>configuration.py</code> يضم سمات محددة مثل عدد الطبقات المخفية، وحجم المفردات، ودالة التنشيط، وغيرها. كما ستجد ملف <code>modeling.py</code> الذي يعرّف الطبقات والعمليات الرياضية التي تتم داخل كل طبقة. يستقبل ملف <code>modeling.py</code> سمات النموذج من <code>configuration.py</code> ويبني النموذج بناءً عليها. في هذه المرحلة، يكون لديك نموذج بأوزان عشوائية يحتاج إلى تدريب لإنتاج نتائج ذات معنى.</p> <blockquote class="tip"><p>يشير مصطلح <em>البنية</em> إلى هيكل النموذج، بينما يشير مصطلح <em>نقطة التفتيش</em> إلى أوزان النموذج لبنية محددة. على سبيل المثال، <a href="./model_doc/bert">BERT</a> هي بنية، بينما <a href="https://huggingface.co/google-bert/bert-base-uncased" rel="nofollow">google-bert/bert-base-uncased</a> هي نقطة تفتيش. ستجد أن مصطلح <em>النموذج</em> يُستخدم بالتبادل مع مصطلحي البنية ونقطة التفتيش.</p></blockquote> <p>هناك نوعان عامّان من النماذج التي يمكنك تحميلها:</p> <ol><li>نموذج أساسي، مثل <a href="/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel">AutoModel</a> أو <a href="/docs/transformers/main/ar/model_doc/llama2#transformers.LlamaModel">LlamaModel</a>، يُخرج حالات مخفية.</li> <li>نموذج مرفق برأس <em>head</em> محدد، مثل <a href="/docs/transformers/main/ar/model_doc/auto#transformers.AutoModelForCausalLM">AutoModelForCausalLM</a> أو <a href="/docs/transformers/main/ar/model_doc/llama2#transformers.LlamaForCausalLM">LlamaForCausalLM</a>، لأداء مهام محددة.</li></ol> <!--[1--><h2 class="relative group"><a id="model-classes" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#model-classes"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->فئات النماذج<!----></span></h2><!--]--><!----> <p>لحصول على نموذج مُدرَّب مسبقًا، يجب عليك تحميل الأوزان إلى النموذج. يتم ذلك عن طريق استدعاء <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> الذي يقبل الأوزان من Hugging Face Hub أو من مجلد محلي.</p> <p>توجد فئتان من النماذج، فئة <a href="./model_doc/auto">AutoModel</a> وفئة محددة لنموذج معين.</p> <div class="flex space-x-2 items-center my-1.5 mr-8 h-7 !pl-0 -mx-3 md:mx-0"><!--[--><div class="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd border-gray-800 bg-black dark:bg-gray-700 text-white">AutoModel</div><div class="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm">فئة محددة للنموذج</div><!--]--></div> <div class="language-select"><div><iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/AhChOFRegn4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!----> <p>تُعد فئة <a href="./model_doc/auto">AutoModel</a> طريقة مريحة لتحميل بنية نموذج دون الحاجة إلى معرفة اسم فئة النموذج الدقيقة، نظراً لتوفر العديد من النماذج. حيث تختار الفئة تلقائياً فئة النموذج الصحيحة بناءً على ملف الإعداد. كل ما عليك فعله هو معرفة المهمة ونقطة التفتيش (checkpoint) التي ترغب في استخدامها.</p> <p>يمكنك التبديل بسهولة بين النماذج أو المهام، طالما أن البنية مدعومة للمهمة المعينة.</p> <p>على سبيل المثال، يمكن استخدام النموذج نفسه لمهام منفصلة.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM, AutoModelForSequenceClassification, AutoModelForQuestionAnswering | |
| <span class="hljs-comment"># use the same API for 3 different tasks</span> | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>) | |
| model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>) | |
| model = AutoModelForQuestionAnswering.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>)<!----></pre></div><!----> <p>في حالات أخرى، قد ترغب في تجربة عدة نماذج مختلفة بسرعة لمهمة معينة.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM | |
| <span class="hljs-comment"># use the same API to load 3 different models</span> | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>) | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"mistralai/Mistral-7B-v0.1"</span>) | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"google/gemma-7b"</span>)<!----></pre></div><!----><!----></div><!----> <div hidden=""><p>تقوم فئة <a href="./model_doc/auto">AutoModel</a> على فئات محددة لكل نموذج. حيث تُربط جميع فئات النماذج التي تدعم مهمة معينة بفئة المهمة المقابلة لها <code>AutoModelFor</code>.</p> <p>إذا كنت تعرف بالفعل فئة النموذج التي تريد استخدامها، فيمكنك استخدام فئة النموذج الخاصة به مباشرةً.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> LlamaModel, LlamaForCausalLM | |
| model = LlamaForCausalLM.from_pretrained(<span class="hljs-string">"meta-llama/Llama-2-7b-hf"</span>)<!----></pre></div><!----><!----></div><!----><!----></div><!----> <!--[1--><h2 class="relative group"><a id="large-models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#large-models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->النماذج الكبيرة<!----></span></h2><!--]--><!----> <p>تتطلب النماذج المُسبقة التدريب الكبيرة قدرًا كبيرًا من الذاكرة لتحميلها. ويتضمن عملية التحميل ما يلي:</p> <ol><li>إنشاء نموذج بأوزان عشوائية</li> <li>تحميل الأوزان المُسبقة التدريب</li> <li>وضع الأوزان المُسبقة التدريب على النموذج</li></ol> <p>تحتاج إلى ذاكرة كافية لاستيعاب نسختين من أوزان النموذج (عشوائية ومُدرَّبة مسبقًا)، وقد لا يكون ذلك ممكنًا اعتمادًا على عتادك. في بيئات التدريب الموزَّع، يصبح الأمر أكثر تحديًا لأن كل عملية تُحمِّل نموذجًا مُدرَّبًا مسبقًا.</p> <p>تقلل مكتبة Transformers بعض التحديات المتعلقة بالذاكرة من خلال التهيئة السريعة، ونقاط التفتيش المجزأة، وميزة <a href="https://hf.co/docs/accelerate/usage_guides/big_modeling" rel="nofollow">Big Model Inference</a> في Accelerate، ودعم أنواع بيانات ذات عدد بتات أقل.</p> <!--[2--><h3 class="relative group"><a id="sharded-checkpoints" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#sharded-checkpoints"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->نقاط التفتيش المجزأة<!----></span></h3><!--]--><!----> <p>يقوم <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained">save_pretrained()</a> تلقائيًا بتقسيم نقاط التفتيش التي يتجاوز حجمها 50 غيغابايت. وهذا يُبقي عدد الأجزاء منخفضًا للنماذج الكبيرة ويُبسّط إدارة الملفات.</p> <p>تُحمَّل المعاملات بالتوازي، ويعتمد الذروة في الذاكرة فقط على حجم النموذج. استخدم <code>max_shard_size</code> في <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained">save_pretrained()</a> لضبط الحد الأقصى لحجم نقطة التفتيش قبل التقسيم.</p> <blockquote class="note"><p>يعتمد استهلاك الذاكرة للنماذج التي تتطلب تحويلًا ديناميكيًا للأوزان على حجم النموذج وحجم أكبر المعاملات في عملية تحويل واحدة. وينطبق هذا عادةً على نماذج خليط الخبراء (MoE)، حيث يكون استهلاك الذاكرة مساويًا لحجم النموذج مضافًا إليه عدد الخبراء في طبقة واحدة. راجع دليل <a href="./weightconverter#fast-and-efficient-model-loading">dynamic weight loader</a> لمعرفة المزيد حول كيفية تحميل النماذج.</p></blockquote> <p>يُنشئ <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained">save_pretrained()</a> أيضاً ملف فهرسة يربط أسماء المعاملات بملفات الأجزاء الخاصة بها. يحتوي الفهرس على مفتاحين، هما <code>metadata</code> و<code>weight_map</code>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">import</span> json | |
| <span class="hljs-keyword">import</span> os | |
| <span class="hljs-keyword">import</span> tempfile | |
| <span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir: | |
| model.save_pretrained(tmp_dir, max_shard_size=<span class="hljs-string">"50GB"</span>) | |
| <span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(os.path.join(tmp_dir, <span class="hljs-string">"model.safetensors.index.json"</span>), <span class="hljs-string">"r"</span>) <span class="hljs-keyword">as</span> f: | |
| index = json.load(f) | |
| <span class="hljs-built_in">print</span>(index.keys())<!----></pre></div><!----> <p><code>metadata</code> يخزّن حجم النموذج الكلي.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->index[<span class="hljs-string">"metadata"</span>] | |
| {<span class="hljs-string">'total_size'</span>: <span class="hljs-number">28966928384</span>}<!----></pre></div><!----> <p><code>weight_map</code> يربط كل معامل بملف شرايته الخاص.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->index[<span class="hljs-string">"weight_map"</span>] | |
| {<span class="hljs-string">'lm_head.weight'</span>: <span class="hljs-string">'model-00006-of-00006.safetensors'</span>, | |
| <span class="hljs-string">'model.embed_tokens.weight'</span>: <span class="hljs-string">'model-00001-of-00006.safetensors'</span>, | |
| <span class="hljs-string">'model.layers.0.input_layernorm.weight'</span>: <span class="hljs-string">'model-00001-of-00006.safetensors'</span>, | |
| <span class="hljs-string">'model.layers.0.mlp.down_proj.weight'</span>: <span class="hljs-string">'model-00001-of-00006.safetensors'</span>, | |
| ... | |
| }<!----></pre></div><!----> <!--[2--><h3 class="relative group"><a id="big-model-inference" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#big-model-inference"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->استدلال النماذج الكبيرة<!----></span></h3><!--]--><!----> <blockquote class="tip"><p>تأكد من تثبيت Accelerate v0.9.0 وPyTorch v1.9.0 أو إصدار أحدث لاستخدام هذه الميزة!</p></blockquote> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/MWCSGj9jEAo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!----> <p><a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> is supercharged with Accelerate’s <a href="https://hf.co/docs/accelerate/usage_guides/big_modeling" rel="nofollow">Big Model Inference</a> feature.</p> <p>ينشئ Big Model Inference <em>هيكلًا للنموذج</em> على جهاز <a href="https://pytorch.org/docs/main/meta.html" rel="nofollow">meta</a> في PyTorch. لا يخزّن جهاز meta أي بيانات حقيقية، بل يخزّن البيانات الوصفية فقط.</p> <p>تُنشأ الأوزان المُهيّأة عشوائياً فقط عند تحميل الأوزان المُسبقة التدريب، وذلك لتجنّب الاحتفاظ بنسختين من النموذج في الذاكرة في الوقت نفسه. أقصى استهلاك للذاكرة هو حجم النموذج فقط.</p> <blockquote class="tip"><p>تعرّف على المزيد حول توزيع الأجهزة في <a href="https://hf.co/docs/accelerate/v0.33.0/en/concept_guides/big_model_inference#designing-a-device-map" rel="nofollow">تصميم خريطة الأجهزة</a>.</p></blockquote> <p>يتعلق الميزة الثانية في Big Model Inference بطريقة تحميل الأوزان وتوزيعها في هيكل النموذج. يتم توزيع أوزان النموذج عبر جميع الأجهزة المتاحة، بدءًا من أسرع جهاز (وهو عادةً GPU)، ثم يتم نقل الأوزان المتبقية إلى أجهزة أبطأ (CPU وقرص التخزين الصلب).</p> <p>يُقلّل الجمع بين الميزتين من استهلاك الذاكرة وأوقات التحميل للنماذج المُسبقة التدريب الكبيرة.</p> <p>اضبط <a href="https://github.com/huggingface/transformers/blob/026a173a64372e9602a16523b8fae9de4b0ff428/src/transformers/modeling_utils.py#L3061" rel="nofollow">device_map</a> على <code>"auto"</code> لتفعيل Big Model Inference.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"google/gemma-7b"</span>, device_map=<span class="hljs-string">"auto"</span>)<!----></pre></div><!----> <p>يمكنك أيضًا تعيين الطبقات يدويًا إلى جهاز في <code>device_map</code>. يجب أن يُخضع جميع معاملات النموذج إلى جهاز، لكنك لا تحتاج إلى تحديد مكان وجود جميع الوحدات الفرعية لطبقة ما إذا كانت الطبقة بأكملها على نفس الجهاز.</p> <p>الوصول إلى خاصية <code>hf_device_map</code> لمعرفة كيفية توزيع النموذج على الأجهزة.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->device_map = {<span class="hljs-string">"model.layers.1"</span>: <span class="hljs-number">0</span>, <span class="hljs-string">"model.layers.14"</span>: <span class="hljs-number">1</span>, <span class="hljs-string">"model.layers.31"</span>: <span class="hljs-string">"cpu"</span>, <span class="hljs-string">"lm_head"</span>: <span class="hljs-string">"disk"</span>} | |
| model.hf_device_map<!----></pre></div><!----> <!--[2--><h3 class="relative group"><a id="disk-offloading" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#disk-offloading"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->تفريغ البيانات على القرص<!----></span></h3><!--]--><!----> <p>عندما يكون حجم النموذج أكبر من إجمالي ذاكرة وحدات معالجة الرسوميات (GPUs) وذاكرة الوصول العشوائي (CPU RAM)، يقوم Big Model Inference بتفريغ الأوزان المتبقية إلى القرص. اضبط <code>offload_folder</code> على مجلد ما، في حال كان أي من الأوزان يُعيَّن إلى <code>"disk"</code>، لأن ذلك هو المكان الذي يخزّن فيه Transformers الأوزان المُفرَّغة.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM | |
| model = AutoModelForCausalLM.from_pretrained( | |
| <span class="hljs-string">"google/gemma-7b"</span>, | |
| device_map=<span class="hljs-string">"auto"</span>, | |
| offload_folder=<span class="hljs-string">"./offload"</span>, | |
| )<!----></pre></div><!----> <p>استخدم <code>max_memory</code> لتحديد الحد الأقصى لكمية البيانات التي يحتفظ بها كل جهاز. يملأ Transformers الأجهزة حسب ترتيب سرعتها، وينقل ما لا يتسع إلى القرص. يحدد المثال أدناه حدًا لجهاز GPU بمقدار 10GB وحدًا لجهاز CPU بمقدار 30GB، بحيث تُحفظ الأوزان المتبقية في <code>offload_folder</code>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->model = AutoModelForCausalLM.from_pretrained( | |
| <span class="hljs-string">"google/gemma-7b"</span>, | |
| device_map=<span class="hljs-string">"auto"</span>, | |
| max_memory={<span class="hljs-number">0</span>: <span class="hljs-string">"10GB"</span>, <span class="hljs-string">"cpu"</span>: <span class="hljs-string">"30GB"</span>}, | |
| offload_folder=<span class="hljs-string">"./offload"</span>, | |
| )<!----></pre></div><!----> <p>اضبط <code>max_memory={}</code> لتحديد عدم توفر ذاكرة وحدة معالجة الرسوميات أو المعالج، ولإجبار نقل النموذج بالكامل إلى القرص.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->model = AutoModelForCausalLM.from_pretrained( | |
| <span class="hljs-string">"google/gemma-7b"</span>, | |
| device_map=<span class="hljs-string">"auto"</span>, | |
| max_memory={}, | |
| offload_folder=<span class="hljs-string">"./offload"</span>, | |
| )<!----></pre></div><!----> <blockquote class="note"><p>يعتمد تفريغ القرص على استبدال الذاكرة بالسرعة. فقراءة الأوزان من القرص في كل تمريرة أمامية أبطأ من قراءتها من ذاكرة المعالج المركزي أو ذاكرة وحدة معالجة الرسوميات. | |
| يتطلب التفريغ الكامل إلى القرص <code>accelerate>1.14.0</code></p></blockquote> <!--[2--><h3 class="relative group"><a id="model-data-type" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#model-data-type"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->نوع بيانات النموذج<!----></span></h3><!--]--><!----> <p>يتحكم معامل <code>dtype</code> في <a href="https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype" rel="nofollow">dtype</a> الخاص بـ PyTorch المستخدم لتوليد أوزان النموذج. افتراضيًا، يحمّل Transformers الأوزان باستخدام قيمة <code>dtype</code> أو القيمة القديمة <code>torch_dtype</code> من <code>config.json</code>. إذا لم تتضمن <code>config.json</code> أيًا من هاتين القيمتين، يستخدم Transformers نوع dtype لأول وزن من نوع الفاصلة العائمة في نقطة التفتيش.</p> <p>تجاوز الإعداد الافتراضي عن طريق تمرير dtype محدد.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM | |
| <span class="hljs-comment"># specific dtype</span> | |
| model = AutoModelForCausalLM.from_pretrained(<span class="hljs-string">"google/gemma-3-1b-it"</span>, dtype=torch.float16)<!----></pre></div><!----> <p>يقبل <a href="/docs/transformers/main/ar/model_doc/auto#transformers.AutoConfig">AutoConfig</a> أيضًا <code>dtype</code> للنماذج التي يتم إنشاؤها من الصفر.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoConfig, AutoModel | |
| my_config = AutoConfig.from_pretrained(<span class="hljs-string">"google/gemma-2b"</span>, dtype=torch.float16) | |
| model = AutoModel.from_config(my_config)<!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="custom-models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#custom-models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->نماذج مخصصة<!----></span></h2><!--]--><!----> <p>تُبنى النماذج المخصصة على فئات التهيئة والنمذجة في Transformers، وتدعم واجهة <code>AutoClass</code>، وتُحمَّل باستخدام <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a>. والفرق هو أن كود النمذجة <em>ليس</em> من Transformers.</p> <p>توخَّ الحذر الشديد عند تحميل نموذج مخصص. على الرغم من أن <a href="https://hf.co/docs/hub/security-malware#malware-scanning" rel="nofollow">المسح بحثًا عن البرمجيات الخبيثة</a> مفعّل لكل مستودع في Hub، إلا أنه يجب عليك أن تكون حريصًا لتجنب تنفيذ أكواد خبيثة عن غير قصد.</p> <p>اضبط <code>trust_remote_code=True</code> في <a href="/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> لتحميل نموذج مخصص.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForImageClassification | |
| model = AutoModelForImageClassification.from_pretrained(<span class="hljs-string">"sgugger/custom-resnet50d"</span>, trust_remote_code=<span class="hljs-literal">True</span>)<!----></pre></div><!----> <p>كمستوى إضافي من الأمان، حمّل نموذجًا مخصصًا من نسخة محددة لتجنب تحميل كود النموذج الذي قد يكون قد تغيّر. يمكن نسخ تجزئة الالتزام (commit hash) من <a href="https://hf.co/sgugger/custom-resnet50d/commits/main" rel="nofollow">سجل الالتزامات</a> الخاصة بالنماذج.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-py "><!---->commit_hash = <span class="hljs-string">"ed94a7c6247d8aedce4647f00f20de6875b5b292"</span> | |
| model = AutoModelForImageClassification.from_pretrained( | |
| <span class="hljs-string">"sgugger/custom-resnet50d"</span>, trust_remote_code=<span class="hljs-literal">True</span>, revision=commit_hash | |
| )<!----></pre></div><!----> <p>راجع دليل <a href="./custom_models">تخصيص النماذج</a> لمزيد من المعلومات.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/transformers/blob/main/docs/source/en/models.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> | |
| <script> | |
| { | |
| __sveltekit_1y3v6y9 = { | |
| base: "/docs/transformers/main/en", | |
| assets: "/docs/transformers/main/en" | |
| }; | |
| const element = document.currentScript.parentElement; | |
| Promise.all([ | |
| import("/docs/transformers/main/en/_app/immutable/entry/start.ByZEd4qm.js"), | |
| import("/docs/transformers/main/en/_app/immutable/entry/app.CQqZS61p.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 670], | |
| data: [null,null], | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 60.7 kB
- Xet hash:
- fe091521c0ddd0bca8ef36691b1133eb8c66d3d1171ac71180a740c280dfef98
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.