با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید.

فعالیت های تقلبی به شدت بر بسیاری از صنایع مانند تجارت الکترونیک، رسانه های اجتماعی و خدمات مالی تأثیر می گذارد. کلاهبرداری می تواند ضرر قابل توجهی برای مشاغل و مصرف کنندگان ایجاد کند. مصرف کنندگان آمریکایی گزارش دادند که در سال 5.8 بیش از 2021 میلیارد دلار به دلیل کلاهبرداری از دست داده اند که بیش از 70 درصد نسبت به سال 2020 افزایش داشته است.. تکنیک‌های زیادی برای شناسایی کلاهبرداران استفاده شده است - فیلترهای مبتنی بر قوانین، تشخیص ناهنجاری‌ها و مدل‌های یادگیری ماشینی (ML).

در داده های دنیای واقعی، موجودیت ها اغلب دارای روابط غنی با سایر موجودیت ها هستند. چنین ساختار نموداری می تواند اطلاعات ارزشمندی برای تشخیص ناهنجاری ارائه دهد. به عنوان مثال، در شکل زیر، کاربران از طریق موجودیت های مشترک مانند شناسه های Wi-Fi، مکان های فیزیکی و شماره تلفن به یکدیگر متصل می شوند. به دلیل تعداد زیاد مقادیر منحصربه‌فرد این موجودیت‌ها، مانند شماره تلفن، استفاده از آنها در مدل‌های مبتنی بر ویژگی‌های سنتی دشوار است - برای مثال، رمزگذاری یک‌باره همه شماره‌های تلفن قابل اجرا نیست. اما چنین روابطی می تواند به پیش بینی اینکه آیا یک کاربر کلاهبردار است کمک کند. اگر یک کاربر چندین نهاد را با یک کلاهبردار شناخته شده به اشتراک گذاشته باشد، کاربر به احتمال زیاد یک کلاهبردار است.

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

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

پیش بینی کلاهبرداران در زمان واقعی مهم است. با این حال، ایجاد چنین راه حلی چالش برانگیز است. از آنجایی که GNN ها هنوز در صنعت جدید هستند، منابع آنلاین محدودی برای تبدیل مدل های GNN از سرویس دهی به سرویس دهی بلادرنگ وجود دارد. علاوه بر این، ایجاد یک خط لوله داده جریانی که می تواند رویدادهای ورودی را به یک API سرویس در زمان واقعی GNN تغذیه کند، چالش برانگیز است. تا جایی که نویسندگان می دانند، هیچ معماری مرجع و نمونه ای برای راه حل های استنتاج بلادرنگ مبتنی بر GNN در دسترس نیست.

برای کمک به توسعه‌دهندگان برای استفاده از GNN برای کشف تقلب در زمان واقعی، این پست نحوه استفاده را نشان می‌دهد نپتون آمازون, آمازون SageMaker، و کتابخانه نمودار عمیق (DGL)در میان سایر خدمات AWS، برای ایجاد یک راه حل سرتاسری برای تشخیص تقلب در زمان واقعی با استفاده از مدل های GNN.

ما روی چهار کار تمرکز می کنیم:

  • پردازش یک مجموعه داده تراکنش جدولی به یک مجموعه داده گراف ناهمگن
  • آموزش مدل GNN با استفاده از SageMaker
  • استقرار مدل های GNN آموزش دیده به عنوان نقطه پایانی SageMaker
  • نشان دادن استنتاج بلادرنگ برای تراکنش های ورودی

این پست کار قبلی را گسترش می دهد شناسایی تقلب در شبکه های ناهمگن با استفاده از Amazon SageMaker و Deep Graph Library، که بر دو کار اول تمرکز دارد. برای جزئیات بیشتر در مورد نمودارهای ناهمگن، GNN ها و آموزش نیمه نظارت شده GNN ها می توانید به آن پست مراجعه کنید.

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

بررسی اجمالی راه حل

این محلول شامل دو بخش عمده است.

