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

۱. مقدمه

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

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

ایجاد مدل ML:

  1. داده‌ها از CSV به BigQuery منتقل شدند
  2. داده‌های BigQuery برای ایجاد مدل AutoML در Vertex AI ادغام شده‌اند.
  3. مدل مستقر در رجیستری مدل Vertex AI برای تولید API نقطه پایانی

فعال‌سازی برای پیش‌بینی با استفاده از API یادگیری ماشین:

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

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

5ae50607c0f2db20.png

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

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

آنچه خواهید ساخت

شما یک [چیز/چیزی] ایجاد خواهید کرد

  • یک مجموعه داده BigQuery برای شامل کردن اجزای جدول و مدل
  • مدل هوش مصنوعی خودکار Vertex AI (ایجاد و استقرار)
  • توابع ابری جاوا برای پیش‌بینی با استفاده از API یادگیری ماشین فعال می‌شوند

۲. الزامات

  • یک مرورگر، مانند کروم یا فایرفاکس
  • یک پروژه گوگل کلود با قابلیت پرداخت صورتحساب

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

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

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

فعال کردن پوسته ابری

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

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

۳. آماده‌سازی داده‌های آموزشی

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

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

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

  1. در Cloud Shell، از دستور bq mk برای ایجاد یک مجموعه داده به نام "movies" استفاده کنید.
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. به یکی از ۳ روش زیر استعلام کنید:

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

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

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

109a0b2c7155e9b3.png

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

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

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

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

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

از کنسول ابری گوگل به Vertex AI بروید، اگر قبلاً این کار را نکرده‌اید، Vertex AI API را فعال کنید، داده‌ها را باز کنید و Datasets را انتخاب کنید، روی Create data set کلیک کنید، نوع داده TABULAR و گزینه "Regression / classification" را انتخاب کنید و روی Create کلیک کنید:

4104c75c34cbd2d9.png

انتخاب منبع داده

در صفحه بعد، یک منبع داده انتخاب کنید. گزینه "انتخاب یک جدول یا نما از BigQuery" را انتخاب کنید و جدول را از BigQuery در فیلد BROWSE مسیر BigQuery انتخاب کنید. روی ادامه کلیک کنید.

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

b787ef18dbca4cff.png

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

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

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

bf095263d57106de.png

  1. گزینه Objective را به عنوان Classification انتخاب کنید و در صفحه اول گزینه AutoML را انتخاب کنید و روی ادامه کلیک کنید: e50597bc3f29894c.png
  2. به مدل خود یک نام بدهید و از منوی کشویی که نمایش داده می‌شود، نام ستون هدف (Target Column name) را روی "Score" (امتیاز) انتخاب کنید و روی ادامه کلیک کنید.
  3. همچنین توجه داشته باشید که می‌توانید گزینه «صادر کردن مجموعه داده‌های آزمایشی به BigQuery» را علامت بزنید، که مشاهده مجموعه داده‌های آزمایشی به همراه نتایج در پایگاه داده را به طور کارآمد و بدون یک لایه ادغام اضافی یا نیاز به جابجایی داده‌ها بین سرویس‌ها، آسان می‌کند.
  4. در صفحه بعد، می‌توانید گزینه‌های آموزش پیشرفته مورد نیاز و ساعاتی را که می‌خواهید مدل را برای آموزش تنظیم کنید، انتخاب کنید. لطفاً توجه داشته باشید که قبل از افزایش تعداد ساعات گره‌ای که می‌خواهید برای آموزش استفاده کنید، بهتر است به قیمت‌گذاری توجه داشته باشید.

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

e72b004a17849bd.png

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

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

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

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

۹۵fb4495618174f0.png

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

۶. تابع ابری جاوا برای فراخوانی یادگیری ماشینی

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

  1. در کنسول Google Cloud، عبارت Cloud Functions را جستجو کنید و روی «ایجاد تابع» کلیک کنید.
  2. جزئیات پیکربندی، مانند محیط، نام تابع، منطقه، تریگر (در این مورد، HTTPS)، احراز هویت مورد نظر خود را وارد کنید، "Require HTTPS" را فعال کنید و روی بعدی/ذخیره کلیک کنید.

a68272022df062f2.png

  1. در صفحه بعد، Runtime (Java 11)، Source Code (Inline یا upload) را انتخاب کنید و ویرایش را شروع کنید.

13df616369ca5951.png

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

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

۷. تمیز کردن

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

  1. در کنسول گوگل کلود، به صفحه مدیریت منابع بروید
  2. در لیست پروژه‌ها، پروژه‌ای را که می‌خواهید حذف کنید انتخاب کنید و سپس روی «حذف» کلیک کنید.
  3. در کادر محاوره‌ای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن کلیک کنید.

۸. تبریک

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