Бул постто биз Twitch маалымат топтому менен шилтемени болжолдоо боюнча иштөөнү улантабыз. Бизде мурунтан эле утилитасы жана "neptune_ml" профили аркылуу Нептундан экспорттолгон график маалыматтары бар. Мурунку кадамдар ушул колдонмонун 2 жана 1-бөлүктөрүндө сүрөттөлгөн. Neptune-экспорттун 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 менен шилтемени алдын ала карап чыгуу үчүн, бул караңыз). Бул сандык өзгөчөлүктөрдү нормалдаштырууну, категориялык өзгөчөлүктөрдү коддоону, шилтемени болжолдоо тапшырмабыз үчүн көзөмөлдөнгөн үйрөнүүнү иштетүү үчүн бар жана жок шилтемелер менен түйүн жуптарынын тизмелерин түзүү жана маалыматтарды окутуу, текшерүү жана тесттик топтомдорго бөлүүнү камтыйт. постту файлында көрүнүп тургандай, түйүн өзгөчөлүктөрү "күндөр" (эсептөө курагы) жана "көрүүлөр" сандык деп таанылып, минимум-максималдуу нормалдаштыруу сунушталды. Мин-макс нормалдаштыруу стихиялуу маанилерди [0 диапазонуна чейин таразалайт; 1] бул сыяктуу: x_normalized = (x - x_min) / (x_max - x_min). Ал эми imputer = медиана жетишпеген маанилер медианалык маани менен толтурулат дегенди билдирет. Training-data-configuration.json Түйүн өзгөчөлүктөрү "жетилген" жана "өнөктөш" "авто" деп белгиленет жана ал мамычалар логикалык маанилерди гана камтыгандыктан, биз алар категориялык өзгөчөлүк катары таанылып, маалыматтарды иштеп чыгуу стадиясында коддолушун күтөбүз. Бул автоматтык түрдө түзүлгөн файлга поезд-текшерүү-сыноо бөлүнбөйт жана шилтемени болжолдоо тапшырмасы үчүн демейки бөлүнүү 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 ролу. Көптөгөн кошумча параметрлер бар: мисалы, менен маалыматтарды иштетүү тапшырмабыз үчүн түзүлө турган EC2 инстанция түрүн кол менен тандап, анын сактагыч көлөмүнүн өлчөмүн менен орното алабыз. Параметрлердин толук тизмесин тапса болот. processingInstanceType 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 файлында "авто" деп белгиленген логикалык маанилери бар "жетилген" жана "өнөктөш" тилкелери категория өзгөчөлүктөрү катары коддолгондугун көрөбүз. файлы SageMaker инстанциясынын түрүн жана моделди окутуу үчүн сунушталган сактагычтын өлчөмүн камтыйт: 'train_instance_recommendation.json' { "instance": "ml.g4dn.2xlarge", "cpu_instance": "ml.m5.2xlarge", "disk_size": 14126462, "mem_size": 4349122131.111111 } файлы моделдин түрүн, аны баалоо үчүн колдонулган метрикаларды, баалоонун жыштыгын жана гиперпараметрлерди камтыйт. model-hpo-configuration.json Бул процесстин маалыматтарды иштетүү стадиясын аяктайт, анткени биз азыр ML моделин окутууну баштоого даярбыз. Бул колдонмонун кийинки бөлүгүндө талкууланат.