体验 nanoGPT

news2024/9/22 13:36:52

体验 nanoGPT

  • 1. 使用预训练模型
  • 2. 训练自己的模型
    • 2-1. 准备训练数据
    • 2-2. 模型训练
    • 2-3. 模型验证

1. 使用预训练模型

在我们尝试训练自己的模型之前,我们先使用其他人训练好的模型,看看如何在自己的环境中运行聊天机器人。

今天我们使用 GPT4ALL 并从 hugging face 下载训练好的模型进行测试。

首先下载模型,我们使用来自 hugging face 的预训练模型。

sudo apt install -y git-lfs
git lfs install
git clone https://huggingface.co/decapoda-research/llama-7b-hf

需要注意的是,该模型下载之后不能执行,会报配置错误,经过检查之后发现,模型的作者在编写配置文件时,出现了拼写错误。

请将tokenizer_config.json 文件按照如下格式修改即可:

sed -i 's/LLaMATokenizer/LlamaTokenizer/g' ./llama-7b-hf/tokenizer_config.json

安装依赖,

pip3 install nomic peft sentencepiece protobuf==3.20.3

然后我们使用如下代码,问聊天机器人,清华大学在哪里?看看它的回答。

import warnings
warnings.filterwarnings("ignore")
from nomic.gpt4all import GPT4AllGPU
m = GPT4AllGPU('llama-7b-hf/')
config = {'num_beams': 2,
         'min_new_tokens': 10,
         'max_length': 100,
         'repetition_penalty': 2.0}
out = m.generate('where is qinghua university?', config)
print(out)

它的回答基本正确,但又说了一些和问题无关的信息,

在这里插入图片描述

2. 训练自己的模型

之前使用预制模型,只是为了让大家了解如何运行GPT聊天机器人,而真正为企业服务的是使用我们自己训练的模型。

这里我们将使用另外一个模型 nanoGPT,它是用于训练/微调中型 GPT 的比较简单、相对快速的软件库。

它是以 minGPT 为基础的重新实现版本,该模型目前仍在积极开发中。

首先需要满足nanoGPT的运行条件。

pytorch <3
numpy <3
pip install transformers for huggingface transformers <3 (to load GPT-2 checkpoints)
pip install datasets for huggingface datasets <3 (if you want to download + preprocess OpenWebText)
pip install tiktoken for OpenAI's fast BPE code <3
pip install wandb for optional logging <3
pip install tqdm <3

执行下面命令安装依赖,

pip3 install torch numpy transformers datasets tiktoken wandb tqdm 

然后需要克隆nanoGPT的存储库。

git clone https://github.com/karpathy/nanoGPT.git; cd nanoGPT

2-1. 准备训练数据

你可以将自己的文本作为训练集,并将他们放在data文件夹中。在今天的示例中,我们将使用莎士比亚的作品作为我们的训练集,所以我们首先从网络下载一个1MB左右的文本文件,并对它进行数字化转换。

python3 data/shakespeare_char/prepare.py

--- output
length of dataset in characters: 1,115,394
all the unique characters:
 !$&',-.3:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
vocab size: 65
train has 1,003,854 tokens
val has 111,540 tokens
---

2-2. 模型训练

在训练数据准备完毕后,我们将启动模型的训练。

python3 train.py config/train_shakespeare_char.py

通过 watch -n 1 nvidia-smi 对GPU状态的观察,我们可以看到GPU现在已经几乎满负荷运行。

在这里插入图片描述

我们的训练需要进行 5000 次迭代,运行时间大概为 3 分钟左右。之前在Intel IceLake系列 16 cores 的 CPU,128GB 内存环境中完成相同的训练需要 12 个小时,使用英伟达 A10 单卡 GPU 之后,效率提升 90 倍(注:不同模型,不同训练数据,情况不同。90 倍只是本次实验所属情况),在验证集上得到的 min loss 为 1.7075,在没有对模型进行精细调整的情况下,目前的指标还令人满意。

在这里插入图片描述

2-3. 模型验证

