Αναπτύξτε μοντέλα Amazon SageMaker Autopilot σε τερματικά σημεία συμπερασμάτων χωρίς διακομιστή PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Αναπτύξτε μοντέλα Amazon SageMaker Autopilot σε τελικά σημεία συμπερασμάτων χωρίς διακομιστή

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

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

Συμπεράσματα χωρίς διακομιστή Amazon SageMaker είναι μια στοχευμένη επιλογή συμπερασμάτων ιδανική για φόρτους εργασίας με απρόβλεπτα μοτίβα κυκλοφορίας και που μπορεί να ανεχθεί ψυχρές εκκινήσεις. Σε αντίθεση με ένα τελικό σημείο συμπερασμάτων σε πραγματικό χρόνο, το οποίο υποστηρίζεται από μια μακροχρόνια παρουσία υπολογιστών, τα τελικά σημεία χωρίς διακομιστή παρέχουν πόρους κατ' απαίτηση με ενσωματωμένη αυτόματη κλιμάκωση. Τα τελικά σημεία χωρίς διακομιστή κλιμακώνονται αυτόματα με βάση τον αριθμό των εισερχόμενων αιτημάτων και μειώνουν τους πόρους στο μηδέν όταν δεν υπάρχουν εισερχόμενα αιτήματα, βοηθώντας σας να ελαχιστοποιήσετε το κόστος σας.

Σε αυτήν την ανάρτηση, δείχνουμε πώς να αναπτύξετε μοντέλα που έχουν εκπαιδευτεί σε αυτόματο πιλότο σε τελικά σημεία συμπερασμάτων χωρίς διακομιστή χρησιμοποιώντας το Βιβλιοθήκες Boto3 for Amazon Sage Maker.

Τρόποι εκπαίδευσης αυτόματου πιλότου

Πριν δημιουργήσετε ένα πείραμα Αυτόματου πιλότου, μπορείτε είτε να αφήσετε τον Αυτόματο πιλότο να επιλέξει τη λειτουργία εκπαίδευσης αυτόματα είτε να επιλέξετε τη λειτουργία εκπαίδευσης με μη αυτόματο τρόπο.

Ο αυτόματος πιλότος υποστηρίζει επί του παρόντος τρεις τρόπους εκπαίδευσης:

  • AUTO – Με βάση το μέγεθος δεδομένων, ο Αυτόματος πιλότος επιλέγει αυτόματα είτε τη λειτουργία συνόλου είτε HPO. Για σύνολα δεδομένων μεγαλύτερα από 100 MB, ο Autopilot επιλέγει HPO. διαφορετικά, επιλέγει το ensembling.
  • Συναρμολόγηση – Ο αυτόματος πιλότος χρησιμοποιεί το AutoGluon τεχνική συνόλου χρησιμοποιώντας στοίβαξη μοντέλων και παράγει ένα βέλτιστο μοντέλο πρόβλεψης.
  • Βελτιστοποίηση υπερπαραμέτρων (HPO) – Ο Αυτόματος πιλότος βρίσκει την καλύτερη έκδοση ενός μοντέλου ρυθμίζοντας υπερπαραμέτρους χρησιμοποιώντας βελτιστοποίηση Bayesian ή βελτιστοποίηση πολλαπλής πιστότητας κατά την εκτέλεση εργασιών εκπαίδευσης στο σύνολο δεδομένων σας. Η λειτουργία HPO επιλέγει τους αλγόριθμους που σχετίζονται περισσότερο με το σύνολο δεδομένων σας και επιλέγει το καλύτερο εύρος υπερπαραμέτρων για να συντονίσετε τα μοντέλα σας.

Για να μάθετε περισσότερα σχετικά με τις λειτουργίες εκπαίδευσης αυτόματου πιλότου, ανατρέξτε στο Τρόποι προπόνησης.

Επισκόπηση λύσεων

Σε αυτήν την ανάρτηση, χρησιμοποιούμε το UCI Bank Marketing σύνολο δεδομένων για να προβλέψει εάν ένας πελάτης θα εγγραφεί σε μια προθεσμιακή κατάθεση που προσφέρει η τράπεζα. Αυτός είναι ένας τύπος προβλήματος δυαδικής ταξινόμησης.

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

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

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

Μπορούμε επίσης να ξεκινήσουμε εργασίες Αυτόματου πιλότου από το Στούντιο Amazon SageMaker UI. Εάν εκκινείτε εργασίες από τη διεπαφή χρήστη, βεβαιωθείτε ότι έχετε απενεργοποιήσει το Αυτόματη ανάπτυξη επιλογή του Ανάπτυξη και Προηγμένες ρυθμίσεις Ενότητα. Διαφορετικά, ο Autopilot θα αναπτύξει τον καλύτερο υποψήφιο σε ένα τελικό σημείο σε πραγματικό χρόνο.

