Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔

دھوکہ دہی کی سرگرمیاں بہت سی صنعتوں کو بری طرح متاثر کرتی ہیں، جیسے کہ ای کامرس، سوشل میڈیا، اور مالیاتی خدمات۔ دھوکہ دہی کاروباری اداروں اور صارفین کے لیے ایک اہم نقصان کا سبب بن سکتی ہے۔ امریکی صارفین نے 5.8 میں دھوکہ دہی سے 2021 بلین ڈالر سے زیادہ کے نقصان کی اطلاع دی، جو 70 کے مقابلے میں 2020 فیصد زیادہ ہے۔. دھوکہ دہی کرنے والوں کا پتہ لگانے کے لیے بہت سی تکنیکوں کا استعمال کیا گیا ہے — اصول پر مبنی فلٹرز، بے ضابطگی کا پتہ لگانے، اور مشین لرننگ (ML) ماڈلز، جن میں سے چند ایک کا نام ہے۔

حقیقی دنیا کے اعداد و شمار میں، اداروں میں اکثر دیگر اداروں کے ساتھ بھرپور تعلقات شامل ہوتے ہیں۔ اس طرح کا گراف ڈھانچہ بے ضابطگی کا پتہ لگانے کے لیے قیمتی معلومات فراہم کر سکتا ہے۔ مثال کے طور پر، مندرجہ ذیل تصویر میں، صارفین مشترکہ اداروں جیسے Wi-Fi IDs، جسمانی مقامات، اور فون نمبرز کے ذریعے جڑے ہوئے ہیں۔ ان اداروں کی بڑی تعداد میں منفرد قدروں کی وجہ سے، جیسے فون نمبر، انہیں روایتی خصوصیت پر مبنی ماڈلز میں استعمال کرنا مشکل ہے- مثال کے طور پر، تمام فون نمبرز کو ایک گرم انکوڈنگ کرنا قابل عمل نہیں ہوگا۔ لیکن اس طرح کے تعلقات سے یہ اندازہ لگانے میں مدد مل سکتی ہے کہ آیا صارف دھوکہ باز ہے۔ اگر کسی صارف نے ایک مشہور دھوکے باز کے ساتھ متعدد اداروں کا اشتراک کیا ہے، تو صارف کے دھوکہ دہی کا زیادہ امکان ہے۔

حال ہی میں، گراف نیورل نیٹ ورک (GNN) فراڈ کا پتہ لگانے کا ایک مقبول طریقہ بن گیا ہے۔ GNN ماڈلز گراف کی ساخت اور نوڈس یا کناروں کی خصوصیات، جیسے کہ صارفین یا لین دین، دونوں کو یکجا کر سکتے ہیں تاکہ نقصان دہ صارفین اور واقعات کو جائز سے ممتاز کرنے کے لیے بامعنی نمائندگی سیکھ سکیں۔ یہ صلاحیت دھوکہ دہی کا پتہ لگانے کے لیے بہت اہم ہے جہاں دھوکہ باز اپنی غیر معمولی خصوصیات کو چھپانے کے لیے مل کر کام کرتے ہیں لیکن تعلقات کے کچھ نشانات چھوڑ دیتے ہیں۔

موجودہ GNN سلوشنز بنیادی طور پر آف لائن بیچ ٹریننگ اور انفرنس موڈ پر انحصار کرتے ہیں، جو بدنیتی پر مبنی واقعات کے رونما ہونے اور نقصانات ہونے کے بعد دھوکہ بازوں کا پتہ لگاتے ہیں۔ تاہم، دھوکہ دہی کرنے والے صارفین اور سرگرمیوں کو حقیقی وقت میں پکڑنا نقصانات کو روکنے کے لیے بہت ضروری ہے۔ یہ خاص طور پر کاروباری معاملات میں درست ہے جہاں دھوکہ دہی کی سرگرمیوں کو روکنے کا صرف ایک موقع ہے۔ مثال کے طور پر، کچھ ای کامرس پلیٹ فارمز میں، اکاؤنٹ کی رجسٹریشن وسیع ہے۔ دھوکہ باز کسی اکاؤنٹ کے ساتھ صرف ایک بار بدنیتی سے برتاؤ کر سکتے ہیں اور دوبارہ وہی اکاؤنٹ استعمال نہیں کر سکتے۔

حقیقی وقت میں دھوکہ بازوں کی پیشن گوئی کرنا ضروری ہے۔ اس طرح کے حل کی تعمیر، تاہم، چیلنج ہے. چونکہ GNNs ابھی بھی صنعت میں نئے ہیں، GNN ماڈلز کو بیچ سرونگ سے ریئل ٹائم سرونگ میں تبدیل کرنے کے لیے محدود آن لائن وسائل موجود ہیں۔ مزید برآں، ایک سٹریمنگ ڈیٹا پائپ لائن بنانا مشکل ہے جو آنے والے واقعات کو GNN ریئل ٹائم سرونگ API کو فیڈ کر سکے۔ مصنفین کے بہترین علم کے مطابق، اس تحریر کے مطابق GNN پر مبنی ریئل ٹائم انفرنس سلوشنز کے لیے کوئی ریفرنس آرکیٹیکچر اور مثالیں دستیاب نہیں ہیں۔

ڈیولپرز کی مدد کے لیے GNNs کو ریئل ٹائم فراڈ کا پتہ لگانے کے لیے لاگو کرنے کے لیے، یہ پوسٹ دکھاتی ہے کہ کس طرح استعمال کیا جائے۔ ایمیزون نیپچون, ایمیزون سیج میکر، اور ڈیپ گراف لائبریری (DGL)، دیگر AWS خدمات کے درمیان، GNN ماڈلز کا استعمال کرتے ہوئے حقیقی وقت میں دھوکہ دہی کا پتہ لگانے کے لیے ایک اختتام سے آخر تک حل تیار کرنا۔

ہم چار کاموں پر توجہ مرکوز کرتے ہیں:

  • ٹیبلر ٹرانزیکشن ڈیٹاسیٹ کو متضاد گراف ڈیٹاسیٹ میں پروسیس کرنا
  • SageMaker کا استعمال کرتے ہوئے ایک GNN ماڈل کو تربیت دینا
  • تربیت یافتہ GNN ماڈلز کو SageMaker اینڈ پوائنٹ کے طور پر تعینات کرنا
  • آنے والے لین دین کے لیے حقیقی وقت کا اندازہ لگانا

یہ پوسٹ پچھلے کام میں توسیع کرتی ہے۔ ایمیزون سیج میکر اور ڈیپ گراف لائبریری کا استعمال کرتے ہوئے متفاوت نیٹ ورکس میں دھوکہ دہی کا پتہ لگانا، جو پہلے دو کاموں پر مرکوز ہے۔ آپ متضاد گرافس، GNNs، اور GNNs کی نیم زیر نگرانی تربیت کے بارے میں مزید تفصیلات کے لیے اس پوسٹ کا حوالہ دے سکتے ہیں۔

دھوکہ دہی کا پتہ لگانے کے لیے مکمل طور پر منظم AWS AI سروس تلاش کرنے والے کاروبار بھی استعمال کر سکتے ہیں۔ ایمیزون فراڈ ڈیٹیکٹر، جو ممکنہ طور پر دھوکہ دہی والی آن لائن سرگرمیوں کی شناخت کرنا آسان بناتا ہے، جیسے کہ جعلی اکاؤنٹس بنانا یا آن لائن ادائیگی کا فراڈ۔

حل جائزہ

یہ حل دو بڑے حصوں پر مشتمل ہے۔

