Buckets:
| import{s as xt,o as Gt,n as Wt}from"../chunks/scheduler.5eb9d175.js";import{S as Rt,i as Vt,g as o,s,r as i,A as Nt,h as p,f as l,c as a,j as St,u as m,x as r,k as kt,y as Qt,a as n,v as c,d,t as h,w as M}from"../chunks/index.fcdcb606.js";import{T as Xt}from"../chunks/Tip.9272e506.js";import{C as ce}from"../chunks/CodeBlock.a7036e06.js";import{H as y,E as Et}from"../chunks/EditOnGithub.98bf070f.js";function zt(he){let f,b="هذه هي بداية تجاربنا مع TorchScript ولا زلنا نستكشف قدراته مع نماذج المدخلات المتغيرة الحجم. إنه مجال اهتمامنا وسنعمق تحليلنا في الإصدارات القادمة، مع المزيد من الأمثلة البرمجية، وتنفيذ أكثر مرونة، ومقاييس مقارنة بين الأكواد القائمة على Python مع أكواد TorchScript المُجمّعة.";return{c(){f=o("p"),f.textContent=b},l(u){f=p(u,"P",{"data-svelte-h":!0}),r(f)!=="svelte-om30qn"&&(f.textContent=b)},m(u,me){n(u,f,me)},p:Wt,d(u){u&&l(f)}}}function Lt(he){let f,b,u,me,w,Me,T,fe,J,ot='وفقًا لـ <a href="https://pytorch.org/docs/stable/jit.html" rel="nofollow">وثائق TorchScript</a>:',ue,$,pt="<p>TorchScript هي طريقة لإنشاء نماذج قابلة للتسلسل والتحسين من تعليمات PyTorch البرمجية.</p>",ye,U,rt='هناك وحدتان من PyTorch، <a href="https://pytorch.org/docs/stable/jit.html" rel="nofollow">JIT and TRACE</a>، تتيحان للمطورين تصدير نماذجهم لإعادة استخدامها في برامج أخرى مثل برامج C++ المُحسّنة للأداء.',Te,j,it="نقدم واجهة تتيح لك تصدير نماذج 🤗 Transformers إلى TorchScript بحيث يمكن إعادة استخدامها في بيئة مختلفة عن برامج Python القائمة إلى PyTorch. هنا نشرح كيفية تصدير نماذجنا واستخدامها باستخدام TorchScript.",be,g,mt="يتطلب تصدير نموذج أمرين:",we,v,ct="<li>تهيئة مثيل للنموذج باستخدام علامة <code>torchscript</code></li> <li>تمرير مُدخلات وهمية (dummy inputs) خلال النموذج</li>",Je,Z,dt="تنطوي هذه الضرورات على عدة أمور يجب على المطورين توخي الحذر بشأنها كما هو مفصل أدناه.",$e,C,Ue,_,ht="علامة <code>torchscript</code> ضرورية لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة <code>Embedding</code> وطبقة <code>Decoding</code>. لا يسمح لك TorchScript بتصدير النماذج ذات الأوزان المرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا.",je,B,Mt="النماذج المُهيأة باستخدام علامة <code>torchscript</code> لها طبقة <code>Embedding</code> وطبقة<code>Decoding</code> منفصلتين، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة.",ge,I,ft="هذا لا ينطبق على النماذج التي لا تحتوي على رأس نموذج اللغة، حيث لا تملك أوزانًا مرتبطة. يمكن تصدير هذه النماذج بأمان دون علامة <code>torchscript</code>.",ve,H,Ze,S,ut="تُستخدم المُدخلات الوهمية لتمرير أمامي خلال النموذج. أثناء انتشار قيم المُدخلات عبر الطبقات، يتتبع PyTorch العمليات المختلفة التي يتم تنفيذها على كل مصفوفة(tensor). ثم يتم استخدام هذه العمليات المُسجلة بعد ذلك لإنشاء <em>أثر</em> النموذج.",Ce,k,yt="يتم إنشاء التتبع بالنسبة لأبعاد المُدخلات. وبالتالي، فهو مُقيّد بأبعاد المُدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة مختلف. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي:",_e,x,Be,G,Tt="نوصي بتتبع النموذج باستخدام حجم مُدخلات وهمية لا يقل عن أكبر مُدخل سيتم تقديمه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة(padding) في ملء القيم المفقودة. ومع ذلك، نظرًا لتتبع النموذج بحجم مُدخل أكبر، ستكون أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي عنه المزيد من الحسابات.",Ie,W,bt="انتبه إلى إجمالي عدد العمليات المُنفذة على كل مُدخل وتابع الأداء عن كثب عند تصدير نماذج متغيرة طول التسلسل.",He,R,Se,V,wt="يوضح هذا القسم كيفية حفظ النماذج وتحميلها، بالإضافة إلى كيفية استخدام التتبع للاستدلال.",ke,N,xe,Q,Jt="لتصدير <code>BertModel</code> باستخدام TorchScript، قم بتهيئة ـ <code>BertModel</code> من فئة <code>BertConfig</code> ثم احفظه على القرص تحت اسم الملف <code>traced_bert.pt</code>:",Ge,X,We,E,Re,z,$t="يمكنك الآن تحميل <code>BertModel</code> المُحفظ سابقًا، <code>traced_bert.pt</code>، من القرص واستخدامه على <code>dummy_input</code> المُهيأ سابقًا:",Ve,L,Ne,A,Qe,P,Ut="استخدم النموذج المُتتبع للاستدلال باستخدام أسلوب <code>__call__</code> الخاص به:",Xe,Y,Ee,F,ze,D,jt='قدمت AWS عائلة <a href="https://aws.amazon.com/ec2/instance-types/inf1/" rel="nofollow">Amazon EC2 Inf1</a> من اﻷجهزة لخفض التكلفة وأداء التعلم الآلي عالي الأداء في البيئة السحابية. تعمل أجهزة Inf1 بواسطة شريحة Inferentia من AWS، وهي مُسرّع أجهزة مُخصص، متخصص في أعباء عمل الاستدلال للتعلم العميق. <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/#" rel="nofollow">AWS Neuron</a> هي SDK لـ Inferentia التي تدعم تتبع نماذج المحولات وتحسينها للنشر على Inf1. توفر Neuron SDK ما يلي:',Le,K,gt='<li>واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في البيئة السحابية.</li> <li>تحسينات الأداء الجاهزة للاستخدام <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/%3E" rel="nofollow">تحسين التكلفة والأداء</a>.</li> <li>دعم نماذج Hugging Face المحولات المبنية باستخدام إما <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/bert_tutorial/tutorial_pretrained_bert.html" rel="nofollow">PyTorch</a> أو <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/tensorflow/huggingface_bert/huggingface_bert.html" rel="nofollow">TensorFlow</a>.</li>',Ae,q,Pe,O,vt='تعمل نماذج المحولات المستندة إلى بنية <a href="https://huggingface.co/docs/transformers/main/model_doc/bert" rel="nofollow">BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)</a> أو متغيراتها مثل <a href="https://huggingface.co/docs/transformers/main/model_doc/distilbert" rel="nofollow">distilBERT</a> و <a href="https://huggingface.co/docs/transformers/main/model_doc/roberta" rel="nofollow">roBERTa</a> بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز (tokens). ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html" rel="nofollow">برنامج تعليمي AWS Neuron MarianMT</a>. يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها جاهزة على Inferentia في قسم <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia" rel="nofollow">ملاءمة بنية النموذج</a> من وثائق Neuron.',Ye,ee,Fe,te,Zt='يتطلب استخدام AWS Neuron لتحويل النماذج <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/neuron-frameworks/pytorch-neuron/index.html#installation-guide" rel="nofollow">بيئة SDK Neuron</a> والتي تأتي مسبقًا على <a href="https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-launching.html" rel="nofollow">AMI للتعلم العميق من AWS</a>.',De,le,Ke,ne,Ct='قم بتحويل نموذج لـ AWS NEURON باستخدام نفس التعليمات البرمجية من <a href="torchscript#using-torchscript-in-python">استخدام TorchScript في Python</a> لتتبع <code>BertModel</code>. قم باستيراد امتداد إطار عمل <code>torch.neuron</code> للوصول إلى مكونات Neuron SDK من خلال واجهة برمجة تطبيقات Python:',qe,se,Oe,ae,_t="كل ما عليك فعله هو تعديل السطر التالي:",et,oe,tt,pe,Bt="يتيح ذلك لـ Neuron SDK تتبع النموذج وتحسينه لمثيلات Inf1.",lt,re,It='لمعرفة المزيد حول ميزات AWS Neuron SDK والأدوات ودروس البرامج التعليمية والتحديثات الأخيرة، يرجى الاطلاع على <a href="https://awsdocs-neuron.readthedocs-hosted.com/en/latest/index.html" rel="nofollow">وثائق AWS NeuronSDK</a>.',nt,ie,st,de,at;return w=new y({props:{title:"التصدير إلى TorchScript",local:"التصدير-إلى-torchscript",headingTag:"h1"}}),T=new Xt({props:{$$slots:{default:[zt]},$$scope:{ctx:he}}}),C=new y({props:{title:"علامة TorchScript والأوزان المرتبطة",local:"علامة-torchscript-والأوزان-المرتبطة",headingTag:"h2"}}),H=new y({props:{title:"المدخلات الوهمية والأطوال القياسية",local:"المدخلات-الوهمية-والأطوال-القياسية",headingTag:"h2"}}),x=new ce({props:{code:"JTYwVGhlJTIwZXhwYW5kZWQlMjBzaXplJTIwb2YlMjB0aGUlMjB0ZW5zb3IlMjAoMyklMjBtdXN0JTIwbWF0Y2glMjB0aGUlMjBleGlzdGluZyUyMHNpemUlMjAoNyklMjBhdCUyMG5vbi1zaW5nbGV0b24lMjBkaW1lbnNpb24lMjAyJTYw",highlighted:'`The expanded <span class="hljs-built_in">size</span> of the tensor (<span class="hljs-number">3</span>) must match the existing <span class="hljs-built_in">size</span> (<span class="hljs-number">7</span>) at non-singleton <span class="hljs-keyword">dimension</span> <span class="hljs-number">2</span>`',wrap:!1}}),R=new y({props:{title:"استخدام TorchScript في Python",local:"استخدام-torchscript-في-python",headingTag:"h2"}}),N=new y({props:{title:"حفظ نموذج",local:"حفظ-نموذج",headingTag:"h3"}}),X=new ce({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUyQyUyMEJlcnRUb2tlbml6ZXIlMkMlMjBCZXJ0Q29uZmlnJTBBaW1wb3J0JTIwdG9yY2glMEElMEFlbmMlMjAlM0QlMjBCZXJ0VG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUtYmVydCUyRmJlcnQtYmFzZS11bmNhc2VkJTIyKSUwQSUwQSUyMyUyMFRva2VuaXppbmclMjBpbnB1dCUyMHRleHQlMEF0ZXh0JTIwJTNEJTIwJTIyJTVCQ0xTJTVEJTIwV2hvJTIwd2FzJTIwSmltJTIwSGVuc29uJTIwJTNGJTIwJTVCU0VQJTVEJTIwSmltJTIwSGVuc29uJTIwd2FzJTIwYSUyMHB1cHBldGVlciUyMCU1QlNFUCU1RCUyMiUwQXRva2VuaXplZF90ZXh0JTIwJTNEJTIwZW5jLnRva2VuaXplKHRleHQpJTBBJTBBJTIzJTIwTWFza2luZyUyMG9uZSUyMG9mJTIwdGhlJTIwaW5wdXQlMjB0b2tlbnMlMEFtYXNrZWRfaW5kZXglMjAlM0QlMjA4JTBBdG9rZW5pemVkX3RleHQlNUJtYXNrZWRfaW5kZXglNUQlMjAlM0QlMjAlMjIlNUJNQVNLJTVEJTIyJTBBaW5kZXhlZF90b2tlbnMlMjAlM0QlMjBlbmMuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VuaXplZF90ZXh0KSUwQXNlZ21lbnRzX2lkcyUyMCUzRCUyMCU1QjAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTVEJTBBJTBBJTIzJTIwQ3JlYXRpbmclMjBhJTIwZHVtbXklMjBpbnB1dCUwQXRva2Vuc190ZW5zb3IlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTVCaW5kZXhlZF90b2tlbnMlNUQpJTBBc2VnbWVudHNfdGVuc29ycyUyMCUzRCUyMHRvcmNoLnRlbnNvciglNUJzZWdtZW50c19pZHMlNUQpJTBBZHVtbXlfaW5wdXQlMjAlM0QlMjAlNUJ0b2tlbnNfdGVuc29yJTJDJTIwc2VnbWVudHNfdGVuc29ycyU1RCUwQSUwQSUyMyUyMEluaXRpYWxpemluZyUyMHRoZSUyMG1vZGVsJTIwd2l0aCUyMHRoZSUyMHRvcmNoc2NyaXB0JTIwZmxhZyUwQSUyMyUyMEZsYWclMjBzZXQlMjB0byUyMFRydWUlMjBldmVuJTIwdGhvdWdoJTIwaXQlMjBpcyUyMG5vdCUyMG5lY2Vzc2FyeSUyMGFzJTIwdGhpcyUyMG1vZGVsJTIwZG9lcyUyMG5vdCUyMGhhdmUlMjBhbiUyMExNJTIwSGVhZC4lMEFjb25maWclMjAlM0QlMjBCZXJ0Q29uZmlnKCUwQSUyMCUyMCUyMCUyMHZvY2FiX3NpemVfb3JfY29uZmlnX2pzb25fZmlsZSUzRDMyMDAwJTJDJTBBJTIwJTIwJTIwJTIwaGlkZGVuX3NpemUlM0Q3NjglMkMlMEElMjAlMjAlMjAlMjBudW1faGlkZGVuX2xheWVycyUzRDEyJTJDJTBBJTIwJTIwJTIwJTIwbnVtX2F0dGVudGlvbl9oZWFkcyUzRDEyJTJDJTBBJTIwJTIwJTIwJTIwaW50ZXJtZWRpYXRlX3NpemUlM0QzMDcyJTJDJTBBJTIwJTIwJTIwJTIwdG9yY2hzY3JpcHQlM0RUcnVlJTJDJTBBKSUwQSUwQSUyMyUyMEluc3RhbnRpYXRpbmclMjB0aGUlMjBtb2RlbCUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsKGNvbmZpZyklMEElMEElMjMlMjBUaGUlMjBtb2RlbCUyMG5lZWRzJTIwdG8lMjBiZSUyMGluJTIwZXZhbHVhdGlvbiUyMG1vZGUlMEFtb2RlbC5ldmFsKCklMEElMEElMjMlMjBJZiUyMHlvdSUyMGFyZSUyMGluc3RhbnRpYXRpbmclMjB0aGUlMjBtb2RlbCUyMHdpdGglMjAqZnJvbV9wcmV0cmFpbmVkKiUyMHlvdSUyMGNhbiUyMGFsc28lMjBlYXNpbHklMjBzZXQlMjB0aGUlMjBUb3JjaFNjcmlwdCUyMGZsYWclMEFtb2RlbCUyMCUzRCUyMEJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyZ29vZ2xlLWJlcnQlMkZiZXJ0LWJhc2UtdW5jYXNlZCUyMiUyQyUyMHRvcmNoc2NyaXB0JTNEVHJ1ZSklMEElMEElMjMlMjBDcmVhdGluZyUyMHRoZSUyMHRyYWNlJTBBdHJhY2VkX21vZGVsJTIwJTNEJTIwdG9yY2guaml0LnRyYWNlKG1vZGVsJTJDJTIwJTVCdG9rZW5zX3RlbnNvciUyQyUyMHNlZ21lbnRzX3RlbnNvcnMlNUQpJTBBdG9yY2guaml0LnNhdmUodHJhY2VkX21vZGVsJTJDJTIwJTIydHJhY2VkX2JlcnQucHQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel, BertTokenizer, BertConfig | |
| <span class="hljs-keyword">import</span> torch | |
| enc = BertTokenizer.from_pretrained(<span class="hljs-string">"google-bert/bert-base-uncased"</span>) | |
| <span class="hljs-comment"># Tokenizing input text</span> | |
| text = <span class="hljs-string">"[CLS] Who was Jim Henson ? [SEP] Jim Henson was a puppeteer [SEP]"</span> | |
| tokenized_text = enc.tokenize(text) | |
| <span class="hljs-comment"># Masking one of the input tokens</span> | |
| masked_index = <span class="hljs-number">8</span> | |
| tokenized_text[masked_index] = <span class="hljs-string">"[MASK]"</span> | |
| indexed_tokens = enc.convert_tokens_to_ids(tokenized_text) | |
| segments_ids = [<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>] | |
| <span class="hljs-comment"># Creating a dummy input</span> | |
| tokens_tensor = torch.tensor([indexed_tokens]) | |
| segments_tensors = torch.tensor([segments_ids]) | |
| dummy_input = [tokens_tensor, segments_tensors] | |
| <span class="hljs-comment"># Initializing the model with the torchscript flag</span> | |
| <span class="hljs-comment"># Flag set to True even though it is not necessary as this model does not have an LM Head.</span> | |
| config = BertConfig( | |
| vocab_size_or_config_json_file=<span class="hljs-number">32000</span>, | |
| hidden_size=<span class="hljs-number">768</span>, | |
| num_hidden_layers=<span class="hljs-number">12</span>, | |
| num_attention_heads=<span class="hljs-number">12</span>, | |
| intermediate_size=<span class="hljs-number">3072</span>, | |
| torchscript=<span class="hljs-literal">True</span>, | |
| ) | |
| <span class="hljs-comment"># Instantiating the model</span> | |
| model = BertModel(config) | |
| <span class="hljs-comment"># The model needs to be in evaluation mode</span> | |
| model.<span class="hljs-built_in">eval</span>() | |
| <span class="hljs-comment"># If you are instantiating the model with *from_pretrained* you can also easily set the TorchScript flag</span> | |
| model = BertModel.from_pretrained(<span class="hljs-string">"google-bert/bert-base-uncased"</span>, torchscript=<span class="hljs-literal">True</span>) | |
| <span class="hljs-comment"># Creating the trace</span> | |
| traced_model = torch.jit.trace(model, [tokens_tensor, segments_tensors]) | |
| torch.jit.save(traced_model, <span class="hljs-string">"traced_bert.pt"</span>)`,wrap:!1}}),E=new y({props:{title:"تحميل نموذج",local:"تحميل-نموذج",headingTag:"h3"}}),L=new ce({props:{code:"bG9hZGVkX21vZGVsJTIwJTNEJTIwdG9yY2guaml0LmxvYWQoJTIydHJhY2VkX2JlcnQucHQlMjIpJTBBbG9hZGVkX21vZGVsLmV2YWwoKSUwQSUwQWFsbF9lbmNvZGVyX2xheWVycyUyQyUyMHBvb2xlZF9vdXRwdXQlMjAlM0QlMjBsb2FkZWRfbW9kZWwoKmR1bW15X2lucHV0KQ==",highlighted:`loaded_model = torch.jit.load(<span class="hljs-string">"traced_bert.pt"</span>) | |
| loaded_model.<span class="hljs-built_in">eval</span>() | |
| all_encoder_layers, pooled_output = loaded_model(*dummy_input)`,wrap:!1}}),A=new y({props:{title:"استخدام نموذج مُتتبع للاستدلال",local:"استخدام-نموذج-متتبع-للاستدلال",headingTag:"h3"}}),Y=new ce({props:{code:"dHJhY2VkX21vZGVsKHRva2Vuc190ZW5zb3IlMkMlMjBzZWdtZW50c190ZW5zb3JzKQ==",highlighted:"traced_model(tokens_tensor, segments_tensors)",wrap:!1}}),F=new y({props:{title:"نشر نماذج Hugging Face TorchScript على AWS باستخدام Neuron SDK",local:"نشر-نماذج-hugging-face-torchscript-على-aws-باستخدام-neuron-sdk",headingTag:"h2"}}),q=new y({props:{title:"الآثار المترتبة",local:"الآثار-المترتبة",headingTag:"h3"}}),ee=new y({props:{title:"التبعيات (Dependencies)",local:"التبعيات-dependencies",headingTag:"h3"}}),le=new y({props:{title:"تحويل نموذج لـ AWS Neuron",local:"تحويل-نموذج-لـ-aws-neuron",headingTag:"h3"}}),se=new ce({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUyQyUyMEJlcnRUb2tlbml6ZXIlMkMlMjBCZXJ0Q29uZmlnJTBBaW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjB0b3JjaC5uZXVyb24=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel, BertTokenizer, BertConfig | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> torch.neuron`,wrap:!1}}),oe=new ce({props:{code:"LSUyMHRvcmNoLmppdC50cmFjZShtb2RlbCUyQyUyMCU1QnRva2Vuc190ZW5zb3IlMkMlMjBzZWdtZW50c190ZW5zb3JzJTVEKSUwQSUyQiUyMHRvcmNoLm5ldXJvbi50cmFjZShtb2RlbCUyQyUyMCU1QnRva2VuX3RlbnNvciUyQyUyMHNlZ21lbnRzX3RlbnNvcnMlNUQp",highlighted:`<span class="hljs-deletion">- torch.jit.trace(model, [tokens_tensor, segments_tensors])</span> | |
| <span class="hljs-addition">+ torch.neuron.trace(model, [token_tensor, segments_tensors])</span>`,wrap:!1}}),ie=new Et({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ar/torchscript.md"}}),{c(){f=o("meta"),b=s(),u=o("p"),me=s(),i(w.$$.fragment),Me=s(),i(T.$$.fragment),fe=s(),J=o("p"),J.innerHTML=ot,ue=s(),$=o("blockquote"),$.innerHTML=pt,ye=s(),U=o("p"),U.innerHTML=rt,Te=s(),j=o("p"),j.textContent=it,be=s(),g=o("p"),g.textContent=mt,we=s(),v=o("ul"),v.innerHTML=ct,Je=s(),Z=o("p"),Z.textContent=dt,$e=s(),i(C.$$.fragment),Ue=s(),_=o("p"),_.innerHTML=ht,je=s(),B=o("p"),B.innerHTML=Mt,ge=s(),I=o("p"),I.innerHTML=ft,ve=s(),i(H.$$.fragment),Ze=s(),S=o("p"),S.innerHTML=ut,Ce=s(),k=o("p"),k.textContent=yt,_e=s(),i(x.$$.fragment),Be=s(),G=o("p"),G.textContent=Tt,Ie=s(),W=o("p"),W.textContent=bt,He=s(),i(R.$$.fragment),Se=s(),V=o("p"),V.textContent=wt,ke=s(),i(N.$$.fragment),xe=s(),Q=o("p"),Q.innerHTML=Jt,Ge=s(),i(X.$$.fragment),We=s(),i(E.$$.fragment),Re=s(),z=o("p"),z.innerHTML=$t,Ve=s(),i(L.$$.fragment),Ne=s(),i(A.$$.fragment),Qe=s(),P=o("p"),P.innerHTML=Ut,Xe=s(),i(Y.$$.fragment),Ee=s(),i(F.$$.fragment),ze=s(),D=o("p"),D.innerHTML=jt,Le=s(),K=o("ol"),K.innerHTML=gt,Ae=s(),i(q.$$.fragment),Pe=s(),O=o("p"),O.innerHTML=vt,Ye=s(),i(ee.$$.fragment),Fe=s(),te=o("p"),te.innerHTML=Zt,De=s(),i(le.$$.fragment),Ke=s(),ne=o("p"),ne.innerHTML=Ct,qe=s(),i(se.$$.fragment),Oe=s(),ae=o("p"),ae.textContent=_t,et=s(),i(oe.$$.fragment),tt=s(),pe=o("p"),pe.textContent=Bt,lt=s(),re=o("p"),re.innerHTML=It,nt=s(),i(ie.$$.fragment),st=s(),de=o("p"),this.h()},l(e){const t=Nt("svelte-u9bgzb",document.head);f=p(t,"META",{name:!0,content:!0}),t.forEach(l),b=a(e),u=p(e,"P",{}),St(u).forEach(l),me=a(e),m(w.$$.fragment,e),Me=a(e),m(T.$$.fragment,e),fe=a(e),J=p(e,"P",{"data-svelte-h":!0}),r(J)!=="svelte-13c60le"&&(J.innerHTML=ot),ue=a(e),$=p(e,"BLOCKQUOTE",{"data-svelte-h":!0}),r($)!=="svelte-401gw3"&&($.innerHTML=pt),ye=a(e),U=p(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-1ghh8tt"&&(U.innerHTML=rt),Te=a(e),j=p(e,"P",{"data-svelte-h":!0}),r(j)!=="svelte-wppxa0"&&(j.textContent=it),be=a(e),g=p(e,"P",{"data-svelte-h":!0}),r(g)!=="svelte-1u4d7js"&&(g.textContent=mt),we=a(e),v=p(e,"UL",{"data-svelte-h":!0}),r(v)!=="svelte-fh56w9"&&(v.innerHTML=ct),Je=a(e),Z=p(e,"P",{"data-svelte-h":!0}),r(Z)!=="svelte-hhein4"&&(Z.textContent=dt),$e=a(e),m(C.$$.fragment,e),Ue=a(e),_=p(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-inqp8w"&&(_.innerHTML=ht),je=a(e),B=p(e,"P",{"data-svelte-h":!0}),r(B)!=="svelte-al61w5"&&(B.innerHTML=Mt),ge=a(e),I=p(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-nldf2d"&&(I.innerHTML=ft),ve=a(e),m(H.$$.fragment,e),Ze=a(e),S=p(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-1owcnix"&&(S.innerHTML=ut),Ce=a(e),k=p(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-zitl70"&&(k.textContent=yt),_e=a(e),m(x.$$.fragment,e),Be=a(e),G=p(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-18uznwb"&&(G.textContent=Tt),Ie=a(e),W=p(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-sipd9b"&&(W.textContent=bt),He=a(e),m(R.$$.fragment,e),Se=a(e),V=p(e,"P",{"data-svelte-h":!0}),r(V)!=="svelte-1gqw8ez"&&(V.textContent=wt),ke=a(e),m(N.$$.fragment,e),xe=a(e),Q=p(e,"P",{"data-svelte-h":!0}),r(Q)!=="svelte-21i64j"&&(Q.innerHTML=Jt),Ge=a(e),m(X.$$.fragment,e),We=a(e),m(E.$$.fragment,e),Re=a(e),z=p(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-yic9zp"&&(z.innerHTML=$t),Ve=a(e),m(L.$$.fragment,e),Ne=a(e),m(A.$$.fragment,e),Qe=a(e),P=p(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-1whpkma"&&(P.innerHTML=Ut),Xe=a(e),m(Y.$$.fragment,e),Ee=a(e),m(F.$$.fragment,e),ze=a(e),D=p(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-8vqf9x"&&(D.innerHTML=jt),Le=a(e),K=p(e,"OL",{"data-svelte-h":!0}),r(K)!=="svelte-4nhl30"&&(K.innerHTML=gt),Ae=a(e),m(q.$$.fragment,e),Pe=a(e),O=p(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-adg3c"&&(O.innerHTML=vt),Ye=a(e),m(ee.$$.fragment,e),Fe=a(e),te=p(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-1eypx5h"&&(te.innerHTML=Zt),De=a(e),m(le.$$.fragment,e),Ke=a(e),ne=p(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-1llwjp8"&&(ne.innerHTML=Ct),qe=a(e),m(se.$$.fragment,e),Oe=a(e),ae=p(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-1sev6y1"&&(ae.textContent=_t),et=a(e),m(oe.$$.fragment,e),tt=a(e),pe=p(e,"P",{"data-svelte-h":!0}),r(pe)!=="svelte-kpl1qo"&&(pe.textContent=Bt),lt=a(e),re=p(e,"P",{"data-svelte-h":!0}),r(re)!=="svelte-12wkrbp"&&(re.innerHTML=It),nt=a(e),m(ie.$$.fragment,e),st=a(e),de=p(e,"P",{}),St(de).forEach(l),this.h()},h(){kt(f,"name","hf:doc:metadata"),kt(f,"content",At)},m(e,t){Qt(document.head,f),n(e,b,t),n(e,u,t),n(e,me,t),c(w,e,t),n(e,Me,t),c(T,e,t),n(e,fe,t),n(e,J,t),n(e,ue,t),n(e,$,t),n(e,ye,t),n(e,U,t),n(e,Te,t),n(e,j,t),n(e,be,t),n(e,g,t),n(e,we,t),n(e,v,t),n(e,Je,t),n(e,Z,t),n(e,$e,t),c(C,e,t),n(e,Ue,t),n(e,_,t),n(e,je,t),n(e,B,t),n(e,ge,t),n(e,I,t),n(e,ve,t),c(H,e,t),n(e,Ze,t),n(e,S,t),n(e,Ce,t),n(e,k,t),n(e,_e,t),c(x,e,t),n(e,Be,t),n(e,G,t),n(e,Ie,t),n(e,W,t),n(e,He,t),c(R,e,t),n(e,Se,t),n(e,V,t),n(e,ke,t),c(N,e,t),n(e,xe,t),n(e,Q,t),n(e,Ge,t),c(X,e,t),n(e,We,t),c(E,e,t),n(e,Re,t),n(e,z,t),n(e,Ve,t),c(L,e,t),n(e,Ne,t),c(A,e,t),n(e,Qe,t),n(e,P,t),n(e,Xe,t),c(Y,e,t),n(e,Ee,t),c(F,e,t),n(e,ze,t),n(e,D,t),n(e,Le,t),n(e,K,t),n(e,Ae,t),c(q,e,t),n(e,Pe,t),n(e,O,t),n(e,Ye,t),c(ee,e,t),n(e,Fe,t),n(e,te,t),n(e,De,t),c(le,e,t),n(e,Ke,t),n(e,ne,t),n(e,qe,t),c(se,e,t),n(e,Oe,t),n(e,ae,t),n(e,et,t),c(oe,e,t),n(e,tt,t),n(e,pe,t),n(e,lt,t),n(e,re,t),n(e,nt,t),c(ie,e,t),n(e,st,t),n(e,de,t),at=!0},p(e,[t]){const Ht={};t&2&&(Ht.$$scope={dirty:t,ctx:e}),T.$set(Ht)},i(e){at||(d(w.$$.fragment,e),d(T.$$.fragment,e),d(C.$$.fragment,e),d(H.$$.fragment,e),d(x.$$.fragment,e),d(R.$$.fragment,e),d(N.$$.fragment,e),d(X.$$.fragment,e),d(E.$$.fragment,e),d(L.$$.fragment,e),d(A.$$.fragment,e),d(Y.$$.fragment,e),d(F.$$.fragment,e),d(q.$$.fragment,e),d(ee.$$.fragment,e),d(le.$$.fragment,e),d(se.$$.fragment,e),d(oe.$$.fragment,e),d(ie.$$.fragment,e),at=!0)},o(e){h(w.$$.fragment,e),h(T.$$.fragment,e),h(C.$$.fragment,e),h(H.$$.fragment,e),h(x.$$.fragment,e),h(R.$$.fragment,e),h(N.$$.fragment,e),h(X.$$.fragment,e),h(E.$$.fragment,e),h(L.$$.fragment,e),h(A.$$.fragment,e),h(Y.$$.fragment,e),h(F.$$.fragment,e),h(q.$$.fragment,e),h(ee.$$.fragment,e),h(le.$$.fragment,e),h(se.$$.fragment,e),h(oe.$$.fragment,e),h(ie.$$.fragment,e),at=!1},d(e){e&&(l(b),l(u),l(me),l(Me),l(fe),l(J),l(ue),l($),l(ye),l(U),l(Te),l(j),l(be),l(g),l(we),l(v),l(Je),l(Z),l($e),l(Ue),l(_),l(je),l(B),l(ge),l(I),l(ve),l(Ze),l(S),l(Ce),l(k),l(_e),l(Be),l(G),l(Ie),l(W),l(He),l(Se),l(V),l(ke),l(xe),l(Q),l(Ge),l(We),l(Re),l(z),l(Ve),l(Ne),l(Qe),l(P),l(Xe),l(Ee),l(ze),l(D),l(Le),l(K),l(Ae),l(Pe),l(O),l(Ye),l(Fe),l(te),l(De),l(Ke),l(ne),l(qe),l(Oe),l(ae),l(et),l(tt),l(pe),l(lt),l(re),l(nt),l(st),l(de)),l(f),M(w,e),M(T,e),M(C,e),M(H,e),M(x,e),M(R,e),M(N,e),M(X,e),M(E,e),M(L,e),M(A,e),M(Y,e),M(F,e),M(q,e),M(ee,e),M(le,e),M(se,e),M(oe,e),M(ie,e)}}}const At='{"title":"التصدير إلى TorchScript","local":"التصدير-إلى-torchscript","sections":[{"title":"علامة TorchScript والأوزان المرتبطة","local":"علامة-torchscript-والأوزان-المرتبطة","sections":[],"depth":2},{"title":"المدخلات الوهمية والأطوال القياسية","local":"المدخلات-الوهمية-والأطوال-القياسية","sections":[],"depth":2},{"title":"استخدام TorchScript في Python","local":"استخدام-torchscript-في-python","sections":[{"title":"حفظ نموذج","local":"حفظ-نموذج","sections":[],"depth":3},{"title":"تحميل نموذج","local":"تحميل-نموذج","sections":[],"depth":3},{"title":"استخدام نموذج مُتتبع للاستدلال","local":"استخدام-نموذج-متتبع-للاستدلال","sections":[],"depth":3}],"depth":2},{"title":"نشر نماذج Hugging Face TorchScript على AWS باستخدام Neuron SDK","local":"نشر-نماذج-hugging-face-torchscript-على-aws-باستخدام-neuron-sdk","sections":[{"title":"الآثار المترتبة","local":"الآثار-المترتبة","sections":[],"depth":3},{"title":"التبعيات (Dependencies)","local":"التبعيات-dependencies","sections":[],"depth":3},{"title":"تحويل نموذج لـ AWS Neuron","local":"تحويل-نموذج-لـ-aws-neuron","sections":[],"depth":3}],"depth":2}],"depth":1}';function Pt(he){return Gt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ot extends Rt{constructor(f){super(),Vt(this,f,Pt,Lt,xt,{})}}export{Ot as component}; | |
Xet Storage Details
- Size:
- 27.8 kB
- Xet hash:
- c7041e594f852a4c8f24b05223f5376bad325803adce5509e3bde122a27de5b7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.