Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού της Amazon

Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού της Amazon

Η επιτυχία των παραγωγικών εφαρμογών τεχνητής νοημοσύνης σε ένα ευρύ φάσμα βιομηχανιών έχει προσελκύσει την προσοχή και το ενδιαφέρον εταιρειών παγκοσμίως που θέλουν να αναπαράγουν και να ξεπεράσουν τα επιτεύγματα των ανταγωνιστών ή να λύσουν νέες και συναρπαστικές περιπτώσεις χρήσης. Αυτοί οι πελάτες αναζητούν μοντέλα θεμελίωσης, όπως το TII Falcon, το Stable Diffusion XL ή το GPT-3.5 του OpenAI, ως τους κινητήρες που τροφοδοτούν τη γενετική καινοτομία τεχνητής νοημοσύνης.

Τα βασικά μοντέλα είναι μια κατηγορία παραγωγικών μοντέλων τεχνητής νοημοσύνης που είναι ικανά να κατανοούν και να δημιουργούν περιεχόμενο παρόμοιο με τον άνθρωπο, χάρη στις τεράστιες ποσότητες μη δομημένων δεδομένων στα οποία έχουν εκπαιδευτεί. Αυτά τα μοντέλα έχουν φέρει επανάσταση σε διάφορες εργασίες υπολογιστικής όρασης (CV) και επεξεργασίας φυσικής γλώσσας (NLP), συμπεριλαμβανομένης της δημιουργίας εικόνων, της μετάφρασης και της απάντησης ερωτήσεων. Χρησιμεύουν ως δομικά στοιχεία για πολλές εφαρμογές τεχνητής νοημοσύνης και έχουν γίνει ένα κρίσιμο συστατικό στην ανάπτυξη προηγμένων ευφυών συστημάτων.

Ωστόσο, η ανάπτυξη μοντέλων θεμελίωσης μπορεί να συνοδεύεται από σημαντικές προκλήσεις, ιδιαίτερα όσον αφορά το κόστος και τις απαιτήσεις πόρων. Αυτά τα μοντέλα είναι γνωστά για το μέγεθός τους, που συχνά κυμαίνεται από εκατοντάδες εκατομμύρια έως δισεκατομμύρια παραμέτρους. Το μεγάλο τους μέγεθος απαιτεί εκτεταμένους υπολογιστικούς πόρους, συμπεριλαμβανομένου ισχυρού υλικού και σημαντικής χωρητικότητας μνήμης. Στην πραγματικότητα, η ανάπτυξη μοντέλων θεμελίωσης απαιτεί συνήθως τουλάχιστον μία (συχνά περισσότερες) GPU για τον αποτελεσματικό χειρισμό του υπολογιστικού φορτίου. Για παράδειγμα, το μοντέλο TII Falcon-40B Instruct απαιτεί τουλάχιστον ένα στιγμιότυπο ml.g5.12xlarge για να φορτωθεί με επιτυχία στη μνήμη, αλλά έχει καλύτερη απόδοση με μεγαλύτερες παρουσίες. Ως αποτέλεσμα, η απόδοση επένδυσης (ROI) από την ανάπτυξη και τη διατήρηση αυτών των μοντέλων μπορεί να είναι πολύ χαμηλή για να αποδειχθεί η επιχειρηματική αξία, ειδικά κατά τη διάρκεια κύκλων ανάπτυξης ή για αιχμηρό φόρτο εργασίας. Αυτό οφείλεται στο λειτουργικό κόστος της ύπαρξης παρουσιών με GPU για μεγάλες περιόδους σύνδεσης, πιθανώς 24/7.

Νωρίτερα φέτος, ανακοινώσαμε Θεμέλιο του Αμαζονίου, ένα API χωρίς διακομιστές για πρόσβαση σε μοντέλα θεμελίωσης από την Amazon και τους συνεργάτες μας για τη δημιουργία τεχνητής νοημοσύνης. Αν και αυτή τη στιγμή βρίσκεται σε Private Preview, το API χωρίς διακομιστή σάς επιτρέπει να χρησιμοποιείτε μοντέλα θεμελίωσης από τα Amazon, Anthropic, Stability AI και AI21, χωρίς να χρειάζεται να αναπτύξετε μόνοι σας τελικά σημεία. Ωστόσο, τα μοντέλα ανοιχτού κώδικα από κοινότητες όπως το Hugging Face έχουν αυξηθεί πολύ και δεν είναι όλα διαθέσιμα μέσω του Amazon Bedrock.

