Transformers documentation

المصطلحات

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

المصطلحات

يُعرّف هذا المسرد المصطلحات العامة في تعلم الآلة ومصطلحات 🤗 Transformers لمساعدتك على فهم التوثيق بشكل أفضل.

A

قناع الانتباه

قناع الانتباه هو معامل اختياري يُستخدم عند تجميع التسلسلات في دفعة واحدة.

تُشير هذه الحجة إلى النموذج أي الرموز التي يجب الانتباه إليها وأيها يجب تجاهلها.

على سبيل المثال، فكّر في هاتين التسلسلين:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."

>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]

تختلف أطوال الإصدارات المُرمّزة:

>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)

لذلك، لا يمكننا وضعهما معًا في نفس الموتر كما هو. يجب إما ملء التسلسل الأول حتى يطابق طول التسلسل الثاني، أو تقصير التسلسل الثاني حتى يطابق طول التسلسل الأول.

في الحالة الأولى، سيتم توسيع قائمة المعرّفات بمؤشرات الحشو. يمكننا تمرير قائمة إلى مُجزّئ الرموز وطلب إضافة الحشو إليها على النحو التالي:

>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)

يمكننا ملاحظة أنه تمت إضافة أصفار على يمين الجملة الأولى لجعلها بنفس طول الجملة الثانية:

>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]

يمكن بعد ذلك تحويل ذلك إلى متجه (tensor) في PyTorch. قناع الانتباه (attention mask) هو متجه ثنائي (binary tensor) يُظهر موضع الفهارس المُكمّلة (padded indices) حتى لا ينتبه النموذج إليها. بالنسبة إلى BertTokenizer، يُشير 1 إلى قيمة يجب الانتباه إليها، بينما يُشير 0 إلى قيمة مُكمّلة. يوجد هذا قناع الانتباه في القاموس (dictionary) الذي يعيده المُرمّز (tokenizer) تحت المفتاح “attention_mask”:

>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

نماذج الترميز التلقائي

انظر إلى نماذج المُشفِّر ونمذجة اللغة المقنّعة

النماذج التوليدية

راجع النمذجة اللغوية السببية ونماذج المُفكِّك

B

الهيكل

العمود الفقري هو الشبكة (التمثيلات والطبقات) التي تُخرج الحالات المخفية الخام أو الميزات. عادةً ما يتم توصيله برأس head الذي يستقبل الميزات كمدخلات له لإجراء تنبؤ. على سبيل المثال، ViTModel هو عمود فقري بدون رأس محدد في الأعلى. يمكن لنماذج أخرى أيضًا استخدام ViTModel كعمود فقري، مثل DPT.

C

النمذجة اللغوية السببية

مهمة تدريب مسبق حيث يقرأ النموذج النصوص بالترتيب ويتعين عليه التنبؤ بالكلمة التالية. يتم تنفيذها عادةً من خلال قراءة الجملة بأكملها مع استخدام قناع داخل النموذج لإخفاء الرموز المستقبلية في خطوة زمنية معينة.

قناة

تتكوّن الصور الملونة من بعض التوليفات من القيم في ثلاثة قنوات: الأحمر والأخضر والأزرق (RGB)، بينما تحتوي الصور الرمادية على قناة واحدة فقط. في 🤗 Transformers، يمكن أن تكون القناة هي البُعد الأول أو الأخير من مُتجه الصورة: [n_channels, height, width] أو [height, width, n_channels].

التصنيف الزمني الاتصال (CTC)

خوارزمية تتيح للنموذج التعلم دون معرفة كيفية محاذاة المدخلات والمخرجات بدقة؛ حيث يحسب CTC توزيع جميع المخرجات الممكنة لمدخل معين ويختار منها المخرج الأكثر احتمالاً. يُستخدم CTC بشكل شائع في مهام التعرف على الكلام لأن الكلام لا يتطابق دائمًا بشكل نظيف مع النص المكتوب لعدة أسباب، مثل اختلاف معدلات الكلام لدى المتحدث.

التماس

