会员登录 立即注册

搜索

如何训练自己的AI模型1-优质的语料

[复制链接]
崎山小鹿 发表于 2024-2-1 15:47:45 | 显示全部楼层 |阅读模式
崎山小鹿
2024-2-1 15:47:45 2841 11 看全部
GPT3模型实际是在3w张A100卡上训练的。如果成本底点,在1000张A100卡上训练一次需要2个月,购买GPU和配套+机房托管+电费成本至少也要1-2亿。
语料准备
要想训练出一个好的模型,需要喂入优质的语料,以下是从网上收集到的部分语料数据集。

1、THUCNews
清华大学自然语言处理与社会人文计算实验室THUCNews中文文本数据集

https://thunlp.oss-cn-qingdao.aliyuncs.com/THUCNews.zip

2、维基百科
https://pan.baidu.com/s/1uPMlIY3vhusdnhAge318TA

json版(wiki2019zh),104万个词条(1,043,224条; 原始文件大小1.6G,压缩文件519M;数据更新时间:2019.2.7),可以做为通用中文语料,做预训练的语料或构建词向量,也可以用于构建知识问答。

3、新闻语料
https://drive.google.com/file/d/ ... Kp/view?usp=sharing

json版(news2016zh),包含了250万篇新闻。新闻来源涵盖了6.3万个媒体,含标题、关键词、描述、正文( 原始数据9G,压缩文件3.6G;新闻内容跨度:2014-2016年)。训练集:243万;验证集:7.7万。

可以做为【通用中文语料】,训练【词向量】或做为【预训练】的语料; 也可以用于训练【标题生成】模型,或训练【关键词生成】模型(选关键词内容不同于标题的数据); 亦可以通过新闻渠道区分出新闻的类型。

4、百科类问答
https://pan.baidu.com/s/12TCEwC_Q3He65HtPKN17cA  # fu45

json版(baike2018qa),含有150万个预先过滤过的、高质量问题和答案,每个问题属于一个类别。总共有492个类别,其中频率达到或超过10次的类别有434个。训练集:142.5万;验证集:4.5万。

可以做为通用中文语料,训练词向量或做为预训练的语料;也可以用于构建百科类问答;其中类别信息比较有用,可以用于做监督训练,从而构建 更好句子表示的模型、句子相似性任务等。

5、社区问答
https://drive.google.com/open?id ... AK6Bzc5XrngHstQTf0v

json版(webtext2019zh) 大规模高质量数据集,含有410万个预先过滤过的、高质量问题和回复。每个问题属于一个【话题】,总共有2.8万个各式话题,话题包罗万象。从1400万个原始问答中,筛选出至少获得3个点赞以上的的答案,代表了回复的内容比较不错或有趣,从而获得高质量的数据集。除了对每个问题对应一个话题、问题的描述、一个或多个回复外,每个回复还带有点赞数、回复ID、回复者的标签。训练集:412万;验证集:6.8万;测试集:6.8万。可用于:

1)构建百科类问答:输入一个问题,构建检索系统得到一个回复或生产一个回复;或根据相关关键词从,社区问答库中筛选出你相关的领域数据
2)训练话题预测模型:输入一个问题(和或描述),预测属于话题。
3)训练社区问答(cQA)系统:针对一问多答的场景,输入一个问题,找到最相关的问题,在这个基础上基于不同答案回复的质量、 问题与答案的相关性,找到最好的答案。
4)做为通用中文语料,做大模型预训练的语料或训练词向量。其中类别信息也比较有用,可以用于做监督训练,从而构建更好句子表示的模型、句子相似性任务等。
5)结合点赞数量这一额外信息,预测回复的受欢迎程度或训练答案评分系统。
6、翻译语料
https://drive.google.com/open?id ... hBO8Fh4e2j3b9C2bTVQ

translation2019zh中英文平行语料520万对。每一个对,包含一个英文和对应的中文。中文或英文,多数情况是一句带标点符号的完整的话。对于一个平行的中英文对,中文平均有36个字,英文平均有19个单词(单词如“she”)。训练集:516万;验证集:3.9万。

可以用于训练中英文翻译系统,从中文翻译到英文,或从英文翻译到中文; 由于有上百万的中文句子,可以只抽取中文的句子,做为通用中文语料,训练词向量或做为预训练的语料。英文任务也可以类似操作。



无论数据类型或目标如何,用于训练和使用 AutoML 模型的工作流都是相同的:

准备训练数据。
我们需要将需要训练的数据准备为jsonl格式,这种格式的特点就是每一行都是json的格式
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

{"prompt": "医药和消费有什么基金推荐的", "completion": "医药可以看看工银前沿的赵蓓,她挺均衡的,对于这个行业我了解不多,你还可以看看医药100指数,消费挺多的,消费50也挺好。"}
{"prompt": "请教一下老师,恒生科技第一大持仓股是快手。而快手是亏损最大的互联网企业。似乎齐老师也说过不看好快手,会不会影响恒生科技持仓。", "completion": "如果你要是能选股,确实不应该买指数。从指数选择的角度来说。中概互联我们更看好一些。但他跟恒生科技的相关度其实很高"}
{"prompt": "想问一下国投瑞银这边基金公司和綦缚鹏的风格实力怎么样", "completion": "他风格不是很固定。最近在偏向周期。(个人观点,不作为投资建议)"}

