Ahora, en el campo de ML, uno escucha constantemente sobre los increíbles "éxitos" de los transformadores en varios campos. Pero cada vez aparecen más artículos que indican que muchos de estos éxitos son, por decirlo suavemente, inverosímiles (del reciente recuerdo un artículo sobre el entrenamiento previo de grandes CNN en visión por computadora, una enorme cuadrícula MLP , un artículo sobre la deconstrucción de logros el campo de los transformadores).
— , .
self-attention
: (i) (ii) (iii) ( ) (iv) ( 5).
self-attention ( Linformer ). , - self-attention , , "" . 500 ( Google).
— self-attention production-ready :
- ;
- ;
- , ;
- ;
- , ;
- ;
, , . ( ), sequence-to-sequence .
- Self-attention 2 8- ;
- self-attention 2 "", , ;
, , - , .
:
- ;
- ( 2 );
:
PyTorch - 1.3 Linear
LSTM
. ( ) :
quantized_model = torch.quantization.quantize_dynamic( model, {torch.nn.Linear}, dtype=torch.qint8 )
:
- sequence-to-sequence ( , , PyTorch ). , (
_q
); - 4 (
float32
=>int8
); - Intel ( AMD , 10% 70% ).
- (1 );
- ;
:
- ( ) GPU;
- , , downstream , ONNX;
- AMD ( , 10% 70%);
- self-attention PyTorch ( 3 4 !);
- , . ;
. , , Singular Value Decomposition ( PyTorch) , .
, monkey-patching , Linear
FactorizedLinear
.
:
- ;
- (70 , );
- , , GPU;
- SVD ;
:
- ;
- , , ;
- , ;
- , , ;
, , . .
FNet
. self-attention
. , , GPU ( CPU). 10%.
:
- PyTorch FFT2 ( );
- , "";
- , ;
- self-attention ;
:
- , , SVD, ;
- - GPU, , — ;
— PyTorch
fusion , relu. 1.9
"" inference mode. , inference mode , 14% . , , . , - , x2. , - .
:
- ;
- "" ;
:
- ;
- , ( ), ( );
2 | 2x | 2-3x | - |
4x | 2x CPU | CPU | |
2-4x | 2-3x GPU, CPU | , | |
attention FFT | 2x | 2x CPU, 7x GPU | |
- | 15-25% | , fusion |
, , :
, | ||
, | ||
2 | , | |
70 | ||
attention FFT | 10 | , |
. - , (i) , (ii) , .
El primero incluye congelación y cuantificación. En total, dan una buena reducción en el tamaño del modelo (4x) y se aceleran en la región de 2-3x en la CPU.
El segundo incluye factorización y FFT. Deben considerarse como algún tipo de optimización adicional y lo más probable es que sean mutuamente excluyentes. Junto con los primeros tipos de métodos, puede obtener una reducción total en el tamaño del modelo en casi un orden de magnitud y la aceleración también es casi un orden de magnitud. Si también modificamos los hiperparámetros del modelo, entonces el "orden" en principio no parece inalcanzable.
Para ser honesto, no sé cómo acelerar en dos órdenes de magnitud. Tal vez lo sepas?