paint-brush
AI сиздин социалдык жашооңузду алдын ала айтуудан мурун, анын маалыматтарын тазалоо керектарабынан@andrei9735
485 окуулар
485 окуулар

AI сиздин социалдык жашооңузду алдын ала айтуудан мурун, анын маалыматтарын тазалоо керек

тарабынан Andrei12m2025/02/12
Read on Terminal Reader

өтө узун; Окуу

Бул постто биз Twitch маалымат топтому менен шилтемени болжолдоо боюнча иштөөнү улантабыз.
featured image - AI сиздин социалдык жашооңузду алдын ала айтуудан мурун, анын маалыматтарын тазалоо керек
Andrei HackerNoon profile picture
0-item

Бул постто биз Twitch маалымат топтому менен шилтемени болжолдоо боюнча иштөөнү улантабыз.


Бизде мурунтан эле Neptune-экспорттун утилитасы жана "neptune_ml" профили аркылуу Нептундан экспорттолгон график маалыматтары бар. Мурунку кадамдар ушул колдонмонун 2 жана 1-бөлүктөрүндө сүрөттөлгөн.


1-бөлүгүн бул жерден жана 2-бөлүгүн бул жерден окуңуз.


Маалыматтар учурда S3 ичинде сакталат жана мындай көрүнөт:


Vertices CSV (nodes/user.consolidated.csv):

 ~id,~label,days,mature,views,partner "6980","user",771,true,2935,false "547","user",2602,true,18099,false "2173","user",1973,false,3939,false ...

Edges CSV (edges/user-follows-user.consolidated.csv):

 ~id,~label,~from,~to,~fromLabels,~toLabels "3","follows","6194","2507","user","user" "19","follows","3","3739","user","user" "35","follows","6","2126","user","user" ...

Экспорттук программа ошондой эле биз үчүн бул конфигурация файлын түздү:

train-data-configuration.json:

 { "version" : "v2.0", "query_engine" : "gremlin", "graph" : { "nodes" : [ { "file_name" : "nodes/user.consolidated.csv", "separator" : ",", "node" : [ "~id", "user" ], "features" : [ { "feature" : [ "days", "days", "numerical" ], "norm" : "min-max", "imputer" : "median" }, { "feature" : [ "mature", "mature", "auto" ] }, { "feature" : [ "views", "views", "numerical" ], "norm" : "min-max", "imputer" : "median" }, { "feature" : [ "partner", "partner", "auto" ] } ] } ], "edges" : [ { "file_name" : "edges/%28user%29-follows-%28user%29.consolidated.csv", "separator" : ",", "source" : [ "~from", "user" ], "relation" : [ "", "follows" ], "dest" : [ "~to", "user" ], "features" : [ ] } ] }, "warnings" : [ ] }

Биздин учурдагы максатыбыз маалыматтарды иштеп чыгуу, бул бизде болгон маалыматтарды Deep Graph Library алкактары моделди окутуу үчүн колдоно ала турган форматка айландыруу дегенди билдирет. (Жөн гана DGL менен шилтемени алдын ала карап чыгуу үчүн, бул постту караңыз). Бул сандык өзгөчөлүктөрдү нормалдаштырууну, категориялык өзгөчөлүктөрдү коддоону, шилтемени болжолдоо тапшырмабыз үчүн көзөмөлдөнгөн үйрөнүүнү иштетүү үчүн бар жана жок шилтемелер менен түйүн жуптарынын тизмелерин түзүү жана маалыматтарды окутуу, текшерүү жана тесттик топтомдорго бөлүүнү камтыйт.


Training-data-configuration.json файлында көрүнүп тургандай, түйүн өзгөчөлүктөрү "күндөр" (эсептөө курагы) жана "көрүүлөр" сандык деп таанылып, минимум-максималдуу нормалдаштыруу сунушталды. Мин-макс нормалдаштыруу стихиялуу маанилерди [0 диапазонуна чейин таразалайт; 1] бул сыяктуу: x_normalized = (x - x_min) / (x_max - x_min). Ал эми imputer = медиана жетишпеген маанилер медианалык маани менен толтурулат дегенди билдирет.


