一字一诗 / 第 24 课 / 图 13
当前源码阅读把 train、write 等功能接到总入口
dest=command 保存功能名字;main 按这个名字调用对应的函数。
poetry_gpt/cli.py · 第 10—13 行(当前源码节选)
10 def parser():
11 p = argparse.ArgumentParser(prog="poet", description="从一字到一首诗:本地古诗 GPT 学习工具")
12 sub = p.add_subparsers(dest="command", required=True)
13 sub.add_parser("doctor", help="检查环境、材料和模型")poetry_gpt/cli.py · 第 72—85 行(当前源码节选)
72 def main(argv=None):
73 args = parser().parse_args(argv)
74 try:
75 if args.command == "doctor": doctor()
76 elif args.command == "prepare":
77 from .data import prepare
78 report = prepare(args.source,args.output,args.min_count)
79 print(json.dumps({k:report[k] for k in ("source_counts","split_counts","forms","vocab_size","rejections")},ensure_ascii=False,indent=2))
80 elif args.command == "train":
81 from .train import train
82 train(args.data,args.run_dir,args.config,args.device,args.steps,args.batch_size,args.resume)
83 elif args.command in ("write","chat"):
84 from .generate import Writer, parse_keywords
85 writer = Writer(args.checkpoint,args.device,args.data)