پہلا حصہ ایک پائپ لائن ہے جو ڈیٹا پر کارروائی کرتی ہے، GNN ماڈلز کو تربیت دیتی ہے، اور تربیت یافتہ ماڈلز کو تعینات کرتی ہے۔ یہ استعمال کرتا ہے۔ AWS گلو ٹرانزیکشن ڈیٹا پر کارروائی کرنے کے لیے، اور پروسیس شدہ ڈیٹا کو دونوں میں محفوظ کرتا ہے۔ ایمیزون نیپچون اور ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔ اس کے بعد، ایمیزون S3 میں محفوظ کردہ ڈیٹا پر ایک GNN ماڈل کو تربیت دینے کے لیے SageMaker ٹریننگ جاب کا آغاز کیا جاتا ہے تاکہ یہ اندازہ لگایا جا سکے کہ آیا کوئی لین دین دھوکہ دہی پر مبنی ہے۔ تربیت یافتہ ماڈل دیگر اثاثوں کے ساتھ تربیتی کام کی تکمیل پر واپس Amazon S3 میں محفوظ ہو جاتا ہے۔ آخر میں، محفوظ شدہ ماڈل کو سیج میکر اینڈ پوائنٹ کے طور پر تعینات کیا جاتا ہے۔ پائپ لائن کی طرف سے آرکیسٹریٹ کیا جاتا ہے AWS اسٹیپ فنکشنزجیسا کہ مندرجہ ذیل تصویر میں دکھایا گیا ہے۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

حل کا دوسرا حصہ حقیقی وقت میں دھوکہ دہی کے لین دین کا پتہ لگانے کو لاگو کرتا ہے۔ یہ ایک RESTful API سے شروع ہوتا ہے جو آنے والے لین دین سے متعلق ذیلی گراف کو نکالنے کے لیے نیپچون میں گراف ڈیٹا بیس سے استفسار کرتا ہے۔ اس کے پاس ایک ویب پورٹل بھی ہے جو کاروباری سرگرمیوں کی نقل کر سکتا ہے، دھوکہ دہی اور جائز دونوں کے ساتھ آن لائن لین دین پیدا کر سکتا ہے۔ ویب پورٹل دھوکہ دہی کا پتہ لگانے کا لائیو تصور فراہم کرتا ہے۔ یہ حصہ استعمال کرتا ہے۔ ایمیزون CloudFront, AWS بڑھانا, AWS AppSync, ایمیزون API گیٹ وے، قدمی افعال، اور ایمیزون دستاویز ڈی بی تیزی سے ویب ایپلیکیشن بنانے کے لیے۔ مندرجہ ذیل خاکہ اصل وقت کے تخمینے کے عمل اور ویب پورٹل کی وضاحت کرتا ہے۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

اس حل کے نفاذ کے ساتھ ساتھ ایک AWS کلاؤڈ فارمیشن ٹیمپلیٹ جو آپ کے AWS اکاؤنٹ میں فن تعمیر کو شروع کر سکتا ہے، درج ذیل کے ذریعے عوامی طور پر دستیاب ہے۔ GitHub repo.

ڈیٹا پراسیسنگ

اس سیکشن میں، ہم مختصراً بیان کرتے ہیں کہ مثال کے ڈیٹاسیٹ کو کیسے پروسیس کیا جائے اور اسے خام میزوں سے مختلف کالموں کے درمیان شناخت شدہ تعلقات کے ساتھ گراف میں تبدیل کیا جائے۔

یہ حل وہی ڈیٹاسیٹ استعمال کرتا ہے، IEEE-CIS فراڈ ڈیٹاسیٹ، پچھلی پوسٹ کی طرح ایمیزون سیج میکر اور ڈیپ گراف لائبریری کا استعمال کرتے ہوئے متفاوت نیٹ ورکس میں دھوکہ دہی کا پتہ لگانا. لہذا، ڈیٹا کے عمل کا بنیادی اصول ایک ہی ہے. مختصراً، فراڈ ڈیٹاسیٹ میں ایک ٹرانزیکشن ٹیبل اور شناختی ٹیبل شامل ہے، جس میں سیاق و سباق کی معلومات کے ساتھ تقریباً 500,000 گمنام ٹرانزیکشن ریکارڈز ہیں (مثال کے طور پر، لین دین میں استعمال ہونے والے آلات)۔ کچھ لین دین پر بائنری لیبل ہوتا ہے، جو اس بات کی نشاندہی کرتا ہے کہ آیا کوئی لین دین فراڈ ہے۔ ہمارا کام یہ پیش گوئی کرنا ہے کہ کون سے بغیر لیبل والے لین دین دھوکہ دہی پر مبنی ہیں اور کون سے جائز ہیں۔

مندرجہ ذیل اعداد و شمار عام عمل کو واضح کرتا ہے کہ IEEE ٹیبلز کو متفاوت گراف میں کیسے تبدیل کیا جائے۔ ہم پہلے ہر ٹیبل سے دو کالم نکالتے ہیں۔ ایک کالم ہمیشہ ٹرانزیکشن ID کالم ہوتا ہے، جہاں ہم ہر منفرد TransactionID کو ایک نوڈ کے طور پر سیٹ کرتے ہیں۔ ایک اور کالم کو زمرہ دار کالموں سے اٹھایا جاتا ہے، جیسے کہ ProductCD اور id_03 کالم، جہاں ہر منفرد زمرہ کو نوڈ کے طور پر سیٹ کیا گیا تھا۔ اگر ایک TransactionID اور ایک منفرد زمرہ ایک ہی قطار میں ظاہر ہوتا ہے، تو ہم انہیں ایک کنارے سے جوڑ دیتے ہیں۔ اس طرح، ہم ایک ٹیبل میں دو کالموں کو ایک دو طرفہ میں تبدیل کرتے ہیں۔ پھر ہم ان دو پارٹیوں کو TransactionID نوڈس کے ساتھ جوڑتے ہیں، جہاں ایک ہی TransactionID نوڈس کو ایک منفرد نوڈ میں ضم کیا جاتا ہے۔ اس قدم کے بعد، ہمارے پاس ایک متضاد گراف ہے جو دو طرفہ سے بنایا گیا ہے۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

باقی کالموں کے لیے جو گراف بنانے کے لیے استعمال نہیں ہوتے ہیں، ہم انہیں TransactionID نوڈس کی خصوصیت کے طور پر جوڑ دیتے ہیں۔ TransactionID ویلیوز جن میں isFraud ویلیوز ہوتی ہیں ماڈل ٹریننگ کے لیبل کے طور پر استعمال ہوتی ہیں۔ اس متضاد گراف کی بنیاد پر، ہمارا کام TransactionID نوڈس کا نوڈ درجہ بندی کا کام بن جاتا ہے۔ GNNs کی تربیت کے لیے گراف ڈیٹا کی تیاری کے بارے میں مزید تفصیلات کے لیے، ملاحظہ کریں۔ خصوصیت کا اخراج اور گراف کی تعمیر پچھلے بلاگ پوسٹ کے حصے۔

اس حل میں استعمال شدہ کوڈ میں دستیاب ہے۔ src/scripts/glue-etl.py. آپ Jupyter نوٹ بک کے ذریعے ڈیٹا پروسیسنگ کے ساتھ بھی تجربہ کر سکتے ہیں۔ src/sagemaker/01.FD_SL_Process_IEEE-CIS_Dataset.ipynb.

ڈیٹا کو دستی طور پر پروسیس کرنے کے بجائے، جیسا کہ پچھلی پوسٹ میں کیا گیا ہے، یہ حل سٹیپ فنکشنز اور AWS Glue کے ذریعے ترتیب دی گئی ایک مکمل خودکار پائپ لائن کا استعمال کرتا ہے جو Apache Spark کے ذریعے متوازی طور پر بڑے ڈیٹاسیٹس کی پروسیسنگ میں معاونت کرتا ہے۔ اسٹیپ فنکشنز کا ورک فلو لکھا ہوا ہے۔ AWS کلاؤڈ ڈویلپمنٹ کٹ (AWS CDK)۔ مندرجہ ذیل ہے a کوڈ کا ٹکڑا اس ورک فلو کو بنانے کے لیے:

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()

جی این این ماڈل ٹریننگ

ماڈل ٹریننگ کے لیے گراف ڈیٹا کو Amazon S3 میں محفوظ کرنے کے بعد، a سیج میکر کی تربیت کا کام، جو صرف اس وقت وصول کیا جاتا ہے جب تربیتی کام چل رہا ہو، GNN ماڈل ٹریننگ کے عمل کو Bring Your Own Container (BYOC) موڈ میں شروع کرنے کے لیے متحرک کیا جاتا ہے۔ یہ آپ کو اپنے ماڈل ٹریننگ اسکرپٹس اور انحصار کو ڈوکر امیج میں پیک کرنے کی اجازت دیتا ہے، جسے یہ سیج میکر ٹریننگ کی مثالیں بنانے کے لیے استعمال کرتا ہے۔ BYOC طریقہ تربیت کے ماحول کو ترتیب دینے میں اہم کوشش بچا سکتا ہے۔ میں src/sagemaker/02.FD_SL_Build_Training_Container_Test_Local.ipynb، آپ GNN ماڈل ٹریننگ کی تفصیلات حاصل کر سکتے ہیں۔

ڈوکر کی تصویر

Jupyter نوٹ بک فائل کا پہلا حصہ تربیتی ڈاکر امیج جنریشن ہے (مندرجہ ذیل کوڈ کا ٹکڑا دیکھیں):

*!* 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 پر مبنی تصویر استعمال کی۔ ڈوکر امیج بناتے وقت ڈیپ گراف لائبریری (DGL) اور دیگر انحصار انسٹال ہوتے ہیں۔ میں 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 فولڈر.

سیج میکر کے ساتھ ماڈل ٹریننگ

حسب ضرورت کنٹینر ڈوکر امیج بننے کے بعد، ہم اپنے GNN ماڈل کو تربیت دینے کے لیے پہلے سے پروسیس شدہ ڈیٹا کا استعمال کرتے ہیں جن کی ہم نے وضاحت کی ہے۔ تربیتی کام GNN کی تعمیر اور تربیت کے لیے DGL، PyTorch کے ساتھ بیک اینڈ ڈیپ لرننگ فریم ورک کے طور پر استعمال کرتا ہے۔ SageMaker اپنی مرضی کے مطابق ڈوکر امیج کے ساتھ GNN ماڈلز کو تربیت دینا آسان بناتا ہے، جو SageMaker تخمینہ لگانے والے کا ایک ان پٹ دلیل ہے۔ SageMaker پر DGL کے ساتھ GNNs کی تربیت کے بارے میں مزید معلومات کے لیے، دیکھیں ایک گہرے گراف نیٹ ورک کو تربیت دیں۔.

SageMaker Python SDK استعمال کرتا ہے۔ تخمینہ سیج میکر پر تربیت کو انکیپسولیٹ کرنے کے لیے، جو سیج میکر سے مطابقت رکھنے والے کسٹم ڈوکر کنٹینرز کو چلاتا ہے، آپ کو SageMaker Python SDK کا استعمال کر کے اپنے ML الگورتھم چلانے کے قابل بناتا ہے۔ مندرجہ ذیل کوڈ کا ٹکڑا 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% سے زیادہ درستگی حاصل کر سکتا ہے۔ دیگر ML ماڈلز کے ساتھ RGCN ماڈل کا موازنہ کرنے کے لیے، ملاحظہ کریں۔ نتائج کی نمائش مزید تفصیلات کے لیے پچھلی بلاگ پوسٹ کا سیکشن۔

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 تربیت یافتہ ماڈل کو دیگر اثاثوں کے ساتھ، بشمول تربیت یافتہ نوڈ ایمبیڈنگز، کو زپ فائل میں پیک کرتا ہے اور پھر اسے ایک مخصوص S3 مقام پر اپ لوڈ کرتا ہے۔ اگلا، ہم حقیقی وقت میں دھوکہ دہی کا پتہ لگانے کے لیے تربیت یافتہ ماڈل کی تعیناتی پر تبادلہ خیال کرتے ہیں۔

GNN ماڈل کی تعیناتی۔

سیج میکر تربیت یافتہ ایم ایل ماڈلز کی تعیناتی کو آسان بناتا ہے۔ اس مرحلے میں، ہم تربیت یافتہ ماڈل کو تعینات کرنے کے لیے 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 فولڈر، جو چار بڑے کام کرتا ہے:

  • پیشین گوئی شدہ نوڈس اور ان سے وابستہ ڈیٹا حاصل کرنے کے لیے درخواستیں وصول کریں اور درخواستوں کے مواد کو پارس کریں۔
  • ڈیٹا کو RGCN ماڈل کے ان پٹ کے بطور DGL متضاد گراف میں تبدیل کریں۔
  • تربیت یافتہ RGCN ماڈل کے ذریعے حقیقی وقت کا اندازہ لگائیں۔
  • پیشین گوئی کے نتائج درخواست کنندہ کو واپس کریں۔

