debug logs + tweaks
This commit is contained in:
@@ -139,6 +139,14 @@ class CodecLM:
|
||||
bgm_wavs = list(bgm_wavs)
|
||||
|
||||
texts, audio_qt_embs = self._prepare_tokens_and_attributes(lyrics=lyrics, melody_wavs=melody_wavs, vocal_wavs=vocal_wavs, bgm_wavs=bgm_wavs, melody_is_wav=melody_is_wav)
|
||||
|
||||
# Debug: Log what's being passed to _generate_tokens
|
||||
print(f"\n[CodecLM DEBUG] ========== _generate_tokens INPUT ==========")
|
||||
print(f"[CodecLM DEBUG] texts (lyrics): {texts}")
|
||||
print(f"[CodecLM DEBUG] descriptions: {descriptions}")
|
||||
print(f"[CodecLM DEBUG] audio_qt_embs shape: {audio_qt_embs.shape if audio_qt_embs is not None else 'None'}")
|
||||
print(f"[CodecLM DEBUG] ================================================\n")
|
||||
|
||||
tokens = self._generate_tokens(texts, descriptions, audio_qt_embs)
|
||||
|
||||
if (tokens == self.lm.eos_token_id).any():
|
||||
|
||||
@@ -233,7 +233,13 @@ class LmModel(StreamingModule):
|
||||
if descriptions is not None:
|
||||
attr["text"]["type_info"] = descriptions[i]
|
||||
conditions.append(attr)
|
||||
print("conditions", conditions)
|
||||
# Enhanced debug logging for lyrics/descriptions
|
||||
print(f"\n[LmLevo DEBUG] ========== CONDITION ATTRIBUTES ==========")
|
||||
print(f"[LmLevo DEBUG] Available conditioners: {list(self.condition_provider.conditioners.keys())}")
|
||||
print(f"[LmLevo DEBUG] attr['text']['description'] (LYRICS): {repr(attr.text.get('description', 'NOT SET'))[:200]}")
|
||||
print(f"[LmLevo DEBUG] attr['text']['type_info'] (DESCRIPTION): {repr(attr.text.get('type_info', 'NOT SET'))[:200]}")
|
||||
print(f"[LmLevo DEBUG] Has prompt_audio: {'prompt_audio' in attr.audio}")
|
||||
print(f"[LmLevo DEBUG] =============================================\n")
|
||||
if prepare_null_condition:
|
||||
cfg_inference = ClassifierFreeGuidanceDropoutInference()
|
||||
null_conditions = cfg_inference(conditions, condition_types=["audio", "text"],
|
||||
|
||||
@@ -133,9 +133,22 @@ class QwTokenizerConditioner(TextConditioner):
|
||||
print("all structure tokens: ", {self.text_tokenizer.convert_ids_to_tokens(i):i for i in self.struct_token_ids})
|
||||
|
||||
def tokenize(self, x: tp.List[tp.Optional[str]]) -> tp.Dict[str, torch.Tensor]:
|
||||
# Debug: Log input before tokenization
|
||||
print(f"\n[QwTokenizerConditioner DEBUG] ========== TOKENIZE INPUT ==========")
|
||||
print(f"[QwTokenizerConditioner DEBUG] Input text (first item, first 300 chars): {repr(x[0][:300]) if x and x[0] else 'None/Empty'}")
|
||||
print(f"[QwTokenizerConditioner DEBUG] Number of inputs: {len(x)}")
|
||||
|
||||
x = ['<|im_start|>' + xi if xi is not None else "<|im_start|>" for xi in x]
|
||||
# x = [xi if xi is not None else "" for xi in x]
|
||||
inputs = self.text_tokenizer(x, return_tensors="pt", padding=True)
|
||||
|
||||
# Debug: Log tokenization result
|
||||
print(f"[QwTokenizerConditioner DEBUG] Tokenized shape: {inputs['input_ids'].shape}")
|
||||
print(f"[QwTokenizerConditioner DEBUG] First 20 token IDs: {inputs['input_ids'][0][:20].tolist()}")
|
||||
decoded = self.text_tokenizer.decode(inputs['input_ids'][0][:50])
|
||||
print(f"[QwTokenizerConditioner DEBUG] Decoded first 50 tokens: {repr(decoded)}")
|
||||
print(f"[QwTokenizerConditioner DEBUG] ===========================================\n")
|
||||
|
||||
return inputs
|
||||
|
||||
def forward(self, inputs: tp.Dict[str, torch.Tensor]) -> ConditionType:
|
||||
|
||||
Reference in New Issue
Block a user