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

1. بررسی اجمالی

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

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

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

  • آموزش یک مدل با BigQuery Machine Learning (BQML)
  • مدل BQML خود را به Cloud Storage صادر کنید
  • BQML آموزش دیده خود را در Vertex AI مستقر کنید
  • پیش بینی های مربوط به مدل مستقر شده خود را دریافت کنید

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

2. مقدمه ای بر Vertex AI

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

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

نمای کلی محصول Vertex

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

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

مرحله 1: Compute Engine API را فعال کنید

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

مرحله ۲: Vertex AI API را فعال کنید

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

داشبورد Vertex AI

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

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

منوی Vertex AI

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

نمونه TFE

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

نوت بوک CAIP را باز کنید

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

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

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

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

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

در قسمت Dataset ID ، cc_default را وارد کنید. بقیه فیلدها را همانطور که هست رها کنید و روی ایجاد مجموعه داده کلیک کنید.

مرحله 2: یک پرس و جو CREATE MODEL را اجرا کنید

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

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`

این یک مدل رگرسیون لجستیک ایجاد می کند که یک مقدار عددی از 0 تا 1 را خروجی می دهد، که نشان می دهد حدود یک دقیقه طول می کشد تا اجرا شود. وقتی کامل شد، مدل را در زیر مجموعه داده خود خواهید دید:

جزئیات مدل BQML

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

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

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

مرحله 1: یک سطل ذخیره سازی ابری برای مدل خود ایجاد کنید

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

صادرات مدل BQML

این از شما می‌خواهد که مکان Google Cloud Storage (GCS) را وارد کنید، جایی که می‌خواهید دارایی‌های مدل شما صادر شود. اگر هنوز سطل GCS ندارید، نگران نباشید! ما در شرف ایجاد یکی هستیم. ابتدا روی Browse کلیک کنید:

سطل های GCS را مرور کنید

سپس روی نماد + کلیک کنید تا یک سطل جدید ایجاد شود:

سطل جدید GCS

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

محل سطل

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

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

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

مرحله 2: مدل BQML را صادر کنید

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

مدل مسیر صادرات

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

در حالی که مدل شما صادر می شود، به بخش فضای ذخیره سازی کنسول Cloud خود بروید. وقتی کار شما کامل شد، باید دارایی های مدل خود را به سطلی که به تازگی در زیر شاخه model-assets ایجاد کرده اید صادر کنید:

دارایی های مدل صادراتی

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

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

مرحله 1: مدل را وارد کنید

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

مدل وارداتی

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

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

در قسمت Model artifact location، روی Browse کلیک کنید، روی سطل GCS که به تازگی ایجاد کرده اید، کلیک کنید و روی پوشه model-assets کلیک کنید:

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

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

بخش مدل ها

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

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

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

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

مستقر و آزمایش کنید

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

سپس Done را انتخاب کنید و روی Continue کلیک کنید. تنظیمات مکان انتخاب شده را همانطور که هست رها کنید و سپس روی Deploy کلیک کنید. استقرار نقطه پایانی شما چند دقیقه طول می کشد. پس از تکمیل، یک علامت سبز رنگ در کنار آن خواهید دید:

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

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

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

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

  • رابط هوش مصنوعی Vertex
  • Vertex AI API

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

مرحله 1: پیش بینی های مدل را با Vertex AI API دریافت کنید

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

سپس، نمونه نوت‌بوکی را که ایجاد کرده‌اید باز کنید و یک نوت بوک پایتون 3 را از لانچر باز کنید:

نوت بوک را باز کنید

در نوت بوک خود، موارد زیر را در یک سلول اجرا کنید تا یک نمونه آزمایشی در فایل 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 UI، روی Sample Request برای نقطه پایانی که به تازگی مستقر کرده اید، کلیک کنید:

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

کد مرحله 4 در تب 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 احتمال هر کلاس را نشان می دهد. برای این مثال، مدل ما پیش‌بینی می‌کند که 81 درصد احتمال دارد که این شخص در پرداخت بعدی خود نکول کند. مقدار .819 با کلاس 0 مطابقت دارد (نه پیش فرض).

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

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

  • آموزش یک مدل در BQML
  • مدل BQML خود را به Cloud Storage صادر کنید
  • برای پیش بینی مدل BQML را به Vertex AI وارد کنید
  • یک مدل Vertex AI ایجاد کنید و مدل را در نقطه پایانی مستقر کنید
  • از طریق نوت‌بوک‌های Vertex و پیچ‌شدن، پیش‌بینی‌هایی را در نقطه پایانی مستقر شده خود دریافت کنید

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

9. پاکسازی

اگر می‌خواهید به استفاده از نوت‌بوکی که در این آزمایشگاه ایجاد کرده‌اید ادامه دهید، توصیه می‌شود در صورت عدم استفاده آن را خاموش کنید. از رابط کاربری Notebooks در Cloud Console خود، نوت بوک را انتخاب کنید و سپس Stop را انتخاب کنید:

توقف نمونه

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

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

نقطه پایانی را حذف کنید

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

ذخیره سازی را حذف کنید