Σε αυτήν την ανάρτηση, στοχεύουμε αυτές τις καταστάσεις και λύνουμε το πρόβλημα του κινδύνου υψηλού κόστους αναπτύσσοντας μεγάλα μοντέλα θεμελίωσης σε Amazon Sage Maker ασύγχρονα τελικά σημεία από Amazon SageMaker JumpStart. Αυτό μπορεί να συμβάλει στη μείωση του κόστους της αρχιτεκτονικής, επιτρέποντας στο τελικό σημείο να εκτελείται μόνο όταν τα αιτήματα βρίσκονται στην ουρά και για ένα μικρό χρονικό διάστημα, ενώ η κλιμάκωση μειώνεται στο μηδέν όταν δεν περιμένουν αιτήματα για εξυπηρέτηση. Αυτό ακούγεται υπέροχο για πολλές περιπτώσεις χρήσης. Ωστόσο, ένα τελικό σημείο που έχει μειωθεί στο μηδέν θα εισάγει έναν ψυχρό χρόνο έναρξης πριν μπορέσει να εξυπηρετήσει συμπεράσματα.

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

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεών μας.

Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Η αρχιτεκτονική που αναπτύσσουμε είναι πολύ απλή:

  • Η διεπαφή χρήστη είναι ένα σημειωματάριο, το οποίο μπορεί να αντικατασταθεί από μια διεπαφή ιστού που βασίζεται σε τεχνολογία Streamlit ή παρόμοια. Στην περίπτωσή μας, το σημειωματάριο είναι ένα Στούντιο Amazon SageMaker σημειωματάριο, που εκτελείται σε μια παρουσία ml.m5.large με τον πυρήνα της CPU PyTorch 2.0 Python 3.10.
  • Το σημειωματάριο ερωτά το τελικό σημείο με τρεις τρόπους: το SageMaker Python SDK, το AWS SDK για Python (Boto3) και το LangChain.
  • Το τελικό σημείο εκτελείται ασύγχρονα στο SageMaker και στο τελικό σημείο, αναπτύσσουμε το μοντέλο Falcon-40B Instruct. Αυτήν τη στιγμή είναι η τελευταία λέξη της τεχνολογίας όσον αφορά τα μοντέλα οδηγιών και διατίθεται στο SageMaker JumpStart. Μια μεμονωμένη κλήση API μας επιτρέπει να αναπτύξουμε το μοντέλο στο τελικό σημείο.

Τι είναι το ασύγχρονο συμπέρασμα του SageMaker

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

Το ασύγχρονο συμπέρασμα του SageMaker θέτει σε ουρά εισερχόμενα αιτήματα και τα επεξεργάζεται ασύγχρονα, καθιστώντας αυτή την επιλογή ιδανική για αιτήματα με μεγάλα μεγέθη ωφέλιμου φορτίου έως 1 GB, μεγάλους χρόνους επεξεργασίας και απαιτήσεις καθυστέρησης σχεδόν σε πραγματικό χρόνο. Ωστόσο, το κύριο πλεονέκτημα που παρέχει όταν ασχολούμαστε με μεγάλα μοντέλα θεμελίωσης, ειδικά κατά τη διάρκεια μιας απόδειξης της ιδέας (POC) ή κατά την ανάπτυξη, είναι η δυνατότητα διαμόρφωσης ασύγχρονων συμπερασμάτων ώστε να κλιμακώνονται σε πλήθος παρουσιών μηδέν όταν δεν υπάρχουν αιτήματα για διαδικασία, εξοικονομώντας έτσι κόστος. Για περισσότερες πληροφορίες σχετικά με το ασύγχρονο συμπέρασμα του SageMaker, ανατρέξτε στο Ασύγχρονη συναγωγή. Το παρακάτω διάγραμμα απεικονίζει αυτήν την αρχιτεκτονική.

Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Για να αναπτύξετε ένα ασύγχρονο τελικό σημείο συμπερασμάτων, πρέπει να δημιουργήσετε ένα AsyncInferenceConfig αντικείμενο. Αν δημιουργήσετε AsyncInferenceConfig χωρίς να προσδιορίζονται τα ορίσματά του, η προεπιλογή S3OutputPath θα είναι s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-outputs/{UNIQUE-JOB-NAME} και S3FailurePath θα είναι s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-failures/{UNIQUE-JOB-NAME}.