其中,prompt是问题,completion是答案。

创建数据集。
openai tools fine_tunes.prepare_data -f dataset.jsonl
该指令会帮我们优化训练数据,该指令运行过程中会问我们几个问题,主要是给prompt添加了固定的后缀,比如”->”,给completion添加了开头的空格和结尾的换行符,如下
{"prompt":"医药和消费有什么基金推荐的 ->","completion":" 医药可以看看工银前沿的赵蓓,她挺均衡的,对于这个行业我了解不多,你还可以看看医药100指数,消费挺多的,消费50也挺好。\n"}
{"prompt":"请教一下老师,恒生科技第一大持仓股是快手。而快手是亏损最大的互联网企业。似乎齐老师也说过不看好快手,会不会影响恒生科技持仓。 ->","completion":" 如果你要是能选股,确实不应该买指数。从指数选择的角度来说。中概互联我们更看好一些。但他跟恒生科技的相关度其实很高\n"}
{"prompt":"想问一下国投瑞银这边基金公司和綦缚鹏的风格实力怎么样 ->","completion":" 他风格不是很固定。最近在偏向周期。(个人观点,不作为投资建议)\n"}

准备好的数据文件是dataset_prepared.jsonl

通常,tokenizer 有 2 种常用形式:WordPiece 和 BPE。

WordPiece
WordPiece 很好理解,就是将所有的「常用字」和「常用词」都存到词表中

WordPiece 的方式很有效,但当字词数目过于庞大时这个方式就有点难以实现了。

对于一些多语言模型来讲,要想穷举所有语言中的常用词(穷举不全会造成 OOV),

既费人力又费词表大小,为此,人们引入另一种方法:BBPE。

BPE 不是按照中文字词为最小单位,而是按照 unicode 编码 作为最小粒度。

对于中文来讲,一个汉字是由 3 个 unicode 编码组成的,



训练模型。
如果是微调,则是提交数据集
openai api fine_tunes.create -t dataset_prepared.jsonl -m curie
训练的进度可以通过下面这个命令获取,ft-SSIJ4DsHFfp9LEtuHWyQcn5B这个是fine-tuning的job ID,是上面create命令会给出的。
openai api fine_tunes.follow -i ft-SSIJ4DsHFfp9LEtuHWyQcn5B

用新模型进行提问
(.venv) ➜   openai api completions.create -m "curie:ft-personal-2023-04-04-15-28-34" -p "医药和消费有什么基金推荐的 ->"

Dify 是一个可视化、可运营、可改进的 LLM 训练平台,它提供了强大的 LLMOps 能力。此外,它还提供了搭建 Web App 的能力。这些意味着你可以用它快速开发一个专属于你的 ChatGPT 应用,你可以基于此进行训练、微调,直到它变成你喜欢的模样!

自己训练大模型
git clone  https://github.com/xinzhanguo/hellollm.git

clone文件

clone文件

下载成功之后文件

文件

文件


cd hellollm
# 编译镜像(此处需要科学上网)
docker build -t hellollm:beta .

创建docker

创建docker

# 可以选择以GPU方式运行
# docker run -it --gpus all hellollm:beta sh
docker run -it hellollm:beta sh
python sanguo.py

开始训练

开始训练


GPU满负荷运转

GPU98

GPU98


训练

训练2

训练2


训练完成,输出测试结果
训练完成.png

评估和迭代模型。
从模型获取预测结果。
解读预测结果。

◆.gitignore 文件是一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的。详情
◆Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。详情
◆requirements.txt 文件,里面内容是项目的依赖包及其对应版本号的信息列表,即项目依赖关系清单,其作用是用来重新构建项目所需要的运行环境依赖,比如你从 GitHub 上 clone 了一个 Python 项目,通常你会先找到 requirements.txt 文件,然后运行命令
pip install -r requirements.txt
来安装该项目所依赖的包。
同样,你也可以在你的项目目录下运行命令
pip freeze > requirements.txt
来生成 requirements.txt 文件,以便他人重新安装项目所依赖的包。详情

Vmmem 进程是系统合成的一个虚拟进程,用于表示虚拟机消耗的内存和 CPU 资源。如果您看到 Vmmem 消耗大量内存和 CPU 资源,那么这意味着您的虚拟机正在消耗大量内存和 CPU 资源。如果要让它停止,请关闭您的虚拟机。命令:
wsl –shutdown

微调:
ChatGPT进阶:利用Fine-tuning训练自己的模型
怎么训练自己的ai小模型?
手把手带你从0开始训练自己的yolov3模型(草履虫都能学会)
训练自己的目标检测模型(SSD篇)

仅用61行代码,你也能从零训练大模型 原创作者|辛占国
huggingface transformers使用指南之二——方便的trainer  作者 马东什么 算法工程师
如何训练一个自己的GPT模型  作者:闫金钢
【LLM】从零开始训练大模型  何枝  北京字节跳动科技有限公司

dubo.py

3.82 KB, 下载次数: 2

PYTHON

回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-3 13:02:23 | 显示全部楼层
崎山小鹿
2024-2-3 13:02:23 看全部
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

docker的原理
在Linux操作系统上,提供一-个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
下载:
https://docs.docker.com/desktop/install/windows-install/


docker教程
https://www.runoob.com/docker/docker-tutorial.html
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-4 19:52:30 | 显示全部楼层
崎山小鹿
2024-2-4 19:52:30 看全部
from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='./sanguo')
set_seed(42)
txt = generator("吕布", max_length=10)
print(txt)
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-18 16:17:49 | 显示全部楼层
崎山小鹿
2024-2-18 16:17:49 看全部
要执行的训练 epoch 总数(如果不是整数,将执行停止训练之前最后一个 epoch 的小数部分百分比)
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-21 15:15:22 | 显示全部楼层
崎山小鹿
2024-2-21 15:15:22 看全部
配置python环境
PS E:\gitee\hellollm> pyenv install 3.11.0b4
:: [Info] ::  Mirror: https://www.python.org/ftp/python
PS E:\gitee\hellollm> pyenv local 3.11.0b4
PS E:\gitee\hellollm> python
Python 3.11.0b4(tags/v3.11.0b4:f377153, Jun  6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-21 15:18:00 | 显示全部楼层
崎山小鹿
2024-2-21 15:18:00 看全部
安装环境
# 下载代码
git clone git@github.com:xinzhanguo/hellollm.git
cd hellollm
# 安装依赖
pip install -r requirements.txt
# 运行代码
python sanguo.py
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-21 16:02:19 | 显示全部楼层
崎山小鹿
2024-2-21 16:02:19 看全部
使用CUP用了10分33秒

命令行指定显卡GPU运行python脚本,查看GPU命令: nvidia-smi

使用制定的显卡运行python程序(linux):CUDA_VISIBLE_DEVICES=0 python qishanxiaolu.py

详细
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-22 19:18:58 | 显示全部楼层
崎山小鹿
2024-2-22 19:18:58 看全部
Robert中先将输入的所有tokens转化为merges.txt中对应的byte,再通过vocab.json中的字典进行byte到索引的转化。
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-22 20:02:03 | 显示全部楼层
崎山小鹿
2024-2-22 20:02:03 看全部
file1 = 'file1.txt'
file2 = 'file2.txt'

def merge(file1, file2):
    f1 = open(file1, 'a+', encoding='utf-8')
    with open(file2, 'r', encoding='utf-8') as f2:
        f1.write('\n')
        for i in f2:
            f1.write(i)


merge(file1, file2)
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/sinat_30353259/article/details/103190870
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-2-29 12:53:37 | 显示全部楼层
崎山小鹿
2024-2-29 12:53:37 看全部
GPT 的预训练模型。 gpt2-base-chinese https://huggingface.co/ckiplab/gpt2-base-chinese/tree/main
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

查看:2841 | 回复:11

  • 免费在线 Autodesk FBX 到 OpenUSD 转换器

    免费在线 Autodesk FBX 到 OpenUSD 转换器 https://products.aspose.app/3d/zh-cn/co

    阅读:173|2024-07-10
  • 3D数字人制作-Character creator

    Character creator 《角色创建者》是由Reallusion [1]公司推出的一款3D角色建模软件,

    阅读:262|2024-07-08
  • 第九区

    第九区的本质是创建一个世界模型,希望用这个世界模型能为老百姓和政府提供数据和推理

    阅读:277|2024-07-07
  • Discuz强大的广告系统

    强大的广告系统 页头通栏广告:页头通栏广告显示于论坛页面右上方 全局 页尾通栏广

    阅读:176|2024-07-07
  • 对于老百姓而言VR到底能做什么?

    VR技术自诞生以来不断发展,已经广泛应用于教育、医疗、工程、军事、航空、航海、影视

    阅读:261|2024-07-06
  • 剪映数字人口播原理

    剪映版本升级了,新版本6.0.1支持数字人定制,于是我赶紧申请了使用资格 目前的价格

    阅读:373|2024-07-03
  • 科学作息AI助手

    在魔塔空间创建了一个作息时间管理的agent >>>>>点我体验

    阅读:348|2024-07-01
  • 开发者聊科学作息时间表

    非常有幸对科学作息时间表app的开发者做一次采访。 问:你对科学作息时间表app满意么

    阅读:316|2024-07-01
  • 在线制作ico图标的网站

    给大家推荐一个在线制作ICO图标的网站 比特虫: https://www.bitbug.net/ 你也可以直

    阅读:364|2024-06-30
  • 恢复微信聊天记录

    微信好友删除了,之前的聊天记录能恢复么?能的,不管是安卓、苹果、Windows下的微信

    阅读:364|2024-06-30
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2024 Discuz! Team.
快速回复 返回顶部 返回列表