Show Menu
TÓPICOS×

Guia do desenvolvedor do SDK

O SDK de criação de modelo permite desenvolver Fórmulas de aprendizado e Pipelines de Recursos personalizados em máquina que podem ser usados na Adobe Experience Platform Data Science Workspace, fornecendo modelos implementáveis no PySpark e no Spark.
Este documento fornece informações sobre as várias classes encontradas no SDK de criação de modelo:

DataLoader

A classe DataLoader encapsula qualquer coisa relacionada à recuperação, filtragem e devolução de dados de entrada brutos. Exemplos de dados de entrada incluem aqueles para treinamento, pontuação ou engenharia de recursos. Os carregadores de dados estendem a classe abstrata DataLoader e devem substituir o método abstrato load .
PySpark
A tabela a seguir descreve os métodos abstratos de uma classe PySpark Data Loader:
Método e descrição Parâmetros
load(self, configProperties, spark)
Carregar e retornar dados da plataforma como um DataFrame dos painéis
  • self : Referência automática
  • configProperties : Mapa de propriedades de configuração
  • spark : Sessão Spark
Faísca
A tabela a seguir descreve os métodos abstratos de uma classe Spark Data Loader:
Método e descrição Parâmetros
load(configProperties, sparkSession)
Carregar e retornar dados da plataforma como um DataFrame
  • configProperties : Mapa de propriedades de configuração
  • sparkSession : Sessão Spark

Carregar dados de um conjunto de dados de plataforma

O exemplo a seguir recupera dados da plataforma por ID e retorna um DataFrame, onde a ID do conjunto de dados ( datasetId ) é uma propriedade definida no arquivo de configuração.
PySpark
# PySpark

from sdk.data_loader import DataLoader

class MyDataLoader(DataLoader):
    """
    Implementation of DataLoader which loads a DataFrame and prepares data
    """

    def load(self, configProperties, spark):
        """
        Load and return dataset

        :param configProperties:    Configuration properties
        :param spark:               Spark session
        :return:                    DataFrame
        """

        # preliminary checks
        if configProperties is None :
            raise ValueError("configProperties parameter is null")
        if spark is None:
            raise ValueError("spark parameter is null")

        # prepare variables
        dataset_id = str(
            configProperties.get("datasetId"))
        service_token = str(
            spark.sparkContext.getConf().get("ML_FRAMEWORK_IMS_ML_TOKEN"))
        user_token = str(
            spark.sparkContext.getConf().get("ML_FRAMEWORK_IMS_TOKEN"))
        org_id = str(
            spark.sparkContext.getConf().get("ML_FRAMEWORK_IMS_ORG_ID"))
        api_key = str(
            spark.sparkContext.getConf().get("ML_FRAMEWORK_IMS_CLIENT_ID"))

        # validate variables
        for arg in ['dataset_id', 'service_token', 'user_token', 'org_id', 'api_key']:
            if eval(arg) == 'None':
                raise ValueError("%s is empty" % arg)

        # load dataset through Spark session
        pd = spark.read.format("com.adobe.platform.dataset") \
            .option('serviceToken', service_token) \
            .option('userToken', user_token) \
            .option('orgId', org_id) \
            .option('serviceApiKey', api_key) \
            .load(dataset_id)

        # return as DataFrame
        return pd

Faísca
// Spark

import com.adobe.platform.ml.config.ConfigProperties
import com.adobe.platform.ml.sdk.DataLoader
import org.apache.spark.sql.{DataFrame, SparkSession}

/**
 * Implementation of DataLoader which loads a DataFrame and prepares data
 */
class MyDataLoader extends DataLoader {

