Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines

Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines

Στούντιο Amazon SageMaker μπορεί να σας βοηθήσει να δημιουργήσετε, να εκπαιδεύσετε, να εντοπίσετε σφάλματα, να αναπτύξετε και να παρακολουθήσετε τα μοντέλα σας και να διαχειριστείτε τις ροές εργασιών μηχανικής εκμάθησης (ML). Αγωγοί Amazon SageMaker σας δίνει τη δυνατότητα να χτίσετε ένα ασφαλής, επεκτάσιμη και ευέλικτη πλατφόρμα MLOps μέσα στο Studio.

Σε αυτήν την ανάρτηση, εξηγούμε πώς να εκτελείτε εργασίες επεξεργασίας PySpark εντός ενός αγωγού. Αυτό δίνει τη δυνατότητα σε οποιονδήποτε θέλει να εκπαιδεύσει ένα μοντέλο χρησιμοποιώντας Pipelines να προεπεξεργάζεται επίσης δεδομένα εκπαίδευσης, δεδομένα συμπερασμάτων μετά την επεξεργασία ή να αξιολογεί μοντέλα χρησιμοποιώντας το PySpark. Αυτή η δυνατότητα είναι ιδιαίτερα σημαντική όταν χρειάζεται να επεξεργαστείτε δεδομένα μεγάλης κλίμακας. Επιπλέον, παρουσιάζουμε πώς να βελτιστοποιήσετε τα βήματά σας στο PySpark χρησιμοποιώντας διαμορφώσεις και αρχεία καταγραφής UI Spark.

Οι αγωγοί είναι ένα Amazon Sage Maker εργαλείο για την κατασκευή και τη διαχείριση αγωγών ML από άκρο σε άκρο. Είναι μια πλήρως διαχειριζόμενη υπηρεσία κατ' απαίτηση, ενσωματωμένη με το SageMaker και άλλες υπηρεσίες AWS, και επομένως δημιουργεί και διαχειρίζεται πόρους για εσάς. Αυτό διασφαλίζει ότι οι περιπτώσεις παρέχονται και χρησιμοποιούνται μόνο κατά τη λειτουργία των αγωγών. Επιπλέον, οι Pipelines υποστηρίζονται από το SDK SageMaker Python, επιτρέποντάς σας να παρακολουθείτε το δικό σας καταγωγή δεδομένων και βήματα επαναχρησιμοποίησης αποθηκεύοντάς τα στην κρυφή μνήμη για να διευκολύνει το χρόνο και το κόστος ανάπτυξης. Μπορεί να χρησιμοποιηθεί ένας αγωγός SageMaker βήματα επεξεργασίας για την επεξεργασία δεδομένων ή την αξιολόγηση του μοντέλου.

Κατά την επεξεργασία δεδομένων μεγάλης κλίμακας, οι επιστήμονες δεδομένων και οι μηχανικοί ML χρησιμοποιούν συχνά PySpark, μια διεπαφή για Apache Spark στην Python. Το SageMaker παρέχει προκατασκευασμένες εικόνες Docker που περιλαμβάνουν το PySpark και άλλες εξαρτήσεις που απαιτούνται για την εκτέλεση εργασιών επεξεργασίας κατανεμημένων δεδομένων, συμπεριλαμβανομένων των μετασχηματισμών δεδομένων και της μηχανικής λειτουργιών χρησιμοποιώντας το πλαίσιο Spark. Αν και αυτές οι εικόνες σάς επιτρέπουν να αρχίσετε γρήγορα να χρησιμοποιείτε το PySpark σε εργασίες επεξεργασίας, η επεξεργασία δεδομένων μεγάλης κλίμακας απαιτεί συχνά συγκεκριμένες διαμορφώσεις Spark προκειμένου να βελτιστοποιηθεί ο κατανεμημένος υπολογισμός του συμπλέγματος που δημιουργήθηκε από το SageMaker.

Στο παράδειγμά μας, δημιουργούμε μια διοχέτευση SageMaker που εκτελεί ένα μόνο βήμα επεξεργασίας. Για περισσότερες πληροφορίες σχετικά με τα άλλα βήματα που μπορείτε να προσθέσετε σε μια διοχέτευση, ανατρέξτε στο Βήματα αγωγού.

Βιβλιοθήκη SageMaker Processing

Το SageMaker Processing μπορεί να εκτελεστεί με συγκεκριμένα πλαισίων (για παράδειγμα, SKlearnProcessor, PySparkProcessor ή Hugging Face). Ανεξάρτητα από το πλαίσιο που χρησιμοποιείται, το καθένα Βήμα επεξεργασίας απαιτεί τα εξής:

  • Όνομα βήματος – Το όνομα που θα χρησιμοποιηθεί για το βήμα διοχέτευσης SageMaker
  • Επιχειρήματα βημάτων – Τα επιχειρήματα υπέρ σας ProcessingStep

Επιπλέον, μπορείτε να παρέχετε τα ακόλουθα:

  • Η διαμόρφωση για την προσωρινή μνήμη βημάτων σας, προκειμένου να αποφευχθούν περιττές εκτελέσεις του βήματος σας σε μια διοχέτευση SageMaker
  • Μια λίστα με ονόματα βημάτων, παρουσίες βημάτων ή παρουσίες συλλογής βημάτων που το ProcessingStep εξαρτάται
  • Το εμφανιζόμενο όνομα του ProcessingStep
  • Μια περιγραφή του ProcessingStep
  • Αρχεία ιδιοκτησίας
  • Δοκιμάστε ξανά τις πολιτικές

Τα επιχειρήματα παραδίδονται στον ProcessingStep. Μπορείτε να χρησιμοποιήσετε το sagemaker.spark.PySparkProcessor or sagemaker.spark.SparkJarProcessor τάξη για να εκτελέσετε την εφαρμογή Spark σας μέσα σε μια εργασία επεξεργασίας.

Κάθε επεξεργαστής έρχεται με τις δικές του ανάγκες, ανάλογα με το πλαίσιο. Αυτό φαίνεται καλύτερα χρησιμοποιώντας το PySparkProcessor, όπου μπορείτε να μεταβιβάσετε πρόσθετες πληροφορίες για τη βελτιστοποίηση του ProcessingStep περαιτέρω, για παράδειγμα μέσω του configuration παράμετρο κατά την εκτέλεση της εργασίας σας.

Εκτελέστε εργασίες επεξεργασίας SageMaker σε ασφαλές περιβάλλον

Είναι βέλτιστων πρακτικών για να δημιουργήσετε ένα ιδιωτικό Amazon VPC και να το διαμορφώσετε έτσι ώστε οι εργασίες σας να μην είναι προσβάσιμες μέσω του δημόσιου διαδικτύου. Οι εργασίες επεξεργασίας του SageMaker σάς επιτρέπουν να καθορίσετε τα ιδιωτικά υποδίκτυα και τις ομάδες ασφαλείας στο VPC σας καθώς και να ενεργοποιήσετε την απομόνωση δικτύου και την κρυπτογράφηση της κυκλοφορίας μεταξύ κοντέινερ χρησιμοποιώντας το NetworkConfig.VpcConfig παράμετρος αιτήματος του CreateProcessingJob API. Παρέχουμε παραδείγματα αυτής της διαμόρφωσης χρησιμοποιώντας το SageMaker SDK στην επόμενη ενότητα.

PySpark ProcessingStep εντός του SageMaker Pipelines

Για αυτό το παράδειγμα, υποθέτουμε ότι έχετε αναπτύξει το Studio σε ένα ασφαλές περιβάλλον που είναι ήδη διαθέσιμο, συμπεριλαμβανομένων των VPC, των τερματικών σημείων VPC, των ομάδων ασφαλείας, Διαχείριση ταυτότητας και πρόσβασης AWS (IAM) ρόλους και Υπηρεσία διαχείρισης κλειδιών AWS πλήκτρα (AWS KMS). Υποθέτουμε επίσης ότι έχετε δύο κουβάδες: ένα για αντικείμενα όπως ο κώδικας και τα αρχεία καταγραφής και ένα για τα δεδομένα σας. ο basic_infra.yaml αρχείο παρέχει παράδειγμα AWS CloudFormation κώδικα για την παροχή της απαραίτητης προαπαιτούμενης υποδομής. Το παράδειγμα κώδικα και ο οδηγός ανάπτυξης είναι επίσης διαθέσιμος στο GitHub.

Για παράδειγμα, δημιουργήσαμε έναν αγωγό που περιέχει ένα ενιαίο ProcessingStep στο οποίο απλώς διαβάζουμε και γράφουμε το σύνολο δεδομένων abalone χρησιμοποιώντας Spark. Τα δείγματα κώδικα σάς δείχνουν πώς να ρυθμίσετε και να ρυθμίσετε τις παραμέτρους του ProcessingStep.

Καθορίζουμε παραμέτρους για τη διοχέτευση (όνομα, ρόλος, κάδοι κ.λπ.) και ρυθμίσεις για συγκεκριμένα βήματα (τύπος και μέτρηση παρουσίας, έκδοση πλαισίου κ.λπ.). Σε αυτό το παράδειγμα, χρησιμοποιούμε μια ασφαλή εγκατάσταση και ορίζουμε επίσης υποδίκτυα, ομάδες ασφαλείας και κρυπτογράφηση κυκλοφορίας μεταξύ κοντέινερ. Για αυτό το παράδειγμα, χρειάζεστε έναν ρόλο εκτέλεσης διοχέτευσης με πλήρη πρόσβαση στο SageMaker και ένα VPC. Δείτε τον παρακάτω κώδικα:

{ "pipeline_name": "ProcessingPipeline", "trial": "test-blog-post", "pipeline_role": "arn:aws:iam::<ACCOUNT_NUMBER>:role/<PIPELINE_EXECUTION_ROLE_NAME>", "network_subnet_ids": [ "subnet-<SUBNET_ID>", "subnet-<SUBNET_ID>" ], "network_security_group_ids": [ "sg-<SG_ID>" ], "pyspark_process_volume_kms": "arn:aws:kms:<REGION_NAME>:<ACCOUNT_NUMBER>:key/<KMS_KEY_ID>", "pyspark_process_output_kms": "arn:aws:kms:<REGION_NAME>:<ACCOUNT_NUMBER>:key/<KMS_KEY_ID>", "pyspark_helper_code": "s3://<INFRA_S3_BUCKET>/src/helper/data_utils.py", "spark_config_file": "s3://<INFRA_S3_BUCKET>/src/spark_configuration/configuration.json", "pyspark_process_code": "s3://<INFRA_S3_BUCKET>/src/processing/process_pyspark.py", "process_spark_ui_log_output": "s3://<DATA_S3_BUCKET>/spark_ui_logs/{}", "pyspark_framework_version": "2.4", "pyspark_process_name": "pyspark-processing", "pyspark_process_data_input": "s3a://<DATA_S3_BUCKET>/data_input/abalone_data.csv", "pyspark_process_data_output": "s3a://<DATA_S3_BUCKET>/pyspark/data_output", "pyspark_process_instance_type": "ml.m5.4xlarge", "pyspark_process_instance_count": 6, "tags": { "Project": "tag-for-project", "Owner": "tag-for-owner" }
}

Για να δείξουμε, το ακόλουθο παράδειγμα κώδικα εκτελεί ένα σενάριο PySpark στο SageMaker Processing μέσα σε μια διοχέτευση χρησιμοποιώντας το PySparkProcessor:

# import code requirements
# standard libraries import
import logging
import json # sagemaker model import
import sagemaker
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_experiment_config import PipelineExperimentConfig
from sagemaker.workflow.steps import CacheConfig
from sagemaker.processing import ProcessingInput
from sagemaker.workflow.steps import ProcessingStep
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.spark.processing import PySparkProcessor from helpers.infra.networking.networking import get_network_configuration
from helpers.infra.tags.tags import get_tags_input
from helpers.pipeline_utils import get_pipeline_config def create_pipeline(pipeline_params, logger): """ Args: pipeline_params (ml_pipeline.params.pipeline_params.py.Params): pipeline parameters logger (logger): logger Returns: () """ # Create SageMaker Session sagemaker_session = PipelineSession() # Get Tags tags_input = get_tags_input(pipeline_params["tags"]) # get network configuration network_config = get_network_configuration( subnets=pipeline_params["network_subnet_ids"], security_group_ids=pipeline_params["network_security_group_ids"] ) # Get Pipeline Configurations pipeline_config = get_pipeline_config(pipeline_params) # setting processing cache obj logger.info("Setting " + pipeline_params["pyspark_process_name"] + " cache configuration 3 to 30 days") cache_config = CacheConfig(enable_caching=True, expire_after="p30d") # Create PySpark Processing Step logger.info("Creating " + pipeline_params["pyspark_process_name"] + " processor") # setting up spark processor processing_pyspark_processor = PySparkProcessor( base_job_name=pipeline_params["pyspark_process_name"], framework_version=pipeline_params["pyspark_framework_version"], role=pipeline_params["pipeline_role"], instance_count=pipeline_params["pyspark_process_instance_count"], instance_type=pipeline_params["pyspark_process_instance_type"], volume_kms_key=pipeline_params["pyspark_process_volume_kms"], output_kms_key=pipeline_params["pyspark_process_output_kms"], network_config=network_config, tags=tags_input, sagemaker_session=sagemaker_session ) # setting up arguments run_ags = processing_pyspark_processor.run( submit_app=pipeline_params["pyspark_process_code"], submit_py_files=[pipeline_params["pyspark_helper_code"]], arguments=[ # processing input arguments. To add new arguments to this list you need to provide two entrances: # 1st is the argument name preceded by "--" and the 2nd is the argument value # setting up processing arguments "--input_table", pipeline_params["pyspark_process_data_input"], "--output_table", pipeline_params["pyspark_process_data_output"] ], spark_event_logs_s3_uri=pipeline_params["process_spark_ui_log_output"].format(pipeline_params["trial"]), inputs = [ ProcessingInput( source=pipeline_params["spark_config_file"], destination="/opt/ml/processing/input/conf", s3_data_type="S3Prefix", s3_input_mode="File", s3_data_distribution_type="FullyReplicated", s3_compression_type="None" ) ], ) # create step pyspark_processing_step = ProcessingStep( name=pipeline_params["pyspark_process_name"], step_args=run_ags, cache_config=cache_config, ) # Create Pipeline pipeline = Pipeline( name=pipeline_params["pipeline_name"], steps=[ pyspark_processing_step ], pipeline_experiment_config=PipelineExperimentConfig( pipeline_params["pipeline_name"], pipeline_config["trial"] ), sagemaker_session=sagemaker_session ) pipeline.upsert( role_arn=pipeline_params["pipeline_role"], description="Example pipeline", tags=tags_input ) return pipeline def main(): # set up logging logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) logger.info("Get Pipeline Parameter") with open("ml_pipeline/params/pipeline_params.json", "r") as f: pipeline_params = json.load(f) print(pipeline_params) logger.info("Create Pipeline") pipeline = create_pipeline(pipeline_params, logger=logger) logger.info("Execute Pipeline") execution = pipeline.start() return execution if __name__ == "__main__": main()

Όπως φαίνεται στον προηγούμενο κώδικα, αντικαθιστούμε τις προεπιλεγμένες διαμορφώσεις Spark παρέχοντας configuration.json ως ProcessingInput. Χρησιμοποιούμε α configuration.json αρχείο που αποθηκεύτηκε Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) με τις ακόλουθες ρυθμίσεις:

[ { "Classification":"spark-defaults", "Properties":{ "spark.executor.memory":"10g", "spark.executor.memoryOverhead":"5g", "spark.driver.memory":"10g", "spark.driver.memoryOverhead":"10g", "spark.driver.maxResultSize":"10g", "spark.executor.cores":5, "spark.executor.instances":5, "spark.yarn.maxAppAttempts":1 "spark.hadoop.fs.s3a.endpoint":"s3.<region>.amazonaws.com", "spark.sql.parquet.fs.optimized.comitter.optimization-enabled":true } }
]

Μπορούμε να ενημερώσουμε την προεπιλεγμένη διαμόρφωση Spark είτε περνώντας το αρχείο ως α ProcessingInput ή χρησιμοποιώντας το όρισμα διαμόρφωσης κατά την εκτέλεση του run() λειτουργία.

Η διαμόρφωση Spark εξαρτάται από άλλες επιλογές, όπως ο τύπος και ο αριθμός παρουσιών που επιλέγονται για την εργασία επεξεργασίας. Η πρώτη εξέταση είναι ο αριθμός των παρουσιών, οι πυρήνες vCPU που έχει καθεμία από αυτές τις παρουσίες και η μνήμη παρουσιών. Μπορείς να χρησιμοποιήσεις Spark UIs or Μετρήσεις παρουσίας CloudWatch και αρχεία καταγραφής για τη βαθμονόμηση αυτών των τιμών σε πολλαπλές επαναλήψεις εκτέλεσης.

