cognithread-ssm / local_data.py
gamer729's picture
Upload local_data.py
fe239c0 verified
Raw History Blame Contribute Delete
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")