研究开源gpt-2-simple项目,跑一个简单的模型,然后生成一段对话。用的是 Intel(R) Core(TM) i7-9700,8核8线程,训练最小的模型200次跑1个小时20分钟

目录

  • 前言
    • 1,关于gpt2的几个例子学习
    • 2,使用docker配置环境
    • 3,使用uget工具下载模型,文件大容易卡死
    • 4,研究使用gpt2-simple执行demo,训练200次
    • 5,总结

前言


本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807

未经博主允许不得转载。
博主CSDN地址是:https://blog.csdn.net/freewebsys
博主掘金地址是:https://juejin.cn/user/585379920479288
博主知乎地址是:https://www.zhihu.com/people/freewebsystem

1,关于gpt2的几个例子学习


快速使用docker 镜像进行环境搭建。
相关的chatGpt项目有:
gpt2官方模型:
https://github.com/openai/gpt-2
6.1K 星星:
https://github.com/Morizeyao/GPT2-Chinese
2.4K 星星:
https://github.com/yangjianxin1/GPT2-chitchat
1.6K 星星:
https://github.com/imcaspar/gpt2-ml

先找个简单的进行研究:
3.2K 星星:
https://github.com/minimaxir/gpt-2-simple

2,使用docker配置环境


先弄官方的例子,使用tensorflow的2.12 的镜像,因显卡驱动的问题,只能用cpu进行运算:

git clone https://github.com/minimaxir/gpt-2-simple
cd gpt-2-simple
docker run --name gpt2simple -itd -v `pwd`:/data -p 8888:8888 tensorflow/tensorflow:latest

版本说明,这边用的就是最小的版本:能跑就行。

latest: minimal image with TensorFlow Serving binary installed and ready to serve!
:latest-gpu: minimal image with TensorFlow Serving binary installed and ready to serve on GPUs!
:latest-devel - include all source/dependencies/toolchain to develop, along with a compiled binary that works on CPUs
:latest-devel-gpu - include all source dependencies/toolchain (cuda9/cudnn7) to develop, along with a compiled binary that works on NVIDIA GPUs.

然后进入docker 镜像中执行命令:
当然也可以使用Dockerfile 但是网速慢,且容易出错:

docker exec -it gpt2simple bash  ############### 以下是登陆后执行:sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.listmkdir /root/.pip/# 增加 pip 的源
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://mirrors.aliyun.com/pypi/simple/" >> ~/.pip/pip.conf
echo "[install]" >> ~/.pip/pip.conf
echo "trusted-host=mirrors.aliyun.com" >> ~/.pip/pip.confcd /data
#注释掉 tensorflow 依赖
sed -i 's/tensorflow/#tensorflow/g' requirements.txtpip3 install -r requirements.txt

3,使用uget工具下载模型,文件大容易卡死


sudo apt install uget

然后就是网络特别的慢了。根本下载不了,就卡在进度中。几个特别大的模型,最大的6G。

一个比一个大,不知道压缩没有:
498M:
https://openaipublic.blob.core.windows.net/gpt-2/models/124M/model.ckpt.data-00000-of-00001
1.42G
https://openaipublic.blob.core.windows.net/gpt-2/models/355M/model.ckpt.data-00000-of-00001
3.10G
https://openaipublic.blob.core.windows.net/gpt-2/models/774M/model.ckpt.data-00000-of-00001
6.23G
https://openaipublic.blob.core.windows.net/gpt-2/models/1558M/model.ckpt.data-00000-of-00001

使用工具下载模型,命令行执行的时候容易卡死:

在这里插入图片描述

这个云地址不支持多线程下载,就下载了一个最小的124M的模型。
先尝个新鲜就行。

剩下的文件可以单独下载:

gpt2 里面的代码,去掉模型文件其他用脚本下载,哎网络是个大问题。
也没有国内的镜像。

download_model.py 124M
修改了代码,去掉了最大的model.ckpt.data 这个单独下载,下载了拷贝进去。

