当前位置:   article > 正文

[LLM]nanoGPT---训练一个写唐诗的GPT

nanogpt

karpathy/nanoGPT: The simplest, fastest repository for training/finetuning medium-sized GPTs. (github.com)

原有模型使用的莎士比亚的戏剧数据集, 如果需要一个写唐诗机器人,需要使用唐诗的文本数据,

一个不错的唐诗,宋词数据的下载资源地址:

https://github.com/chinese-poet

这个数据集里面包含搜集到的唐诗,宋词,元曲小说文本数据。

一 数据准备

1. 先下载全唐诗数据,保存到 data/poemtext/tang-poetry下

2. 进行数据的预处理

format-data.py

  1. # -*- coding: utf-8 -*-
  2. import glob
  3. import json
  4. datas_json=glob.glob("./tang-poetry/poet*.json") #1匹配所有唐诗json文件
  5. for data_json in datas_json[:]: #2处理匹配的每一个文件
  6. with open(data_json,"r",encoding="utf-8") as f:
  7. ts_data =json.load(f)
  8. for each_ts in ts_data[:]: #3处理文件中每段数据,只要五言诗和2句的
  9. paragraphs_list =each_ts["paragraphs"]
  10. if len(paragraphs_list) == 2 and len(paragraphs_list[0])==12 and len(paragraphs_list[1]) == 12:
  11. with open("tang_poet.txt","a",encoding="utf-8") as f2:
  12. f2.write("".join(paragraphs_list))
  13. f2.write("\n")
  14. f =open("tang_poet.txt","r",encoding="utf-8")
  15. print(len(f.readlines()))

prepare.py

  1. import os
  2. import requests
  3. import tiktoken
  4. import numpy as np
  5. # download the tiny shakespeare dataset
  6. input_file_path = os.path.join(os.path.dirname(__file__), 'tang_poet.txt')
  7. with open(input_file_path, 'r') as f:
  8. data = f.read()
  9. n = len(data)
  10. train_data = data[:int(n*0.9)]
  11. val_data = data[int(n*0.9):]
  12. # encode with tiktoken gpt2 bpe
  13. enc = tiktoken.get_encoding("gpt2")
  14. train_ids = enc.encode_ordinary(train_data)
  15. val_ids = enc.encode_ordinary(val_data)
  16. print(f"train has {len(train_ids):,} tokens")
  17. print(f"val has {len(val_ids):,} tokens")
  18. # export to bin files
  19. train_ids = np.array(train_ids, dtype=np.uint16)
  20. val_ids = np.array(val_ids, dtype=np.uint16)
  21. train_ids.tofile(os.path.join(os.path.dirname(__file__), 'train.bin'))
  22. val_ids.tofile(os.path.join(os.path.dirname(__file__), 'val.bin'))

二 配置文件准备

参考   train_shakespeare_char.py

三 开始训练

参考   train_shakespeare_char.py

# mac pro m1机器上
python3 train.py config/train_poemtext_char.py --device=mps --compile=False --eval_iters=20 --log_interval=1 --block_size=64 --batch_size=12 --n_layer=4 --n_head=4 --n_embd=128 --max_iters=1000 --lr_decay_iters=1000 --dropout=0.0

四 生成唐诗

python3 sample.py --out_dir=out-poemtext-char --device=mps

参考:

迷你版ChatGPT开源,教你怎么用nanoGPT训练一个写小说的AI机器人! - 知乎 (zhihu.com)

Gpt进阶(二): 以古诗集为例,训练一个自己的古诗词gpt模型 - 知乎 (zhihu.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/364214?site
推荐阅读
相关标签
  

闽ICP备14008679号