8000 GitHub - dolphin-Dang/MindSpore-GPT: 基于华为MindSpore AI框架开发小型GPT,实现风格化写作。
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

dolphin-Dang/MindSpore-GPT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于华为MindSpore AI框架开发小型GPT模型,实现金庸风格小说续写。

由于MindSpore大部分逻辑和Pytorch相近,因此将其视为加深对GPT理解的小型项目

  • 在原本代码的基础上尝试优化修改,提升了推理速度和输出效果。

    • 输出的语句语法上更加正确,语义上更加通顺
    • 推理输出速度更快
  • 修改数据预处理和训练逻辑,允许加载预训练参数、分阶段训练。

  • 环境:

    • 训练/调试环境:启智AI平台。
    • 推理环境:华为云。
      • modelarts的mindspore2.2+cann7.0.1
  • 数据集:金庸小说,以 “鸳鸯刀.txt”为训练样本,vocab_size=1928。

  • 实现逻辑参考:https://github.com/karpathy/nanoGPT

这个GPT的问题:

  • 输入的prompt并不支持训练集以外的任何token,否则会报错。
  • GPT本身的输出具有随机性,不对随机性进行限制导致整体输出结果语义语法不通顺。
    • 一开始版本只能输出一些符号。
    • 初次成功训练的版本GPT_1-112_10.ckpt可以输出正常的文字,但是几乎没有正常的一句话。
      • 限制每次取的最高概率字符数,TOPK=5。
      • 优化随机选取策略使其具有更好的稳定性。
      • 成功使其输出正常的一句话,但是每句话之间关联还是比较少。
  • 在MindSpore2.0.0下推理速度非常慢,但是在MindSpore2.2下推理比较快。
    • 是MindSpore版本问题,代码中可优化空间小。
  • 输出达到限制之后就停止,无论一句话是否结束。(模型没有学习到结束符)

发现:

  • 在src/gpt.py的CausalSelfAttention类中,调用MindSpore官方APIatt = F.masked_fill(att, mask, -1e9)效率并不如直接进行mask计算来的快。
  • Dropout模块影响了模型训练时的收敛与否,但经过一段时间之后不可复现该问题。

About

基于华为MindSpore AI框架开发小型GPT,实现风格化写作。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0