(self, contents: dict, tokenizer, frontend, meta_data={}, **kwargs)
| 306 | return contents |
| 307 | |
| 308 | def data_load_speech(self, contents: dict, tokenizer, frontend, meta_data={}, **kwargs): |
| 309 | system = contents["system"] |
| 310 | user = contents["user"] |
| 311 | assistant = contents["assistant"] |
| 312 | pattern = re.compile(r"(<\|startofspeech\|>.*?<\|endofspeech\|>)") |
| 313 | do_think = True |
| 314 | sys_prompt = True |
| 315 | if "dataset_conf" in kwargs: |
| 316 | do_think = kwargs["dataset_conf"].get("do_think", True) |
| 317 | sys_prompt = kwargs["dataset_conf"].get("sys_prompt", True) |
| 318 | |
| 319 | input_ids, labels, fbank, fbank_lens, fbank_mask, fbank_beg, fake_token_len = ( |
| 320 | [], |
| 321 | [], |
| 322 | [], |
| 323 | [], |
| 324 | [], |
| 325 | [], |
| 326 | [], |
| 327 | ) |
| 328 | input_source_ids = [] |
| 329 | for i, (system_prompt, user_prompt, target_out) in enumerate(zip(system, user, assistant)): |
| 330 | if i >= kwargs.get("multiturn_num_max", 5): |
| 331 | break |
| 332 | if len(input_ids) > kwargs.get("max_token_length", 1500): |
| 333 | break |
| 334 | if isinstance(user_prompt, (list, tuple)): |
| 335 | user_prompt, audio = user_prompt |
| 336 | if i == 0: |
| 337 | if kwargs.get("infer_with_assistant_input", False): |
| 338 | source_input = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{user_prompt}" |
| 339 | if not sys_prompt: |
| 340 | source_input = f"<|im_start|>user\n{user_prompt}" |
| 341 | else: |
| 342 | source_input = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n" |
| 343 | if not sys_prompt: |
| 344 | source_input = ( |
| 345 | f"<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n" |
| 346 | ) |
| 347 | else: |
| 348 | if kwargs.get("infer_with_assistant_input", False): |
| 349 | source_input = f"<|im_start|>user\n{user_prompt}" |
| 350 | else: |
| 351 | source_input = ( |
| 352 | f"<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n" |
| 353 | ) |
| 354 | if not do_think: |
| 355 | source_input += "<think>\n\n</think>\n\n" |
| 356 | if kwargs.get("prev_text", None) is not None: |
| 357 | source_input += kwargs["prev_text"] |
| 358 | |
| 359 | splits = pattern.split(source_input) |
| 360 | source_ids = [] |
| 361 | fbank_mask_i = [] |
| 362 | fake_token_len_i = 0 |
| 363 | fbank_beg_i = -1 |
| 364 | speech, speech_lengths = [], [] |
| 365 | for k, sub_str in enumerate(splits): |
no test coverage detected