الوحدة 1 — Vertex AI: المكوّنات والمصطلحات
قبل كتابة سطر بايثون واحد، هذه الوحدة تُثبِّت المفردات التي سترافقنا طوال الدورة. النقطة ليست حفظ قائمة، بل بناء خريطة ذهنيّة تسمح، أمام أيّ رسالة خطأ أو فاتورة، بمعرفة الخدمة المسؤولة وأين تُبحَث. الفوضى في المصطلحات هي أوّل سبب لفواتير مفاجئة عند نهاية الشهر.
المشروع والمنطقة والحساب المفوتَر
الوحدة الإداريّة الأساس في Google Cloud هي المشروع (project). هو حاوية العزل: الموارد، وسجلّات الأذونات، وحدود الحصص، والفاتورة، كلّها تحمل معرّف المشروع. مشروعنا للفيل الأحمر: fraud-detection-prod. ولاختبارات الدورة سنُنشئ مشروعًا موازيًا fraud-detection-lab كي لا تُخلَط تجارب الفريق بموارد الإنتاج.
يرتبط المشروع بـحساب فوترة (billing account) واحد يستقبل التكاليف. من الشائع أن يتشارك عدّة مشاريع الحساب نفسه، بينما تُميّز الفواتير بمعرّف المشروع.
المنطقة (region) هي مركز البيانات الجغرافيّ الذي تعيش فيه الموارد، مثل europe-west1 أو us-central1. اختيار المنطقة له ثلاث نتائج مباشرة:
- الاستجابة: التدريب في
us-central1من دفتر في أوروبا يضيف عشرات المللي ثانية على كلّ استدعاء. - الكلفة: أسعار وحدات المعالجة الرسوميّة تختلف بين المناطق.
- قيود التنظيم: بيانات مسجَّلة في الاتّحاد الأوروبيّ لا تُغادره.
القاعدة: منطقة موحّدة لكامل المشروع، تُختار مرّة وتُوثَّق. الخلط بين المناطق يُفشِل قراءة نموذج مُدرَّب في us-central1 من نقطة نهاية أُنشئت في europe-west1.
APIs الواجب تفعيلها
Vertex AI ليس خدمة واحدة بل عائلة APIs. أقلّها فتحًا للبدء:
aiplatform.googleapis.com— Vertex AI الأساسnotebooks.googleapis.com— دفاتر Workbenchbigquery.googleapis.com— قاعدة بيانات التحليلstorage.googleapis.com— Cloud Storageartifactregistry.googleapis.com— تخزين حاويات التدريب
نُفعِّلها مرّة من سطر الأوامر:
gcloud services enable aiplatform.googleapis.com \
notebooks.googleapis.com bigquery.googleapis.com \
storage.googleapis.com artifactregistry.googleapis.com \
--project fraud-detection-lab
نسيان تفعيل واحدة يُنتِج رسالة خطأ من نوع «API غير مفعَّل» تُفس َّر بسهولة، لكنّها تُوقِف السلسلة كاملةً. لذلك خطوة التفعيل الأولى للمشروع تُنجَز مرّة، وتُدوَّن في مستند الفريق.
هويّة يُنفَّذ بها كلّ شيء: حساب الخدمة
الأذونات في GCP تُدار بـIAM، وكلّ إجراء (قراءة ملف، إطلاق تدريب، نشر نقطة نهاية) يُنسَب إلى هويّة (principal). أنت شخصيًّا هويّة، لكنّ المُشغِّلات الآليّة (خطّ CI، مُجدوِل، وظيفة تدريب) لا يجب أن تعمل بهويّتك: إذا غادرتَ الفريق أو دُوِّرت مفاتيحك، كلّ شيء يتوقّف.
الحلّ: حساب الخدمة (service account)، هويّة روبوتيّة تحمل مجموعة صلاحيات محدَّدة. للفيل الأحمر ننشئ ثلاثة حسابات:
gcloud iam service-accounts create sa-training \
--display-name "Vertex AI training"
gcloud iam service-accounts create sa-endpoint \
--display-name "Vertex AI endpoint"
gcloud iam service-accounts create sa-pipeline \
--display-name "Vertex AI Pipelines"
ثم نمنح كلًّا منها أقلّ صلاحيات لازمة (least privilege):
sa-training: يقرأ من BigQuery ومن دلوgs://fraud-features-lab، ويكتب النموذج إلىgs://fraud-models-lab.sa-endpoint: يقرأ النموذج فقط، ويكتب سجلّات الطلبات إلى BigQuery.sa-pipeline: يشغّل التدريب والنشر (aiplatform.user)، ولا يقرأ البيانات مباشرة.
هذا الفصل مُهمّ: تسرُّب مفتاح sa-endpoint لا يُتيح إعادة تدريب النموذج، وتسرّب sa-training لا يمسّ نقطة الإنتاج.
خريطة مكوّنات Vertex AI
كلّ ما سنستعمله في الدورة يقع تحت مظلّة واحدة. اقرأ الجدول أفقيًّا: الوحدة تُحيل على الخدمة المعنيّة.
| المكوّن | لماذا موجود | يُدرَس في |
|---|---|---|
| Workbench / Colab Enterprise | دفاتر مُدارة مع وصول مباشر إلى BigQuery | الوحدة 2 |
| Vertex Datasets | كتالوج للجدول أو الصور المستعملة في التدريب | الوحدة 3 |
| Custom Training / Training Pipelines | تشغيل تدريب في حاوية مع وحدة معالجة رسوميّة | الوحدة 4 |
| Vizier (Hyperparameter Tuning) | ضبط المعاملات الفائقة بتجارب متوازية | الوحدة 5 |
| Model Registry | تخزين النماذج المُدرَّبة بإصدارات وأسماء مستعارة | الوحدة 6 |
| Endpoints | خدمة توقّع لحظيّة مع تقسيم حركة المرور | الوحدة 7 |
| Batch Prediction | توقّع بالدفعات على مجموعة كبيرة | الوحدة 8 |
| Pipelines | تنسيق الخطوات في رسم بيانيّ قابل لإعادة التشغيل | الوحدة 9 |
| Model Garden | كتالوج نماذج الأساس القابلة للاستدعاء والتخصيص | الوحدة 10 |
الفوترة بالثانية والتفعيل عند الحاجة
الفوترة على Vertex AI بالثانية، مع حدّ أدنى قصير على بعض الموارد (دفتر Workbench مثلًا: دقيقة واحدة). النتيجة: لا تخف من إنشاء دفتر لتجربة سريعة، بل خَفْ من نسيانه مشتغلًا طوال الليل. آلة n1-standard-4 مع T4 مشغَّلة 12 ساعة يوميًّا تكلِّف عشرات الدولارات في الشهر — وإن كانت خامدة.
من الجيّد أن يُفعَّل، منذ إنشاء الدفتر، الإيقاف عند الخمول (idle shutdown) بمهلة 30 دقيقة. ندرس هذا في الوحدة 2. القاعدة الأشمل: كلّ مورد سحابيّ ذو زرّ «إيقاف» يجب أن تكون له سياسة إيقاف مكتوبة، لا مجرّد نيّة حسنة.
SDK وسطر الأوامر: أداتان لا واحدة
يعمل Vertex AI بأداتَين متكاملتَين:
gcloud: أوامر يدويّة، إنشاء المشروع ، تفعيل APIs، منح الأدوار.google-cloud-aiplatform: مكتبة Python للإطلاق البرمجيّ للتدريب والنشر والاستفسار.
كلاهما يستدعي الـAPI نفسه في النهاية. الأولى للإدارة، الثانية للأتمتة داخل الدفاتر والخطوط.
from google.cloud import aiplatform
aiplatform.init(
project="fraud-detection-lab",
location="europe-west1",
staging_bucket="gs://fraud-staging-lab",
)
هذا الاستدعاء الأوّل يُثبِّت المشروع والمنطقة ودلو التخزين المؤقّت لكامل الجلسة. نسيانه يُنتج رسائل خطأ غامضة على مكان النموذج.
عندما يُقترَح عليك تنزيل مفتاح JSON لحساب خدمة إلى جهاز التطوير، تجنّبه ما أمكن. البديل: بديل الشخص (user impersonation) عبر gcloud auth application-default login --impersonate-service-account=sa-training@.... مفتاح JSON مسرَّب هو تسريب مفتوح المدّة، بينما بديل الشخص يُقيَّد بالسياسة وجلسة المتصفّح.
في مشاريع GCP كلّها، اضبط CLOUDSDK_COMPUTE_REGION وCLOUDSDK_AI_PLATFORM_REGION في ملفّ .envrc للمشروع، وشُقّ أدواتك انطلاقًا منه. هذه الخطوة تقيك من أخطاء «موارد في منطقة ونماذج في أخرى» التي تُطارَد ساعات ولا تُكشَف بالفحص السطحيّ.
في الخلاصة
- المشروع هو حاوية العزل والفو اتير، والمنطقة قرار موحَّد يُوثَّق.
- كلّ إجراء يمرّ عبر هويّة IAM؛ الأتمتة تعمل بـحسابات خدمة بأقلّ صلاحيات لازمة.
- Vertex AI عائلة خدمات مترابطة: دفاتر، بيانات، تدريب، ضبط، سجلّ، نقاط نهاية، دفعات، خطوط، وحديقة نماذج.
- الفوترة بالثانية تجعل الموارد المنسيّة مصدر الفواتير الكبرى؛ إيقاف تلقائيّ عند الخمول قاعدة لا استثناء.
الوحدة التالية: كيف نُنشئ دفتر Workbench، نصله بـBigQuery، ونضمن ألّا يعمل ليلًا بلا استعمال.