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 utilizar SageMaker AI XGBoost
Con la SageMaker IA, puedes usar XGBoost como un algoritmo o marco integrado. Al usar XGBoost como marco, tiene más flexibilidad y acceso a escenarios más avanzados, ya que puede personalizar sus propios scripts de entrenamiento. En las siguientes secciones se describe cómo utilizar XGBoost con el SDK de SageMaker Python y la input/output interfaz del algoritmo XGBoost. Para obtener información sobre cómo usar XGBoost desde la interfaz de usuario de Amazon SageMaker Studio Classic, consulte. SageMaker JumpStart modelos preentrenados
Temas
Uso de XGBoost como marco de trabajo
Utilice XGBoost como marco para ejecutar los scripts de entrenamiento personalizados que puedan incorporar procesamiento de datos adicional en sus trabajos de entrenamiento. En el siguiente ejemplo de código, el SDK de SageMaker Python proporciona la API XGBoost como marco. Esto funciona de manera similar a la forma en que la SageMaker IA proporciona otras API de marco TensorFlow, como MXNet 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 AI 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 ejemplo integral del uso de SageMaker AI XGBoost como marco, consulte Regresión con Amazon SageMaker AI
Utilizar XGBoost como algoritmo integrado
Utilice el algoritmo integrado XGBoost para crear un contenedor de entrenamiento de XGBoost tal como se muestra en el ejemplo de código siguiente. Puede detectar automáticamente el URI de la imagen del algoritmo integrado de XGBoost mediante la API de IA. SageMaker image_uris.retrieve Si utilizas la versión 1 del SDK de Amazon SageMaker Pythonget_image_uri API. Para asegurarse de que la API de image_uris.retrieve encuentra el URI correcto, consulte Common parameters for built-in algorithms. A continuación, busque xgboost en la lista completa de URI de imágenes de algoritmos integrados y regiones disponibles.
Tras especificar el URI de la imagen de XGBoost, utilice el contenedor XGBoost para crear un estimador con la API SageMaker AI Estimator e inicie un trabajo de formación. Este modo de algoritmo integrado XGBoost no incorpora su propio script de entrenamiento XGBoost y se ejecuta directamente en los conjuntos de datos de entrada.
importante
Cuando recuperes el URI de la imagen SageMaker AI XGBoost, no utilices ni para la etiqueta URI de la imagen. :latest :1 Debe especificar uno de ellos Versiones compatibles para elegir el contenedor SageMaker AI-managed XGBoost con la versión nativa del paquete XGBoost que desee utilizar. Para encontrar la versión del paquete migrada a los contenedores SageMaker AI XGBoost, consulte las rutas de registro de Docker y el código de ejemplo. A continuación, elija la Región de AWS 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 AI 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 acerca de cómo configurar XGBoost como un algoritmo integrado, consulte los siguientes ejemplos de bloc de notas.
Input/Output interfaz 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 implementación de SageMaker IA de XGBoost admite los siguientes formatos de datos para el entrenamiento y la inferencia:
-
text/libsvm (predeterminado)
-
text/csv
-
application/x-parquet
-
application/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 utilizar XGBoost con 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 datos CSV, la entrada no debe tener un registro de encabezado.
-
Para el entrenamiento con LIBSVM, el algoritmo asume que las columnas posteriores a la columna de etiqueta contienen los pares de valores de índice basados en cero para las características. 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 Recomendación de instancias de EC2 para el algoritmo XGBoost.
Para el modo de entrada de entrenamiento de CSV, la memoria total disponible para el algoritmo debe poder almacenar el conjunto de datos de entrenamiento. La memoria total disponible se calcula como Instance 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 AI XGBoost guarda el modelo en el formato binario interno de XGBoost, utilizando. Booster.save_model Las versiones anteriores utilizaban el módulo pickle de Python para serialize/deserialize el modelo.
nota
Tenga en cuenta las versiones cuando utilice un modelo XGBoost de SageMaker IA en XGBoost de código abierto. Las versiones 1.3-1 y posteriores utilizan el formato binario interno XGBoost, mientras que las versiones anteriores utilizan el módulo Python pickle.
Para usar un modelo entrenado con SageMaker AI XGBoost v1.3-1 o posterior en XGBoost de código abierto
-
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 AI XGBoost en XGBoost de código abierto SageMaker
-
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 AI XGBoost permite a los clientes diferenciar la importancia de los puntos de datos etiquetados asignando un valor de peso a cada instancia. A modo de text/libsvmintroducción, los clientes pueden asignar valores de peso a las instancias de datos colocándolos después de las etiquetas. Por ejemplo,
label:weight idx_0:val_0 idx_1:val_1.... Para text/csvintroducir datos, los clientes deben activar lacsv_weightsmarca en los parámetros y adjuntar los valores de peso en la columna situada después de las etiquetas. Por ejemplo,label,weight,val_0,val_1,....