Vertex AI: ساخت یک مدل تشخیص تقلب با AutoML

۱. مرور کلی

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

داشبورد ورتکس

مرحله 3: یک نمونه Vertex AI Workbench ایجاد کنید

از بخش Vertex AI در کنسول ابری خود، روی Workbench کلیک کنید:

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

از آنجا، در دفترچه‌های مدیریت‌شده توسط کاربر ، روی دفترچه یادداشت جدید کلیک کنید:

ایجاد دفترچه یادداشت جدید

سپس آخرین نسخه TensorFlow Enterprise (با LTS) را بدون GPU انتخاب کنید:

نمونه TFE

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

مرحله ۵: دفترچه یادداشت خود را باز کنید

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

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

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

۴. ایجاد یک مجموعه داده مدیریت‌شده

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

مرحله ۱: ایجاد مجموعه داده

در منوی Vertex در کنسول خود، Data sets را انتخاب کنید:

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

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

از صفحه مجموعه داده‌ها، به مجموعه داده یک نام بدهید، سپس Tabular و سپس Regression/classification را انتخاب کنید. سپس مجموعه داده را ایجاد کنید :

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

چند گزینه برای وارد کردن داده‌ها به Managed Datasets در Vertex وجود دارد:

  • آپلود یک فایل محلی از رایانه شما
  • انتخاب فایل‌ها از فضای ذخیره‌سازی ابری
  • انتخاب داده‌ها از BigQuery

در اینجا ما داده‌ها را از یک جدول عمومی BigQuery آپلود خواهیم کرد.

مرحله 2: وارد کردن داده‌ها از BigQuery

به عنوان روش وارد کردن، گزینه «انتخاب یک جدول یا نما از BigQuery» را انتخاب کنید و سپس عبارت زیر را در کادر جدول BigQuery کپی کنید: bigquery-public-data.ml_datasets.ulb_fraud_detection . سپس ادامه را انتخاب کنید:

وارد کردن داده‌های BQ

بعد از وارد کردن مجموعه داده خود، باید چیزی شبیه به تصویر زیر را ببینید:

داده‌های وارد شده

در صورت تمایل، می‌توانید برای مشاهده اطلاعات بیشتر در مورد این مجموعه داده‌ها، روی «ایجاد آمار» کلیک کنید، اما قبل از رفتن به مرحله بعدی، انجام این کار ضروری نیست. این مجموعه داده‌ها شامل تراکنش‌های واقعی کارت‌های اعتباری است. نام اکثر ستون‌ها مبهم است، به همین دلیل است که آنها V1 ، V2 و غیره نامیده می‌شوند.

۵. آموزش یک مدل با AutoML

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

  • AutoML : آموزش مدل‌های با کیفیت بالا با حداقل تلاش و تخصص در یادگیری ماشین.
  • آموزش سفارشی : برنامه‌های آموزشی سفارشی خود را با استفاده از یکی از کانتینرهای از پیش ساخته شده Google Cloud یا از کانتینرهای خودتان در فضای ابری اجرا کنید.

در این آزمایش، از AutoML برای آموزش استفاده خواهیم کرد.

مرحله ۱: شروع کار آموزشی

از صفحه جزئیات مجموعه داده که در مرحله قبل آن را رها کردید، گزینه Train new model را در بالا سمت راست انتخاب کنید. Classification را به عنوان هدف انتخاب کنید، AutoML را برای آموزش مدل انتخاب شده باقی بگذارید و سپس روی Continue کلیک کنید:

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

به مدل خود یک نام بدهید، یا می‌توانید از نام پیش‌فرض استفاده کنید. در زیر ستون Target، Class را انتخاب کنید. این یک عدد صحیح است که نشان می‌دهد آیا یک تراکنش خاص کلاهبرداری بوده است یا خیر ( 0 برای عدم کلاهبرداری، 1 برای کلاهبرداری).

سپس ادامه را انتخاب کنید:

مرحله دوم آموزش مدل

در این مرحله، به پایین اسکرول کنید و برای باز کردن گزینه‌های پیشرفته (Advanced options ) کلیک کنید. از آنجایی که این مجموعه داده به شدت نامتوازن است (کمتر از ۱٪ از داده‌ها حاوی تراکنش‌های جعلی هستند)، گزینه AUC PRC را انتخاب کنید که دقت-فراخوانی را برای کلاس کمتر رایج به حداکثر می‌رساند:

گزینه‌های آموزشی پیشرفته

ادامه را انتخاب کنید و سپس به مرحله آخر (محاسبه و قیمت‌گذاری) بروید. در اینجا، عدد ۱ را به عنوان تعداد ساعات گره برای بودجه خود وارد کنید و توقف زودهنگام را فعال بگذارید. آموزش مدل AutoML شما به مدت ۱ ساعت محاسباتی معمولاً شروع خوبی برای درک این است که آیا رابطه‌ای بین ویژگی‌ها و برچسبی که انتخاب کرده‌اید وجود دارد یا خیر. از آنجا، می‌توانید ویژگی‌های خود را تغییر دهید و برای بهبود عملکرد مدل، زمان بیشتری را آموزش دهید. در مرحله بعد، شروع آموزش را انتخاب کنید.

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

۶. معیارهای ارزیابی مدل را بررسی کنید

در این مرحله خواهیم دید که مدل ما چگونه عمل می‌کند.

پس از اتمام کار آموزش مدل، به برگه Models در Vertex بروید. روی مدلی که آموزش داده‌اید کلیک کنید و به برگه Evaluate نگاهی بیندازید. در اینجا معیارهای ارزیابی زیادی وجود دارد - ما روی دو مورد تمرکز خواهیم کرد: ماتریس درهم‌ریختگی و اهمیت ویژگی‌ها .

مرحله ۱: ماتریس درهم‌ریختگی را درک کنید

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

به یاد داشته باشید که کمتر از ۱٪ از نمونه‌های موجود در مجموعه داده‌های ما تراکنش‌های جعلی بودند، بنابراین اگر دقت مدل ما ۹۹٪ باشد، احتمال زیادی وجود دارد که در ۹۹٪ مواقع، فقط به صورت تصادفی کلاس غیر جعلی را حدس زده باشد. به همین دلیل است که بررسی دقت مدل ما برای هر کلاس، معیار بهتری در اینجا است.

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

ماتریس درهم‌ریختگی

ماتریس سردرگمی نشان می‌دهد که مدل اولیه ما قادر است ۸۵٪ از نمونه‌های جعلی موجود در مجموعه تست ما را به درستی طبقه‌بندی کند. این بسیار خوب است، به خصوص با توجه به عدم تعادل قابل توجه مجموعه داده‌های ما. در مرحله بعد می‌توانیم مدل خود را برای ساعات محاسباتی بیشتر آموزش دهیم تا ببینیم آیا می‌توانیم از این ۸۵٪ بهبود یابیم یا خیر.

مرحله ۲: بررسی اهمیت ویژگی‌ها

در زیر ماتریس درهم‌ریختگی، باید نمودار اهمیت ویژگی‌ها را ببینید که به شکل زیر است:

اهمیت ویژگی

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

اگر بیشتر ویژگی‌های موجود در مجموعه داده‌های ما مبهم نبودند، این نمودار هیجان‌انگیزتر می‌شد. برای مثال، ممکن است بفهمیم که نوع تراکنش (انتقال، واریز و غیره) بزرگترین شاخص کلاهبرداری است.

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

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

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

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

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

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

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

به نقطه پایانی خود یک نام، مانند fraud_v1 ، بدهید، دسترسی را روی استاندارد تنظیم کنید و روی ادامه کلیک کنید.

تقسیم ترافیک و نوع دستگاه را به عنوان تنظیمات پیش‌فرض رها کنید، روی «انجام شد» و سپس «ادامه» کلیک کنید.

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

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

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

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

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

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

ما هر دو را اینجا نشان خواهیم داد.

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

در صفحه مدل خود که نقطه پایانی شما نشان داده شده است (جایی که در مرحله آخر آن را رها کردیم)، به پایین بروید تا به بخش «مدل خود را آزمایش کنید» برسید :

مدل تست

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

در بخش نتیجه پیش‌بینی صفحه، باید درصد پیش‌بینی‌شده مدل خود را برای هر کلاس مشاهده کنید. برای مثال، نمره اطمینان 0.99 برای کلاس 0 به این معنی است که مدل شما فکر می‌کند این مثال ۹۹٪ غیرمتقلبانه است.

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

رابط کاربری (UI) راهی عالی برای اطمینان از عملکرد صحیح نقطه پایانی (endpoint) مستقر شده شماست، اما احتمالاً می‌خواهید پیش‌بینی‌ها را به صورت پویا از طریق فراخوانی REST API دریافت کنید. برای نشان دادن نحوه دریافت پیش‌بینی‌های مدل در اینجا، از نمونه Vertex Workbench که در ابتدای این تمرین ایجاد کردید، استفاده خواهیم کرد.

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

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

در دفترچه یادداشت خود، دستور زیر را در یک سلول اجرا کنید تا Vertex SDK نصب شود:

!pip3 install google-cloud-aiplatform --upgrade --user

سپس یک سلول در دفترچه یادداشت خود اضافه کنید تا SDK را وارد کنید و یک مرجع به نقطه پایانی که اخیراً مستقر کرده‌اید ایجاد کنید:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

شما باید دو مقدار را در رشته endpoint_name بالا با شماره پروژه و نقطه پایانی خود جایگزین کنید. می‌توانید شماره پروژه خود را با رفتن به داشبورد پروژه خود و دریافت مقدار شماره پروژه پیدا کنید.

می‌توانید شناسه نقطه پایانی خود را در بخش نقاط پایانی کنسول اینجا پیدا کنید:

شناسه نقطه پایانی را پیدا کنید

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

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

شما باید پیش‌بینی حدود .67 را برای کلاس ۰ ببینید، به این معنی که مدل فکر می‌کند ۶۷٪ احتمال دارد که این تراکنش غیرمتقلبانه باشد.

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

شما یاد گرفتید که چگونه از Vertex AI برای موارد زیر استفاده کنید:

  • آپلود یک مجموعه داده مدیریت‌شده
  • آموزش و ارزیابی یک مدل روی داده‌های جدولی با استفاده از AutoML
  • مدل را در یک نقطه پایانی مستقر کنید
  • با استفاده از SDK برای Vertex، پیش‌بینی‌هایی را در مورد یک نقطه پایانی مدل دریافت کنید

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

۹. پاکسازی

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

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

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

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

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

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