Προϋποθέσεις

Βεβαιωθείτε ότι έχετε εγκαταστήσει την πιο πρόσφατη έκδοση του Boto3 και τα πακέτα SageMaker Python:

pip install -U boto3 sagemaker

Χρειαζόμαστε την έκδοση πακέτου SageMaker >= 2.110.0 και έκδοση Boto3 >= boto3-1.24.84.

Εκκινήστε μια εργασία Αυτόματου πιλότου με λειτουργία συναρμολόγησης

Για να ξεκινήσουμε μια εργασία Αυτόματου πιλότου χρησιμοποιώντας τις βιβλιοθήκες SageMaker Boto3, χρησιμοποιούμε το create_auto_ml_job API. Μετά περνάμε μέσα AutoMLJobConfig, InputDataConfig, να AutoMLJobObjective ως εισροές στο create_auto_ml_job. Δείτε τον ακόλουθο κώδικα:

bucket = session.default_bucket()
role = sagemaker.get_execution_role()
prefix = "autopilot/bankadditional"
sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

timestamp_suffix = strftime('%d%b%Y-%H%M%S', gmtime())
automl_job_name = f"uci-bank-marketing-{timestamp_suffix}"
max_job_runtime_seconds = 3600
max_runtime_per_job_seconds = 1200
target_column = "y"
problem_type="BinaryClassification"
objective_metric = "F1"
training_mode = "ENSEMBLING"

automl_job_config = {
    'CompletionCriteria': {
      'MaxRuntimePerTrainingJobInSeconds': max_runtime_per_job_seconds,
      'MaxAutoMLJobRuntimeInSeconds': max_job_runtime_seconds
    },    
    "Mode" : training_mode
}

automl_job_objective= { "MetricName": objective_metric }

input_data_config = [
    {
      'DataSource': {
        'S3DataSource': {
          'S3DataType': 'S3Prefix',
          'S3Uri': f's3://{bucket}/{prefix}/raw/bank-additional-full.csv'
        }
      },
      'TargetAttributeName': target_column
    }
  ]

output_data_config = {
	    'S3OutputPath': f's3://{bucket}/{prefix}/output'
	}


sm_client.create_auto_ml_job(
				AutoMLJobName=auto_ml_job_name,
				InputDataConfig=input_data_config,
				OutputDataConfig=output_data_config,
				AutoMLJobConfig=automl_job_config,
				ProblemType=problem_type,
				AutoMLJobObjective=automl_job_objective,
				RoleArn=role)

Ο αυτόματος πιλότος επιστρέφει το BestCandidate μοντέλο αντικειμένου που έχει το InferenceContainers απαιτείται για την ανάπτυξη των μοντέλων για εξαγωγή συμπερασμάτων. Για να πάρετε το BestCandidate για την προηγούμενη εργασία, χρησιμοποιούμε το describe_automl_job λειτουργία:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_container = job_response['BestCandidate']['InferenceContainers'][0]
print(inference_container)

Αναπτύξτε το εκπαιδευμένο μοντέλο

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

Σας προτείνουμε να επιλέξετε το δικό σας μέγεθος μνήμης τελικού σημείου ανάλογα με το μέγεθος του μοντέλου σας. Το μέγεθος της μνήμης πρέπει να είναι τουλάχιστον τόσο μεγάλο όσο το μέγεθος του μοντέλου σας. Το τελικό σημείο χωρίς διακομιστή έχει ελάχιστο μέγεθος RAM 1024 MB (1 GB) και το μέγιστο μέγεθος RAM που μπορείτε να επιλέξετε είναι 6144 MB (6 GB).

Τα μεγέθη μνήμης που μπορείτε να επιλέξετε είναι 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB ή 6144 MB.

Για να προσδιορίσετε εάν ένα τελικό σημείο χωρίς διακομιστή είναι η σωστή επιλογή ανάπτυξης από άποψη κόστους και απόδοσης, σας ενθαρρύνουμε να ανατρέξετε στο SageMaker Serverless Inference Benchmarking Toolkit, το οποίο δοκιμάζει διαφορετικές διαμορφώσεις τελικού σημείου και συγκρίνει την πιο βέλτιστη με μια συγκρίσιμη παρουσία φιλοξενίας σε πραγματικό χρόνο.

Σημειώστε ότι αποδέχονται μόνο τελικά σημεία χωρίς διακομιστή SingleModel για δοχεία συμπερασμάτων. Ο αυτόματος πιλότος σε λειτουργία συνόλου δημιουργεί ένα μόνο μοντέλο, ώστε να μπορούμε να αναπτύξουμε αυτό το κοντέινερ μοντέλου ως έχει στο τελικό σημείο. Δείτε τον παρακάτω κώδικα:

