تعرفنا في مقال سابق على مكتبة المحوّلات Transformers التي توفرها منصة Hugging Face واستعرضنا أبرز مميزاتها وتوافقها مع أي مكتبة تعلُّم عميق تستخدمها؛ وسنتعلم في هذا المقال كيفية تثبيت هذه المكتبة على حاسوبك المحلي وخطوات ضبط متغيرات الذاكرة المخبئية cache المتعلقة بها، والإعدادات اللازمة للتعامل مع المكتبة دون الحاجةللاتصال بالإنترنت.
هذه المكتبة مختبرة على إصدارات مختلفة من لغة بايثون من الإصدار 3.6 وأعلى، وإطار العمل باي تورش PyTorch من الإصدار 1.1.0 وأعلى، والإطار تنسرفلو TensorFlow من الإصدار 2 وأعلى، بالإضافة إلى مكتبة Flax.
وسنعرض في مقال اليوم تعليمات تثبيتها مع كل من:
- إطار العمل PyTorch.
- إطار العمل TensorFlow 2.0.
- مكتبة الشبكات العصبية 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، وحفظها على جهازك، ثم استخدامها لاحقًا من دون اتصال بالإنترنت عبر الإشارة إلى مسارها المحلي عند كتابة التعليمات البرمجية، وذلك بثلاث طرق:
الطريقة الأولى: حمّل الملفات التي تريدها من واجهة المستخدم لمستودع النماذج بالضغط على أيقونة السهم النازل الموجودة بجوار كل ملف كما في الصورة التالية:
الطريقة الثانية: استخدم 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.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.