Training

pip install -r requirements.txt
tar -xvf ./dataset/commu_midi.tar -C ./dataset/
 python3 [preprocess.py](<http://preprocess.py/>) --root_dir ./dataset/commu_midi --csv_path ./dataset/commu_meta.csv 
python -m torch.distributed.launch --nproc_per_node=4 ./train.py --data_dir ./dataset/commu_midi/output_npy --work_dir {임의의 dir}

Generation

python generate.py --checkpoint_dir {checkpoint_dir} --output_dir {output_dir } --bpm 70 --audio_key aminor --time_signature 4/4 --pitch_range mid_high --num_measures 8 --inst acoustic_piano --genre newage --min_velocity 60 --max_velocity 80 --track_role main_melody --rhythm standard --chord_progression Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E-Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E --num_generate 3

python generate.py --checkpoint_dir ../../output/20230205-191437/checkpoint_best.pt --output_dir ./out --bpm 70 --audio_key aminor --time_signature 4/4 --pitch_range mid_high --num_measures 8 --inst acoustic_piano --genre newage --min_velocity 60 --max_velocity 80 --track_role main_melody --rhythm standard --chord_progression Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E-Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E --num_generate 3

드디어 랜덤성이 있는 부분 발견했다! 모델에서가 아니라 commu/midi_generator/midi_inferer.py 의 apply sampling, infer token 부분에서 랜덤성이 발생한다 Transformer XL이 예측한 각 라벨들 중 가장 가능성이 높은 것들을 몇 개 추려내어 그 확률들에 맞게 샘플링한다.

모델이 내는 output은 당연하게도 같지만, 그 output으로부터 샘플링을 진행하는 것이었다. 아래 코드는 실제로 샘플링하는 부분

python -m torch.distributed.launch --nproc_per_node=2 ./Comp_train.py --data_dir ./dataset/commu_midi/output_npy --work_dir ./

python generate.py --checkpoint_dir ./checkpoint_best.pt --output_dir ./ --bpm 70 --audio_key aminor --time_signature 4/4 --pitch_range mid_high --num_measures 8 --inst acoustic_piano-2 --genre newage --min_velocity 60 --max_velocity 80 --track_role main_melody --rhythm standard --chord_progression Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E-Am-Am-Am-Am-Am-Am-Am-Am-G-G-G-G-G-G-G-G-F-F-F-F-F-F-F-F-E-E-E-E-E-E-E-E --num_generate 3