Vertex AI: صادرات و استقرار یک مدل یادگیری ماشین BigQuery برای پیش بینی

۱. مرور کلی

در این آزمایشگاه، شما یک مدل را با BigQuery Machine Learning آموزش خواهید داد و سپس آن مدل را به Vertex AI صادر و مستقر خواهید کرد. این جدیدترین محصول هوش مصنوعی ارائه شده در Google Cloud است.

آنچه یاد می‌گیرید

شما یاد خواهید گرفت که چگونه:

  • آموزش یک مدل با یادگیری ماشین BigQuery (BQML)
  • مدل BQML خود را به فضای ذخیره‌سازی ابری (Cloud Storage) منتقل کنید
  • BQML آموزش‌دیده خود را در Vertex AI مستقر کنید
  • پیش‌بینی‌ها را روی مدل مستقر شده خود دریافت کنید

هزینه کل اجرای این آزمایشگاه در گوگل کلود حدود ۲ دلار است.

۲. مقدمه‌ای بر هوش مصنوعی ورتکس

این آزمایشگاه از جدیدترین محصول هوش مصنوعی موجود در Google Cloud استفاده می‌کند. Vertex AI، محصولات یادگیری ماشین را در Google Cloud ادغام می‌کند تا یک تجربه توسعه یکپارچه را فراهم کند. پیش از این، مدل‌های آموزش‌دیده با AutoML و مدل‌های سفارشی از طریق سرویس‌های جداگانه قابل دسترسی بودند. این محصول جدید، هر دو را در یک API واحد، به همراه سایر محصولات جدید، ترکیب می‌کند. همچنین می‌توانید پروژه‌های موجود را به Vertex AI منتقل کنید. در صورت داشتن هرگونه بازخورد، لطفاً به صفحه پشتیبانی مراجعه کنید.

هوش مصنوعی ورتکس شامل محصولات مختلفی برای پشتیبانی از گردش‌های کاری یادگیری ماشینی سرتاسری است. این آزمایشگاه بر روی محصولات برجسته زیر تمرکز خواهد کرد: پیش‌بینی و دفترچه یادداشت.

بررسی اجمالی محصولات ورتکس

۳. محیط خود را راه‌اندازی کنید

برای اجرای این codelab به یک پروژه Google Cloud Platform با قابلیت پرداخت صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعمل‌های اینجا را دنبال کنید.

مرحله ۱: فعال کردن رابط برنامه‌نویسی کاربردی موتور محاسبات

به Compute Engine بروید و اگر از قبل فعال نشده است، آن را فعال کنید . برای ایجاد نمونه نوت‌بوک خود به این مورد نیاز خواهید داشت.

مرحله 2: فعال کردن API هوش مصنوعی Vertex

به بخش Vertex AI در کنسول ابری خود بروید و روی Enable Vertex AI API کلیک کنید.

داشبورد هوش مصنوعی ورتکس

مرحله ۳: ایجاد یک نمونه از Notebooks

ما از Notebooks برای دریافت پیش‌بینی‌ها پس از استقرار مدل خود استفاده خواهیم کرد. از بخش Vertex AI در Cloud Console خود، روی Notebooks کلیک کنید:

منوی هوش مصنوعی ورتکس

از آنجا، New Instance را انتخاب کنید. سپس نوع نمونه TensorFlow Enterprise 2.3 را بدون GPU انتخاب کنید:

نمونه TFE

از گزینه‌های پیش‌فرض استفاده کنید و سپس روی Create کلیک کنید. پس از ایجاد نمونه، Open JupyterLab را انتخاب کنید:

دفترچه یادداشت CAIP را باز کنید

۴. یک مدل BigQuery ML را آموزش دهید

BigQuery ML به شما امکان می‌دهد مدل‌های یادگیری ماشین سفارشی را با استفاده از داده‌های ذخیره شده در BigQuery آموزش دهید. می‌توانید مدل‌ها را در SQL آموزش داده و از آنها پیش‌بینی دریافت کنید. برای این آزمایش، از یک مجموعه داده عمومی در BigQuery برای پیش‌بینی احتمال عدم پرداخت با کارت اعتباری استفاده خواهیم کرد.

