Code for the paper "Jukebox: A Generative Model for Music"

Overview

Status: Archive (code is provided as-is, no updates expected)

Jukebox

Code for "Jukebox: A Generative Model for Music"

Paper Blog Explorer Colab

Install

Install the conda package manager from https://docs.conda.io/en/latest/miniconda.html

# Required: Sampling
conda create --name jukebox python=3.7.5
conda activate jukebox
conda install mpi4py=3.0.3 # if this fails, try: pip install mpi4py==3.0.3
conda install pytorch=1.4 torchvision=0.5 cudatoolkit=10.0 -c pytorch
git clone https://github.com/openai/jukebox.git
cd jukebox
pip install -r requirements.txt
pip install -e .

# Required: Training
conda install av=7.0.01 -c conda-forge 
pip install ./tensorboardX
 
# Optional: Apex for faster training with fused_adam
conda install pytorch=1.1 torchvision=0.3 cudatoolkit=10.0 -c pytorch
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./apex

Sampling

Sampling from scratch

To sample normally, run the following command. Model can be 5b, 5b_lyrics, 1b_lyrics

python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --sample_length_in_seconds=20 \
--total_sample_length_in_seconds=180 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125
python jukebox/sample.py --model=1b_lyrics --name=sample_1b --levels=3 --sample_length_in_seconds=20 \
--total_sample_length_in_seconds=180 --sr=44100 --n_samples=16 --hop_fraction=0.5,0.5,0.125

The above generates the first sample_length_in_seconds seconds of audio from a song of total length total_sample_length_in_seconds. To use multiple GPU's, launch the above scripts as mpiexec -n {ngpus} python jukebox/sample.py ... so they use {ngpus}

The samples decoded from each level are stored in {name}/level_{level}. You can also view the samples as an html with the aligned lyrics under {name}/level_{level}/index.html. Run python -m http.server and open the html through the server to see the lyrics animate as the song plays.
A summary of all sampling data including zs, x, labels and sampling_kwargs is stored in {name}/level_{level}/data.pth.tar.

The hps are for a V100 GPU with 16 GB GPU memory. The 1b_lyrics, 5b, and 5b_lyrics top-level priors take up 3.8 GB, 10.3 GB, and 11.5 GB, respectively. The peak memory usage to store transformer key, value cache is about 400 MB for 1b_lyrics and 1 GB for 5b_lyrics per sample. If you are having trouble with CUDA OOM issues, try 1b_lyrics or decrease max_batch_size in sample.py, and --n_samples in the script call.

On a V100, it takes about 3 hrs to fully sample 20 seconds of music. Since this is a long time, it is recommended to use n_samples > 1 so you can generate as many samples as possible in parallel. The 1B lyrics and upsamplers can process 16 samples at a time, while 5B can fit only up to 3. Since the vast majority of time is spent on upsampling, we recommend using a multiple of 3 less than 16 like --n_samples 15 for 5b_lyrics. This will make the top-level generate samples in groups of three while upsampling is done in one pass.

To continue sampling from already generated codes for a longer duration, you can run

python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --mode=continue \
--codes_file=sample_5b/level_0/data.pth.tar --sample_length_in_seconds=40 --total_sample_length_in_seconds=180 \
--sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125

Here, we take the 20 seconds samples saved from the first sampling run at sample_5b/level_0/data.pth.tar and continue by adding 20 more seconds.

You could also continue directly from the level 2 saved outputs, just pass --codes_file=sample_5b/level_2/data.pth.tar. Note this will upsample the full 40 seconds song at the end.

If you stopped sampling at only the first level and want to upsample the saved codes, you can run

python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --mode=upsample \
--codes_file=sample_5b/level_2/data.pth.tar --sample_length_in_seconds=20 --total_sample_length_in_seconds=180 \
--sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125

Here, we take the 20 seconds samples saved from the first sampling run at sample_5b/level_2/data.pth.tar and upsample the lower two levels.

Prompt with your own music

If you want to prompt the model with your own creative piece or any other music, first save them as wave files and run

python jukebox/sample.py --model=5b_lyrics --name=sample_5b_prompted --levels=3 --mode=primed \
--audio_file=path/to/recording.wav,awesome-mix.wav,fav-song.wav,etc.wav --prompt_length_in_seconds=12 \
--sample_length_in_seconds=20 --total_sample_length_in_seconds=180 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125

This will load the four files, tile them to fill up to n_samples batch size, and prime the model with the first prompt_length_in_seconds seconds.

Training

VQVAE

To train a small vqvae, run

mpiexec -n {ngpus} python jukebox/train.py --hps=small_vqvae --name=small_vqvae --sample_length=262144 --bs=4 \
--audio_files_dir={audio_files_dir} --labels=False --train --aug_shift --aug_blend

Here, {audio_files_dir} is the directory in which you can put the audio files for your dataset, and {ngpus} is number of GPU's you want to use to train. The above trains a two-level VQ-VAE with downs_t = (5,3), and strides_t = (2, 2) meaning we downsample the audio by 2**5 = 32 to get the first level of codes, and 2**8 = 256 to get the second level codes.
Checkpoints are stored in the logs folder. You can monitor the training by running Tensorboard

tensorboard --logdir logs

Prior

Train prior or upsamplers

Once the VQ-VAE is trained, we can restore it from its saved checkpoint and train priors on the learnt codes. To train the top-level prior, we can run

mpiexec -n {ngpus} python jukebox/train.py --hps=small_vqvae,small_prior,all_fp16,cpu_ema --name=small_prior \
--sample_length=2097152 --bs=4 --audio_files_dir={audio_files_dir} --labels=False --train --test --aug_shift --aug_blend \
--restore_vqvae=logs/small_vqvae/checkpoint_latest.pth.tar --prior --levels=2 --level=1 --weight_decay=0.01 --save_iters=1000

To train the upsampler, we can run

mpiexec -n {ngpus} python jukebox/train.py --hps=small_vqvae,small_upsampler,all_fp16,cpu_ema --name=small_upsampler \
--sample_length=262144 --bs=4 --audio_files_dir={audio_files_dir} --labels=False --train --test --aug_shift --aug_blend \
--restore_vqvae=logs/small_vqvae/checkpoint_latest.pth.tar --prior --levels=2 --level=0 --weight_decay=0.01 --save_iters=1000

We pass sample_length = n_ctx * downsample_of_level so that after downsampling the tokens match the n_ctx of the prior hps. Here, n_ctx = 8192 and downsamples = (32, 256), giving sample_lengths = (8192 * 32, 8192 * 256) = (65536, 2097152) respectively for the bottom and top level.

