2024년 4월 5일 금요일

VITS2 코드 Windows에서 실행해보기

VITS2 논문 구현 코드 실행기


소스코드는 다른 분이 구현한 코드도 있지만 아래 github 링크의 코드로 실행함

https://github.com/p0p4k/vits2_pytorch

- Dataset: LJSpeech

- Windows에서 특정 디렉토리로 심볼릭 링크는 mklink /d 명령어를 이용한다. cmd에서 되고 powershell에서는 없는 명령어라 나옴.

- Monotonic Alignment 툴 빌드중 에러가 난다면 MS Visual Studio의 build tool을 설치해주면 된다.


1. Windows에서 espeak 설치

여기에서 x64용 msi파일을 다운로드받음.

https://github.com/espeak-ng/espeak-ng/releases

(espeak-ng-X64.msi)

참고로 sourceforage에 있는 espeak 설치본은 깔아봐도(SAPI5 어쩌고 있는 패키지) 해결 불가

msi 패키지를 설치했으나 이런 에러가 나온다. 설치만 하면 끝이 아니고 환경변수 설정이 필요함.


환경변수 설정(msi패키지에서 시스템에 설치해서 나도 그냥 시스템 환경변수에다 함)

시작메뉴의 찾기 입력란(돋보기 아이콘 있는 칸)에 path를 타이핑하면 설정 메뉴가 바로 뜸






x64버전으로 설치했으므로 Program Files (x86) 이 아닌 그냥 Program Files 경로로 설정

PHONEMIZER_ESPEAK_LIBRARY=”C:\Program Files\eSpeak NG\libespeak-ng.dll” (default path)


“파일 찾아보기” 버튼을 클릭해서 .dll파일명까지 포함한 전체경로를 값으로 설정

PHONEMIZER_ESPEAK_PATH=”C:\Program Files\eSpeak NG”


“디렉터리 찾아보기” 버튼을 클릭해서 폴더 경로까지만 값으로 설정

환경변수 설정 후 다시 실행했더니 넘어간다. (안되면 재부팅 후 시도)


2. NVidia CUDA 관련

그다음은 NVidia cuda 관련 에러들이다

torch.cuda.is_available() == false로 나옴

torch 패키지를 지우고 cuda 버전에 맞춰 다시 설치

아래는 pytorch 홈페이지에서 내 환경에 맞춰 만들어준 명령어

(https://pytorch.org/get-started/locally/)

Windows + pycharm pip + cuda 12.1

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121


그다음은 NCCL 관련 에러

RuntimeError: Distributed package doesn't have NCCL built in

아래 코드와 관련된 에러였음

dist.init_process_group(backend="nccl", init_method="env://", world_size=n_gpus, rank=rank)


NCCL 다운로드 페이지에 가서 로그인 후(NVIDIA 계정 가입 필요) 설문양식 제출까지 해야 다운로드 시켜줌

찾아보니 Windows에서 NCCL 분산GPU 설정은 아직 pytorch에서 지원하지 않는다고 한다. 우분투 등은 지원함. 다음번엔 Docker로 도전

일단 “nccl”을 “gloo”로 바꾸고 시작

(gloo는 분산 cpu 사용, backend설정과 CPU/GPU 사용여부 테이블은 https://pytorch.org/docs/stable/distributed.html 참조)

json파일에 "use_duration_discriminator": true, 라고 해놓고 type이 기재가 안되어있었음

바로 아래 줄에 type 추가

"duration_discriminator_type": "dur_disc_1",


다시 실행했더니 성공했다.

돌다가 메모리 부족으로 튕기면 batch size를 낮춰주면 된다.