نوع من الطبقات في الشبكة العصبية حيث تُضرب مصفوفة الإدخال عنصرًا بعنصر بمصفوفة أصغر (نواة أو مرشح) ثم تُجمع القيم في مصفوفة جديدة. يُعرف هذا بالعملية التلافيفية (Convolutional operation) التي تتكرر على كامل مصفوفة الإدخال. تُطبَّق كل عملية على مقطع مختلف من مصفوفة الإدخال. تُستخدم الشبكات العصبية التلافيفية (CNNs) بشكل شائع في مجال الرؤية الحاسوبية.

D

DataParallel (DP)

تقنية توازي لتدريب على وحدات معالجة رسومية متعددة حيث يُنسخ نفس الإعداد عدة مرات، مع استلام كل نسخة شريحة بيانات مميزة. يتم المعالجة بالتوازي وتُزامَن جميع الإعدادات في نهاية كل خطوة تدريب.

اعرف المزيد حول DataParallel.

معرفات مدخلات المُفكِّك

هذا الإدخال خاص بنماذج المُشفِّر-المُفكِّك (encoder-decoder)، ويحتوي على معرّفات الإدخال التي ستُمرَّر إلى المُفكِّك. ينبغي استخدام هذه المدخلات لمهام تسلسل إلى تسلسل، مثل الترجمة أو التلخيص، وعادةً ما تُبنى بطريقة خاصة بكل نموذج.

تُنشئ معظم نماذج المُشفِّر-المُفكِّك (BART، T5) decoder_input_ids الخاصة بها بنفسها من labels. في مثل هذه النماذج، يُعد تمرير labels الطريقة المفضلة للتعامل مع التدريب.

يرجى الرجوع إلى توثيق كل نموذج للاطلاع على كيفية تعامله مع هذه المعرّفات المدخلة في التدريب من تسلسل إلى تسلسل.

نماذج فك الترميز

تُعرف أيضًا بنماذج التوليد الذاتي (autoregressive models)، وتعتمد نماذج المُفكِّك (decoder) على مهمة تدريب مسبق (تُسمى نمذجة اللغة السببية) حيث يقرأ النموذج النصوص بالترتيب ويتعين عليه التنبؤ بالكلمة التالية. وعادةً ما يتم ذلك عن طريق قراءة الجملة بأكملها مع استخدام قناع (mask) لإخفاء الرموز المستقبلية في خطوة زمنية معينة.

التعلم العميق (DL)

خوارزميات تعلم الآلة التي تستخدم شبكات عصبية متعددة الطبقات.

E

نماذج المُشفِّرة

تُعرف نماذج الترميز أيضًا بنماذج الترميز الذاتي، حيث تستقبل مدخلًا (مثل النص أو الصور) وتحوّله إلى تمثيل رقمي مكثف يُسمى التضمين. وغالبًا ما يتم تدريب نماذج الترميز مسبقًا باستخدام تقنيات مثل نمذجة اللغة المقنّعة، التي تُخفي أجزاء من تسلسل المدخلات وتجبر النموذج على إنشاء تمثيلات أكثر دلالة.

F

استخراج الميزات

عملية اختيار البيانات الخام وتحويلها إلى مجموعة من الميزات الأكثر إفادةً وملاءمةً لخوارزميات التعلم الآلي. تتضمن أمثلة استخراج الميزات تحويل النص الخام إلى تمثيلات الكلمات، واستخراج الميزات المهمة مثل الحواف أو الأشكال من بيانات الصور أو الفيديو.

تجزئة الأمامية

في كل كتلة انتباه متبقية في transformers، يتبع طبقة الانتباه الذاتي عادةً طبقتان للأمام. غالبًا ما يكون حجم التضمين الوسيط لطبقات الأمام أكبر من حجم الإخفاء للنموذج (على سبيل المثال، لـ google-bert/bert-base-uncased).

