View a markdown version of this page

SageMaker Esempi di AI Spark per Scala - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SageMaker Esempi di AI Spark per Scala

Amazon SageMaker AI fornisce una libreria Apache Spark (SageMaker AI Spark) che puoi usare per integrare le tue applicazioni Apache Spark con l'IA. SageMaker Questo argomento contiene esempi per aiutarti a iniziare a usare AI Spark con SageMaker Scala. Per informazioni sulla libreria SageMaker AI Apache Spark, consulta. SageMaker Apache Spark con Amazon AI

Download di Spark per Scala

Puoi scaricare il codice sorgente e gli esempi per le librerie Python Spark (PySpark) e Scala dal repository AI Spark. SageMaker GitHub

Per istruzioni dettagliate sull'installazione della libreria AI Spark, SageMaker vedi AI Spark. SageMaker

SageMaker AI Spark SDK per Scala è disponibile nel repository centrale Maven. Aggiungi la libreria Spark al progetto aggiungendo la seguente dipendenza al file pom.xml:

  • Se il progetto è stato creato con Maven, aggiungi quanto segue al file pom.xml:

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.2.0-1.0</version> </dependency>
  • Se il progetto dipende da Spark 2.1, aggiungi quanto segue al tuo file pom.xml:

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.1.1-1.0</version> </dependency>

Esempio di Spark per Scala

Questa sezione fornisce un esempio di codice che utilizza la libreria Apache Spark Scala fornita da SageMaker AI per addestrare un modello in SageMaker AI utilizzando s nel cluster Spark. DataFrame Il codice è seguito da esempi sulle procedure Usa algoritmi personalizzati per l'addestramento e l'hosting di modelli su Amazon AI con Apache Spark SageMaker e Usa il in una pipeline SageMakerEstimator Spark.

L'esempio seguente ospita gli artefatti del modello risultanti utilizzando i servizi di hosting AI. SageMaker Per maggiori dettagli su questo esempio, vedi Getting Started: K-Means Clustering on SageMaker AI with SageMaker AI Spark SDK Specificamente, questo esempio fa quanto segue:

  • Utilizza il metodo KMeansSageMakerEstimator per adattare (o addestrare) un modello ai dati

    Poiché l'esempio utilizza l'algoritmo k-means fornito da SageMaker AI per addestrare un modello, si utilizza il. KMeansSageMakerEstimator Per addestrare il modello, utilizza le immagini di numeri a cifra singola scritti a mano (dal set di dati MNIST) e fornisci le immagini come input DataFrame. Per tua comodità, SageMaker AI fornisce questo set di dati in un bucket Amazon S3.

    In risposta, lo strumento di valutazione restituisce un oggetto SageMakerModel.

  • Ottiene le interferenze utilizzando il SageMakerModel preparato

    Per ottenere inferenze da un modello ospitato in SageMaker AI, si chiama il metodo. SageMakerModel.transform Trasmetti un DataFrame come input. Il metodo trasforma l'input DataFrame a un altro DataFrame contenente le interferenze ottenute dal modello.

    Per una determinata immagine di input di un numero a singola cifra scritto a mano, l'interferenza individua un cluster a cui appartiene l'immagine. Per ulteriori informazioni, consulta K-Means Algoritmo.

import org.apache.spark.sql.SparkSession import com.amazonaws.services.sagemaker.sparksdk.IAMRole import com.amazonaws.services.sagemaker.sparksdk.algorithms import com.amazonaws.services.sagemaker.sparksdk.algorithms.KMeansSageMakerEstimator val spark = SparkSession.builder.getOrCreate // load mnist data as a dataframe from libsvm val region = "us-east-1" val trainingData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/") val testData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/") val roleArn = "arn:aws:iam::account-id:role/rolename" val estimator = new KMeansSageMakerEstimator( sagemakerRole = IAMRole(roleArn), trainingInstanceType = "ml.p2.xlarge", trainingInstanceCount = 1, endpointInstanceType = "ml.c4.xlarge", endpointInitialInstanceCount = 1) .setK(10).setFeatureDim(784) // train val model = estimator.fit(trainingData) val transformedData = model.transform(testData) transformedData.show

