[ad_1]
En el panorama actual de la inteligencia artificial en rápida evolución, los modelos de aprendizaje profundo están 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, los crecientes costos asociados con la capacitación y el ajuste de estos modelos plantean un desafío para las empresas, debido principalmente al gran volumen de datos utilizados en la capacitación de modelos de aprendizaje profundo. Hoy en día, los modelos grandes suelen entrenarse con terabytes de datos y el entrenamiento puede llevar semanas, incluso con una GPU potente o hardware basado en AWS Trainium. 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 mixta o características como las bibliotecas de entrenamiento distribuidas de Amazon SageMaker. 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 parte significativa de los recursos computacionales se puede gastar en procesar ejemplos simples que no hacen una contribución significativa al la precisión general del modelo.
Los clientes tradicionalmente confían 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 ser útiles, 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 también suelen confiar en conjuntos de datos seleccionados como RefinedWeb para mejorar el rendimiento de sus modelos; Sin embargo, estos conjuntos de datos no siempre son completamente de código abierto y, a menudo, tienen fines más generales y no están relacionados con su caso de uso específico.
¿De qué otra manera se puede superar esta ineficiencia asociada con muestras de datos con poca información durante el entrenamiento del modelo?
Nos complace anunciar una vista previa pública de Smart Sifting, una nueva característica de SageMaker que puede reducir el costo de entrenar modelos de aprendizaje profundo hasta en un 35 %. Smart Sifting 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 con un subconjunto más pequeño de datos con solo las muestras que más contribuyen a la convergencia del modelo, la capacitación y los costos generales disminuyen con un impacto mínimo o nulo en la precisión. Además, debido a que la función se ejecuta en línea durante el entrenamiento del modelo, Smart Sifting no requiere ningún cambio en los datos ascendentes ni en el proceso de entrenamiento descendente.
En este post tratamos los siguientes temas:
- La nueva función Smart Sifting en SageMaker y cómo funciona
- Cómo utilizar Smart Sifting con cargas de trabajo de capacitación de PyTorch
También puede consultar nuestra documentación y cuadernos de muestra para obtener recursos adicionales que le ayudarán a comenzar con Smart Sifting.
Así funciona el tamizado inteligente de SageMaker
Comenzaremos esta publicación con una descripción general de cómo la función Smart Sifting puede acelerar el entrenamiento de su modelo en SageMaker.
El trabajo de Smart Sifting es examinar los datos de entrenamiento durante el proceso de entrenamiento y alimentar solo las muestras más significativas al modelo. Durante una sesión de entrenamiento típica con PyTorch, los datos del PyTorch DataLoader se envían iterativamente en lotes al bucle de entrenamiento y a los dispositivos aceleradores (por ejemplo, GPU o chips Trainium). Smart Sifting se implementa en esta fase de carga de datos y, por lo tanto, es independiente de cualquier preprocesamiento de datos ascendente en su proceso de capacitación.
Smart Sifting utiliza su modelo y una función de pérdida especificada por el usuario para realizar un pase de evaluación hacia adelante a medida que se carga cada muestra de datos. Las muestras de alta pérdida tienen un impacto significativo en el entrenamiento del modelo y, por lo tanto, se utilizan en el entrenamiento. Las muestras de datos que tienen pérdidas relativamente bajas se reservan y excluyen del entrenamiento.
Una entrada importante para Smart Sifting es la proporción de datos que se excluirán: por ejemplo, si establece la proporción en 33 % (valor beta = 0,5), las muestras en el tercio inferior de la pérdida de cada lote se excluirán del entrenamiento. Cuando se han identificado suficientes muestras con pérdida para completar un lote, los datos se envían a través de todo el ciclo de entrenamiento y el modelo aprende y se entrena normalmente. Con Smart Sifting habilitado, no necesitas realizar ningún cambio en tu ciclo de entrenamiento.
El siguiente diagrama ilustra este flujo de trabajo.
Al incluir solo un subconjunto de sus datos de entrenamiento, Smart Sifting reduce el tiempo y el esfuerzo computacional necesarios para entrenar el modelo. En nuestras pruebas, pudimos reducir el tiempo y los costos totales de capacitación hasta en un 40%. Con la evaluación inteligente de datos, el impacto en la precisión del modelo puede ser mínimo o nulo porque las muestras excluidas del modelo tuvieron pérdidas relativamente bajas. La siguiente tabla proporciona una serie de resultados experimentales que demuestran la mejora posible del rendimiento con SageMaker Smart Sifting.
En la tabla, la columna % aceptado indica la proporción de datos incluidos y utilizados en el ciclo de entrenamiento. Aumentar este parámetro ajustable reducirá los costos (como se muestra 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 optimizar este parámetro para lograr el mejor equilibrio entre costo reducido e impacto en la precisión.
Descripción general de la solución
En las siguientes secciones, veremos un ejemplo práctico de cómo habilitar Smart Sifting con un trabajo de capacitación de PyTorch en SageMaker. Si desea comenzar rápidamente, puede pasar a los ejemplos de PyTorch o PyTorch Lightning.
requisitos
Suponemos que ya sabe cómo entrenar un modelo con PyTorch o PyTorch Lightning usando el SDK de Python de SageMaker y la clase Estimator usando contenedores de aprendizaje profundo de SageMaker para el entrenamiento. De lo contrario, consulte la sección «Uso del SDK de Python de SageMaker» antes de continuar.
Comience con el tamizado inteligente de SageMaker
En un trabajo de entrenamiento típico de PyTorch, inicializa el DataLoader de entrenamiento de PyTorch con su conjunto de datos y otros parámetros requeridos, que proporciona lotes de entrada a medida que avanza el entrenamiento. Para habilitar la visualización inteligente de tus datos de entrenamiento, utiliza uno nuevo DataLoader
Clase: smart_sifting.dataloader.sift_dataloader.SiftingDataloader
. Esta clase se utiliza como contenedor sobre su PyTorch existente. DataLoader
y en su lugar se utiliza el proceso de formación SiftingDataloader
para obtener lotes de entrada. El SiftingDataLoader
Obtiene la pila de entrada de su PyTorch original DataLoader
, evalúa la importancia de las muestras en el lote y crea un lote tamizado de muestras de alta pérdida, que luego se pasan al paso de capacitación. El contenedor se parece al siguiente código:
El SiftingDataloader
El análisis de tus datos de entrenamiento requiere algunos parámetros adicionales, que puedes especificar a través de sift_config
Parámetro. Primero crea uno smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig
Objeto. Este objeto contiene lo que es configurable y requerido. beta_value
Y loss_history_length
, cada uno de los cuales define la proporción de muestras que se retendrán y la ventana de muestras que se considerarán al evaluar la pérdida relativa. Tenga en cuenta que si utilizamos un modelo con pesos completamente aleatorios, puede tener un impacto negativo porque Smart Sifting utiliza su modelo para definir la importancia de la muestra. En su lugar puedes usar loss_based_sift_config
y un sift_delay
retrasar el proceso de selección hasta que los pesos de los parámetros en el modelo se actualicen más allá de los valores aleatorios. (Para obtener más detalles, consulte Aplicación de Smart Sifting a su secuencia de comandos de entrenamiento). En el siguiente código, definimos sift_config
y especificar beta_value
Y loss_history_length
además de retrasar el inicio del tamizado loss_based_sift_config
:
A continuación también necesitas agregar un loss_impl
Parámetros en el SiftingDataloader
Objeto. El tamizado inteligente funciona a nivel de una sola muestra y es importante 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 de tamiz que devuelva un tensor nx1 que contenga valores de pérdida de n muestras. Por lo general, especifica el mismo método de pérdida utilizado por usted. model
durante el entrenamiento. Finalmente, agregue un puntero a su modelo en el SiftingDataloader
Objeto utilizado para evaluar muestras antes de incluirlas en el entrenamiento. Vea el siguiente código:
El siguiente código muestra un ejemplo completo de cómo habilitar Smart Sifting con un trabajo de capacitación BERT existente:
Diploma
En esta publicación, examinamos la vista previa pública de Smart Sifting, una nueva función de SageMaker que puede reducir los costos de capacitación para modelos de aprendizaje profundo hasta en un 35 %. Esta característica mejora la eficiencia de los datos durante el entrenamiento al filtrar muestras de datos menos informativas. Al incluir solo los datos más significativos para la convergencia del modelo, puede reducir significativamente el tiempo y el costo de capacitación mientras mantiene la precisión. Además, se integra perfectamente en sus procesos existentes sin requerir cambios en sus datos o en su proceso de capacitación.
Para profundizar en SageMaker Smart Sifting, 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 función.
Sobre los autores
Robert Van Dusen es gerente senior de productos en Amazon SageMaker. Lidera marcos, compiladores y técnicas de optimización para la formación en aprendizaje profundo.
K. Lokesh Kumar Reddy es ingeniero líder del equipo de IA aplicada de Amazon. Su atención se centra en técnicas eficientes de capacitación en aprendizaje automático y en el desarrollo de herramientas para mejorar los sistemas de inteligencia artificial conversacional. En su tiempo libre, le gusta explorar nuevas culturas, nuevas experiencias y mantenerse actualizado sobre las últimas tendencias tecnológicas.
Abhishek Dan es gerente de desarrollo sénior 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 y 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.
[ad_2]