一字一诗 / 第 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)