作者:小傅哥
博客:https://bugstack.cn
积淀、分享、成长,让本人和别人都能有所播种!
最近 ChatGPT 很火,火到了各行各业。记得去年更多的还是码农最新体验后拿它搜代码,当初各行各业都进来体验,问它咋理财、怎么写报告和给小孩起名。😂 也因而让小傅哥在头条的一篇对于 ChatGPT 的文章都有了 26 万 的浏览。
除了大家都想体验一下这款智能的 ChatGPT AI,也有很多互联网公司开始搭建本人的 ChatGPT,但真的挺放心最初整进去的 不是 ChatGPT 而是 ChatPPT。为此我也想钻研下 ChatGPT 是怎么做进去的,都说是模型和数据训练,那我能训练吗🤔?这货色离我想做个 demo 进去有多远?
一、技术调研,很冲动
当我开始往 算法模型训练
里踏进一脚👣,漏个门缝检索点相干学习材料和案例代码,发现这个世界太宏大了。早在 4 年前,GPT-2 就曾经公布了 openai 开源代码 https://github.com/openai/gpt-2 也就是说咱们就能够拿 GPT-2 的开源代码训练一个模型,哪怕是训练出个傻子,也应该比“xxx,我在,你说。”要更智能一些🤔。
接着检索我发现了,早在 2 年前有人曾经基于 GPT-2 训练一版 GPT2 for Chinese chitchat/ 用于中文闲聊的 GPT2 模型。开源代码:https://github.com/yangjianxi…
不晓得在做的兄弟们👬🏻你们冲动不,看到这我是挺开心😄。这不是我想要的 demo 模型吗。把它给训练进去,也就能满足我对 ChatGPT 的深刻理解了,并且基于我想做的任何类数据训练失去一个个小模型部署,也是能够帮忙我来实现一些事件的。如;你把公司的一些文档数据进行训练,失去一份能够搜寻检索就能获取相干数据的 ChatGPT 不挺爽吗?
越是检索越是开心,离我的指标也越来越近了。但作为一个量化算法训练的小白,其实我还是心愿能找到一份 Java 的模型训练代码,这能够让我操作起来更加顺畅。没错,我找到了,也是 3 年前就有的一份材料;https://github.com/SimiaCrypt… 这是一个基于 Tensorflow 的 GPT-2 文本模型的 Java 库。—— 别着急,这个时候我也不晓得 Tensorflow 是啥。
这还说啥,这有 pom 配置,还有代码案例。引入一下就能跑,上车🚗吧!
好家伙,跑起代码才晓得。这货上来就下了 1 个多 G 的 pb 模型数据,之后有报错 Mac M1 兼容性问题。折腾一大堆,最初又报错;Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.2 AVX AVX2 FMA
—— 要是你咋整,你再保持保持,还是放弃!
二、风浪越大,鱼越贵
原本认为 ChatGPT 嘛、Python 嘛、跑个数据模型吗!这能几道墙阻挡我的来路,不就是换个工具写代码吗?但当我逐渐进入后发现,这间隔如同比设想的大的多!
想玩 ChatGpt 玩到模型训练,得先进入 Gpt-2 开源代码。基于想本人训练一个小模型,须要应用 TensorFlow 创立生产级机器学习模型。而 TensorFlow 须要在本地装置一系列 Python 工具并下载模型和数据样本。而这里就像装置 JDK 一样,是傻子都会和傻子都不会。Mac M1 天生自豪,装置了 2 天,才测试出能够应用的模型训练环境。之后开始跑第一个模型,线性回归。再理解什么是线性回归。
这是 TensorFlow 的官网,用于创立生产级机器学习模型。也就是说想要实现一个简略的 ChatGPT 得从这开始。—— 死鬼,不要在想了,你总是得从 HelloWorld 开始。
但在检索的过程中,我又找到了一个名叫 huggingface.co 的网站;Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,他们原本打算守业做聊天机器人,而后在 Github 上开源了一个 Transformers 库。尽管聊天机器人业务没搞起来,然而他们的这个库在机器学习社区迅速大火起来。目前曾经共享了超 100,000 个预训练模型,10,000 个数据集,变成了机器学习界的 Github。
在 Hugging face 社区中能够找到相干的模型训练资源以及提供好的模型应用接口,比方像中文分词、聊天对话、图片剖析也都有,当然也包含一些公司训练进去的 gpt-2 模型。
在 Models 中提供了大量的算法模型,你能够把本人须要的模型点个 like 关注起来。同时这些模型还提供好了调用接口,例如【api key 能够在网站申请】;
curl https://api-inference.huggingface.co/models/microsoft/CodeGPT-small-java \
-X POST \
-d '{"inputs":"Can you please let us know more details about your "}' \
-H "Authorization: Bearer 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"
你能够通过接口对模型进行拜访,当然这些模型训练的数据并不是很大,只是作为测试应用。不会像 ChatGPT 那么智能的返回你所检索的信息。不过这至多能够让你理解和体验不同模型所带来的数据返回是什么样。
三、环境配置,搞起来
一口不能 呲个瘦子
,为了更好的为当前能训练出一个本人能够玩的小体量的 ChatGPT 模型,总得要从头开始。
这里小傅哥的指标是带着搭建先在本地搭建起一个 TensorFlow 的根底环境,来跑个 Python 的简略算法模型。为此咱们须要进行一下环境配置。小傅哥 2 台机器已验证没问题,别离是 Mac Intel/M1,机器配置 4 核 16G。
1. Python 环境
- 下载 Python:https://www.python.org/downlo… 3.6 版本以上。个别 Mac 上会带一个 2.x 版本的 Python,这个版本不够用,须要降级下。
-
配置 Python:
- 装置 Python 实现后,搜寻地址
which python3
- 关上 vi ~/.bash_profile 文件,写入环境配置
alias python="/Library/Frameworks/Python.framework/Versions/3.10/bin/python3"
- 失效配置
source .bash_profile
- 装置 Python 实现后,搜寻地址
2. pip 指令装置
- 装置 pip:以下须要用到 pip 指令,如果没有须要装置
curl https://bootstrap.pypa.io/get-pip.py | python3
3. Tensorflow
官网装置领导:https://www.tensorflow.org/in…
但这里有个问题,没有阐明 Mac M1 怎么装置。如果依照这个代码在 M1 的机器是装置不上的。所以在小傅哥的一顿折腾后找到了对应的依照指令。步骤如下;
- 下载代码【可选】:https://github.com/fuzhengwei… – 用于后续测试模型训练代码
- 配置 Visual Studio【你也能够是其余的】,关上当前须要装置 python 插件以及配置登录 github,这样会更利于后续的操作。之后在 Visual Studio 的终端下,查看下 python -V 的版本,如果不是最新装置的 3.x 版本,能够刷新下配置
source .bash_profile
。 - Mac 电脑装置 Tensorflow:
python3 -m pip install tensorflow-macos
—— 装置比拟耗时,须要期待。如果失败了就继续执行这条指令。
- 装置后测试:
python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
—— 只有能输入后果为即可。
四、跑个模型,验证下
可能很多搭档不晓得什么是算法模型,简略形容比方;为啥给你举荐你喜爱看的美女,为啥给你发送一个键盘购物券、为啥看你小子有钱就总给你举荐豪车。这都是依据你身上的标签进行模型训练的后果,在泛滥的人群中找到指标用户。另外像我在腾讯做量化算法的小伙伴说,决策树就是一种简略的算法模型。
代码详见:https://github.com/fuzhengwei/TensorFlow-Tutorial
测试后果
fuzhengwei@MacBook-Pro TensorFlow-Tutorial % /usr/local/bin/python3 /Users/fuzhengwei/1024/github/TensorFlow-Tutorial/codes/linear_regression.py
Epoch 1/500
1/1 [==============================] - 0s 3ms/step - loss: 0.0150
Epoch 500/500
1/1 [==============================] - 0s 2ms/step - loss: 0.0150
1/1 [==============================] - 0s 76ms/step
[[-0.19686729]]
1/1 [==============================] - 0s 29ms/step
[[-1.0953956]]
1/1 [==============================] - 0s 29ms/step
[[-1.9939239]]
1/1 [==============================] - 0s 31ms/step
[[-2.8924522]]
1/1 [==============================] - 0s 30ms/step
[[-3.7909803]]
1/1 [==============================] - 0s 30ms/step
[[-8.283622]]
- 这是一个训练了 500 次的线性回归预测模型;
- 线性回归能够预测房价、预测股票、预测天气和评估经济。
这一篇文章先给我本人以及大家对 ChatGPT 开个门,让对此感兴趣的编程爱好者能够参加进去学习。在我感觉 ChatGPT 的呈现会突破某些均衡,对一些事项进行秩序重置。因而也让更多的人取得了大量的机会。如果你还没有体验到 ChatGPT 的能力,那么能够点击链接对它发问体验。这是小傅哥注册 ChatGPT API Keys 接口,并对接到上面程序中应用的。地址:https://wx.zsxq.com/dweb2/ind…