Түйүн өзгөчөлүктөрү "жетилген" жана "өнөктөш" "авто" деп белгиленет жана ал мамычалар логикалык маанилерди гана камтыгандыктан, биз алар категориялык өзгөчөлүк катары таанылып, маалыматтарды иштеп чыгуу стадиясында коддолушун күтөбүз. Бул автоматтык түрдө түзүлгөн файлга поезд-текшерүү-сыноо бөлүнбөйт жана шилтемени болжолдоо тапшырмасы үчүн демейки бөлүнүү 0,9, 0,05, 0,05 болуп саналат.


Сиз нормалдаштыруу жана коддоо жөндөөлөрүн тууралай аласыз, ошондой эле ыңгайлаштырылган поезд-текшерүү-сынак бөлүүнү тандай аласыз. Эгер сиз муну тандасаңыз, S3 ичиндеги оригиналдуу train-data-configuration.json файлын жаңыртылган версияга алмаштырыңыз. Ошол JSONде колдоого алынган талаалардын толук тизмеси бул жерде жеткиликтүү. Бул постто биз бул файлды өзгөртүүсүз калтырабыз.

МААЛЫМАТТАРДЫ ИШТӨӨ ҮЧҮН КЕРЕК IAM РОЛдору

Дайындарды жүктөө стадиясында болгондой (бул окуу куралынын 1-бөлүгүндө сүрөттөлөт), биз колдоно турган кызматтарга кирүү мүмкүнчүлүгүн берген IAM ролдорун түзүшүбүз керек жана ошондой эле бул ролдорду Нептун кластерибизге кошушубуз керек. Бизге маалыматтарды иштетүү стадиясында эки роль керек. Биринчиси, Нептундун SageMaker жана S3ке кирүү мүмкүнчүлүгүн камсыз кылган Нептун ролу. Экинчиси - SageMaker аткаруу ролу, ал SageMaker тарабынан берилиштерди иштетүү тапшырмасын аткарып жатканда колдонулат жана S3 мүмкүнчүлүгүнө мүмкүнчүлүк берет.


Бул ролдор Neptune жана SageMaker кызматтарына аларды өзүнө алууга мүмкүндүк берген ишеним саясаттарына ээ болушу керек:

 { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Ролдорду түзүп, алардын ишеним саясаттарын жаңырткандан кийин, биз аларды Нептун кластерине кошобуз (Нептун -> Маалымат базалары -> YOUR_NEPTUNE_CLUSTER_ID -> Байланыш жана коопсуздук -> IAM Ролдору -> Рол кошуу).

NEPTUNE ML HTTP API МЕНЕН МААЛЫМАТТАРДЫ ИШТӨӨ

Training-data-configuration.json файлын жаңыртып, IAM ролдорун Нептун кластерине кошкондон кийин, биз маалыматтарды иштетүү ишин баштоого даярбыз. Ал үчүн биз кластер жайгашкан VPC ичинен Нептун кластеринин HTTP API'сине суроо-талапты жөнөтүшүбүз керек. Бул үчүн биз жана EC2 инстанциясын колдонобуз.

Маалыматтарды иштетүү ишин баштоо үчүн биз curl колдонобуз:

 curl -XPOST https://(YOUR_NEPTUNE_ENDPOINT):8182/ml/dataprocessing \ -H 'Content-Type: application/json' \ -d '{ "inputDataS3Location" : "s3://SOURCE_BUCKET/neptune-export/...", "processedDataS3Location" : "s3://OUTPUT_BUCKET/neptune-export-processed/...", "neptuneIamRoleArn": "arn:aws:iam::123456789012:role/NeptuneMLDataProcessingNeptuneRole", "sagemakerIamRoleArn": "arn:aws:iam::123456789012:role/NeptuneMLDataProcessingSagemakerRole" }'

Жөн гана ушул 4 параметр талап кылынат: киргизүү маалыматтары S3 жайгашкан жери, иштетилген маалыматтар S3 жайгашкан жери, Нептун ролу, Sagemaker ролу. Көптөгөн кошумча параметрлер бар: мисалы, processingInstanceType менен маалыматтарды иштетүү тапшырмабыз үчүн түзүлө турган EC2 инстанция түрүн кол менен тандап, анын сактагыч көлөмүнүн өлчөмүн processingInstanceVolumeSizeInGB менен орното алабыз. Параметрлердин толук тизмесин бул жерден тапса болот.

Кластер биз жаңы эле түзгөн дайындарды иштетүү жумушунун идентификаторун камтыган JSON менен жооп берет:

 {"id":"d584f5bc-d90e-4957-be01-523e07a7562e"}

Биз аны бул буйрук менен жумуштун статусун алуу үчүн колдоно алабыз (мурунку сурамдагыдай эле neptuneIamRoleArn колдонуңуз):

 curl https://YOUR_NEPTUNE_CLUSTER_ENDPOINT:8182/ml/dataprocessing/YOUR_JOB_ID?neptuneIamRoleArn='arn:aws:iam::123456789012:role/NeptuneMLDataProcessingNeptuneRole'

Бул сыяктуу бир нерсе менен жооп бергенден кийин,

 { "processingJob": {...}, "id":"d584f5bc-d90e-4957-be01-523e07a7562e", "status":"Completed" }

чыгарууну текшере алабыз. Бул файлдар көздөгөн S3 чакасында түзүлгөн:


График.* файлдары иштетилген график маалыматтарын камтыйт.

Features.json файлы түйүн жана чет өзгөчөлүктөрүнүн тизмелерин камтыйт:

 { "nodeProperties": { "user": [ "days", "mature", "views", "partner" ] }, "edgeProperties": {} }

Маалыматтар кантип иштетилгени жана функциялар кантип коддолгону тууралуу маалыматты updated_training_config.json файлынан тапса болот:

 { "graph": { "nodes": [ { "file_name": "nodes/user.consolidated.csv", "separator": ",", "node": [ "~id", "user" ], "features": [ { "feature": [ "days", "days", "numerical" ], "norm": "min-max", "imputer": "median" }, { "feature": [ "mature", "mature", "category" ] }, { "feature": [ "views", "views", "numerical" ], "norm": "min-max", "imputer": "median" }, { "feature": [ "partner", "partner", "category" ] } ] } ], "edges": [ { "file_name": "edges/%28user%29-follows-%28user%29.consolidated.csv", "separator": ",", "source": [ "~from", "user" ], "relation": [ "", "follows" ], "dest": [ "~to", "user" ] } ] } }

Алгач train-data-configuration.json файлында "авто" деп белгиленген логикалык маанилери бар "жетилген" жана "өнөктөш" тилкелери категория өзгөчөлүктөрү катары коддолгондугун көрөбүз.


'train_instance_recommendation.json' файлы SageMaker инстанциясынын түрүн жана моделди окутуу үчүн сунушталган сактагычтын өлчөмүн камтыйт:

 { "instance": "ml.g4dn.2xlarge", "cpu_instance": "ml.m5.2xlarge", "disk_size": 14126462, "mem_size": 4349122131.111111 }

model-hpo-configuration.json файлы моделдин түрүн, аны баалоо үчүн колдонулган метрикаларды, баалоонун жыштыгын жана гиперпараметрлерди камтыйт.


Бул процесстин маалыматтарды иштетүү стадиясын аяктайт, анткени биз азыр ML моделин окутууну баштоого даярбыз. Бул колдонмонун кийинки бөлүгүндө талкууланат.