GPT系列简介与gpt训练(nanoGPT)

generateivelt pre-trained transformer ,GPT使用transformer做特征提取行,单项语言模型作为训练任务

gpt 1.0

通过自左向右生成式的构建预训练任务,然后得到一个通用的预训练模型,这个模型和BERT一样都可用来做下游任务的微调。GPT-1当时在9个NLP任务上取得了SOTA的效果

gpt2.0

GPT-2并未在模型结构上大作文章,只是使用了更多参数的模型和更多的训练数据(表1)。GPT-2最重要的思想是提出了“所有的有监督学习都是无监督语言模型的一个子集”的思想,这个思想也是提示学习(Prompt Learning)的前身。GPT-2在诞生之初也引发了不少的轰动,它生成的新闻足以欺骗大多数人类,达到以假乱真的效果。甚至当时被称为“AI界最危险的武器”,很多门户网站也命令禁止使用GPT-2生成的新闻。

gpt3.0

GPT-3除了能完成常见的NLP任务外,研究者意外的发现GPT-3在写SQL,JavaScript等语言的代码,进行简单的数学运算上也有不错的表现效果。GPT-3的训练使用了情境学习(In-context Learning),它是元学习(Meta-learning)的一种,元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。

gpt3.5

2022.3.15
text-davinci-003,code-davinci-002
InstructGPT/ChatGPT都是采用了GPT-3的网络结构,通过指示学习构建训练样本来训练一个反应预测内容效果的奖励模型(RM),最后通过这个奖励模型的打分来指导强化学习模型的训练。

InstructGPT

2022.3,InstructGPT 利用了人类反馈的强化学习方法(RLHF)对 GPT-3 进行微调,使得该模型的输出更加符合人类偏好。
在这里插入图片描述

chatgpt

AI chatbot,2022.10.30

ChatGPT是一种基于人工智能技术的自然语言生成模型,具有广泛的应用。

可以编程,debug程序,编音乐,电视剧,童话,论文。回答问题(有时取决于用户水平),写诗写歌。模仿linux程序,模仿聊天室,玩游戏,模仿ATM

具体:
以下是ChatGPT的20种用法:

智能客服:ChatGPT可以用于模拟人类客服的对话,为用户提供个性化的客户服务。
聊天机器人:ChatGPT可以与用户进行自然流畅的对话,提供各种服务和帮助。
语音助手:ChatGPT可以用于语音助手的对话生成和处理。
智能问答系统:ChatGPT可以用于自动回答问题,提供快速和准确的答案。
机器翻译:ChatGPT可以用于自动翻译不同语言之间的文本和对话。
摘要生成:ChatGPT可以根据文章的主题和内容生成简洁的摘要。
文本生成:ChatGPT可以用于生成各种文本,包括新闻、小说、诗歌等。
文档自动生成:ChatGPT可以自动为用户生成各种文档,如报告、论文、合同等。
垃圾邮件过滤:ChatGPT可以识别和过滤垃圾邮件,提高邮件的质量。
电子商务推荐:ChatGPT可以根据用户的购买历史和兴趣推荐相应的产品。
金融风险评估:ChatGPT可以根据财经数据和市场趋势预测金融风险。
医疗辅助诊断:ChatGPT可以根据患者的病症和病史提供诊断建议。
舆情分析:ChatGPT可以根据社交媒体和新闻等来源分析公众舆情。
知识图谱构建:ChatGPT可以通过自然语言理解和知识图谱技术构建大规模的知识库。
智能家居控制:ChatGPT可以通过语音识别和对话生成技术控制智能家居设备。
游戏AI:ChatGPT可以用于游戏AI的对话生成和决策。
媒体内容生成:ChatGPT可以生成各种媒体内容,如图片、音频和视频等。
职业培训:ChatGPT可以用于职业培训的自动问答和知识点解析。
情感分析:ChatGPT可以根据对话和文本内容进行情感分析。
智能广告推荐:ChatGPT可以根据用户的兴趣生成广告内容。

2023.3发布插件

  • ChatGPT for Google

  • WebChatGPT
    这个插件可以帮助 ChatGPT 获取最新的网络资讯。

由于chatGPT 的数据只到2021年,缺失了之后的数据,这款插件就很好的弥补了这个缺陷

  • Luna:
    这个插件可以帮助你理解专有名词和术语。看到不懂的直接在网页上右键,就能进入chatgpt 进行查询

  • ChatGPT Prompt Genius:
    这个插件可以让你将 ChatGPT 的回复存储为 PNG 图像和 MD 或 PDF 文件。

限制:
会一本正经编造事实
2021.9月后的事情就不知道了
不被允许表达政治立场
更倾向使用长文本回答,不管问题是否复杂
还是有一定偏见(数据和算法偏见)

visual chatgpt

微软亚洲研究院
(将 Transformers、ControlNet 和 Stable Diffusion 等视觉基础模型 (VFM) 与 ChatGPT 相结合)
使用户能够通过聊天发送消息并在聊天期间接收图像。它还允许他们通过添加一系列视觉模型提示来编辑图像。

GPT-3.5-turbo
costs $0.002 per 1000 tokens (that’s about 750 words)
付费帐号可以享受:

  1. 高流量时拥有优先使用权
  2. 更快的回应速度
  3. 优先享受新功能
  4. 可选用Turbo model 加快回应速度

gpt4

2023.3.14 ChatGPT Plus发布
“more reliable, creative, and able to handle much more nuanced instructions than GPT-3.5.
two versions of GPT-4 with context windows of 8,192 and 32,768 tokens”

GPT4是多模态模型,可以处理文本和图片

与ChatGPT最初使用的GPT-3.5模型相比,GPT-4在几个方面实现了跨越式改进:强大的图像识别能力;文本输入限制增加到 25,000 字;回答准确率显着提高;生成歌词的能力,创意文本,实现风格变化。

others

OpenAI:
DALL-E2
Whisper AI

GPT实践

naroGPT实践

https://github.com/karpathy/nanoGPT.git

git clone  https://github.com/karpathy/nanoGPT.git
python train.py

在这里插入图片描述
第二次执行就欧克了

默认迭代次数max_iters = 600000 ,可以自行修改

val loss先减小,后增大
在这里插入图片描述
本次测试迭代了3000次,
在这里插入图片描述

结果: python sample.py --out_dir=out-shakespeare-char
在这里插入图片描述

训练数据由莎士比亚更换成小王子

mkdir little_price
mkdir little_price_char

prepare.py文件内容:

"""
Prepare the Shakespeare dataset for character-level language modeling.
So instead of encoding with GPT-2 BPE tokens, we just map characters to ints.
Will save train.bin, val.bin containing the ids, and meta.pkl containing the
encoder and decoder and some other related info.
"""
import os
import pickle
import requests
import numpy as np# download the tiny shakespeare dataset
input_file_path = os.path.join(os.path.dirname(__file__), '../little_price/input.txt')
if not os.path.exists(input_file_path):data_url = 'https://linguabooster.com/en/en/book/download/little-prince'with open(input_file_path, 'w') as f:f.write(requests.get(data_url).text)# UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 2921: illegal multibyte sequence
with open(input_file_path, 'r', encoding= 'utf8') as f:data = f.read()
print(f"length of dataset in characters: {len(data):,}")# get all the unique characters that occur in this text
chars = sorted(list(set(data)))
vocab_size = len(chars)
print("all the unique characters:", ''.join(chars))
print(f"vocab size: {vocab_size:,}")# create a mapping from characters to integers
stoi = { ch:i for i,ch in enumerate(chars) }
itos = { i:ch for i,ch in enumerate(chars) }
def encode(s):return [stoi[c] for c in s] # encoder: take a string, output a list of integers
def decode(l):return ''.join([itos[i] for i in l]) # decoder: take a list of integers, output a string# create the train and test splits
n = len(data)
train_data = data[:int(n*0.9)]
val_data = data[int(n*0.9):]# encode both to integers
train_ids = encode(train_data)
val_ids = encode(val_data)
print(f"train has {len(train_ids):,} tokens")
print(f"val has {len(val_ids):,} tokens")# export to bin files
train_ids = np.array(train_ids, dtype=np.uint16)
val_ids = np.array(val_ids, dtype=np.uint16)
train_ids.tofile(os.path.join(os.path.dirname(__file__), '../little_price_char/train.bin'))
val_ids.tofile(os.path.join(os.path.dirname(__file__), '../little_price_char/val.bin'))# save the meta information as well, to help us encode/decode later
meta = {'vocab_size': vocab_size,'itos': itos,'stoi': stoi,
}
with open(os.path.join(os.path.dirname(__file__), '../little_price_char/meta.pkl'), 'wb') as f:pickle.dump(meta, f)# 10倍小
# length of dataset in characters: 91,897
# all the unique characters:
#  !"$'(),-.0123456789:;?ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnopqrstuvwxyzï—…
# vocab size: 78
# train has 82,707 tokens
# val has 9,190 tokens

vim config/train_the_little_prince_char.py

# train a miniature character-level little_price model
# good for debugging and playing on macbooks and suchout_dir = 'out-little_price-char'
eval_interval = 250 # keep frequent because we'll overfit
eval_iters = 200
log_interval = 10 # don't print too too often# we expect to overfit on this small dataset, so only save when val improves
always_save_checkpoint = Falsewandb_log = False # override via command line if you like
wandb_project = 'little_price-char'
wandb_run_name = 'mini-gpt'dataset = 'little_price_char'
batch_size = 64
block_size = 256 # context of up to 256 previous characters# baby GPT model :)
n_layer = 6
n_head = 6
n_embd = 384
dropout = 0.2learning_rate = 1e-3 # with baby networks can afford to go a bit higher
max_iters = 5000
lr_decay_iters = 5000 # make equal to max_iters usually
min_lr = 1e-4 # learning_rate / 10 usually
beta2 = 0.99 # make a bit bigger because number of tokens per iter is smallwarmup_iters = 100 # not super necessary potentially# on macbook also add
device = 'cpu'  # run on cpu only
compile = False # do not torch compile the model

train cpu训练

  python train.py config/train_little_prince_char.py  --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=2000 --lr_decay_iters=2000 --dropout=0.0

250次
在这里插入图片描述
500次
在这里插入图片描述
之后loss一直在变大
在这里插入图片描述
在这里插入图片描述

效果

 python sample.py --out_dir=out-little_prince-char

在这里插入图片描述

python sample.py   --start="the fox appear, and said" --out_dir="out-little_price-char"

在这里插入图片描述
与gpt2对比

python sample.py   --start="the fox appear, and said"   --init_from=gpt2-xl

报错

 Can't load config for 'gpt2'. If you were trying to load it from 'https://huggingface.co/models'

在这里插入图片描述
1.磁盘不足
2.不是第一次下载 文件名重复(?)
清除缓存文件 rm -rf /root/.cache/huggingface/transformers
或者更改缓存目录export HF_DATASETS_CACHE="/data1/tmp" https://huggingface.co/docs/datasets/cache


from transformers import GPT2LMHeadModel
model_hf = GPT2LMHeadModel.from_pretrained("gpt2")

在这里插入图片描述

执行中会下载模型,下载模型是单线程,不要同时下载huggingface多个模型

在这里插入图片描述

finetune

finetune_little_prince.py

import timeout_dir = 'out-little_prince'
eval_interval = 5
eval_iters = 40
wandb_log = False # feel free to turn on
wandb_project = 'little_prince'
wandb_run_name = 'ft-' + str(time.time())dataset = 'little_prince'
init_from = 'gpt2-xl' # this is the largest GPT-2 model# only save checkpoints if the validation loss improves
always_save_checkpoint = False# the number of examples per iter:
# 1 batch_size * 32 grad_accum * 1024 tokens = 32,768 tokens/iter
# little_prince has 301,966 tokens, so 1 epoch ~= 9.2 iters
batch_size = 1
gradient_accumulation_steps = 32
max_iters = 20# finetune at constant LR
learning_rate = 3e-5
decay_lr = False
python train.py config/finetune_little_prince.py