    /**
     * @param configProperties  - Configuration properties
     * @param sparkSession      - Spark session
     * @return                  - DataFrame
     */
    override def load(configProperties: ConfigProperties, sparkSession: SparkSession): DataFrame = {

        // preliminary checks
        require(configProperties != null)
        require(sparkSession != null)

        // prepare variables
        val dataSetId: String = configProperties
            .get("datasetId").getOrElse("")
        val serviceToken: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_ML_TOKEN", "").toString
        val userToken: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_TOKEN", "").toString
        val orgId: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_ORG_ID", "").toString
        val apiKey: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_CLIENT_ID", "").toString

        // validate variables
        List(dataSetId, serviceToken, userToken, orgId, apiKey).foreach(
            value => required(value != "")
        )

        // load dataset through Spark session
        var df = sparkSession.read.format("com.adobe.platform.dataset")
            .option(DataSetOptions.orgId, orgId)
            .option(DataSetOptions.serviceToken, serviceToken)
            .option(DataSetOptions.userToken, userToken)
            .option(DataSetOptions.serviceApiKey, apiKey)
            .load(dataSetId)
        
        // return as DataFrame
        df
    }
}

DataSaver

A classe DataSaver encapsula qualquer coisa relacionada ao armazenamento de dados de saída, incluindo os dados de pontuação ou engenharia de recursos. Os servidores de dados estendem a classe abstrata DataSaver e devem substituir o método abstrato save .
PySpark
A tabela a seguir descreve os métodos abstratos de uma classe PySpark Data Saver:
Método e descrição Parâmetros
save(self, configProperties, dataframe)
Receber dados de saída como um DataFrame e armazená-los em um conjunto de dados da plataforma
  • self : Referência automática
  • configProperties : Mapa de propriedades de configuração
  • dataframe : Dados a serem armazenados na forma de um DataFrame
Faísca
A tabela a seguir descreve os métodos abstratos de uma classe Spark Data Saver:
Método e descrição Parâmetros
save(configProperties, dataFrame)
Receber dados de saída como um DataFrame e armazená-los em um conjunto de dados da plataforma
  • configProperties : Mapa de propriedades de configuração
  • dataFrame : Dados a serem armazenados na forma de um DataFrame

Salvar dados em um conjunto de dados da plataforma

Para armazenar dados em um conjunto de dados da Plataforma, as propriedades devem ser fornecidas ou definidas no arquivo de configuração:
  • Uma ID válida do conjunto de dados da plataforma para a qual os dados serão armazenados
  • A ID do locatário pertencente à sua organização
Os exemplos a seguir armazenam dados ( prediction ) em um conjunto de dados da Plataforma, onde a ID do conjunto de dados ( datasetId ) e a ID do locatário ( tenantId ) são propriedades definidas no arquivo de configuração.
PySpark
# PySpark

from sdk.data_saver import DataSaver
from pyspark.sql.types import StringType, TimestampType


class MyDataSaver(DataSaver):
    """
    Implementation of DataSaver which stores a DataFrame to a Platform dataset
    """

    def save(self, configProperties, prediction):
        """
        Store DataFrame to a Platform dataset

        :param configProperties:    Configuration properties
        :param prediction:          DataFrame to be stored to a Platform dataset
        """

        # Spark context
        sparkContext = prediction._sc

        # preliminary checks
        if configProperties is None:
            raise ValueError("configProperties parameter is null")
        if prediction is None:
            raise ValueError("prediction parameter is null")
        if sparkContext is None:
            raise ValueError("sparkContext parameter is null")

        # prepare variables
        timestamp = "2019-01-01 00:00:00"
        output_dataset_id = str(
            configProperties.get("datasetId"))
        tenant_id = str(
            configProperties.get("tenantId"))
        service_token = str(
            sparkContext.getConf().get("ML_FRAMEWORK_IMS_ML_TOKEN"))
        user_token = str(
            sparkContext.getConf().get("ML_FRAMEWORK_IMS_TOKEN"))
        org_id = str(
            sparkContext.getConf().get("ML_FRAMEWORK_IMS_ORG_ID"))
        api_key = str(
            sparkContext.getConf().get("ML_FRAMEWORK_IMS_CLIENT_ID"))

        # validate variables
        for arg in ['output_dataset_id', 'tenant_id', 'service_token', 'user_token', 'org_id', 'api_key']:
            if eval(arg) == 'None':
                raise ValueError("%s is empty" % arg)

        # store data into dataset
        prediction.write.format("com.adobe.platform.dataset") \
            .option('orgId', org_id) \
            .option('serviceToken', service_token) \
            .option('userToken', user_token) \
            .option('serviceApiKey', api_key) \
            .save(output_dataset_id)

