Download adapters/sample_sdtt.py from jyliuAI/diffusion_baseline: direct link, hf CLI and curl.
- Browser
- Download file 6.3 kB
-
https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/adapters/sample_sdtt.py
- Command line
-
hf download hf://jyliuAI/diffusion_baseline/adapters/sample_sdtt.py
-
curl -L -o sample_sdtt.py https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/adapters/sample_sdtt.py
6.3 kB
| #!/usr/bin/env python3 | |
| """Sample the pinned SDTT KLD round-7 student from local server assets only.""" | |
| from __future__ import annotations | |
| import argparse | |
| from pathlib import Path | |
| from _distilled_runtime import ( | |
| benchmark_model, | |
| configure_for_sampling, | |
| install_upstream, | |
| load_config, | |
| load_tokenizer, | |
| load_tokenizer_binding, | |
| materialize_model, | |
| offline_huggingface, | |
| parse_bool, | |
| require_directory, | |
| require_file, | |
| seed_everything, | |
| checkpoint_state, | |
| validate_embedded_config, | |
| validate_sampling_config, | |
| write_capture_atomic, | |
| ) | |
| def main(argv: list[str] | None = None) -> int: | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument("--upstream-root", type=Path, required=True) | |
| parser.add_argument("--checkpoint", type=Path, required=True) | |
| parser.add_argument("--config", type=Path, required=True) | |
| parser.add_argument("--checkpoint-sha256", required=True) | |
| parser.add_argument("--config-sha256", required=True) | |
| parser.add_argument("--data-config", type=Path, required=True) | |
| parser.add_argument("--downloads-manifest", type=Path, required=True) | |
| parser.add_argument("--dataset", choices=("lm1b", "owt"), required=True) | |
| parser.add_argument("--tokenizer-snapshot", type=Path, required=True) | |
| parser.add_argument("--output", type=Path, required=True) | |
| parser.add_argument("--sample-count", type=int, required=True) | |
| parser.add_argument("--batch-size", type=int, required=True) | |
| parser.add_argument("--num-steps", type=int, required=True) | |
| parser.add_argument("--seq-len", type=int, required=True) | |
| parser.add_argument("--seed", type=int, required=True) | |
| parser.add_argument("--sampler", choices=("ancestral",), required=True) | |
| parser.add_argument("--loss", choices=("kld",), required=True) | |
| parser.add_argument("--round", type=int, choices=(7,), required=True) | |
| parser.add_argument("--teacher-family", choices=("masked_mdlm",), required=True) | |
| parser.add_argument("--generation-mode", choices=("unconditional", "conditional_prefix"), default="unconditional") | |
| parser.add_argument("--conditioning-manifest", type=Path) | |
| parser.add_argument("--conditioning-manifest-sha256") | |
| parser.add_argument("--conditioning-config-sha256") | |
| parser.add_argument("--prefix-length", type=int) | |
| parser.add_argument("--evaluation-continuation-length", type=int) | |
| parser.add_argument("--prompt-count", type=int) | |
| parser.add_argument("--diversity-prompt-count", type=int) | |
| parser.add_argument("--completions-per-diversity-prompt", type=int) | |
| parser.add_argument("--completion-schedule") | |
| parser.add_argument("--offline", type=parse_bool, required=True) | |
| parser.add_argument("--benchmark-output", type=Path) | |
| parser.add_argument("--benchmark-metadata", type=Path) | |
| parser.add_argument("--benchmark-precision", choices=("author",)) | |
| args = parser.parse_args(argv) | |
| benchmark_values = (args.benchmark_output, args.benchmark_metadata, args.benchmark_precision) | |
| if any(value is not None for value in benchmark_values) and not all( | |
| value is not None for value in benchmark_values | |
| ): | |
| parser.error("benchmark arguments must be provided together") | |
| upstream = require_directory(args.upstream_root, "pinned SDTT source") | |
| require_file(upstream / "src/sdtt/main.py", "pinned SDTT entrypoint") | |
| install_upstream(upstream) | |
| checkpoint = require_file(args.checkpoint, "SDTT student checkpoint") | |
| config_path = require_file(args.config, "SDTT student config") | |
| binding = load_tokenizer_binding( | |
| args.data_config, | |
| args.downloads_manifest, | |
| args.dataset, | |
| args.tokenizer_snapshot, | |
| ) | |
| with offline_huggingface(args.offline): | |
| from sdtt.core.distill.multi_round_sdtt import MultiRoundSDTT | |
| config = load_config(config_path, args.config_sha256) | |
| state, embedded_config = checkpoint_state( | |
| checkpoint, args.checkpoint_sha256 | |
| ) | |
| validate_sampling_config( | |
| config, | |
| binding=binding, | |
| sequence_length=args.seq_len, | |
| require_di4c=False, | |
| ) | |
| if embedded_config is not None: | |
| validate_embedded_config(config, embedded_config) | |
| configure_for_sampling( | |
| config, tokenizer_snapshot=binding.snapshot, seq_len=args.seq_len | |
| ) | |
| tokenizer = load_tokenizer(binding.snapshot) | |
| seed_everything(args.seed) | |
| model = materialize_model( | |
| model_type=MultiRoundSDTT, | |
| config=config, | |
| tokenizer=tokenizer, | |
| state=state, | |
| strict=True, | |
| ) | |
| if args.benchmark_output is not None: | |
| benchmark_model( | |
| model=model, | |
| output=args.benchmark_output, | |
| metadata_path=args.benchmark_metadata, | |
| precision=args.benchmark_precision, | |
| num_steps=args.num_steps, | |
| seq_len=args.seq_len, | |
| sampler=args.sampler, | |
| generation_mode=args.generation_mode, | |
| conditioning_manifest=args.conditioning_manifest, | |
| conditioning_manifest_sha256=args.conditioning_manifest_sha256, | |
| prompt_count=args.prompt_count, | |
| diversity_prompt_count=args.diversity_prompt_count, | |
| completions_per_diversity_prompt=args.completions_per_diversity_prompt, | |
| ) | |
| else: | |
| write_capture_atomic( | |
| args.output, | |
| model=model, | |
| tokenizer=tokenizer, | |
| sample_count=args.sample_count, | |
| batch_size=args.batch_size, | |
| num_steps=args.num_steps, | |
| seq_len=args.seq_len, | |
| sampler=args.sampler, | |
| generation_mode=args.generation_mode, | |
| conditioning_manifest=args.conditioning_manifest, | |
| conditioning_manifest_sha256=args.conditioning_manifest_sha256, | |
| prompt_count=args.prompt_count, | |
| diversity_prompt_count=args.diversity_prompt_count, | |
| completions_per_diversity_prompt=args.completions_per_diversity_prompt, | |
| ) | |
| return 0 | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |