Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart

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

Σε αυτήν την ανάρτηση, δείχνουμε πώς να χρησιμοποιούμε τεχνικές ML τελευταίας τεχνολογίας για την επίλυση πέντε διαφορετικών εργασιών NLP: σύνοψη εγγράφων, ταξινόμηση κειμένου, απάντηση ερωτήσεων, αναγνώριση ονομαστικών οντοτήτων και εξαγωγή σχέσεων. Για καθεμία από αυτές τις εργασίες NLP, δείχνουμε πώς να το χρησιμοποιήσετε Amazon Sage Maker για να εκτελέσετε τις ακόλουθες ενέργειες:

  • Αναπτύξτε και εκτελέστε συμπεράσματα σε ένα προεκπαιδευμένο μοντέλο
  • Βελτιστοποιήστε το προεκπαιδευμένο μοντέλο σε ένα νέο προσαρμοσμένο σύνολο δεδομένων
  • Περαιτέρω βελτίωση της απόδοσης μικρορύθμισης με Αυτόματος συντονισμός μοντέλου SageMaker
  • Αξιολογήστε την απόδοση του μοντέλου στα δεδομένα δοκιμής αναμονής με διάφορες μετρήσεις αξιολόγησης

Παρόλο που καλύπτουμε πέντε συγκεκριμένες εργασίες NLP σε αυτήν την ανάρτηση, μπορείτε να χρησιμοποιήσετε αυτήν τη λύση ως πρότυπο για να γενικεύσετε τη βελτιστοποίηση των προεκπαιδευμένων μοντέλων με το δικό σας σύνολο δεδομένων και στη συνέχεια να εκτελέσετε βελτιστοποίηση υπερπαραμέτρων για να βελτιώσετε την ακρίβεια.

Πρότυπα λύσεων JumpStart

Amazon SageMaker JumpStart παρέχει λύσεις από άκρο σε άκρο με ένα κλικ για πολλές κοινές περιπτώσεις χρήσης ML. Εξερευνήστε τις ακόλουθες περιπτώσεις χρήσης για περισσότερες πληροφορίες σχετικά με τα διαθέσιμα πρότυπα λύσεων:

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

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

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

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

Ανοίξτε τη λύση Document Understanding

Μεταβείτε στη λύση Κατανόηση εγγράφων στο JumpStart.

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Επίδειξη σημειωματάριο

Μπορείτε να χρησιμοποιήσετε το δοκιμαστικό σημειωματάριο για να στείλετε παραδείγματα δεδομένων σε ήδη αναπτυγμένα τελικά σημεία μοντέλων για τις εργασίες σύνοψης εγγράφων και απάντησης ερωτήσεων. Ο φορητός υπολογιστής επίδειξης σας επιτρέπει γρήγορα να αποκτήσετε πρακτική εμπειρία αναζητώντας τα δεδομένα του παραδείγματος.

Αφού εκκινήσετε τη λύση Κατανόηση εγγράφων, ανοίξτε το δοκιμαστικό σημειωματάριο επιλέγοντας Χρησιμοποιήστε το Endpoint στο Σημειωματάριο.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ας βουτήξουμε βαθύτερα σε καθένα από τα πέντε κύρια σημειωματάρια για αυτήν τη λύση.

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

In Στούντιο Amazon SageMaker, βεβαιωθείτε ότι χρησιμοποιείτε το PyTorch 1.10 Python 3.8 CPU Optimized εικόνα/πυρήνα για να ανοίξετε τα σημειωματάρια. Η προπόνηση χρησιμοποιεί πέντε ml.g4dn.2x μεγάλες περιπτώσεις, επομένως θα πρέπει να σηκώσετε ένα αίτημα αύξησης ορίου υπηρεσίας εάν ο λογαριασμός σας απαιτεί αυξημένα όρια για αυτόν τον τύπο.

Κείμενο ταξινόμησης

Η ταξινόμηση κειμένου αναφέρεται στην ταξινόμηση μιας πρότασης εισόδου σε μία από τις ετικέτες κλάσεων του συνόλου δεδομένων εκπαίδευσης. Αυτό το σημειωματάριο δείχνει πώς να χρησιμοποιήσετε το JumpStart API για ταξινόμηση κειμένου.

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

Το μοντέλο ταξινόμησης κειμένου που επιλέξαμε να χρησιμοποιήσουμε βασίζεται σε μια ενσωμάτωση κειμένου (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2) μοντέλο από Διανομέας TensorFlow, το οποίο είναι προεκπαιδευμένο στα σύνολα δεδομένων Wikipedia και BookCorpus.