Il codice esemplificativo si comporta come segue:

  • Carica il set di dati MNIST da un bucket S3 fornito da SageMaker AI (awsai-sparksdk-dataset) in un Spark (): DataFrame mnistTrainingDataFrame

    // Get a Spark session. val spark = SparkSession.builder.getOrCreate // load mnist data as a dataframe from libsvm val region = "us-east-1" val trainingData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/") val testData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/") val roleArn = "arn:aws:iam::account-id:role/rolename" trainingData.show()

    Il metodo show visualizza le prime 20 righe del frame di dati:

    +-----+--------------------+ |label| features| +-----+--------------------+ | 5.0|(784,[152,153,154...| | 0.0|(784,[127,128,129...| | 4.0|(784,[160,161,162...| | 1.0|(784,[158,159,160...| | 9.0|(784,[208,209,210...| | 2.0|(784,[155,156,157...| | 1.0|(784,[124,125,126...| | 3.0|(784,[151,152,153...| | 1.0|(784,[152,153,154...| | 4.0|(784,[134,135,161...| | 3.0|(784,[123,124,125...| | 5.0|(784,[216,217,218...| | 3.0|(784,[143,144,145...| | 6.0|(784,[72,73,74,99...| | 1.0|(784,[151,152,153...| | 7.0|(784,[211,212,213...| | 2.0|(784,[151,152,153...| | 8.0|(784,[159,160,161...| | 6.0|(784,[100,101,102...| | 9.0|(784,[209,210,211...| +-----+--------------------+ only showing top 20 rows

    In ogni riga:

    • La colonna label individua l'etichetta dell'immagine. Ad esempio, se l'immagine del numero scritto a mano è la cifra 5, il valore dell'etichetta è 5.

    • La colonna features archivia un vettore (org.apache.spark.ml.linalg.Vector) dei valori di Double. Si tratta delle 784 caratteristiche del numero scritto a mano (ogni numero scritto a mano è un'immagine da 28 x 28 pixel, che crea 784 caratteristiche).

  • Crea uno stimatore AI () SageMaker KMeansSageMakerEstimator

    Il fit metodo di questo stimatore utilizza l'algoritmo k-means fornito dall' SageMaker IA per addestrare i modelli utilizzando un input. DataFrame In risposta, restituisce un oggetto SageMakerModel che può essere utilizzato per ottenere le inferenze.

    Nota

    KMeansSageMakerEstimatorEstende l' SageMaker IASageMakerEstimator, che estende Apache Spark. Estimator

    val estimator = new KMeansSageMakerEstimator( sagemakerRole = IAMRole(roleArn), trainingInstanceType = "ml.p2.xlarge", trainingInstanceCount = 1, endpointInstanceType = "ml.c4.xlarge", endpointInitialInstanceCount = 1) .setK(10).setFeatureDim(784)

    I parametri del costruttore forniscono informazioni che vengono utilizzate per addestrare un modello e distribuirlo sull'IA: SageMaker

    • trainingInstanceType e trainingInstanceCount: individuano il tipo e il numero delle istanze di calcolo ML da utilizzare per l'addestramento del modello.

    • endpointInstanceType—Identifica il tipo di istanza di calcolo ML da utilizzare per ospitare il modello in AI. SageMaker Per impostazione predefinita, viene utilizzata un'istanza di calcolo ML.

    • endpointInitialInstanceCount—Identifica il numero di istanze di calcolo ML che inizialmente supportano l'endpoint che ospita il modello in AI. SageMaker

    • sagemakerRole— SageMaker L'IA assume questo ruolo IAM per eseguire attività per tuo conto. Ad esempio, per l’addestramento del modello, legge i dati dal bucket S3 e scrive i risultati dell’addestramento (artefatti del modello) nello stesso.

      Nota

      Questo esempio crea implicitamente un client SageMaker AI. Per creare questo client, devi fornire le tue credenziali, L'API utilizza queste credenziali per autenticare le richieste all'IA. SageMaker Ad esempio, utilizza le credenziali per autenticare le richieste per creare un processo di formazione e le chiamate API per l'implementazione del modello utilizzando i servizi di hosting AI. SageMaker

    • Una volta creato l'oggetto KMeansSageMakerEstimator, devi impostare i seguenti parametri che verranno utilizzato per l’addestramento del modello:

      • Numero di cluster che l'algoritmo k-means deve creare durante l’addestramento del modello. Possono essere specificati 10 cluster, uno per ogni cifra, da 0 a 9.

      • Parametro che verifica se ogni immagine di input dispone di 784 caratteristiche (ogni numero scritto a mano è un'immagine da 28 x 28 pixel, che crea 784 caratteristiche).

  • Chiama il metodo fit dello strumento di valutazione.

    // train val model = estimator.fit(trainingData)

    Trasmetti l'input DataFrame come parametro. Il modello svolge tutto il lavoro di addestramento del modello e di implementazione nell'intelligenza artificiale. SageMaker Per ulteriori informazioni, consultare Integra la tua applicazione Apache Spark con l'IA SageMaker. In risposta, si ottiene un SageMakerModel oggetto, che è possibile utilizzare per ottenere inferenze dal modello implementato nell'IA. SageMaker

    Puoi fornire solo l'input DataFrame. Non è necessario specificare il percorso di registro dell'algoritmo k-means utilizzato per l’addestramento del modello in quanto la KMeansSageMakerEstimator lo conosce.

  • Chiama il SageMakerModel.transform metodo per ottenere inferenze dal modello implementato nell'IA. SageMaker

    Il metodo transform acquisisce un DataFrame come input, lo converte e restituisce un altro DataFrame contenente le interferenze ottenute dal modello.

    val transformedData = model.transform(testData) transformedData.show

    Per semplicità, utilizziamo lo stesso DataFrame come input per il metodo transform che abbiamo utilizzato per l’addestramento del modello in questo esempio. Il metodo transform esegue quanto segue:

    • Serializza la features colonna nell'input di protobuf e la invia DataFrame all'endpoint AI per l'inferenza. SageMaker

    • Deserializza la risposta protobuf nelle due colonne aggiuntive (distance_to_cluster e closest_cluster) nel DataFrame convertito.

    Il metodo show ottiene le inferenze per le prime 20 righe nell'input DataFrame:

    +-----+--------------------+-------------------+---------------+ |label| features|distance_to_cluster|closest_cluster| +-----+--------------------+-------------------+---------------+ | 5.0|(784,[152,153,154...| 1767.897705078125| 4.0| | 0.0|(784,[127,128,129...| 1392.157470703125| 5.0| | 4.0|(784,[160,161,162...| 1671.5711669921875| 9.0| | 1.0|(784,[158,159,160...| 1182.6082763671875| 6.0| | 9.0|(784,[208,209,210...| 1390.4002685546875| 0.0| | 2.0|(784,[155,156,157...| 1713.988037109375| 1.0| | 1.0|(784,[124,125,126...| 1246.3016357421875| 2.0| | 3.0|(784,[151,152,153...| 1753.229248046875| 4.0| | 1.0|(784,[152,153,154...| 978.8394165039062| 2.0| | 4.0|(784,[134,135,161...| 1623.176513671875| 3.0| | 3.0|(784,[123,124,125...| 1533.863525390625| 4.0| | 5.0|(784,[216,217,218...| 1469.357177734375| 6.0| | 3.0|(784,[143,144,145...| 1736.765869140625| 4.0| | 6.0|(784,[72,73,74,99...| 1473.69384765625| 8.0| | 1.0|(784,[151,152,153...| 944.88720703125| 2.0| | 7.0|(784,[211,212,213...| 1285.9071044921875| 3.0| | 2.0|(784,[151,152,153...| 1635.0125732421875| 1.0| | 8.0|(784,[159,160,161...| 1436.3162841796875| 6.0| | 6.0|(784,[100,101,102...| 1499.7366943359375| 7.0| | 9.0|(784,[209,210,211...| 1364.6319580078125| 6.0| +-----+--------------------+-------------------+---------------+

    Puoi interpretare i dati come segue:

    • Un numero scritto a mano con label 5 appartiene al cluster 4 (closest_cluster).

    • Un numero scritto a mano con label 0 appartiene al cluster 5.

    • Un numero scritto a mano con label 4 appartiene al cluster 9.

    • Un numero scritto a mano con label 1 appartiene al cluster 6.