Download code/fit_worker.py from zigzag9939/jlens-looped-transformers: direct link, hf CLI and curl.
- Browser
- Download file 1.72 kB
-
https://huggingface.co/zigzag9939/jlens-looped-transformers/resolve/main/code/fit_worker.py
- Command line
-
hf download hf://zigzag9939/jlens-looped-transformers/code/fit_worker.py
-
curl -L -o fit_worker.py https://huggingface.co/zigzag9939/jlens-looped-transformers/resolve/main/code/fit_worker.py
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, | |
| ) | |