بخش اول خط لوله ای است که داده ها را پردازش می کند، مدل های GNN را آموزش می دهد و مدل های آموزش دیده را مستقر می کند. استفاده می کند چسب AWS برای پردازش داده های تراکنش، و داده های پردازش شده را در هر دو ذخیره می کند نپتون آمازون و سرویس ذخیره سازی ساده آمازون (Amazon S3). سپس، یک کار آموزشی SageMaker برای آموزش یک مدل GNN بر روی داده‌های ذخیره‌شده در Amazon S3 برای پیش‌بینی تقلبی بودن یک تراکنش آغاز می‌شود. مدل آموزش دیده همراه با سایر دارایی ها پس از اتمام کار آموزشی در آمازون S3 ذخیره می شود. در نهایت، مدل ذخیره شده به عنوان یک نقطه پایانی SageMaker مستقر می شود. خط لوله توسط سازماندهی شده است توابع مرحله AWS، همانطور که در شکل زیر نشان داده شده است.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

بخش دوم راه حل، شناسایی تراکنش های تقلبی در زمان واقعی را پیاده سازی می کند. از یک API RESTful شروع می شود که پایگاه داده گراف را در نپتون جستجو می کند تا زیرگراف مربوط به تراکنش ورودی را استخراج کند. همچنین دارای یک پورتال وب است که می تواند فعالیت های تجاری را شبیه سازی کند و تراکنش های آنلاین را با تراکنش های تقلبی و قانونی ایجاد کند. پورتال وب تصویری زنده از کشف تقلب ارائه می دهد. این قسمت استفاده می کند آمازون CloudFront, AWS تقویت کنید, AWS AppSync, دروازه API آمازون، توابع مرحله و Amazon DocumentDB برای ساخت سریع برنامه وب نمودار زیر فرآیند استنتاج بلادرنگ و پورتال وب را نشان می دهد.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

اجرای این راهکار به همراه یک AWS CloudFormation قالبی که می‌تواند معماری را در حساب AWS شما راه‌اندازی کند، از طریق موارد زیر به صورت عمومی در دسترس است GitHub repo.

پردازش داده ها

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

این راه حل از همان مجموعه داده استفاده می کند مجموعه داده های تقلب IEEE-CIS، مانند پست قبلی شناسایی تقلب در شبکه های ناهمگن با استفاده از Amazon SageMaker و Deep Graph Library. بنابراین، اصل اساسی فرآیند داده یکسان است. به طور خلاصه، مجموعه داده های کلاهبرداری شامل یک جدول تراکنش ها و یک جدول هویت است که دارای نزدیک به 500,000 رکورد تراکنش ناشناس همراه با اطلاعات متنی است (به عنوان مثال، دستگاه های مورد استفاده در تراکنش ها). برخی از تراکنش ها دارای یک برچسب باینری هستند که نشان می دهد آیا یک تراکنش تقلبی است یا خیر. وظیفه ما این است که پیش‌بینی کنیم کدام تراکنش‌های بدون برچسب جعلی هستند و کدام‌ها مشروع هستند.

شکل زیر روند کلی نحوه تبدیل جداول IEEE به یک گراف ناهمگن را نشان می دهد. ابتدا از هر جدول دو ستون استخراج می کنیم. یک ستون همیشه ستون شناسه تراکنش است، جایی که ما هر TransactionID منحصر به فرد را به عنوان یک گره تنظیم می کنیم. ستون دیگری از ستون‌های دسته‌بندی انتخاب می‌شود، مانند ستون‌های ProductCD و id_03، که در آن هر دسته منحصر به فرد به عنوان یک گره تنظیم شده است. اگر یک TransactionID و یک دسته منحصر به فرد در یک ردیف ظاهر شوند، آنها را با یک لبه به هم وصل می کنیم. به این ترتیب دو ستون در یک جدول را به یک دوبخشی تبدیل می کنیم. سپس آن دوبخشی ها را با گره های TransactionID ترکیب می کنیم، جایی که همان گره های TransactionID در یک گره منحصر به فرد ادغام می شوند. پس از این مرحله، یک گراف ناهمگن داریم که از دوبخشی ساخته شده است.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