Το μοντέλο που είναι διαθέσιμο για ανάπτυξη δημιουργείται με την προσάρτηση ενός δυαδικού επιπέδου ταξινόμησης στην έξοδο του μοντέλου ενσωμάτωσης κειμένου και, στη συνέχεια, λεπτομέρεια ολόκληρου του μοντέλου στο SST-2 σύνολο δεδομένων, το οποίο αποτελείται από θετικές και αρνητικές κριτικές ταινιών.

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

model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name_tc,
)
# deploy the Model.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    endpoint_name=endpoint_name_tc,
)

Αφού αναπτύξουμε το μοντέλο, συγκεντρώνουμε μερικά παραδείγματα εισόδων και ρωτάμε το τελικό σημείο:

text1 = "astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment" 
text2 = "simply stupid , irrelevant and deeply , truly , bottomlessly cynical "

Ο παρακάτω κώδικας δείχνει τις απαντήσεις μας:

Inference:
Input text: 'astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment'
Model prediction: [0.000452966779, 0.999547064]
Labels: [0, 1]
Predicted Label: 1 # value 0 means negative sentiment and value 1 means positive sentiment

Inference:
Input text: 'simply stupid , irrelevant and deeply , truly , bottomlessly cynical '
Model prediction: [0.998723, 0.00127695734]
Labels: [0, 1]
Predicted Label: 0

Βελτιστοποιήστε το προεκπαιδευμένο μοντέλο σε ένα προσαρμοσμένο σύνολο δεδομένων

Μόλις προχωρήσαμε στο συμπέρασμα τρεξίματος σε ένα προεκπαιδευμένο μοντέλο BERT, το οποίο είχε ρυθμιστεί με ακρίβεια στο SST-2 σύνολο δεδομένων

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

Ανακτούμε το εκπαιδευτικό κοντέινερ Docker, την πηγή αλγορίθμου εκπαίδευσης και το προεκπαιδευμένο μοντέλο:

from sagemaker import image_uris, model_uris, script_uris, hyperparameters

model_id, model_version = model_id, "*" # all the other options of model_id are the same as the one in Section 2.
training_instance_type = config.TRAINING_INSTANCE_TYPE

# Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=model_id,
    model_version=model_version,
    image_scope="training",
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=model_id, model_version=model_version, script_scope="training"
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=model_id, model_version=model_version, model_scope="training"
)

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

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["batch-size"] = "64"
hyperparameters["adam-learning-rate"] = "1e-6"

Το σύνολο δεδομένων (SST-2) χωρίζεται σε σύνολα εκπαίδευσης, επικύρωσης και δοκιμών, όπου το σύνολο εκπαίδευσης χρησιμοποιείται για να ταιριάζει στο μοντέλο, το σύνολο επικύρωσης χρησιμοποιείται για τον υπολογισμό μετρήσεων αξιολόγησης που μπορούν να χρησιμοποιηθούν για HPO και το σύνολο δοκιμής χρησιμοποιείται ως δεδομένα αναμονής για την αξιολόγηση της απόδοσης του μοντέλου. Στη συνέχεια, η αμαξοστοιχία και το σύνολο δεδομένων επικύρωσης μεταφορτώνονται στο Amazon S3 και χρησιμοποιούνται για την έναρξη της εργασίας εκπαίδευσης λεπτομέρειας:

# Create SageMaker Estimator instance
tc_estimator = Estimator(
    role=role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
tc_estimator.fit({"training": training_data_path_updated}, logs=True)

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Βελτιώστε περαιτέρω την απόδοση λεπτομέρειας με τον αυτόματο συντονισμό μοντέλων SageMaker

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

Αρχικά, ορίσαμε τον στόχο ως τη βαθμολογία ακρίβειας στα δεδομένα επικύρωσης (val_accuracy) και όρισε μετρήσεις για την εργασία συντονισμού καθορίζοντας το όνομα της αντικειμενικής μέτρησης και μια τυπική έκφραση (regex). Η τυπική έκφραση χρησιμοποιείται για να ταιριάζει με την έξοδο καταγραφής του αλγορίθμου και να συλλαμβάνει τις αριθμητικές τιμές των μετρήσεων. Στη συνέχεια, καθορίζουμε εύρη υπερπαραμέτρων για να επιλέξουμε τις καλύτερες τιμές υπερπαραμέτρων. Ορίσαμε τον συνολικό αριθμό εργασιών συντονισμού σε έξι και διανέμουμε αυτές τις εργασίες σε τρεις διαφορετικές Amazon Elastic Compute Cloud Στιγμιότυπα (Amazon EC2) για εκτέλεση εργασιών παράλληλου συντονισμού. Δείτε τον παρακάτω κώδικα:

# Define objective metric per framework, based on which the best model will be selected.
metric_definitions_per_model = {
    "tensorflow": {
        "metrics": [{"Name": "val_accuracy", "Regex": "val_accuracy: ([0-9.]+)"}],
        "type": "Maximize",
    }
}

# You can select from the hyperparameters supported by the model, and configure ranges of values to be searched for training the optimal model.(https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html)
hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic")
}

# Increase the total number of training jobs run by AMT, for increased accuracy (and training time).
max_jobs = 6
# Change parallel training jobs run by AMT to reduce total training time, constrained by your account limits.
# if max_jobs=max_parallel_jobs then Bayesian search turns to Random.
max_parallel_jobs = 3

Περνάμε αυτές τις τιμές για να δημιουργήσουμε ένα αντικείμενο SageMaker Estimator, παρόμοιο με αυτό που κάναμε στο προηγούμενο βήμα μικρορύθμισης. Αντί να καλέσετε το fit λειτουργία του Estimator αντικείμενο, περνάμε το Estimator αντικείμενο ως παράμετρος στο HyperparameterTuner κατασκευαστή και καλέστε το fit λειτουργία του για την έναρξη εργασιών συντονισμού:

hp_tuner = HyperparameterTuner(
    tc_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

Αναγνωρισμένη οντότητα

Η αναγνώριση ονομαστικών οντοτήτων (NER) είναι η διαδικασία ανίχνευσης και ταξινόμησης ονομασμένων οντοτήτων σε προκαθορισμένες κατηγορίες, όπως ονόματα προσώπων, οργανισμών, τοποθεσιών και ποσοτήτων. Υπάρχουν πολλές πραγματικές περιπτώσεις χρήσης του NER, όπως μηχανές συστάσεων, κατηγοριοποίηση και εκχώρηση εισιτηρίων υποστήριξης πελατών στο σωστό τμήμα, εξαγωγή βασικών πληροφοριών από αναφορές ασθενών στην υγειονομική περίθαλψη και ταξινόμηση περιεχομένου από ειδήσεις και ιστολόγια.

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

Αναπτύσσουμε το En_core_web_md μοντέλο από το Spay βιβλιοθήκη. Το spaCy είναι μια βιβλιοθήκη NLP ανοιχτού κώδικα που μπορεί να χρησιμοποιηθεί για διάφορες εργασίες και έχει ενσωματωμένες μεθόδους για το NER. Χρησιμοποιούμε ένα AWS PyTorch Deep Learning Container (DLC) με λειτουργία σεναρίου και εγκαθιστούμε τη βιβλιοθήκη spaCy ως εξάρτηση πάνω από το κοντέινερ.

Στη συνέχεια, ένα σημείο εισόδου για το σενάριο (επιχείρημα entry_point.py) καθορίζεται, που περιέχει όλο τον κώδικα για λήψη και φόρτωση του En_core_web_md μοντελοποιήστε και εκτελέστε συμπεράσματα για τα δεδομένα που αποστέλλονται στο τελικό σημείο. Τέλος, πρέπει ακόμα να παρέχουμε model_data ως το προεκπαιδευμένο μοντέλο για συμπέρασμα. Γιατί οι προεκπαιδευμένοι En_core_web_md μοντέλο κατεβάζεται εν κινήσει, το οποίο καθορίζεται στο σενάριο εισόδου, παρέχουμε ένα κενό αρχείο αρχειοθέτησης. Αφού αναπτυχθεί το τελικό σημείο, μπορείτε να καλέσετε το τελικό σημείο απευθείας από το σημειωματάριο χρησιμοποιώντας το SageMaker Python SDK's Predictor. Δείτε τον ακόλουθο κώδικα:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/entity_recognition",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000"
    }
)
predictor = model.deploy(
    endpoint_name=endpoint_name,
    instance_type=config.HOSTING_INSTANCE_TYPE,
    initial_instance_count=1,
    serializer=JSONSerializer(),
    deserializer=JSONDeserializer()
)

Τα δεδομένα εισόδου για το μοντέλο είναι ένα έγγραφο κειμένου. Το μοντέλο ονομαζόμενης οντότητας εξάγει κομμάτια ουσιαστικών και ονομαστικές οντότητες στο κείμενο κειμένου και τα ταξινομεί σε διάφορους τύπους (όπως άτομα, μέρη και οργανισμούς). Το παράδειγμα εισόδου και εξόδου φαίνονται στον ακόλουθο κώδικα. ο start_char Η παράμετρος υποδεικνύει τη μετατόπιση χαρακτήρων για την αρχή του διαστήματος και end_char υποδηλώνει το τέλος του διαστήματος.

data = {'text': 'Amazon SageMaker is a fully managed service that provides every developer and data scientist with the ability to build, train, and deploy machine learning (ML) models quickly.'}
response = predictor.predict(data=data)

print(response['entities'])
print(response['noun_chunks'])

[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16, 'label': 'ORG'}]
[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16}, {'text': 'a fully managed service', 'start_char': 20, 'end_char': 43}, {'text': 'that', 'start_char': 44, 'end_char': 48}, {'text': 'every developer and data scientist', 'start_char': 58, 'end_char': 92}, {'text': 'the ability', 'start_char': 98, 'end_char': 109}, {'text': 'ML', 'start_char': 156, 'end_char': 158}]

Βελτιστοποιήστε το προεκπαιδευμένο μοντέλο σε ένα προσαρμοσμένο σύνολο δεδομένων

Σε αυτό το βήμα, δείχνουμε πώς να προσαρμόσετε με ακρίβεια ένα προεκπαιδευμένο μοντέλο γλώσσας για το NER στο δικό σας σύνολο δεδομένων. Το βήμα λεπτομέρειας ενημερώνει τις παραμέτρους του μοντέλου για να καταγράψει τα χαρακτηριστικά των δικών σας δεδομένων και να βελτιώσει την ακρίβεια. Χρησιμοποιούμε το WikiANN (PAN-X) σύνολο δεδομένων για να τελειοποιήσετε το DistilBERT-βάση-χωρίς θήκη Μοντέλο μετασχηματιστή από το Hugging Face.

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

Στη συνέχεια, καθορίζουμε τις υπερπαραμέτρους του μοντέλου και χρησιμοποιούμε ένα DLC AWS Hugging Face με λειτουργία σεναρίου (όρισμα entry_point) για να ενεργοποιήσετε την εργασία μικρορύθμισης:

hyperparameters = {
    "pretrained-model": "distilbert-base-uncased",
    "learning-rate": 2e-6,
    "num-train-epochs": 2,
    "batch-size": 16,
    "weight-decay": 1e-5,
    "early-stopping-patience": 2,
}

ner_estimator = HuggingFace(
    pytorch_version='1.10.2',
    py_version='py38',
    transformers_version="4.17.0",
    entry_point='training.py',
    source_dir='../containers/entity_recognition/finetuning',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=training_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    base_job_name = training_job_name
)

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

Τέλος, χρησιμοποιούμε ενσωματωμένες μετρήσεις αξιολόγησης Hugging Face seqeval για τον υπολογισμό των βαθμολογιών αξιολόγησης στα δεδομένα τεστ αναμονής. Οι μετρήσεις αξιολόγησης που χρησιμοποιούνται είναι η συνολική ακρίβεια, η συνολική ανάκληση, η συνολική F1 και η ακρίβεια. Το παρακάτω στιγμιότυπο οθόνης δείχνει τα αποτελέσματά μας.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Βελτιώστε περαιτέρω την απόδοση λεπτομέρειας με τον αυτόματο συντονισμό μοντέλων SageMaker

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

hyperparameters_range = {
    "learning-rate": ContinuousParameter(1e-5, 0.1, scaling_type="Logarithmic"),
    "weight-decay": ContinuousParameter(1e-6, 1e-2, scaling_type="Logarithmic"),
}

tuner = HyperparameterTuner(
    estimator,
    "f1",
    hyperparameters_range,
    [{"Name": "f1", "Regex": "'eval_f1': ([0-9.]+)"}],
    max_jobs=6,
    max_parallel_jobs=3,
    objective_type="Maximize",
    base_tuning_job_name=tuning_job_name,
)

tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
}, logs=True)

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Μπορούμε να δούμε ότι το μοντέλο με HPO επιτυγχάνει σημαντικά καλύτερη απόδοση σε όλες τις μετρήσεις.

Ερώτηση απάντηση

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

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

Το προεκπαιδευμένο μοντέλο μας είναι το μοντέλο εξαγωγικής απάντησης σε ερωτήσεις (EQA). μπερτ-μεγάλο-χωρίς-ολόκληρη-λέξη-μάσκα-λεπτοσυντονισμένη-ομάδα κατασκευασμένο σε μοντέλο Transformer από το Hugging Face. Χρησιμοποιούμε ένα DLC AWS PyTorch με λειτουργία σεναρίου και εγκαθιστούμε το μετασχηματιστές βιβλιοθήκη ως εξάρτηση πάνω από το δοχείο. Παρόμοια με την εργασία NER, παρέχουμε ένα κενό αρχείο αρχειοθέτησης στο όρισμα model_data επειδή το προεκπαιδευμένο μοντέλο κατεβάζεται εν κινήσει. Αφού αναπτυχθεί το τελικό σημείο, μπορείτε να καλέσετε το τελικό σημείο απευθείας από το σημειωματάριο χρησιμοποιώντας το SageMaker Python SDK's Predictor. Δείτε τον ακόλουθο κώδικα:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/question_answering",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MODEL_ASSETS_S3_BUCKET": config.SOURCE_S3_BUCKET,
        "MODEL_ASSETS_S3_PREFIX": f"{config.SOURCE_S3_PREFIX}/artifacts/models/question_answering/",
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000",
    },
)

Μετά την επιτυχή ανάπτυξη του τελικού σημείου και τη διαμόρφωση του προγνωστικού, μπορούμε να δοκιμάσουμε το μοντέλο απάντησης ερωτήσεων σε παραδείγματα εισόδων. Αυτό το μοντέλο έχει προεκπαιδευτεί στο Σύνολο δεδομένων ερωτήσεων και απαντήσεων Stanford σύνολο δεδομένων (SQuAD). Αυτό το σύνολο δεδομένων εισήχθη με την ελπίδα να προωθηθεί το πεδίο της μοντελοποίησης απάντησης σε ερωτήσεις. Είναι ένα σύνολο δεδομένων κατανόησης ανάγνωσης που αποτελείται από αποσπάσματα, ερωτήσεις και απαντήσεις.

Το μόνο που χρειάζεται να κάνουμε είναι να κατασκευάσουμε ένα αντικείμενο λεξικού με δύο πλήκτρα. context είναι το κείμενο από το οποίο θέλουμε να ανακτήσουμε πληροφορίες. question είναι το ερώτημα φυσικής γλώσσας που καθορίζει ποιες πληροφορίες μας ενδιαφέρει να εξαγάγουμε. Καλούμε predict στον προγνωστικό μας και θα πρέπει να λάβουμε μια απάντηση από το τελικό σημείο που περιέχει τις πιο πιθανές απαντήσεις:

data = {'question': 'what is my name?', 'context': "my name is thom"}
response = predictor.predict(data=data)

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

print(response['answers'])
[{'score': 0.9793591499328613, 'start': 11, 'end': 15, 'answer': 'thom'}, 
{'score': 0.02019440196454525, 'start': 0, 'end': 15, 'answer': 'my name is thom'}, 
{'score': 4.349117443780415e-05, 'start': 3, 'end': 15, 'answer': 'name is thom'}]

Τώρα προσαρμόζουμε αυτό το μοντέλο με το δικό μας προσαρμοσμένο σύνολο δεδομένων για να έχουμε καλύτερα αποτελέσματα.

Βελτιστοποιήστε το προεκπαιδευμένο μοντέλο σε ένα προσαρμοσμένο σύνολο δεδομένων

Σε αυτό το βήμα, δείχνουμε πώς να προσαρμόζετε τα προεκπαιδευμένα μοντέλα γλώσσας για το EQA στο δικό σας σύνολο δεδομένων. Το βήμα λεπτομέρειας ενημερώνει τις παραμέτρους του μοντέλου για να καταγράψει τα χαρακτηριστικά των δικών σας δεδομένων και να βελτιώσει την ακρίβεια. Χρησιμοποιούμε το SQuAD2.0 σύνολο δεδομένων για να τελειοποιήσετε ένα μοντέλο ενσωμάτωσης κειμένου μπερτ-βάση-ακάλυπτος από το Hugging Face. Το μοντέλο που είναι διαθέσιμο για λεπτομέρεια προσαρτά ένα επίπεδο εξαγωγής απαντήσεων στο μοντέλο ενσωμάτωσης κειμένου και αρχικοποιεί τις παραμέτρους του επιπέδου σε τυχαίες τιμές. Το βήμα λεπτομέρειας συντονίζει όλες τις παραμέτρους του μοντέλου για να ελαχιστοποιήσει το σφάλμα πρόβλεψης στα δεδομένα εισόδου και επιστρέφει το βελτιωμένο μοντέλο.

