Una línea de código para hacer el entrenamiento dos veces más rápido, tecnología de precisión volar a explicar paleta mezcladora automática

>> PaddlePaddle visitar el sitio web oficial, un contenido más relevante .  

Con el ritmo acelerado de la vida, "espera" se ha vuelto más y más gente quiere cosas. Pero en la profundidad de campo de estudio, el tamaño de los parámetros del modelo, los conjuntos de datos, y así en cada vuelta es mil millones como una unidad, más aún cuando el éxito del modelo de tren, puso un debut Jane "hasta que finalmente" como música de fondo es realmente la ocasión también.

Si un artefacto ahora se recomienda que, para usted, usted puede alcanzar el doble de la velocidad de la formación, la eficacia del acceso a la memoria se duplica, que corazón que? Lo tengo (esto no es un Direct TV, no se preocupe cambiar el canal), y tengo que mirar a este artefacto juntos - la precisión de mezcla automática técnica (Automatic Mixta de precisión), conocido como mosca de paletas de paddle volar la tecnología AMP se basa en el marco central.

Volar la tecnología AMP paleta para ayudar a los usuarios fácil y rápidamente solo modelo de formación de precisión simple modificados para mezclar automáticamente la formación de precisión a través de una línea de código. Al mismo tiempo, a través de las listas blancas y negras y la formación de escala de pérdida dinámico para asegurar la estabilidad y evitar problemas INF o NAN. AMP puede volar generación completa paleta de NVIDIA GPU de computación ventajas de rendimiento en el entrenamiento de la velocidad y la precisión simple de formación Tensor Core ResNet50, Transformador en comparación con otros modelos se pueden elevar a 1,5 a 2,9 veces.

Entonces es cómo lograrlo? Empecemos con lo que es mezclado de forma automática charla de la tecnología de precisión.

¿Cuál es la precisión de la tecnología de mezcla automática

Como su nombre indica, se trata de una mezcla automática de precisión única semi-automática y mixta precisión para acelerar las técnicas de formación de modelos. En el que la precisión simple (Float Precision32, FP32) es fácil de entender, se trata de un tipo de datos utilizada ordenador. Entonces, ¿qué es la mitad de precisión? Como se muestra, el medio-precisión 1 (float Precision16, FP16) es un tipo relativamente nuevo de punto flotante, utiliza 2 bytes (16 bits) almacenados en el ordenador, en el IEEE 754-2008, que se llama binary16 . En comparación con el solo cálculo convencional y del tipo de doble precisión, Float16 menos precisión es más adecuado para su uso en la escena.

Ni que decir tiene, en la profundidad de campo de estudio, si en lugar de utilizar Float16 Float32 para almacenar datos, por lo que los desarrolladores pueden entrenar los modelos más grandes y más complejas, utilice un tamaño de lote más grande. Así que para aquellos científicos ansiosos de aprovechar todo el potencial de la GPU cada transistor, ¿cómo puede perder? Y debido a que NVIDIA introdujo Volta arquitectura de la GPU e incluye una tecnología de Turing Tensor Core, la precisión del cálculo de la media de maduración. En el mismo hardware GPU, Tensor Core semi computacional rendimiento ocho veces la exactitud de precisión simple.

Está claro que el uso de Float16 sin duda también traerá consigo la pérdida de precisión. Pero en términos de la profundidad del aprendizaje y la formación, no todos los cálculos requieren gran precisión, una cierta pérdida parcial de impacto exactitud en la formación efecto final es muy débil, que sólo requiere algunas medidas especiales para retener la precisión se puede calcular Float32. demanda exactitud de mezcla calculados de este modo surgió. Podemos proceso de formación no es sensible a una cierta pérdida de precisión y se pueden aplicar Tensor Core usando media aritmética de precisión de proceso de aceleración, el acceso máximo a aumentar la eficiencia de cálculo y memoria.

Sin embargo, para cada modelo específico, y tratamos de diseñar métodos artificiales de mezclar la precisión es muy complicado, necesitamos urgentemente una forma más concisa para implementar eficazmente la formación de precisión de mezcla. AMP, como su nombre indica, es para permitir la formación de automatización mixta precisión, tan fácil de usar que es una característica importante. Específicamente el uso vosotros, mira hacia abajo!

