GPU 서버 준비하기
앞에 문서에서는 데스크탑에 잇는 cpu만 사용해서 프로그램을 실행하엿다 만약 large모델을 사용하게 되면 시간이 많이 소요된다. gpu를 사용해보자.
os install
centos 79 사용
그래픽 카드로 1080ti를 설치
저는 a100이나 tesla4 가 없어서 이걸로 햇습니다. 이걸 사용하시는걸 추천드립니다.
https://github.com/openai/whisper#available-models-and-languages 여기를 참고하면 이제 large 모델도 사용할수가 있을거같다. large_v2모델이 나왔다. 현재는 v2가 large인듯 하다.
partition
software
내 컴퓨터에서 gpu서버에 접속하기 위해 실행
gpu서버 에서 다음 실행
GPU 설정
Install Nvidia kernel module
현재 릴리스된 Nvidia 드라이버는 dkms/rpm을 통해 배포되므로 사용자 지정 실행 스크립트를 통해 설치할 필요가 없습니다. dkms 덕분에 프로세스가 훨씬 쉬워졌으며 향후 커널 업데이트 시 모듈이 자동으로 다시 컴파일됩니다. (참고 https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html)
Prepare compilation environment
실행 중인 커널 버전에 대해 더 이상 kernel-devel and kernel-header를 사용할 수 없는 경우 최신 커널로 업데이트하고 재부팅해 보세요.
Install Nvidia driver
Install Nvidia container runtime
엔비디아 컨테이너 런타임은 컨테이너 서비스를 위한 통합을 제공하고 GPU를 컨테이너에 동적으로 매핑합니다. 이 예제에서는 통합을 시연하기 위해 도커를 사용하고 있습니다.
도커 이외의 컨테이너 서비스의 경우 참고 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#install-guide
현재는 도커만 지원을 한다.
nvidia-ctk
를 사용하여 런타임을 구성합니다. 이렇게 하면 기본적으로 daemon.json에 구성 섹션이 추가되어 컨테이너 생성 시 엔비디아 통합이 사용될 때 도커가 수행해야 할 작업을 알 수 있습니다.
Testing
모든 것이 올바르게 작동한다면 컨테이너 내부에 호스트에서 실행되는 것과 동일한 nvidia-smi
출력이 표시되어야 합니다(프로세스 목록 제외).
docker-compose
잘 실행됨을 알고 있습니다.
gpu 사용량
gpu가 사용됨을 확인하시려면 main.py에 다음 코드를 추가합니다.
cpu를 사용하는지 gpu를 사용하는지 확인할수 있습니다.
실제 gpu사용량이 보고 싶었습니다.
위 명령어를 실행해보면 gpu실 사용량이 보입니다. 한가지 주의하셔야할점은 현재 코드는 인터넷에서 모델을 다운받고 로드하고 하는부분이 있는데 이부분이 오래 걸립니다. 그래서 프로그램을 실행해도 한참을 0% 사용량을 보일것입니다. 실제로 연산하는 부분에서만 gpu가 올라가는걸 보실수 있을겁니다.
성능테스트
모델을 이것저것 바꿔가면서 정확성과 성능을 테스트해보시기 바랍니다. 저의 경우에는
3분짜리 mp3파일로 테스트해봣는데 다음과 같았습니다.
tiny
72M
5 sec
base
140M
6 sec
small
460M
7 sec
medium
1.4G
13 sec
large-v2
2.9G
17 sec
모델 다운로드시간은 뺀 결과입니다.
하시다보면 매번 모델 다운로드에 더 오래 걸리는걸 아실수 있습니다. 그래서 다음처럼 docker-compose.yml을 수정하시면 한번 다운받은 모델을 캐시하여 사용하실수 있습니다.
이제 프로젝트폴더에 cache폴더를 만들어주시면 모델들이 이 폴더에 저장이 되어 다음번에 실행할때 이 파일을 사용하는것을 알수 있습니다.
Last updated
Was this helpful?