في حالة إدخال بحجم [batch_size, sequence_length]، يمكن أن يمثل الذاكرة المطلوبة لتخزين التضمينات الوسيطة للطبقات الأمامية [batch_size, sequence_length, config.intermediate_size] نسبة كبيرة من استخدام الذاكرة. لاحظ مؤلفو Reformer: The Efficient Transformer أنه بما أن الحساب مستقل عن بُعد sequence_length، فإن حساب التضمينات الناتجة لكلتا الطبقتين الأماميتين [batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n بشكل فردي ثم دمجها لاحقًا إلى [batch_size, sequence_length, config.hidden_size] باستخدام n = sequence_length مكافئ رياضياً، وهو ما يوازن بين زيادة وقت الحساب مقابل تقليل استخدام الذاكرة، لكنه يعطي نتيجة مكافئة رياضياً.

بالنسبة للنماذج التي تستخدم الدالة apply_chunking_to_forward()، يحدد chunk_size عدد تضمينات الإخراج التي يتم حسابها بالتوازي، وبالتالي يحدد التوازن بين تعقيد الذاكرة وتعقيد الوقت. إذا تم تعيين chunk_size إلى 0، فلن يتم تنفيذ تقسيم التقدّم الأمامي.

النماذج المُحسّنة

يُعدّ الضبط الدقيق (Finetuning) شكلاً من أشكال التعلم الانتقالي، حيث يتم أخذ نموذج مُدرَّب مسبقاً، وتجميد أوزانه، واستبدال طبقة الإخراج برأس نموذج model head مُضاف حديثاً. يتم تدريب رأس النموذج على مجموعة البيانات المستهدفة لديك.

راجع شريط التعليمات ضبط نموذج مُدرَّب مسبقًا لمزيد من التفاصيل، وتعلّم كيفية ضبط النماذج باستخدام 🤗 Transformers.

H

رأس

يشير رأس النموذج إلى الطبقة الأخيرة في الشبكة العصبية التي تستقبل الحالات المخفية الخام وتُرجعها إلى بُعد مختلف. يوجد رأس نموذج مختلف لكل مهمة. على سبيل المثال:

I

بقعة الصورة

تقوم نماذج Transformers القائمة على الرؤية بتقسيم الصورة إلى بقع أصغر تُضمَّن خطيًا، ثم تُمرَّر كسلسلة إلى النموذج. يمكنك العثور على patch_size - أو الدقة - للنموذج في ملفه الإعدادي.

الاستدلال

الاستدلال هو عملية تقييم النموذج على بيانات جديدة بعد اكتمال التدريب. راجع شروحات خط أنابيب الاستدلال لمعرفة كيفية تنفيذ الاستدلال باستخدام 🤗 Transformers.

معرّفات الإدخال

غالبًا ما تكون معرفات الإدخال هي المعاملات الوحيدة المطلوبة التي تُمرَّر إلى النموذج كإدخال. وهي فهارس الرموز، أي التمثيلات الرقمية للرموز التي تُشكّل التسلسلات التي سيستخدمها النموذج كإدخال.

يعمل كل مُجزِّئ (tokenizer) بشكل مختلف، لكن الآلية الأساسية تبقى واحدة. إليك مثالاً باستخدام مُجزِّئ BERT، وهو مُجزِّئ WordPiece:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence = "A Titan RTX has 24GB of VRAM"

يتولى مُجزِّئ النص مهمة تقسيم التسلسل إلى رموز متاحة في قاموس مُجزِّئ النص.

>>> tokenized_sequence = tokenizer.tokenize(sequence)

تكون الرموز إما كلمات أو أجزاء من كلمات. هنا على سبيل المثال، لم تكن “VRAM” ضمن قاموس النموذج، لذا تم تقسيمها إلى “V” و “RA” و “M”. ولإشارة إلى أن هذه الرموز ليست كلمات منفصلة بل أجزاء من نفس الكلمة، يُضاف بادئة من علامتي # للرمزين “RA” و “M”:

>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

يمكن بعد ذلك تحويل هذه الرموز إلى معرّفات يمكن للنموذج فهمها. ويتم ذلك عن طريق تمرير الجملة مباشرةً إلى مُجزّئ الرموز، الذي يستفيد من التنفيذ بلغة Rust في 🤗 Tokenizers لتحقيق أداءٍ ذروة.

>>> inputs = tokenizer(sequence)

يعيد مُجزِّئ النص (tokenizer) قاموسًا يحتوي على جميع الحُجج اللازمة لعمل النموذج المقابل بشكل صحيح. توجد فهارس الرموز تحت المفتاح input_ids:

>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]

لاحظ أن مُجزِّئ النص يضيف تلقائيًا “رموزًا خاصة” (إذا كان النموذج المرتبط يعتمد عليها) وهي معرّفات خاصة يستخدمها النموذج في بعض الأحيان.

إذا قمنا بفك ترميز تسلسل المعرّفات السابق،

>>> decoded_sequence = tokenizer.decode(encoded_sequence)

سنرى

>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]

لأن هذا هو الشكل الذي تتوقع به BertModel مدخلاتها.

L

التسميات

التسميات هي معامل اختياري يمكن تمريره حتى يقوم النموذج بحساب الخسارة بنفسه. يجب أن تكون هذه التسميات التوقع المتوقع من النموذج: إذ سيقوم باستخدام الخسارة القياسية لحساب الخسارة بين توقعاته والقيمة المتوقعة (التسمية).

تختلف هذه التسميات حسب رأس النموذج، على سبيل المثال:

  • في نماذج تصنيف التسلسل، (BertForSequenceClassification)، يتوقع النموذج متجهًا بعدد أبعاد (batch_size) حيث يتوافق كل قيمة في الدفعة مع التسمية المتوقعة للتسلسل بأكمله.
  • لنماذج تصنيف الرموز (BertForTokenClassification)، يتوقع النموذج متجهًا (tensor) بأبعاد (batch_size, seq_length) حيث يتوافق كل قيمة مع التسمية المتوقعة لكل رمز فردي.
  • لنمذجة اللغة المقنّعة، (BertForMaskedLM)، يتوقع النموذج متجهًا (tensor) بأبعاد (batch_size, seq_length) حيث يتوافق كل قيمة مع التسمية المتوقعة لكل رمز فردي: فالتسميات هي معرّف (ID) الرمز المقنّع، والقيم التي يجب تجاهلها لبقية الرموز (عادةً -100).
  • في مهام التحويل من تسلسل إلى تسلسل، (BartForConditionalGeneration، MBartForConditionalGeneration)، يتوقع النموذج متجهًا (tensor) بأبعاد (batch_size, tgt_seq_length) حيث يتوافق كل قيمة مع تسلسلات الهدف المرتبطة بكل تسلسل إدخال. أثناء التدريب، سيقوم كل من BART و T5 بإنشاء decoder_input_ids وأقنعة انتباه المُفكِّك المناسبة داخليًا. وعادةً لا حاجة إلى توفيرها. ولا ينطبق هذا على النماذج التي تعتمد على إطار Encoder-Decoder.
  • في نماذج تصنيف الصور، (ViTForImageClassification)، يتوقع النموذج متجهًا بعدد أبعاد (batch_size) حيث يتوافق كل قيمة في الدفعة مع التسمية المتوقعة لكل صورة على حدة.
  • لنماذج التقسيم الدلالي، (SegformerForSemanticSegmentation)، يتوقع النموذج متجهًا بأبعاد (batch_size, height, width) حيث يتوافق كل قيمة في الدفعة مع التسمية المتوقعة لكل بكسل فردي.
  • لنماذج كشف الكائنات، (DetrForObjectDetection)، يتوقع النموذج قائمة من القواميس تحتوي على مفتاح class_labels ومفتاح boxes، حيث يتوافق كل قيمة في الدفعة مع التسمية المتوقعة وعدد صناديق الحدود لكل صورة فردية.
  • لنماذج التعرف التلقائي على الكلام، (Wav2Vec2ForCTC)، يتوقع النموذج متجهًا (tensor) بأبعاد (batch_size, target_length) حيث يتوافق كل قيمة مع التسمية المتوقعة لكل رمز فردي.

قد تختلف تسميات كل نموذج، لذا تأكد دائمًا من الرجوع إلى توثيق كل نموذج للحصول على مزيد من المعلومات حول تسمياته المحددة!

لا تقبل النماذج الأساسية (BertModel) التسميات، إذ إنها نماذج التحويل الأساسية التي تخرج الميزات فقط.

نماذج اللغة الكبيرة (LLM)

مصطلح عام يشير إلى نماذج اللغة التحويلية (GPT-3، BLOOM، OPT) التي تم تدريبها على كميات كبيرة من البيانات. تميل هذه النماذج أيضًا إلى امتلاك عدد كبير من المعلمات القابلة للتعلم (مثل 175 مليارًا في حالة GPT-3).

M

نمذجة اللغة المقنّعة (MLM)

مهمة تدريب مسبق يرى فيها النموذج نسخة تالفة من النصوص، يتم ذلك عادةً عن طريق إخفاء بعض الرموز عشوائياً، ويتعين عليه التنبؤ بالنص الأصلي.

متعدد الوسائط

مهمة تجمع بين النصوص وأنواع أخرى من المدخلات (مثل الصور على سبيل المثال).

N

توليد اللغة الطبيعية (NLG)

جميع المهام المتعلقة بتوليد النص (على سبيل المثال، الكتابة باستخدام Transformers، والترجمة).

معالجة اللغة الطبيعية (NLP)

طريقة عامة للإشارة إلى "التعامل مع النصوص".

فهم اللغة الطبيعية (NLU)

جميع المهام المتعلقة بفهم ما هو موجود في نص (على سبيل المثال تصنيف النص بأكمله، أو الكلمات الفردية).

P

pipeline

يُعد خط الأنابيب في 🤗 Transformers تجريدًا يشير إلى سلسلة من الخطوات التي تُنفَّذ بترتيب محدد لمعالجة البيانات مسبقًا وتحويلها وإرجاع تنبؤ من نموذج. ومن أمثلة المراحل التي قد توجد في خط أنابيب: المعالجة المسبقة للبيانات، واستخراج الميزات، والتطبيع.

لمزيد من التفاصيل، راجع خطوط أنابيب للاستدلال.

PipelineParallel (PP)

تقنية توازي يتم فيها تقسيم النموذج عمودياً (على مستوى الطبقات) عبر وحدات معالجة رسومية متعددة، بحيث تُوضع طبقة واحدة أو عدة طبقات من النموذج على وحدة معالجة رسومية واحدة. تعالج كل وحدة معالجة رسومية بالتوازي مراحل مختلفة من خط الأنابيب وتعمل على جزء صغير من الدفعة. تعرّف على المزيد حول PipelineParallel.

قيم البكسل

مصفوفة (Tensor) تمثل التمثيلات العددية لصورة تُمرَّر إلى نموذج. تكون قيم البكسلات على شكل [batch_size, num_channels, height, width]، وتُنتج بواسطة معالج الصور (image processor).

التجميع

عملية تقلّص مصفوفة إلى مصفوفة أصغر، إما بأخذ القيمة العظمى أو المتوسط للأبعاد المجمّعة. تُشاهَد طبقات التجميع عادةً بين طبقات الالتفاف لتقليل حجم تمثيل الميزات.

معرّفات الموضع

على عكس شبكات RNN التي تُضمَّن فيها موضع كل رمز داخلها، لا تُدرك نماذج transformers موضع كل رمز. لذلك، تُستخدم المعرّفات الموضعية (position_ids) من قِبل النموذج لتحديد موضع كل رمز ضمن قائمة الرموز.

إنها معلمة اختيارية. إذا لم يتم تمرير position_ids إلى النموذج، يتم إنشاء المعرّفات تلقائيًا كتمثيلات موضعية مطلقة.

تُختار التضمينات الموضعية المطلقة ضمن المدى [0, config.max_position_embeddings - 1]. تستخدم بعض النماذج أنواعًا أخرى من التضمينات الموضعية، مثل التضمينات الموضعية الجيبية أو التضمينات الموضعية النسبية.

المعالجة المسبقة

مهمة تجهيز البيانات الخام في صيغة يمكن للنماذج التعلُّمية الآلية استهلاكها بسهولة. على سبيل المثال، تتم معالجة النص مسبقًا عادةً عن طريق التقطيع إلى رموز. للحصول على فكرة أفضل عن شكل المعالجة المسبقة لأنواع المدخلات الأخرى، اطّلع على درس المعالجة المسبقة.

نموذج مُدرَّب مسبقًا

نموذج تم تدريبه مسبقًا على بعض البيانات (على سبيل المثال، ويكيبيديا بأكملها). تتضمن طرق التدريب المسبق هدفًا ذاتي الإشراف، يمكن أن يكون قراءة النص ومحاولة التنبؤ بالكلمة التالية (انظر نمذجة اللغة السببية) أو إخفاء بعض الكلمات ومحاولة التنبؤ بها (انظر نمذجة اللغة المقنّعة).

تتميز نماذج الكلام والرؤية بأهداف تدريب مسبق خاصة بها. على سبيل المثال، Wav2Vec2 هو نموذج كلام تم تدريبه مسبقًا على مهمة تباينية تتطلب من النموذج تحديد تمثيل الكلام «الصحيح» من مجموعة من تمثيلات الكلام «الخاطئة». في المقابل، BEiT هو نموذج رؤية تم تدريبه مسبقًا على مهمة نمذجة الصور المقنّعة التي تُخفي بعض رقعات الصورة وتتطلب من النموذج التنبؤ بالرقعات المخفية (بشكل مشابه لهدف نمذجة اللغة المقنّعة).

R

شبكة عصبية متكررة (RNN)

نوع من النماذج يستخدم حلقة على طبقة لمعالجة النصوص.

تعلم التمثيلات

فرع فرعي من تعلم الآلة يركّز على تعلّم تمثيلات ذات معنى للبيانات الخام. تتضمن بعض أمثلة تقنيات التمثيل التضمينات اللغوية، والمشفّرات التلقائية، والشبكات التوليدية الخصومية (GANs).

S

معدل أخذ العينات

قياس بالهرتز لعدد العينات (إشارة الصوت) المأخوذة في الثانية. معدل أخذ العينات هو نتيجة تحويل إشارة مستمرة، مثل الكلام، إلى إشارة منفصلة.

الانتباه الذاتي

تحدد كل عنصر من عناصر المدخل أي العناصر الأخرى من المدخل يجب أن ينتبه إليها.

التعلم غير المُشرِف

فئة من تقنيات تعلم الآلة يقوم فيها النموذج بإنشاء هدف التعلم الخاص به من بيانات غير موسومة. يختلف عن التعلم غير المُشرف و التعلم المُشرف في أن عملية التعلم مُشرفة، لكنها ليست مُشرفة بشكل صريح من قِبل المستخدم.

مثال على التعلم الذاتي الإشرافي هو نمذجة اللغة المقنّعة، حيث يُمرَّر إلى النموذج جُمل تم حذف نسبة من رموزها، ليتعلم التنبؤ بالرموز الناقصة.

التعلّم شبه المُشرِف

فئة واسعة من تقنيات تدريب تعلم الآلة تستفيد من كمية صغيرة من البيانات الموسومة مع كمية أكبر من البيانات غير الموسومة لتحسين دقة النموذج، على عكس التعلم المُشرف والتعلم غير المُشرف.

مثال على نهج التعلم شبه المُشرَّح هو “التدريب الذاتي”، حيث يُدرَّب نموذج على بيانات مُشرَّحة، ثم يُستخدم لإجراء تنبؤات على البيانات غير المُشرَّحة. يُضاف الجزء من البيانات غير المُشرَّحة الذي يتنبأ به النموذج بأعلى درجة من الثقة إلى مجموعة البيانات المُشرَّحة ويُستخدم لإعادة تدريب النموذج.

تسلسل إلى تسلسل (seq2seq)

النماذج التي تولّد تسلسلاً جديداً من مدخل، مثل نماذج الترجمة أو نماذج التلخيص (مثل Bart أو T5).

DDP المجزّأ

اسم آخر للمفهوم التأسيسي ZeRO كما تستخدمه تطبيقات أخرى مختلفة من ZeRO.

خطوة

في التماسك أو التجميع، يشير التخطي إلى المسافة التي يُزاح بها النواة فوق مصفوفة. التخطي بقيمة 1 يعني أن النواة تُزاح بكسل واحد في كل مرة، والتخطي بقيمة 2 يعني أن النواة تُزاح بكسلين في كل مرة.

التعلم المُشرف

شكل من أشكال تدريب النموذج يستخدم البيانات الموسومة مباشرةً لتصحيح أداء النموذج وتوجيهه. تُغذّى البيانات إلى النموذج قيد التدريب، وتُقارن تنبؤاته بالوسوم المعروفة. يقوم النموذج بتحديث أوزانه بناءً على مدى خطأ تنبؤاته، وتُكرر العملية لتحسين أداء النموذج.

T

التوازي على مستوى الموترات (TP)

تقنية توازي لتدريب النماذج على وحدات معالجة رسومية متعددة، يتم فيها تقسيم كل متجه (Tensor) إلى عدة أجزاء، بحيث لا يقيم المتجه بأكمله على وحدة معالجة رسومية واحدة، بل يقيم كل جزء من المتجه على وحدة المعالجة الرسومية المخصصة له. تُعالج هذه الأجزاء بشكل منفصل ومتوازٍ على وحدات معالجة رسومية مختلفة، ثم تتم مزامنة النتائج في نهاية خطوة المعالجة. يُطلق على هذا أحياناً اسم التوازي الأفقي، لأن التقسيم يتم على المستوى الأفقي. تعرّف على المزيد حول توازي المتجهات هنا.

رمز

جزء من الجملة، وهو عادةً كلمة، لكنه قد يكون أيضًا تحت كلمة (غالبًا ما تُقسَّم الكلمات غير الشائعة إلى تحت كلمات) أو رمز ترقيم.

معرّفات أنواع الرموز

غرض بعض النماذج هو تنفيذ التصنيف على أزواج من الجمل أو الإجابة عن الأسئلة.

These require two different sequences to be joined in a single “input_ids” entry, which usually is performed with the help of special tokens, such as the classifier ([CLS]) and separator ([SEP]) tokens. For example, the BERT model builds its two sequence input as such:

>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]

يمكننا استخدام مُجزّئنا (tokenizer) لتوليد مثل هذا الجملة تلقائيًا عن طريق تمرير التسلسلين إلى tokenizer كحجّتين (وليس كقائمة، كما كان من قبل) على النحو التالي:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"

>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])

والذي سيعيد:

>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]

هذا كافٍ لبعض النماذج لفهم أين تنتهي تسلسلة واحدة وأين تبدأ أخرى. ومع ذلك، تستخدم نماذج أخرى، مثل BERT، معرّفات أنواع الرموز (المعروفة أيضًا بمعرفات المقاطع). وهي ممثّلة كقناع ثنائي يميّز بين النوعين من التسلسلات في النموذج.

يعيد مُجزِّئ الرموز هذه القناع كعنصر “token_type_ids”:

>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]

تمثل جميع الرموز في التسلسل الأول، وهو “السياق” المستخدم للسؤال، برمز 0، بينما تمثل جميع الرموز في التسلسل الثاني، الذي يتوافق مع “السؤال”، برمز 1.

تستخدم بعض النماذج، مثل XLNetModel، رمزًا إضافيًا ممثلاً بـ 2.

التعلم الانتقالي

تقنية تتضمن أخذ نموذج مُدرَّب مسبقًا وتكييفه مع مجموعة بيانات خاصة بمهمتك. بدلاً من تدريب نموذج من الصفر، يمكنك الاستفادة من المعرفة المكتسبة من نموذج موجود كنقطة انطلاق. هذا يسرّع عملية التعلم ويقلل من كمية بيانات التدريب المطلوبة.

transformer

بنية نموذج تعلم عميق تعتمد على الانتباه الذاتي.

U

التعلم غير المُشرَف

شكل من أشكال تدريب النموذج لا يتم فيه وضع تسميات على البيانات المُقدَّمة للنموذج. تستفيد تقنيات التعلم غير المُشرف من المعلومات الإحصائية لتوزيع البيانات للعثور على أنماط مفيدة للمهمة قيد النظر.

Z

مُحسِّن الصفرية الزائدة (ZeRO)

تقنية توازي تقوم بتجزئة المتجهات (tensors) بشكل يشبه إلى حد ما TensorParallel، باستثناء أن المتجه الكامل يُعاد بناؤه في الوقت المناسب لحساب الأمامي أو الخلفي، وبالتالي لا حاجة لتعديل النموذج. تدعم هذه الطريقة أيضًا تقنيات إزاحة (offloading) متنوعة لتعويض محدودية ذاكرة وحدة معالجة الرسوميات (GPU). اطّلع على المزيد حول ZeRO هنا.

Update on GitHub