Τι είναι το SageMaker JumpStart

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

Το παρακάτω στιγμιότυπο οθόνης δείχνει ένα παράδειγμα μερικών μόνο από τα μοντέλα που είναι διαθέσιμα στο SageMaker JumpStart UI.

Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Αναπτύξτε το μοντέλο

Το πρώτο μας βήμα είναι να αναπτύξουμε το μοντέλο στο SageMaker. Για να το κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε τη διεπαφή χρήστη για το SageMaker JumpStart ή το SageMaker Python SDK, το οποίο παρέχει ένα API που μπορούμε να χρησιμοποιήσουμε για να αναπτύξουμε το μοντέλο στο ασύγχρονο τελικό σημείο:

%%time
from sagemaker.jumpstart.model import JumpStartModel, AsyncInferenceConfig
from sagemaker.serializers import JSONSerializer
from sagemaker.deserializers import JSONDeserializer model_id, model_version = "huggingface-llm-falcon-40b-instruct-bf16", "*"
my_model = JumpStartModel(model_id=model_id)
predictor = my_model.deploy( initial_instance_count=0, instance_type="ml.g5.12xlarge", async_inference_config=AsyncInferenceConfig()
)

Αυτή η κλήση μπορεί να διαρκέσει περίπου 10 λεπτά για να ολοκληρωθεί. Κατά τη διάρκεια αυτής της περιόδου, το τελικό σημείο περιστρέφεται, το κοντέινερ μαζί με τα τεχνουργήματα του μοντέλου μεταφορτώνονται στο τελικό σημείο, η διαμόρφωση του μοντέλου φορτώνεται από το SageMaker JumpStart και, στη συνέχεια, το ασύγχρονο τελικό σημείο εκτίθεται μέσω ενός τερματικού σημείου DNS. Για να βεβαιωθούμε ότι το τελικό μας σημείο μπορεί να μειωθεί στο μηδέν, πρέπει να διαμορφώσουμε την αυτόματη κλιμάκωση στο ασύγχρονο τελικό σημείο χρησιμοποιώντας την Αυτόματη κλίμακα εφαρμογής. Πρέπει πρώτα να καταχωρήσετε την παραλλαγή του τελικού σημείου σας με την Αυτόματη Κλιμάκωση Εφαρμογών, να ορίσετε μια πολιτική κλιμάκωσης και, στη συνέχεια, να εφαρμόσετε την πολιτική κλιμάκωσης. Σε αυτήν τη διαμόρφωση, χρησιμοποιούμε μια προσαρμοσμένη μέτρηση χρησιμοποιώντας CustomizedMetricSpecification, Που ονομάζεται ApproximateBacklogSizePerInstance, όπως φαίνεται στον παρακάτω κώδικα. Για μια λεπτομερή λίστα των amazoncloudwatch μετρήσεις διαθέσιμες με το ασύγχρονο τελικό σημείο συμπερασμάτων σας, ανατρέξτε στο Παρακολούθηση με το CloudWatch.