Παρόμοια με την εργασία ταξινόμησης κειμένου, το σύνολο δεδομένων (SQuAD2.0) χωρίζεται σε σύνολο εκπαίδευσης, επικύρωσης και δοκιμής.

Στη συνέχεια, καθορίζουμε τις υπερπαραμέτρους του μοντέλου και χρησιμοποιούμε το JumpStart API για να ενεργοποιήσετε μια εργασία λεπτομέρειας:

hyperparameters = {'epochs': '3', 'adam-learning-rate': '2e-05', 'batch-size': '16'}

eqa_estimator = Estimator(
    role=role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
    debugger_hook_config=False,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
eqa_estimator.fit({"training": training_data_path_updated}, logs=True)

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Βελτιώστε περαιτέρω την απόδοση λεπτομέρειας με τον αυτόματο συντονισμό μοντέλων SageMaker

Όπως και στις προηγούμενες ενότητες, χρησιμοποιούμε α HyperparameterTuner αντίρρηση για έναρξη εργασιών συντονισμού:

hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic"),
    "epochs": IntegerParameter(3, 10),
    "train-only-top-layer": CategoricalParameter(["True", "False"]),
}

hp_tuner = HyperparameterTuner(
    eqa_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=training_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Μπορούμε να δούμε ότι το μοντέλο με HPO παρουσιάζει σημαντικά καλύτερη απόδοση στα δεδομένα δοκιμής διατήρησης.

Εξαγωγή σχέσης

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

Βελτιστοποιήστε το προεκπαιδευμένο μοντέλο σε ένα προσαρμοσμένο σύνολο δεδομένων

Χρησιμοποιούμε ένα μοντέλο εξαγωγής σχέσεων που βασίζεται σε α BERT-βάση-χωρίς θήκη μοντέλο χρησιμοποιώντας μετασχηματιστές από το Μετασχηματιστές Hugging Face βιβλιοθήκη. Το μοντέλο για λεπτομέρεια προσαρτά ένα επίπεδο γραμμικής ταξινόμησης που λαμβάνει ένα ζεύγος ενσωματώσεων διακριτικών που εξάγονται από το μοντέλο ενσωμάτωσης κειμένου και αρχικοποιεί τις παραμέτρους του επιπέδου σε τυχαίες τιμές. Το βήμα λεπτομέρειας συντονίζει όλες τις παραμέτρους του μοντέλου για να ελαχιστοποιήσει το σφάλμα πρόβλεψης στα δεδομένα εισόδου και επιστρέφει το βελτιωμένο μοντέλο.

Το σύνολο δεδομένων που βελτιστοποιούμε το μοντέλο είναι SemEval-2010 Εργασία 8. Το μοντέλο που επιστρέφεται με τη λεπτομέρεια μπορεί να αναπτυχθεί περαιτέρω για συμπέρασμα.

Το σύνολο δεδομένων περιέχει εκπαίδευση, επικύρωση και σύνολα δοκιμών.

Χρησιμοποιούμε το AWS PyTorch DLC με λειτουργία σεναρίου από το SageMaker Python SDK, όπου transformers Η βιβλιοθήκη εγκαθίσταται ως εξάρτηση στο επάνω μέρος του κοντέινερ. Ορίζουμε το SageMaker PyTorch εκτιμητής και ένα σύνολο υπερπαραμέτρων, όπως το εκ των προτέρων εκπαιδευμένο μοντέλο, ο ρυθμός εκμάθησης και οι αριθμοί εποχής για την εκτέλεση της μικρορύθμισης. Ο κώδικας για τη μικρορύθμιση του μοντέλου εξαγωγής σχέσης ορίζεται στο entry_point.py. Δείτε τον ακόλουθο κώδικα:

hyperparameters = {
    "pretrained-model": "bert-base-uncased",
    "learning-rate": 0.0002,
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

re_estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=training_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
)

re_estimator.fit(
    {
        "train": f"s3://{bucket}/{prefix}/train/",
        "validation": f"s3://{bucket}/{prefix}/validation/",
    }
)

Η εργασία εκπαίδευσης διαρκεί περίπου 31 λεπτά για να ολοκληρωθεί. Χρησιμοποιούμε αυτό το μοντέλο για να εκτελέσουμε συμπέρασμα στο σετ δοκιμών αναμονής και να αξιολογήσουμε τα αποτελέσματα χρησιμοποιώντας ακρίβεια, Μακροεντολή F1, να F1 μικρο βαθμολογίες. Το παρακάτω στιγμιότυπο οθόνης δείχνει τις βαθμολογίες αξιολόγησης.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Βελτιώστε περαιτέρω την απόδοση λεπτομέρειας με τον αυτόματο συντονισμό μοντέλων SageMaker

Όπως και στις προηγούμενες ενότητες, χρησιμοποιούμε α HyperparameterTuner αντικείμενο αλληλεπίδρασης με τα API συντονισμού υπερπαραμέτρων του SageMaker. Μπορούμε να ξεκινήσουμε την εργασία συντονισμού υπερπαραμέτρων καλώντας το fit μέθοδος:

hyperparameters = {
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=tuning_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
    
    re_tuner = HyperparameterTuner(
    estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

re_tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
})

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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Μπορούμε να δούμε ότι το μοντέλο με HPO δείχνει καλύτερη απόδοση στα δεδομένα δοκιμής διατήρησης.

Σύνοψη εγγράφου

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

Αυτό το σημειωματάριο δείχνει την ανάπτυξη του μοντέλου σύνοψης εγγράφων Τ5-βάση από το Μετασχηματιστές Hugging Face βιβλιοθήκη. Δοκιμάζουμε επίσης τα αναπτυγμένα τελικά σημεία χρησιμοποιώντας ένα άρθρο κειμένου και αξιολογούμε τα αποτελέσματα χρησιμοποιώντας την ενσωματωμένη μέτρηση αξιολόγησης Hugging Face ΚΟΚΚΙΝΟ.

Παρόμοια με την απάντηση ερωτήσεων και τα σημειωματάρια NER, χρησιμοποιούμε το PyTorchModel από το SageMaker Python SDK μαζί με ένα entry_point.py δέσμη ενεργειών για τη φόρτωση του μοντέλου βάσης T5 σε ένα τελικό σημείο HTTPS. Αφού αναπτυχθεί επιτυχώς το τελικό σημείο, μπορούμε να στείλουμε ένα άρθρο κειμένου στο τελικό σημείο για να λάβουμε μια απάντηση πρόβλεψης:

ARTICLE = """ Documents are a primary tool for communication,
collaboration, record keeping, and transactions across industries,
including financial, medical, legal, and real estate. The format of data
can pose an extra challenge in data extraction, especially if the content
is typed, handwritten, or embedded in a form or table. Furthermore,
extracting data from your documents is manual, error-prone, time-consuming,
expensive, and does not scale. Amazon Textract is a machine learning (ML)
service that extracts printed text and other data from documents as well as
tables and forms. We’re pleased to announce two new features for Amazon
Textract: support for handwriting in English documents, and expanding
language support for extracting printed text from documents typed in
Spanish, Portuguese, French, German, and Italian. Many documents, such as
medical intake forms or employment applications, contain both handwritten
and printed text. The ability to extract text and handwriting has been a
need our customers have asked us for. Amazon Textract can now extract
printed text and handwriting from documents written in English with high
confidence scores, whether it’s free-form text or text embedded in tables
and forms. Documents can also contain a mix of typed text or handwritten
text. The following image shows an example input document containing a mix
of typed and handwritten text, and its converted output document.."""

data = {'text': ARTICLE}
response = predictor.predict(data=data)
print(response['summary'])

"""Amazon Textract is a machine learning (ML) service that extracts printed text 
and other data from documents as well as tables and forms . 
customers can now extract and process documents in more languages .
support for handwriting in english documents and expanding language support for extracting 
printed text ."""

Στη συνέχεια, αξιολογούμε και συγκρίνουμε το κείμενο του άρθρου και το αποτέλεσμα της σύνοψης χρησιμοποιώντας τη μέτρηση ROUGE. Υπολογίζονται τρεις μετρήσεις αξιολόγησης: rougeN, rougeL, να rougeLsum. rougeN μετρά τον αριθμό αντιστοίχισης n-grams μεταξύ του κειμένου που δημιουργείται από το μοντέλο (αποτέλεσμα σύνοψης) και α reference (εισαγωγή κειμένου). Οι μετρήσεις rougeL και rougeLsum μετρήστε τις μακρύτερες αλληλουχίες λέξεων που ταιριάζουν αναζητώντας τις μεγαλύτερες κοινές υποσυμβολοσειρές στις περιλήψεις που δημιουργούνται και στις περιλήψεις αναφοράς. Για κάθε μέτρηση, υπολογίζονται διαστήματα εμπιστοσύνης για ακρίβεια, ανάκληση και βαθμολογία F1. Δείτε τον ακόλουθο κώδικα:

results = rouge.compute(predictions=[response['summary']], references=[ARTICLE])

rouge1: AggregateScore(low=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), 
mid=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), high=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823))

