From f48014b7910a8573b83b3196d3b557f27db678a6 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Thu, 22 Aug 2024 23:24:41 +0300 Subject: [PATCH 01/25] Add docs/source/ar/torchscript.md to Add_docs_source_ar_torchscript.md --- docs/source/ar/torchscript.md | 158 ++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 docs/source/ar/torchscript.md diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md new file mode 100644 index 000000000000..ac02974ddb27 --- /dev/null +++ b/docs/source/ar/torchscript.md @@ -0,0 +1,158 @@ +# التصدير إلى TorchScript + + + +هذه هي بداية تجاربنا مع TorchScript ولا زلنا نستكشف قدراته مع نماذج المدخلات المتغيرة الحجم. إنه مجال اهتمامنا وسنعمق تحليلنا في الإصدارات القادمة، مع المزيد من أمثلة التعليمات البرمجية، وتنفيذ أكثر مرونة، ومقاييس مقارنة بين التعليمات البرمجية المستندة إلى Python مع TorchScript المترجمة. + + + +وفقًا لـ [وثائق TorchScript](https://pytorch.org/docs/stable/jit.html): + +> TorchScript هي طريقة لإنشاء نماذج قابلة للتسلسل والتحسين من تعليمات PyTorch البرمجية. + +هناك وحدتان من PyTorch، [JIT and TRACE](https://pytorch.org/docs/stable/jit.html)، تتيحان للمطورين تصدير نماذجهم لإعادة استخدامها في برامج أخرى مثل برامج C++ الموجهة نحو الكفاءة. + +نقدم واجهة تتيح لك تصدير نماذج 🤗 Transformers إلى TorchScript بحيث يمكن إعادة استخدامها في بيئة مختلفة عن برامج Python المستندة إلى PyTorch. هنا نشرح كيفية تصدير نماذجنا واستخدامها باستخدام TorchScript. + +يتطلب تصدير نموذج أمرين: + +- إنشاء مثيل للنموذج باستخدام علم `torchscript` +- تمرير إلى الأمام باستخدام مدخلات وهمية + +تنطوي هذه الضرورات على عدة أمور يجب على المطورين توخي الحذر بشأنها كما هو مفصل أدناه. + +## علم TorchScript والأوزان المرتبطة + +علم `torchscript` ضروري لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج التي تحتوي على أوزان مرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا. + +النماذج التي تم إنشاؤها باستخدام علم `torchscript` لها طبقة `Embedding` و`Decoding` منفصلة، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة. + +هذا لا ينطبق على النماذج التي لا تحتوي على رأس نموذج اللغة، حيث لا تحتوي على أوزان مرتبطة. يمكن تصدير هذه النماذج بأمان دون علم `torchscript`. + +## المدخلات الوهمية والأطوال القياسية + +تُستخدم المدخلات الوهمية للمرور الأمامي للنموذج. بينما يتم تمرير قيم المدخلات عبر الطبقات، تقوم PyTorch بتتبع العمليات المختلفة التي يتم تنفيذها على كل مصفوفة. ثم يتم استخدام هذه العمليات المسجلة لإنشاء *تتبع* النموذج. + +يتم إنشاء التتبع بالنسبة لأبعاد المدخلات. وبالتالي، فهو مقيد بأبعاد المدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة آخر. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي: + +``` +`يجب أن يتطابق الحجم الموسع للمصفوفة (3) مع الحجم الموجود (7) في البعد 2 غير المفرد` +``` + +نوصي بتتبع النموذج باستخدام حجم إدخال وهمي أكبر على الأقل مثل أكبر إدخال سيتم إطعامه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة في ملء القيم المفقودة. ومع ذلك، نظرًا لأنه يتم تتبع النموذج باستخدام حجم إدخال أكبر، فإن أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي إلى مزيد من الحسابات. + +كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. + +## استخدام TorchScript في Python +كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. + +## استخدام TorchScript في Python + +يوضح هذا القسم كيفية حفظ النماذج وتحميلها، بالإضافة إلى كيفية استخدام التتبع للاستدلال. + +### حفظ نموذج + +لتصدير `BertModel` مع TorchScript، قم بإنشاء مثيل لـ `BertModel` من فئة `BertConfig` ثم احفظه على القرص تحت اسم الملف `traced_bert.pt`: + +```python +from transformers import BertModel, BertTokenizer, BertConfig +import torch + +enc = BertTokenizer.from_pretrained("google-bert/bert-base-uncased") + +# Tokenizing input text +text = "[CLS] Who was Jim Henson ? [SEP] Jim Henson was a puppeteer [SEP]" +tokenized_text = enc.tokenize(text) + +# Masking one of the input tokens +masked_index = 8 +tokenized_text[masked_index] = "[MASK]" +indexed_tokens = enc.convert_tokens_to_ids(tokenized_text) +segments_ids = [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1] + +# Creating a dummy input +tokens_tensor = torch.tensor([indexed_tokens]) +segments_tensors = torch.tensor([segments_ids]) +dummy_input = [tokens_tensor, segments_tensors] + +# Initializing the model with the torchscript flag +# Flag set to True even though it is not necessary as this model does not have an LM Head. +config = BertConfig( + vocab_size_or_config_json_file=32000, + hidden_size=768, + num_hidden_layers=12, + num_attention_heads=12, + intermediate_size=3072, + torchscript=True, +) + +# Instantiating the model +model = BertModel(config) + +# The model needs to be in evaluation mode +model.eval() + +# If you are instantiating the model with *from_pretrained* you can also easily set the TorchScript flag +model = BertModel.from_pretrained("google-bert/bert-base-uncased", torchscript=True) + +# Creating the trace +traced_model = torch.jit.trace(model, [tokens_tensor, segments_tensors]) +torch.jit.save(traced_model, "traced_bert.pt") +``` + +### تحميل نموذج + +الآن يمكنك تحميل `BertModel` المحفوظ سابقًا، `traced_bert.pt`، من القرص واستخدامه على `dummy_input` الذي تم تهيئته مسبقًا: + +```python +loaded_model = torch.jit.load("traced_bert.pt") +loaded_model.eval() + +all_encoder_layers, pooled_output = loaded_model(*dummy_input) +``` + +### استخدام نموذج تم تتبعه للاستدلال + +استخدم النموذج الذي تم تتبعه للاستدلال باستخدام أسلوب `__call__` الخاص به: + +```python +traced_model(tokens_tensor, segments_tensors) +``` + +## نشر نماذج Hugging Face TorchScript على AWS باستخدام Neuron SDK + +قدمت AWS عائلة [Amazon EC2 Inf1](https://aws.amazon.com/ec2/instance-types/inf1/) من مثيلات لخفض التكلفة وأداء التعلم الآلي عالي الأداء في السحابة. تعمل مثيلات Inf1 بواسطة شريحة Inferentia من AWS، وهي مسرع أجهزة مخصص، متخصص في أعباء عمل الاستدلال للتعلم العميق. [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/#) هي SDK لـ Inferentia التي تدعم تتبع نماذج المحولات وتحسينها للنشر على Inf1. توفر Neuron SDK ما يلي: + +1. واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في السحابة. +2. تحسينات الأداء الجاهزة للاستخدام [تحسين التكلفة والأداء](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/>). +3. دعم نماذج Hugging Face المحولات المبنية باستخدام إما [بايثون](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/bert_tutorial/tutorial_pretrained_bert.html) أو [تنسورفلو](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/tensorflow/huggingface_bert/huggingface_bert.html). + +### الآثار المترتبة +### الآثار المترتبة + +تعمل نماذج المحولات المستندة إلى بنية [BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)](https://huggingface.co/docs/transformers/main/model_doc/bert) أو متغيراتها مثل [distilBERT](https://huggingface.co/docs/transformers/main/model_doc/distilbert) و [roBERTa](https://huggingface.co/docs/transformers/main/model_doc/roberta) بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز. ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا [برنامج تعليمي AWS Neuron MarianMT](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html). يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها من الصندوق على Inferentia في قسم [ملاءمة بنية النموذج](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia) من وثائق Neuron. + +### التبعيات + +يتطلب استخدام AWS Neuron لتحويل النماذج [بيئة SDK Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/neuron-frameworks/pytorch-neuron/index.html#installation-guide) والتي تأتي مسبقًا على [AMI للتعلم العميق من AWS](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-launching.html). + +### تحويل نموذج لـ AWS Neuron + +قم بتحويل نموذج لـ AWS NEURON باستخدام نفس التعليمات البرمجية من [استخدام TorchScript في Python](torchscript#using-torchscript-in-python) لتتبع `BertModel`. قم باستيراد امتداد إطار عمل `torch.neuron` للوصول إلى مكونات Neuron SDK من خلال واجهة برمجة تطبيقات Python: + +```python +from transformers import BertModel, BertTokenizer, BertConfig +import torch +import torch.neuron +``` + +كل ما عليك فعله هو تعديل السطر التالي: + +```diff +- torch.jit.trace(model, [tokens_tensor, segments_tensors]) ++ torch.neuron.trace(model, [token_tensor, segments_tensors]) +``` + +يتيح ذلك لـ Neuron SDK تتبع النموذج وتحسينه لمثيلات Inf1. + +لمعرفة المزيد حول ميزات AWS Neuron SDK والأدوات ودروس البرامج التعليمية والتحديثات الأخيرة، يرجى الاطلاع على [وثائق AWS NeuronSDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/index.html). \ No newline at end of file From 382a1c5e51f7fc45dfe261ae9946c1fe2ef2a4fd Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:09:28 +0300 Subject: [PATCH 02/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index ac02974ddb27..ec079daa0d4f 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -2,7 +2,7 @@ -هذه هي بداية تجاربنا مع TorchScript ولا زلنا نستكشف قدراته مع نماذج المدخلات المتغيرة الحجم. إنه مجال اهتمامنا وسنعمق تحليلنا في الإصدارات القادمة، مع المزيد من أمثلة التعليمات البرمجية، وتنفيذ أكثر مرونة، ومقاييس مقارنة بين التعليمات البرمجية المستندة إلى Python مع TorchScript المترجمة. +هذه هي بداية تجاربنا مع TorchScript ولا زلنا نستكشف قدراته مع نماذج المدخلات المتغيرة الحجم. إنه مجال اهتمامنا وسنعمق تحليلنا في الإصدارات القادمة، مع المزيد من الأمثلة البرمجية، وتنفيذ أكثر مرونة، ومقاييس مقارنة بين الأكواد القائمة على Python مع أكواد TorchScript المُجمّعة. From 03e7985012b7afd6389ee3ea50414cf0c891a11f Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:09:42 +0300 Subject: [PATCH 03/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index ec079daa0d4f..d1b8b1a0e176 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -10,9 +10,9 @@ > TorchScript هي طريقة لإنشاء نماذج قابلة للتسلسل والتحسين من تعليمات PyTorch البرمجية. -هناك وحدتان من PyTorch، [JIT and TRACE](https://pytorch.org/docs/stable/jit.html)، تتيحان للمطورين تصدير نماذجهم لإعادة استخدامها في برامج أخرى مثل برامج C++ الموجهة نحو الكفاءة. +هناك وحدتان من PyTorch، [JIT and TRACE](https://pytorch.org/docs/stable/jit.html)، تتيحان للمطورين تصدير نماذجهم لإعادة استخدامها في برامج أخرى مثل برامج C++ المُحسّنة للأداء. -نقدم واجهة تتيح لك تصدير نماذج 🤗 Transformers إلى TorchScript بحيث يمكن إعادة استخدامها في بيئة مختلفة عن برامج Python المستندة إلى PyTorch. هنا نشرح كيفية تصدير نماذجنا واستخدامها باستخدام TorchScript. +نقدم واجهة تتيح لك تصدير نماذج 🤗 Transformers إلى TorchScript بحيث يمكن إعادة استخدامها في بيئة مختلفة عن برامج Python القائمة إلى PyTorch. هنا نشرح كيفية تصدير نماذجنا واستخدامها باستخدام TorchScript. يتطلب تصدير نموذج أمرين: From ff2326c50e61b1f26cbb43399331ece464a0c946 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:09:54 +0300 Subject: [PATCH 04/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index d1b8b1a0e176..6e691c86af1f 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -16,8 +16,8 @@ يتطلب تصدير نموذج أمرين: -- إنشاء مثيل للنموذج باستخدام علم `torchscript` -- تمرير إلى الأمام باستخدام مدخلات وهمية +- تهيئة مثيل للنموذج باستخدام علامة `torchscript` +- تمرير مُدخلات وهمية (dummy inputs) خلال النموذج تنطوي هذه الضرورات على عدة أمور يجب على المطورين توخي الحذر بشأنها كما هو مفصل أدناه. From c0c1c91b9c55bd5978957dffb8647e3066e5cf7e Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:10:05 +0300 Subject: [PATCH 05/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 6e691c86af1f..5d9cbfdddde3 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -21,7 +21,7 @@ تنطوي هذه الضرورات على عدة أمور يجب على المطورين توخي الحذر بشأنها كما هو مفصل أدناه. -## علم TorchScript والأوزان المرتبطة +## علامة TorchScript والأوزان المرتبطة علم `torchscript` ضروري لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج التي تحتوي على أوزان مرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا. From 0fc3265b76e2f6d911606f312a9d4234313e3a15 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:10:22 +0300 Subject: [PATCH 06/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 5d9cbfdddde3..c2aeee64f903 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -23,7 +23,7 @@ ## علامة TorchScript والأوزان المرتبطة -علم `torchscript` ضروري لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج التي تحتوي على أوزان مرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا. +علامة `torchscript` ضرورية لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج ذات الأوزان المرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا. النماذج التي تم إنشاؤها باستخدام علم `torchscript` لها طبقة `Embedding` و`Decoding` منفصلة، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة. From 7d04975e2cf2c05dded03712e385a999226bc1da Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:10:41 +0300 Subject: [PATCH 07/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index c2aeee64f903..941ea5d573b4 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -25,9 +25,9 @@ علامة `torchscript` ضرورية لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج ذات الأوزان المرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا. -النماذج التي تم إنشاؤها باستخدام علم `torchscript` لها طبقة `Embedding` و`Decoding` منفصلة، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة. +النماذج المُهيأة باستخدام علامة `torchscript` لها طبقة `Embedding` وطبقة`Decoding` منفصلتين، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة. -هذا لا ينطبق على النماذج التي لا تحتوي على رأس نموذج اللغة، حيث لا تحتوي على أوزان مرتبطة. يمكن تصدير هذه النماذج بأمان دون علم `torchscript`. +هذا لا ينطبق على النماذج التي لا تحتوي على رأس نموذج اللغة، حيث لا تملك أوزانًا مرتبطة. يمكن تصدير هذه النماذج بأمان دون علامة `torchscript`. ## المدخلات الوهمية والأطوال القياسية From 535401b156119bde6a295261912929f2c7fda44f Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:10:59 +0300 Subject: [PATCH 08/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 941ea5d573b4..4eedf05fb7c2 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -31,7 +31,7 @@ ## المدخلات الوهمية والأطوال القياسية -تُستخدم المدخلات الوهمية للمرور الأمامي للنموذج. بينما يتم تمرير قيم المدخلات عبر الطبقات، تقوم PyTorch بتتبع العمليات المختلفة التي يتم تنفيذها على كل مصفوفة. ثم يتم استخدام هذه العمليات المسجلة لإنشاء *تتبع* النموذج. +تُستخدم المُدخلات الوهمية لتمرير أمامي خلال النموذج. أثناء انتشار قيم المُدخلات عبر الطبقات، يتتبع PyTorch العمليات المختلفة التي يتم تنفيذها على كل مصفوفة(tensor). ثم يتم استخدام هذه العمليات المُسجلة بعد ذلك لإنشاء *أثر* النموذج. يتم إنشاء التتبع بالنسبة لأبعاد المدخلات. وبالتالي، فهو مقيد بأبعاد المدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة آخر. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي: From 10ddb7ff486144fd5fc16d1c90b7566d76eff10a Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:11:18 +0300 Subject: [PATCH 09/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 4eedf05fb7c2..8c5538e1e320 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -33,7 +33,7 @@ تُستخدم المُدخلات الوهمية لتمرير أمامي خلال النموذج. أثناء انتشار قيم المُدخلات عبر الطبقات، يتتبع PyTorch العمليات المختلفة التي يتم تنفيذها على كل مصفوفة(tensor). ثم يتم استخدام هذه العمليات المُسجلة بعد ذلك لإنشاء *أثر* النموذج. -يتم إنشاء التتبع بالنسبة لأبعاد المدخلات. وبالتالي، فهو مقيد بأبعاد المدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة آخر. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي: +يتم إنشاء التتبع بالنسبة لأبعاد المُدخلات. وبالتالي، فهو مُقيّد بأبعاد المُدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة مختلف. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي: ``` `يجب أن يتطابق الحجم الموسع للمصفوفة (3) مع الحجم الموجود (7) في البعد 2 غير المفرد` From 7638697c719f01533f65ecf8c9d01ecf4c767e2a Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:11:35 +0300 Subject: [PATCH 10/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 8c5538e1e320..59c622614862 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -36,7 +36,7 @@ يتم إنشاء التتبع بالنسبة لأبعاد المُدخلات. وبالتالي، فهو مُقيّد بأبعاد المُدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة مختلف. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي: ``` -`يجب أن يتطابق الحجم الموسع للمصفوفة (3) مع الحجم الموجود (7) في البعد 2 غير المفرد` +`The expanded size of the tensor (3) must match the existing size (7) at non-singleton dimension 2` ``` نوصي بتتبع النموذج باستخدام حجم إدخال وهمي أكبر على الأقل مثل أكبر إدخال سيتم إطعامه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة في ملء القيم المفقودة. ومع ذلك، نظرًا لأنه يتم تتبع النموذج باستخدام حجم إدخال أكبر، فإن أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي إلى مزيد من الحسابات. From a8a66dd49db1dd0118b35b690c75e6dbed3b4178 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:11:50 +0300 Subject: [PATCH 11/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 59c622614862..57e8b1f5870c 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -39,7 +39,7 @@ `The expanded size of the tensor (3) must match the existing size (7) at non-singleton dimension 2` ``` -نوصي بتتبع النموذج باستخدام حجم إدخال وهمي أكبر على الأقل مثل أكبر إدخال سيتم إطعامه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة في ملء القيم المفقودة. ومع ذلك، نظرًا لأنه يتم تتبع النموذج باستخدام حجم إدخال أكبر، فإن أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي إلى مزيد من الحسابات. +نوصي بتتبع النموذج باستخدام حجم مُدخلات وهمية لا يقل عن أكبر مُدخل سيتم تقديمه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة(padding) في ملء القيم المفقودة. ومع ذلك، نظرًا لتتبع النموذج بحجم مُدخل أكبر، ستكون أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي عنه المزيد من الحسابات. كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. From 210f0c40b7941a87b3a50f31b56df7083b11e598 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:12:05 +0300 Subject: [PATCH 12/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 57e8b1f5870c..b2a35207170e 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -41,7 +41,7 @@ نوصي بتتبع النموذج باستخدام حجم مُدخلات وهمية لا يقل عن أكبر مُدخل سيتم تقديمه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة(padding) في ملء القيم المفقودة. ومع ذلك، نظرًا لتتبع النموذج بحجم مُدخل أكبر، ستكون أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي عنه المزيد من الحسابات. -كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. +انتبه إلى إجمالي عدد العمليات المُنفذة على كل مُدخل وتابع الأداء عن كثب عند تصدير نماذج متغيرة طول التسلسل. ## استخدام TorchScript في Python كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. From 51be68bedd990fbb91685616695a847d63eec713 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:12:22 +0300 Subject: [PATCH 13/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index b2a35207170e..5a0339e2d199 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -52,7 +52,7 @@ ### حفظ نموذج -لتصدير `BertModel` مع TorchScript، قم بإنشاء مثيل لـ `BertModel` من فئة `BertConfig` ثم احفظه على القرص تحت اسم الملف `traced_bert.pt`: +لتصدير `BertModel` باستخدام TorchScript، قم بتهيئة ـ `BertModel` من فئة `BertConfig` ثم احفظه على القرص تحت اسم الملف `traced_bert.pt`: ```python from transformers import BertModel, BertTokenizer, BertConfig From 3bccfa63b8047b0192e470fe8cd1b4f6191da358 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:12:38 +0300 Subject: [PATCH 14/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 5a0339e2d199..beb20e0d1861 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -102,7 +102,7 @@ torch.jit.save(traced_model, "traced_bert.pt") ### تحميل نموذج -الآن يمكنك تحميل `BertModel` المحفوظ سابقًا، `traced_bert.pt`، من القرص واستخدامه على `dummy_input` الذي تم تهيئته مسبقًا: +يمكنك الآن تحميل `BertModel` المُحفظ سابقًا، `traced_bert.pt`، من القرص واستخدامه على `dummy_input` المُهيأ سابقًا: ```python loaded_model = torch.jit.load("traced_bert.pt") From ae8ea12beba53ee44913122fe1a23d310bc09b5a Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:12:56 +0300 Subject: [PATCH 15/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index beb20e0d1861..c2f8a2d3d3b9 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -111,7 +111,7 @@ loaded_model.eval() all_encoder_layers, pooled_output = loaded_model(*dummy_input) ``` -### استخدام نموذج تم تتبعه للاستدلال +### استخدام نموذج مُتتبع للاستدلال استخدم النموذج الذي تم تتبعه للاستدلال باستخدام أسلوب `__call__` الخاص به: From d73082954bce542beae540c8bd3ae11632fb864e Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:13:11 +0300 Subject: [PATCH 16/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index c2f8a2d3d3b9..3d4482fa7bdc 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -113,7 +113,7 @@ all_encoder_layers, pooled_output = loaded_model(*dummy_input) ### استخدام نموذج مُتتبع للاستدلال -استخدم النموذج الذي تم تتبعه للاستدلال باستخدام أسلوب `__call__` الخاص به: +استخدم النموذج المُتتبع للاستدلال باستخدام أسلوب `__call__` الخاص به: ```python traced_model(tokens_tensor, segments_tensors) From bcd7be690ed5c4c2cc8e95e5d869d0e43662c02c Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:13:26 +0300 Subject: [PATCH 17/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 3d4482fa7bdc..d69767a23b29 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -121,7 +121,7 @@ traced_model(tokens_tensor, segments_tensors) ## نشر نماذج Hugging Face TorchScript على AWS باستخدام Neuron SDK -قدمت AWS عائلة [Amazon EC2 Inf1](https://aws.amazon.com/ec2/instance-types/inf1/) من مثيلات لخفض التكلفة وأداء التعلم الآلي عالي الأداء في السحابة. تعمل مثيلات Inf1 بواسطة شريحة Inferentia من AWS، وهي مسرع أجهزة مخصص، متخصص في أعباء عمل الاستدلال للتعلم العميق. [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/#) هي SDK لـ Inferentia التي تدعم تتبع نماذج المحولات وتحسينها للنشر على Inf1. توفر Neuron SDK ما يلي: +قدمت AWS عائلة [Amazon EC2 Inf1](https://aws.amazon.com/ec2/instance-types/inf1/) من اﻷجهزة لخفض التكلفة وأداء التعلم الآلي عالي الأداء في البيئة السحابية. تعمل أجهزة Inf1 بواسطة شريحة Inferentia من AWS، وهي مُسرّع أجهزة مُخصص، متخصص في أعباء عمل الاستدلال للتعلم العميق. [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/#) هي SDK لـ Inferentia التي تدعم تتبع نماذج المحولات وتحسينها للنشر على Inf1. توفر Neuron SDK ما يلي: 1. واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في السحابة. 2. تحسينات الأداء الجاهزة للاستخدام [تحسين التكلفة والأداء](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/>). From 478841dbfa3c3e720334836742903cf72501cd40 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:13:45 +0300 Subject: [PATCH 18/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index d69767a23b29..6f0e161a7053 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -127,7 +127,6 @@ traced_model(tokens_tensor, segments_tensors) 2. تحسينات الأداء الجاهزة للاستخدام [تحسين التكلفة والأداء](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/>). 3. دعم نماذج Hugging Face المحولات المبنية باستخدام إما [بايثون](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/bert_tutorial/tutorial_pretrained_bert.html) أو [تنسورفلو](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/tensorflow/huggingface_bert/huggingface_bert.html). -### الآثار المترتبة ### الآثار المترتبة تعمل نماذج المحولات المستندة إلى بنية [BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)](https://huggingface.co/docs/transformers/main/model_doc/bert) أو متغيراتها مثل [distilBERT](https://huggingface.co/docs/transformers/main/model_doc/distilbert) و [roBERTa](https://huggingface.co/docs/transformers/main/model_doc/roberta) بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز. ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا [برنامج تعليمي AWS Neuron MarianMT](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html). يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها من الصندوق على Inferentia في قسم [ملاءمة بنية النموذج](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia) من وثائق Neuron. From bbb770fa827d7644d9a443a881ef549b6718ad0f Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:13:56 +0300 Subject: [PATCH 19/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 6f0e161a7053..61f2d93802bc 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -123,9 +123,9 @@ traced_model(tokens_tensor, segments_tensors) قدمت AWS عائلة [Amazon EC2 Inf1](https://aws.amazon.com/ec2/instance-types/inf1/) من اﻷجهزة لخفض التكلفة وأداء التعلم الآلي عالي الأداء في البيئة السحابية. تعمل أجهزة Inf1 بواسطة شريحة Inferentia من AWS، وهي مُسرّع أجهزة مُخصص، متخصص في أعباء عمل الاستدلال للتعلم العميق. [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/#) هي SDK لـ Inferentia التي تدعم تتبع نماذج المحولات وتحسينها للنشر على Inf1. توفر Neuron SDK ما يلي: -1. واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في السحابة. +1. واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في البيئة السحابية. 2. تحسينات الأداء الجاهزة للاستخدام [تحسين التكلفة والأداء](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/>). -3. دعم نماذج Hugging Face المحولات المبنية باستخدام إما [بايثون](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/bert_tutorial/tutorial_pretrained_bert.html) أو [تنسورفلو](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/tensorflow/huggingface_bert/huggingface_bert.html). +3. دعم نماذج Hugging Face المحولات المبنية باستخدام إما [PyTorch](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/bert_tutorial/tutorial_pretrained_bert.html) أو [TensorFlow](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/tensorflow/huggingface_bert/huggingface_bert.html). ### الآثار المترتبة From c38d737e83591c6de5d5caaa3dfc37ca2180e4a9 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:14:10 +0300 Subject: [PATCH 20/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 61f2d93802bc..f7f3d679b89b 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -129,7 +129,7 @@ traced_model(tokens_tensor, segments_tensors) ### الآثار المترتبة -تعمل نماذج المحولات المستندة إلى بنية [BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)](https://huggingface.co/docs/transformers/main/model_doc/bert) أو متغيراتها مثل [distilBERT](https://huggingface.co/docs/transformers/main/model_doc/distilbert) و [roBERTa](https://huggingface.co/docs/transformers/main/model_doc/roberta) بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز. ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا [برنامج تعليمي AWS Neuron MarianMT](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html). يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها من الصندوق على Inferentia في قسم [ملاءمة بنية النموذج](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia) من وثائق Neuron. +تعمل نماذج المحولات المستندة إلى بنية [BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)](https://huggingface.co/docs/transformers/main/model_doc/bert) أو متغيراتها مثل [distilBERT](https://huggingface.co/docs/transformers/main/model_doc/distilbert) و [roBERTa](https://huggingface.co/docs/transformers/main/model_doc/roberta) بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز (tokens). ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا [برنامج تعليمي AWS Neuron MarianMT](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html). يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها جاهزة على Inferentia في قسم [ملاءمة بنية النموذج](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia) من وثائق Neuron. ### التبعيات From 153ed4cd956e84b58da266ce768fd90ec3db311d Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:14:22 +0300 Subject: [PATCH 21/25] Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/torchscript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index f7f3d679b89b..329f7624d89f 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -131,7 +131,7 @@ traced_model(tokens_tensor, segments_tensors) تعمل نماذج المحولات المستندة إلى بنية [BERT (تمثيلات الترميز ثنائية الاتجاه من المحولات)](https://huggingface.co/docs/transformers/main/model_doc/bert) أو متغيراتها مثل [distilBERT](https://huggingface.co/docs/transformers/main/model_doc/distilbert) و [roBERTa](https://huggingface.co/docs/transformers/main/model_doc/roberta) بشكل أفضل على Inf1 للمهام غير التوليدية مثل الإجابة على الأسئلة الاستخراجية، وتصنيف التسلسلات، وتصنيف الرموز (tokens). ومع ذلك، يمكن تكييف مهام توليد النصوص للعمل على Inf1 وفقًا لهذا [برنامج تعليمي AWS Neuron MarianMT](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/src/examples/pytorch/transformers-marianmt.html). يمكن العثور على مزيد من المعلومات حول النماذج التي يمكن تحويلها جاهزة على Inferentia في قسم [ملاءمة بنية النموذج](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/models/models-inferentia.html#models-inferentia) من وثائق Neuron. -### التبعيات +### التبعيات (Dependencies) يتطلب استخدام AWS Neuron لتحويل النماذج [بيئة SDK Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/neuron-frameworks/pytorch-neuron/index.html#installation-guide) والتي تأتي مسبقًا على [AMI للتعلم العميق من AWS](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-launching.html). From 9d666479cfdaba9a22109348e8dd332cd8881177 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:30:22 +0300 Subject: [PATCH 22/25] Merge troubleshooting.md with this Branch --- docs/source/ar/troubleshooting.md | 171 ++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 docs/source/ar/troubleshooting.md diff --git a/docs/source/ar/troubleshooting.md b/docs/source/ar/troubleshooting.md new file mode 100644 index 000000000000..51a45376fba2 --- /dev/null +++ b/docs/source/ar/troubleshooting.md @@ -0,0 +1,171 @@ +# استكشاف الأخطاء وإصلاحها + +تحدث الأخطاء أحيانًا، لكننا هنا للمساعدة! يغطي هذا الدليل بعض المشكلات الأكثر شيوعًا التي واجهناها وكيفية حلها. مع ذلك، لا يُقصد بهذا الدليل أن يكون مجموعة شاملة لكل مشكلات 🤗 Transformers. لمزيد من المساعدة في استكشاف مشكلتك وإصلاحها، جرب ما يلي: + + + +1. اطلب المساعدة على [المنتديات](https://discuss.huggingface.co/). هناك فئات محددة يمكنك نشر سؤالك فيها، مثل [المبتدئين](https://discuss.huggingface.co/c/beginners/5) أو [🤗 Transformers](https://discuss.huggingface.co/c/transformers/9). تأكد من كتابة منشور جيد وواضح على المنتدى مع بعض التعليمات البرمجية القابلة للتكرار لزيادة احتمالية حل مشكلتك! + + +2. قم بإنشاء [مشكلة](https://github.com/huggingface/transformers/issues/new/choose) في مستودع 🤗 Transformers إذا كانت هناك مشكلة متعلقة بالمكتبة. حاول تضمين أكبر قدر ممكن من المعلومات التي تصف المشكلة لمساعدتنا في معرفة ما هو الخطأ وكيفية إصلاحه. + +3. تحقق من دليل [الترحيل](migration) إذا كنت تستخدم إصدارًا أقدم من مكتبة 🤗 Transformers حيث تم إدخال بعض التغييرات المهمة بين الإصدارات. + + +للحصول على مزيد من التفاصيل حول استكشاف الأخطاء وإصلاحها والحصول على المساعدة، راجع [الفصل 8](https://huggingface.co/course/chapter8/1?fw=pt) من دورة Hugging Face. + +## بيئات جدار الحماية + +بعض وحدات معالجة الرسومات (GPU) على السحابة وإعدادات الشبكة الداخلية محمية بجدار حماية من الاتصالات الخارجية، مما يؤدي إلى حدوث خطأ في الاتصال. عندما تحاول تعليمات البرنامج النصي تنزيل أوزان النموذج أو مجموعات البيانات، سيتوقف التنزيل ثم ينتهي بخطأ مثل: + +``` +ValueError: Connection error, and we cannot find the requested files in the cached path. +Please try again or make sure your Internet connection is on. +``` + +في هذه الحالة، يجب محاولة تشغيل 🤗 Transformers في [وضع عدم الاتصال](installation#offline-mode) لتجنب خطأ الاتصال. + +## CUDA نفاد الذاكرة + +يمكن أن يكون تدريب النماذج الكبيرة التي تحتوي على ملايين المعلمات أمرًا صعبًا بدون الأجهزة المناسبة. أحد الأخطاء الشائعة التي قد تواجهها عند نفاد ذاكرة GPU هو: + +``` +CUDA out of memory. Tried to allocate 256.00 MiB (GPU 0; 11.17 GiB total capacity; 9.70 GiB already allocated; 179.81 MiB free; 9.85 GiB reserved in total by PyTorch) +``` + +فيما يلي بعض الحلول المحتملة التي يمكنك تجربتها لتقليل استخدام الذاكرة: + +- قلل من قيمة [`per_device_train_batch_size`](main_classes/trainer#transformers.TrainingArguments.per_device_train_batch_size) في [`TrainingArguments`]. + +- حاول استخدام [`gradient_accumulation_steps`](main_classes/trainer#transformers.TrainingArguments.gradient_accumulation_steps) في [`TrainingArguments`] لزيادة حجم الدُفعة بشكل فعال. + + +راجع دليل [الأداء](performance) لمزيد من التفاصيل حول تقنيات توفير الذاكرة. + + +## عدم القدرة على تحميل نموذج TensorFlow محفوظ + +تقوم طريقة TensorFlow [model.save](https://www.tensorflow.org/tutorials/keras/save_and_load#save_the_entire_model) بحفظ النموذج بالكامل - الهندسة المعمارية، الأوزان، تكوين التدريب - في ملف واحد. ومع ذلك، عند تحميل ملف النموذج مرة أخرى، قد تواجه خطأ لأن مكتبة 🤗 Transformers قد لا تقوم بتحميل جميع الكائنات المتعلقة بـ TensorFlow في ملف النموذج. لتجنب المشكلات المتعلقة بحفظ وتحميل نماذج TensorFlow، نوصي بما يلي: + +- احفظ أوزان النموذج كملف `h5` باستخدام [`model.save_weights`](https://www.tensorflow.org/tutorials/keras/save_and_load#save_the_entire_model) ثم أعد تحميل النموذج باستخدام [`~TFPreTrainedModel.from_pretrained`]: + +```python +>>> from transformers import TFPreTrainedModel +>>> from tensorflow import keras + +>>> model.save_weights("some_folder/tf_model.h5") +>>> model = TFPreTrainedModel.from_pretrained("some_folder") +``` + +- احفظ النموذج باستخدام [`~TFPretrainedModel.save_pretrained`] وقم بتحميله مرة أخرى باستخدام [`~TFPreTrainedModel.from_pretrained`]: + +```python +>>> from transformers import TFPreTrainedModel + +>>> model.save_pretrained("path_to/model") +>>> model = TFPreTrainedModel.from_pretrained("path_to/model") +``` + +## ImportError + +خطأ شائع آخر قد تواجهه، خاصة إذا كان نموذجًا تم إصداره حديثًا، هو `ImportError`: + +``` +ImportError: cannot import name 'ImageGPTImageProcessor' from 'transformers' (unknown location) +``` + +بالنسبة لأنواع الأخطاء هذه، تحقق من أن لديك أحدث إصدار من مكتبة Hugging Face Transformers مثبتًا للوصول إلى أحدث النماذج: + +```bash +pip install transformers --upgrade +``` + +## خطأ CUDA: تم تشغيل التأكيد على جانب الجهاز + +في بعض الأحيان، قد تواجه خطأ CUDA عامًا حول خطأ في كود الجهاز. + +``` +RuntimeError: CUDA error: device-side assert triggered +``` + +يجب عليك محاولة تشغيل الكود على وحدة المعالجة المركزية (CPU) أولاً للحصول على رسالة خطأ أكثر دقة. أضف متغير البيئة التالي في بداية كودك للتبديل إلى وحدة المعالجة المركزية: + +```بايثون +>>> import os + +>>> os.environ["CUDA_VISIBLE_DEVICES"] = "" +``` + +الخيار الآخر هو الحصول على تتبع مكدس أفضل من GPU. أضف متغير البيئة التالي في بداية كودك للحصول على تتبع المكدس للإشارة إلى مصدر الخطأ: + +```بايثون +>>> import os + +>>> os.environ["CUDA_LAUNCH_BLOCKING"] = "1" +``` + +## إخراج غير صحيح عند عدم إخفاء رموز الحشو + +في بعض الحالات، قد يكون `hidden_state` غير صحيحة إذا تضمنت `input_ids` رموز حشو. ولإثبات ذلك، قم بتحميل نموذج ومجزىء لغوى. يمكنك الوصول إلى `pad_token_id` للنموذج لمعرفة قيمته. قد تكون `pad_token_id` `None` لبعض النماذج، ولكن يمكنك دائمًا تعيينها يدويًا. + +```بايثون +>>> from transformers import AutoModelForSequenceClassification +>>> import torch + +>>> model = AutoModelForSequenceClassification.from_pretrained("google-bert/bert-base-uncased") +>>> model.config.pad_token_id +0 +``` + +يوضح المثال التالي المُخرجات بدون إخفاء رموز الحشو: + +```python +>>> input_ids = torch.tensor([[7592, 2057, 2097, 2393, 9611, 2115], [7592, 0, 0, 0, 0, 0]]) +>>> output = model(input_ids) +>>> print(output.logits) +tensor([[ 0.0082, -0.2307], +[ 0.1317, -0.1683]], grad_fn=) +``` + +هنا المُخرجات الفعلية للتسلسل الثاني: + +```python +>>> input_ids = torch.tensor([[7592]]) +>>> output = model(input_ids) +>>> print(output.logits) +tensor([[-0.1008, -0.4061]], grad_fn=) +``` + +يجب عليك في معظم الوقت توفير `attention_mask` للنموذج لتجاهل رموز الحشو لتجنب هذا الخطأ الصامت. الآن يتطابق مُخرجات التسلسل الثاني مع مُخرجاته الفعلية: + + +بشكل افتراضي، ينشئ مجزىء النصوص `attention_mask` لك استنادًا إلى إعدادات المجزىء المحدد. + + +```python +>>> attention_mask = torch.tensor([[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0]]) +>>> output = model(input_ids, attention_mask=attention_mask) +>>> print(output.logits) +tensor([[ 0.0082, -0.2307], +[-0.1008, -0.4061]], grad_fn=) +``` + +لا ينشئ 🤗 Transformers تلقائيًا `attention_mask` لإخفاء رمز الحشو إذا تم توفيره لأن: + +- بعض النماذج ليس لها رمز حشو. + +- بالنسبة لبعض الاستخدامات، يريد المستخدمون أن ينتبه النموذج إلى رمز الحشو. +## ValueError: فئة التكوين غير المعترف بها XYZ لهذا النوع من AutoModel + +بشكل عام، نوصي باستخدام فئة [`AutoModel`] لتحميل النسخ المدربة مسبقًا من النماذج. يمكن لهذه الفئة أن تستنتج وتُحمل تلقائيًا البنية الصحيحة من نسخ معينة بناءً على التكوين. إذا رأيت هذا الخطأ `ValueError` عند تحميل نموذج من نسخة، فهذا يعني أن الفئة التلقائية (Auto) لم تتمكن من العثور على خريطة من التكوين في نقطة التفتيش المعطاة إلى نوع النموذج الذي تُحاول تحميله. وغالبًا ما يحدث هذا عندما لا تدعم نقطة التفتيش مهمة معينة. + +على سبيل المثال، سترى هذا الخطأ في المثال التالي لأنه لا يوجد GPT2 للإجابة على الأسئلة: + +```py +>>> from transformers import AutoProcessor, AutoModelForQuestionAnswering + +>>> processor = AutoProcessor.from_pretrained("openai-community/gpt2-medium") +>>> model = AutoModelForQuestionAnswering.from_pretrained("openai-community/gpt2-medium") +ValueError: Unrecognized configuration class for this kind of AutoModel: AutoModelForQuestionAnswering. +Model type should be one of AlbertConfig, BartConfig, BertConfig, BigBirdConfig, BigBirdPegasusConfig, BloomConfig, ... +``` \ No newline at end of file From 73befd1fc99d438409a0fda6d351cdfa61e4e557 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:41:41 +0300 Subject: [PATCH 23/25] Update _toctree.yml --- docs/source/ar/_toctree.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/ar/_toctree.yml b/docs/source/ar/_toctree.yml index 67564c43556d..d9523eaf5da5 100644 --- a/docs/source/ar/_toctree.yml +++ b/docs/source/ar/_toctree.yml @@ -127,16 +127,16 @@ title: التصدير إلى ONNX - local: tflite title: التصدير إلى TFLite -# - local: torchscript -# title: التصدير إلى TorchScript + - local: torchscript + title: التصدير إلى TorchScript # - local: benchmarks # title: المعايير # - local: notebooks # title: دفاتر الملاحظات مع الأمثلة # - local: community # title: موارد المجتمع -# - local: troubleshooting -# title: استكشاف الأخطاء وإصلاحها + - local: troubleshooting + title: استكشاف الأخطاء وإصلاحها - local: gguf title: التوافق مع ملفات GGUF title: أدلة المطورين From 38c1ef72f8c6ed757074d0db51048c2be5659b04 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:48:58 +0300 Subject: [PATCH 24/25] Update torchscript.md --- docs/source/ar/torchscript.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/source/ar/torchscript.md b/docs/source/ar/torchscript.md index 329f7624d89f..bf0bc0dde04b 100644 --- a/docs/source/ar/torchscript.md +++ b/docs/source/ar/torchscript.md @@ -43,9 +43,6 @@ انتبه إلى إجمالي عدد العمليات المُنفذة على كل مُدخل وتابع الأداء عن كثب عند تصدير نماذج متغيرة طول التسلسل. -## استخدام TorchScript في Python -كن حذرًا من إجمالي عدد العمليات التي تتم على كل إدخال واتبع الأداء عن كثب عند تصدير نماذج طول التسلسل المتغيرة. - ## استخدام TorchScript في Python يوضح هذا القسم كيفية حفظ النماذج وتحميلها، بالإضافة إلى كيفية استخدام التتبع للاستدلال. @@ -154,4 +151,4 @@ import torch.neuron يتيح ذلك لـ Neuron SDK تتبع النموذج وتحسينه لمثيلات Inf1. -لمعرفة المزيد حول ميزات AWS Neuron SDK والأدوات ودروس البرامج التعليمية والتحديثات الأخيرة، يرجى الاطلاع على [وثائق AWS NeuronSDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/index.html). \ No newline at end of file +لمعرفة المزيد حول ميزات AWS Neuron SDK والأدوات ودروس البرامج التعليمية والتحديثات الأخيرة، يرجى الاطلاع على [وثائق AWS NeuronSDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/index.html). From b832362b905df0094d45ff8b3ac9c2aff63d7fcc Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:50:47 +0300 Subject: [PATCH 25/25] Update troubleshooting.md --- docs/source/ar/troubleshooting.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/ar/troubleshooting.md b/docs/source/ar/troubleshooting.md index 51a45376fba2..7874a9fad133 100644 --- a/docs/source/ar/troubleshooting.md +++ b/docs/source/ar/troubleshooting.md @@ -90,7 +90,7 @@ RuntimeError: CUDA error: device-side assert triggered يجب عليك محاولة تشغيل الكود على وحدة المعالجة المركزية (CPU) أولاً للحصول على رسالة خطأ أكثر دقة. أضف متغير البيئة التالي في بداية كودك للتبديل إلى وحدة المعالجة المركزية: -```بايثون +```python >>> import os >>> os.environ["CUDA_VISIBLE_DEVICES"] = "" @@ -98,7 +98,7 @@ RuntimeError: CUDA error: device-side assert triggered الخيار الآخر هو الحصول على تتبع مكدس أفضل من GPU. أضف متغير البيئة التالي في بداية كودك للحصول على تتبع المكدس للإشارة إلى مصدر الخطأ: -```بايثون +```python >>> import os >>> os.environ["CUDA_LAUNCH_BLOCKING"] = "1" @@ -108,7 +108,7 @@ RuntimeError: CUDA error: device-side assert triggered في بعض الحالات، قد يكون `hidden_state` غير صحيحة إذا تضمنت `input_ids` رموز حشو. ولإثبات ذلك، قم بتحميل نموذج ومجزىء لغوى. يمكنك الوصول إلى `pad_token_id` للنموذج لمعرفة قيمته. قد تكون `pad_token_id` `None` لبعض النماذج، ولكن يمكنك دائمًا تعيينها يدويًا. -```بايثون +```python >>> from transformers import AutoModelForSequenceClassification >>> import torch @@ -168,4 +168,4 @@ tensor([[ 0.0082, -0.2307], >>> model = AutoModelForQuestionAnswering.from_pretrained("openai-community/gpt2-medium") ValueError: Unrecognized configuration class for this kind of AutoModel: AutoModelForQuestionAnswering. Model type should be one of AlbertConfig, BartConfig, BertConfig, BigBirdConfig, BigBirdPegasusConfig, BloomConfig, ... -``` \ No newline at end of file +```