Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Servicios web de Amazon

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Servicios web de Amazon

En el panorama actual de la inteligencia artificial en rápida evolución, los modelos de aprendizaje profundo se han encontrado a la vanguardia de la innovación, con aplicaciones que abarcan visión por computadora (CV), procesamiento del lenguaje natural (NLP) y sistemas de recomendación. Sin embargo, el costo creciente asociado con la capacitación y el ajuste de estos modelos plantea un desafío para las empresas. Este costo se debe principalmente al gran volumen de datos utilizados en el entrenamiento de modelos de aprendizaje profundo. Hoy en día, los modelos grandes suelen entrenarse con terabytes de datos y pueden tardar semanas en entrenarse, incluso con GPU o GPU potentes. tren de AWS-hardware basado en. Normalmente, los clientes confían en técnicas y optimizaciones que mejoran la eficiencia del ciclo de entrenamiento de un modelo, como núcleos o capas optimizados, entrenamiento de precisión mixto o características como la Amazon SageMaker Bibliotecas de formación distribuidas. Sin embargo, hoy en día se presta menos atención a la eficiencia de los datos de entrenamiento en sí. No todos los datos contribuyen por igual al proceso de aprendizaje durante el entrenamiento del modelo: una proporción significativa de los recursos computacionales puede gastarse en procesar ejemplos simples que no contribuyen sustancialmente a la precisión general del modelo.

Los clientes tradicionalmente han confiado en técnicas de preprocesamiento como el muestreo ascendente o descendente y la deduplicación para refinar y mejorar la calidad de la información de sus datos. Estas técnicas pueden ayudar, pero a menudo requieren mucho tiempo, experiencia especializada en ciencia de datos y, en ocasiones, pueden ser más un arte que una ciencia. Los clientes a menudo también confían en conjuntos de datos seleccionados, como Web refinada, para mejorar el rendimiento de sus modelos; sin embargo, estos conjuntos de datos no siempre son de código abierto y, a menudo, tienen un propósito más general y no están relacionados con su caso de uso específico.

¿De qué otra manera se puede superar esta ineficiencia relacionada con muestras de datos con poca información durante el entrenamiento del modelo?

Nos complace anunciar una vista previa pública del tamizado inteligente, una nueva capacidad de SageMaker que puede reducir el costo de entrenar modelos de aprendizaje profundo hasta en un 35 %. El tamizado inteligente es una nueva técnica de eficiencia de datos que analiza activamente sus muestras de datos durante el entrenamiento y filtra las muestras que son menos informativas para el modelo. Al entrenar en un subconjunto más pequeño de datos con solo las muestras que más contribuyen a la convergencia del modelo, el entrenamiento total y el costo disminuyen con un impacto mínimo o nulo en la precisión. Además, debido a que la función funciona en línea durante el entrenamiento del modelo, el filtrado inteligente no requiere cambios en los datos ascendentes ni en el proceso de entrenamiento descendente.

En esta publicación, tratamos los siguientes temas:

  • La nueva capacidad de tamizado inteligente en SageMaker y cómo funciona
  • Cómo utilizar el tamizado inteligente con cargas de trabajo de capacitación de PyTorch

También puede consultar nuestra documentación y cuadernos de muestra para obtener recursos adicionales sobre cómo comenzar con el tamizado inteligente.

Cómo funciona el tamizado inteligente de SageMaker

Comenzamos esta publicación con una descripción general de cómo la capacidad de filtrado inteligente puede acelerar el entrenamiento de su modelo en SageMaker.

La tarea del filtrado inteligente es examinar los datos de entrenamiento durante el proceso de entrenamiento y solo alimentar el modelo con las muestras más informativas. Durante un entrenamiento típico con PyTorch, los datos se envían iterativamente en lotes al bucle de entrenamiento y a los dispositivos aceleradores (por ejemplo, GPU o chips Trainium) por parte del Cargador de datos PyTorch. El filtrado inteligente se implementa en esta etapa de carga de datos y, por lo tanto, es independiente de cualquier preprocesamiento de datos ascendente en su proceso de capacitación.

El tamizado inteligente utiliza su modelo y una función de pérdida especificada por el usuario para realizar un avance evaluativo de cada muestra de datos a medida que se carga. Las muestras con altas pérdidas afectarán materialmente el entrenamiento del modelo y, por lo tanto, se utilizan en el entrenamiento; las muestras de datos que tienen pérdidas relativamente bajas se apartan y se excluyen del entrenamiento.

Un dato clave para el filtrado inteligente es la proporción de datos que se excluirán: por ejemplo, al establecer la proporción en 33 % (valor_beta=0.5), las muestras que se encuentren aproximadamente en el tercio inferior de la pérdida de cada lote se excluirán del entrenamiento. Cuando se han identificado suficientes muestras con altas pérdidas para completar un lote, los datos se envían a través del ciclo de entrenamiento completo y el modelo aprende y se entrena normalmente. No es necesario realizar ningún cambio en su ciclo de entrenamiento cuando la selección inteligente está habilitada.

El siguiente diagrama ilustra este flujo de trabajo.

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.

Al incluir solo un subconjunto de sus datos de entrenamiento, el filtrado inteligente reduce el tiempo y los cálculos necesarios para entrenar el modelo. En nuestras pruebas, logramos una reducción de hasta casi el 40 % en el tiempo y el costo total de capacitación. Con una selección inteligente de datos, el impacto en la precisión del modelo puede ser mínimo o nulo porque las muestras excluidas tuvieron pérdidas relativamente bajas para el modelo. En la siguiente tabla, incluimos un conjunto de resultados experimentales que demuestran la mejora posible del rendimiento con el tamizado inteligente de SageMaker.

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.

En la tabla, la columna % aceptado indica la proporción de datos que se incluyen y utilizan en el ciclo de entrenamiento. Aumentar este parámetro ajustable disminuye el costo (como se demuestra en la columna % de ahorro de IMR), pero también puede afectar la precisión. La configuración adecuada para % aceptado es una función de su conjunto de datos y modelo; debe experimentar y ajustar este parámetro para lograr el mejor equilibrio entre costo reducido e impacto en la precisión.

Resumen de la solución

En las siguientes secciones, analizamos un ejemplo práctico de cómo habilitar el filtrado inteligente con un trabajo de capacitación de PyTorch en SageMaker. Si desea comenzar rápidamente, puede saltar a la Ejemplos de PyTorch o PyTorch Lightning.

Requisitos previos

Suponemos que ya sabe cómo entrenar un modelo usando PyTorch o PyTorch Lightning usando el SDK de Python de SageMaker y la clase Estimator usando los contenedores de aprendizaje profundo de SageMaker para el entrenamiento. Si no, consulte Uso del SDK de Python de SageMaker Antes de continuar.

Comience con el tamizado inteligente de SageMaker

En un trabajo típico de capacitación de PyTorch, usted inicializa el proceso de capacitación de PyTorch. cargador de datos con su conjunto de datos y otros parámetros requeridos, que proporciona lotes de entrada a medida que avanza la capacitación. Para permitir el filtrado inteligente de tus datos de entrenamiento, utilizarás un nuevo DataLoader clase: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Esta clase se utiliza como contenedor encima de su PyTorch existente. DataLoader y el proceso de formación utilizará en su lugar SiftingDataloader para obtener lotes de entrada. El SiftingDataLoader obtiene el lote de entrada de su PyTorch original DataLoader, evalúa la importancia de las muestras en el lote y construye un lote tamizado con muestras de alta pérdida, que luego pasan al paso de capacitación. El contenedor se parece al siguiente código:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