import os
import sys
import requests
from tqdm import tqdmif len(sys.argv) != 2:print('You must enter the model name as a parameter, e.g.: download_model.py 124M')sys.exit(1)model = sys.argv[1]subdir = os.path.join('models', model)
if not os.path.exists(subdir):os.makedirs(subdir)
subdir = subdir.replace('\\','/') # needed for Windowsfor filename in ['checkpoint','encoder.json','hparams.json', 'model.ckpt.index', 'model.ckpt.meta', 'vocab.bpe']:r = requests.get("https://openaipublic.blob.core.windows.net/gpt-2/" + subdir + "/" + filename, stream=True)with open(os.path.join(subdir, filename), 'wb') as f:file_size = int(r.headers["content-length"])chunk_size = 1000with tqdm(ncols=100, desc="Fetching " + filename, total=file_size, unit_scale=True) as pbar:# 1k for chunk_size, since Ethernet packet size is around 1500 bytesfor chunk in r.iter_content(chunk_size=chunk_size):f.write(chunk)pbar.update(chunk_size)

4,研究使用gpt2-simple执行demo,训练200次


然后运行demo.py 代码
项目代码:

提前把模型和文件准备好:

https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt

另存为,在工程目录
shakespeare.txt

gpt-2-simple/models$ tree 
.
└── 124M├── checkpoint├── encoder.json├── hparams.json├── model.ckpt.data-00000-of-00001├── model.ckpt.index├── model.ckpt.meta└── vocab.bpe1 directory, 7 files

https://github.com/minimaxir/gpt-2-simple

import gpt_2_simple as gpt2
import os
import requestsmodel_name = "124M"
file_name = "shakespeare.txt"sess = gpt2.start_tf_sess()print("########### init start ###########")gpt2.finetune(sess,file_name,model_name=model_name,steps=200)   # steps is max number of training steps
gpt2.generate(sess)print("########### finish ###########")

执行:

time python demo.py

real 80m14.186s
user 513m37.158s
sys 37m45.501s

开始训练,做测试,模型训练200次。耗时是 1小时 20分钟。
用的是 Intel® Core™ i7-9700 CPU @ 3.00GHz,8核8线程的。
使用CPU训练,没有显卡。

在这里插入图片描述
cpu都是80%,load 是 7 ,风扇已经呼呼转了。
在这里插入图片描述

然后生成对话:
demo-run.py

import gpt_2_simple as gpt2sess = gpt2.start_tf_sess()
gpt2.load_gpt2(sess)
gpt2.generate(sess)

执行结果,没有cpu/gpu 优化:

python demo_generate.py 
2023-03-03 13:11:53.801232: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-03-03 13:11:55.191519: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-03-03 13:11:57.054783: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:357] MLIR V1 optimization pass is not enabled
Loading checkpoint checkpoint/run1/model-200
Ministers' policy: policy
I am the king, and
I shall have none of you;
But, in the desire of your majesty,
I shall take your honour's honour,
And give you no better honour than
To be a king and a king's son,
And my honour shall have no more than that
Which you have given to me.GLOUCESTER:MONTAGUE:Mistress:
Go, go, go, go, go, go, go, go, go!GLOUCESTER:
You have done well, my lord;
I was but a piece of a body;
And, if thou meet me, I'll take thy pleasure;
And, if thou be not satisfied
I'll give thee another way, or let
My tongue hope that thou wilt find a friend:
I'll be your business, my lord.MONTAGUE:
Go, go, go, go!GLOUCESTER:
Go, go, go!MONTAGUE:
Go, go, go!GLOUCESTER:
You have been so well met, my lord,
I'll look you to the point:
If thou wilt find a friend, I'll be satisfied;
Thou hast no other choice but to be a king.MONTAGUE:
Go, go, go!GLOUCESTER:
Go, go, go!MONTAGUE:
Go, go, go!GLOUCESTER:
Go, go, go!MONTAGUE:
Go, go, go!GLOUCESTER:
Go, go, go!KING RICHARD II:
A villain, if you have any, is a villain without a villain.WARWICK:
I have seen the villain, not a villain,
But--KING RICHARD II:
Here is the villain.WARWICK:
A villain.KING RICHARD II:
But a villain, let him not speak with you.WARWICK:
Why, then, is there in this house no man of valour?KING RICHARD II:
The Lord Northumberland, the Earl of Wiltshire,
The noble Earl of Wiltshire, and the Duke of Norfolk
All villainous.WARWICK:
And here comes the villain?KING RICHARD II:
He is a villain, if you be a villain.

每次生成的对话都不一样呢。可以多运行几次,生成的内容都是不一样的。

5,总结


ai果然是高技术含量的东西,代码啥的不多,就是没有太看懂。
然后消耗CPU和GPU资源,也是非常消耗硬件的。
这个很小的模型训练200次,都这么费时间,更何况是大数据量多参数的模型呢!!

同时这个基础设施也要搭建起来呢,有个项目要研究下了,就是
https://www.kubeflow.org/

得去研究服务器集群了,因为Nvidia的限制,服务器上跑的都是又贵又性能低的显卡。
但是可以本地跑集群做训练呢!!!

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807

在这里插入图片描述

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

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

相关文章

基于GPT-4的神仙插件Bito,亲测好用

基于GPT-4的神仙插件,无需魔法,目前免费 文章目录 基于GPT-4的神仙插件,无需魔法,目前免费一、Bito简介可以做哪些事情 二、如何安装插件三、使用步骤提问示例一、写一个快速排序算法二、解释mysql的原子性三、询问天气,非技术问题不回答 :joy: 四、官网…

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用 0. 前言1. 灵感2. 实验3. 结论 0. 前言 近期,OpenAI发布的chat GPT可谓是各种刷屏,很多人都在关注这种模式是否可以应用于搜索引擎,这给做搜索的朋友们带来了很大的危机感…

吴恩达OpenAI基于ChatGPT的Prompt开发教程

吴恩达OpenAI基于ChatGPT的Prompt开发教程 百度文心千帆示例: 作为一名营养师,我想为 2 人设计一份素食食谱,每份含有大约 500 卡路里的热量,并且血糖指数较低。你能提供一个建议吗? 1.如何给出清晰具体的提示 1.1大…

软银计划大幅减持阿里巴巴;美国将12家中国芯片贸易商纳入“实体清单”;知乎发布中文大模型“知海图AI”丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 百度Apollo将在上海车展发布智能汽车开放方案 4月13日,据科创板日报报道,百度Apollo将现身即将开幕的上海车展,并于4月16日举办Apollo汽车智能化业务发布会。届时&#xff0c…

手机之父出生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2022 年 12 月 26 日,在 1898 年的今天,居里夫人在提交给法国科学院的报告中宣布他们又发现一个比铀的放射性要强百万倍的新元素——镭。这是皮埃…

当CSDN接入ChatGPT,我再也不是百度工程师了

ChitGPT它来了 今天上了下CSDN,才发现新出来一个叫“ChitGPT”的功能,CSDN应该是每个程序员都翻阅的网站,百度一搜,关键词匹配大量CSDN的网站,点进去干货却寥寥无几,大多水文或者搬运文,可倘若C…

特制自己的ChatGPT:多接口统一的轻量级LLM-IFT平台

©PaperWeekly 原创 作者 | 佀庆一 单位 | 中科院信息工程研究所 研究方向 | 视觉问答 项目简称: Alpaca-CoT(当羊驼遇上思维链) 项目标题: Alpaca-CoT: An Instruction Fine-Tuning Platform with Instruction Data Collect…

Nature立新规:ChatGPT等大模型不可以成为作者

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 内容来自机器之心(ID:almosthuman2014) 随着研究人员不断涌入先进的 AI 聊天机器人的「新世界」,像《Nature》这样的出版商需要承认它们的合法用途,并…

