اذهب إلى المحتوى

تثبيت مكتبة المحوّلات Transformers


رشا سعد

تعرفنا في مقال سابق على مكتبة المحوّلات Transformers التي توفرها منصة Hugging Face واستعرضنا أبرز مميزاتها وتوافقها مع أي مكتبة تعلُّم عميق تستخدمها؛ وسنتعلم في هذا المقال كيفية تثبيت هذه المكتبة على حاسوبك المحلي وخطوات ضبط متغيرات الذاكرة المخبئية cache المتعلقة بها، والإعدادات اللازمة للتعامل مع المكتبة دون الحاجةللاتصال بالإنترنت.

هذه المكتبة مختبرة على إصدارات مختلفة من لغة بايثون من الإصدار 3.6 وأعلى، وإطار العمل باي تورش PyTorch من الإصدار 1.1.0 وأعلى، والإطار تنسرفلو TensorFlow من الإصدار 2 وأعلى، بالإضافة إلى مكتبة Flax.

وسنعرض في مقال اليوم تعليمات تثبيتها مع كل من:

اتبع التعليمات التي تناسبك من بينها.

التثبيت بواسطة مدير الحزم pip

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

أنشئ بيئةً افتراضية في مجلد مشروعك وفق التالي:

python -m venv .env

ثم فعّل البيئة الافتراضية، فإذا كنت تستخدم نظام تشغيل لينكس أو ماك اكتب هذا الأمر:

source .env/bin/activate

وإذا كنت تستخدم نظام التشغيل ويندوز فيمكنك تفعيلها بكتابة ما يلي:

.env/Scripts/activate

وبذلك تكون جاهزًا لتثبيت المكتبة من خلال التعليمة التالية:

pip install transformers

وفي حالة الأجهزة التي تعتمد في معالجتها على وحدة المعالجة المركزية (CPU) فقط فيمكنك تثبيت مكتبة التعلم العميق ومكتبة المحولات transformers في سطرٍ واحد، مثل السطر التالي الذي يبين طريقة تثبيت PyTorch و Transformers:

pip install 'transformers[torch]'

والآن لتثبيت Transformers و TensorFlow 2.0 نكتب:

pip install 'transformers[tf-cpu]'
اقتباس
اقتباس

إذا كان جهازك يعتمد على معالج M1 / ARM فستحتاج لتثبيت المكونات التالية قبل تثبيت TensorFlow 2.0:

brew install cmake
brew install pkg-config

وأخيرًا لتثبيت Transformers مع Flax نكتب الأمر التالي:

pip install 'transformers[flax]'

يمكنك التأكد من صحة تثبيت المكتبة transformers بتنفيذ السطر التالي الذي ينبغي أن يُحمّل نموذج تعلّم آلي مدرب مسبقًا pretrained model:

python -c "from transformers import pipeline; print(pipeline('sentiment-analysis')('we love you'))"

ولنعرض بعدها قاموس النموذج الذي حمّلناه والمتضمن مفتاحي التسمية التوضيحية label ومجموع النقاط score:

[{'label': 'POSITIVE', 'score': 0.9998704791069031}]

تثبيت المكتبة Transformers من المصدر الأساسي

يمكنك تثبيت مكتبة المحولات من مصدرها الأساسي (أي من مستودع منصة Hugging Face على github) بكتابة التالي:

pip install git+https://github.com/huggingface/transformers

بهذه الطريقة ستثبت الإصدار الأساسي من المكتبة main version وليس أحدث إصدار مستقر متوفر stable version، والفرق بينهما أن استخدام الإصدار الأساسي يبقيك على اطلاع بأحدث تطورات المكتبة أولًا بأول حتى إن لم تكن تحديثات مستقرة، فمثلًا إذا ظهر خطأ معين في الإصدار الرسمي للمكتبة فيمكن للجهة المطورة لها أن تصلحه إطلاق الإصدار الجديد وبذلك ستستفيد من الإصلاح قبل طرح الإصدار الجديد المستقر.

تأكد الآن من صحة تثبيت المكتبة بتنفيذ الأمر التالي:

python -c "from transformers import pipeline; print(pipeline('sentiment-analysis')('I love you'))"

تثبيت المكتبة تثبيًا قابلًا للتعديل

تحتاج هذا النوع من التثبيت القابل للتعديل Editable install في حالتين هما:

  • عندما تستخدم الإصدار الأساسي main version من الشيفرة المصدرية.
  • إذا أردت المساهمة في مشروع مكتبة المحوّلات واختبار تعديلات الشيفرات البرمجية.

لنبدأ أولًا باستنساخ مستودع المكتبة وتثبيتها كما يلي:

git clone https://github.com/huggingface/transformers.git
cd transformers
pip install -e .

ستعمل هذه الأوامر على وصل المجلد الذي استنسخت مستودع المكتبة ضمنه مع مسارات مكتبة بايثون التي تستخدمها، أي ستبحث بايثون عند تنفيذ الأوامر في هذا المجلد إضافةً إلى مجلدات المكتبة الاعتيادية التي تبحث فيها عادةً، فعلى سبيل المثال إذا كانت حزم بايثون مثبتة في المجلد /‎~/anaconda3/envs/main/lib/python3.7/site-packages فيجري البحث عن الأوامر ضمنه وضمن المجلد /‎~/transformers الذي استنسخت فيه المستودع.

اقتباس

حافظ على وجود المجلد transformers إذا كنت تنوي الاستمرار في استخدام المكتبة.

والآن حَدِّث ما استنسخته إلى أحدث إصدار من المكتبة وفق التالي:

cd ~/transformers/
git pull

ستكتشف البيئة الافتراضية لبايثون الإصدار الأساسي من المكتبة الذي ثبتناه وتبدأ بالتعامل معه بعد إعادة التشغيل.