Επιπλέον, οι ρυθμίσεις του εκτελεστή και του προγράμματος οδήγησης μπορούν να βελτιστοποιηθούν ακόμη περισσότερο. Για ένα παράδειγμα του τρόπου υπολογισμού αυτών, ανατρέξτε στο Βέλτιστες πρακτικές για την επιτυχή διαχείριση της μνήμης για εφαρμογές Apache Spark στο Amazon EMR.

Στη συνέχεια, για τις ρυθμίσεις του προγράμματος οδήγησης και του εκτελεστή, συνιστούμε να διερευνήσετε τις ρυθμίσεις του committer για να βελτιώσετε την απόδοση κατά την εγγραφή στο Amazon S3. Στην περίπτωσή μας, γράφουμε αρχεία Parquet στο Amazon S3 και ρυθμίζουμε "spark.sql.parquet.fs.optimized.comitter.optimization-enabled” στο αληθινό.

Εάν χρειάζεται για σύνδεση με το Amazon S3, ένα περιφερειακό τελικό σημείο "spark.hadoop.fs.s3a.endpoint" μπορεί να καθοριστεί μέσα στο αρχείο ρυθμίσεων.

Σε αυτό το παράδειγμα, το σενάριο PySpark spark_process.py (όπως φαίνεται στον παρακάτω κώδικα) φορτώνει ένα αρχείο CSV από το Amazon S3 σε ένα πλαίσιο δεδομένων Spark και αποθηκεύει τα δεδομένα ως Parquet πίσω στο Amazon S3.

Σημειώστε ότι η διαμόρφωση του παραδείγματός μας δεν είναι ανάλογη με τον φόρτο εργασίας, επειδή η ανάγνωση και η εγγραφή του συνόλου δεδομένων abalone θα μπορούσε να γίνει στις προεπιλεγμένες ρυθμίσεις σε μία παρουσία. Οι διαμορφώσεις που αναφέραμε θα πρέπει να ορίζονται με βάση τις συγκεκριμένες ανάγκες σας.

# import requirements
import argparse
import logging
import sys
import os
import pandas as pd # spark imports
from pyspark.sql import SparkSession
from pyspark.sql.functions import (udf, col)
from pyspark.sql.types import StringType, StructField, StructType, FloatType from data_utils import( spark_read_parquet, Unbuffered
) sys.stdout = Unbuffered(sys.stdout) # Define custom handler
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter("%(asctime)s %(message)s"))
logger.addHandler(handler)
logger.setLevel(logging.INFO) def main(data_path): spark = SparkSession.builder.appName("PySparkJob").getOrCreate() spark.sparkContext.setLogLevel("ERROR") schema = StructType( [ StructField("sex", StringType(), True), StructField("length", FloatType(), True), StructField("diameter", FloatType(), True), StructField("height", FloatType(), True), StructField("whole_weight", FloatType(), True), StructField("shucked_weight", FloatType(), True), StructField("viscera_weight", FloatType(), True), StructField("rings", FloatType(), True), ] ) df = spark.read.csv(data_path, header=False, schema=schema) return df.select("sex", "length", "diameter", "rings") if __name__ == "__main__": logger.info(f"===============================================================") logger.info(f"================= Starting pyspark-processing =================") parser = argparse.ArgumentParser(description="app inputs") parser.add_argument("--input_table", type=str, help="path to the channel data") parser.add_argument("--output_table", type=str, help="path to the output data") args = parser.parse_args() df = main(args.input_table) logger.info("Writing transformed data") df.write.csv(os.path.join(args.output_table, "transformed.csv"), header=True, mode="overwrite") # save data df.coalesce(10).write.mode("overwrite").parquet(args.output_table) logger.info(f"================== Ending pyspark-processing ==================") logger.info(f"===============================================================")

Για να βουτήξετε στη βελτιστοποίηση εργασιών επεξεργασίας Spark, μπορείτε να χρησιμοποιήσετε τα αρχεία καταγραφής του CloudWatch καθώς και τη διεπαφή χρήστη Spark. Μπορείτε να δημιουργήσετε το Spark UI εκτελώντας μια εργασία Επεξεργασίας σε μια παρουσία φορητού υπολογιστή SageMaker. Μπορείτε να δείτε το Spark UI για τις εργασίες Επεξεργασίας που εκτελούνται εντός ενός αγωγού by εκτέλεση του διακομιστή ιστορικού σε μια παρουσία φορητού υπολογιστή SageMaker, εάν τα αρχεία καταγραφής του Spark UI είχαν αποθηκευτεί στην ίδια τοποθεσία του Amazon S3.

