加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、技術(shù)調(diào)研,很激動
    • 二、風(fēng)浪越大,魚越貴
    • 三、環(huán)境配置,搞起來
    • 四、跑個模型,驗證下
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

搭個ChatGPT算法模型,離Java程序員有多遠?

2023/02/18
1672
閱讀需 15 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:小傅哥
博客:https://bugstack.cn

 

最近 ChatGPT 很火,火到了各行各業(yè)。記得去年更多的還是碼農(nóng)最新體驗后拿它搜代碼,現(xiàn)在各行各業(yè)都進來體驗,問它咋理財、怎么寫報告和給小孩起名。 也因此讓小傅哥在頭條的一篇關(guān)于 ChatGPT 的文章都有了26萬的閱讀。

除了大家都想體驗一下這款智能的 ChatGPT AI,也有很多互聯(lián)網(wǎng)公司開始搭建自己的 ChatGPT,但真的挺擔(dān)心最后整出來的不是 ChatGPT 而是 ChatPPT。為此我也想研究下 ChatGPT 是怎么做出來的,都說是模型和數(shù)據(jù)訓(xùn)練,那我能訓(xùn)練嗎???這東西離我想做個 demo 出來有多遠?

一、技術(shù)調(diào)研,很激動

當(dāng)我開始往算法模型訓(xùn)練里踏進一腳,漏個門縫檢索點相關(guān)學(xué)習(xí)資料和案例代碼,發(fā)現(xiàn)這個世界太龐大了。早在4年前,GPT-2 就已經(jīng)發(fā)布了 openai 開源代碼 https://github.com/openai/gpt-2 也就是說我們就可以拿 GPT-2 的開源代碼訓(xùn)練一個模型,哪怕是訓(xùn)練出個傻子,也應(yīng)該比“xxx,我在,你說?!币悄芤恍??。

接著檢索我發(fā)現(xiàn)了,早在2年前有人已經(jīng)基于 GPT-2 訓(xùn)練一版 GPT2 for Chinese chitchat/用于中文閑聊的GPT2模型。開源代碼:https://github.com/yangjianxin1/GPT2-chitchat

不知道在做的兄弟們你們激動不,看到這我是挺開心。這不是我想要的 demo 模型嗎。把它給訓(xùn)練出來,也就能滿足我對 ChatGPT的深入了解了,并且基于我想做的任何類數(shù)據(jù)訓(xùn)練得到一個個小模型部署,也是可以幫助我來完成一些事情的。如;你把公司的一些文檔數(shù)據(jù)進行訓(xùn)練,得到一份可以搜索檢索就能獲取相關(guān)數(shù)據(jù)的 ChatGPT 不挺爽嗎?

越是檢索越是開心,離我的目標(biāo)也越來越近了。但作為一個量化算法訓(xùn)練的小白,其實我還是希望能找到一份 Java 的模型訓(xùn)練代碼,這可以讓我操作起來更加順暢。沒錯,我找到了,也是3年前就有的一份資料;https://github.com/SimiaCryptus/tf-gpt-2 這是一個基于 Tensorflow 的 GPT-2 文本模型的 Java 庫。—— 別著急,這個時候我也不知道 Tensorflow 是啥。

這還說啥,這有pom配置,還有代碼案例。引入一下就能跑,上車吧!

好家伙,跑起代碼才知道。這貨上來就下了1個多G的pb模型數(shù)據(jù),之后有報錯 Mac M1 兼容性問題。折騰一大堆,最后又報錯;Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.2 AVX AVX2 FMA —— 要是你咋整,你再堅持堅持,還是放棄!

二、風(fēng)浪越大,魚越貴

本來以為 ChatGPT 嘛、Python 嘛、跑個數(shù)據(jù)模型嗎!這能幾道墻阻擋我的去路,不就是換個工具寫代碼嗎?但當(dāng)我逐步進入后發(fā)現(xiàn),這距離好像比想象的大的多!

想玩 ChatGpt 玩到模型訓(xùn)練,得先進入 Gpt-2 開源代碼。基于想自己訓(xùn)練一個小模型,需要使用 TensorFlow 創(chuàng)建生產(chǎn)級機器學(xué)習(xí)模型。而 TensorFlow 需要在本地安裝一系列 Python 工具并下載模型和數(shù)據(jù)樣本。而這里就像安裝 JDK 一樣,是傻子都會和傻子都不會。Mac M1 天生驕傲,安裝了2天,才測試出可以使用的模型訓(xùn)練環(huán)境。之后開始跑第一個模型,線性回歸。再了解什么是線性回歸。

這是 TensorFlow 的官網(wǎng),用于創(chuàng)建生產(chǎn)級機器學(xué)習(xí)模型。也就是說想要完成一個簡單的 ChatGPT 得從這開始?!?死鬼,不要在想了,你總是得從 HelloWorld 開始。

但在檢索的過程中,我又找到了一個名叫 huggingface.co 的網(wǎng)站;Hugging face 起初是一家總部位于紐約的聊天機器人初創(chuàng)服務(wù)商,他們本來打算創(chuàng)業(yè)做聊天機器人,然后在 Github上開源了一個 Transformers 庫。雖然聊天機器人業(yè)務(wù)沒搞起來,但是他們的這個庫在機器學(xué)習(xí)社區(qū)迅速大火起來。目前已經(jīng)共享了超100,000個預(yù)訓(xùn)練模型,10,000個數(shù)據(jù)集,變成了機器學(xué)習(xí)界的 Github。

