استخدام Pixtral 12B لاستعلامات الذكاء الاصطناعي متعددة الوسائط بلغة Python باستخدام watsonx

في هذا البرنامج التعليمي، ستكتشف كيفية استخدام نموذج Pixtral 12B متعدد الوسائط من Mistral AI والمتوفر الآن على watsonx.ai لتنفيذ المهام متعددة الوسائط مثل إنشاء التسميات التوضيحية للصور والإجابة عن الأسئلة المرئية.

Pixtral 12B

في سبتمبر 2024، طرحت Mistral AI نموذج Pixtral 12B، وهو نموذج لغوي كبير مفتوح المصدر بموجب ترخيص Apache 2.0.

مع 12 مليار معلمة، أُنشئ هذا النموذج متعدد الوسائط على النموذج اللغوي الكبير Nemo 12B من Mistral AI. يحتوي Pixtral 12B على عنصرين: مشفر الرؤية لترميز الصور، وأداة فك تشفير المحولات متعددة الوسائط للتنبؤ بالرمز المميز التالي للنص بناءً على تسلسل من النصوص والصور. يحتوي مشفر الرؤية على 400 مليون معلمة ويدعم أحجام الصور المختلفة.

يتميز النموذج في عدة حالات استخدام، بما في ذلك فهم الرسوم البيانية والرسوم التخطيطية والمخططات والمستندات بدقة عالية، والتي يمكن استخدامها في مهام الإجابة عن أسئلة المستندات، أو اتباع التعليمات، أو التوليد المعزز بالاسترجاع (RAG). وبالإضافة إلى ذلك، يحتوي Pixtral 12B على نافذة سياق مكونة من 128000 رمز مميز، ما يسمح باستقبال صور متعددة في وقت واحد.

فيما يتعلق بالمعايير، يتفوق Pixtral 12B على العديد من النماذج، بما في ذلك Qwen2-VL وGemini-1.5 وFlash 8B وClaude-3 Haiku. بالنسبة إلى بعض المعايير، بما في ذلك DocVQA (ANLS) وVQAv2 (VQA Match)، يتفوق النموذج على نموذج GPT-4o من OpenAI وClaude-3.5 Sonnet.

بالإضافة إلى إمكانية تشغيل Pixtral 12B على watsonx.ai، يتوفر النموذج أيضًا عبر Hugging Face، أو على Le Chat، وهو روبوت محادثة من Mistral، أو عبر نقطة نهاية واجهة برمجة التطبيقات من خلال La Plateforme من Mistral.

الخطوات

راجع فيديو IBM Technology على YouTube الذي يشرح لك تعليمات الإعداد التالية في الخطوتين 1 و2.

الخطوة 1. إعداد البيئة.

بينما يمكنك الاختيار من بين عدة أدوات، يُعد هذا البرنامج التعليمي أكثر ما يناسب Jupyter Notebook. تُستخدم Jupyter Notebooks على نطاق واسع في علم البيانات لدمج التعليمات البرمجية مع مصادر بيانات متنوعة مثل النصوص والصور والعروض المصورة للبيانات.

هذا البرنامج التعليمي يرشدك حول كيفية إعداد حساب IBM لاستخدام Jupyter Notebook.

  1. سجِّل الدخول إلى watsonx.ai باستخدام حسابك على IBM Cloud. برجاء العلم أن Pixtral 12B متوفر حاليًا فقط في مناطق عمل IBM في أوروبا بفرانكفورت ولندن.

  2. أنشئ مشروع watsonx.ai.

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

  3. أنشئ Jupyter Notebook.

    هذه الخطوة ستفتح بيئة دفتر ملاحظات حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي لضبط الموجِّهات بنفسك. أو يمكنك تنزيل هذا الدفتر على نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. يمكن العثور على Jupyter Notebook هذا مع مجموعات البيانات المستخدمة على GitHub.

    لتجنب تعارضات ارتباط حزم Python، نوصي بإعداد بيئة افتراضية.

الخطوة 2. إعداد خدمة وقت تشغيل watsonx.ai ومفتاح واجهة برمجة التطبيق

  1. أنشئ مثيل خدمة watsonx.ai Runtime (اختَر خطة Lite، وهي مثيل مجاني).
  2. أنشئ مفتاح واجهة برمجة التطبيقات.
  3. اربط خدمة وقت تشغيل watsonx.ai بالمشروع الذي أنشأته على watsonx.ai.

الخطوة 3. تثبيت واستيراد المكتبات ذات الصلة وإعداد بيانات الاعتماد الخاصة بك.

سنحتاج إلى عدد قليل من المكتبات والوحدات لهذا البرنامج التعليمي. تأكَّد من استيراد الحزم التالية؛ وإذا لم تكن مثبَّتة، يمكنك تثبيتها بسرعة باستخدام أمر pip.

#installations
%pip install image | tail -n 1
%pip install -U "ibm_watsonx_ai>=1.1.14" | tail -n 1

#imports
import requests
import base64
import getpass

from PIL import Image
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference

أدخل WATSONX_EU_APIKEY وWATSONX_EU_PROJECT_ID اللذين أنشأتهما في الخطوتين 1 و2 عند تشغيل الخلية التالية. سنعيّن أيضًا عنوان URL كنقطة نهاية لواجهة برمجة التطبيقات.

WATSONX_EU_APIKEY = getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): ")
WATSONX_EU_PROJECT_ID = getpass.getpass("Please enter your project ID (hit enter): ")
URL = "https://eu-gb.ml.cloud.ibm.com"

يمكننا استخدام فئة بيانات الاعتماد لتضمين بيانات الاعتماد المرسلة.

credentials = Credentials(
    url=URL,
    api_key=WATSONX_EU_APIKEY
)

الخطوة 4. تشفير الصور

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

url_image_1 = 'https://assets.ibm.com/qa-ar/is/image/ibm/img_2803copy?$original$'
url_image_2 = 'https://assets.ibm.com/qa-ar/is/image/ibm/img_2857?$original$'
url_image_3 = 'https://assets.ibm.com/qa-ar/is/image/ibm/1ab001c5-751d-45aa-8a57-d1ce31ea0588?$original$'
url_image_4 = 'https://assets.ibm.com/qa-ar/is/image/ibm/langchain?$original$&fmt=png-alpha'

image_urls = [url_image_1, url_image_2, url_image_3, url_image_4]

للحصول على فهم أفضل للبيانات المدخلة، دعونا نعرض الصور.

for idx, url in enumerate(image_urls):
    print(f'url_image_{idx}')
    display(Image.open(requests.get(url, stream=True).raw))

المخرجات:

url_image_0

حقل زهور وردية

url_image_1

امرأة تعمل على دفتر ملاحظات

url_image_2

امرأة وسيارة عالقة في الثلج

url_image_3

مخطط

لتشفير صورنا بطريقة سهلة الفهم بالنسبة إلى النموذج اللغوي الكبير، سنشفرها بالتحويل إلى وحدات بايت ثم نفك تشفيرها بتحويلها إلى تمثيل UTF-8.

encoded_images = []

for url in image_urls:
    encoded_images.append(base64.b64encode(requests.get(url).content).decode("utf-8"))

الخطوة 5. إعداد طلب واجهة برمجة التطبيقات والنموذج اللغوي الكبير

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

def augment_api_request_body(user_query, image):
    messages = [
        {
            "role": "user",
            "content": [{
                "type": "text",
                "text": 'You are a helpful assistant. Answer the following user query in 1 or 2 sentences: ' + user_query
            },
            {
                "type": "image_url",
                "image_url": {
                    "url": f"data:image/jpeg;base64,{image}",
                }
            }]
        }
    ]

return messages

دعونا نُنشئ نسخة من واجهة النموذج باستخدام فئة theModelInference. في هذا البرنامج التعليمي، سوف نستخدم نموذج mistralai/pixtral-12b.

model = ModelInference(
    model_id="mistralai/pixtral-12b",
    credentials=credentials,
    project_id=WATSONX_EU_PROJECT_ID,
    params={
        "max_tokens": 200
        }
    )