التثبيت باستخدام conda

يمكنك تثبيت المكتبة باستخدام conda بدلًا من pip كما يلي:

conda install conda-forge::transformers

ضبط الذاكرة المخبئية Cache setup

يُشير المتغير TRANSFORMERS_CACHE، وهو أحد متغيرات البيئة للصدفة shell، إلى المجلد المحلي الذي ستُخَزَّن فيه النماذج المدربة مسبقًا التي ستُحمِّلها، وفي الوضع الافتراضي يكون هذا المجلد هو ‎~/.cache/huggingface/hub في لينكس، ويكون C:\Users\username\.cache\huggingface\hub في ويندوز، لكن يمكنك تغييره بتعديل قيم متغيرات البيئة للصدفة shell الواردة أدناه مع مراعاة ترتيبها فهي مرتبة حسب الأولوية:

  • المتغير HUGGINGFACE_HUB_CACHE أو TRANSFORMERS_CACHE.
  • المتغير HF_HOME.
  • المتغير XDG_CACHE_HOME + /huggingface.
اقتباس

إذا كنت تعتمد نسخةً قديمة من مكتبة المحولات ووضعت قيمًا للمتغيرين PYTORCH_TRANSFORMERS_CACHE أو PYTORCH_PRETRAINED_BERT_CACHE من متغيرات البيئة للصدفة shell فإن المكتبة ستستخدمهما طالما أنك لم تضبط المتغير TRANSFORMERS_CACHE.

العمل من دون اتصال بالإنترنت Offline Mode

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

تستطيع أيضًا أن توفر لمشروعك مجموعات بيانات Datasets محلية لاستخدامها في التدريب من دون اتصال بالإنترنت عبر ضبط قيمة المتغير HF_DATASETS_OFFLINE=1. كما في المثال التالي:

HF_DATASETS_OFFLINE=1 TRANSFORMERS_OFFLINE=1 \
python examples/pytorch/translation/run_translation.py --model_name_or_path google-t5/t5-small --dataset_name wmt16 --dataset_config ro-en ...

سيعمل هذا السكربت بلا تأخير أو انتظار لأنه لن يحاول الاتصال بالإنترنت لتحميل النموذج من مستودع Hugging Face بل سيستخدم الملفات المحلية فقط.

تستطيع أيضًا إيقاف تحميل النماذج من المستودع وتحميلها من المواقع المحلية فقط عن طريق ضبط قيمة المعامل local_files_only على True في كل مرة تستدعي فيها from_pretrained()‎ وفق التالي:

from transformers import T5Model

model = T5Model.from_pretrained("./path/to/local/directory", local_files_only=True)

جلب النماذج والمُرمِزَّات لاستخدامها في حالة العمل دون اتصال بالإنترنت

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

الطريقة الأولى: حمّل الملفات التي تريدها من واجهة المستخدم لمستودع النماذج بالضغط على أيقونة السهم النازل الموجودة بجوار كل ملف كما في الصورة التالية:

model download transformers

الطريقة الثانية: استخدم PreTrainedModel.from_pretrained()‎ و PreTrainedModel.save_pretrained()‎ وفق التسلسل التالي:

1. حمّل مسبقًا الملفات اللازمة لمشروعك بواسطة PreTrainedModel.from_pretrained()‎ كما يلي:

>>> from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

>>> tokenizer = AutoTokenizer.from_pretrained("bigscience/T0_3B")
>>> model = AutoModelForSeq2SeqLM.from_pretrained("bigscience/T0_3B")

2. احفظ ملفاتك في مجلد معين على حاسوبك باستخدام PreTrainedModel.save_pretrained()‎:

>>> tokenizer.save_pretrained("./your/path/bigscience_t0")
>>> model.save_pretrained("./your/path/bigscience_t0")

3. عندما تكون في وضع العمل من دون اتصال بالإنترنت أعد تحميل الملفات من المجلد الذي حفظته الملفات به بواسطة التعليمة PreTrainedModel.from_pretrained()‎:

>>> tokenizer = AutoTokenizer.from_pretrained("./your/path/bigscience_t0")
>>> model = AutoModel.from_pretrained("./your/path/bigscience_t0")

الطريقة الثالثة: حمّل الملفات برمجيًا باستخدام مكتبة huggingface_hub كما يلي:

1. ثَبّت المكتبة huggingface_hub في بيئتك الافتراضية:

python -m pip install huggingface_hub

2. استخدم الدالة hf_hub_download لتحميل الملف الذي تريده إلى المجلد المحلي المحدد، فالأمر التالي على سبيل المثال يُحَمِّل الملف config.json من النموذج "T0" إلى المجلد الذي تحدده:

>>> from huggingface_hub import hf_hub_download

>>> hf_hub_download(repo_id="bigscience/T0_3B", filename="config.json", cache_dir="./your/path/bigscience_t0")

الآن بمجرد الانتهاء من تحميل ملفات النماذج وتخزينها محليًّا يصبح بإمكانك استخدامها عبر كتابة مسار المجلد الذي حفظت فيه ضمن التعليمات البرمجية كما في المثال التالي:

>>> from transformers import AutoConfig

>>> config = AutoConfig.from_pretrained("./your/path/bigscience_t0/config.json")

ننهي عند هذه النقطة خطوات تثبيت المكتبة huggingface_hubوضبط إعداداتها، ولمزيد من التعمق ندعوك لمتابعة السلسلة وقراءة مقالنا التالي الذي سنتعرف فيه على طريقة استخدام خطوط الأنابيب pipeline لتبسيط التعامل مع نماذج الذكاء الاصطناعي التي توفرها Hugging Face.

ترجمة -وبتصرف- لقسم Installation من توثيقات Hugging Face.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...