微信分销网站建设比较好太原编程培训机构
微信分销网站建设比较好,太原编程培训机构,网站备案 信息查询,潍坊知名网站建设服务商本文并非基于微调训练模型#xff0c;而是从头开始训练出一个全新的大语言模型的硬核教程。看完本篇#xff0c;你将了解训练出一个大模型的环境准备、数据准备#xff0c;生成分词#xff0c;模型训练、测试模型等环节分别需要做什么。AI 小白友好~文中代码可以直接实操运…本文并非基于微调训练模型而是从头开始训练出一个全新的大语言模型的硬核教程。看完本篇你将了解训练出一个大模型的环境准备、数据准备生成分词模型训练、测试模型等环节分别需要做什么。AI 小白友好~文中代码可以直接实操运行。
通过这篇文章你可以预训练一个全新大语言模型。注意是全新的模型不是微调。
全新训练的好处是训练的数据、训练的参数都是可修改的通过调试运行我们可以更好的理解大模型训练过程。我们可以用特定类型数据的训练来完成特定类型数据的输出。
技术交流
技术要学会分享、交流不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
相关资料、数据、技术交流提升均可加我们的交流群获取群友已超过2000人添加时最好的备注方式为来源兴趣方向方便找到志同道合的朋友。 方式①、添加微信号mlc2060备注来自CSDN 技术交流 方式②、微信搜索公众号机器学习社区后台回复加群 关于大模型已经有很多文章微调模型的文章比较多全新预训练全新模型的文章很少。个人觉得有的也讲的很复杂代码也很难跑通。本文不会讲的很复杂代码也很容易运行。仅用61行代码就能训练出一个全新大语言模型。 本文以代码为主运行代码需要 Python 环境。
01 准备训练环境
我的训练环境基于腾讯云的 GPU 机器。
地址https://cloud.tencent.com/product/gpu GPU类型GN7.2XLARGE32 T4 显卡1颗 显存16GB python 3.11 requirements.txt:
tokenizers0.13.3
torch2.0.1
transformers4.30.
02 准备训练数据
首先我们要为训练准备数据比如我就想基于《三国演义》训练一个模型。三国演义下载地址
https://raw.githubusercontent.com/xinzhanguo/hellollm/main/text/sanguoyanyi.txt 03 训练分词器
分词tokenization是把输入文本切分成有意义的子单元tokens。通过以下代码根据我们的数据生成一个新的分词器
from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
from tokenizers.normalizers import NFKC, Sequence
from tokenizers.pre_tokenizers import ByteLevel
from tokenizers.decoders import ByteLevel as ByteLevelDecoder
from transformers import GPT2TokenizerFast# 构建分词器 GPT2 基于 BPE 算法实现
tokenizer Tokenizer(BPE(unk_tokenunk))
tokenizer.normalizer Sequence([NFKC()])
tokenizer.pre_tokenizer ByteLevel()
tokenizer.decoder ByteLevelDecoder()special_tokens [s,pad,/s,unk,mask]
trainer BpeTrainer(vocab_size50000, show_progressTrue, inital_alphabetByteLevel.alphabet(), special_tokensspecial_tokens)
# 创建 text 文件夹并把 sanguoyanyi.txt 下载放到目录里
files [text/sanguoyanyi.txt]
# 开始训练了
tokenizer.train(files, trainer)
# 把训练的分词通过GPT2保存起来以方便后续使用
newtokenizer GPT2TokenizerFast(tokenizer_objecttokenizer)
newtokenizer.save_pretrained(./sanguo)运行时显示如下图 成功运行代码后我们在 sanguo 目录生成如下文件
merges.txt
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.json现在我们已经成功训练了一个大语言模型的分词器。
04 训练模型
利用下面代码进行模型训练
from transformers import GPT2Config, GPT2LMHeadModel, GPT2Tokenizer
# 加载分词器
tokenizer GPT2Tokenizer.from_pretrained(./sanguo)
tokenizer.add_special_tokens({eos_token: /s,bos_token: s,unk_token: unk,pad_token: pad,mask_token: mask
})
# 配置GPT2模型参数
config GPT2Config(vocab_sizetokenizer.vocab_size,bos_token_idtokenizer.bos_token_id,eos_token_idtokenizer.eos_token_id
)
# 创建模型
model GPT2LMHeadModel(config)
# 训练数据我们用按行分割
from transformers import LineByLineTextDataset
dataset LineByLineTextDataset(tokenizertokenizer,file_path./text/sanguoyanyi.txt,block_size32,# 如果训练时你的显存不够# 可以适当调小 block_size
)
from transformers import DataCollatorForLanguageModeling
data_collator DataCollatorForLanguageModeling(tokenizertokenizer, mlmFalse, mlm_probability0.15
)from transformers import Trainer, TrainingArguments
# 配置训练参数
training_args TrainingArguments(output_dir./output,overwrite_output_dirTrue,num_train_epochs20,per_gpu_train_batch_size16,save_steps2000,save_total_limit2,
)
trainer Trainer(modelmodel,argstraining_args,data_collatordata_collator,train_datasetdataset,
)
trainer.train()
# 保存模型
model.save_pretrained(./sanguo)运行比较耗时显示训练数据如下图 成功运行代码我们发现 sanguo 目录下面多了三个文件
config.json
generation_config.json
pytorch_model.bin现在我们就成功生成训练出基于《三国演义》的一个大语言模型。
05 测试模型
我们用文本生成对模型进行测试代码如下
from transformers import pipeline, set_seed
generator pipeline(text-generation, model./sanguo)
set_seed(42)
txt generator(吕布, max_length10)
print(txt)运行显示模型输出了三国相关的文本“吕布十二回 张翼德 张翼德时曹操 武侯计计计” 再测试一条
txt generator(接着奏乐, max_length10)
print(txt)“接着奏乐\u3000却说曹操引军因二人” 这内容不忍直视如果想优化我们也可以基于全新的模型进行微调训练我们也可以适当地调整下训练参数以达到较好的效果。
06 完整代码
以下是完整代码代码地址
https://github.com/xinzhanguo/hellollm/blob/main/sanguo.py
linux 中运行方法
# 创建环境
python3 -m venv ~/.env
# 加载环境
source ~/.env/bin/activate
# 下载代码
git clone gitgithub.com:xinzhanguo/hellollm.git
cd hellollm
# 安装依赖
pip install -r requirements.txt
# 运行代码
python sanguo.py以上我们就完成一个全新的模型训练。代码去除注释空行总共61行。
本文代码模型是基于 GPT2 的当然你也可以基于 LLama 或者 Bert 等模型去实现全新的大语言模型。
代码虽然不是很多但是如果初次尝试运行的话你也许会遇到很多问题比如环境搭建。为了避免其他烦恼我建议用 docker 方式运行代码:
# 下载代码
git clone gitgithub.com:xinzhanguo/hellollm.git
cd hellollm
# 编译镜像
docker build -t hellollm:beta .
# 可以选择以GPU方式运行
# docker run -it --gpus all hellollm:beta sh
docker run -it hellollm:beta sh
python sanguo.py更多代码可以参考Hello LLM!
https://github.com/xinzhanguo/hellollm
以上就是本篇文章的全部内容欢迎转发分享。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85447.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!