通过我们刚才生成的 best 模型,我们让它生成一些文字,看看是否满足我们的要求。

python3 sample.py --out_dir=out-shakespeare-char

因为我们没有对模型进行调整,所以现在它的表现不是很理想,当对模型参数进行调整,调高某些参数值(有些参数值需要降低)之后,利用多块 GPU 同时训练,估计会得到更高的结果。一旦您的模型达到预期,就可以请前端工程师帮您制作精美的页面,然后调用您的模型进行工作了。

完结!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则匹配x.x.x

\d(\.\d){2} 正则规则 \d 表示一个十进制的数字 [0-9] 匹配加号之前的一次或多次 正则中[]、()、{}的区别 [] 匹配组内任意字符 eg&#xff1a;[1,2,3,a-z]能匹配1、2、3、a到z的任意字符 () 相应的匹配字符串&#xff0c;匹配组&#xff0c;子表达式 eg:(abc|cbd)能匹配…

既然有Map了,为什么还要有Redis?

以下内容转自掘金 作者:哪吒编程 同样是缓存&#xff0c;用map不行吗&#xff1f; Redis可以存储几十个G的数据&#xff0c;Map行吗&#xff1f;Redis的缓存可以进行本地持久化&#xff0c;Map行吗&#xff1f;Redis可以作为分布式缓存&#xff0c;Map只能在同一个JVM中进行缓…

2022 Jiangsu Collegiate Programming Contest I. Cutting Suffix

题目链接 Examples input aa Output 1 input ab Output 0 题目大意&#xff1a; 后缀i是字符串从第i个字符开始到最后的字符字串 定义Wi,j是字符串 后缀i和后缀j的公共前缀(LCP)的长度 现在给你一个全集为1-n的互补集T1,T2 要求题目中求和公式的最小值。 题目要点&#xff1a;…

学习笔记(1 - 01)项目初始化的方案和对比

目录 1&#xff0c;创建项目的方式1.1&#xff0c;两种方式创建的项目比对HbuilderX创建的项目&#xff1a;cli创建的项目 1&#xff0c;创建项目的方式 uniapp提供两种方式创建项目&#xff1a; 通过HbuilderX编辑器创建&#xff1a; 通过vue-cli创建 第一方式只能通过Hbuild…

如何在Facebook上创建一个成功的广告账户?

Facebook广告已成为许多企业吸引客户和推广品牌的主要方式。但是&#xff0c;如果你没有经验或知识&#xff0c;创建一个成功的Facebook广告账户可能会变得相当棘手。在这篇文章中&#xff0c;我将向你介绍如何创建一个成功的Facebook广告账户。 第一步&#xff1a;创建Faceboo…

Lucene和Solr和Elasticsearch区别,全文检索引擎工具包Lucene索引流程和搜索流程实操

文章目录 基本概念什么是全文检索技术全文检索的应用场景搜索引擎站内搜索&#xff08;关注&#xff09;文件系统的搜索 Lucene & solr & es介绍区别Solr与Lucene对比ES与Lucene的区别ES与Solr对比 Lucene实现全文检索的流程入门程序需求环境准备数据库脚本初始化Lucen…

ADAS测试方案

一 方案概述 随着5G通讯与互联网的快速发展&#xff0c;智能汽车和ADAS辅助系统的研究与发展在世界范围内也在如火如荼地进行。风丘紧跟时代脚步&#xff0c;经多年积累沉淀&#xff0c;携手整车厂与高校共同研发打造出了一套完整且适用于国内ADAS测试的系统方案。 | ADAS测试…

C/C++每日一练(20230506) 翻转词序、字符金字塔、单词搜索

目录 1. 翻转顺序打印 ※ 2. 字符金字塔 ※ 3. 单词搜索 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 翻转顺序打印 初始化一个字符数组为"Th…

【Java面试八股文】Java基础篇——String+集合+泛型+IO+异常+反射

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 三、String 3.1.String常量池 3.2.请你说说String类 3.3.new String("abc")创建了几个字符串对象&#xff1f; 3.4…

双线性插值(Bilinear interpolation)原理推导

文章目录 参考资料前言推导先x方向&#xff0c;后y方向先y方向&#xff0c;后x方向 简化后的双线性插值双线性插值的一阶导 参考资料 https://en.wikipedia.org/wiki/Bilinear_interpolation 前言 双线性插值&#xff0c;又称为双线性内插。在数学上&#xff0c;双线性插值是…

chatGPT的对手,Claude注册教程

完美替代chatGPT&#xff01;Claude注册教程及浅浅的测评 注册 slack 访问地址&#xff1a;https://slack.com/ 点击使用电子邮件注册 建议使用Google邮箱进行登录&#xff0c; 当然使用Google邮箱登录需要使用魔法 登录成功后 创建Slack工作区 我的邀请链接 https://join.…

Ae:绘画工具 - 描边选项

在 Ae 中使用绘画工具&#xff08;画笔工具、仿制图章工具及橡皮擦工具&#xff09;时&#xff0c;都会在时间轴面板的绘画 Paint效果中添加“描边选项” Stroke Options&#xff0c;不同的工具有一些不同的属性。 描边选项里的属性主要用于绘画描边之后的调整&#xff0c;并可…

【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】

Leetcode Leetcode -405.数字转换为十六进制数Leetcode - 409.最长回文串 Leetcode -405.数字转换为十六进制数 题目&#xff1a;给定一个整数&#xff0c;编写一个算法将这个数转换为十六进制数。对于负整数&#xff0c;我们通常使用 补码运算 方法。 注意 : 十六进制中所有…

flask+opencv+实时滤镜(原图、黑白、怀旧、素描)

简介&#xff1a;滤镜&#xff0c;主要是用来实现图像的各种特殊效果。图像滤镜用于改变图像的视觉效果&#xff0c;使其具有特定的风格。下面是这三种滤镜的详细说明&#xff1a; 1、黑白&#xff08;Grayscale&#xff09;&#xff1a;黑白滤镜将彩色图像转换为灰度图像&…

全景丨0基础学习VR全景制作,平台篇第17章:热点功能-视频

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01; 功能说明 应用场景 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的交互&#xff0c;增加用户的多元化体验。 视频热点&#xff0c;即点击热点后弹出一个…

Camtasia2023全新版下载安装使用教程

Camtasia2023是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia具有直观的界面和易于使用的工具&#xff0c;包括添加文本、音频、动…

qt程序设置同时只能运行一个,避免重复打开

qt程序设置同时只能运行一个&#xff0c;避免重复打开 [1] qt程序设置同时只能运行一个&#xff0c;避免重复打开[2] Qt 桌面软件防止重新启动一、创建互斥量二、使用QLockFile 创建锁定文件&#xff0c;通过能否锁定来判断是否已经有程序启动。三、使用 系统信号量 QSystemSem…

基于ATECLOUD的航电系统可灵活扩展自动化测试平台

随着电子技术的发展&#xff0c;航电系统在飞机整机中的重要性飞速提升。据统计&#xff0c;近年来航电系统在飞机出厂成本中的比例直线上升&#xff0c;航电系统研发成本已占飞机研制总成本的近30%&#xff0c;并保持着持续扩大的趋势。测试保障作为航电产业链至关重要的一环&…

一起学 WebGL:绘制图片

大家好&#xff0c;我是前端西瓜哥。之前讲解了如何用 WebGL 绘制红色三角形&#xff0c;今天西瓜哥带大家来学习如何将图片绘制到画布上的技术&#xff1a;纹理映射&#xff08;texture mapping&#xff09;。 本文为系列文章中的一篇&#xff0c;请先阅读&#xff1a; 《一起…

25000 字详解 23 种设计模式(多图 + 代码)

25000 字详解 23 种设计模式&#xff08;多图 代码&#xff09; 目录 创建型模式结构型模式行为型模式总结 前言 一直想写一篇介绍设计模式的文章&#xff0c;让读者可以很快看完&#xff0c;而且一看就懂&#xff0c;看懂就会用&#xff0c;同时不会将各个模式搞混。 设计…