神奇LLM引擎上线!帮你把GPT-3直接调成ChatGPT

©作者 | 机器之心编辑部 来源 | 机器之心 OpenAI 花几个月完成的事,现在用它直接给你自动化了。 最近一段时间,不论大公司还是开发者都在造大语言模型(LLM),但有人认为,大模型应用的速度有点落后。 为…

ChatGPT颠覆的第三个行业-教育领域

引言:随着人工智能技术的飞速发展,越来越多的行业受到了影响。ChatGPT作为一种领先的自然语言处理技术,在内容创作、在线客服等领域取得了显著的成果。如今,它正开始进入另一个领域——教育。本文将探讨ChatGPT如何改变教育行业&a…

代理服务器没有响应解决方案

有时候不知道为什么,电脑无缘无故设置了代理-,导致无法获取网络连接,怎么解决呢? 进入控制面板界面: 如果打钩了,去掉就好了… 为啥会代理,始终是个谜. 应该是在公司的时候是走的固定id端口上网,回到家后要去掉这个.

“代理服务器出现问题,或者地址有误”解决方案

网上查了很多方法,终于解决了,在此分享一下(前两个方法为通用方法,都不行的话,可以试试第三种方法) 方法一:(windows11版) 打开设置——网络和Internet——找到代理 进…

代理服务器可能有问题,或地址不正确(已解决)

解决代理服务器可能有问题,或地址不正确 1. 问题描述2. 解决方法 1. 问题描述 如果遇到电脑连上wifi,其他应用可以上网(例如可以登录QQ),但是浏览器不能浏览网页,出现代理服务器可能有问题,或地址不正确 这个错误&…

影响HTTP代理稳定的因素有哪些?IP为什么会不稳定?

我们在使用HTTP代理的时候,会遇到还存活时间内,就无法使用的时候,或者直接登录不上HTTP代理,导致我们无法很好完成项目,在挑选厂商的时候,也会经常会看到厂商的说自己的HTTP代理稳定,可见HTTP代…

代理服务器可能有问题,或地址不正确的解决方案

可能是设置了代理服务器的原因。 1.先打开代理服务器设置 2.关闭代理服务器。

解决代理服务器可能有问题,或地址不正确

解决代理服务器可能有问题,或地址不正确 1. 问题描述2. 解决方法 1. 问题描述 如果遇到电脑连上wifi,其他应用可以上网(例如可以登录QQ),但是浏览器不能浏览网页,出现代理服务器可能有问题,或地址不正确 这个错误&…

hgame2023 week1 writeup

#WEEK1 文章目录 RE1、re-test_your_IDA2、re-easyasm3、re-easyenc4、re-a_cup_of_tea5、re-encode pwn1、test_nc2、easy_overflow3、choose_the_seat4、orw5、simple_shellcode crypto1、兔兔的车票2、cr-RSA3、Be Stream4、神秘的电话 web1、Classic Childhood Game2、Gue…

并发,Java核心技术卷

多进程与多线程的区别: 每个进程拥有自己的一整套变量,线程共享数据。所以线程通信更高效,更轻量、创建册小开销小。 1. 什么是线程 1.1 一个单独线程中运行一个任务的简单过程: 1.将执行任务的代码,放在实现Runnab…

武职301-day02

这里写自定义目录标题 软件开发前端最基础的技术三剑客:HTMLCSSJavaScript二维码 搭建后端开发环境创建SpringBoot项目Jar怎么存储呢?创建第一个SpringBoot程序 使用谷歌工具包zxing产生二维码改造工具类,形成网址输入地址和图片路径&#xf…

序列标注/信息抽取任务(持续更新ing…)

诸神缄默不语-个人CSDN博文目录 本文介绍序列标注/信息抽取任务。 我写了个信息抽取经典论文的石墨文档,但是我发现现在公开发布需要会员了,请大家加我V给我赞助一笔会员费,让我能够公开文档: 最近更新时间:2023.7…