blancsw's picture
download
raw
1.72 kB
#!/usr/bin/env python3
"""Validated GLM-4.7 native pretokenized Trainer recipe; no rendering or truncation."""
from __future__ import annotations
import argparse,torch
from datasets import load_dataset
from transformers import AutoModelForCausalLM,AutoTokenizer,Trainer,TrainingArguments
def main():
p=argparse.ArgumentParser();p.add_argument('--repo',default='r0b0tlab/qwen3.8-max-glm5.2-distillation-51389');p.add_argument('--model',default='zai-org/GLM-4.7-Flash');p.add_argument('--output',default='outputs/glm47-native');p.add_argument('--max-steps',type=int,default=-1);a=p.parse_args();ds=load_dataset(a.repo,'glm47_native');tok=AutoTokenizer.from_pretrained(a.model);tok.pad_token=tok.pad_token or tok.eos_token
def collate(batch):
n=max(len(x['input_ids']) for x in batch);ids=[];labels=[];mask=[]
for x in batch:
if len(x['input_ids'])!=len(x['labels']):raise ValueError('input/label length mismatch')
if not any(v!=-100 for v in x['labels']):raise ValueError('zero supervised tokens')
pad=n-len(x['input_ids']);ids.append(x['input_ids']+[tok.pad_token_id]*pad);labels.append(x['labels']+[-100]*pad);mask.append([1]*len(x['input_ids'])+[0]*pad)
return {'input_ids':torch.tensor(ids),'labels':torch.tensor(labels),'attention_mask':torch.tensor(mask)}
model=AutoModelForCausalLM.from_pretrained(a.model);args=TrainingArguments(output_dir=a.output,per_device_train_batch_size=1,gradient_accumulation_steps=8,learning_rate=2e-5,num_train_epochs=1,max_steps=a.max_steps,bf16=True,logging_steps=1,save_steps=250,remove_unused_columns=False);Trainer(model=model,args=args,train_dataset=ds['train'],eval_dataset=ds.get('validation'),data_collator=collate).train()
if __name__=='__main__':main()

Xet Storage Details

Size:
1.72 kB
·
Xet hash:
49a9c65870a50be484c781f88e22775a9fdb57b40d0dfd7c0546c2cb454c2513

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.