(src, seq_len)
| 13 | '--iterable-dataset', '--split','1', '--num-workers', '0']) |
| 14 | |
| 15 | def process_fn(src, seq_len): |
| 16 | tokenizer = AutoTokenizer.from_pretrained("/mnt/shared/official_pretrains/hf_home/chatglm2-6b", trust_remote_code=True, local_files_only=True) |
| 17 | |
| 18 | buffered_token_ids = None |
| 19 | eos_id = torch.tensor([tokenizer.eos_token_id]) |
| 20 | |
| 21 | for x in src: |
| 22 | type_id = 0 if 'code' in x else 1 |
| 23 | txt = x['code'] if 'code' in x else x['content'] |
| 24 | tokenized_ids = torch.tensor(tokenizer.encode(txt)) |
| 25 | if buffered_token_ids is None: |
| 26 | buffered_token_ids = tokenized_ids |
| 27 | else: |
| 28 | buffered_token_ids = torch.cat((buffered_token_ids, eos_id, tokenized_ids), dim=0) |
| 29 | # yield per seq_len |
| 30 | while buffered_token_ids.shape[0] >= seq_len: |
| 31 | yield {'txt': buffered_token_ids[:seq_len], 'type_id': type_id} |
| 32 | buffered_token_ids = buffered_token_ids[seq_len:] |
| 33 | |
| 34 | def create_func(path, args): |
| 35 | return JsonlIterableDataset(path, partial(process_fn, seq_len=512), seed=1, shuffle_buffer=1) |
nothing calls this directly
no test coverage detected