Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo usar SageMaker XGBoost
Con SageMaker, se puede utilizar XGBoost como un algoritmo o marco integrado. Cuando se usa XGBoost como marco, tiene más flexibilidad y acceso a escenarios más avanzados, ya que puede personalizar sus propios guiones de entrenamiento. En las siguientes secciones se describe cómo usarlo XGBoost con SageMaker Python SDK y la interfaz de entrada/salida del algoritmo. XGBoost Para obtener información sobre cómo usarlo XGBoost desde la interfaz de usuario clásica de Amazon SageMaker Studio, consulteSageMaker JumpStart modelos preentrenados.
Temas
XGBoostÚselo como marco
XGBoostUtilícelo como marco para ejecutar sus guiones de formación personalizados que puedan incorporar procesamiento de datos adicional en sus trabajos de formación. En el siguiente ejemplo de código, SageMaker Python SDK proporciona el XGBoost API como marco. Esto funciona de forma similar a como SageMaker proporciona otro marco APIs TensorFlow, comoMXNet, y PyTorch.
import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbosity":"1", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "
your_xgboost_abalone_script.py
", framework_version='1.7-1
', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})
Para ver un end-to-end ejemplo de uso SageMaker XGBoost como marco, consulte Regresión con Amazon SageMaker XGBoost
XGBoostUtilícelo como algoritmo integrado
Utilice el algoritmo XGBoost integrado para crear un contenedor de XGBoost entrenamiento, como se muestra en el siguiente ejemplo de código. Puede detectar automáticamente la imagen del algoritmo XGBoost integrado URI mediante SageMaker image_uris.retrieve
API. Si utiliza Amazon SageMaker Python SDKget_image_uri
API. Para asegurarse de que image_uris.retrieve
API encuentra la correctaURI, consulte Parámetros comunes para algoritmos integrados. A continuación, busque xgboost
en la lista completa de imágenes de algoritmos integrados URIs y regiones disponibles.
Después de especificar la XGBoost imagenURI, utilice el XGBoost contenedor para construir un estimador utilizando el SageMaker estimador API e inicie un trabajo de capacitación. Este modo de algoritmo XGBoost integrado no incorpora su propio guion de XGBoost entrenamiento y se ejecuta directamente en los conjuntos de datos de entrada.
importante
Cuando recupere la SageMaker XGBoost imagenURI, no utilice :latest
ni :1
para la URI etiqueta de la imagen. Debe especificar una de las opciones Versiones compatibles para elegir el XGBoost contenedor SageMaker gestionado con la versión XGBoost del paquete nativo que desee utilizar. Para encontrar la versión del paquete migrada a los SageMaker XGBoost contenedores, consulta las rutas de registro de Docker y el código de ejemplo. A continuación Región de AWS, elija la suya y vaya a la sección XGBoost(algoritmo).
import sagemaker import boto3 from sagemaker import image_uris from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "
1.7-1
") # construct a SageMaker estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})
Para obtener más información sobre cómo configurarlo XGBoost como algoritmo integrado, consulta los siguientes ejemplos de cuadernos.
Interfaz de entrada/salida para el algoritmo XGBoost
La potenciación de gradientes funciona en los datos tabulares, con las filas que representan observaciones, una columna que representa la variable de destino o la etiqueta, y las columnas restantes que representan las características.
La SageMaker implementación de XGBoost admite los siguientes formatos de datos para el entrenamiento y la inferencia:
-
text/libsvm (predeterminado)
-
text/csv
-
application/x-parquet
-
aplicación/ x-recordio-protobuf
nota
Hay algunos factores que debemos tener en cuenta en relación con la entrada para el entrenamiento y las inferencias:
-
Para aumentar el rendimiento, le recomendamos que utilice XGBoost el modo Archivo, en el que los datos de Amazon S3 se almacenan en los volúmenes de las instancias de entrenamiento.
-
Para el entrenamiento con entrada en columnas, el algoritmo asume que la variable objetivo (etiqueta) es la primera columna. Para la inferencia, el algoritmo asume que la entrada no dispone de la columna de etiqueta.
-
En el caso de los CSV datos, la entrada no debe tener un registro de encabezado.
-
Para el LIBSVM entrenamiento, el algoritmo asume que las columnas siguientes a la columna de etiqueta contienen los pares de valores de índice basados en cero para las entidades. Así pues, cada fila tiene el formato : <label> <index0>:<value0> <index1>:<value1>.
-
Para obtener información sobre los tipos de instancias y el entrenamiento distribuido, consulte EC2recomendación de instancia para el algoritmo XGBoost.
Para el modo de entrada de CSV entrenamiento, la memoria total disponible para el algoritmo debe poder almacenar el conjunto de datos de entrenamiento. La memoria total disponible se calcula comoInstance Count * the memory available in the InstanceType
. Para el modo de entrada de capacitación de libsvm, no es necesario, pero recomendable.
Para la versión 1.3-1 y versiones posteriores, SageMaker XGBoost guarda el modelo en el formato binario XGBoost interno, utilizando. Booster.save_model
Las versiones anteriores utilizan el módulo Python pickle para serializar/deserializar el modelo.
nota
Tenga en cuenta las versiones cuando utilice un SageMaker XGBoost modelo de código abierto. XGBoost Las versiones 1.3-1 y posteriores utilizan el formato binario XGBoost interno, mientras que las versiones anteriores utilizan el módulo Python pickle.
Para usar un modelo entrenado con la SageMaker XGBoost versión 1.3-1 o posterior en código abierto XGBoost
-
Utilice el siguiente código de Python:
import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(
model_file_path
) xgb_model.predict(dtest
)
Para usar un modelo entrenado con versiones anteriores de código SageMaker XGBoost abierto XGBoost
-
Utilice el siguiente código de Python:
import pickle as pkl import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(
model_file_path
, 'rb')) # prediction with test data pred = model.predict(dtest
)
Para diferenciar la importancia de los puntos de datos etiquetados utilice los soportes de ponderación de instancias
-
SageMaker XGBoostpermite a los clientes diferenciar la importancia de los puntos de datos etiquetados asignando un valor de peso a cada instancia. Para la entrada text/libsvm, los clientes pueden asignar valores de ponderación a las instancias de datos añadiéndolos después de las etiquetas. Por ejemplo,
label:weight idx_0:val_0 idx_1:val_1...
. Para la entrada text/csv, los clientes deben activar la marcacsv_weights
en los parámetros y asociar los valores de ponderación en la columna después de las etiquetas. Por ejemplo,label,weight,val_0,val_1,...
.