Այս գրառման մեջ մենք կշարունակենք աշխատել Twitch տվյալների բազայի հետ կապի կանխատեսման վրա: Մենք արդեն ունենք գրաֆիկական տվյալներ, որոնք արտահանվել են Նեպտունից՝ օգտագործելով utility և «neptune_ml» պրոֆիլը: Նախորդ քայլերը նկարագրված են սույն ուղեցույցի 2-րդ և 1-ին մասերում: neptune-export 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" ... Արտահանման ծրագիրը նաև ստեղծել է այս կազմաձևման ֆայլը մեզ համար. training-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-ով կապի կանխատեսման ակնարկի համար տես այս ): Դա ներառում է թվային հատկանիշների նորմալացում, դասակարգային հատկանիշների կոդավորում, գոյություն ունեցող և գոյություն չունեցող հղումներով հանգույցների զույգերի ցուցակների ստեղծում՝ մեր հղումների կանխատեսման առաջադրանքի համար վերահսկվող ուսուցումը հնարավոր դարձնելու համար, և տվյալների բաժանումը վերապատրաստման, վավերացման և փորձարկման խմբերի: գրառումը Ինչպես տեսնում եք ֆայլում, հանգույցի «օրեր» (հաշվի տարիք) և «դիտումներ» հատկանիշները ճանաչվել են թվային, և առաջարկվել է min-max նորմալացում: Min-max նորմալացումը չափում է կամայական արժեքները մինչև [0; 1] այսպես՝ x_normalized = (x - x_min) / (x_max - x_min): Իսկ imputer = մեդիան նշանակում է, որ բաց թողնված արժեքները լրացնելու են միջին արժեքով: training-data-configuration.json Հանգույցի «հասուն» և «գործընկեր» հատկանիշները պիտակավորված են որպես «ավտո», և քանի որ այդ սյունակները պարունակում են միայն բուլյան արժեքներ, մենք ակնկալում ենք, որ դրանք կճանաչվեն որպես դասակարգային հատկանիշներ և կոդավորված կլինեն տվյալների մշակման փուլում: Train-validation-test split-ը ներառված չէ այս ավտոմատ ստեղծվող ֆայլում, և հղումների կանխատեսման առաջադրանքի լռելյայն բաժանումը 0.9, 0.05, 0.05 է: Դուք կարող եք կարգավորել նորմալացման և կոդավորման կարգավորումները, ինչպես նաև կարող եք ընտրել հատուկ գնացքի վավերացման թեստի բաժանում: Եթե որոշեք դա անել, պարզապես S3-ի նախնական training-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" } ] } Դերերը ստեղծելուց և վստահության քաղաքականությունը թարմացնելուց հետո մենք դրանք կավելացնենք Նեպտունի կլաստերին (Neptune -> Databases -> YOUR_NEPTUNE_CLUSTER_ID -> Connectivity & Security -> IAM Roles -> Add role): ՏՎՅԱԼՆԵՐԻ ՄՇԱԿՈՒՄ NEPTUNE ML HTTP API-ով Այժմ, երբ մենք թարմացրել ենք training-data-configuration.json ֆայլը և ավելացրել ենք IAM դերերը Նեպտունի կլաստերին, մենք պատրաստ ենք սկսել տվյալների մշակման աշխատանքը: Դա անելու համար մենք պետք է հարցում ուղարկենք Neptune կլաստերի HTTP API-ին VPC-ի ներսից, որտեղ գտնվում է կլաստերը: Դա անելու համար մենք կօգտագործենք և 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-ն, որը մենք հենց նոր ստեղծեցինք. {"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 մոդելի ուսուցումը: Այն կքննարկվի այս ուղեցույցի հաջորդ մասում: