zigzag9939's picture
Make experiments reproducible; link paper
dc9e1b9 verified
Raw History Blame Contribute Delete
1.72 kB
import argparse
import json
import logging
import torch
import transformers
import jlens
from revisions import revision
MODEL = "Qwen/Qwen3.6-27B"
parser = argparse.ArgumentParser()
parser.add_argument("worker", type=int)
parser.add_argument("n_workers", type=int)
parser.add_argument("--prompts", default="prompts_1000.json")
parser.add_argument("--limit", type=int, default=None)
parser.add_argument("--prefix", default="w")
parser.add_argument("--dim-batch", type=int, default=32)
args = parser.parse_args()
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s")
with open(args.prompts) as f:
prompts = json.load(f)[args.worker :: args.n_workers]
if args.limit:
prompts = prompts[: args.limit]
print(f"worker {args.worker}/{args.n_workers}: {len(prompts)} prompts", flush=True)
try:
hf = transformers.AutoModelForCausalLM.from_pretrained(MODEL, revision=revision(MODEL), dtype=torch.bfloat16)
except (ValueError, KeyError) as exc:
print(f"AutoModelForCausalLM failed ({exc}); trying AutoModelForImageTextToText", flush=True)
hf = transformers.AutoModelForImageTextToText.from_pretrained(MODEL, revision=revision(MODEL), dtype=torch.bfloat16)
hf = hf.cuda()
tok = transformers.AutoTokenizer.from_pretrained(MODEL, revision=revision(MODEL))
model = jlens.from_hf(hf, tok)
print(model, flush=True)
lens = jlens.fit(
model,
prompts,
dim_batch=args.dim_batch,
max_seq_len=128,
checkpoint_path=f"ckpt_{args.prefix}{args.worker}.pt",
checkpoint_every=5,
)
lens.save(f"lens_{args.prefix}{args.worker}.pt")
print(
f"peak GPU mem: {torch.cuda.max_memory_allocated() / 1e9:.1f} GB; "
f"saved lens_{args.prefix}{args.worker}.pt",
flush=True,
)