سیج میکر کنونشنز کے بعد، پہلے دو فنکشنز کو لاگو کیا جاتا ہے۔ 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)

تعمیر شدہ ڈی جی ایل گراف اور فیچرز کو پھر منتقل کیا جاتا ہے۔ 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 argument اور 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 طریقہ دو نمبروں کی فہرست ہے، جو کلاس 0 اور کلاس 1 کے لاگٹس کی نشاندہی کرتا ہے، جہاں 0 کا مطلب جائز اور 1 کا مطلب ہے دھوکہ دہی۔ سیج میکر اس فہرست کو لیتا ہے اور اسے اندرونی طریقہ پر منتقل کرتا ہے جسے کہا جاتا ہے۔ 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 پائپ لائن کو استعمال کرنے کی تجویز کرتے ہیں، بشمول ڈیٹا کی پروسیسنگ، ماڈل کی تربیت، اور ایک انفرنس اینڈ پوائنٹ کو تعینات کرنا۔ پوری پائپ لائن کو AWS CDK کے ذریعے لاگو کیا جاتا ہے۔ درخواست، جسے مختلف خطوں اور کھاتوں میں آسانی سے نقل کیا جا سکتا ہے۔

ریئل ٹائم اندازہ

جب کوئی نیا لین دین آتا ہے، حقیقی وقت کی پیشن گوئی کرنے کے لیے، ہمیں چار مراحل کو مکمل کرنے کی ضرورت ہے:

  1. نوڈ اور کنارے کا اندراج - ٹرانزیکشن کی معلومات جیسے کہ TransactionID اور ProductCD کو نوڈس اور ایجز کے طور پر نکالیں، اور نیپچون ڈیٹا بیس میں محفوظ موجودہ گراف ڈیٹا میں نئے نوڈس داخل کریں۔
  2. ذیلی گراف نکالنا - پیشین گوئی شدہ ٹرانزیکشن نوڈ کو سینٹر نوڈ کے طور پر سیٹ کریں، اور GNN ماڈل کی ان پٹ ضروریات کے مطابق ایک n-hop سب گراف نکالیں۔
  3. خصوصیت کا اخراج - ذیلی گراف میں نوڈس اور کناروں کے لیے، ان کی متعلقہ خصوصیات کو نکالیں۔
  4. انفرنس اینڈ پوائنٹ کو کال کریں۔ - درخواست کے مندرجات میں ذیلی گراف اور خصوصیات کو پیک کریں، پھر درخواست کو اختتامی نقطہ پر بھیجیں۔

اس حل میں، ہم ایک RESTful API لاگو کرتے ہیں تاکہ پچھلے مراحل میں بیان کردہ حقیقی وقت میں دھوکہ دہی کی پیشین گوئی حاصل کی جا سکے۔ ریئل ٹائم پیشین گوئیوں کے لیے درج ذیل سیوڈو کوڈ دیکھیں۔ مکمل عمل درآمد جاری ہے۔ مکمل سورس کوڈ فائل.

حقیقی وقت میں پیشین گوئی کے لیے، پہلے تین مراحل میں کم تاخیر کی ضرورت ہوتی ہے۔ لہذا، گراف ڈیٹا بیس ان کاموں کے لیے ایک بہترین انتخاب ہے، خاص طور پر سب گراف نکالنے کے لیے، جو گراف ڈیٹا بیس کے سوالات کے ساتھ موثر طریقے سے حاصل کیا جا سکتا ہے۔ انڈر لائن فنکشنز جو سیڈو کوڈ کو سپورٹ کرتے ہیں وہ نیپچون کے گریملن سوالات پر مبنی ہیں۔

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

GNNs کا استعمال کرتے ہوئے ریئل ٹائم فراڈ کا پتہ لگانے کے بارے میں ایک انتباہ GNN انفرنس موڈ ہے۔ ریئل ٹائم انفرنس کو پورا کرنے کے لیے، ہمیں GNN ماڈل انفرنس کو ٹرانسجیکٹیو موڈ سے انڈکٹیو موڈ میں تبدیل کرنے کی ضرورت ہے۔ ٹرانسڈیکٹیو انفرنس موڈ میں GNN ماڈل نئے نمودار ہونے والے نوڈس اور کناروں کے لیے پیشین گوئی نہیں کر سکتے ہیں، جب کہ انڈکٹیو موڈ میں، GNN ماڈل نئے نوڈس اور کناروں کو سنبھال سکتے ہیں۔ ٹرانسجیکٹیو اور انڈکٹیو موڈ کے درمیان فرق کا ایک مظاہرہ مندرجہ ذیل تصویر میں دکھایا گیا ہے۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

نقلی موڈ میں، تربیت کے دوران پیش گوئی شدہ نوڈس اور کنارے لیبل لگے ہوئے نوڈس اور کناروں کے ساتھ ایک ساتھ رہتے ہیں۔ ماڈل ان کی نشاندہی کرنے سے پہلے ان کی شناخت کرتے ہیں، اور تربیت میں ان کا اندازہ لگایا جا سکتا ہے۔ انڈکٹیو موڈ میں ماڈلز کو ٹریننگ گراف پر تربیت دی جاتی ہے لیکن ان کو اپنے متعلقہ پڑوسیوں کے ساتھ غیر دیکھے ہوئے نوڈس (جو دائیں طرف سرخ نقطے والے حلقوں میں ہوتے ہیں) کی پیشین گوئی کرنے کی ضرورت ہوتی ہے، جو کہ نئے نوڈس ہو سکتے ہیں، جیسے دائیں جانب گرے ٹرائی اینگل نوڈ۔

ہمارا RGCN ماڈل تربیت یافتہ اور ٹرانزیکٹیو موڈ میں آزمایا جاتا ہے۔ اسے تربیت میں تمام نوڈس تک رسائی حاصل ہے، اور ہر خصوصیت کے بغیر نوڈ، جیسے کہ آئی پی ایڈریس اور کارڈ کی اقسام کے لیے ایمبیڈنگ کی تربیت بھی دی ہے۔ جانچ کے مرحلے میں، RGCN ماڈل ٹیسٹ سیٹ میں نوڈس کی پیش گوئی کرنے کے لیے ان ایمبیڈنگز کو نوڈ فیچر کے طور پر استعمال کرتا ہے۔ جب ہم ریئل ٹائم انفرنس کرتے ہیں، تاہم، کچھ نئے شامل کیے گئے فیچر لیس نوڈس میں ایسی کوئی ایمبیڈنگ نہیں ہوتی ہے کیونکہ وہ ٹریننگ گراف میں نہیں ہوتے ہیں۔ اس مسئلے سے نمٹنے کا ایک طریقہ یہ ہے کہ ایک ہی نوڈ ٹائپ میں موجود تمام ایمبیڈنگز کا مطلب نئے نوڈس کو تفویض کیا جائے۔ اس حل میں ہم یہ طریقہ اپناتے ہیں۔

اس کے علاوہ، یہ حل ایک ویب پورٹل فراہم کرتا ہے (جیسا کہ مندرجہ ذیل اسکرین شاٹ میں دیکھا گیا ہے) کاروباری آپریٹرز کے نقطہ نظر سے حقیقی وقت میں دھوکہ دہی کی پیشین گوئیوں کا مظاہرہ کرنے کے لیے۔ یہ نقلی آن لائن لین دین تیار کر سکتا ہے، اور دھوکہ دہی سے متعلق لین دین کی معلومات کا لائیو تصور فراہم کر سکتا ہے۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عی

صاف کرو

جب آپ حل تلاش کر لیں گے، تو آپ کر سکتے ہیں۔ وسائل کو صاف کریں چارجز سے بچنے کے لیے۔

نتیجہ

اس پوسٹ میں، ہم نے دکھایا کہ سیج میکر، نیپچون، اور ڈی جی ایل کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل کیسے بنایا جائے۔ اس حل کے تین بڑے فوائد ہیں:

  • پیشین گوئی کی درستگی اور AUC میٹرکس کے لحاظ سے اس کی کارکردگی اچھی ہے۔
  • یہ سٹریمنگ MLOps پائپ لائن اور SageMaker اینڈ پوائنٹس کے ذریعے حقیقی وقت کا اندازہ لگا سکتا ہے۔
  • یہ فراہم کردہ CloudFormation ٹیمپلیٹ کے ساتھ مکمل تعیناتی کے عمل کو خودکار کرتا ہے تاکہ دلچسپی رکھنے والے ڈویلپرز اپنے اکاؤنٹ میں حسب ضرورت ڈیٹا کے ساتھ اس حل کو آسانی سے جانچ سکیں۔

