Download local_data.py from gamer729/cognithread-ssm: direct link, hf CLI and curl.
- Browser
- Download file 1.5 kB
-
https://huggingface.co/gamer729/cognithread-ssm/resolve/main/local_data.py
- Command line
-
hf download hf://gamer729/cognithread-ssm/local_data.py
-
curl -L -o local_data.py https://huggingface.co/gamer729/cognithread-ssm/resolve/main/local_data.py
1.5 kB
| """PILE streaming + roleplay fine-tune data loading""" | |
| def load_pile(seq_len, seed=42): | |
| from datasets import load_dataset | |
| ds = load_dataset("monology/pile-uncopyrighted", streaming=True, split="train") | |
| def tok(ex): | |
| t = ex.get("text", "") | |
| if not t: t = "" | |
| ts = list(t.encode("utf-8"))[:seq_len+1] | |
| return {"tokens": ts} | |
| ds = ds.map(tok).shuffle(seed=seed, buffer_size=10000) | |
| return iter(ds) | |
| def load_roleplay(seq_len, seed=123): | |
| from datasets import load_dataset | |
| for name in ["Kwangju/character_dialogue", "alexshcozh/roleplay-dialogues"]: | |
| try: | |
| ds = load_dataset(name, streaming=True, split="train") | |
| def tok(ex): | |
| t = ex.get("text", ex.get("dialogue", ex.get("input", ""))) | |
| if not isinstance(t, str): t = str(t) if t else "" | |
| ts = list(t.encode("utf-8"))[:seq_len+1] | |
| return {"tokens": ts} | |
| ds = ds.map(tok).shuffle(seed=seed, buffer_size=5000) | |
| return iter(ds) | |
| except: continue | |
| return load_pile(seq_len, seed) | |
| def make_batch(ds_it, bs, sl): | |
| b = [] | |
| for _ in range(bs): | |
| try: | |
| ex = next(ds_it); t = ex.get("tokens", [0]*(sl+1)) | |
| if len(t) < sl+1: t += [0]*(sl+1-len(t)) | |
| b.append([min(x,255) for x in t[:sl+1]]) | |
| except StopIteration: b.append([0]*(sl+1)) | |
| a = jnp.array(b, dtype=jnp.int32) | |
| return a[:,:sl], a[:,1:] | |
| print("Data loaders defined") | |