برای بقیه ستون هایی که برای ساختن نمودار استفاده نمی شوند، آنها را به عنوان ویژگی گره های TransactionID به یکدیگر متصل می کنیم. مقادیر TransactionID که دارای مقادیر isFraud هستند به عنوان برچسب برای آموزش مدل استفاده می شوند. بر اساس این نمودار ناهمگن، وظیفه ما به وظیفه طبقه بندی گره گره های TransactionID تبدیل می شود. برای جزئیات بیشتر در مورد تهیه داده های نمودار برای آموزش GNN ها، به ادامه مطلب مراجعه کنید استخراج ویژگی و ساختن نمودار بخش های پست قبلی وبلاگ

کد مورد استفاده در این راه حل در دسترس است src/scripts/glue-etl.py. همچنین می توانید پردازش داده ها را از طریق نوت بوک Jupyter آزمایش کنید src/sagemaker/01.FD_SL_Process_IEEE-CIS_Dataset.ipynb.

به جای پردازش دستی داده ها، همانطور که در پست قبلی انجام شد، این راه حل از یک خط لوله کاملا خودکار که توسط Step Functions و AWS Glue تنظیم شده است استفاده می کند که از پردازش مجموعه داده های عظیم به صورت موازی از طریق Apache Spark پشتیبانی می کند. گردش کار توابع مرحله در نوشته شده است کیت توسعه ابری AWS (AWS CDK). زیر یک است قطعه کد برای ایجاد این گردش کار:

import { LambdaInvoke, GlueStartJobRun } from 'aws-cdk-lib/aws-stepfunctions-tasks';
    
    const parametersNormalizeTask = new LambdaInvoke(this, 'Parameters normalize', {
      lambdaFunction: parametersNormalizeFn,
      integrationPattern: IntegrationPattern.REQUEST_RESPONSE,
    });
    
    ...
    
    const dataProcessTask = new GlueStartJobRun(this, 'Data Process', {
      integrationPattern: IntegrationPattern.RUN_JOB,
      glueJobName: etlConstruct.jobName,
      timeout: Duration.hours(5),
      resultPath: '$.dataProcessOutput',
    });
    
    ...    
    
    const definition = parametersNormalizeTask
      .next(dataIngestTask)
      .next(dataCatalogCrawlerTask)
      .next(dataProcessTask)
      .next(hyperParaTask)
      .next(trainingJobTask)
      .next(runLoadGraphDataTask)
      .next(modelRepackagingTask)
      .next(createModelTask)
      .next(createEndpointConfigTask)
      .next(checkEndpointTask)
      .next(endpointChoice);

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

from neptune_python_utils.endpoints import Endpoints
from neptune_python_utils.bulkload import BulkLoad

...

bulkload = BulkLoad(
        source=targetDataPath,
        endpoints=endpoints,
        role=args.neptune_iam_role_arn,
        region=args.region,
        update_single_cardinality_properties=True,
        fail_on_error=True)
        
load_status = bulkload.load_async()
status, json = load_status.status(details=True, errors=True)
load_status.wait()

آموزش مدل GNN

پس از اینکه داده های نمودار برای آموزش مدل در آمازون S3 ذخیره شد، الف شغل آموزش SageMaker، که فقط زمانی شارژ می شود که کار آموزشی در حال اجرا باشد، برای شروع فرآیند آموزش مدل GNN در حالت BYOC (Bring Your Own Container) راه اندازی می شود. این به شما امکان می‌دهد تا اسکریپت‌های آموزشی و وابستگی‌های مدل خود را در یک تصویر Docker قرار دهید، که از آن برای ایجاد نمونه‌های آموزشی SageMaker استفاده می‌کند. روش BYOC می تواند تلاش قابل توجهی در راه اندازی محیط آموزشی صرفه جویی کند. که در src/sagemaker/02.FD_SL_Build_Training_Container_Test_Local.ipynb، می توانید جزئیات آموزش مدل GNN را بیابید.

تصویر داکر

اولین بخش از فایل نوت بوک Jupyter، آموزش تولید تصویر Docker است (به قطعه کد زیر مراجعه کنید):

*!* aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 763104351884.dkr.ecr.us-east-1.amazonaws.com
image_name *=* 'fraud-detection-with-gnn-on-dgl/training'
*!* docker build -t $image_name ./FD_SL_DGL/gnn_fraud_detection_dgl

ما از یک تصویر مبتنی بر PyTorch برای آموزش مدل استفاده کردیم. کتابخانه Deep Graph (DGL) و سایر وابستگی ها هنگام ساخت تصویر Docker نصب می شوند. کد مدل GNN در src/sagemaker/FD_SL_DGL/gnn_fraud_detection_dgl پوشه به تصویر نیز کپی می شود.

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

فراپارامترها

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

edges *=* ","*.*join(map(*lambda* x: x*.*split("/")[*-*1], [file *for* file *in* processed_files *if* "relation" *in* file]))

params *=* {'nodes' : 'features.csv',
          'edges': edges,
          'labels': 'tags.csv',
          'embedding-size': 64,
          'n-layers': 2,
          'n-epochs': 10,
          'optimizer': 'adam',
          'lr': 1e-2}

برای کسب اطلاعات بیشتر در مورد همه هایپرپارامترها و مقادیر پیش فرض آنها، نگاه کنید estimator_fns.py در src/sagemaker/FD_SL_DGL/gnn_fraud_detection_dgl پوشه.

آموزش مدل با SageMaker

پس از ساختن تصویر داکر کانتینر سفارشی شده، از داده های از پیش پردازش شده برای آموزش مدل GNN خود با فراپارامترهایی که تعریف کردیم استفاده می کنیم. کار آموزشی از DGL با PyTorch به عنوان چارچوب یادگیری عمیق برای ساخت و آموزش GNN استفاده می کند. SageMaker آموزش مدل های GNN را با تصویر سفارشی Docker که یک آرگومان ورودی برآوردگر SageMaker است، آسان می کند. برای اطلاعات بیشتر در مورد آموزش GNN با DGL در SageMaker، نگاه کنید یک شبکه نمودار عمیق را آموزش دهید.

SageMaker Python SDK استفاده می کند برآورد برای محصور کردن آموزش در SageMaker، که کانتینرهای Docker سفارشی سازگار با SageMaker را اجرا می‌کند و به شما امکان می‌دهد الگوریتم‌های ML خود را با استفاده از SageMaker Python SDK اجرا کنید. قطعه کد زیر آموزش مدل را با SageMaker (چه در یک محیط محلی و چه در نمونه های ابری) نشان می دهد:

from sagemaker.estimator import Estimator
from time import strftime, gmtime
from sagemaker.local import LocalSession

localSageMakerSession = LocalSession(boto_session=boto3.session.Session(region_name=current_region))
estimator = Estimator(image_uri=image_name,
                      role=sagemaker_exec_role,
                      instance_count=1,
                      instance_type='local',
                      hyperparameters=params,
                      output_path=output_path,
                      sagemaker_session=localSageMakerSession)

training_job_name = "{}-{}".format('GNN-FD-SL-DGL-Train', strftime("%Y-%m-%d-%H-%M-%S", gmtime()))
print(training_job_name)

estimator.fit({'train': processed_data}, job_name=training_job_name)

پس از آموزش، عملکرد مدل GNN در مجموعه تست مانند خروجی های زیر نمایش داده می شود. مدل RGCN به طور معمول می تواند حدود 0.87 AUC و بیش از 95 درصد دقت را به دست آورد. برای مقایسه مدل RGCN با سایر مدل های ML، به ادامه مطلب مراجعه کنید نتایج بخش پست قبلی وبلاگ برای جزئیات بیشتر.

Epoch 00099 | Time(s) 7.9413 | Loss 0.1023 | f1 0.3745
Metrics
Confusion Matrix:
                        labels positive labels negative
    predicted positive  4343            576
    predicted negative  13494           454019

    f1: 0.3817, precision: 0.8829, recall: 0.2435, acc: 0.9702, roc: 0.8704, pr: 0.4782, ap: 0.4782

Finished Model training

پس از اتمام آموزش مدل، SageMaker مدل آموزش دیده را به همراه سایر دارایی ها، از جمله جاسازی گره های آموزش دیده، در یک فایل ZIP قرار می دهد و سپس آن را در یک مکان مشخص S3 آپلود می کند. در مرحله بعد، ما در مورد استقرار مدل آموزش دیده برای تشخیص تقلب در زمان واقعی بحث می کنیم.

