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

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

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

چیزی که یاد می گیرید

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

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

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

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

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

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

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

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

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

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

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

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

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

داشبورد Vertex

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

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

منوی Vertex AI

از آنجا، در Notebooks توسط کاربر مدیریت شده ، روی New Notebook کلیک کنید:

نوت بوک جدید ایجاد کنید

سپس آخرین نسخه از نوع نمونه TensorFlow Enterprise (با LTS) را بدون پردازنده گرافیکی انتخاب کنید:

نمونه TFE

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

مرحله 5: نوت بوک خود را باز کنید

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

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

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

4. یک مجموعه داده مدیریت شده ایجاد کنید

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

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

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

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

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

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

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

چند گزینه برای وارد کردن داده ها به مجموعه داده های مدیریت شده در Vertex وجود دارد:

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

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

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

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

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

پس از وارد کردن مجموعه داده باید چیزی شبیه به زیر را ببینید:

داده های وارداتی

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

5. یک مدل را با AutoML آموزش دهید

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مرحله 1: درک ماتریس سردرگمی

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

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

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

ماتریس سردرگمی

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

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

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

اهمیت ویژگی

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

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

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

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

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

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

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

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

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

به نقطه پایانی خود یک نام بدهید، مانند fraud_v1 ، Access را روی Standard گذاشته و روی Continue کلیک کنید.

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

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

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

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

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

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

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

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

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

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

مدل تست

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

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

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

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

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

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

در نوت بوک خود، موارد زیر را در یک سلول برای نصب 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 در بالا با شماره پروژه و نقطه پایانی خود جایگزین کنید. با رفتن به داشبورد پروژه خود و دریافت مقدار Project Number می توانید شماره پروژه خود را پیدا کنید.

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

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

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

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 برای کلاس 0 ببینید، به این معنی که مدل فکر می‌کند 67 درصد احتمال دارد که این تراکنش غیرقالب‌کننده باشد.

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

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

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

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

9. پاکسازی

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

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

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

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

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

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