# Create Model
	model_response = sm_client.create_model(
				ModelName=model_name,
				ExecutionRoleArn=role,
				Containers=[inference_container]
	)

# Create Endpoint Config
	epc_response = sm_client.create_endpoint_config(
		EndpointConfigName = endpoint_config_name,
		ProductionVariants=[
			{
				"ModelName": model_name,
				"VariantName": "AllTraffic",
				"ServerlessConfig": {
					"MemorySizeInMB": memory,
					"MaxConcurrency": max_concurrency
				}
			}
		]
	)

# Create Endpoint
	ep_response = sm_client.create_endpoint(
		EndpointName=endpoint_name,
		EndpointConfigName=endpoint_config_name
	)

Όταν το τελικό σημείο συμπερασμάτων χωρίς διακομιστή είναι InService, μπορούμε να ελέγξουμε το τελικό σημείο στέλνοντας ένα αίτημα συμπερασμάτων και να παρατηρήσουμε τις προβλέψεις. Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική αυτής της εγκατάστασης.

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

Αποστολή αιτήματος συμπερασμάτων στο εκπαιδευμένο μοντέλο

Χρησιμοποιήστε τον ακόλουθο κώδικα για να στείλετε συμπεράσματα σχετικά με το μοντέλο σας που έχει εκπαιδευτεί με τη χρήση συνόλου:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer


payload = "34,blue-collar,married,basic.4y,no,no,no,telephone,may,tue,800,4,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0"

predictor = Predictor(
        endpoint_name=endpoint,
        sagmaker_session=session,
        serializer=CSVSerializer(),
    )

prediction = predictor.predict(payload).decode(‘utf-8’)
print(prediction)

Εκκινήστε μια εργασία αυτόματου πιλότου με λειτουργία HPO

Σε λειτουργία HPO, για CompletionCriteria, εκτός MaxRuntimePerTrainingJobInSeconds και MaxAutoMLJobRuntimeInSeconds, θα μπορούσαμε επίσης να προσδιορίσουμε το MaxCandidates για να περιορίσετε τον αριθμό των υποψηφίων που θα δημιουργήσει μια εργασία Αυτόματου πιλότου. Σημειώστε ότι αυτές είναι προαιρετικές παράμετροι και έχουν ρυθμιστεί μόνο για να περιορίζουν τον χρόνο εκτέλεσης της εργασίας για επίδειξη. Δείτε τον παρακάτω κώδικα:

training_mode = "HYPERPARAMETER_TUNING"

automl_job_config["Mode"] = training_mode
automl_job_config["CompletionCriteria"]["MaxCandidates"] = 15
hpo_automl_job_name =  f"{model_prefix}-HPO-{timestamp_suffix}"

response = sm_client.create_auto_ml_job(
					  AutoMLJobName=hpo_automl_job_name,
					  InputDataConfig=input_data_config,
					  OutputDataConfig=output_data_config,
					  AutoMLJobConfig=automl_job_config,
					  ProblemType=problem_type,
					  AutoMLJobObjective=automl_job_objective,
					  RoleArn=role,
					  Tags=tags_config
				)

Για να πάρετε το BestCandidate για την προηγούμενη εργασία, μπορούμε να χρησιμοποιήσουμε ξανά το describe_automl_job λειτουργία:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_containers = job_response['BestCandidate']['InferenceContainers']
print(inference_containers)

Αναπτύξτε το εκπαιδευμένο μοντέλο

Ο αυτόματος πιλότος σε λειτουργία HPO για τον τύπο προβλήματος ταξινόμησης δημιουργεί τρία δοχεία συμπερασμάτων.

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

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

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική αυτής της εγκατάστασης. διάγραμμα που απεικονίζει το μοντέλο αυτόματου πιλότου σε λειτουργία HPO που έχει αναπτυχθεί σε τρία τελικά σημεία χωρίς διακομιστή

Εξάγουμε τα τρία δοχεία συμπερασμάτων από το BestCandidate με τον ακόλουθο κώδικα:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
inference_containers = job_response['BestCandidate']['InferenceContainers']

models = list()
endpoint_configs = list()
endpoints = list()

# For brevity, we've encapsulated create_model, create endpoint_config and create_endpoint as helper functions
for idx, container in enumerate(inference_containers):
    (status, model_arn) = create_autopilot_model(
								    sm_client,
								    automl_job_name,
            						role,
								    container,
								    idx)
    model_name = model_arn.split('/')[1]
    models.append(model_name)

    endpoint_config_name = f"epc-{model_name}"
    endpoint_name = f"ep-{model_name}"
    (status, epc_arn) = create_serverless_endpoint_config(
								    sm_client,
								    endpoint_config_name,
								    model_name,
            						memory=2048,
								    max_concurrency=10)
	endpoint_configs.append(endpoint_config_name)

	response = create_serverless_endpoint(
								    sm_client,
								    endpoint_name,
								    endpoint_config_name)
	endpoints.append(endpoint_name)

