搭個ChatGPT演算法模型,離Java程式設計師有多遠?

小傅哥發表於2023-02-13

作者:小傅哥

部落格:https://bugstack.cn

沉澱、分享、成長,讓自己和他人都能有所收穫!

最近 ChatGPT 很火,火到了各行各業。記得去年更多的還是碼農最新體驗後拿它搜程式碼,現在各行各業都進來體驗,問它咋理財、怎麼寫報告和給小孩起名。? 也因此讓小傅哥在頭條的一篇關於 ChatGPT 的文章都有了26萬的閱讀。

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

除了大家都想體驗一下這款智慧的 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/yangjianxin1/GPT2-chitchat

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

不知道在做的兄弟們??你們激動不,看到這我是挺開心?。這不是我想要的 demo 模型嗎。把它給訓練出來,也就能滿足我對 ChatGPT的深入瞭解了,並且基於我想做的任何類資料訓練得到一個個小模型部署,也是可以幫助我來完成一些事情的。如;你把公司的一些文件資料進行訓練,得到一份可以搜尋檢索就能獲取相關資料的 ChatGPT 不挺爽嗎?

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

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

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

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

好傢伙,跑起程式碼才知道。這貨上來就下了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天,才測試出可以使用的模型訓練環境。之後開始跑第一個模型,線性迴歸。再瞭解什麼是線性迴歸。

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

這是 TensorFlow 的官網,用於建立生產級機器學習模型。也就是說想要完成一個簡單的 ChatGPT 得從這開始。—— 死鬼,不要在想了,你總是得從 HelloWorld 開始。

但在檢索的過程中,我又找到了一個名叫 huggingface.co 的網站;Hugging face 起初是一家總部位於紐約的聊天機器人初創服務商,他們本來打算創業做聊天機器人,然後在 Github上開源了一個 Transformers 庫。雖然聊天機器人業務沒搞起來,但是他們的這個庫在機器學習社群迅速大火起來。目前已經共享了超100,000個預訓練模型,10,000個資料集,變成了機器學習界的 Github。

在 Hugging face 社群中可以找到相關的模型訓練資源以及提供好的模型使用介面,比如像中文分詞、聊天對話、圖片分析也都有,當然也包括一些公司訓練出來的 gpt-2 模型。

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

在 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 模型,總得要從頭開始。

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

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

1. Python 環境

  • 下載 Python:https://www.python.org/downloads/macos/ 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

2. pip 指令安裝

  • 安裝 pip:以下需要用到 pip 指令,如果沒有需要安裝 curl https://bootstrap.pypa.io/get-pip.py | python3

3. Tensorflow

官網安裝指導:https://www.tensorflow.org/install?hl=zh-cn

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

但這裡有個問題,沒有說明 Mac M1 怎麼安裝。如果按照這個程式碼在 M1 的機器是安裝不上的。所以在小傅哥的一頓折騰後找到了對應的按照指令。步驟如下;

  • 下載程式碼【可選】:https://github.com/fuzhengwei/TensorFlow-Tutorial - 用於後續測試模型訓練程式碼
  • 配置 Visual Studio【你也可以是其他的】,開啟以後需要安裝 python 外掛以及配置登入 github,這樣會更利於後續的操作。之後在 Visual Studio 的終端下,檢視下 python -V 的版本,如果不是最新安裝的 3.x 版本,可以重新整理下配置 source .bash_profile
  • Mac 電腦安裝 Tensorflow:python3 -m pip install tensorflow-macos —— 安裝比較耗時,需要等待。如果失敗了就繼續執行這條指令。
搭個ChatGPT演算法模型,離Java程式設計師有多遠?
  • 安裝後測試:python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))" —— 只要能輸出結果為即可。

四、跑個模型,驗證下

可能很多夥伴不知道什麼是演算法模型,簡單描述比如;為啥給你推薦你喜歡看的美女,為啥給你傳送一個鍵盤購物券、為啥看你小子有錢就總給你推薦豪車。這都是根據你身上的標籤進行模型訓練的結果,在眾多的人群中找到目標使用者。另外像我在騰訊做量化演算法的小夥伴說,決策樹就是一種簡單的演算法模型。

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

搭個ChatGPT演算法模型,離Java程式設計師有多遠?

測試結果

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]]
搭個ChatGPT演算法模型,離Java程式設計師有多遠?
  • 這是一個訓練了500次的線性迴歸預測模型;
  • 線性迴歸可以預測房價、預測股票、預測天氣和評估經濟。

這一篇文章先給我自己以及大家對 ChatGPT 開個門,讓對此感興趣的程式設計愛好者可以參與進去學習。在我感覺 ChatGPT 的出現會打破某些平衡,對一些事項進行秩序重置。因此也讓更多的人獲得了大量的機會。如果你還沒有體驗到 ChatGPT 的能力,那麼可以點選連結對它提問體驗。這是小傅哥註冊 ChatGPT API Keys 介面,並對接到下面程式中使用的。

相關文章