پیش‌بینی رتبه‌بندی فیلم با Vertex AI AutoML

1. معرفی

در این کد، ما یک مدل پیش‌بینی امتیاز فیلم با استفاده از Vertex AI AutoML ایجاد می‌کنیم و نقطه پایانی مدل مستقر شده را از Java Cloud Functions راه‌اندازی می‌کنیم. این مدل با داده های ذخیره شده در BigQuery و ثبت شده در Vertex AI آموزش داده می شود. لیست خدمات را می توان به دو بخش تقسیم کرد:

  1. ایجاد و استقرار مدل ML
  2. ماشه برای پیش بینی با استفاده از ML API

ایجاد مدل ML:

  1. منبع داده ها از CSV به BigQuery است
  2. داده های BigQuery در Vertex AI برای ایجاد مدل AutoML یکپارچه شده است
  3. مدل در Vertex AI Model Registry برای ایجاد API نقطه پایانی مستقر شده است

ماشه برای پیش بینی با استفاده از ML API:

  1. توابع ابری جاوا برای شروع فراخوانی نقطه پایانی مدل AutoML مستقر شده که جزئیات فیلم را به عنوان درخواست از UI دریافت می کند و امتیاز فیلم پیش بینی شده را برمی گرداند.

در زیر یک نمای کلی معماری سطح بالا از برنامه آمده است:

5ae50607c0f2db20.png

کاربرد معماری فوق برای این کد لبه خارج از محدوده است، اما اگر دوست دارید برنامه مشتری را نیز توسعه دهید، لطفاً به وبلاگ مراجعه کنید.

بیایید به مراحل اجرا بپردازیم.

چیزی که خواهی ساخت

شما یک را ایجاد خواهید کرد

  • یک مجموعه داده BigQuery که شامل جدول و اجزای مدل است
  • Vertex AI AutoML Model (ایجاد و استقرار)
  • Java Cloud Functions برای پیش بینی با استفاده از ML API فعال می شود

2. الزامات

  • مرورگری مانند کروم یا فایرفاکس
  • یک پروژه Google Cloud با فعال کردن صورت‌حساب

در زیر پیش نیازها آمده است:

پروژه خود را ایجاد کنید

  1. در Google Cloud Console ، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه Cloud شما فعال است. با نحوه بررسی فعال بودن صورت‌حساب در پروژه آشنا شوید.
  3. برای فعال کردن API به BigQuery بروید. همچنین می‌توانید رابط وب BigQuery را مستقیماً با وارد کردن URL زیر در مرورگر خود باز کنید: https://console.cloud.google.com/bigquery

Cloud Shell را فعال کنید

  1. شما از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Google Cloud اجرا می شود و با bq از قبل بارگذاری شده است: از کنسول Cloud، روی Activate Cloud Shell در گوشه سمت راست بالا کلیک کنید: 6757b2fb50ddcc2d.png
  2. پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است. برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد
gcloud config list project
  1. اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:
gcloud config set project <PROJECT_ID>

برای دستورات و استفاده از gcloud به اسناد مراجعه کنید.

3. تهیه داده های آموزشی

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

4. ایجاد و بارگذاری مجموعه داده

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

  1. در Cloud Shell از دستور bq mk برای ایجاد مجموعه داده ای به نام فیلم ها استفاده کنید.
bq mk --location=<<LOCATION>> movies

مکان را روی یک منطقه (asia-south1) تنظیم کنید. به یاد داشته باشید که آن را به عنوان منطقه برای مرحله VERTEX AI نیز تنظیم کنید (هر دو نمونه باید در یک منطقه باشند).

  1. مطمئن شوید که فایل داده (csv.) را آماده دارید. دستورات زیر را در Cloud Shell برای کلون کردن مخزن و رفتن به پروژه اجرا کنید:
git clone <<repository link>>

cd movie-score
  1. از دستور bq load برای بارگیری فایل CSV خود در جدول BigQuery استفاده کنید (لطفاً توجه داشته باشید که می توانید مستقیماً از رابط کاربری BigQuery نیز آپلود کنید):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. پرس و جو به یکی از 3 روش:

ما می‌توانیم با BigQuery به سه روش تعامل کنیم، دو مورد از آن‌ها را امتحان می‌کنیم: الف. رابط کاربری وب BigQuery b. دستور bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

من از BigQuery Web SQL Workspace برای اجرای پرس و جوها استفاده کرده ام. فضای کاری SQL به شکل زیر است:

109a0b2c7155e9b3.png

با استفاده از دستور bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. استفاده از داده های BigQuery در Vertex AI AutoML

از داده های خود از BigQuery برای ایجاد مستقیم یک مدل AutoML با Vertex AI استفاده کنید. به یاد داشته باشید، ما همچنین می توانیم AutoML را از خود BigQuery انجام دهیم و مدل را با VertexAI ثبت کنیم و نقطه پایانی را در معرض نمایش قرار دهیم. به مستندات BigQuery AutoML مراجعه کنید. اما در این مثال از Vertex AI AutoML برای ایجاد مدل خود استفاده خواهیم کرد.

ایجاد مجموعه داده Vertex AI

از Google Cloud Console به Vertex AI بروید، اگر Vertex AI API را انجام نداده اید فعال کنید، داده ها را گسترش دهید و Datasets را انتخاب کنید، روی Create data کلیک کنید، نوع داده TABULAR و گزینه "Regression / classification" را انتخاب کنید و روی ایجاد کلیک کنید:

4104c75c34cbd2d9.png

منبع داده را انتخاب کنید

در صفحه بعد، یک منبع داده را انتخاب کنید. گزینه "Select a table or view from BigQuery" را انتخاب کنید و در قسمت BigQuery مسیر BROWSE جدول را از BigQuery انتخاب کنید. روی Continue کلیک کنید.