import boto3 client = boto3.client("application-autoscaling")
resource_id = "endpoint/" + my_model.endpoint_name + "/variant/" + "AllTraffic" # Configure Autoscaling on asynchronous endpoint down to zero instances
response = client.register_scalable_target( ServiceNamespace="sagemaker", ResourceId=resource_id, ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=0, # Miminum number of instances we want to scale down to - scale down to 0 to stop incurring in costs MaxCapacity=1, # Maximum number of instances we want to scale up to - scale up to 1 max is good enough for dev
) response = client.put_scaling_policy( PolicyName="Invocations-ScalingPolicy", ServiceNamespace="sagemaker", # The namespace of the AWS service that provides the resource. ResourceId=resource_id, # Endpoint name ScalableDimension="sagemaker:variant:DesiredInstanceCount", # SageMaker supports only Instance Count PolicyType="TargetTrackingScaling", # 'StepScaling'|'TargetTrackingScaling' TargetTrackingScalingPolicyConfiguration={ "TargetValue": 5.0, # The target value for the metric. - here the metric is - SageMakerVariantInvocationsPerInstance "CustomizedMetricSpecification": { "MetricName": "ApproximateBacklogSizePerInstance", "Namespace": "AWS/SageMaker", "Dimensions": [{"Name": "EndpointName", "Value": my_model.endpoint_name}], "Statistic": "Average", }, "ScaleInCooldown": 600, # The amount of time, in seconds, after a scale in activity completes before another scale in activity can start. "ScaleOutCooldown": 300, # ScaleOutCooldown - The amount of time, in seconds, after a scale out activity completes before another scale out activity can start. # 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled. # If the value is true, scale in is disabled and the target tracking policy won't remove capacity from the scalable resource. },
)

Μπορείτε να επαληθεύσετε ότι αυτή η πολιτική έχει οριστεί με επιτυχία μεταβαίνοντας στην κονσόλα SageMaker, επιλέγοντας Τελικά σημεία υπό Συμπέρασμα στο παράθυρο πλοήγησης και αναζητούμε το τελικό σημείο που μόλις αναπτύξαμε.

Βελτιστοποιήστε το κόστος ανάπτυξης των μοντέλων θεμελίωσης Amazon SageMaker JumpStart με ασύγχρονα τελικά σημεία του Amazon SageMaker | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Επικαλέστε το ασύγχρονο τελικό σημείο

Για να καλέσετε το τελικό σημείο, πρέπει να τοποθετήσετε το ωφέλιμο φορτίο αιτήματος Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) και παρέχετε έναν δείκτη σε αυτό το ωφέλιμο φορτίο ως μέρος του InvokeEndpointAsync αίτηση. Μετά την κλήση, το SageMaker θέτει σε ουρά το αίτημα για επεξεργασία και επιστρέφει ένα αναγνωριστικό και μια θέση εξόδου ως απάντηση. Μετά την επεξεργασία, το SageMaker τοποθετεί το αποτέλεσμα στη θέση Amazon S3. Μπορείτε προαιρετικά να επιλέξετε να λαμβάνετε ειδοποιήσεις επιτυχίας ή σφάλματος με Υπηρεσία απλών ειδοποιήσεων Amazon (Amazon SNS).

SDK SageMaker Python

Αφού ολοκληρωθεί η ανάπτυξη, θα επιστρέψει ένα AsyncPredictor αντικείμενο. Για να εκτελέσετε ασύγχρονη εξαγωγή συμπερασμάτων, πρέπει να ανεβάσετε δεδομένα στο Amazon S3 και να χρησιμοποιήσετε το predict_async() μέθοδος με το S3 URI ως είσοδο. Θα επιστρέψει ένα AsyncInferenceResponse αντικείμενο και μπορείτε να ελέγξετε το αποτέλεσμα χρησιμοποιώντας το get_response() μέθοδος.

Εναλλακτικά, εάν θέλετε να ελέγχετε περιοδικά για ένα αποτέλεσμα και να το επιστρέφετε κατά τη δημιουργία, χρησιμοποιήστε το predict() μέθοδος. Χρησιμοποιούμε αυτή τη δεύτερη μέθοδο στον ακόλουθο κώδικα:

import time # Invoking the asynchronous endpoint with the SageMaker Python SDK
def query_endpoint(payload): """Query endpoint and print the response""" response = predictor.predict_async( data=payload, input_path="s3://{}/{}".format(bucket, prefix), ) while True: try: response = response.get_result() break except: print("Inference is not ready ...") time.sleep(5) print(f"33[1m Input:33[0m {payload['inputs']}") print(f"33[1m Output:33[0m {response[0]['generated_text']}") query_endpoint(payload)

Boto3