发现磁盘空间不足 cd / && du -h -x --max-depth=1

You can suppress this exception and fall back to eager by setting:torch._dynamo.config.suppress_errors = TrueCannot create temporary file in /tmp/: No space left on device

,发现是docker磁盘炸裂,清理磁盘

开始训练在这里插入图片描述

20次结果
在这里插入图片描述
检验:

执行sample报错可能是因为cuda被两个文件同时访问,报错RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling cublasCreate(handle)

python sample.py   --start="the fox appear, and said"   --out_dir="out-little_price_char"

报错

 
decode = lambda l: ''.join([itos[i] for i in l])
KeyError

更改prompt 参考:https://github.com/karpathy/nanoGPT/issues/169

原始GPT结果,参考:https://huggingface.co/gpt2

from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='gpt2')
set_seed(42)
generator("the fox appear, and said,", max_length=100, num_return_sequences=5)

在这里插入图片描述
200轮迭代后,val less 不再下降 1.4643
在这里插入图片描述
测试结果:不太有逻辑,微调效果不好,待改进

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16481.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《花雕学AI》08:你也能玩转ChatGPT—需要应用与拓展的49种场景

ChatGPT的基本原理和功能: 1、ChatGPT是一个基于GPT-3或者GPT-4模型的人工智能聊天机器人,它能够理解和生成自然的文本回答。 2、GPT-4是一个由OpenAI开发的大型语言模型,它能够从互联网上的海量文本数据中学习语言规律和知识。 3、ChatGP…

【人工智能】LLM 大型语言模型发展历史

【人工智能】LLM 大型语言模型发展历史 文章目录 【人工智能】LLM 大型语言模型发展历史前言一、发展历史通过编写一系列的规则尝试使用神经网络模型深度学习: 基于递归神经网络GPT.x —— 基于Transformer 模型二、技术原理编码器和解码器自注意力机制最大似然估计什么是“所有…

A股全市场股票历史行情1分钟高频数据

A股全市场股票历史行情1分钟高频数据 百度共享网盘 链接: https://pan.baidu.com/s/1Ki9lBRNrv1_5ufgmNdrlVQ 提取码: fxb4 20210年 -2021年分批按年压缩,2022年之后按月压缩。 最早1分钟数据开始于2021年: 2021年1分钟数据分5个压缩包: …

签名支持全球管控AI 三巨头侧漏“求生欲”

又一封“群星云集”警示AI风险的公开信来了,这封信的内容简短但措辞炸裂:减轻 AI 带来的灭绝风险,应该与管控流行病和核战争等其他社会级规模的风险一样,成为一项全球优先事项。 5月30日,这纸原文只有22个单词的声明&…

成都链安安全月报|6月区块链生态安全事件损失超9766.4 万美元

6月,各类安全事件造成的损失金额较5月大幅度上升。6月发生较典型安全事件超24起,各类安全事件造成的损失总金额约9766.4 万美元,较5月上涨约54.3%。本月最大的安全事件来自于Atomic Wallet钱包被盗事件,损失约6700万美元。第二大安…

LangChain学习:chains

文章目录 1. LLMChain2. SimpleSequentialChain3. SequentialChain4. LLMRouterChain learn from https://learn.deeplearning.ai/langchain 1. LLMChain from config import api_type, api_key, api_base, api_version, model_name from langchain.chat_models import Azure…

百度CTO王海峰做客《中国经济大讲堂》:文心一言,读书破万亿

当下,大语言模型热度空前,诸如文心一言、ChatGPT 等已经能够与人对话互动、回答问题、协助创作,逐渐应用于人们的工作和生活,也引发了社会热议。近日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰再…

「文心一言」内测详细使用体验

