MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. Mitr-yuzr
    3. 帖子
    • 资料
    • 关注 1
    • 粉丝 2
    • 主题 6
    • 帖子 73
    • 最佳 15
    • 有争议的 0
    • 群组 2

    Mitr-yuzr 发布的帖子

    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @南栀沁寒

      @Mitr-yuzr 在 [Mirai-NLP] GPT2-Chinese模型训练教程 中说:

      @dream 这就是部署和接入部分了,可以肯定是可以的,你可以参考这篇帖子。

      如果想接入chatlearning的话可能比较困难,你可以问一下chatlearning的开发者有没有提供相关接口。

      关于部署,这一部分我也不确定我会不会做教程,毕竟本地推理的话估计比较废时间,而且gpt2模型只能做到文本生成和评估,在bot上应该没有应用场景。后续做对话模型的话参考大佬的文章也有教程。

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @cssxsh 若使用NLPHelper收集数据,emoji表情会自动被替换成空格。如果使用其他插件收集数据的话可以参考 使用Python对Json格式的数据进行二次处理为GPT2所需格式 这一部分,自己完成emoji的替换。

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @RainChan 之前出了一点小问题,数据被模型自带的长度过滤给过滤掉了,可能需要重新跑一下()

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @Samarium150 之前出了一点小问题,数据被模型自带的长度过滤给过滤掉了,可能需要重新跑一下()

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @南栀沁寒 数据长度限制忘记调了(
      现在修改了一下,再试试?

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @RainChan 不记得了,我是上上个月跑的()

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @dream 这就是部署和接入部分了,可以肯定是可以的,你可以参考这篇帖子。

      如果想接入chatlearning的话可能比较困难,你可以问一下chatlearning的开发者有没有提供相关接口。

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @RainChan 我1080跑两千条数据24个epochs大概要跑三个小时,确实难绷

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      @dream 这你需要询问chatlearning的开发者是否提供了导出聊天数据的方式

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: 关于将QQ机器人与深度学习NLP结合的可能性

      GPT2-Chinese训练教程已更新:
      [Mirai-NLP] GPT2-Chinese模型训练教程

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: NLPHelper - 自然语言处理模型训练数据采集专用插件

      GPT2-Chinese训练教程已更新:
      [Mirai-NLP] GPT2-Chinese模型训练教程

      发布在 插件发布
      Mitr-yuzr
      Mitr-yuzr
    • RE: [Mirai-NLP] GPT2-Chinese模型训练教程

      蛋疼的排版

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • [Mirai-NLP] GPT2-Chinese模型训练教程

      Mirai-NLP > GPT2-Chinese


      Mirai-NLP Github Project

      前言


      作为Mirai-NLP系列教程的第一章,本教程将会手把手教你从头开始训练一个基于GPT2-Chinese语言模型并进行文本生成。

      本系列教程以及衍生插件均起源于 关于将QQ机器人与深度学习NLP结合的可能性 一帖,在这里对参与讨论和关注后续的各位表示感谢。没有你们的支持,我的寒假和国庆假期就不会这么充实。

      本帖全部内容已经过作者验证,笔记本的内容也经过了封装,用户不需要接触到代码,只需输入参数即可进行训练和生成。

      训练过程中如果出现问题可以回复或私聊,同时也非常欢迎各位在帖子下方分享自己的训练成果。

      声明


      仅供学习用途,禁止用于任何违反法律法规和社区规定的行为,禁止用于商业行为。

      需要


      • 一台可以科学上网的电脑
      • 可以使用Google Drive的Google账号
      • 一个可以用于收集训练数据的QQBot
      • 一点点动手能力

      教程


      数据准备

      请为你的QQBot安装用于收集数据的NLP插件:

      • NLPHelper - 自然语言处理模型训练数据采集专用插件

      或者如果你已经在使用Mirai Hibernate Plugin,则可以使用此插件:

      • Mirai Hibernate NLP,用于将聊天记录导出为 NLP 所需数据的插件

      相关插件的使用方法均在对应帖内有说明,本教程中不再介绍。

      使用Python对Json格式的数据进行二次处理为GPT2所需格式

      使用插件内置的导出数据有时无法满足我们想要的功能,这时可以导出Json格式的数据,并使用Python对数据进行二次处理为GPT2所需格式。

      本教程中只介绍此方法的可行性,不详细讲解,下面给出一个例子,可用于针对 123456 的内容过滤。

      import json
      import ijson
      
      if __name__ == "__main__":
          with open('data.json', 'r', encoding='utf-8') as f:
              objects = ijson.items(f, 'item')
              new = []
              while True:
                  try:
                      i = objects.__next__()
                      if i['size'] <= 100 and (i['sender']!=123456 or not "*龙门粗口*" in i['content']) :
                          new.append(i['content'])
                  except StopIteration as e:
                      print("数据过滤完成, 共" + str(len(new)) + "条符合要求的数据")
                      break
          with open('train.json', 'w', encoding='utf-8') as f:
              json.dump(new, f, ensure_ascii=False)
      

      初始化笔记本

      • 打开本项目的Colab笔记本
      • 在右上角登录你的 Google 账号
      • 首先点击右上角的连接,等待分配完成和初始化
      • 在上方菜单栏中选择代码执行程序,在倒数第三项找到更改运行时类型,在硬件加速器中选择 GPU,等待分配完成
        1.png
        2.png
      • 按照笔记本提示进行初始化、训练和生成
        目录.png

      初始化源码、模型等

      • 在全局变量单元格输入模型的名字,然后点击旁边的运行按钮
        2-1
      • 如果弹出安全提示则选择仍然运行
        baea6992-85c0-42a7-9ea8-f492850d0518-image.png
      • 依次运行初始化单元格下的单元格
        • 挂载Google Drive
          2-2-1
          选择你的 Google 账号
          2-2-2
          滑到最下方,允许
          2-2-3
          挂载成功后,可以看到左侧目录里已经出现了我们的GDrive文件夹
          2-2-3

        • 下载源代码
          耗时可能比较久,我这里测试的是约五十秒。下载好后大约如下:
          2-3

        • 下载预训练模型
          这里使用的是hhou435大佬提供的通用中文小模型。
          你可以前往此处下载其他模型 (散文、诗词、对联、歌词、文言文等),并自行上传到drive/MyDrive/your_model_name/文件夹下。
          若为二次训练 (即已经在GDrive中有训练过的模型),则无需运行此单元格。
          下载好后可以看到在我们的GDrive挂载目录下出现了预训练模型(共三个文件)
          2-4

        • 上传数据
          运行后会在日志出现选择文件按钮,点击并选择导出的数据会自动上传到正确位置并重命名。
          若文件较大则速度会比较慢,耐心等待即可。
          2-5-1

      至此,程序初始化已经完成。

      开始训练

      依照笔记本内容仔细填写参数后,点击运行按钮进行训练。

      关于参数的含义,笔记本中已经介绍的十分详细了。

      3-1-1

      开始训练后会持续输出进度以及误差 (误差可能在0.5-0.1左右效果比较好,依数据量和内容也会发生变化)。

      3-1-2

      如何进行二次训练

      有时,我们训练完后可能觉得训练轮数不够或是被Colab强制停机了,亦或是增加了新数据,想接着训练先前的模型。

      这时,我们需要修改以下参数。

      3-2-1
      3-2-2

      之后点击运行按钮,就可以接着上次的进度继续训练了。

      生成文本

      等待训练完成后,我们就可以进行文本生成了。

      在下方生成参数中填写生成参数 (不能为空,修改后会自动运行,必须运行一次才可以进行生成)。

      如果填写完后没有自动运行,可以自己手动运行一次。

      3-3-1

      参数填写完成并允许后,在下方可以看到两个代码块:

      • 直接生成
      • 生成并保存至本地

      前者只会输出到日志,后者输出完成后会自动保存并下载。

      两者效果一样,选择其中一个运行即可。

      3-3-2

      结尾


      本教程至此已完成全部内容,由于部署对于一般用户而言太过困难且代价较高,因此本教程中不做介绍,可自行百度。

      目前Mirai-NLP以及衍生插件只支持gpt2一种模型,未来预计还会支持更多其他模型,届时也会发布笔记本和教程,可以在Mitr-yuzr/Mirai-NLP-Notebook 仓库中查看。

      由于数据集和预训练模型等问题,效果不理想是很正常的,但你已经踏入了机器学习领域的大门,并亲身体验了训练的全过程,这毫无疑问是一次难得的经验。

      在如今的智能时代,NLP其实很近,并没有我们想的那么遥远。你打字时的自动联想,语音输入和识别、你的Siri、小爱,这些平日里见惯的内容,其实背后都有NLP辅助。

      或许在未来的某一天,NLP真的发展到足以通过图灵测试的程度。你可能会想起在曾经启蒙的时代,你也曾有过一个属于自己的独一无二的AI,它可以水群,可以玩梗,会模仿你和你的朋友们说话。

      内容大致就到这里了。如果教程有问题或是有困难可以回复或者私聊,也可以在github上提issue。

      你也可以将你的训练成果分享到帖子下方,鼓励那些想试而迟迟未动手的用户去大胆尝试。

      另外,在最后祝各位国庆节快乐。

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: 关于将QQ机器人与深度学习NLP结合的可能性

      @南栀沁寒 这几天一定()

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: 关于将QQ机器人与深度学习NLP结合的可能性

      nlp训练教程国庆出

      发布在 技术交流板块
      Mitr-yuzr
      Mitr-yuzr
    • RE: NLPHelper - 自然语言处理模型训练数据采集专用插件

      @南栀沁寒 添加多个过滤词可以用AND拼接逻辑表达式,跟SQLite的语法一样的

      发布在 插件发布
      Mitr-yuzr
      Mitr-yuzr
    • RE: NLPHelper - 自然语言处理模型训练数据采集专用插件

      @南栀沁寒 /NLPHelper exportBySQL "SELECT * FROM NLPH WHERE sender!=123456;" gpt2

      发布在 插件发布
      Mitr-yuzr
      Mitr-yuzr
    • RE: NLPHelper - 自然语言处理模型训练数据采集专用插件

      关于gpt2的训练教程应该月底之前会出,这段时间先收集好数据吧。

      发布在 插件发布
      Mitr-yuzr
      Mitr-yuzr
    • RE: NLPHelper - 自然语言处理模型训练数据采集专用插件

      @cssxsh 看到过,而且是等我写完这个插件才看到的(悲)。
      不过想着化简配置和专门支持,其实也不差。

      发布在 插件发布
      Mitr-yuzr
      Mitr-yuzr
    • 1
    • 2
    • 3
    • 4
    • 2 / 4