Ας εξερευνήσουμε τώρα το invoke_endpoint_async μέθοδος από το Boto3 sagemaker-runtime πελάτης. Επιτρέπει στους προγραμματιστές να επικαλούνται ασύγχρονα ένα τελικό σημείο του SageMaker, παρέχοντας ένα διακριτικό για την παρακολούθηση της προόδου και την ανάκτηση της απόκρισης αργότερα. Το Boto3 δεν προσφέρει τρόπο αναμονής για την ολοκλήρωση του ασύγχρονου συμπεράσματος όπως το SageMaker Python SDK get_result() λειτουργία. Επομένως, εκμεταλλευόμαστε το γεγονός ότι το Boto3 θα αποθηκεύσει την έξοδο συμπερασμάτων στο Amazon S3 στο response["OutputLocation"]. Μπορούμε να χρησιμοποιήσουμε την ακόλουθη συνάρτηση για να περιμένουμε να εγγραφεί το αρχείο συμπερασμάτων στο Amazon S3:

import json
import time
import boto3
from botocore.exceptions import ClientError s3_client = boto3.client("s3") # Wait until the prediction is generated
def wait_inference_file(bucket, prefix): while True: try: response = s3_client.get_object(Bucket=bucket, Key=prefix) break except ClientError as ex: if ex.response['Error']['Code'] == 'NoSuchKey': print("Waiting for file to be generated...") time.sleep(5) next else: raise except Exception as e: print(e.__dict__) raise return response

Με αυτή τη συνάρτηση, μπορούμε τώρα να ρωτήσουμε το τελικό σημείο:

# Invoking the asynchronous endpoint with the Boto3 SDK
import boto3 sagemaker_client = boto3.client("sagemaker-runtime") # Query the endpoint function
def query_endpoint_boto3(payload): """Query endpoint and print the response""" response = sagemaker_client.invoke_endpoint_async( EndpointName=my_model.endpoint_name, InputLocation="s3://{}/{}".format(bucket, prefix), ContentType="application/json", Accept="application/json" ) output_url = response["OutputLocation"] output_prefix = "/".join(output_url.split("/")[3:]) # Read the bytes of the file from S3 in output_url with Boto3 output = wait_inference_file(bucket, output_prefix) output = json.loads(output['Body'].read())[0]['generated_text'] # Emit output print(f"33[1m Input:33[0m {payload['inputs']}") print(f"33[1m Output:33[0m {output}") query_endpoint_boto3(payload)

LangChain

Το LangChain είναι ένα πλαίσιο ανοιχτού κώδικα που κυκλοφόρησε τον Οκτώβριο του 2022 από τον Harrison Chase. Απλοποιεί την ανάπτυξη εφαρμογών που χρησιμοποιούν μεγάλα γλωσσικά μοντέλα (LLMs) παρέχοντας ενοποιήσεις με διάφορα συστήματα και πηγές δεδομένων. Το LangChain επιτρέπει την ανάλυση εγγράφων, τη σύνοψη, τη δημιουργία chatbot, την ανάλυση κώδικα και πολλά άλλα. Έχει κερδίσει δημοτικότητα, με συνεισφορές από εκατοντάδες προγραμματιστές και σημαντική χρηματοδότηση από εταιρείες επιχειρηματικών συμμετοχών. Το LangChain επιτρέπει τη σύνδεση LLM με εξωτερικές πηγές, καθιστώντας δυνατή τη δημιουργία δυναμικών εφαρμογών που ανταποκρίνονται στα δεδομένα. Προσφέρει βιβλιοθήκες, API και τεκμηρίωση για τον εξορθολογισμό της διαδικασίας ανάπτυξης.

Το LangChain παρέχει βιβλιοθήκες και παραδείγματα για τη χρήση των τελικών σημείων του SageMaker με το πλαίσιο του, διευκολύνοντας τη χρήση μοντέλων ML που φιλοξενούνται στο SageMaker ως «εγκέφαλος» της αλυσίδας. Για να μάθετε περισσότερα σχετικά με το πώς το LangChain ενσωματώνεται με το SageMaker, ανατρέξτε στο SageMaker Endpoint στην τεκμηρίωση του LangChain.

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

  • Ο κάδος και το πρόθεμα S3 όπου η ασύγχρονη συμπέρασμα θα αποθηκεύσει τις εισόδους (και τις εξόδους)
  • Μέγιστος αριθμός δευτερολέπτων για αναμονή πριν από τη λήξη χρόνου
  • An updated _call() συνάρτηση για να ρωτήσετε το τελικό σημείο με invoke_endpoint_async() αντί του invoke_endpoint()
  • Ένας τρόπος για να αφυπνίσετε το ασύγχρονο τελικό σημείο εάν είναι σε ψυχρή εκκίνηση (κλιμακούμενη στο μηδέν)