استقرار مدل GNN

SageMaker استقرار مدل های آموزش دیده ML را ساده می کند. در این مرحله، ما از کلاس SageMaker PyTorchModel برای استقرار مدل آموزش‌دیده استفاده می‌کنیم، زیرا مدل DGL ما به PyTorch به‌عنوان چارچوب پشتیبان وابسته است. شما می توانید کد استقرار را در src/sagemaker/03.FD_SL_Endpoint_Deployment.ipynb فایل.

علاوه بر فایل مدل آموزش دیده و دارایی ها، SageMaker به یک فایل نقطه ورودی برای استقرار یک مدل سفارشی نیاز دارد. فایل نقطه ورودی اجرا شده و در حافظه یک نمونه نقطه پایانی استنتاج ذخیره می شود تا به درخواست استنتاج پاسخ دهد. در مورد ما، فایل نقطه ورود است fd_sl_deployment_entry_point.py فایل در src/sagemaker/FD_SL_DGL/code پوشه ای که چهار عملکرد اصلی را انجام می دهد:

  • دریافت درخواست ها و تجزیه محتوای درخواست ها برای به دست آوردن گره های قابل پیش بینی و داده های مرتبط با آنها
  • داده ها را به یک نمودار ناهمگن DGL به عنوان ورودی مدل RGCN تبدیل کنید
  • استنتاج بلادرنگ را از طریق مدل RGCN آموزش دیده انجام دهید
  • نتایج پیش بینی را به درخواست کننده برگردانید

به دنبال کنوانسیون SageMaker، دو تابع اول در input_fn روش. کد زیر را ببینید (برای سادگی، برخی از کدهای تفسیر را حذف می کنیم):

def input_fn(request_body, request_content_type='application/json'):

    # --------------------- receive request ------------------------------------------------ #
    input_data = json.loads(request_body)

    subgraph_dict = input_data['graph']
    n_feats = input_data['n_feats']
    target_id = input_data['target_id']

    graph, new_n_feats, new_pred_target_id = recreate_graph_data(subgraph_dict, n_feats, target_id)

    return (graph, new_n_feats, new_pred_target_id)

سپس نمودار DGL ساخته شده و ویژگی ها به آن ارسال می شود predict_fn روش برای انجام تابع سوم predict_fn دو آرگومان ورودی می گیرد: خروجی های input_fn و مدل آموزش دیده کد زیر را ببینید:

def predict_fn(input_data, model):

    # ---------------------  Inference ------------------------------------------------ #
    graph, new_n_feats, new_pred_target_id = input_data

    with th.no_grad():
        logits = model(graph, new_n_feats)
        res = logits[new_pred_target_id].cpu().detach().numpy()

    return res[1]

مدل استفاده شده در perdict_fn توسط ایجاد شده است model_fn روش زمانی که نقطه پایان برای اولین بار فراخوانی می شود. کارکرد model_fn فایل مدل ذخیره شده و دارایی های مرتبط را از model_dir آرگومان و پوشه مدل SageMaker. کد زیر را ببینید:

def model_fn(model_dir):

    # ------------------ Loading model -------------------
    ntype_dict, etypes, in_size, hidden_size, out_size, n_layers, embedding_size = 
    initialize_arguments(os.path.join(BASE_PATH, 'metadata.pkl'))

    rgcn_model = HeteroRGCN(ntype_dict, etypes, in_size, hidden_size, out_size, n_layers, embedding_size)

    stat_dict = th.load('model.pth')

    rgcn_model.load_state_dict(stat_dict)

    return rgcn_model

خروجی predict_fn متد لیستی از دو عدد است که logit های کلاس 0 و کلاس 1 را نشان می دهد که 0 به معنای قانونی و 1 به معنای تقلبی است. SageMaker این لیست را می گیرد و آن را به یک متد داخلی به نام ارسال می کند output_fn برای تکمیل عملکرد نهایی

برای استقرار مدل GNN خود، ابتدا مدل GNN را در یک کلاس SageMaker PyTorchModel با فایل نقطه ورودی و سایر پارامترها (مسیر فایل ZIP ذخیره شده، نسخه چارچوب PyTorch، نسخه Python و غیره) قرار می دهیم. سپس روش استقرار آن را با تنظیمات نمونه فراخوانی می کنیم. کد زیر را ببینید:

env = {
    'SAGEMAKER_MODEL_SERVER_WORKERS': '1'
}

print(f'Use model {repackged_model_path}')

sagemakerSession = sm.session.Session(boto3.session.Session(region_name=current_region))
fd_sl_model = PyTorchModel(model_data=repackged_model_path, 
                           role=sagemaker_exec_role,
                           entry_point='./FD_SL_DGL/code/fd_sl_deployment_entry_point.py',
                           framework_version='1.6.0',
                           py_version='py3',
                           predictor_cls=JSONPredictor,
                           env=env,
                           sagemaker_session=sagemakerSession)
                           
fd_sl_predictor *=* fd_sl_model*.*deploy(instance_type*=*'ml.c5.4xlarge',
                                     initial_instance_count*=*1,)

رویه های قبلی و قطعه کد نشان می دهد که چگونه می توان مدل GNN خود را به عنوان یک نقطه پایانی استنتاج آنلاین از یک نوت بوک Jupyter استقرار داد. با این حال، برای تولید، توصیه می‌کنیم از خط لوله MLOps که قبلاً ذکر شد استفاده کنید که توسط توابع Step برای کل گردش کار، از جمله پردازش داده‌ها، آموزش مدل، و استقرار یک نقطه پایانی استنتاج تنظیم شده‌اند. کل خط لوله توسط یک CDK AWS اجرا می شود استفاده، که می تواند به راحتی در Regions و حساب های مختلف تکرار شود.

استنتاج بلادرنگ

هنگامی که یک تراکنش جدید می رسد، برای انجام پیش بینی بلادرنگ، باید چهار مرحله را تکمیل کنیم:

  1. درج گره و لبه - اطلاعات تراکنش مانند TransactionID و ProductCD را به عنوان گره ها و لبه ها استخراج کنید و گره های جدید را در داده های نمودار موجود ذخیره شده در پایگاه داده نپتون قرار دهید.
  2. استخراج زیرگراف - گره تراکنش قابل پیش بینی را به عنوان گره مرکزی تنظیم کنید و یک زیرگراف n-hop مطابق با الزامات ورودی مدل GNN استخراج کنید.
  3. استخراج ویژگی – برای گره ها و لبه های زیرگراف، ویژگی های مرتبط با آنها را استخراج کنید.
  4. نقطه پایان استنتاج را صدا بزنید - زیرگراف و ویژگی ها را در محتوای یک درخواست بسته بندی کنید، سپس درخواست را به نقطه پایانی استنتاج ارسال کنید.

در این راه حل، ما یک API RESTful را برای دستیابی به پیش‌بینی تقلبی در زمان واقعی که در مراحل قبل توضیح داده شد، پیاده‌سازی می‌کنیم. شبه کد زیر را برای پیش بینی های زمان واقعی مشاهده کنید. اجرای کامل در حال انجام است فایل کد منبع کامل.

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

def handler(event, context):
    
    graph_input = GraphModelClient(endpoints)
    
    # Step 1: node and edge insertion
    trans_dict, identity_dict, target_id, transaction_value_cols, union_li_cols = 
        load_data_from_event(event, transactions_id_cols, transactions_cat_cols, dummied_col)
    graph_input.insert_new_transaction_vertex_and_edge(trans_dict, identity_dict , target_id, vertex_type = 'Transaction')
    
    
    # Setp 2: subgraph extraction
    subgraph_dict, transaction_embed_value_dict = 
        graph_input.query_target_subgraph(target_id, trans_dict, transaction_value_cols, union_li_cols, dummied_col)
    

    # Step 3 & 4: feature extraction & call the inference endpoint
    transaction_id = int(target_id[(target_id.find('-')+1):])
    pred_prob = invoke_endpoint_with_idx(endpointname = ENDPOINT_NAME, target_id = transaction_id, subgraph_dict = subgraph_dict, n_feats = transaction_embed_value_dict)
       
    function_res = {
                    'id': event['transaction_data'][0]['TransactionID'],
                    'flag': pred_prob > MODEL_BTW,
                    'pred_prob': pred_prob
                    }
       
    return function_res

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

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

