Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

Ενεργοποιήστε την πλήρως ομομορφική κρυπτογράφηση με τα τελικά σημεία του Amazon SageMaker για ασφαλή εξαγωγή συμπερασμάτων σε πραγματικό χρόνο

Ημερομηνία:

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

Η Leidos συνεργάστηκε με την AWS για να αναπτύξει μια προσέγγιση για τη διατήρηση του απορρήτου, εμπιστευτική μηχανική μάθηση (ML) μοντελοποίησης όπου δημιουργείτε κρυπτογραφημένες αγωγούς με δυνατότητα cloud.

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

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

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

Τα τελικά σημεία αναπτύσσονται με μερικά κλικ ή γραμμές κώδικα χρησιμοποιώντας το SageMaker, το οποίο απλοποιεί τη διαδικασία για τους προγραμματιστές και τους ειδικούς ML να δημιουργήσουν και να εκπαιδεύσουν μοντέλα ML και βαθιάς εκμάθησης στο cloud. Τα μοντέλα που έχουν δημιουργηθεί με χρήση του SageMaker μπορούν στη συνέχεια να αναπτυχθούν ως καταληκτικά σημεία σε πραγματικό χρόνο, το οποίο είναι κρίσιμο για φόρτους εργασίας εξαγωγής συμπερασμάτων όπου έχετε απαιτήσεις πραγματικού χρόνου, σταθερής κατάστασης και χαμηλής καθυστέρησης. Οι εφαρμογές και οι υπηρεσίες μπορούν να καλούν το αναπτυγμένο τελικό σημείο απευθείας ή μέσω ενός αναπτυγμένου χωρίς διακομιστή Amazon API Gateway αρχιτεκτονική. Για να μάθετε περισσότερα σχετικά με τις βέλτιστες αρχιτεκτονικές πρακτικές σε πραγματικό χρόνο, ανατρέξτε στο Δημιουργία ενός REST API με χρήση εκμάθησης μηχανών με Amazon API Gateway πρότυπα χαρτογράφησης και Amazon SageMaker. Το παρακάτω σχήμα δείχνει και τις δύο εκδόσεις αυτών των μοτίβων.

βέλτιστες αρχιτεκτονικές πρακτικές χρόνου

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

Περισσότερα για την πλήρως ομομορφική κρυπτογράφηση

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

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

παράδειγμα υλοποίησης συστήματος FHE

Σε αυτό το σύστημα, εσείς ή ο αξιόπιστος πελάτης σας μπορείτε να κάνετε τα εξής:

  1. Κρυπτογραφήστε τα δεδομένα χρησιμοποιώντας ένα σχήμα δημόσιου κλειδιού FHE. Υπάρχουν μερικά διαφορετικά αποδεκτά συστήματα. Σε αυτό το παράδειγμα, χρησιμοποιούμε το σχήμα CKKS. Για να μάθετε περισσότερα σχετικά με τη διαδικασία κρυπτογράφησης δημόσιου κλειδιού FHE που επιλέξαμε, ανατρέξτε στο Το CKKS εξήγησε.
  2. Στείλτε κρυπτογραφημένα δεδομένα από την πλευρά του πελάτη σε πάροχο ή διακομιστή για επεξεργασία.
  3. Εκτέλεση συμπερασμάτων μοντέλου σε κρυπτογραφημένα δεδομένα. με FHE, δεν απαιτείται αποκρυπτογράφηση.
  4. Τα κρυπτογραφημένα αποτελέσματα επιστρέφονται στον καλούντα και στη συνέχεια αποκρυπτογραφούνται για να αποκαλυφθεί το αποτέλεσμά σας χρησιμοποιώντας ένα ιδιωτικό κλειδί που είναι διαθέσιμο μόνο σε εσάς ή στους έμπιστους χρήστες σας στον πελάτη.

Χρησιμοποιήσαμε την προηγούμενη αρχιτεκτονική για να δημιουργήσουμε ένα παράδειγμα χρησιμοποιώντας τελικά σημεία του SageMaker, Pyfhel ως περιτύλιγμα FHE API που απλοποιεί την ενσωμάτωση με εφαρμογές ML και SEAL ως το υποκείμενο κιτ εργαλείων κρυπτογράφησης FHE.

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