مرحله ۱: ایجاد یک مجموعه داده BigQuery در پروژه خود

برای آموزش یک مدل در BigQuery ML، باید یک مجموعه داده در پروژه خود ایجاد کنید تا این مدل را ذخیره کند. روی پروژه خود در نوار منوی سمت چپ کلیک کنید و سپس Create Dataset را انتخاب کنید:

ایجاد مجموعه داده BQ

در فیلد Dataset ID ، cc_default را وارد کنید. بقیه فیلدها را بدون تغییر رها کنید و روی Create dataset کلیک کنید.

مرحله ۲: اجرای کوئری CREATE MODEL

در ویرایشگر BigQuery Query ، کوئری CREATE MODEL زیر را اجرا کنید تا یک مدل BigQuery ML روی مجموعه داده عمومی که استفاده خواهیم کرد، ایجاد و آموزش داده شود. حتماً your-project با نام پروژه ابری خود جایگزین کنید:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

این یک مدل رگرسیون لجستیک ایجاد می‌کند که خروجی آن یک مقدار عددی بین ۰ تا ۱ است و نشان می‌دهد که اجرای آن حدود یک دقیقه طول می‌کشد. پس از اتمام، مدل را در زیر مجموعه داده‌های خود مشاهده خواهید کرد:

جزئیات مدل BQML

شما می‌توانید روی مدل کلیک کنید تا معیارهای آموزش و ارزیابی آن را مشاهده کنید.

۵. مدل BigQuery ML خود را صادر کنید

با یک مدل BQML آموزش‌دیده، می‌توانیم از سینتکس SQL BQML برای دریافت پیش‌بینی‌ها استفاده کنیم یا می‌توانیم مدل را برای استقرار در جای دیگر، خروجی بگیریم. در اینجا مدل خود را خروجی می‌گیریم تا بتوانیم آن را در Vertex AI مستقر کنیم تا به صورت مقیاس‌پذیر به مدل سرویس دهد و پیش‌بینی‌ها را دریافت کند.

مرحله ۱: یک فضای ذخیره‌سازی ابری برای مدل خود ایجاد کنید

در جزئیات مدل، روی Export Model کلیک کنید:

مدل BQML را صادر کنید

این از شما می‌خواهد که محل ذخیره‌سازی ابری گوگل (GCS) را که می‌خواهید داده‌های مدل شما از آنجا استخراج شوند، وارد کنید. اگر هنوز یک سطل GCS ندارید، نگران نباشید! ما در شرف ایجاد یکی هستیم. ابتدا، روی مرور کلیک کنید:

مرور سطل‌های GCS

سپس برای ایجاد یک سطل جدید، روی آیکون + کلیک کنید:

سطل جدید GCS

یک نام منحصر به فرد به آن بدهید (نام‌های سطل ذخیره‌سازی باید به صورت سراسری منحصر به فرد باشند). روی ادامه کلیک کنید. در مرحله بعد، در قسمت نوع مکان ، منطقه را انتخاب کنید و هر یک از مناطق را از منوی کشویی انتخاب کنید:

محل سطل

از کلاس ذخیره‌سازی پیش‌فرض استفاده کنید و در قسمت کنترل دسترسی، مطمئن شوید که Uniform انتخاب شده است:

کنترل دسترسی یکنواخت

روی ادامه کلیک کنید و برای بقیه گزینه‌ها از مقادیر پیش‌فرض استفاده کنید. سپس روی ایجاد کلیک کنید.

مرحله ۲: مدل BQML را اکسپورت کنید

با ایجاد سطل جدید خود، model-assets (یا هر چیزی که می‌خواهید) را در فیلد Name وارد کنید و سپس روی Select کلیک کنید:

مسیر خروجی مدل

