안녕하세요 import ysy입니다.
올 여름 Stability AI에서 Stable Audio Open논문을 공개하며
상남자답게 모든 학습 방법을 공개했죠?
논문에서도 느껴지듯 모든 것을 오픈해서
consumer-grade GPU로 밑바닥부터 학습이 가능합니다.
저도 처음부터 학습을 해봤는데
엔간치 돌려서는 노이즈만 나오긴 합니다.
그래서 오늘은
파인튜닝 진행해보겠습니다.
제가 사용한 환경 정보
모든 작업은 vscode에서 진행했습니다.
ssh를 사용해서 A100 gpu가 하나 있는 리눅스 서버 사용했습니다.
제가 사용한 데이터
데이터는 80분 짜리 레게 데이터 사용했습니다.
저는 파인튜닝 되는 것만 확인하려고
특징이 두드러지는 레게 장르로 적은 데이터만 사용했습니다.
일부러 과적합보려고 한거긴 한데 그래도 너무 빨리 과적합이 되더군요.
제대로 원하는 결과 보고 싶으신 분들은 1000분은 돼야 할듯 합니다.
참고
저의 모든 코드는 아래 깃허브 주소에서 확인할 수 있습니다.
모든 코드를 보여드리며 설명하기엔 무리가 있어서
옆에 켜두시고 확인하며 진행하시길 권장드립니다.
https://github.com/ysy2000/Stable_Audio_Open
GitHub - ysy2000/Stable_Audio_Open: Using and finetuning Stable_Audio_Open model
Using and finetuning Stable_Audio_Open model. Contribute to ysy2000/Stable_Audio_Open development by creating an account on GitHub.
github.com
참고하시며 Stars 눌러주시면 감사하겠습니다.
1. 코드 불러오기
https://github.com/Stability-AI/stable-audio-tools
GitHub - Stability-AI/stable-audio-tools: Generative models for conditional audio generation
Generative models for conditional audio generation - Stability-AI/stable-audio-tools
github.com
깃허브의 코드를 git clone 사용해서 모조리 불러와 줍니다.
저는 기존 코드를 최대한 안건드리고 뒤에 finetuning 단만 붙이려고 노력했습니다.
그러니 fork하실 필요는 없습니다.
2. 학습된 모델 불러오기
https://huggingface.co/stabilityai/stable-audio-open-1.0
stabilityai/stable-audio-open-1.0 · Hugging Face
Stable Audio Open 1.0 Please note: For commercial use, please refer to https://stability.ai/license Model Description Stable Audio Open 1.0 generates variable-length (up to 47s) stereo audio at 44.1kHz from text prompts. It comprises three components: an a
huggingface.co
1.0 버전이긴 한데 여기서 학습된 모델 ckpt 파일과 model_config.json 파일 두 개를 불러왔습니다.
다운받아서 서버에 넣어도 되지만
용량이 크니까 hf_hub_download 명령어를 사용하시길 추천드립니다.
저는 용량 너무 커서 구글 드라이브 마운트 시켜서 돌려야 할 정도였습니다.
사용하시기 전에 허깅페이스 읽기 권한으로 토큰 설정 하셔야합니다.
3. 커스텀 메타 데이터 설정
본격적으로 로컬 파일들이랑 연결해볼게요.
git hub에 보면 아래 파일이 있습니다.
stable-audio-tools/stable_audio_tools/configs/dataset_configs/custom_metadata/custom_md_example.py at main · Stability-AI/stabl
Generative models for conditional audio generation - Stability-AI/stable-audio-tools
github.com
따로 코드를 건드리실 필요는 없고
해당 파일 디렉토리를 복사해서 4번 파일에 넣을 겁니다.
4. 데이터셋 설정 - dataset.json
git clone한 작업환경에 아래 디렉토리를 따라가 보세요.
로컬 데이터를 사용할 수 있도록 가이드 라인이 있습니다.
/stable-audio-tools/blob/main/stable_audio_tools/configs/dataset_configs/local_training_example.json
아니면 마찬가지로 아래 깃헙 링크에서도 확인 가능합니다.
stable-audio-tools/stable_audio_tools/configs/dataset_configs/local_training_example.json at main · Stability-AI/stable-audio-t
Generative models for conditional audio generation - Stability-AI/stable-audio-tools
github.com
아무튼 이 가이드 라인에 따라 path에 데이터 디렉토리 넣고
custom_metadata_module에는 아까 3번의 py파일 디렉토리를 넣어서 완성해주세요.
id는 상관업슴다.
만약 사용하고 싶은 데이터의 디렉토리가 여러개라면,
또는 다양한 데이터에 대해 분류하여 학습하고 싶다면
"datasets"의 인자를 추가해서 콤마로 연결 해주세요.
5. 모델 조정
2번에서 model_config.json를 허깅페이스에서 받으셨죠?
해당 파일을 뜯어보면 모델 구조등 많은 정보가 있습니다.
저는 데모 길이랑 샘플 사이즈 등등 이것저것 바꿨는데 제 깃허브에서 파일 확인해주세요.
demo_cond 아래에 프롬포트를 넣을 수 있습니다.
원하는 프롬포트는 여기에 넣으시면 파인튜닝 진행되며
각 결과가 설정한 스텝에 따라 출력됩니다.
prompt 길이에 따라 sample_size를 아래와 같이 조정해주세요.
저는 6초짜리 4개 뽑았습니다.
sample_size = sample_rate * seconds_total = 44100 * 6 = 264600
6. checkpoints저장 폴더 설정
용량이 넉넉하시다면 몰라도 학습이 진행되며 용량이 계속 부족해질 수 있거든요.
저는 학습된 모델과 마찬가지로 구글 드라이브를 마운트해서 거기에 저장되도록 했습니다.
그래서 제 깃헙에서는 딱히 확인할 수 없습니다.
7. bash file 만들기
git hub의 readme 파일을 보면 학습 명령어와 자세한 flag 옵션이 있습니다.
거기서 필요한 것만 쓰면 되는데, 저는 이렇게 했습니다.
여기서 --pretrained-ckpt-path는 반드시 설정해줘야 학습된 모델에 파인튜닝이 됩니다.
8. 실행하기
아래 명령어로 실행해주시면 끝입니다.
이 때 wandb로그인을 해주셔야 진행됩니다.
source bash_filename.sh
마치며
이렇게 파인튜닝을 해봤는데, 궁금한 점 있으시면 질문 남겨주시길 바랍니다.
최대한 도와드립죠,,,
사실 배포된 학습된 모델의 성능이 이미 좋아서
개인적으로 파인튜닝이 막 필요하다는 생각은 안드네요.
하지만 최적화 하고 싶으신 데이터가 있으시다면 도전해보시길 바랍니다.
'전공 > 인공지능, ML, DL' 카테고리의 다른 글
언어모델 LM의 역사 정리 (2) | 2024.11.10 |
---|---|
Weights and Biases(W&B), wandb 소개 (0) | 2024.10.08 |
[Fooocus] image generating software 설치, 사용 (0) | 2024.02.28 |
Lasco AI / midjourney와 결과 비교 / 최고의 image generator는? (0) | 2024.02.14 |
2023 인공지능 툴 결산 / Best 12 AI Tools in 2023 (2) | 2024.02.14 |
댓글