Skip to content

Commit 6de2a4d

Browse files
[i18n-ar] Translated file : docs/source/ar/torchscript.md into Arabic (#33079)
* Add docs/source/ar/torchscript.md to Add_docs_source_ar_torchscript.md * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/torchscript.md Co-authored-by: Abdullah Mohammed <[email protected]> * Merge troubleshooting.md with this Branch * Update _toctree.yml * Update torchscript.md * Update troubleshooting.md --------- Co-authored-by: Abdullah Mohammed <[email protected]>
1 parent 25f510a commit 6de2a4d

File tree

3 files changed

+329
-4
lines changed

3 files changed

+329
-4
lines changed

docs/source/ar/_toctree.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -127,16 +127,16 @@
127127
title: التصدير إلى ONNX
128128
- local: tflite
129129
title: التصدير إلى TFLite
130-
# - local: torchscript
131-
# title: التصدير إلى TorchScript
130+
- local: torchscript
131+
title: التصدير إلى TorchScript
132132
# - local: benchmarks
133133
# title: المعايير
134134
# - local: notebooks
135135
# title: دفاتر الملاحظات مع الأمثلة
136136
# - local: community
137137
# title: موارد المجتمع
138-
# - local: troubleshooting
139-
# title: استكشاف الأخطاء وإصلاحها
138+
- local: troubleshooting
139+
title: استكشاف الأخطاء وإصلاحها
140140
- local: gguf
141141
title: التوافق مع ملفات GGUF
142142
title: أدلة المطورين

docs/source/ar/torchscript.md

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# التصدير إلى TorchScript
2+
3+
<Tip>
4+
5+
هذه هي بداية تجاربنا مع TorchScript ولا زلنا نستكشف قدراته مع نماذج المدخلات المتغيرة الحجم. إنه مجال اهتمامنا وسنعمق تحليلنا في الإصدارات القادمة، مع المزيد من الأمثلة البرمجية، وتنفيذ أكثر مرونة، ومقاييس مقارنة بين الأكواد القائمة على Python مع أكواد TorchScript المُجمّعة.
6+
7+
</Tip>
8+
9+
وفقًا لـ [وثائق TorchScript](https://pytorch.org/docs/stable/jit.html):
10+
11+
> TorchScript هي طريقة لإنشاء نماذج قابلة للتسلسل والتحسين من تعليمات PyTorch البرمجية.
12+
13+
هناك وحدتان من PyTorch، [JIT and TRACE](https://pytorch.org/docs/stable/jit.html)، تتيحان للمطورين تصدير نماذجهم لإعادة استخدامها في برامج أخرى مثل برامج C++ المُحسّنة للأداء.
14+
15+
نقدم واجهة تتيح لك تصدير نماذج 🤗 Transformers إلى TorchScript بحيث يمكن إعادة استخدامها في بيئة مختلفة عن برامج Python القائمة إلى PyTorch. هنا نشرح كيفية تصدير نماذجنا واستخدامها باستخدام TorchScript.
16+
17+
يتطلب تصدير نموذج أمرين:
18+
19+
- تهيئة مثيل للنموذج باستخدام علامة `torchscript`
20+
- تمرير مُدخلات وهمية (dummy inputs) خلال النموذج
21+
22+
تنطوي هذه الضرورات على عدة أمور يجب على المطورين توخي الحذر بشأنها كما هو مفصل أدناه.
23+
24+
## علامة TorchScript والأوزان المرتبطة
25+
26+
علامة `torchscript` ضرورية لأن معظم نماذج اللغة 🤗 Transformers لها أوزان مرتبطة بين طبقة `Embedding` وطبقة `Decoding`. لا يسمح لك TorchScript بتصدير النماذج ذات الأوزان المرتبطة، لذلك من الضروري فصل الأوزان ونسخها مسبقًا.
27+
28+
النماذج المُهيأة باستخدام علامة `torchscript` لها طبقة `Embedding` وطبقة`Decoding` منفصلتين، مما يعني أنه لا ينبغي تدريبها لاحقًا. سيؤدي التدريب إلى عدم تزامن الطبقتين، مما يؤدي إلى نتائج غير متوقعة.
29+
30+
هذا لا ينطبق على النماذج التي لا تحتوي على رأس نموذج اللغة، حيث لا تملك أوزانًا مرتبطة. يمكن تصدير هذه النماذج بأمان دون علامة `torchscript`.
31+
32+
## المدخلات الوهمية والأطوال القياسية
33+
34+
تُستخدم المُدخلات الوهمية لتمرير أمامي خلال النموذج. أثناء انتشار قيم المُدخلات عبر الطبقات، يتتبع PyTorch العمليات المختلفة التي يتم تنفيذها على كل مصفوفة(tensor). ثم يتم استخدام هذه العمليات المُسجلة بعد ذلك لإنشاء *أثر* النموذج.
35+
36+
يتم إنشاء التتبع بالنسبة لأبعاد المُدخلات. وبالتالي، فهو مُقيّد بأبعاد المُدخلات الوهمية، ولن يعمل لأي طول تسلسل أو حجم دفعة مختلف. عند المحاولة بحجم مختلف، يتم رفع الخطأ التالي:
37+
38+
```
39+
`The expanded size of the tensor (3) must match the existing size (7) at non-singleton dimension 2`
40+
```
41+
42+
نوصي بتتبع النموذج باستخدام حجم مُدخلات وهمية لا يقل عن أكبر مُدخل سيتم تقديمه للنموذج أثناء الاستدلال. يمكن أن تساعد الحشوة(padding) في ملء القيم المفقودة. ومع ذلك، نظرًا لتتبع النموذج بحجم مُدخل أكبر، ستكون أبعاد المصفوفة ستكون كبيرة أيضًا، مما يؤدي عنه المزيد من الحسابات.
43+
44+
انتبه إلى إجمالي عدد العمليات المُنفذة على كل مُدخل وتابع الأداء عن كثب عند تصدير نماذج متغيرة طول التسلسل.
45+
46+
## استخدام TorchScript في Python
47+
48+
يوضح هذا القسم كيفية حفظ النماذج وتحميلها، بالإضافة إلى كيفية استخدام التتبع للاستدلال.
49+
50+
### حفظ نموذج
51+
52+
لتصدير `BertModel` باستخدام TorchScript، قم بتهيئة ـ `BertModel` من فئة `BertConfig` ثم احفظه على القرص تحت اسم الملف `traced_bert.pt`:
53+
54+
```python
55+
from transformers import BertModel, BertTokenizer, BertConfig
56+
import torch
57+
58+
enc = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
59+
60+
# Tokenizing input text
61+
text = "[CLS] Who was Jim Henson ? [SEP] Jim Henson was a puppeteer [SEP]"
62+
tokenized_text = enc.tokenize(text)
63+
64+
# Masking one of the input tokens
65+
masked_index = 8
66+
tokenized_text[masked_index] = "[MASK]"
67+
indexed_tokens = enc.convert_tokens_to_ids(tokenized_text)
68+
segments_ids = [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
69+
70+
# Creating a dummy input
71+
tokens_tensor = torch.tensor([indexed_tokens])
72+
segments_tensors = torch.tensor([segments_ids])
73+
dummy_input = [tokens_tensor, segments_tensors]
74+
75+
# Initializing the model with the torchscript flag
76+
# Flag set to True even though it is not necessary as this model does not have an LM Head.
77+
config = BertConfig(
78+
vocab_size_or_config_json_file=32000,
79+
hidden_size=768,
80+
num_hidden_layers=12,
81+
num_attention_heads=12,
82+
intermediate_size=3072,
83+
torchscript=True,
84+
)
85+
86+
# Instantiating the model
87+
model = BertModel(config)
88+
89+
# The model needs to be in evaluation mode
90+
model.eval()
91+
92+
# If you are instantiating the model with *from_pretrained* you can also easily set the TorchScript flag
93+
model = BertModel.from_pretrained("google-bert/bert-base-uncased", torchscript=True)
94+
95+
# Creating the trace
96+
traced_model = torch.jit.trace(model, [tokens_tensor, segments_tensors])
97+
torch.jit.save(traced_model, "traced_bert.pt")
98+
```
99+
100+
### تحميل نموذج
101+
102+
يمكنك الآن تحميل `BertModel` المُحفظ سابقًا، `traced_bert.pt`، من القرص واستخدامه على `dummy_input` المُهيأ سابقًا:
103+
104+
```python
105+
loaded_model = torch.jit.load("traced_bert.pt")
106+
loaded_model.eval()
107+
108+
all_encoder_layers, pooled_output = loaded_model(*dummy_input)
109+
```
110+
111+
### استخدام نموذج مُتتبع للاستدلال
112+
113+
استخدم النموذج المُتتبع للاستدلال باستخدام أسلوب `__call__` الخاص به:
114+
115+
```python
116+
traced_model(tokens_tensor, segments_tensors)
117+
```
118+
119+
## نشر نماذج Hugging Face TorchScript على AWS باستخدام Neuron SDK
120+
121+
قدمت 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 ما يلي:
122+
123+
1. واجهة برمجة تطبيقات سهلة الاستخدام مع تغيير سطر واحد من التعليمات البرمجية لتتبع نموذج TorchScript وتحسينه للاستدلال في البيئة السحابية.
124+
2. تحسينات الأداء الجاهزة للاستخدام [تحسين التكلفة والأداء](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/benchmark/>).
125+
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).
126+
127+
### الآثار المترتبة
128+
129+
تعمل نماذج المحولات المستندة إلى بنية [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.
130+
131+
### التبعيات (Dependencies)
132+
133+
يتطلب استخدام 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).
134+
135+
### تحويل نموذج لـ AWS Neuron
136+
137+
قم بتحويل نموذج لـ AWS NEURON باستخدام نفس التعليمات البرمجية من [استخدام TorchScript في Python](torchscript#using-torchscript-in-python) لتتبع `BertModel`. قم باستيراد امتداد إطار عمل `torch.neuron` للوصول إلى مكونات Neuron SDK من خلال واجهة برمجة تطبيقات Python:
138+
139+
```python
140+
from transformers import BertModel, BertTokenizer, BertConfig
141+
import torch
142+
import torch.neuron
143+
```
144+
145+
كل ما عليك فعله هو تعديل السطر التالي:
146+
147+
```diff
148+
- torch.jit.trace(model, [tokens_tensor, segments_tensors])
149+
+ torch.neuron.trace(model, [token_tensor, segments_tensors])
150+
```
151+
152+
يتيح ذلك لـ Neuron SDK تتبع النموذج وتحسينه لمثيلات Inf1.
153+
154+
لمعرفة المزيد حول ميزات AWS Neuron SDK والأدوات ودروس البرامج التعليمية والتحديثات الأخيرة، يرجى الاطلاع على [وثائق AWS NeuronSDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/index.html).

0 commit comments

Comments
 (0)