rouge2: AggregateScore(low=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), 
mid=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), high=Score(precision=0.9565217391304348, recall=0.1004566210045662, 
fmeasure=0.18181818181818182))

rougeL: AggregateScore(low=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), 
mid=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), high=Score(precision=0.8085106382978723, recall=0.08656036446469248, 
fmeasure=0.15637860082304528))

rougeLsum: AggregateScore(low=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), 
mid=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), high=Score(precision=0.9787234042553191, recall=0.10478359908883828, 
fmeasure=0.18930041152263374))

εκκαθάριση

Οι πόροι που δημιουργήθηκαν για αυτήν τη λύση μπορούν να διαγραφούν χρησιμοποιώντας το Διαγράψτε όλους τους πόρους κουμπί από το SageMaker Studio IDE. Κάθε σημειωματάριο παρέχει επίσης μια ενότητα καθαρισμού με τον κωδικό για τη διαγραφή των τελικών σημείων.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Συμπέρασμα

Σε αυτήν την ανάρτηση, δείξαμε πώς να χρησιμοποιούμε σύγχρονες τεχνικές ML για την επίλυση πέντε διαφορετικών εργασιών NLP: σύνοψη εγγράφων, ταξινόμηση κειμένου, ερώτηση και απάντηση, αναγνώριση ονομαστικών οντοτήτων και εξαγωγή σχέσεων χρησιμοποιώντας το Jumpstart. Ξεκινήστε με το Jumpstart τώρα!


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

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Δόκτωρ Σιν Χουάνγκ είναι Applied Scientist για τους ενσωματωμένους αλγόριθμους Amazon SageMaker JumpStart και Amazon SageMaker. Επικεντρώνεται στην ανάπτυξη κλιμακούμενων αλγορίθμων μηχανικής μάθησης. Τα ερευνητικά του ενδιαφέροντα είναι στον τομέα της επεξεργασίας φυσικής γλώσσας, της εξηγήσιμης βαθιάς εκμάθησης σε δεδομένα πινάκων και της ισχυρής ανάλυσης της μη παραμετρικής ομαδοποίησης χωροχρόνου. Έχει δημοσιεύσει πολλές εργασίες σε συνέδρια ACL, ICDM, KDD και Royal Statistical Society: Series A.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Vivek Gangasani είναι ανώτερος αρχιτέκτονας λύσεων μηχανικής μάθησης στο Amazon Web Services. Βοηθά τις Startups να δημιουργήσουν και να λειτουργήσουν εφαρμογές AI/ML. Επί του παρόντος επικεντρώνεται στο να συνδυάσει το υπόβαθρό του στα Containers και τη Machine Learning για να προσφέρει λύσεις σε MLOps, ML Inference και ML χαμηλού κώδικα. Στον ελεύθερο χρόνο του, του αρέσει να δοκιμάζει νέα εστιατόρια και να εξερευνά τις αναδυόμενες τάσεις στην τεχνητή νοημοσύνη και τη βαθιά μάθηση.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Τζέρεμι Κοέν είναι ένας αρχιτέκτονας λύσεων με AWS, όπου βοηθά τους πελάτες να δημιουργήσουν πρωτοποριακές λύσεις που βασίζονται στο cloud. Στον ελεύθερο χρόνο του, απολαμβάνει μικρούς περιπάτους στην παραλία, εξερευνά την περιοχή του κόλπου με την οικογένειά του, διορθώνει πράγματα γύρω από το σπίτι, σπάει τα πράγματα γύρω από το σπίτι και μπάρμπεκιου.

Προσδιορίστε βασικές πληροφορίες από έγγραφα κειμένου μέσω μικρορύθμισης και HPO με το Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Neelam Koshiya είναι αρχιτέκτονας επιχειρησιακής λύσης στο AWS. Η σημερινή της εστίαση είναι να βοηθήσει τους πελάτες των επιχειρήσεων με το ταξίδι υιοθέτησης σύννεφο για στρατηγικά επιχειρησιακά αποτελέσματα. Στον ελεύθερο χρόνο της, απολαμβάνει την ανάγνωση και το ύπαιθρο.

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

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