Faísca
// Spark

import com.adobe.platform.dataset.DataSetOptions
import com.adobe.platform.ml.config.ConfigProperties
import com.adobe.platform.ml.impl.Constants
import com.adobe.platform.ml.sdk.DataSaver
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types.TimestampType

/**
 * Implementation of DataSaver which stores a DataFrame to a Platform dataset
 */
class ScoringDataSaver extends DataSaver {

    /**
     * @param configProperties  - Configuration properties
     * @param dataFrame         - DataFrame to be stored to a Platform dataset
     */
    override def save(configProperties: ConfigProperties, dataFrame: DataFrame): Unit =  {

        // Spark session
        val sparkSession = dataFrame.sparkSession
        import sparkSession.implicits._

        // preliminary checks
        require(configProperties != null)
        require(dataFrame != null)

        // prepare variables
        val predictionColumn = configProperties.get(Constants.PREDICTION_COL)
            .getOrElse(Constants.DEFAULT_PREDICTION)
        val timestamp:String = "2019-01-01 00:00:00"
        val output_dataset_id: String = configProperties
            .get("datasetId").getOrElse("")
        val tenant_id:String = configProperties
            .get("tenantId").getOrElse("")
        val serviceToken: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_ML_TOKEN", "").toString
        val userToken: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_TOKEN", "").toString
        val orgId: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_ORG_ID", "").toString
        val apiKey: String = sparkSession.sparkContext.getConf
            .get("ML_FRAMEWORK_IMS_CLIENT_ID", "").toString

        // validate variables
        List(output_dataset_id, tenant_id, serviceToken, userToken, orgId, apiKey).foreach(
            value => require(value != "")
        )

        // store data into dataset
        dataFrame.write.format("com.adobe.platform.dataset")
            .option(DataSetOptions.orgId, orgId)
            .option(DataSetOptions.serviceToken, serviceToken)
            .option(DataSetOptions.userToken, userToken)
            .option(DataSetOptions.serviceApiKey, apiKey)
            .save(output_dataset_id)
    }
}

DatasetTransformer

A classe DatasetTransformer modifica e transforma a estrutura de um conjunto de dados. O Tempo de Execução do Sensei Machine Learning não exige que esse componente seja definido e é implementado com base em seus requisitos.
No que diz respeito a um pipeline de recursos, os transformadores de conjuntos de dados podem ser usados em conjunto com uma fábrica de pipeline de recursos para preparar dados para a engenharia de recursos.
PySpark
A tabela a seguir descreve os métodos de classe de uma classe de transformador de conjunto de dados PySpark:
Método e descrição Parâmetros
resumo transform(self, configProperties, dataset)
Utiliza um conjunto de dados como entrada e saída de um novo conjunto de dados derivado
  • self : Referência automática
  • configProperties : Mapa de propriedades de configuração
  • dataset : O conjunto de dados de entrada para transformação
Faísca
A tabela a seguir descreve os métodos abstratos de uma classe de transformador de conjunto de dados Spark:
Método e descrição Parâmetros
transform(configProperties, dataset)
Utiliza um conjunto de dados como entrada e saída de um novo conjunto de dados derivado
  • configProperties : Mapa de propriedades de configuração
  • dataset : O conjunto de dados de entrada para transformação

FeaturePipelineFactory

A classe FeaturePipelineFactory contém algoritmos de extração de recursos e define os estágios de um Recurso Pipeline de start a fim.
PySpark
A tabela a seguir descreve os métodos de classe de um FeaturePipelineFactory do PySpark:
Método e descrição Parâmetros
resumo create_pipeline(self, configProperties)
Criar e retornar um pipeline Spark que contenha uma série de Transformadores Spark
  • self : Referência automática
  • configProperties : Mapa de propriedades de configuração
resumo get_param_map(self, configProperties, sparkSession)
Recuperar e retornar mapa de parâmetros das propriedades de configuração
  • self : Referência automática
  • configProperties : Propriedades de configuração
  • sparkSession : Sessão Spark
Faísca
A tabela a seguir descreve os métodos de classe de um Spark FeaturePipelineFactory:
Método e descrição Parâmetros
resumo createPipeline(configProperties)
Criar e retornar um Pipeline que contenha uma série de Transformers
  • configProperties : Mapa de propriedades de configuração
resumo getParamMap(configProperties, sparkSession)
Recuperar e retornar mapa de parâmetros das propriedades de configuração
  • configProperties : Propriedades de configuração
  • sparkSession : Sessão Spark

PipelineFactory

A classe PipelineFactory encapsula métodos e definições para treinamento e pontuação de modelo, onde lógica e algoritmos de treinamento são definidos na forma de um Spark Pipeline.
PySpark
A tabela a seguir descreve os métodos de classe de um PySpark PipelineFactory:
Método e descrição Parâmetros
resumo apply(self, configProperties)
Criar e Retornar um pipeline de Faísca que contém a lógica e o algoritmo para treinamento e pontuação de modelo
  • self : Referência automática
  • configProperties : Propriedades de configuração
resumo train(self, configProperties, dataframe)
Retorna um Pipeline personalizado que contém a lógica e o algoritmo para treinar um modelo. Este método não é necessário se for usado um Spark Pipeline
  • self : Referência automática
  • configProperties : Propriedades de configuração
  • dataframe : Conjunto de dados de recursos para entrada de treinamento
resumo score(self, configProperties, dataframe, model)
Pontuação usando o modelo treinado e retornando os resultados
  • self : Referência automática
  • configProperties : Propriedades de configuração
  • dataframe : Conjunto de dados de entrada para pontuação
  • model : Um modelo treinado usado para pontuação
resumo get_param_map(self, configProperties, sparkSession)
Recuperar e retornar mapa de parâmetros das propriedades de configuração
  • self : Referência automática
  • configProperties : Propriedades de configuração
  • sparkSession : Sessão Spark
Faísca
A tabela a seguir descreve os métodos de classe de um Spark PipelineFactory:
Método e descrição Parâmetros
resumo apply(configProperties)
Criar e Retornar um Pipeline que contém a lógica e o algoritmo para treinamento e pontuação do modelo
  • configProperties : Propriedades de configuração
resumo getParamMap(configProperties, sparkSession)
Recuperar e retornar mapa de parâmetros das propriedades de configuração
  • configProperties : Propriedades de configuração
  • sparkSession : Sessão Spark

MLEvaluator

A classe MLEvaluator fornece métodos para definir métricas de avaliação e determinar conjuntos de dados de treinamento e teste.
PySpark
A tabela a seguir descreve os métodos de classe de um PySpark MLEvaluator:
Método e descrição Parâmetros
resumo split(self, configProperties, dataframe)
Divide o conjunto de dados de entrada em subconjuntos de treinamento e teste
  • self : Referência automática
  • configProperties : Propriedades de configuração
  • dataframe : Conjunto de dados de entrada a ser dividido
resumo evaluate(self, dataframe, model, configProperties)
Avalia um modelo treinado e retorna os resultados da avaliação
  • self : Referência automática
  • dataframe : Um DataFrame que consiste em dados de treinamento e teste
  • model : Um modelo treinado
  • configProperties : Propriedades de configuração
Faísca
A tabela a seguir descreve os métodos de classe de um avaliador MLE Spark:
Método e descrição Parâmetros
resumo split(configProperties, data)
Divide o conjunto de dados de entrada em subconjuntos de treinamento e teste
  • configProperties : Propriedades de configuração
  • data : Conjunto de dados de entrada a ser dividido
resumo evaluate(configProperties, model, data)
Avalia um modelo treinado e retorna os resultados da avaliação
  • configProperties : Propriedades de configuração
  • model : Um modelo treinado
  • data : Um DataFrame que consiste em dados de treinamento e teste