در حالت انتقال، گره‌ها و لبه‌های پیش‌بینی‌شده با گره‌ها و لبه‌های برچسب‌گذاری شده در طول آموزش همزیستی دارند. مدل ها آنها را قبل از استنتاج شناسایی می کنند و می توان آنها را در آموزش استنباط کرد. مدل‌ها در حالت استقرایی بر روی نمودار آموزشی آموزش داده می‌شوند، اما باید گره‌های دیده نشده (آنهایی که در دایره‌های قرمز رنگ در سمت راست قرار دارند) را با همسایگان مرتبط خود، که ممکن است گره‌های جدیدی باشند، مانند گره مثلث خاکستری در سمت راست، پیش‌بینی کنند.

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

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

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.

پاک کردن

وقتی کاوش راه حل را تمام کردید، می توانید منابع را تمیز کنید برای جلوگیری از تحمیل هزینه

نتیجه

در این پست نشان دادیم که چگونه با استفاده از SageMaker، Neptune و DGL یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازیم. این راه حل سه مزیت عمده دارد:

  • از نظر دقت پیش بینی و معیارهای AUC عملکرد خوبی دارد
  • می‌تواند استنتاج بلادرنگ را از طریق خط لوله MLOps و نقاط پایانی SageMaker انجام دهد
  • کل فرآیند استقرار را با الگوی ارائه شده CloudFormation خودکار می کند تا توسعه دهندگان علاقه مند بتوانند به راحتی این راه حل را با داده های سفارشی در حساب خود آزمایش کنند.

برای جزئیات بیشتر در مورد راه حل، نگاه کنید به GitHub repo.

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


درباره نویسندگان

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.جیان ژانگ یک دانشمند کاربردی است که از تکنیک های یادگیری ماشینی برای کمک به مشتریان در حل مشکلات مختلف مانند تشخیص تقلب، تولید تصویر دکوراسیون و غیره استفاده می کند. او با موفقیت یادگیری ماشینی مبتنی بر گراف، به ویژه شبکه عصبی گراف، راه حل هایی را برای مشتریان در چین، ایالات متحده آمریکا و سنگاپور توسعه داده است. ژانگ به‌عنوان روشن‌کننده قابلیت‌های نمودار AWS، ارائه‌های عمومی زیادی در مورد GNN، کتابخانه Deep Graph (DGL)، آمازون نپتون و سایر خدمات AWS ارائه کرده است.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.منگسین ژو مدیر Solutions Architects در AWS با تمرکز بر طراحی و توسعه راه حل های AWS قابل استفاده مجدد است. او سال‌هاست که به توسعه نرم‌افزار مشغول بوده و مسئولیت چندین تیم راه‌اندازی در اندازه‌های مختلف را بر عهده داشته است. او همچنین از طرفداران نرم‌افزار متن‌باز است و یکی از اعضای Eclipse Committer بود.

با استفاده از Amazon SageMaker، Amazon Neptune و Deep Graph Library PlatoBlockchain Data Intelligence یک راه حل تشخیص تقلب در زمان واقعی مبتنی بر GNN بسازید. جستجوی عمودی Ai.هائوزو وانگ یک دانشمند محقق در آمازون ML Solutions Lab است که در آنجا به طور مشترک Reinforcement Learning Vertical را رهبری می کند. او به مشتریان کمک می کند تا راه حل های پیشرفته یادگیری ماشینی را با آخرین تحقیقات در زمینه یادگیری نمودار، پردازش زبان طبیعی، یادگیری تقویتی و AutoML بسازند. هائوزو دکترای خود را در رشته مهندسی برق و کامپیوتر از دانشگاه میشیگان دریافت کرد.

تمبر زمان:

بیشتر از آموزش ماشین AWS