Για να ελέγξετε τα νέα που δημιουργήθηκαν SagemakerAsyncEndpoint, Μπορείτε να ελέγξετε έξω το sagemaker_async_endpoint.py φιλέτο διαθέσιμη στο GitHub.

from typing import Dict
from langchain import PromptTemplate
from langchain.llms.sagemaker_endpoint import LLMContentHandler
from langchain.chains import LLMChain
from sagemaker_async_endpoint import SagemakerAsyncEndpoint class ContentHandler(LLMContentHandler): content_type:str = "application/json" accepts:str = "application/json" len_prompt:int = 0 def transform_input(self, prompt: str, model_kwargs: Dict) -> bytes: self.len_prompt = len(prompt) input_str = json.dumps({"inputs": prompt, "parameters": {"max_new_tokens": 100, "do_sample": False, "repetition_penalty": 1.1}}) return input_str.encode('utf-8') def transform_output(self, output: bytes) -> str: response_json = output.read() res = json.loads(response_json) ans = res[0]['generated_text'] return ans chain = LLMChain( llm=SagemakerAsyncEndpoint( input_bucket=bucket, input_prefix=prefix, endpoint_name=my_model.endpoint_name, region_name=sagemaker.Session().boto_region_name, content_handler=ContentHandler(), ), prompt=PromptTemplate( input_variables=["query"], template="{query}", ),
) print(chain.run(payload['inputs']))

εκκαθάριση

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

predictor.delete_endpoint()

Συμπέρασμα

Κατά την ανάπτυξη μεγάλων μοντέλων θεμελίωσης όπως το TII Falcon, η βελτιστοποίηση του κόστους είναι ζωτικής σημασίας. Αυτά τα μοντέλα απαιτούν ισχυρό υλικό και σημαντική χωρητικότητα μνήμης, με αποτέλεσμα υψηλό κόστος υποδομής. Το ασύγχρονο συμπέρασμα του SageMaker, μια επιλογή ανάπτυξης που επεξεργάζεται αιτήματα ασύγχρονα, μειώνει τα έξοδα κλιμακώνοντας το πλήθος παρουσιών στο μηδέν όταν δεν υπάρχουν αιτήματα σε εκκρεμότητα. Σε αυτήν την ανάρτηση, δείξαμε πώς να αναπτύξουμε μεγάλα μοντέλα θεμελίωσης SageMaker JumpStart σε ασύγχρονα τελικά σημεία του SageMaker. Παρέχαμε παραδείγματα κώδικα χρησιμοποιώντας το SageMaker Python SDK, Boto3 και LangChain για να παρουσιάσουμε διαφορετικές μεθόδους για την κλήση ασύγχρονων τελικών σημείων και την ανάκτηση αποτελεσμάτων. Αυτές οι τεχνικές δίνουν τη δυνατότητα στους προγραμματιστές και τους ερευνητές να βελτιστοποιήσουν το κόστος ενώ χρησιμοποιούν τις δυνατότητες των μοντέλων θεμελίωσης για προηγμένα συστήματα κατανόησης γλώσσας.

Για να μάθετε περισσότερα σχετικά με το ασύγχρονο συμπέρασμα και το SageMaker JumpStart, ανατρέξτε στις ακόλουθες αναρτήσεις:


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

Φωτογραφία του DavideDavide Gallitelli είναι Ειδικός Αρχιτέκτονας Λύσεων για AI/ML στην περιοχή EMEA. Εδρεύει στις Βρυξέλλες και συνεργάζεται στενά με πελάτες σε όλη τη Μπενελούξ. Είναι προγραμματιστής από πολύ μικρός, ξεκινώντας να κωδικοποιεί σε ηλικία 7 ετών. Άρχισε να μαθαίνει AI/ML στο πανεπιστήμιο και από τότε το ερωτεύτηκε.

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

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