less than 1 minute read

이번 포스팅에서는 Optimum을 사용하여 huggingface hub에 올라와 있는 wav2vec2 모델을 onnx로 변환하는 내용을 다루고 있습니다.


image


huggingface 모델

huggingface hub에 가보시면 다양한 언어로 학습한 whisper, wav2vec2 모델들이 올라와 있는 걸 확인하실 수 있습니다.

많은 모델들이 있지만 예제로는 meta에서 공개한 wav2vec2-base-960h 모델을 사용하여 진행하겠습니다.


Onnx

Optimum으로 onnx 모델 변환을 하기 전에 onnx에 대해서 간략하게 알아보겠습니다.

ONNX(Open Neural Network Exchange)는 머신러닝 모델들을 다양한 프레임워크로 호환 가능하게 만들어주는 개방형 포맷입니다.
이 표준을 사용함으로써 하나의 프레임워크에서 훈련된 모델을 다른 프레임워크로 쉽게 이동시켜 사용할 수 있습니다.
예를 들어, PyTorch에서 훈련된 모델을 onnx로 변환하여 TensorFlow에서 실행할 수 있습니다.

onnx는 Microsoft, Amazon, Facebook 등 여러 기업이 공동으로 개발했으며, 여러 머신러닝과 딥러닝 프레임워크들의 지원을 받고 있습니다. 또한 onnx의 중요한 특징으로는 호환성, 확장성이 좋다고 할 수 있습니다.

PyTorch 모델을 onnx 모델로 변환하려면 torch.onnx.export 함수를 사용해야 되는데요.
Optimum을 사용하면 huggingface 모델을 load해서 내부적으로 torch.onnx.export 까지 작동하기 떄문에 쉽게 onnx 모델을 변환할 수 있습니다.

onnx 모델을 변환하기 전에 TorchScript로 변환해야 되는데요.

자세한 내용은 해당 포스트에서 확인해주세요.



Optimum을 사용하여 모델 변환

Optimum을 설치하시면 정말 간단하게 모델을 변환하실 수 있습니다.

MODEL_NAME=facebook/wav2vec2-base-960h
SAVE_PATH=/path/to/save
OPSET=15
python -m optimum.exporters.onnx --model "${MODEL_NAME}" "${SAVE_PATH}" --task automatic-speech-recognition --opset "${OPSET}" --framework pt

Leave a comment