Αποστολή αιτήματος συμπερασμάτων στο εκπαιδευμένο μοντέλο

Για συμπέρασμα, στέλνουμε το ωφέλιμο φορτίο με τη σειρά: πρώτα στο κοντέινερ μετασχηματισμού χαρακτηριστικών, μετά στο κοντέινερ μοντέλου και τέλος στο δοχείο μετασχηματισμού αντίστροφης ετικέτας.

οπτική ροή αιτήματος συμπερασμάτων τριών δοχείων συμπερασμάτων από τη λειτουργία HPO

Δείτε τον ακόλουθο κώδικα:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer

payload = "51,technician,married,professional.course,no,yes,no,cellular,apr,thu,687,1,0,1,success,-1.8,93.075,-47.1,1.365,5099.1"


for _, endpoint in enumerate(endpoints):
    try:
        print(f"payload: {payload}")
        predictor = Predictor(
            endpoint_name=endpoint,
            sagemaker_session=session,
            serializer=CSVSerializer(),
        )
        prediction = predictor.predict(payload)
        payload=prediction
    except Exception as e:
        print(f"Error invoking Endpoint; {endpoint} n {e}")
        break

Η πλήρης υλοποίηση αυτού του παραδείγματος είναι διαθέσιμη στο παρακάτω jupyter σημειωματάριο.

εκκαθάριση

Για να καθαρίσετε πόρους, μπορείτε να διαγράψετε τα δημιουργημένα τελικά σημεία χωρίς διακομιστή, τις παραμέτρους τελικών σημείων και τα μοντέλα:

sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

for _, endpoint in enumerate(endpoints):
    try:
        sm_client.delete_endpoint(EndpointName=endpoint)
    except Exception as e:
        print(f"Exception:n{e}")
        continue
        
for _, endpoint_config in enumerate(endpoint_configs):
    try:
        sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

for _, autopilot_model in enumerate(models):
    try:
        sm_client.delete_model(ModelName=autopilot_model)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

Συμπέρασμα

Σε αυτήν την ανάρτηση, δείξαμε πώς μπορούμε να αναπτύξουμε μοντέλα που δημιουργούνται από τον αυτόματο πιλότο τόσο σε λειτουργίες συνόλου όσο και σε λειτουργίες HPO σε τελικά σημεία συμπερασμάτων χωρίς διακομιστή. Αυτή η λύση μπορεί να επιταχύνει την ικανότητά σας να χρησιμοποιείτε και να εκμεταλλεύεστε οικονομικά αποδοτικές και πλήρως διαχειριζόμενες υπηρεσίες ML, όπως το Autopilot, για τη γρήγορη δημιουργία μοντέλων από ανεπεξέργαστα δεδομένα και, στη συνέχεια, την ανάπτυξη τους σε πλήρως διαχειριζόμενα τελικά σημεία συμπερασμάτων χωρίς διακομιστή με ενσωματωμένη αυτόματη κλιμάκωση για μείωση του κόστους .

Σας συνιστούμε να δοκιμάσετε αυτήν τη λύση με ένα σύνολο δεδομένων που σχετίζεται με τους KPI της επιχείρησής σας. Μπορείτε να ανατρέξετε στη λύση που εφαρμόστηκε σε ένα σημειωματάριο Jupyter στο GitHub repo.

Πρόσθετες παραπομπές


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

Αναπτύξτε μοντέλα Amazon SageMaker Autopilot σε τερματικά σημεία συμπερασμάτων χωρίς διακομιστή PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Praveen Chamarthi είναι Ανώτερος Ειδικός AI/ML με τις υπηρεσίες Web της Amazon. Είναι παθιασμένος με το AI/ML και όλα τα πράγματα AWS. Βοηθά τους πελάτες σε όλη την Αμερική να κλιμακώσουν, να καινοτομήσουν και να χειριστούν αποτελεσματικά τους φόρτους εργασίας ML στο AWS. Στον ελεύθερο χρόνο του, ο Praveen λατρεύει να διαβάζει και απολαμβάνει ταινίες επιστημονικής φαντασίας.

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

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

Εκτελέστε πολλαπλά μοντέλα παραγωγής τεχνητής νοημοσύνης σε GPU χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το TorchServe και εξοικονομήστε έως και 75% σε κόστος συμπερασμάτων | Υπηρεσίες Ιστού της Amazon

Κόμβος πηγής: 1887176
Σφραγίδα ώρας: 6 Σεπτεμβρίου 2023