el uso de AMP

A continuación MNIST ejemplo para introducir cómo utilizar la paleta de volar la tecnología AMP. Como se muestra en el siguiente código de red MNIST definido. En donde conv2d, batch_norm (BN) y las necesidades de datos pool2d a fijarse de antemano por un diseño 'NHWC', esto ayudará a acelerar la exactitud de mezcla de la formación, y el número de canales de salida conv2d se debe establecer a un múltiplo de 4, con el fin de utilizar técnicas de aceleración Tensor del Núcleo.

import paddle.fluid as fluiddef MNIST(data, class_dim):     conv1 = fluid.layers.conv2d(data, 16, 5, 1, act=None, data_format='NHWC')     bn1 = fluid.layers.batch_norm(conv1, act='relu', data_layout='NHWC')     pool1 = fluid.layers.pool2d(bn1, 2, 'max', 2, data_format='NHWC')     conv2 = fluid.layers.conv2d(pool1, 64, 5, 1, act=None, data_format='NHWC')     bn2 = fluid.layers.batch_norm(conv2, act='relu', data_layout='NHWC')     pool2 = fluid.layers.pool2d(bn2, 2, 'max', 2, data_format='NHWC')     fc1 = fluid.layers.fc(pool2, size=50, act='relu')     fc2 = fluid.layers.fc(fc1, size=class_dim, act='softmax')    return fc2

Para entrenar la red MNIST, pero también es necesario definir una función de pérdida para actualizar los parámetros de peso para optimizar la función de pérdida se utiliza aquí es SGDOptimizer. Para simplificar la explicación se omite aquí una formación iterativa del código relevante para reflejar sólo la definición función de pérdida y optimización de contenido relacionado.

import paddle.fluid as fluidimport numpy as npdata = fluid.layers.data(     name='image', shape=[None, 28, 28, 1], dtype='float32')label = fluid.layers.data(name='label', shape=[None, 1], dtype='int64')out = MNIST(data, class_dim=10)loss = fluid.layers.cross_entropy(input=out, label=label)avg_loss = fluid.layers.mean(loss)sgd = fluid.optimizer.SGDOptimizer(learning_rate=1e-3)sgd.minimize(avg_loss)

Entonces, ¿cómo será el ejemplo anterior, se transforma en una forma de utilizar la formación de AMP es? Los usuarios sólo necesitan paletas uso mosca proporcionado la fluid.contrib.mixed_precision.decorate función AMP original de optimizador SGDOptimizer encapsulado, y la encapsulación usando el optimizador (mp_sgd) actualización de parámetros gradiente, código como sigue:

sgd = fluid.optimizer.SGDOptimizer(learning_rate=1e-3)mp_sgd = fluid.contrib.mixed_precision.decorator.decorate(sgd)mp_sgd.minimize(avg_loss)

Como es el más fácil de usar volar Función AMP paleta.

Sin embargo, es posible que tenga algunas preguntas, cuál es el modelo de la forma del operador (OP) perciben que se transforme? No es necesario especificar manualmente? Operadores tanto, ¿cómo sé qué operador se puede convertir en ella? No se preocupe, usted tiene que ayudar mosca de paleta personalizada Bueno, esto es esta tecnología es conocida como una de las razones "automáticas", y por favor siga leyendo!

función de lista en blanco y negro

Permitir a los desarrolladores fácil y rápidamente pueden calculada utilizando la exactitud de mezcla, mosca paddle un gran número de ingenieros utilizan modelos en diferentes escenarios de aplicación de verificación repetida, y luego calcula a partir de la estabilidad y la media precisión tipo de datos efecto de aceleración, para la conversión de una serie de cardado media aritmética de precisión del operador, y el operador para definir un archivo de lista blanca. Para algunos verificado mientras encontrado para ser operador de conversión inadecuada, es decir, utilizando la mitad precisión cálculos numéricos como resultado operador inexactos serán registrados en el archivo de lista negra. Además, algunos no tienen mucho efecto sobre los operadores de los cálculos de precisión media clasificadas como una lista gris. AMP usando el proceso de formación, el sistema lee automáticamente la lista blanca, por lo que percibe el operador lo que necesita ser convertida a cálculos de precisión media.

Para algunos escenarios especiales, si el desarrollador desea utilizar listas de encargo blanco y negro, que se podrán utilizar siempre AutoMixedPrecisionLists ejemplo se muestra el código de clase a continuación.

sgd = SGDOptimizer(learning_rate=1e-3)# 指定自定义的黑白名单,其中 list1 和 list2 为包含有算子名称的列表amp_list = AutoMixedPrecisionLists(custom_white_list=list1,custom_black_list=list2)mp_sgd = fluid.contrib.mixed_precision.decorator.decorate(sgd, amp_list)mp_sgd.minimize(avg_loss)

A continuación, la tecnología automática de precisión de mezcla es conocida como la segunda razón "automático" que? Es decir por debajo de la función automática de escala Pérdida de ajuste.

Escalado Pérdida ajuste automático

La tecnología AMP al tiempo que mejora el acceso a memoria y la eficiencia computacional, con efectos secundarios son evidentes. Eso es porque precisión simple y rango de precisión de la conversión de tipo de datos media precisión frontal en comparación con estrechan, lo que resulta en la producción fácil de los problemas INF y NAN. Para evitar estos problemas, una tecnología para lograr funciones de escala de ajuste AMP pérdida automática, es decir, proceso de formación AMP, a fin de evitar la precisión underflow, una cierta cantidad de cada lote de datos de entrenamiento, se especificará factor de amplificación Loss. Si la pérdida se produce desbordamiento en el proceso de amplificación, es posible reducir aún más el seguro múltiple, asegurarse de que todo el proceso de formación, el gradiente puede converger correctamente.

fluid.contrib.mixed_precision.decorate función de ajuste automático funciones de pérdida de escala llevando parámetros relacionados, estos parámetros con valores por defecto, como se muestra en el siguiente código. Estos valores por defecto están volando a través de múltiples ingenieros de verificación remos definidos. Por lo general, los usuarios pueden utilizar directamente sin necesidad de re-configuración.

sgd = SGDOptimizer(learning_rate=1e-3)mp_sgd = fluid.contrib.mixed_precision.decorator.decorate(sgd,             init_loss_scaling=2**15,             incr_every_n_steps=2000,             use_dynamic_loss_scaling=True)mp_sgd.minimize(avg_loss)

la formación de optimización de la tarjeta multi-GPU

En la versión 1.7 del marco básico de la nueva versión de la mosca de paletas, la capacitación técnica profundidad AMP para optimizar la tarjeta multi-GPU. 2, el proceso de actualización de parámetros gradiente antes de la optimización, aunque cuando el cálculo del gradiente utilizando el tipo de datos media-precisión, pero el gradiente de la transmisión de datos entre diferentes tipos de restos de tarjetas de GPU precisión simple.

Para reducir gradiente de ancho de banda de transmisión entre la tarjeta GPU múltiple, vamos a transmitir el moldeada operación gradiente proceso mencionado antes, y cada tarjeta GPU medio precisión en un gradiente obtenido después de realizar la correspondiente moldeada operación, que se convirtió en solo tipo de precisión, 3 se muestra en la figura. Este modelo de optimización en la formación de una gran complejidad de la red, el ancho de banda es muy eficaz en la reducción, tales como la formación de modelo de multi-tarjeta BERT-Large.

Performance Training Comparación (AMP VS FP32)

Volando en la paleta de arte AMP ResNet50, compañero modelo transformador se entrenó con un FP32 velocidad de entrenamiento con respecto a una ventaja muy grande, como un ejemplo más abajo para el modelo ResNet50, se puede observar en la figura, lo contrario la formación de AMP ResNet50 FP32 entrenar sola relación de Calgary de hasta 2,9 veces, ocho relación de Calgary de hasta 2,8 veces.

información relacionada

  • Formación mixta Precisión: https: //arxiv.org/abs/1710.03740

  • la precisión de formación PaddlePaddle aceleración automática de mezcla: https :? //On-demand-gtc.gputechconf.com/gtcnew/sessionview.php SESSIONNAME = cn9312- usando aceleración automática de precisión de mezcla + + paddlepaddle formación

>> PaddlePaddle visitar el sitio web oficial, un contenido más relevante .  

Supongo que te gusta

Origin www.oschina.net/news/113982/paddlepaddle-news
Recomendado
Clasificación