La SiftingDataloader requiere algunos parámetros adicionales para analizar sus datos de entrenamiento, que puede especificar a través del sift_config parámetro. Primero, crea un smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig objeto. Este objeto contiene los parámetros configurables y requeridos. beta_value y loss_history_length, que definen respectivamente la proporción de muestras que se conservarán y la ventana de muestras que se incluirán al evaluar la pérdida relativa. Tenga en cuenta que, debido a que el filtrado inteligente utiliza su modelo para definir la importancia de la muestra, puede haber implicaciones negativas si utilizamos un modelo con ponderaciones completamente aleatorias. En su lugar, puedes utilizar loss_based_sift_config y sift_delay para retrasar el proceso de filtrado hasta que los pesos de los parámetros en el modelo se actualicen más allá de los valores aleatorios. (Para más detalles, consulte Aplique un filtrado inteligente a su guión de entrenamiento.) En el siguiente código, definimos sift_config y especificar beta_value y loss_history_length, así como retrasar el inicio del tamizado utilizando loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

A continuación, también debes incluir un loss_impl parámetro en el SiftingDataloader objeto. El filtrado inteligente funciona a nivel de muestra individual y es crucial tener acceso a un método de cálculo de pérdidas para determinar la importancia de la muestra. Debe implementar un método de pérdida por tamizado que devuelva un tensor nx1, que contenga valores de pérdida de n muestras. Normalmente, usted especifica el mismo método de pérdida utilizado por su model durante el entrenamiento. Finalmente, incluya un puntero a su modelo en el SiftingDataloader objeto, que se utiliza para evaluar muestras antes de incluirlas en el entrenamiento. Vea el siguiente código:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

El siguiente código muestra un ejemplo completo de cómo habilitar el filtrado inteligente con un trabajo de capacitación BERT existente:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

Conclusión

En esta publicación, exploramos la vista previa pública del tamizado inteligente, una nueva capacidad de SageMaker que puede reducir los costos de capacitación del modelo de aprendizaje profundo hasta en un 35 %. Esta característica mejora la eficiencia de los datos durante el entrenamiento y filtra muestras de datos menos informativas. Al incluir solo los datos más impactantes para la convergencia de modelos, puede reducir significativamente el tiempo y los gastos de capacitación, manteniendo al mismo tiempo la precisión. Es más, se integra perfectamente en sus procesos existentes sin necesidad de modificar sus datos o su proceso de capacitación.

Para profundizar en el filtrado inteligente de SageMaker, explorar cómo funciona e implementarlo con cargas de trabajo de capacitación de PyTorch, consulte nuestra documentación y cuadernos de muestra y comience con esta nueva capacidad.


Sobre los autores

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Roberto Van Dusen es gerente senior de productos en Amazon SageMaker. Lidera marcos, compiladores y técnicas de optimización para la capacitación en aprendizaje profundo.

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.K. Lokesh Kumar Reddy es ingeniero sénior en el equipo de IA aplicada de Amazon. Se centra en técnicas eficientes de capacitación en aprendizaje automático y en la creación de herramientas para mejorar los sistemas de inteligencia artificial conversacional. En su tiempo libre le gusta buscar nuevas culturas, nuevas experiencias y mantenerse actualizado con las últimas tendencias tecnológicas.

Acelere la capacitación de modelos de aprendizaje profundo hasta un 35 % con el tamizado inteligente de Amazon SageMaker | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Abhishek Dan Es gerente de desarrollo senior en el equipo de IA aplicada de Amazon y trabaja en sistemas de inteligencia artificial conversacional y aprendizaje automático. Le apasionan las tecnologías de IA y trabaja en la intersección de la ciencia y la ingeniería para mejorar las capacidades de los sistemas de IA para crear interacciones entre humanos y computadoras más intuitivas y fluidas. Actualmente está creando aplicaciones en grandes modelos de lenguaje para impulsar la eficiencia y mejoras de CX para Amazon.

Sello de tiempo:

Mas de Aprendizaje automático de AWS