الخطوة 6. إنشاء تسميات توضيحية للصور

والآن، يمكننا استعراض صورنا لرؤية الأوصاف النصية التي ينتجها النموذج استجابةً لاستعلام، "ماذا يحدث في هذه الصورة؟"

for i in range(len(encoded_images)):
        image = encoded_images[i]
        user_query = "What is happening in this image?"
        messages = augment_api_request_body(user_query, image)
        response = model.chat(messages=messages)
        print(response['choices'][0]['message']['content'])

المخرجات

تُصور الصورة حقلاً زاهيًا من الورود المتفتحة بالكامل تحت سماء زرقاء صافية، مع ضوء الشمس الساطع، ما يُظهر مشهدًا هادئًا وخلابًا.

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

شخص واقف بجانب سيارة مغطاة بالثلج بشكل كثيف، ويحمل مظلة حمراء لحماية نفسه من الثلوج المتساقطة.

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

تمكّن نموذج Pixtral 12B من إنشاء تسميات توضيحية مفصلة بدقة لكل صورة بنجاح.

الخطوة 7. اكتشاف الكائنات

الآن بعد أن استعرضنا الإمكانات التي يتمتع بها النموذج في إنشاء تسميات توضيحية للصور في الخطوة السابقة، دعونا نطرح على النموذج بعض الأسئلة التي تتطلب اكتشاف الكائنات. فيما يتعلق بالصورة الثانية التي تصور امرأة تتسوق عبر الإنترنت، سنسأل النموذج: "ماذا تحمل المرأة في يدها؟"

image = encoded_images[1]
user_query = "What does the woman have in her hand?"
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

النتيجة: المرأة تحمل في يدها بطاقة ائتمان.

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

image = encoded_images[2]
user_query = "What is likely the issue with this car?"
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

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

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

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

image = encoded_images[3]
user_query = "Name the steps in this diagram"
request_body = augment_api_request_body(user_query, image)
messages = augment_api_request_body(user_query, image)
response = model.chat(messages=messages)
print(response['choices'][0]['message']['content'])

النتيجة: يوضح المخطط عملية تتضمن عدة خطوات: "التحميل"، و"التحويل"، و"التضمين"، و"التخزين"، و"الاسترجاع". من المرجح أن يمثل هذا التسلسل سير عمل لمعالجة البيانات وتخزينها، مع تحويلها إلى متجهات مضمنة للتخزين والاسترجاع بكفاءة.

رائع! تمكّن النموذج من تمييز الكائنات الموجودة بالصور بعد استعلامات المستخدم. نشجعك على تجربة المزيد من الاستعلامات للتثبت من أداء النموذج أكثر.

ملخص

في هذا البرنامج التعليمي، استخدمت نموذج Pixtral 12B لتنفيذ عمليات متعددة الوسائط بما في ذلك إنشاء تسميات توضيحية للصور والإجابة عن الأسئلة المرئية.

لتجربة نماذج متعددة الوسائط أخرى، اطلع على هذا البرنامج التعليمي حول النموذج متعدد الوسائط Llama 3.2 من Meta على watsonx.ai.

حلول ذات صلة
IBM watsonx.ai

تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي بسرعة أكبر وببيانات أقل.

اكتشف watsonx.ai
حلول الذكاء الاصطناعي

استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.

استكشف حلول الذكاء الاصطناعي
خدمات الذكاء الاصطناعي

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

استكشف خدمات الذكاء الاصطناعي
اتخِذ الخطوة التالية

احصل على وصول شامل إلى القدرات التي تغطي دورة حياة تطوير الذكاء الاصطناعي. تمكَّن من إنتاج حلول ذكاء اصطناعي قوية بفضل الواجهات سهلة الاستخدام وعمليات سير العمل السلسة وإمكانية الوصول إلى واجهات برمجة التطبيقات ومجموعات تطوير البرامج القياسية في الصناعة.

استكشف watsonx.ai احجز عرضًا توضيحيًا مباشرًا