εκκαθάριση

Εάν ακολουθήσατε τον οδηγό, είναι καλή πρακτική να διαγράψετε πόρους που δεν χρησιμοποιούνται πλέον για να σταματήσουν να επιβαρύνονται με χρεώσεις. Σιγουρέψου ότι διαγράψτε τη στοίβα CloudFormation που χρησιμοποιήσατε για να δημιουργήσετε τους πόρους σας. Αυτό θα διαγράψει τη στοίβα που δημιουργήθηκε καθώς και τους πόρους που δημιούργησε.

Συμπέρασμα

Σε αυτήν την ανάρτηση, δείξαμε πώς να εκτελέσετε μια ασφαλή εργασία Επεξεργασίας SageMaker χρησιμοποιώντας το PySpark εντός του SageMaker Pipelines. Επίσης, δείξαμε πώς να βελτιστοποιήσετε το PySpark χρησιμοποιώντας διαμορφώσεις Spark και να ρυθμίσετε την εργασία Επεξεργασίας ώστε να εκτελείται σε μια ασφαλή διαμόρφωση δικτύου.

Ως επόμενο βήμα, εξερευνήστε πώς να αυτοματοποιήσετε ολόκληρο τον κύκλο ζωής του μοντέλου και πώς οι πελάτες κατασκεύασαν ασφαλείς και επεκτάσιμες πλατφόρμες MLOps χρησιμοποιώντας τις υπηρεσίες SageMaker.


Σχετικά με τους Συγγραφείς

Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Μάρεν Σάιλμαν είναι Επιστήμονας Δεδομένων στο Επαγγελματικές υπηρεσίες AWS. Συνεργάζεται με πελάτες σε διάφορες βιομηχανίες αποκαλύπτοντας τη δύναμη του AI/ML για να επιτύχουν τα επιχειρηματικά τους αποτελέσματα. Η Maren είναι στο AWS από τον Νοέμβριο του 2019. Στον ελεύθερο χρόνο της, της αρέσει το kickboxing, η πεζοπορία σε υπέροχη θέα και οι βραδιές επιτραπέζιων παιχνιδιών.


Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Maira Ladeira Tanke
είναι ειδικός ML στην AWS. Με υπόβαθρο στην επιστήμη δεδομένων, έχει 9 χρόνια εμπειρίας στην αρχιτεκτονική και την κατασκευή εφαρμογών ML με πελάτες σε διάφορους κλάδους. Ως τεχνική επικεφαλής, βοηθά τους πελάτες να επιταχύνουν την επίτευξη επιχειρηματικής αξίας μέσω αναδυόμενων τεχνολογιών και καινοτόμων λύσεων. Στον ελεύθερο χρόνο της, η Maira απολαμβάνει να ταξιδεύει και να περνά χρόνο με την οικογένειά της κάπου ζεστά.


Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Πολίν Τινγκ
είναι Επιστήμονας Δεδομένων στο Επαγγελματικές υπηρεσίες AWS ομάδα. Υποστηρίζει τους πελάτες να επιτύχουν και να επιταχύνουν τα επιχειρηματικά τους αποτελέσματα αναπτύσσοντας λύσεις AI/ML. Στον ελεύθερο χρόνο της, η Pauline απολαμβάνει τα ταξίδια, το σερφ και τη δοκιμή νέων επιδορπίων.


Εκτελέστε εργασίες ασφαλούς επεξεργασίας χρησιμοποιώντας το PySpark στο Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Ντόναλντ Φοσούο
είναι Sr Data Architect στο Επαγγελματικές υπηρεσίες AWS ομάδα, που συνεργάζεται κυρίως με την Global Finance Service. Συνεργάζεται με τους πελάτες για να δημιουργήσει καινοτόμες λύσεις που αντιμετωπίζουν επιχειρηματικά προβλήματα πελατών και επιταχύνουν την υιοθέτηση των υπηρεσιών AWS. Στον ελεύθερο χρόνο του, ο Ντόναλντ του αρέσει να διαβάζει, να τρέχει και να ταξιδεύει.

Σφραγίδα ώρας:

Περισσότερα από Μηχανική εκμάθηση AWS