在 Hugging face 社區(qū)中可以找到相關(guān)的模型訓(xùn)練資源以及提供好的模型使用接口,比如像中文分詞、聊天對話、圖片分析也都有,當(dāng)然也包括一些公司訓(xùn)練出來的 gpt-2 模型。

在 Models 中提供了大量的算法模型,你可以把自己需要的模型點個 like 關(guān)注起來。同時這些模型還提供好了調(diào)用接口,例如【api key 可以在網(wǎng)站申請】;

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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"

你可以通過接口對模型進行訪問,當(dāng)然這些模型訓(xùn)練的數(shù)據(jù)并不是很大,只是作為測試使用。不會像 ChatGPT 那么智能的返回你所檢索的信息。不過這至少可以讓你了解和體驗不同模型所帶來的數(shù)據(jù)返回是什么樣。

三、環(huán)境配置,搞起來

一口不能呲個胖子,為了更好的為以后能訓(xùn)練出一個自己可以玩的小體量的 ChatGPT 模型,總得要從頭開始。

這里小傅哥的目標(biāo)是帶著搭建先在本地搭建起一個 TensorFlow 的基礎(chǔ)環(huán)境,來跑個 Python 的簡單算法模型。為此我們需要進行一下環(huán)境配置。小傅哥2臺機器已驗證沒問題,分別是 Mac Intel/M1,機器配置4核16G

1. Python 環(huán)境

    • 下載 Python:https://www.python.org/downloads/macos/ 3.6版本以上。一般 Mac 上會帶一個 2.x 版本的 Python,這個版本不夠用,需要升級下。配置 Python:

      • 安裝 Python 完成后,搜索地址

which python3

      • 打開 vi ~/.bash_profile 文件,寫入環(huán)境配置

alias python="/Library/Frameworks/Python.framework/Versions/3.10/bin/python3"

      • 生效配置

source .bash_profile

2. pip 指令安裝

    • 安裝 pip:以下需要用到 pip 指令,如果沒有需要安裝

curl https://bootstrap.pypa.io/get-pip.py | python3

3. Tensorflow

官網(wǎng)安裝指導(dǎo):https://www.tensorflow.org/install?hl=zh-cn

但這里有個問題,沒有說明 Mac M1 怎么安裝。如果按照這個代碼在 M1 的機器是安裝不上的。所以在小傅哥的一頓折騰后找到了對應(yīng)的按照指令。步驟如下;

    • 下載代碼【可選】:https://github.com/fuzhengwei/TensorFlow-Tutorial - 用于后續(xù)測試模型訓(xùn)練代碼配置 Visual Studio【你也可以是其他的】,打開以后需要安裝 python 插件以及配置登錄 github,這樣會更利于后續(xù)的操作。之后在 Visual Studio 的終端下,查看下 python -V 的版本,如果不是最新安裝的 3.x 版本,可以刷新下配置

source .bash_profile

    • 。Mac 電腦安裝 Tensorflow:

python3 -m pip install tensorflow-macos

    ?—— 安裝比較耗時,需要等待。如果失敗了就繼續(xù)執(zhí)行這條指令。

    • 安裝后測試:

python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

    —— 只要能輸出結(jié)果為即可。

四、跑個模型,驗證下

可能很多伙伴不知道什么是算法模型,簡單描述比如;為啥給你推薦你喜歡看的美女,為啥給你發(fā)送一個鍵盤購物券、為啥看你小子有錢就總給你推薦豪車。這都是根據(jù)你身上的標(biāo)簽進行模型訓(xùn)練的結(jié)果,在眾多的人群中找到目標(biāo)用戶。另外像我在騰訊做量化算法的小伙伴說,決策樹就是一種簡單的算法模型。

代碼詳見:https://github.com/fuzhengwei/TensorFlow-Tutorial

測試結(jié)果

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]]

    這是一個訓(xùn)練了500次的線性回歸預(yù)測模型;線性回歸可以預(yù)測房價、預(yù)測股票、預(yù)測天氣和評估經(jīng)濟。

這一篇文章先給我自己以及大家對 ChatGPT 開個門,讓對此感興趣的編程愛好者可以參與進去學(xué)習(xí),也為后續(xù)我們訓(xùn)練一個自己的GPT2對話聊天模型做準(zhǔn)備。

在我感覺 ChatGPT 的出現(xiàn)會打破某些平衡,對一些事項進行秩序重置。因此也讓更多的人獲得了大量的機會。如果你還沒有體驗到 ChatGPT 的能力,那么可以掃碼下面這個二維碼對它提問體驗。這是小傅哥注冊 ChatGPT API Keys 接口,并對接到下面程序中使用的。

 

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

作者小傅哥多年從事一線互聯(lián)網(wǎng)Java開發(fā),從19年開始編寫工作和學(xué)習(xí)歷程的技術(shù)匯總,旨在為大家提供一個較清晰詳細的核心技能學(xué)習(xí)文檔。如果本文能為您提供幫助,請給予支持(關(guān)注、點贊、分享)!