Δημιουργήσαμε ένα παράδειγμα κλιμακούμενου αγωγού FHE στο AWS χρησιμοποιώντας ένα SKLearn logistic regression δοχείο βαθιάς μάθησης με το Σύνολο δεδομένων Iris. Πραγματοποιούμε εξερεύνηση δεδομένων και μηχανική λειτουργιών χρησιμοποιώντας ένα σημειωματάριο SageMaker και, στη συνέχεια, εκτελούμε εκπαίδευση μοντέλων χρησιμοποιώντας ένα Εργασία εκπαίδευσης SageMaker. Το μοντέλο που προκύπτει είναι αναπτυχθεί σε ένα τελικό σημείο του SageMaker σε πραγματικό χρόνο για χρήση από υπηρεσίες πελατών, όπως φαίνεται στο παρακάτω διάγραμμα.

παράδειγμα κλιμακούμενου αγωγού FHE στο AWS

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

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

Για να ακολουθήσετε, υποθέτουμε ότι έχετε ξεκινήσει ένα Σημειωματάριο SageMaker με ένα Διαχείριση ταυτότητας και πρόσβασης AWS (IAM) ρόλο με το AmazonSageMakerFullAccess διαχειριζόμενη πολιτική.

Εκπαιδεύστε το μοντέλο

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

μοντέλο ροής εργασίας εκπαίδευσης

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

# Setup/Train Logistic Regression Estimator # load and preprocess iris dataset
iris = datasets.load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
target_df = pd.DataFrame(data=iris.target, columns=["species"])
iris_df = (iris_df - iris_df.mean(0)) / (iris_df.std(0)) # save iris dataset
iris_df = pd.concat([iris_df, target_df], axis=1)
fname = "iris.csv"
iris_df.to_csv(fname, index=False) # upload dataset to S3
bucket = Session().default_bucket()
upload _path = f"training data/fhe train.csv"
boto3.Session().resource("s3").Bucket (bucket) .Object (upload path).upload file(fname)

Σε αυτό το παράδειγμα, χρησιμοποιούμε λειτουργία σεναρίου σε ένα εγγενώς υποστηριζόμενο πλαίσιο στο SageMaker (scikit-μάθετε), όπου εγκαινιάζουμε τον προεπιλεγμένο εκτιμητή SageMaker SKLearn με ένα προσαρμοσμένο σενάριο εκπαίδευσης για το χειρισμό των κρυπτογραφημένων δεδομένων κατά την εξαγωγή συμπερασμάτων. Για να δείτε περισσότερες πληροφορίες σχετικά με τα εγγενώς υποστηριζόμενα πλαίσια και τη λειτουργία σεναρίου, ανατρέξτε στο Χρησιμοποιήστε μηχανικά πλαίσια εκμάθησης, Python και R με το Amazon SageMaker.

# instantiate estimator
sklearn estimator = SKLearn( role=get_execution_ role(), entry point="fhe train.py", source_dir="fhe_files", instance_type="ml.c4.xlarge" framework version="0.23-1",
)

Τέλος, εκπαιδεύουμε το μοντέλο μας στο σύνολο δεδομένων και αναπτύσσουμε το εκπαιδευμένο μας μοντέλο στον τύπο εμφάνισης της επιλογής μας.

# fit the model
sklearn estimator.fit("s3://" + bucket + "/training data") # construct predictor from trained model
predictor = sklearn_estimator.deploy(instance_type="ml.c4.xlarge", initial_instance_count=1)

Σε αυτό το σημείο, έχουμε εκπαιδεύσει ένα προσαρμοσμένο μοντέλο SKLearn FHE και το αναπτύξαμε σε ένα τελικό σημείο συμπερασμάτων σε πραγματικό χρόνο του SageMaker που είναι έτοιμο να δεχτεί κρυπτογραφημένα δεδομένα.

Κρυπτογράφηση και αποστολή δεδομένων πελάτη

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

ροή εργασιών κρυπτογράφησης και αποστολής δεδομένων πελάτη στο μοντέλο

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

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

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

# Encrypt Data Locally # load and preprocess potentially private data
iris = datasets.load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
target_df = pd.DataFrame(data=iris.target, columns=["species"])
iris_df = (iris_df - iris_df.mean(0)) / (iris_df.std(0)) # setup FHE
HE = Pyfhel()
ckks_params = { “scheme”: "CKKS", "n": 2 ** 14, "scale": 2 ** 30, "qi_sizes": [60, 30, 30, 30, 60],
}
HE.contextGen(**ckks_params)
HE.keyGen()
HE.relinKeyGen()
HE.rotateKeyGen() # encrypt the data
iris_np = np.append( iris_df.to_numpy(), np.ones((len(iris_df), 1)), -1 # append 1 for bias term
)
encrypted_iris = [HE.encryptFrac(row).to_bytes() for row in iris np]

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

# Send data to get prediction # store data and encryption paramters
data dict = { "data": encrypted_iris, "public_key": HE.to_bytes_public_key(), "relin_key": HE.to_bytes_relin key(), "rotate_key": HE.to_bytes_rotate_key(), "context": HE.to_bytes_context(),
} # upload data and encryption parameters to s3
pickle.dump(data_dict, open("request.pkl”, "wb"))
boto3.Session().resource("s3").Bucket(bucket).Object("request.pkl").upload_file("request.pkl") # get predictions from our instance
response = predictor.predict({ "bucket": bucket, "uri": "request.pkl"})
predictions = pickle.loads(response)

Το ακόλουθο στιγμιότυπο οθόνης δείχνει την κεντρική πρόβλεψη εντός fhe_train.py (το παράρτημα δείχνει ολόκληρο το σενάριο εκπαίδευσης).

predictions = []
for data in encrypted_data: encrypted_prediction = [ HE.scalar_prod_plain(data, encoded_coef, in_new_ctxt=True).to_bytes() for encoded_coef in encoded_coefs ] predictions.append(encrypted_prediction)

Υπολογίζουμε τα αποτελέσματα της κρυπτογραφημένης λογιστικής παλινδρόμησης. Αυτός ο κώδικας υπολογίζει ένα κρυπτογραφημένο βαθμωτό προϊόν για κάθε πιθανή κλάση και επιστρέφει τα αποτελέσματα στον πελάτη. Τα αποτελέσματα είναι τα προβλεπόμενα logit για κάθε τάξη σε όλα τα παραδείγματα.

Ο πελάτης επιστρέφει αποκρυπτογραφημένα αποτελέσματα

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

τη ροή εργασιών του πελάτη που ανακτά το κρυπτογραφημένο αποτέλεσμα και το αποκρυπτογραφεί

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

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

# Decrypt results locally # extract predictions from class probabilities
cl_preds = []
for prediction in predictions: logits = [PyCtxt(bytestring=p, scheme="CKKS", pyfhel=HE) for p in prediction] cl = np.argmax([HE.decryptFrac(logit)[0] for logit in logits]) c1_preds.append(cl) # compute accuracy
np.mean(cl_preds == target_df.to_numpy().squeeze()) * 100 # clean up
predictor.delete_endpoint()

εκκαθάριση

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

Αποτελέσματα και εκτιμήσεις

Ένα από τα κοινά μειονεκτήματα της χρήσης του FHE πάνω από τα μοντέλα είναι ότι προσθέτει υπολογιστική επιβάρυνση, γεγονός που —στην πράξη— κάνει το μοντέλο που προκύπτει πολύ αργό για περιπτώσεις διαδραστικής χρήσης. Ωστόσο, σε περιπτώσεις όπου τα δεδομένα είναι εξαιρετικά ευαίσθητα, ίσως αξίζει τον κόπο να αποδεχτείτε αυτήν την αντιστάθμιση καθυστέρησης. Ωστόσο, για την απλή λογιστική μας παλινδρόμηση, είμαστε σε θέση να επεξεργαστούμε 140 δείγματα δεδομένων εισόδου μέσα σε 60 δευτερόλεπτα και να δούμε γραμμική απόδοση. Το παρακάτω γράφημα περιλαμβάνει τον συνολικό χρόνο από άκρο σε άκρο, συμπεριλαμβανομένου του χρόνου που εκτέλεσε ο πελάτης για την κρυπτογράφηση της εισόδου και την αποκρυπτογράφηση των αποτελεσμάτων. Χρησιμοποιεί επίσης το Amazon S3, το οποίο προσθέτει καθυστέρηση και δεν απαιτείται για αυτές τις περιπτώσεις.

γραμμική κλιμάκωση καθώς αυξάνουμε τον αριθμό των παραδειγμάτων από 1 σε 150

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

Αυτό σημαίνει επίσης ότι μπορείτε να κλιμακώσετε τον στόλο συμπερασμάτων σας οριζόντια για μεγαλύτερη απόδοση αιτημάτων πίσω από το τελικό σημείο του SageMaker. Μπορείς να χρησιμοποιήσεις Amazon SageMaker Inference Recommender για να βελτιστοποιήσετε το κόστος του στόλου σας ανάλογα με τις ανάγκες της επιχείρησής σας.

Συμπέρασμα

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

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

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

Παράρτημα

Το πλήρες σενάριο της εκπαίδευσης έχει ως εξής:

import argparse
import os
import pickle
from io import BytesIO import boto3
import joblib
import numpy as np
import pandas as pd
from Pyfhel import PyCtxt, Pyfhel
from sklearn.linear_model import LogisticRegression def model_fn(model_dir): clf = joblib.load(os.path.join(model_dir, "model.joblib")) return clf def input_fn(request_body, request_content_type): loaded_data = np.load(BytesIO(request_body), allow_pickle=True).item() boto3.Session().resource("s3").Bucket(loaded_data["bucket"]).download_file( loaded_data["uri"], "request.pkl" ) loaded_data = pickle.load(open("request.pkl", "rb")) return loaded_data def predict_fn(input_data, model): HE = Pyfhel() data = input_data["data"] HE.from_bytes_context(input_data["context"]) HE.from_bytes_public_key(input_data["public_key"]) HE.from_bytes_relin_key(input_data["relin_key"]) HE.from_bytes_rotate_key(input_data["rotate_key"]) encrypted_data = [PyCtxt(bytestring=row, scheme="CKKS", pyfhel=HE) for row in data] coefs = [ np.append(coef, intercept).astype("float64") for coef, intercept in zip(model.coef_, model.intercept_) ] encoded_coefs = [HE.encodeFrac(coef) for coef in coefs] predictions = [] for data in encrypted_data: encrypted_prediction = [ HE.scalar_prod_plain(data, encoded_coef, in_new_ctxt=True).to_bytes() for encoded_coef in encoded_coefs ] predictions.append(encrypted_prediction) encoded_output = pickle.dumps(predictions) output = np.frombuffer(encoded_output, dtype="byte") return output if __name__ == "__main__": parser = argparse.ArgumentParser() # Data and model directories parser.add_argument("--model-dir", type=str, default=os.environ.get("SM_MODEL_DIR")) parser.add_argument( "--train", type=str, default=os.environ.get("SM_CHANNEL_TRAINING") ) args, _ = parser.parse_known_args() train_df = pd.read_csv(args.train + "/" + "fhe_train.csv") model = LogisticRegression() model.fit(train_df.iloc[:, :-1], train_df.iloc[:, -1]) acc = np.mean(model.predict(train_df.iloc[:, :-1]) == train_df.iloc[:, -1]) * 100 print("****Accuracy****", acc) joblib.dump(model, os.path.join(args.model_dir, "model.joblib"))


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

Liv d' Aliberti είναι ερευνητής στο Leidos AI/ML Accelerator υπό το Γραφείο Τεχνολογίας. Η έρευνά τους επικεντρώνεται στη μηχανική μάθηση για τη διατήρηση του απορρήτου.

Manbir Gulati είναι ερευνητής στο Leidos AI/ML Accelerator υπό το Γραφείο Τεχνολογίας. Η έρευνά του επικεντρώνεται στη διασταύρωση της κυβερνοασφάλειας και των αναδυόμενων απειλών τεχνητής νοημοσύνης.

Τζο Κόβμπα είναι επικεφαλής του Cloud Centre of Excellence Practice στο πλαίσιο του Επιταχυντή Ψηφιακού Εκσυγχρονισμού Leidos υπό το Γραφείο Τεχνολογίας. Στον ελεύθερο χρόνο του, του αρέσει να διαιτητεύει ποδοσφαιρικούς αγώνες και να παίζει σόφτμπολ.

Μπεν Σνάιβλι είναι Ειδικός Αρχιτέκτονας Λύσεων Δημοσίου Τομέα. Συνεργάζεται με κυβερνητικούς, μη κερδοσκοπικούς πελάτες και πελάτες εκπαίδευσης σε μεγάλα δεδομένα και αναλυτικά έργα, βοηθώντας τους να δημιουργήσουν λύσεις χρησιμοποιώντας το AWS. Στον ελεύθερο χρόνο του, προσθέτει αισθητήρες IoT σε όλο το σπίτι του και εκτελεί αναλύσεις σε αυτούς.

Sami Hoda είναι Senior Solutions Architect στο τμήμα Partners Consulting που καλύπτει τον Παγκόσμιο Δημόσιο Τομέα. Ο Σάμι είναι παθιασμένος με έργα όπου η σκέψη σχεδίασης, η καινοτομία και η συναισθηματική νοημοσύνη μπορούν να χρησιμοποιηθούν για να λύσουν προβλήματα και να επηρεάσουν τους ανθρώπους που έχουν ανάγκη.

spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?