سپس روی Export کلیک کنید. این کار در BigQuery یک job ایجاد می‌کند تا مدل شما را در قالب SavedModel تنسورفلو به باکت GCS تازه ایجاد شده‌ای که مشخص کرده‌اید، export کند. این export حدود یک دقیقه طول می‌کشد.

در حالی که مدل شما در حال اکسپورت شدن است، به بخش Storage کنسول Cloud خود بروید. وقتی کار شما تمام شد، باید فایل‌های مدل خود را که به باکتی که اخیراً در زیرشاخه model-assets ایجاد کرده‌اید، اکسپورت شده‌اند، ببینید:

دارایی‌های مدل صادر شده

۶. مدل را به Vertex AI وارد کنید

در این مرحله، ما به محل ذخیره‌سازی GCS که در آن دارایی‌های مدل خود را صادر کرده‌ایم، ارجاع می‌دهیم تا مدل را ایجاد و به Vertex AI وارد کنیم.

مرحله ۱: وارد کردن مدل

در کنسول ابری خود، به بخش Vertex AI Models بروید. از آنجا، گزینه Import را انتخاب کنید:

مدل وارداتی

در مرحله اول، نام مدل خود را predict_default بگذارید. همان منطقه‌ای را که سطل خود را در آن ایجاد کرده‌اید ( us-central1 ، europe-west4 یا asia-east1 ) انتخاب کنید. سپس روی ادامه کلیک کنید. در تنظیمات مدل ، گزینه "Import model artifacts into a new pre-built container" را انتخاب شده نگه دارید.

در منوی کشویی Model framework ، گزینه TensorFlow را انتخاب کنید. سپس نسخه 2.3 را به عنوان نسخه فریم ورک انتخاب کنید.

در فیلد Model artifact location، روی Browse کلیک کنید، روی سطل GCS که تازه ایجاد کرده‌اید کلیک کنید و روی دایرکتوری model-assets کلیک کنید:

مسیر دارایی‌های مدل

سپس روی «وارد کردن» کلیک کنید. وارد کردن مدل شما چند دقیقه طول می‌کشد. پس از ایجاد، آن را در بخش مدل‌های کنسول ابری خود مشاهده خواهید کرد:

بخش مدل‌ها

۷. مدل را در یک نقطه پایانی مستقر کنید

حالا که مدل خود را آپلود کرده‌ایم، مرحله بعدی ایجاد یک Endpoint در Vertex است. یک منبع Model در Vertex می‌تواند چندین Endpoint مرتبط با خود داشته باشد و شما می‌توانید ترافیک را بین Endpointها تقسیم کنید.

مرحله ۱: ایجاد یک نقطه پایانی

در صفحه مدل خود، به برگه Deploy and test بروید و روی Deploy to endpoint کلیک کنید:

استقرار و آزمایش

به نقطه پایانی خود یک نام، مانند default_pred_v1 ، بدهید، تنظیمات تقسیم ترافیک را به همان صورت باقی بگذارید، و سپس یک نوع ماشین برای استقرار مدل خود انتخاب کنید. ما در اینجا از n1-highcpu-2 استفاده کردیم، اما شما می‌توانید هر نوع ماشینی را که دوست دارید انتخاب کنید.

سپس گزینه «انجام شد» را انتخاب کرده و روی «ادامه» کلیک کنید. تنظیمات مکان انتخاب شده را به همان صورت رها کنید و سپس روی «استقرار» کلیک کنید. استقرار نقطه پایانی شما چند دقیقه طول خواهد کشید. پس از اتمام، یک علامت تیک سبز در کنار آن مشاهده خواهید کرد:

نقطه پایانی مستقر شده

داری نزدیک می‌شی! حالا آماده‌ای که پیش‌بینی‌ها رو روی مدل پیاده‌سازی‌شده‌ات دریافت کنی.

۸. دریافت پیش‌بینی‌ها روی مدل مستقر شده

چند گزینه برای دریافت پیش‌بینی‌های مدل وجود دارد:

  • رابط کاربری هوش مصنوعی ورتکس
  • رابط برنامه‌نویسی کاربردی هوش مصنوعی ورتکس