Learning rate annealing

To get the best sample quality anneal the learning rate to 0 near the end of training. To do so, continue training from the latest checkpoint and run with

--restore_prior="path/to/checkpoint" --lr_use_linear_decay --lr_start_linear_decay={already_trained_steps} --lr_decay={decay_steps_as_needed}

Reuse pre-trained VQ-VAE and train top-level prior on new dataset from scratch.

Train without labels

Our pre-trained VQ-VAE can produce compressed codes for a wide variety of genres of music, and the pre-trained upsamplers can upsample them back to audio that sound very similar to the original audio. To re-use these for a new dataset of your choice, you can retrain just the top-level

To train top-level on a new dataset, run

mpiexec -n {ngpus} python jukebox/train.py --hps=vqvae,small_prior,all_fp16,cpu_ema --name=pretrained_vqvae_small_prior \
--sample_length=1048576 --bs=4 --aug_shift --aug_blend --audio_files_dir={audio_files_dir} \
--labels=False --train --test --prior --levels=3 --level=2 --weight_decay=0.01 --save_iters=1000

Training the small_prior with a batch size of 2, 4, and 8 requires 6.7 GB, 9.3 GB, and 15.8 GB of GPU memory, respectively. A few days to a week of training typically yields reasonable samples when the dataset is homogeneous (e.g. all piano pieces, songs of the same style, etc).

Near the end of training, follow this to anneal the learning rate to 0

Sample from new model

You can then run sample.py with the top-level of our models replaced by your new model. To do so,

  • Add an entry my_model=("vqvae", "upsampler_level_0", "upsampler_level_1", "small_prior") in MODELS in make_models.py.
  • Update the small_prior dictionary in hparams.py to include restore_prior='path/to/checkpoint'. If you you changed any hps directly in the command line script (eg:heads), make sure to update them in the dictionary too so that make_models restores our checkpoint correctly.
  • Run sample.py as outlined in the sampling section, but now with --model=my_model

For example, let's say we trained small_vqvae, small_prior, and small_upsampler under /path/to/jukebox/logs. In make_models.py, we are going to declare a tuple of the new models as my_model.

MODELS = {
    '5b': ("vqvae", "upsampler_level_0", "upsampler_level_1", "prior_5b"),
    '5b_lyrics': ("vqvae", "upsampler_level_0", "upsampler_level_1", "prior_5b_lyrics"),
    '1b_lyrics': ("vqvae", "upsampler_level_0", "upsampler_level_1", "prior_1b_lyrics"),
    'my_model': ("my_small_vqvae", "my_small_upsampler", "my_small_prior"),
}

Next, in hparams.py, we add them to the registry with the corresponding restore_paths and any other command line options used during training. Another important note is that for top-level priors with lyric conditioning, we have to locate a self-attention layer that shows alignment between the lyric and music tokens. Look for layers where prior.prior.transformer._attn_mods[layer].attn_func is either 6 or 7. If your model is starting to sing along lyrics, it means some layer, head pair has learned alignment. Congrats!

my_small_vqvae = Hyperparams(
    restore_vqvae='/path/to/jukebox/logs/small_vqvae/checkpoint_some_step.pth.tar',
)
my_small_vqvae.update(small_vqvae)
HPARAMS_REGISTRY["my_small_vqvae"] = my_small_vqvae

my_small_prior = Hyperparams(
    restore_prior='/path/to/jukebox/logs/small_prior/checkpoint_latest.pth.tar',
    level=1,
    labels=False,
    # TODO For the two lines below, if `--labels` was used and the model is
    # trained with lyrics, find and enter the layer, head pair that has learned
    # alignment.
    alignment_layer=47,
    alignment_head=0,
)
my_small_prior.update(small_prior)
HPARAMS_REGISTRY["my_small_prior"] = my_small_prior

my_small_upsampler = Hyperparams(
    restore_prior='/path/to/jukebox/logs/small_upsampler/checkpoint_latest.pth.tar',
    level=0,
    labels=False,
)
my_small_upsampler.update(small_upsampler)
HPARAMS_REGISTRY["my_small_upsampler"] = my_small_upsampler

Train with labels

To train with you own metadata for your audio files, implement get_metadata in data/files_dataset.py to return the artist, genre and lyrics for a given audio file. For now, you can pass '' for lyrics to not use any lyrics.

For training with labels, we'll use small_labelled_prior in hparams.py, and we set labels=True,labels_v3=True. We use 2 kinds of labels information:

  • Artist/Genre:
    • For each file, we return an artist_id and a list of genre_ids. The reason we have a list and not a single genre_id is that in v2, we split genres like blues_rock into a bag of words [blues, rock], and we pass atmost max_bow_genre_size of those, in v3 we consider it as a single word and just set max_bow_genre_size=1.
    • Update the v3_artist_ids and v3_genre_ids to use ids from your new dataset.
    • In small_labelled_prior, set the hps y_bins = (number_of_genres, number_of_artists) and max_bow_genre_size=1.
  • Timing:
    • For each chunk of audio, we return the total_length of the song, the offset the current audio chunk is at and the sample_length of the audio chunk. We have three timing embeddings: total_length, our current position, and our current position as a fraction of the total length, and we divide the range of these values into t_bins discrete bins.
    • In small_labelled_prior, set the hps min_duration and max_duration to be the shortest/longest duration of audio files you want for your dataset, and t_bins for how many bins you want to discretize timing information into. Note min_duration * sr needs to be at least sample_length to have an audio chunk in it.

After these modifications, to train a top-level with labels, run

mpiexec -n {ngpus} python jukebox/train.py --hps=vqvae,small_labelled_prior,all_fp16,cpu_ema --name=pretrained_vqvae_small_prior_labels \
--sample_length=1048576 --bs=4 --aug_shift --aug_blend --audio_files_dir={audio_files_dir} \
--labels=True --train --test --prior --levels=3 --level=2 --weight_decay=0.01 --save_iters=1000

For sampling, follow same instructions as above but use small_labelled_prior instead of small_prior.

Train with lyrics

To train in addition with lyrics, update get_metadata in data/files_dataset.py to return lyrics too. For training with lyrics, we'll use small_single_enc_dec_prior in hparams.py.

  • Lyrics:
    • For each file, we linearly align the lyric characters to the audio, find the position in lyric that corresponds to the midpoint of our audio chunk, and pass a window of n_tokens lyric characters centred around that.
    • In small_single_enc_dec_prior, set the hps use_tokens=True and n_tokens to be the number of lyric characters to use for an audio chunk. Set it according to the sample_length you're training on so that its large enough that the lyrics for an audio chunk are almost always found inside a window of that size.
    • If you use a non-English vocabulary, update text_processor.py with your new vocab and set n_vocab = number of characters in vocabulary accordingly in small_single_enc_dec_prior. In v2, we had a n_vocab=80 and in v3 we missed + and so n_vocab=79 of characters.

After these modifications, to train a top-level with labels and lyrics, run

mpiexec -n {ngpus} python jukebox/train.py --hps=vqvae,small_single_enc_dec_prior,all_fp16,cpu_ema --name=pretrained_vqvae_small_single_enc_dec_prior_labels \
--sample_length=786432 --bs=4 --aug_shift --aug_blend --audio_files_dir={audio_files_dir} \
--labels=True --train --test --prior --levels=3 --level=2 --weight_decay=0.01 --save_iters=1000

To simplify hps choices, here we used a single_enc_dec model like the 1b_lyrics model that combines both encoder and decoder of the transformer into a single model. We do so by merging the lyric vocab and vq-vae vocab into a single larger vocab, and flattening the lyric tokens and the vq-vae codes into a single sequence of length n_ctx + n_tokens. This uses attn_order=12 which includes prime_attention layers with keys/values from lyrics and queries from audio. If you instead want to use a model with the usual encoder-decoder style transformer, use small_sep_enc_dec_prior.

For sampling, follow same instructions as above but use small_single_enc_dec_prior instead of small_prior. To also get the alignment between lyrics and samples in the saved html, you'll need to set alignment_layer and alignment_head in small_single_enc_dec_prior. To find which layer/head is best to use, run a forward pass on a training example, save the attention weight tensors for all prime_attention layers, and pick the (layer, head) which has the best linear alignment pattern between the lyrics keys and music queries.

Fine-tune pre-trained top-level prior to new style(s)

Previously, we showed how to train a small top-level prior from scratch. Assuming you have a GPU with at least 15 GB of memory and support for fp16, you could fine-tune from our pre-trained 1B top-level prior. Here are the steps:

  • Support --labels=True by implementing get_metadata in jukebox/data/files_dataset.py for your dataset.
  • Add new entries in jukebox/data/ids. We recommend replacing existing mappings (e.g. rename "unknown", etc with styles of your choice). This uses the pre-trained style vectors as initialization and could potentially save some compute.

After these modifications, run

mpiexec -n {ngpus} python jukebox/train.py --hps=vqvae,prior_1b_lyrics,all_fp16,cpu_ema --name=finetuned \
--sample_length=1048576 --bs=1 --aug_shift --aug_blend --audio_files_dir={audio_files_dir} \
--labels=True --train --test --prior --levels=3 --level=2 --weight_decay=0.01 --save_iters=1000

To get the best sample quality, it is recommended to anneal the learning rate in the end. Training the 5B top-level requires GPipe which is not supported in this release.

Citation

Please cite using the following bibtex entry:

@article{dhariwal2020jukebox,
  title={Jukebox: A Generative Model for Music},
  author={Dhariwal, Prafulla and Jun, Heewoo and Payne, Christine and Kim, Jong Wook and Radford, Alec and Sutskever, Ilya},
  journal={arXiv preprint arXiv:2005.00341},
  year={2020}
}

License

Noncommercial Use License

It covers both released code and weights.

Comments
  • Primed audio samples from notebook

    Primed audio samples from notebook

    From the notebook, how would you change the mode from an ancestral_sample starting point to a primed audio file list? I tried adding these to the Hyperparams() hps instance, but it wasn't effective.

    opened by iRyanBell 46
  • Jukebox error when running the model.

    Jukebox error when running the model.

    I am using google colab to run this but since today I can't run it. I think that this is an issue on their side.

    It is a "File not found" error but when I click the link then it just downloaded the file.

    ---------------------------------------------------------------------------
    FileNotFoundError                         Traceback (most recent call last)
    <ipython-input-6-d8cd9b2b81be> in <module>()
         12 
         13 vqvae, *priors = MODELS[model]
    ---> 14 vqvae = make_vqvae(setup_hparams(vqvae, dict(sample_length = 1048576)), device)
         15 top_prior = make_prior(setup_hparams(priors[-1], dict()), vqvae, device)
    
    5 frames
    /usr/local/lib/python3.6/dist-packages/torch/serialization.py in __init__(self, name, mode)
        209 class _open_file(_opener):
        210     def __init__(self, name, mode):
    --> 211         super(_open_file, self).__init__(open(name, mode))
        212 
        213     def __exit__(self, *args):
    
    FileNotFoundError: [Errno 2] No such file or directory: 'https://openaipublic.blob.core.windows.net/jukebox/models/5b/vqvae.pth.tar'
    

    When I download the file and put it in my gdrive and point towards that I get this error.

    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-7-6b4098c77718> in <module>()
         13 vqvae, *priors = MODELS[model]
         14 vqvae = '/content/gdrive/My Drive/Jukebox/vqvae.pth.tar'
    ---> 15 top_prior = make_prior(setup_hparams(priors[-1], dict()), vqvae, device)
    
    /usr/local/lib/python3.6/dist-packages/jukebox/make_models.py in make_prior(hps, vqvae, device)
        113     from jukebox.prior.prior import SimplePrior
        114 
    --> 115     prior_kwargs = dict(input_shape=(hps.n_ctx,), bins=vqvae.l_bins,
        116                         width=hps.prior_width, depth=hps.prior_depth, heads=hps.heads,
        117                         attn_order=hps.attn_order, blocks=hps.blocks, spread=hps.spread,
    
    AttributeError: 'str' object has no attribute 'l_bins'
    

    I do not have any experience with python.

    opened by Randy1435 19
  • Corrupted 1b_lyrics checkpoint?

    Corrupted 1b_lyrics checkpoint?

    Have the same issue on local machine (Ubuntu 20.04, 1080Ti, Anaconda, python 3.7, all installed as in readme) and on Google CoLab.

    When fetching checkpoint for 1b_lyrics model and try to start:

    (jukebox) desm0nt@desm0nt-linux:~/jukebox$ python jukebox/sample.py --model=1b_lyrics --name=sample_1b --levels=3 --sample_length_in_seconds=20 --total_sample_length_in_seconds=180 --sr=44100 --n_samples=4 --hop_fraction=0.5,0.5,0.125
    Using cuda True
    {'name': 'sample_1b', 'levels': 3, 'sample_length_in_seconds': 20, 'total_sample_length_in_seconds': 180, 'sr': 44100, 'n_samples': 4, 'hop_fraction': (0.5, 0.5, 0.125)}
    Setting sample length to 881920 (i.e. 19.998185941043083 seconds) to be multiple of 128
    Downloading from gce
    Restored from /home/desm0nt/.cache/jukebox-assets/models/5b/vqvae.pth.tar
    0: Loading vqvae in eval mode
    Conditioning on 1 above level(s)
    Checkpointing convs
    Checkpointing convs
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v2_artist_ids.txt
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v2_genre_ids.txt
    Level:0, Cond downsample:4, Raw to tokens:8, Sample length:65536
    Downloading from gce
    Restored from /home/desm0nt/.cache/jukebox-assets/models/5b/prior_level_0.pth.tar
    0: Loading prior in eval mode
    Conditioning on 1 above level(s)
    Checkpointing convs
    Checkpointing convs
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v2_artist_ids.txt
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v2_genre_ids.txt
    Level:1, Cond downsample:4, Raw to tokens:32, Sample length:262144
    Downloading from gce
    Restored from /home/desm0nt/.cache/jukebox-assets/models/5b/prior_level_1.pth.tar
    0: Loading prior in eval mode
    Creating cond. autoregress with prior bins [79, 2048], 
    dims [384, 6144], 
    shift [ 0 79]
    input shape 6528
    input bins 2127
    Self copy is False
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v3_artist_ids.txt
    Loading artist IDs from /home/desm0nt/jukebox/jukebox/data/ids/v3_genre_ids.txt
    Level:2, Cond downsample:None, Raw to tokens:128, Sample length:786432
    Downloading from gce
    Traceback (most recent call last):
      File "jukebox/sample.py", line 237, in <module>
        fire.Fire(run)
      File "/home/desm0nt/anaconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 127, in Fire
        component_trace = _Fire(component, args, context, name)
      File "/home/desm0nt/anaconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 366, in _Fire
        component, remaining_args)
      File "/home/desm0nt/anaconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 542, in _CallCallable
        result = fn(*varargs, **kwargs)
      File "jukebox/sample.py", line 234, in run
        save_samples(model, device, hps, sample_hps)
      File "jukebox/sample.py", line 157, in save_samples
        vqvae, priors = make_model(model, device, hps)
      File "/home/desm0nt/jukebox/jukebox/make_models.py", line 185, in make_model
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "/home/desm0nt/jukebox/jukebox/make_models.py", line 185, in <listcomp>
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "/home/desm0nt/jukebox/jukebox/make_models.py", line 169, in make_prior
        restore(hps, prior, hps.restore_prior)
      File "/home/desm0nt/jukebox/jukebox/make_models.py", line 54, in restore
        checkpoint = load_checkpoint(checkpoint_path)
      File "/home/desm0nt/jukebox/jukebox/make_models.py", line 37, in load_checkpoint
        checkpoint = t.load(restore, map_location=t.device('cpu'))
      File "/home/desm0nt/anaconda3/envs/jukebox/lib/python3.7/site-packages/torch/serialization.py", line 529, in load
        return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
      File "/home/desm0nt/anaconda3/envs/jukebox/lib/python3.7/site-packages/torch/serialization.py", line 709, in _legacy_load
        deserialized_objects[key]._set_from_file(f, offset, f_should_read_directly)
    RuntimeError: unexpected EOF, expected 61312207 more bytes. The file might be corrupted.
    corrupted double-linked list
    Aborted (core dumped)
    
    opened by Desm0nt 11
  • Error installing tensorboardX

    Error installing tensorboardX

    Hey, I'm sorry if this is a stupid question as I'm new to programming/GitHub generally and I don't even know if it's correct to ask it here, I just hope I'll be able to get help here since I really want to use Jukebox.

    I was following the installation instructions precisely, but I don't seem to be able to install tensorboardX, this is the output I get when trying to install it. (Linked in case the file upload doesn't work)

    Cheers tensorboardX_installation_error.txt

    opened by myangelaku 10
  • RuntimeError: Failed to initialize NCCL

    RuntimeError: Failed to initialize NCCL

    Running into

    Caught error during NCCL init (attempt 0 of 5): Distributed package doesn't have NCCL built in
    Caught error during NCCL init (attempt 1 of 5): Distributed package doesn't have NCCL built in
    Caught error during NCCL init (attempt 2 of 5): Distributed package doesn't have NCCL built in
    Caught error during NCCL init (attempt 3 of 5): Distributed package doesn't have NCCL built in
    Caught error during NCCL init (attempt 4 of 5): Distributed package doesn't have NCCL built in
    Traceback (most recent call last):
      File "jukebox/sample.py", line 237, in <module>
        fire.Fire(run)
      File "/Users/user/anaconda/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 127, in Fire
        component_trace = _Fire(component, args, context, name)
      File "/Users/user/anaconda/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 366, in _Fire
        component, remaining_args)
      File "/Users/user/anaconda/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 542, in _CallCallable
        result = fn(*varargs, **kwargs)
      File "jukebox/sample.py", line 229, in run
        rank, local_rank, device = setup_dist_from_mpi(port=port)
      File "/Users/user/Documents/projects/jukebox/jukebox/utils/dist_utils.py", line 86, in setup_dist_from_mpi
        raise RuntimeError("Failed to initialize NCCL")
    RuntimeError: Failed to initialize NCCL
    

    Specifically it is stating:

    Distributed package doesn't have NCCL built in
    

    From running

    python jukebox/sample.py --model=1b_lyrics --name=sample_5b --levels=3 --sample_length_in_seconds=20 --total_sample_length_in_seconds=18/0 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125
    

    Seems to be coming from https://github.com/openai/jukebox/blob/2705dc07b29439b23fab5b4d6e85597ad7d90da3/jukebox/utils/dist_utils.py#L42

    Here is where it is raised: https://github.com/openai/jukebox/blob/2705dc07b29439b23fab5b4d6e85597ad7d90da3/jukebox/utils/dist_utils.py#L69-L86

    Is the problem regarding my python distribution?

    opened by Jovonni 10
  • FileNotFoundError: [WinError 2] The system cannot find the file specified

    FileNotFoundError: [WinError 2] The system cannot find the file specified

    (jukebox) C:\Users\Fynda\Projects\ml\jukebox>python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --sample_length_in_seconds=20 \ --total_sample_length_in_seconds=180 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125
    Using cuda True
    {'name': 'sample_5b', 'levels': 3, 'sample_length_in_seconds': 20, 'total_sample_length_in_seconds': 180, 'sr': 44100, 'n_samples': 6, 'hop_fraction': (0.5, 0.5, 0.125)}
    Setting sample length to 881920 (i.e. 19.998185941043083 seconds) to be multiple of 128
    Downloading from gce
    Restored from C:\Users\marco/.cache\jukebox-assets/models/5b/vqvae.pth.tar
    Loading vqvae in eval mode
    Conditioning on 1 above level(s)
    Checkpointing convs
    Checkpointing convs
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_artist_ids.txt
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_genre_ids.txt
    Level:0, Cond downsample:4, Raw to tokens:8, Sample length:65536
    Downloading from gce
    Restored from C:\Users\marco/.cache\jukebox-assets/models/5b/prior_level_0.pth.tar
    Loading prior in eval mode
    Conditioning on 1 above level(s)
    Checkpointing convs
    Checkpointing convs
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_artist_ids.txt
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_genre_ids.txt
    Level:1, Cond downsample:4, Raw to tokens:32, Sample length:262144
    Downloading from gce
    Restored from C:\Users\marco/.cache\jukebox-assets/models/5b/prior_level_1.pth.tar
    Loading prior in eval mode
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_artist_ids.txt
    Loading artist IDs from c:\users\fynda\projects\ml\jukebox\jukebox\data/ids/v2_genre_ids.txt
    Level:2, Cond downsample:None, Raw to tokens:128, Sample length:1048576
    Converting to fp16 params
    Downloading from gce
    Traceback (most recent call last):
      File "jukebox/sample.py", line 279, in <module>
        fire.Fire(run)
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\site-packages\fire\core.py", line 127, in Fire
        component_trace = _Fire(component, args, context, name)
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\site-packages\fire\core.py", line 366, in _Fire
        component, remaining_args)
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\site-packages\fire\core.py", line 542, in _CallCallable
        result = fn(*varargs, **kwargs)
      File "jukebox/sample.py", line 276, in run
        save_samples(model, device, hps, sample_hps)
      File "jukebox/sample.py", line 181, in save_samples
        vqvae, priors = make_model(model, device, hps)
      File "c:\users\fynda\projects\ml\jukebox\jukebox\make_models.py", line 195, in make_model
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "c:\users\fynda\projects\ml\jukebox\jukebox\make_models.py", line 195, in <listcomp>
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "c:\users\fynda\projects\ml\jukebox\jukebox\make_models.py", line 179, in make_prior
        restore_model(hps, prior, hps.restore_prior)
      File "c:\users\fynda\projects\ml\jukebox\jukebox\make_models.py", line 55, in restore_model
        checkpoint = load_checkpoint(checkpoint_path)
      File "c:\users\fynda\projects\ml\jukebox\jukebox\make_models.py", line 34, in load_checkpoint
        download(gs_path, local_path)
      File "c:\users\fynda\projects\ml\jukebox\jukebox\utils\gcs_utils.py", line 36, in download
        subprocess.call(args)
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\subprocess.py", line 339, in call
        with Popen(*popenargs, **kwargs) as p:
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\subprocess.py", line 800, in __init__
        restore_signals, start_new_session)
      File "C:\ProgramData\Anaconda3\envs\jukebox\lib\subprocess.py", line 1207, in _execute_child
        startupinfo)
    FileNotFoundError: [WinError 2] The system cannot find the file specified
    

    I have everything installed and when I load all the models to my /.cache director from google static storage download I get this error. Seems to be something to do with importing fire in the sample.py

    I am running on Windows 10 with Anaconda3 and have wget installed to windows git bash.

    Not running on a linux environment...

    I have 2 Nvidia RTX 2080 TI cards working on CUDA with lots of memory. 64 GB RAM i9 CPU 5.0GHz

    Saw other issues like this occur in the google collab / jupyter book and said something about wget which shouldn't be an issue? Can't run wget in my Anaconda prompt locally. Is this causing the error? What's the easiest way to add the wget cmd to the bin for anaconda3? Is this the right solution?

    opened by kordspace 8
  • Lyrics Conditioning

    Lyrics Conditioning

    Is the lyrics Conditioning only at training time or is it possible to seed the model with own lyrics in the same way as is possible with wav input here

    python jukebox/sample.py --model=5b_lyrics --name=sample_5b_prompted --levels=3 --mode=primed --audio_file=path/to/recording.wav,awesome-mix.wav,fav-song.wav,etc.wav --prompt_length_in_seconds=12 --sample_length_in_seconds=20 --total_sample_length_in_seconds=180 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125

    opened by loretoparisi 7
  • Problem running installation instructions

    Problem running installation instructions

    When I run this:

    conda install pytorch=1.4 torchvision=0.5 cudatoolkit=10.0 -c pytorch
    

    I get:

    PackagesNotFoundError: The following packages are not available from current channels:
    
      - cudatoolkit=10.0
    Current channels:
    
      - https://conda.anaconda.org/pytorch/osx-64
      - https://conda.anaconda.org/pytorch/noarch
      - https://repo.anaconda.com/pkgs/main/osx-64
      - https://repo.anaconda.com/pkgs/main/noarch
      - https://repo.anaconda.com/pkgs/r/osx-64
      - https://repo.anaconda.com/pkgs/r/noarch
      - https://conda.anaconda.org/conda-forge/osx-64
      - https://conda.anaconda.org/conda-forge/noarch
    
    To search for alternate channels that may provide the conda package you're
    looking for, navigate to
    
        https://anaconda.org
    
    and use the search bar at the top of the page.
    

    I did as the error suggested but I couldn't find the package cudatoolkit v10+ for OS X. (https://anaconda.org/anaconda/cudatoolkit)

    Any ideas on how to solve this?

    opened by maraoz 6
  • OSError: [Errno 12] Cannot allocate memory

    OSError: [Errno 12] Cannot allocate memory

    Hi, this looks awesome btw!

    I tried running the sample.py command with my own song, but received the following error:

    Level:2, Cond downsample:None, Raw to tokens:128, Sample length:1048576
    0: Converting to fp16 params
    Downloading from gce
    Traceback (most recent call last):
      File "jukebox/sample.py", line 237, in <module>
        fire.Fire(run)
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 127, in Fire
        component_trace = _Fire(component, args, context, name)
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 366, in _Fire
        component, remaining_args)
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/site-packages/fire/core.py", line 542, in _CallCallable
        result = fn(*varargs, **kwargs)
      File "jukebox/sample.py", line 234, in run
        save_samples(model, device, hps, sample_hps)
      File "jukebox/sample.py", line 157, in save_samples
        vqvae, priors = make_model(model, device, hps)
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/make_models.py", line 185, in make_model
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/make_models.py", line 185, in <listcomp>
        priors = [make_prior(setup_hparams(priors[level], dict()), vqvae, 'cpu') for level in levels]
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/make_models.py", line 169, in make_prior
        restore(hps, prior, hps.restore_prior)
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/make_models.py", line 54, in restore
        checkpoint = load_checkpoint(checkpoint_path)
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/make_models.py", line 34, in load_checkpoint
        download(gs_path, local_path)
      File "/media/rajlab/sachin_data_2/userdata/xihe/jukebox/jukebox/utils/gcs_utils.py", line 36, in download
        subprocess.call(args)
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/subprocess.py", line 339, in call
        with Popen(*popenargs, **kwargs) as p:
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/subprocess.py", line 800, in __init__
        restore_signals, start_new_session)
      File "/home/axiezai/miniconda3/envs/jukebox/lib/python3.7/subprocess.py", line 1482, in _execute_child
        restore_signals, start_new_session, preexec_fn)
    OSError: [Errno 12] Cannot allocate memory
    

    I did some googling, and this seems like a swap space issue? I checked and confirmed I had free swap space:

    # free -h
                  total        used        free      shared  buff/cache   available
    Mem:            31G        615M         29G         16M        780M         29G
    Swap:          236M         42M        194M
    
    Thu Apr 30 14:50:26 2020
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 410.78       Driver Version: 410.78       CUDA Version: 10.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  TITAN Xp            Off  | 00000000:42:00.0  On |                  N/A |
    | 23%   34C    P8    18W / 250W |     76MiB / 12194MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0      1451      G   /usr/lib/xorg/Xorg                            73MiB |
    +-----------------------------------------------------------------------------+
    

    Is 194M not enough? Is there a minimum requirement for swap space that I'm not meeting or is this memory error caused by something else?

    opened by axiezai 5
  • How do you sample and train your own music in Google Colab?

    How do you sample and train your own music in Google Colab?

    Hi,

    I wanted to test out this library with my own samples of music. I don't have a dedicated GPU on my local machine, so I wanted to try this with Google Colab. I can't seem to find the directory where samples should be loaded and not clear on how to run on your own custom music files?

    If the Google Colab is purely for demo, I can try to initialize a compute engine/VM under Google Cloud Platform. If anyone can give recommended configurations for a GCP compute engine, that would be greatly appreciated!

    opened by briancpark 4
  • Out of RAM on 32GB + RTX A4000 machine while trying to launch the sampling from scratch

    Out of RAM on 32GB + RTX A4000 machine while trying to launch the sampling from scratch

    After downloading the prior level models, Jukebox goes to 0:" Loading prior in eval mode" and then RAM consumption slowly reaches the maximum of 32GB and then the process crashes returning zsh: killed python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 As it can be seen in Google Colab, the Jukebox nearly utilizes only the allocated 12.7 GB RAM and even doesn't reach the maximum, so I want to know where might be the issue. Possibly I have misconfigured it somehow (but it is done right by instructions from the title page) and it doesn't utilize the VRAM at all (the VRAM graph does not show any significant consumption, it just increases for ~400MB at the beginning and returns back after crashing)

    Used command:

    python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --sample_length_in_seconds=20 \
    --total_sample_length_in_seconds=80 --sr=44100 --n_samples=2 --hop_fraction=0.5,0.5,0.125
    

    System:

    ██████████████████  ████████   fubar@perkele 
    ██████████████████  ████████   ------------- 
    ██████████████████  ████████   OS: Manjaro Linux x86_64 
    ██████████████████  ████████   Kernel: 5.19.1-3-MANJARO 
    ████████            ████████   Uptime: 2 hours, 14 mins 
    ████████  ████████  ████████   Packages: 1196 (pacman) 
    ████████  ████████  ████████   Shell: bash 5.1.16 
    ████████  ████████  ████████   Resolution: 2560x1440 
    ████████  ████████  ████████   DE: Plasma 5.24.6 
    ████████  ████████  ████████   WM: KWin 
    ████████  ████████  ████████   Theme: [Plasma], Breeze [GTK2/3] 
    ████████  ████████  ████████   Icons: [Plasma], breeze [GTK2/3] 
    ████████  ████████  ████████   Terminal: konsole 
    ████████  ████████  ████████   CPU: AMD Ryzen 7 PRO 2700 (16) @ 3.200GHz 
                                   GPU: NVIDIA RTX A4000 
                                   Memory: 2359MiB / 32006MiB 
    
    

    Also while trying to operate it through Interacting_with_Jukebox.ipynb file, the GIT import cell just breaks down the existing instance of Jukebox and it now returns the error

    Traceback (most recent call last):
      File "jukebox/sample.py", line 8, in <module>
        from jukebox.utils.audio_utils import save_wav, load_audio
      File "/home/fubar/jukebox/jukebox/utils/audio_utils.py", line 4, in <module>
        import soundfile
      File "/home/fubar/miniconda3/envs/jukebox/lib/python3.7/site-packages/soundfile.py", line 17, in <module>
        from _soundfile import ffi as _ffi
      File "/home/fubar/miniconda3/envs/jukebox/lib/python3.7/site-packages/_soundfile.py", line 2, in <module>
        import _cffi_backend
    ImportError: libffi.so.7: cannot open shared object file: No such file or directory
    

    and only deleting the folder and reestablishing of the jukebox instance returnsit to the previous state.

    opened by surpscare 3
  • Gaussian, MoL or MoG instead of categorical

    Gaussian, MoL or MoG instead of categorical

    I got my attention in the future work mentioned in the paper. So, in order to distill the prior with IAF, is it necessary to estimate prior parameters based on a distribution other than categorical? Like Gaussian, MoL or so...This is based in parallel wavelet paper.

    opened by MichelPezzat 0
  • Add `cache_path` as a hyperparameter to cache checkpoints at other locations than `~/.cache`

    Add `cache_path` as a hyperparameter to cache checkpoints at other locations than `~/.cache`

    Especially when working from Colab, it makes sense to be able to load the model from Google Drive rather than a local folder.

    Here are the suggseted changes to make_models.py:

    load_checkpoint(path, hps = None):
      restore = path
      if restore.startswith(REMOTE_PREFIX):
          remote_path = restore
          cache_path = hps.data_path if hps else os.path.expanduser("~/.cache")
          local_path = os.path.join(cache_path, remote_path[len(REMOTE_PREFIX):])
          if dist.get_rank() % 8 == 0:
              print("Downloading from azure")
              if not os.path.exists(os.path.dirname(local_path)):
                  os.makedirs(os.path.dirname(local_path))
              if not os.path.exists(local_path):
                  download(remote_path, local_path)
          restore = local_path
      dist.barrier()
      checkpoint = t.load(restore, map_location=t.device('cpu'))
      print("Restored from {}".format(restore))
      return checkpoint
    

    and respectively

    def restore_model(hps, model, checkpoint_path):
        model.step = 0
        if checkpoint_path != '':
            checkpoint = load_checkpoint(checkpoint_path, hps)
            # checkpoint_hps = Hyperparams(**checkpoint['hps'])
            # for k in set(checkpoint_hps.keys()).union(set(hps.keys())):
            #     if checkpoint_hps.get(k, None) != hps.get(k, None):
            #         print(k, "Checkpoint:", checkpoint_hps.get(k, None), "Ours:", hps.get(k, None))
            checkpoint['model'] = {k[7:] if k[:7] == 'module.' else k: v for k, v in checkpoint['model'].items()}
            model.load_state_dict(checkpoint['model'])
            if 'step' in checkpoint: model.step = checkpoint['step']
    
    opened by vzakharov 0
  • When select_artist & select_genre are none or 0, does it limit jukebox?

    When select_artist & select_genre are none or 0, does it limit jukebox?

    Let's say I use audio_file which comes from a 10-second piece of an Aerosmith song. If I don't write any artist and genre, will jukebox use all that pretrained data (which surely contains some Aerosmith songs)? Or will it use only those datas, which were labeled as "unknown", "various"? I geniunely want to use all the data there actually is in the model.

    opened by bringmemyaxe 0
  • Fine-tuning models

    Fine-tuning models

    Hello! Could you please tell me what resources are needed to fine-tune the pre-trained top level before the new style(s). I want to use model 5b. Is it possible without GPipe?

    I run this but with my data:

    mpiexec -n {ngpus} python jukebox/train.py --hps=vqvae,prior_1b_lyrics,all_fp16,cpu_ema --name=finetuned \
    --sample_length=1048576 --bs=1 --aug_shift --aug_blend --audio_files_dir={audio_files_dir} \
    --labels=True --train --test --prior --levels=3 --level=2 --weight_decay=0.01 --save_iters=1000
    

    I set a limit of 30 seconds for my data, but my process is being killed due to lack of RAM. That being said, I'm using the 1b model for now. What else can help reduce the load on my machine's resources? When trying to use the 5b model, an error appears about the lack of cuda memory. How much memory do you need video cards?

    opened by ReyraV 2
  • error when i try to activate apex

    error when i try to activate apex

    i have done this that the result

    pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./apex WARNING: Disabling all use of wheels due to the use of --build-option / --global-option / --install-option.
    Using pip 22.1.2 from /home/antoine/miniconda3/envs/jukebox/lib/python3.7/site-packages/pip (python 3.7) Processing ./apex Running command python setup.py egg_info torch.version = 1.1.0 running egg_info creating /tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info writing /tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/PKG-INFO writing dependency_links to /tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/dependency_links.txt writing top-level names to /tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/top_level.txt writing manifest file '/tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/SOURCES.txt' reading manifest file '/tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file '/tmp/pip-pip-egg-info-4nrbf_nz/apex.egg-info/SOURCES.txt' Preparing metadata (setup.py) ... done Skipping wheel build for apex, due to binaries being disabled for it. Installing collected packages: apex Running command Running setup.py install for apex torch.version = 1.1.0 Traceback (most recent call last): File "", line 36, in File "", line 34, in File "/home/antoine/jukebox/jukebox/apex/setup.py", line 62, in raise RuntimeError("--cuda_ext was requested, but nvcc was not found. Are you sure your environment has nvcc available? If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc.") RuntimeError: --cuda_ext was requested, but nvcc was not found. Are you sure your environment has nvcc available? If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc. error: subprocess-exited-with-error

    × Running setup.py install for apex did not run successfully. │ exit code: 1 ╰─> See above for output.

    note: This error originates from a subprocess, and is likely not a problem with pip. full command: /home/antoine/miniconda3/envs/jukebox/bin/python -u -c ' exec(compile('"'"''"'"''"'"'

    This is -- a caller that pip uses to run setup.py

    - It imports setuptools before invoking setup.py, to enable projects that directly

    import from distutils.core to work with newer packaging standards.

    - It provides a clear error message when setuptools is not installed.

    - It sets sys.argv[0] to the underlying setup.py, when invoking setup.py so

    setuptools doesn'"'"'t think the script is -c. This avoids the following warning:

    manifest_maker: standard file '"'"'-c'"'"' not found".

    - It generates a shim setup.py, for handling setup.cfg-only projects.

    import os, sys, tokenize

    try: import setuptools except ImportError as error: print( "ERROR: Can not execute setup.py since setuptools is not available in "
    "the build environment.", file=sys.stderr, ) sys.exit(1)

    file = %r sys.argv[0] = file

    if os.path.exists(file): filename = file with tokenize.open(file) as f: setup_py_code = f.read() else: filename = "" setup_py_code = "from setuptools import setup; setup()"

    exec(compile(setup_py_code, filename, "exec")) '"'"''"'"''"'"' % ('"'"'/home/antoine/jukebox/jukebox/apex/setup.py'"'"',), "", "exec"))' --cpp_ext --cuda_ext install --record /tmp/pip-record-8n9d880b/install-record.txt --single-version-externally-managed --compile --install-headers /home/antoine/miniconda3/envs/jukebox/include/python3.7m/apex cwd: /home/antoine/jukebox/jukebox/apex/ Running setup.py install for apex ... error error: legacy-install-failure

    × Encountered error while trying to install package. ╰─> apex

    note: This is an issue with the package mentioned above, not pip. hint: See above for output from the failure.

    opened by Postconceptlab 0
  • error at trying jukebox importerror

    error at trying jukebox importerror

    i have this when i launch jukebox python sample.py what xhould i have to do ?

    python jukebox/sample.py --model=5b_lyrics --name=sample_5b --levels=3 --sample_length_in_seconds=20 \ --total_sample_length_in_seconds=180 --sr=44100 --n_samples=6 --hop_fraction=0.5,0.5,0.125 Traceback (most recent call last): File "jukebox/sample.py", line 8, in from jukebox.utils.audio_utils import save_wav, load_audio File "/home/antoine/jukebox/jukebox/jukebox/utils/audio_utils.py", line 4, in import soundfile File "/home/antoine/miniconda3/envs/jukebox/lib/python3.7/site-packages/soundfile.py", line 17, in from _soundfile import ffi as _ffi File "/home/antoine/miniconda3/envs/jukebox/lib/python3.7/site-packages/_soundfile.py", line 2, in import _cffi_backend ImportError: libffi.so.7: cannot open shared object file: No such file or directory

    opened by Postconceptlab 2
This is the official source code for SLATE. We provide the code for the model, the training code, and a dataset loader for the 3D Shapes dataset. This code is implemented in Pytorch.

SLATE This is the official source code for SLATE. We provide the code for the model, the training code and a dataset loader for the 3D Shapes dataset.

Gautam Singh 66 Dec 26, 2022
Code for paper ECCV 2020 paper: Who Left the Dogs Out? 3D Animal Reconstruction with Expectation Maximization in the Loop.

Who Left the Dogs Out? Evaluation and demo code for our ECCV 2020 paper: Who Left the Dogs Out? 3D Animal Reconstruction with Expectation Maximization

Benjamin Biggs 29 Dec 28, 2022
TensorFlow code for the neural network presented in the paper: "Structural Language Models of Code" (ICML'2020)

SLM: Structural Language Models of Code This is an official implementation of the model described in: "Structural Language Models of Code" [PDF] To ap

null 73 Nov 6, 2022
Code for the prototype tool in our paper "CoProtector: Protect Open-Source Code against Unauthorized Training Usage with Data Poisoning".

CoProtector Code for the prototype tool in our paper "CoProtector: Protect Open-Source Code against Unauthorized Training Usage with Data Poisoning".

Zhensu Sun 1 Oct 26, 2021
Code to use Augmented Shapiro Wilks Stopping, as well as code for the paper "Statistically Signifigant Stopping of Neural Network Training"

This codebase is being actively maintained, please create and issue if you have issues using it Basics All data files are included under losses and ea

J K Terry 32 Nov 9, 2021
Code for our method RePRI for Few-Shot Segmentation. Paper at http://arxiv.org/abs/2012.06166

Region Proportion Regularized Inference (RePRI) for Few-Shot Segmentation In this repo, we provide the code for our paper : "Few-Shot Segmentation Wit

Malik Boudiaf 138 Dec 12, 2022
Code for ACM MM 2020 paper "NOH-NMS: Improving Pedestrian Detection by Nearby Objects Hallucination"

NOH-NMS: Improving Pedestrian Detection by Nearby Objects Hallucination The offical implementation for the "NOH-NMS: Improving Pedestrian Detection by

Tencent YouTu Research 64 Nov 11, 2022
Official TensorFlow code for the forthcoming paper

~ Efficient-CapsNet ~ Are you tired of over inflated and overused convolutional neural networks? You're right! It's time for CAPSULES :)

Vittorio Mazzia 203 Jan 8, 2023
This is the code for the paper "Contrastive Clustering" (AAAI 2021)

Contrastive Clustering (CC) This is the code for the paper "Contrastive Clustering" (AAAI 2021) Dependency python>=3.7 pytorch>=1.6.0 torchvision>=0.8

Yunfan Li 210 Dec 30, 2022
Code for the paper Learning the Predictability of the Future

Learning the Predictability of the Future Code from the paper Learning the Predictability of the Future. Website of the project in hyperfuture.cs.colu

Computer Vision Lab at Columbia University 139 Nov 18, 2022
PyTorch code for the paper: FeatMatch: Feature-Based Augmentation for Semi-Supervised Learning

FeatMatch: Feature-Based Augmentation for Semi-Supervised Learning This is the PyTorch implementation of our paper: FeatMatch: Feature-Based Augmentat

null 43 Nov 19, 2022
Code for the paper A Theoretical Analysis of the Repetition Problem in Text Generation

A Theoretical Analysis of the Repetition Problem in Text Generation This repository share the code for the paper "A Theoretical Analysis of the Repeti

Zihao Fu 37 Nov 21, 2022
Code for our ICASSP 2021 paper: SA-Net: Shuffle Attention for Deep Convolutional Neural Networks

SA-Net: Shuffle Attention for Deep Convolutional Neural Networks (paper) By Qing-Long Zhang and Yu-Bin Yang [State Key Laboratory for Novel Software T

Qing-Long Zhang 199 Jan 8, 2023
Open source repository for the code accompanying the paper 'Non-Rigid Neural Radiance Fields Reconstruction and Novel View Synthesis of a Deforming Scene from Monocular Video'.

Non-Rigid Neural Radiance Fields This is the official repository for the project "Non-Rigid Neural Radiance Fields: Reconstruction and Novel View Synt

Facebook Research 296 Dec 29, 2022
Code for the Shortformer model, from the paper by Ofir Press, Noah A. Smith and Mike Lewis.

Shortformer This repository contains the code and the final checkpoint of the Shortformer model. This file explains how to run our experiments on the

Ofir Press 138 Apr 15, 2022
PyTorch code for ICLR 2021 paper Unbiased Teacher for Semi-Supervised Object Detection

Unbiased Teacher for Semi-Supervised Object Detection This is the PyTorch implementation of our paper: Unbiased Teacher for Semi-Supervised Object Detection

Facebook Research 366 Dec 28, 2022
Official code for paper "Optimization for Oriented Object Detection via Representation Invariance Loss".

Optimization for Oriented Object Detection via Representation Invariance Loss By Qi Ming, Zhiqiang Zhou, Lingjuan Miao, Xue Yang, and Yunpeng Dong. Th

ming71 56 Nov 28, 2022
Code for our CVPR 2021 paper "MetaCam+DSCE"

Joint Noise-Tolerant Learning and Meta Camera Shift Adaptation for Unsupervised Person Re-Identification (CVPR'21) Introduction Code for our CVPR 2021

FlyingRoastDuck 59 Oct 31, 2022
Code for our CVPR2021 paper coordinate attention

Coordinate Attention for Efficient Mobile Network Design (preprint) This repository is a PyTorch implementation of our coordinate attention (will appe

Qibin (Andrew) Hou 726 Jan 5, 2023