حدث
إنشاء تطبيقات ووكلاء الذكاء الاصطناعي
١٧ رمضان، ٩ م - ٢١ رمضان، ١٠ ص
انضم إلى سلسلة الاجتماعات لإنشاء حلول الذكاء الاصطناعي قابلة للتطوير استنادا إلى حالات الاستخدام في العالم الحقيقي مع المطورين والخبراء الآخرين.
تسجيل الآنلم يعد هذا المتصفح مدعومًا.
بادر بالترقية إلى Microsoft Edge للاستفادة من أحدث الميزات والتحديثات الأمنية والدعم الفني.
ستتعلم في هذا البرنامج التعليمي كيفية استخدام لغة بايثون وTensorFlow ودوال Azure بجانب نموذج التعلم الآلي لتصنيف أي صورة بناءً على محتوياتها. ونظرا لتنفيذ جميع الأعمال محلياً وعدم إنشاء موارد Azure في السحابة، فلن تتكبد أي تكلفة لإكمال هذا البرنامج التعليمي.
func --version
للتحقق من أن Azure Functions Core Tools هي الإصدار 2.7.1846 أو إصدار لاحق.python --version
(Linux/macOS) أو py --version
(Windows) للتحقق من تقارير إصدار Python 3.7.x.انُسخ، في المحطة الطرفية أو نافذة الأوامر، المستودع التالي باستخدام Git:
git clone https://github.com/Azure-Samples/functions-python-tensorflow-tutorial.git
انتقل إلى المجلد وافحص محتوياته.
cd functions-python-tensorflow-tutorial
انتقل إلى مجلد البدء وشغل الأوامر التالية لإنشاء وتفعيل البيئة الافتراضية باسم.venv
. تأكد من استخدام لغة بايثون إصدار رقم 3.7 أو 3.7 أو 3.6، والتي تدعمها دوال Azure.
cd start
python -m venv .venv
source .venv/bin/activate
إذا لم يثبت Python حزمة venv على توزيع Linux الخاص بك، فشغل الأمر التالي:
sudo apt-get install python3-venv
شغل جميع الأوامر اللاحقة في هذه البيئة الافتراضية النشطة. (لإنهاء البيئة الافتراضية، شغِّل deactivate
.)
في Azure Functions، يُعد مشروع الدوال حاوية لدالة فردية واحدة أو أكثر يستجيب كل منها لمشغل معين. تشترك جميع الدوال في المشروع في نفس التكوينات المحلية والاستضافة. في هذا القسم، يمكنك إنشاء مشروع دالة يحتوي على دالة معيارية مفردة تسمى classify
توفر نقطة نهاية "HTTP". إضافة الرموز الأكثر تحديداً في أي قسم لاحق.
في مجلد"Start" استخدمAzure Functions Core Tools لتهيئة تطبيق دالة Python:
func init --worker-runtime python
بعد التهيئة، يحتوي المجلد "Start" على ملفات متنوعة للمشروع، بما في ذلك ملفات التهيئة المسماة local.settings.json و host.json. ونظراً لاحتواء ملفات local.settings.json على الأسرار التي تم تنزيلها من Azure، يُستبعد الملف من التحكم في المصدر افتراضيا في ملف .gitignore.
تلميح
ونظراً لربط مشروع الدالة بوقت التشغيل المحددة، يجب كتابة جميع الدوال في المشروع بنفس اللغة.
أضف دالة إلى مشروعك باستخدام الأمر التالي، حيث تمثل الوسيطة --name
الاسم المميز للدالة خاصتك فيما تُحدد الوسيطة--template
مشغل الدالة. ينشئ func new
مجلداً فرعياً يطابق اسم الوظيفة الذي يحتوي على ملف تعليمات برمجية مناسب للغة المختارة للمشروع وملف تكوين باسم function.json .
func new --name classify --template "HTTP trigger"
ينشئ هذا الأمر مجلداً مطابقاً لاسم الدالة، ويُصنف. يرد في هذا المجلد ملفان: __init__.pynit .py، الذي يحتوي على تعليمة برمجية للدالة وfunction.json، الذي يصف مشغل الدالة وروابط الإدخال والإخراج الخاصة بها. للحصول على تفاصيل حول محتويات هذه الملفات، راجع نموذج البرمجة في دليل مطور Python.
ابدأ تشغيل الدالة عن طريق بدء تشغيل مضيف وقت تشغيل Azure Functions المحلية في مجلد البدء:
func start
بمجرد ظهور نقطة نهاية classify
في الإخراج، انتقل إلى عنوان "URL" http://localhost:7071/api/classify?name=Azure
. يجب أن تظهر الرسالة «مرحبًا Azure!» في الإخراج.
استخدم Ctrl-C لإيقاف المضيف.
ولتعديل classify
الدالة بغرض تصنيف أي صورة استناداً إلى محتوياتها، يمكنك استخدام نموذج TensorFlow تم إنشاؤه مسبقاً وتدريبه على خدمة الرؤية المخصصة من Azure وترحيلها منها. يصنف النموذج، الموجود في مجلد الموارد للعينة التي استنسختها سابقا، الصورة استناداً إلى ما إذا كانت تحتوي على كلب أو قطة. أضف بعد ذلك بعض الرموز المساعدة والتبعيات إلى المشروع الخاص بك.
لإنشاء نموذج خاص بك باستخدام الطبقة الحرة من خدمة الرؤية المخصصة، اتبع الإرشادات الموجودة في مستودع المشروع النموذجي.
تلميح
إذا كنت ترغب في استضافة نموذج TensorFlow بشكل مستقل في تطبيق الدوال، يمكنك بدلاً من ذلك تحميل مشاركة ملف تحتوي على النموذج الخاص بك إلى تطبيق دالة Linux. لمعرفة المزيد، راجع تحميل مشاركة ملف إلى تطبيق دالة بلغة بايثون باستخدام Azure CLI.
في مجلد البدء، شغل الأمر التالي لنسخ ملفات النموذج إلى مجلد التصنيف. تأكد من إدراج\*
في الأمر.
تحقق من أن المجلد تصنيف يحتوي على ملفات باسم model.pb وlabels.txt. إذا لم يكن كذلك، تحقق من تشغيل الأمر في مجلد البدء.
في المجلد البدء، شغل الأمر التالي لنسخ ملف مع التعليمات البرمجية للمساعدة إلى مجلد التصنيف:
تحقق من أن المجلد تصنيف يحتوي الآن على ملف باسم predict.py.
افتح start/requirements.txt في محرر نص واضف التبعيات التالية المطلوبة بواسطة التعليمات البرمجية للمساعد:
tensorflow==1.14
Pillow
requests
احفظ متطلبات.txt.
ثبت التبعيات عن طريق تشغيل الأمر التالي في ملف البدء. قد يستغرق التثبيت بضع دقائق، وخلال هذه الفترة يمكنك المتابعة مع تعديل الدالة في القسم التالي.
pip install --no-cache-dir -r requirements.txt
قد تواجه على Windows خطأ "تعذر تثبيت الحزم بسبب EnvironmentError: [Errno 2] لا يوجد ملف أو دليل" متبوعاً باسم مسار طويل إلى ملف مثل sharded_mutable_dense_hashtable.cpython-37.pyc. يحدث هذا الخطأ بشكل عام لأن عمق مسار المجلد طويل جدا. في هذه الحالة، اضبط مفتاح التسجيل HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem@LongPathsEnabled
إلى 1
لتمكين مسارات طويلة. وتحقق من مكان تثبيت مترجم Python بالتناوب. إذا كان هذا الموقع يحتوي على مسار طويل، حاول إعادة تثبيته في مجلد ذي مسار أقصر.
تلميح
عند طلب predict.py لإجراء التنبؤ الأول، تُحمل الدالة باسم _initialize
نموذج TensorFlow من القرص وتخزينه في المتغيرات العمومية. يسرع هذا التخزين المؤقت التنبؤات اللاحقة. للمزيد من المعلومات حول استخدام المتغيرات العمومية، راجع دليل مطور لغة بايثون لدوال Azure .
فتح تصنيف/__init__.py في محرر نص واضف الأسطر التالية بعد import
العبارات الموجودة لاستعادة مكتبة JSON القياسية ومساعدي التوقع:
import logging
import azure.functions as func
import json
# Import helper script
from .predict import predict_image_from_url
استبدال محتويات main
بالرمز التالي:
def main(req: func.HttpRequest) -> func.HttpResponse:
image_url = req.params.get('img')
logging.info('Image URL received: ' + image_url)
results = predict_image_from_url(image_url)
headers = {
"Content-type": "application/json",
"Access-Control-Allow-Origin": "*"
}
return func.HttpResponse(json.dumps(results), headers = headers)
تستلم هذه الدالة صورة بعنوان URL في معلمة سلسلة استعلام باسمimg
. وتطلب بعد ذلكpredict_image_from_url
من مكتبة المساعد لتنزيل الصورة وتصنيفها باستخدام نموذج TensorFlow. تُعيد الدالة استجابة بروتوكول نقل النص الفائق مع النتائج.
هام
نظراً لاستدعاء نقطة نهاية "HTTP" هذه بواسطة صفحة ويب مستضافة على نطاق آخر، فإن الاستجابة تتضمن ترويسة Access-Control-Allow-Origin
لتلبية متطلبات مشاركة الموارد المشتركة (CORS) الخاصة بالمتصفح.
أثناء تطبيق الإنتاج، قم بتغيير *
إلى الأصل المحدد لصفحة الويب لمزيد من الأمان.
احفظ التغييرات الخاصة بك، ثم افترض انتهاء تثبيت التبعيات وابدأ مضيف الدالة المحلية مرة أخرى معfunc start
. تأكد من تشغيل المضيف في مجلد "start" مع تنشيط البيئة الافتراضية. سيبدأ المضيف، ولكن ستظهر أخطاء عند طلب الدالة.
func start
افتح في المتصفح عنوان URL التالي لطلب الدالة مع عنوان URL لصورة القط وتأكد من تصنيف ملف JSON المسترد للصورة على أنها صورة قطة.
http://localhost:7071/api/classify?img=https://raw.githubusercontent.com/Azure-Samples/functions-python-tensorflow-tutorial/master/resources/assets/samples/cat1.png
حافظ على تشغيل المضيف لأنك ستستخدمه في الخطوة التالية.
لاختبار طلب نقطة نهاية الدالة من تطبيق ويب آخر، سيظهر لك تطبيق بسيط في المجلد الأمامي للمستودع.
افتح وحدة طرفية أو طلب أمر جديد ونشط البيئة الافتراضية (حسب المنصوص عليه بموجب وأنشأ البيئة الافتراضية Python وفعله).
انتقل إلى المجلد الأمامي للمستودع.
بدء تشغيل خادم "HTTP" مع Python:
انتقل في المتصفح إلى localhost:8000
، ثم أدخل أحد عناوين "URL" التالية للصور في مربع النص، أو استخدم عنوان "URL" لأي صورة يمكن الوصول إليها بشكل عام.
https://raw.githubusercontent.com/Azure-Samples/functions-python-tensorflow-tutorial/master/resources/assets/samples/cat1.png
https://raw.githubusercontent.com/Azure-Samples/functions-python-tensorflow-tutorial/master/resources/assets/samples/cat2.png
https://raw.githubusercontent.com/Azure-Samples/functions-python-tensorflow-tutorial/master/resources/assets/samples/dog1.png
https://raw.githubusercontent.com/Azure-Samples/functions-python-tensorflow-tutorial/master/resources/assets/samples/dog2.png
حدد "Submit" لطلب نقطة نهاية الدالة لتصنيف الصورة.
إذا أبلغ المتصفح عن خطأ عند إرسال عنوان "URL" للصورة، تحقق من المحطة الطرفية التي تقوم بتشغيل تطبيق الدوال فيها. إذا رأيت خطأ مثل "لم يتم العثور على وحدة نمطية 'PIL'"، فقد تكون قد بدأت تطبيق الدوال في مجلد "start" دون تنشيط البيئة الافتراضية التي أنشأتها في وقت سابق. إذا كنت لا تزال ترى أخطاء، شغل pip install -r requirements.txt
مرة أخرى مع تنشيط البيئة الافتراضية والبحث عن الأخطاء.
ملاحظة
يصنف النموذج دائما محتوى صورة القطة أو الكلب على أنها صورة كلب افتراضياً بصرف النظر عن احتواء الصورة على أي منهما. تُصنف صور النمور والفهود، على سبيل المثال، عادة على أنها قطة، فيما تُصنف صور الأفيال أو الجزر أو الطائرات على أنها صورة كلب.
ونظرا لأن البرنامج التعليمي بأكمله يعمل محليا على جهازك، فلا توجد موارد أو خدمات Azure لتنظيفها.
تعلمت في هذا البرنامج التعليمي كيفية إنشاء وتخصيص نقطة نهاية واجهة برمجة تطبيقات بروتوكول نقل النص الفائق مع دوال Azure لتصنيف الصور باستخدام نموذج TensorFlow. تعلمت كذلك كيفية الاتصال بواجهة برمجة التطبيقات من تطبيق ويب. يمكنك استخدام التقنيات المذكورة في هذا البرنامج التعليمي لبناء واجهات برمجة التطبيقات من أي مجال تعقيد، كل ذلك أثناء التشغيل على نموذج الحوسبة بلا خادم الذي توفره دوال Azure.
راجع أيضًا:
حدث
إنشاء تطبيقات ووكلاء الذكاء الاصطناعي
١٧ رمضان، ٩ م - ٢١ رمضان، ١٠ ص
انضم إلى سلسلة الاجتماعات لإنشاء حلول الذكاء الاصطناعي قابلة للتطوير استنادا إلى حالات الاستخدام في العالم الحقيقي مع المطورين والخبراء الآخرين.
تسجيل الآنالتدريب
الوحدة النمطية
Agregar funcionalidades de generación y análisis de imágenes a la aplicación
الشهادة
Microsoft Certified: Aspectos básicos de Azure AI - Certifications
Demostrar conceptos fundamentales de inteligencia artificial relacionados con el desarrollo de software y servicios de Microsoft Azure para crear soluciones de inteligencia artificial.