در اینجا نحوه دریافت پیش‌بینی‌ها از طریق API را نشان خواهیم داد.

مرحله ۱: دریافت پیش‌بینی‌های مدل با رابط برنامه‌نویسی کاربردی هوش مصنوعی ورتکس

برای نشان دادن نحوه دریافت پیش‌بینی‌های مدل در اینجا، از نمونه Vertex Notebook که در ابتدای این تمرین ایجاد کردید، استفاده خواهیم کرد.

سپس، نمونه دفترچه یادداشتی که ایجاد کرده‌اید را باز کنید و یک دفترچه یادداشت پایتون ۳ را از Launcher باز کنید:

دفترچه یادداشت را باز کنید

در دفترچه یادداشت خود، دستور زیر را در یک سلول اجرا کنید تا یک مثال آزمایشی در یک فایل JSON با نام default-pred.json نوشته شود. ما این مثال را برای پیش‌بینی به مدل خود ارسال خواهیم کرد:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

سپس، در رابط کاربری Vertex، روی Sample Request برای نقطه پایانی که اخیراً مستقر کرده‌اید کلیک کنید:

درخواست نمونه

کد مرحله ۴ در تب REST را در دفترچه یادداشت خود کپی کنید و سلول را اجرا کنید:

درخواست متغیرها

سپس یک متغیر برای منطقه‌ای که سطل و مدل خود را در آن ایجاد کرده‌اید، اضافه کنید. your-region را در رشته زیر جایگزین کنید:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

در نهایت، با کپی کردن کد زیر در دفترچه یادداشت خود، یک درخواست پیش‌بینی به نقطه پایانی خود با curl ارسال کنید:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

شما باید چیزی شبیه به موارد زیر را ببینید (مقادیر دقیق پیش‌بینی کمی متفاوت خواهند بود):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

مقادیر موجود در default_payment_next_month_probs احتمال هر کلاس را نشان می‌دهند. برای این مثال، مدل ما پیش‌بینی می‌کند که ۸۱٪ احتمال وجود دارد که این شخص در پرداخت بعدی خود قصور نکند . مقدار .819 مربوط به کلاس 0 (عدم قصور) است.

🎉 تبریک می‌گویم! 🎉

شما یاد گرفته‌اید که چگونه:

  • آموزش یک مدل در BQML
  • مدل BQML خود را به فضای ذخیره‌سازی ابری (Cloud Storage) منتقل کنید
  • مدل BQML را برای پیش‌بینی به Vertex AI وارد کنید
  • یک مدل Vertex AI ایجاد کنید و مدل را در یک نقطه پایانی مستقر کنید
  • از طریق Vertex Notebooks و curl پیش‌بینی‌هایی در مورد نقطه پایانی مستقر خود دریافت کنید

برای کسب اطلاعات بیشتر در مورد بخش‌های مختلف هوش مصنوعی Vertex، مستندات را بررسی کنید.

۹. پاکسازی

اگر می‌خواهید به استفاده از دفترچه یادداشتی که در این آزمایش ایجاد کرده‌اید ادامه دهید، توصیه می‌شود در صورت عدم استفاده آن را خاموش کنید. از رابط کاربری دفترچه یادداشت‌ها در کنسول ابری خود، دفترچه یادداشت را انتخاب کرده و سپس توقف را انتخاب کنید:

مثال را متوقف کنید

اگر می‌خواهید دفترچه یادداشت را به طور کامل حذف کنید، کافیست روی دکمه Delete در بالا سمت راست کلیک کنید.

برای حذف نقطه پایانی که مستقر کرده‌اید، به بخش نقاط پایانی کنسول Vertex AI خود بروید و روی نماد حذف کلیک کنید:

حذف نقطه پایانی

برای حذف Storage Bucket، با استفاده از منوی ناوبری در Cloud Console خود، به Storage بروید، Bucket خود را انتخاب کنید و روی Delete کلیک کنید:

حذف فضای ذخیره‌سازی