حل کے بارے میں مزید تفصیلات کے لیے، دیکھیں GitHub repo.

اس حل کو متعین کرنے کے بعد، ہم آپ کے اپنے ڈیٹا فارمیٹ میں فٹ ہونے کے لیے ڈیٹا پروسیسنگ کوڈ کو حسب ضرورت بنانے کی تجویز کرتے ہیں اور GNN ماڈل کو غیر تبدیل کرتے ہوئے ریئل ٹائم انفرنس میکانزم میں ترمیم کریں۔ نوٹ کریں کہ ہم نے تاخیر کو مزید بہتر کیے بغیر اصل وقت کے تخمینے کو چار مراحل میں تقسیم کیا ہے۔ ڈیمو ڈیٹاسیٹ پر پیشین گوئی حاصل کرنے میں ان چار مراحل میں چند سیکنڈ لگتے ہیں۔ ہمارا ماننا ہے کہ نیپچون گراف ڈیٹا اسکیما ڈیزائن کو بہتر بنانا اور ذیلی گراف اور فیچر نکالنے کے لیے استفسارات قیاس میں تاخیر کو نمایاں طور پر کم کر سکتا ہے۔


مصنفین کے بارے میں

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عیجیان ژانگ ایک قابل اطلاق سائنس دان ہے جو صارفین کو مختلف مسائل کو حل کرنے میں مدد کرنے کے لیے مشین لرننگ تکنیک کا استعمال کر رہا ہے، جیسے کہ دھوکہ دہی کا پتہ لگانا، تصویر کی سجاوٹ، وغیرہ۔ اس نے کامیابی کے ساتھ گراف پر مبنی مشین لرننگ تیار کی ہے، خاص طور پر گراف نیورل نیٹ ورک، چین، امریکہ اور سنگاپور میں صارفین کے لیے حل۔ AWS کی گراف کی صلاحیتوں کے روشن خیال کے طور پر، Zhang نے GNN، دیپ گراف لائبریری (DGL)، Amazon Neptune، اور AWS کی دیگر خدمات کے بارے میں بہت ساری عوامی پیشکشیں دی ہیں۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عیMengxin Zhu AWS میں سولیوشنز آرکیٹیکٹس کا مینیجر ہے، جس کی توجہ دوبارہ قابل استعمال AWS سلوشنز کو ڈیزائن اور تیار کرنے پر مرکوز ہے۔ وہ کئی سالوں سے سافٹ ویئر کی تیاری میں مصروف ہے اور مختلف سائز کی کئی اسٹارٹ اپ ٹیموں کے لیے ذمہ دار ہے۔ وہ اوپن سورس سافٹ ویئر کا بھی وکیل ہے اور ایکلیپس کمیٹر تھا۔

Amazon SageMaker، Amazon Neptune، اور Deep Graph Library PlatoBlockchain Data Intelligence کا استعمال کرتے ہوئے GNN پر مبنی ریئل ٹائم فراڈ کا پتہ لگانے کا حل تیار کریں۔ عمودی تلاش۔ عیہاؤزو وانگ Amazon ML Solutions Lab میں ایک تحقیقی سائنسدان ہے، جہاں وہ Reinforcement Learning Vertical کی شریک قیادت کرتا ہے۔ وہ گراف لرننگ، نیچرل لینگویج پروسیسنگ، ری انفورسمنٹ لرننگ، اور آٹو ایم ایل پر جدید ترین تحقیق کے ساتھ جدید ترین مشین لرننگ سلوشنز بنانے میں صارفین کی مدد کرتا ہے۔ Haozhu نے مشی گن یونیورسٹی سے الیکٹریکل اور کمپیوٹر انجینئرنگ میں پی ایچ ڈی کی ڈگری حاصل کی۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