본문 바로가기
인공지능/LLM

Whisper large v3 모델 실행하기

by makepluscode 2024. 1. 20.
반응형

WSL과 Docker 상에서 Hugging Face Whisper Large v3 모델 실행하기

Whisper는 음성 인식 및 음성 번역을 위한 사전 훈련된 모델로, 많은 양의 데이터를 기반으로 학습되어 다양한 데이터와 도메인에서 잘 일반화됩니다. Whisper large-v3는 이전 모델과 비슷한 아키텍처를 가지지만 입력 데이터 표현에서 차이가 있고 새로운 위한 언어 토큰이 추가되었습니다. 이 모델은 더 많은 데이터를 사용하여 학습되었으며, 영어 전용 및 다국어 데이터를 기반으로 다양한 모델 크기로 제공되며 Hugging Face Hub에서 사용 가능합니다.

https://huggingface.co/openai/whisper-large-v3

 

openai/whisper-large-v3 · Hugging Face

🤫 hf-audio/whisper-large-v3 ⚡ Illia56/transcribe-video-via-whisper-v3 🔥 ylacombe/create-your-own-TTS-dataset 🤫 Olivier-Truong/whisper-large-v3 📈 kemalpm/openai-whisper-large-v3 🔥 AFischer1985/AI-RAG-Interface-to-Hub 🚀 Taranosaurus/Token

huggingface.co


이 포스팅에서는 WSL(Windows Subsystem for Linux)과 Docker를 사용하여 Hugging Face의 Whisper Large v3 모델을 실행하는 방법에 대해 설명하겠습니다.

Docker 이미지 생성

먼저, 아래와 같이 Dockerfile을 작성하여 Docker 이미지를 생성합니다.

# Using NVIDIA PyTorch with a base image
FROM nvcr.io/nvidia/pytorch:23.12-py3

# Install necessary additional packages
# Installing Python packages using pip
RUN pip install transformers accelerate datasets

# Installing system packages using apt-get
RUN apt-get update && apt-get install -y git-lfs ffmpeg

위의 Dockerfile을 작성하고, 다음 명령어를 사용하여 Docker 이미지를 빌드합니다.

docker build -t whisper-model-image .

모델 다운로드

docker 를 실행하고 docker 환경의 특정 디렉토리 예를 들어 ""/work/model/whisper-large-v3" 에 Hugging Face의 Whisper Large v3 모델을 다운로드 합니다. 허깅페이스 모델 다운로드는 설명은 생략합니다.

모델 실행 코드 작성

다음으로, Python 코드를 작성하여 Whisper Large v3 모델을 실행하고 결과를 얻습니다.

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "/work/model/whisper-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    chunk_length_s=30,
    batch_size=16,
    return_timestamps=True,
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe("sample2.mp3")
print(result["text"])

모델 실행 및 결과 확인

위의 코드를 실행하면 Whisper Large v3 모델이 실행되고 결과가 생성됩니다. 아래는 실행 결과의 예시입니다.

root@8e868c01ef12:/work#  /usr/bin/env /bin/python3 /root/.vscode-server/extensions/ms-python.python-2023.22.1/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher 48577 -- /work/whisper-large-v3.py 
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Downloading readme: 100%|█████████| 480/480 [00:00<00:00, 4.01MB/s]
Downloading data: 100%|███████| 1.98M/1.98M [00:00<00:00, 3.56MB/s]
Generating validation split: 100%|█| 1/1 [00:00<00:00,  8.29 exampl
Whisper did not predict an ending timestamp, which can happen if audio is cut off in the middle of a word...

실행 결과로 생성된 텍스트 파일에는 오디오 파일의 내용에 대한 텍스트가 저장됩니다. 이로써 Hugging Face의 Whisper Large v3 모델을 WSL과 Docker 환경에서 성공적으로 실행하고 결과를 얻을 수 있습니다. 다른 포스팅에서 자세하게 다루겠지만, 제 환경인 RTX 3060에서는 모델이 원활하게 동작하였으며, 1시간 이상의 MP3 파일도 문제 없이 처리하고 결과물도 매우 훌륭하게 생성되었습니다.

반응형

'인공지능 > LLM' 카테고리의 다른 글

GPT 구조에 대한 초간단 리뷰  (0) 2024.02.09
LLM 학습과정에서 RLHF 란?  (0) 2024.01.18
LLM 의 기본 구조와 모델  (0) 2024.01.18
LLama.cpp 설치하고 실행해보기  (0) 2024.01.14