★观前提示:以下内容仅为内测测试内容,不代表未来正式版如何,或许你认为它与chatgpt仍有不小的差距,或许你认为它目前做的已经不错了,都可以,但是咱们测试体验,只讲述体验,本篇文章不…

mysql数据库介绍

💜今天对mysql的一些基础概念进行讲诶横扫,如概念、特点、优势、发展历史等等。对之前内容感兴趣的同学可以参考👇: 链接: mysql学习之数据系统概述 🎾让我们开始今日份的学习吧! 目录 1. mysql的基本概…

【C++】第 3 课 - do-while 循环应用案例 - 水仙花数

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、案例描述 3、示例代码 4、总结 1、缘起 以前在学习 C 语言 的时候,就做过水仙花数的练习题。在…

USB设备驱动学习记录

IN/OUT: 0:EHCI主控架构 1.关于设备地址SET_ADDRESS设置的逻辑: 可以看到set_address命令最终通过USB_DRV_WriteReg8(&musb->faddr, g_udc.address);将g_udc.address设置给了硬件,而此地址来源于主机 打印输出: 可以看到主机通过EP0…

【通义千问】继ChatGPT爆火后,阿里云的大模型“通义千问”它终于来了

通义千问 一、通义千问名字的由来二、通义千问和ChatGPT有什么区别呢?三、如何申请体验通义千问呢?四、未来通义千问能称为中国版的ChatGPT吗?五、通义千问什么时候正式发布呢? 一、通义千问名字的由来 通义千问顾名思义&#xf…

她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...

金磊 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最特殊,没有之一。 她叫华智冰,没有参加过任何升学考试,没有拿过任何竞赛名次。 却被清华大学计算机科学与技术系知识工程实验室,“破格录取”。 而且就这么一位学生&#xff…

提示工程师:如何写好Prompt

提示工程由来 提示工程是一门相对较新的学科,用于开发和优化提示以有效地将语言模型 (LM) 用于各种应用程序和研究主题。 研究人员使用提示工程来提高 LLM 在广泛的常见和复杂任务(例如问题回答和算术推理)上的能力。 开发人员使用提示工程…

chatgpt赋能python:Python中文译名的由来及其重要性

Python中文译名的由来及其重要性 Python,是一种高级、通用性、直译式、编译式、面向对象的动态程序设计语言。Python 语言设计的哲学是“优雅”、“明确”、“简单”,所以很多人将其称为“优美的语言”。 然而,Python这个名字在中文地区的译…

chatgpt赋能python:Python名字的由来

Python名字的由来 Python是一门高级编程语言,它的名字来源于一个非常有趣的故事。接下来的文章将介绍如何命名Python,并且揭示这个名字的真正含义。 Guido van Rossum设计Python Python是由Guido van Rossum设计的。在1989年,Guido在荷兰国…

15个 AI-powered应用,加速学术写作和阅读

文章目录 写作方面1.Jenni AI(推荐)2.Paperpal 阅读方面3.Schoarlcy4.chatpdf5.Casper6.SciSpace(推荐) 文献管理/写论文笔记用7.lateral8. ClioVis9.Glasp10. Audiopen 学术目的的搜索引擎11. Consensus(推荐&#xf…

高调挑战 OpenAI,马斯克成立 xAI,挖角 DeepMind、微软等 11 位顶级 AI 人才坐镇!...

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) OpenAI 强劲的竞争对手新增一位、马斯克的商业版图再下一城,其最新成立的人工智能 xAI 公司正式亮相。 而之所以选择在7月12日官宣,是因为马斯克算好了心仪的数字“42”&#xf…

马斯克再创业,高调挑战 OpenAI,挖角 DeepMind、微软等 11 位顶级 AI 人才坐镇!...

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 今天,OpenAI 强劲的竞争对手新增一位、马斯克的商业版图再下一城,其最新成立的人工智能 xAI 公司正式亮相。 而之所以选择今天官宣,是因为马斯克算好了心仪的数字“4…