Spaces:
Sleeping
Music Mind
CI/CD Pipeline
1. Wyb贸r modelu
Je艣li model nie pochodzi z biblioteki HF, trzeba si臋 upewni膰, 偶e jest kompatybilny z klas膮 Trainer biblioteki HuggingFace LINK
2. Wyb贸r danych trenuj膮cych
Je偶eli dataset pochodzi z biblioteki HuggingFace, mo偶na ten krok pomin膮膰.
Zb贸r ucz膮cy musi posiada膰:
- Pliki muzyczne w formacie; znajduj膮ce si臋 w jednym folderze
[.ogg, .mp3 .wav]
- Plik json zawieraj膮cy oznaczenia dla wszystkich plik贸w muzycznych:
{ "file1.ogg": "jazz", "file2.ogg": "hiphop" }
- Pliki muzyczne w formacie; znajduj膮ce si臋 w jednym folderze
Aby dataset mia艂 form臋 kompatybiln膮 z trenerem HF, dost臋pny zbi贸r danych nale偶y sparsowa膰 za pomoc膮 skryptu
make_dataset.py
znajduj膮cego si臋 w katalogudl/
projektu:python make_dataset.py --dir sciezka/do/folderu/plikow/audio --file sciezka/do/pliku/json.json --output lokalizacja/wygenerowanego/datasetu
3. Trening Modelu
Trening modelu odbywa si臋 poprzez skrypt train.py
znajduj膮cy si臋 w katalogu /dl/
projektu.
Skrupt posiada nast臋puj膮ce flagi:
- learning_rate: Wsp贸艂czynnik uczenia podczas treningu modelu.
- train_eval_split: Stosunek danych trenuj膮cych do ca艂ego zbioru; reszta to dane walidacyjne.
- model_id: Identyfikator modelu z Hugging Face lub 艣cie偶ka do lokalnego modelu.
- num_epochs: Liczba epok treningowych.
- seed: Ziarno liczb losowych.
- save_dir: 艢cie偶ka do katalogu wag tranowanego modelu.
- dataset: Nazwa/lokalizacja zbioru danych.
Przyk艂adowe uruchomienie skryptu:
python train_audio_model.py --model_id "facebook/wav2vec2-base-960h" --learning_rate 0.0001 --train_eval_split 0.8 --num_epochs 10 --seed 42 --save_dir "/path/to/save/models" --dataset "marsyas/gtzan"
Wagi i pliki konfiguracyjne modelu zostan膮 zapisane w podanej 艣cierzce pod nazw膮 sk艂adaj膮c膮 si臋 z parametr贸w uczenia np:
/path/to/save/facebook-wav2vec2-base-960h-123-marsyas-gtzan-0.0001
4. Wersjonowanie model贸w
Modele mo偶na przesy艂a膰 do repozytorium na huggingface.
Za pomoc膮 skryptu push_model.py
:
python script_name.py --username your_username --model_dir /path/to/your/model --repo_name your_repo_name --private True
lub za pomoc膮 GUI strony HuggingFace LINK
Na stronie:
6. Aktualizowanie modelu w deployowanej aplikacji
Po dodaniu modelu do repozytorium nale偶y go wykorzysta膰 w deployowanej aplikacji dost臋pnej pod tym adresem:
git clone https://huggingface.co/spaces/bjpietrzak/music_mind
W katalogu g艂贸wnym projektu znajduje si臋 plik main.py
. W jego wn臋trzu znajduje si臋 zmienna config:
config = {
"sampling_rate": 16000,
"model": "bjpietrzak/distilhubert-gtzan-20-5e-5",
}
Nazw臋 repozytorium, oraz model mo偶na umie艣ci膰 w warto艣ci klucza model
, je艣li jest taka potrzeba, nale偶y zmieni膰 sampling rate.
Po zmianie zmian, nale偶y je pchn膮膰:
git push
Zmiany powinny by膰 widoczne po kilku minutach: