Transformadores compresores: formas sencillas, versátiles y prácticas de hacerlos compactos y rápidos

transformer_press







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 );


:







  • . , "" ;
  • , ( x-transformers



    );




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?








All Articles