Open emphasis10 opened 3 years ago
https://www.tensorflow.org/guide/mixed_precision
TL;DR - 연산 속도와 정확도를 모두 챙기는 방법
TensorCore가 있는 GPU에서는 Mixed Precision을 사용하는 것이 좋다. FP16
과 FP32
를 정확도와 속도의 관점에서 적절히 섞어서 사용.
http://hwengineer.blogspot.com/2018/03/v100-tensor-core.html
Performance Issue
params의 문제가 아니라 연산이 많아지는 경우(대표적으로 Convolution을 복잡하게 사용하는 경우가 해당됨)
Embedding Dimension
현재 구현, 실험 중인 대부분의 모델에서 Keras
Embedding
layer를 사용한다.Embedding
layer의 param은vocab_size
dimension
으로 구할 수 있다. 예를 들어, BPEvocab_size
32000으로 encoding하고 dim을 128로 준다면 32000128에 비례하여 커지게 된다(dtype에 따른 용량 등등)-> VRAM이 부족하다면, 적당한
vocab_size
와embedding_dim
을 정해야 한다.Param이 많아지는 경우
Embedding layer를 제외하고 모델을 복잡하게 쌓으면 parameter들이 많아진다. Convolution 계열의 layer들은 덜하지만, Dense나 LSTM, GRU 같은 RNN base의 layer들은 그 안에 dimension을 가지고 있기 때문에 parameter를 비교적 많이 가지고 있다.
연산이 많아지는 경우
대부분의 layer를 쌓을 수록 연산이 많아진다. RNN 기반의 모델들은 sequentially 처리하기 때문에 병렬 처리도 어렵다. 연산이 많아지면 Training, Inference 시에 시간이 오래 걸린다.