Skip to content

codebook assertion errors when generating long songs using quantised models #15

@sujitvasanth

Description

@sujitvasanth

codebook assertion errors when generating long songs more than 2 minutes when using quantised models

my settings
max tokens 3000
segments 7
GPU rtx 3090
cache stage 1: 32768
cache stage 2: tried 16384, 32768
caches not quantised

using YuE-s1-7B-anneal-en-cot-exl2-4.0bpw

  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage1.py", line 507, in <module>
    main()
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage1.py", line 500, in main
    pipeline.save(raw_output, args.output_dir, args.use_audio_prompt, args.use_dual_tracks_prompt)
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage1.py", line 175, in save
    vocals_ids = self.codec_tool.ids2npy(rearrange(codec_ids, "(n b) -> b n", b=2)[0])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sujit/YuE-exllamav2/src/yue/codecmanipulator.py", line 184, in ids2npy
    assert token_ids[0] >= codebook_0_range[0] \
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: token_ids[0]=54563, codebook_0_range=(45334, 46358)

was able to bypass stage 1 error with using
YuE-s1-7B-anneal-en-cot-exl2-4.25bpw
YuE-s2-1B-general-exl2-3.0bpw

Starting stage 2...
0it [00:00, ?it/s]
0it [00:00, ?it/s]
Traceback (most recent call last):
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage2.py", line 365, in <module>
    main()
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage2.py", line 356, in main
    outputs = pipeline.generate(output_dir=args.output_dir)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage2.py", line 242, in generate
    prompt = self.get_codec_ids(prompt)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sujit/YuE-exllamav2/src/yue/infer_stage2.py", line 49, in get_codec_ids
    codec_ids = self.codec_tool.offset_tok_ids(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sujit/YuE-exllamav2/src/yue/codecmanipulator.py", line 75, in offset_tok_ids
    assert x.max() < codebook_size, f"max(x)={x.max()}, codebook_size={codebook_size}"
           ^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: max(x)=11382, codebook_size=1024

just trying to remark out the assertions in codecmanipulator.py to see what happens...
removing the assertions does generate the output but I'm getting gibberish output after 2 mins 30... trying again with increased cache sizes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions