يُعدّ التعامل مع استفسارات العملاء، بما في ذلك الرسائل الإلكترونية، جزءًا ضروريًا من إدارة العديد من الأنشطة التجارية، ولكن يمكن أن يصبح الأمر مربكًا بسرعة. مع القليل من الجهد، ويمكن أن تساعد نماذج الذكاء الاصطناعي (AI) مثل Gemma في تسهيل هذا العمل.
يتعامل كل نشاط تجاري مع الاستفسارات، مثل الرسائل الإلكترونية، بشكل مختلف قليلاً، لذا من الواجب أن يكون بإمكانك تكييف التكنولوجيات، مثل الذكاء الاصطناعي التوليدي، مع احتياجات نشاطك التجاري. يعالج هذا المشروع مشكلة محدّدة تتمثل في استخراج معلومات الطلبات من الرسائل الإلكترونية المرسَلة إلى مخبز وتحويلها إلى بيانات منظَّمة، حتى يمكن إضافتها بسرعة إلى نظام معالجة الطلبات. إن استخدام 10 إلى 20 مثالاً على الاستفسارات الناتج الذي تريده، يمكنك ضبط نموذج Gemma لمعالجة الرسائل الإلكترونية من العملاء، ومساعدتك على الاستجابة بسرعة، ودمجها مع أنظمة نشاطك التجاري الحالية. تم تصميم هذا المشروع كنمط لتطبيقات الذكاء الاصطناعي، ويمكنك توسيع نطاقه والتكيّف معه. والاستفادة من نماذج Gemma لنشاطك التجاري
للحصول على نظرة عامة بالفيديو على المشروع وكيفية توسيعه، بما في ذلك الرؤى من الأشخاص الذين أنشأهم، تحقق من مساعد الذكاء الاصطناعي للبريد الإلكتروني للنشاط التجاري فيديو حول الإنشاء باستخدام تكنولوجيات الذكاء الاصطناعي من Google يمكنك أيضًا مراجعة التعليمات البرمجية لهذا المشروع في مستودع رموز Gemma Cookbook. بخلاف ذلك، يمكنك البدء في توسيع نطاق المشروع باستخدام الخطوات التالية:
نظرة عامة
يرشدك هذا البرنامج التعليمي خلال خطوات إعداد نشاط تجاري وإدارته وتوسيعه. تطبيق مساعد البريد الإلكتروني الذي تم إنشاؤه باستخدام Gemma وPython وFlesk. المشروع توفر واجهة مستخدم أساسية على الويب يمكنك تعديلها لتناسب احتياجاتك. تشير رسالة الأشكال البيانية لاستخراج البيانات من الرسائل الإلكترونية إلى العملاء إلى هيكل لمخبز وهمي. يمكنك استخدام نمط التطبيق هذا لأي نشاط تجاري مهمة تستخدم إدخال النص وإخراج النص.
الشكل 1. واجهة مستخدم المشروع لمعالجة الاستفسارات الواردة عبر البريد الإلكتروني بشأن المخبز
متطلبات الأجهزة
يمكنك تنفيذ عملية الضبط هذه على جهاز كمبيوتر مزوّد بوحدة معالجة رسومات (GPU) أو وحدة معالجة وحدات معالجة الرسومات (TPU) وذاكرة كافية لوحدة معالجة الرسومات أو وحدة معالجة وحدات معالجة الرسومات لتخزين النموذج الحالي بالإضافة إلى بيانات الضبط. لتنفيذ إعدادات الضبط في هذا المشروع، تحتاج إلى ذاكرة وحدة معالجة الرسومات بسعة 16 غيغابايت تقريبًا، ومساحة مماثلة لذاكرة الوصول العشوائي (RAM) العادية، ومساحة على القرص لا تقل عن 50 غيغابايت.
يمكنك تنفيذ جزء ضبط نموذج Gemma من هذا الدليل التعليمي باستخدام بيئة Colab مع بيئة تشغيل وحدة معالجة الرسومات T4. إذا كنت بصدد إنشاء هذا المشروع على مثيل جهاز افتراضي في Google Cloud، عليك ضبط المثيل وفقًا للمتطلبات التالية:
- جهاز GPU: يجب توفُّر NVIDIA T4 لتشغيل هذا المشروع (NVIDIA) يُنصح باستخدام المستوى 4 أو أعلى)
- نظام التشغيل: اختَر خيار التعلُّم العميق على Linux، وتحديدًا جهاز افتراضي للتعلُّم العميق مع CUDA 12.3 M124 مع برامج تشغيل برمجية لوحدة معالجة الرسومات تم تثبيتها مسبقًا.
- حجم قرص التمهيد: يجب توفير مساحة تخزين على القرص لا تقل عن 50 غيغابايت لملفاتك والنماذج والبرامج المتوافقة.
إعداد المشروع
سترشدك هذه التعليمات إلى كيفية تجهيز هذا المشروع لتطويره واختباره. تشمل خطوات الإعداد العامة تثبيت البرامج المسبقة، وتكرار المشروع من مستودع الرموز البرمجية، وضبط بعض متغيّرات البيئة، وتثبيت مكتبات Python، واختبار تطبيق الويب.
التثبيت والضبط
يستخدم هذا المشروع Python 3 والبيئات الافتراضية (venv
) لإدارة الحِزم
وتشغيل التطبيق. تعليمات التثبيت التالية مخصّصة لجهاز مضيف Linux
.
لتثبيت البرنامج المطلوب:
ثبِّت الإصدار 3 من Python وحزمة
venv
لبيئة Python الافتراضية:sudo apt update sudo apt install git pip python3-venv
استنساخ المشروع
نزِّل رمز المشروع على جهاز كمبيوتر التطوير. تحتاج إلى استخدام برنامج التحكّم في المصدر git لاسترداد رمز المصدر للمشروع.
لتنزيل رمز المشروع:
استنسِخ مستودع git باستخدام الأمر التالي:
git clone https://github.com/google-gemini/gemma-cookbook.git
يمكنك اختياريًا ضبط مستودع git المحلي لاستخدام ميزة "الفحص الخفيف"، لكي لا تتوفّر لديك سوى ملفات المشروع:
cd gemma-cookbook/ git sparse-checkout set Demos/business-email-assistant/ git sparse-checkout init --cone
تثبيت مكتبات Python
ثبِّت مكتبات Python مع تفعيل venv
بيئة Python الافتراضية
لإدارة حِزم Python ومواردها التابعة. احرص على تفعيل
بيئة Python الافتراضية قبل تثبيت مكتبات Python باستخدام pip
أداة التثبيت. لمزيد من المعلومات حول استخدام بيئات بايثون الافتراضية، يمكنك الاطّلاع على
مستندات Python venv.
لتثبيت مكتبات بايثون:
في نافذة وحدة طرفية، انتقِل إلى الدليل
business-email-assistant
:cd Demos/business-email-assistant/
عليك ضبط بيئة Python الافتراضية (venv) وتفعيلها لهذا المشروع:
python3 -m venv venv source venv/bin/activate
ثبِّت مكتبات Python المطلوبة لهذا المشروع باستخدام النص البرمجي
setup_python
:./setup_python.sh
ضبط متغيّرات البيئة
يتطلب هذا المشروع بعض متغيرات البيئة البيئية لتشغيله،
بما في ذلك اسم مستخدم Kaggle والرمز المميز لواجهة برمجة تطبيقات Kaggle. يجب أن يكون لديك حساب على Kaggle
وطلب الوصول إلى نماذج Gemma لتتمكّن من تنزيلها. بالنسبة
لهذا المشروع، يمكنك إضافة اسم مستخدم Kaggle والرمز المميز لواجهة برمجة تطبيقات Kaggle إلى اثنين من .env
التي يقرأها تطبيق الويب وبرنامج الضبط،
على التوالي.
لضبط متغيّرات البيئة:
- احصل على اسم مستخدم Kaggle ومفتاح الرمز المميز باتباع الإرشادات في وثائق Kaggle.
- يمكنك الوصول إلى نموذج Gemma باتّباع تعليمات الوصول إلى Gemma في صفحة إعداد Gemma.
- أنشئ ملفات متغيّرات البيئة للمشروع، وذلك عن طريق إنشاء ملف نصي
.env
في كل موقع من المواقع التالية في نسختك من المشروع:email-processing-webapp/.env model-tuning/.env
بعد إنشاء الملفين النصيَّين (
.env
)، أضِف الإعدادات التالية إلى كِلاهما. الملفات:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
تشغيل التطبيق واختباره
بعد إكمال عملية تثبيت المشروع وضبط إعداداته، شغِّل تطبيق الويب للتأكّد من ضبط إعداداته بشكلٍ صحيح. عليك القيام بذلك كفحص أساسي قبل تحرير المشروع لاستخدامك الخاص.
لتنفيذ المشروع واختباره:
في نافذة وحدة طرفية، انتقِل إلى الدليل
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
شغِّل التطبيق باستخدام النص البرمجي
run_app
:./run_app.sh
بعد بدء تطبيق الويب، يسرد رمز البرنامج عنوان URL حيث يمكنك التصفّح والاختبار. وعادةً ما يكون هذا العنوان:
http://127.0.0.1:5000/
في واجهة الويب، اضغط على الزر الحصول على البيانات أسفل حقل الإدخال الأول لإنشاء ردّ من النموذج.
يستغرق الردّ الأول من النموذج بعد تشغيل التطبيق وقتًا أطول، لأنّه يجب إكمال خطوات الإعداد في عملية التشغيل الأولى. يتم إكمال طلبات الإشعارات اللاحقة وإنشاءها على تطبيق ويب قيد التشغيل في وقت أقل.
تمديد الطلب
بعد تشغيل التطبيق، يمكنك توسيع نطاقه من خلال تعديل واجهة المستخدِم ومنطق النشاط التجاري لكي يعمل على المهام ذات الصلة بك أو بنشاطك التجاري. يمكنك أيضًا تعديل سلوك نموذج Gemma باستخدام رمز التطبيق من خلال تغيير مكونات الطلب الذي يرسله التطبيق إليه نموذج الذكاء الاصطناعي التوليدي.
يقدّم التطبيق تعليمات للنموذج مع بيانات الإدخال من المستخدم طلبًا كاملاً للنموذج. يمكنك تعديل هذه التعليمات. تغيير سلوك النموذج، مثل تحديد أسماء المعاملات وبنية JSON التي سيتم إنشاؤها إنّ الطريقة الأسهل لتغيير سلوك النموذج هي تقديم تعليمات أو إرشادات إضافية لتحديد ردّه، مثل تحديد أنّ الردود التي يتم إنشاؤها يجب ألا تتضمّن أي تنسيق Markdown.
لتعديل تعليمات الطلب:
- في مشروع التطوير، افتح
ملف رمز برمجي واحد (
business-email-assistant/email-processing-webapp/app.py
) في الرمز
app.py
، أضِف تعليمات الإضافات إلى الدالةget_prompt():
:def get_prompt(): return """ Extract the relevant details of this request and return them in JSON code, with no additional markdown formatting:\n"""
يضيف هذا المثال العبارة "بدون تنسيق إضافي لترميز Markdown" إلى على التعليمات
يمكن أن يؤثّر تقديم تعليمات إضافية للطلبات بشكل كبير في المخرجات التي يتم إنشاؤها، ولا يتطلّب تنفيذها جهدًا كبيرًا. يجب تجربة هذا لمعرفة ما إذا كان بإمكانك الحصول على السلوك الذي تريده من النموذج. ومع ذلك، فإنّ استخدام تعليمات فورية لتعديل سلوك نموذج Gemma له محدوديته . على وجه التحديد، يتطلّب الحدّ الأقصى العام لوحدات ترميز الإدخال في النموذج، والذي يبلغ 8,192 رمزًا لـ Gemma 2، موازنة تعليمات الطلب المفصّلة مع حجم البيانات الجديدة التي تقدّمها بحيث تظلّ ضمن هذا الحدّ.
ضبط النموذج
يُعد إجراء الضبط الدقيق لنموذج Gemma الطريقة الموصى بها للوصول إلى تستجيب بشكل أكثر موثوقية لمهام محددة. على وجه الخصوص، إذا كنت تريد من النموذج توليد ملف JSON ببنية معيّنة، بما في ذلك معلَمات باسم معيّن، عليك ضبط النموذج لهذا السلوك. استنادًا إلى المهمة التي تريد أن يكملها النموذج، يمكنك تحقيق وظائف dasar باستخدام 10 إلى 20 مثالاً. يوضّح هذا القسم من الدليل التعليمي كيفية إعداد عملية التحسين وتنفيذها على نموذج Gemma لمهمة معيّنة.
توضح الإرشادات التالية كيفية إجراء عملية الضبط على ومع ذلك، يمكنك أيضًا تنفيذ عملية الضبط هذه باستخدام بيئة VM. المرتبطة Colab Noteboook لهذا المشروع.
متطلبات الأجهزة
متطلبات الحوسبة اللازمة لإجراء التحسين هي نفسها متطلبات الأجهزة لبقية المشروع. يمكنك تنفيذ عملية الضبط في بيئة Colab باستخدام بيئة تشغيل وحدة معالجة الرسومات T4 إذا كنت تحصر الرموز المميّزة للدخل بـ 256 وحجم الحزمة بـ 1.
تجهيز البيانات
قبل بدء ضبط نموذج Gemma، عليك إعداد البيانات للضبط. عند تعديل نموذج لمهمة معيّنة، تحتاج إلى مجموعة من أمثلة الطلبات والنتائج. يجب أن توضح هذه الأمثلة نص الطلب، بدون أي التعليمات ونص الرد المتوقع. في البداية، عليك إعداد مجموعة بيانات تتضمّن 10 أمثلة تقريبًا. ينبغي أن تمثل هذه الأمثلة عرضًا كاملاً مجموعة متنوعة من الطلبات والاستجابات المثالية. تأكَّد من أنّ الطلبات والكلمات المعبّرة عن ردود النماذج ليست متكرّرة، لأنّ ذلك قد يؤدي إلى تكرار ردود النماذج وعدم تعديلها بشكلٍ مناسب ليتلاءم مع الاختلافات في الطلبات. إذا كنت بصدد تعديل النموذج لإنشاء تنسيق بيانات منظَّمة، تأكَّد من أنّ جميع الطلبات المقدَّمة متوافقة بدقة مع تنسيق إخراج البيانات الذي تريده. يعرض الجدول التالي بعض نماذج السجلات من مجموعة بيانات مثال التعليمة البرمجية هذا:
الطلب | الرد |
---|---|
مرحبًا India Bakery Central،\nهل لديك 10 بندات، في متناول يديك ثلاثون بوندي لادو؟ هل تبيع أيضًا كعكات بنكهة الفانيليا والشوكولاتة؟ أبحث عن مقاس 6 بوصة | { "type": "inquiry", "items": [ { "name": "pendas", "quantity": 10 }, { "name": "bundi ladoos", "quantity": 30 }, { "name": "cake", "filling": null, "frosting": "vanilla", "flavor": "chocolate", "size": "6 in" } ] } |
لقد شاهدت نشاطك التجاري على "خرائط Google". هل تبيع الزلابي والغولاب؟ جامون؟ | { "type": "inquiry", "items": [ { "name": "jellabi", "quantity": null }, { "name": "gulab jamun", "quantity": null } ] } |
الجدول 1: قائمة جزئية لمجموعة بيانات الضبط لاستخراج بيانات البريد الإلكتروني للمخبز
تنسيق البيانات وتحميلها
يمكنك تخزين بيانات الضبط بأي تنسيق مناسب، بما في ذلك
سجلّات قاعدة البيانات أو ملفات JSON أو CSV أو ملفات نص عادي، ما دام لديك
الوسائل اللازمة لاسترداد السجلات باستخدام رمز Python. يقرأ هذا المشروع ملفات JSON.
من دليل data
إلى مصفوفة من كائنات القاموس.
في هذا المثال لبرنامج التحويل، يتم تحميل مجموعة بيانات الضبط في
model-tuning/main.py
باستخدام الدالة prepare_tuning_dataset()
:
def prepare_tuning_dataset():
# collect data from JSON files
prompt_data = read_json_files_to_dicts("./data")
...
وكما ذكرنا سابقًا، يمكنك تخزين مجموعة البيانات بتنسيق بسهولة، طالما يمكنك استرداد الطلبات باستخدام الردود وتجميعها في سلسلة نصية تستخدم كسجل ضبط.
تجميع سجلّات الضبط
في عملية الضبط الفعلية، يجمع البرنامج كل طلب وردّ
في سلسلة واحدة تتضمّن تعليمات الطلب ومحتوى الردّ. بعد ذلك، يُقسّم برنامج الضبط السلسلة إلى وحدات ليستخدمها ال
نموذج. يمكنك مشاهدة الرمز الخاص بتجميع سجل توليف في
دالة model-tuning/main.py
الوحدة prepare_tuning_dataset()
، على النحو التالي:
def prepare_tuning_dataset():
...
# prepare data for tuning
tuning_dataset = []
template = "{instruction}\n{response}"
for prompt in prompt_data:
tuning_dataset.append(template.format(instruction=prompt["prompt"],
response=prompt["response"]))
return tuning_dataset
تأخذ هذه الدالة البيانات كمدخلات وتُعدّلها من خلال إضافة فاصل سطر بين التعليمات والاستجابة.
إنشاء معاملات ترجيحية للنموذج
بعد الانتهاء من تحميل بيانات الضبط، يمكنك تشغيل ملف الضبط . تستخدم عملية الضبط لهذا التطبيق كمثال NLP لـ Keras NLP لضبط النموذج باستخدام التكيّف مع الترتيب المنخفض، أو أسلوب LoRA، لإنشاء قيم ترجيحية جديدة للنموذج. مقارنةً بالضبط الدقيق للدقة، يُعد استخدام LoRA أنها أكثر فعالية في الذاكرة لأنها تقترب من التغييرات في أوزان النموذج. ويمكنك بعد ذلك تركيب هذه الترجيحات التقريبية على القيم التقديرية للنموذج لتغيير سلوك النموذج.
لإجراء ضبط الضبط وحساب الأوزان الجديدة:
في نافذة وحدة طرفية، انتقِل إلى الدليل
model-tuning/
.cd business-email-assistant/model-tuning/
يمكنك إجراء عملية الضبط باستخدام النص البرمجي
tune_model
:./tune_model.sh
تستغرق عملية الضبط عدة دقائق استنادًا إلى موارد المعالجة المتاحة.
وعند اكتماله بنجاح، يكتب برنامج الضبط الجديد *.h5
ملفات الوزن في الدليل model-tuning/weights
بالتنسيق التالي:
gemma2-2b_inquiry_tuned_4_epoch##.lora.h5
تحديد المشاكل وحلّها
إذا لم تكتمل عملية الضبط بنجاح، هناك سببان محتملان:
- نفاد الذاكرة أو الموارد: تحدث هذه الأخطاء عند
عملية التوليف تتطلب ذاكرة تتجاوز ذاكرة وحدة معالجة الرسومات (GPU) أو وحدة المعالجة المركزية (CPU) المتاحة
الذاكرة. تأكَّد من عدم تشغيل تطبيق الويب أثناء تنفيذ عملية الضبط. إذا كنت تستخدم جهازًا يتضمّن ذاكرة وحدة معالجة رسومات (GPU) بسعة 16 غيغابايت،
تأكَّد من ضبط
token_limit
على 256 وbatch_size
. تم ضبطها على 1. - برامج تشغيل وحدة معالجة الرسومات غير مثبّتة أو غير متوافقة مع JAX: عملية التحويل أن تتوفّر برامج تشغيل أجهزة مثبّتة على جهاز الحوسبة متوافقة مع إصدار مكتبات JAX لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات تثبيت JAX .
نشر النموذج الذي تم ضبطه
تُنشئ عملية الضبط أوزانًا متعدّدة استنادًا إلى بيانات الضبط و إجمالي عدد الفترات الزمنية التي تم ضبطها في تطبيق الضبط. بشكل افتراضي، يضبط التوليف 3 ملفات لوزن النموذج، ملف واحد لكل فترة ضبط. تُنشئ كل مرحلة متعاقبة من مراحل الضبط أوزانًا تُعيد بشكل أدق نتائج بيانات الضبط. ويمكنك الاطلاع على معدلات الدقة لكل حقبة في الإخراج الطرفي لعملية التوليف على النحو التالي:
...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848
وعلى الرغم من أنك تريد أن يكون معدل الدقة مرتفعًا نسبيًا، حوالي 0.80، إلا أنك لا أن يكون المعدل مرتفعًا جدًا أو قريبًا جدًا من 1.00، لأن هذا يعني الأوزان أصبحت أقرب إلى فرط توافق بيانات الضبط. وعندما يحدث ذلك، لا يحقّق النموذج أداءً جيدًا في الطلبات التي تختلف اختلافًا كبيرًا عن مثالي الضبط. بشكل تلقائي، يختار النص البرمجي للنشر الفترة 3 والوزن، والتي يكون لها عادةً معدل دقة حوالي 0.80.
لنشر قيم الترجيح التي تم إنشاؤها في تطبيق الويب:
في نافذة وحدة طرفية، انتقِل إلى الدليل
model-tuning
:cd business-email-assistant/model-tuning/
يمكنك إجراء عملية الضبط باستخدام النص البرمجي
deploy_weights
:./deploy_weights.sh
بعد تشغيل هذا النص البرمجي، من المفترض أن يظهر لك ملف *.h5
جديد في
دليل email-processing-webapp/weights/
.
اختبار النموذج الجديد
بعد نشر القيم التقديرية الجديدة للتطبيق، يحين وقت التجربة. النموذج الذي تم ضبطه حديثًا. يمكنك القيام بذلك عن طريق إعادة تشغيل تطبيق الويب و إنشاء استجابة.
لتنفيذ المشروع واختباره:
في نافذة وحدة طرفية، انتقِل إلى الدليل
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
شغِّل التطبيق باستخدام النص البرمجي
run_app
:./run_app.sh
بعد بدء تطبيق الويب، يسرد رمز البرنامج عنوان URL حيث يمكنك التصفّح والاختبار، وعادةً ما يكون هذا العنوان:
http://127.0.0.1:5000/
في واجهة الويب، اضغط على الزر الحصول على البيانات أسفل حقل الإدخال الأول لإنشاء ردّ من النموذج.
لقد ضبطت الآن نموذج Gemma ونشرته في أحد التطبيقات! إجراء التجارب مع التطبيق ومحاولة تحديد حدود إنشاء النموذج الذي تم ضبطه الإمكانية لمهمتك. إذا صادفت سيناريوهات لا يحقّق فيها النموذج أداءً جيدًا، ننصحك بإضافة بعض هذه الطلبات إلى قائمة أمثلة بيانات الضبط، وذلك من خلال إضافة الطلب وتقديم ردّ مثالي. ثم إعادة تشغيل التوليف وإعادة نشر القيم التقديرية الجديدة واختبار المخرجات.
مراجع إضافية
لمزيد من المعلومات حول هذا المشروع، يمكنك الاطّلاع على مستودع رموز Gemma Cookbook. إذا كنت بحاجة إلى مساعدة في إنشاء التطبيق أو تريد التعاون مع مطوِّرين آخرين، يُرجى الاطّلاع على Discord في منتدى Google Developers الخادم. لمزيد من مشاريع "الإنشاء باستخدام الذكاء الاصطناعي من Google"، اطّلِع على قائمة تشغيل الفيديوهات.