به یاد داشته باشید: نمونه BigQuery و مجموعه داده های Vertex AI باید دارای یک منطقه باشند تا جدول BigQuery در Vertex AI نمایش داده شود.

b787ef18dbca4cff.png

هنگامی که جدول/نمای منبع خود را انتخاب می کنید، از فهرست مرور، به خاطر داشته باشید که روی دکمه رادیویی کلیک کنید تا مراحل زیر را ادامه دهید. اگر تصادفاً روی نام جدول/نما کلیک کنید، به Dataplex منتقل می شوید. اگر این اتفاق برای شما افتاد، فقط باید به Vertex AI مراجعه کنید.

مدل را آموزش دهید

  1. پس از ایجاد مجموعه داده، باید صفحه Analyze را با گزینه آموزش یک مدل جدید مشاهده کنید. روی آن کلیک کنید:

bf095263d57106de.png

  1. Objective را به عنوان Classification بگذارید و گزینه AutoML را در صفحه اول انتخاب کنید و روی ادامه کلیک کنید: e50597bc3f29894c.png
  2. به مدل خود یک نام بدهید و نام ستون هدف را به عنوان «امتیاز» از منوی کشویی که نشان می‌دهد انتخاب کنید و روی Continue کلیک کنید.
  3. همچنین توجه داشته باشید که می‌توانید گزینه «Export test test to BigQuery» را علامت بزنید، که به راحتی می‌توانید مجموعه آزمایشی با نتایج را در پایگاه داده بدون لایه یکپارچه‌سازی اضافی یا نیاز به جابجایی داده‌ها بین سرویس‌ها به‌طور کارآمد مشاهده کنید.
  4. در صفحه بعد، شما این گزینه را دارید که هر گزینه آموزشی پیشرفته ای را که نیاز دارید و ساعت هایی را که می خواهید مدل را برای آموزش تنظیم کنید، انتخاب کنید. لطفاً توجه داشته باشید که ممکن است بخواهید قبل از افزایش تعداد ساعات گره ای که می خواهید برای آموزش استفاده کنید، به قیمت گذاری توجه داشته باشید.

برای شروع آموزش مدل جدید خود، روی Start Training کلیک کنید.

e72b004a17849bd.png

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

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

  1. مشاهده و ارزیابی نتایج آموزش 4767b4bbd7cf93fa.png
  2. مدل را با نقطه پایانی API خود مستقر و آزمایش کنید

پس از استقرار مدل خود، یک نقطه پایانی API ایجاد می شود که می تواند در برنامه شما برای ارسال درخواست ها و دریافت نتایج پیش بینی مدل در پاسخ استفاده شود.

95fb4495618174f0.png

قبل از اینکه از این بخش حرکت کنید، مطمئن شوید که شناسه نقطه پایانی، مکان و سایر جزئیات مدل مستقر شده را در بخش نقطه پایانی Vertex AI خود یادداشت کرده اید.

6. Java Cloud Function برای راه اندازی فراخوانی ML

به یاد دارید که چگونه نقطه پایانی و سایر جزئیات مرحله استقرار ML را داریم؟ ما قصد داریم از آن در اینجا استفاده کنیم، و از آنجایی که از توابع ابری جاوا استفاده می کنیم، از pom.xml برای مدیریت وابستگی ها استفاده خواهیم کرد. ما از کتابخانه google-cloud-aiplatform برای مصرف Vertex AI AutoML Endpoint API استفاده می کنیم.

  1. توابع ابری را در کنسول Google Cloud جستجو کنید و روی «ایجاد تابع» کلیک کنید.
  2. جزئیات پیکربندی، مانند محیط، نام تابع، منطقه، راه‌انداز (در این مورد، HTTPS)، احراز هویت انتخابی خود را وارد کنید، «نیاز به HTTPS» را فعال کنید و روی next/save کلیک کنید.

a68272022df062f2.png

  1. در صفحه بعد، Runtime (جاوا 11)، کد منبع (Inline یا آپلود) را انتخاب کنید و ویرایش را شروع کنید.

13df616369ca5951.png

  1. فایل‌های java و pom.xml را از repo کپی کنید و در فایل‌های مربوطه در ویرایشگر درون خطی جای‌گذاری کنید، اگر از ویرایشگر محلی خود استفاده می‌کنید (توصیه می‌شود) سپس منبع را از repo کلون کنید.
  2. شناسه پروژه، شناسه نقطه پایانی، مکان و نقطه پایانی را در فایل منبع جاوا برای این مثال تغییر دهید، اما لطفاً توجه داشته باشید که بهترین روش استفاده از Secret Manager برای ذخیره اعتبار است.
  3. برای محدوده این نرم افزار، بخش های MongoDB در کلاس java را در کد منبع کپی شده خود نظر دهید.

پس از تکمیل تمام تغییرات، عملکرد را اجرا کنید. شما باید URL نقطه پایانی را ببینید که می تواند در برنامه مشتری شما برای ارسال درخواست به این تابع ابری و دریافت امتیاز فیلم به عنوان پاسخ استفاده شود.

7. پاکسازی کنید

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این پست، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud، به صفحه مدیریت منابع بروید
  2. در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و سپس روی Delete کلیک کنید
  3. در گفتگو، شناسه پروژه را تایپ کنید و سپس بر روی Shut down کلیک کنید تا پروژه حذف شود

8. تبریک می گویم

تبریک می گویم! شما با موفقیت یک مدل پیش‌بینی امتیاز فیلم را در Vertex AI AutoML ایجاد و اجرا کردید و مدل مستقر شده را از توابع ابری راه‌اندازی کردید.