MiniMind用極低的成本訓練屬于自己的大模型

本篇文章主要講解,如何通過極低的成本訓練自己的大模型的方法和教程,通過MiniMind快速實現普通家用電腦的模型訓練。
日期:2025年3月5日
作者:任聰聰

一、MiniMind 介紹

基本信息

在這里插入圖片描述

在2小時,訓練出屬于自己的28M大模型。

開源地址:https://github.com/jingyaogong/minimind

特性說明:

1、在家用電腦中即可進行大模型的訓練。

2、訓練時間可在一天之內,讓你獲得低成本訓練出的大模型。

3、適用于性能不高的電腦本地運行及訓練迭代。

模型基礎認知

1.模型大小

諸如目前大家都會講解的,多少M 多少B 等等,這代表了模型涵蓋的參數數量。

2.模型速度

一般通過token/s測量,這代表了每秒輸出的字符數,也是api常見的計費形式。

3.模型消耗

一般分為三個部分即算力消耗、能源消耗、硬件成本。一般情況下模型訓練需要耗費大量的算力及電力。這是由GPU集群計算機決定的。

二、安裝MiniMind

安裝前的準備:

1、GPU:一臺入門級獨顯計算機RTX 3060 左右的顯卡。
2、RAM:16-64GB
3、硬盤:500GB及以上
4、python 3.9環境
5、pycharm 編輯器
6、git 版本管理工具
備注:配置低的也可以就是滿,且效果沒有配置高的電腦好。

安裝說明:

通過git進行clone進行下載,使用python的pip進行安裝所需依賴。

步驟一、克隆到本地

輸入指令:

git clone https://github.com/jingyaogong/minimind.git

在這里插入圖片描述
等待下載完畢…
在這里插入圖片描述

步驟二、使用PyCharm打開項目工程如下圖:

在這里插入圖片描述
進入到加載打開項目的目錄,如下圖:
在這里插入圖片描述
點擊“OK”進入到項目,并等待加載完畢。
在這里插入圖片描述
選擇python 3.9的版本,過低的版本可能會報錯,建議選擇更高或相同于本篇文章的版本,點擊“OK”進入到下一個環節。

步驟三、使用PIP 安裝我們所需的依賴

輸入命令:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

在這里插入圖片描述
直到安裝和完畢,如下圖:
在這里插入圖片描述

三、訓練模型

需要先準備好所需的數據集,而后通過訓練集和驗證集進行訓練,并同構測試集測試模型的性能。

階段分為:預訓練、監督微調、循環迭代

步驟一、準備好我們的訓練數據,如下:

這里我們使用自己的數據集,優先創建一個val目錄并在val目錄下,創建名為training_data.txt 的文件如下圖:
在這里插入圖片描述
編入內容,一行一條:
在這里插入圖片描述

步驟二、對數據進行預處理,如下優先安裝預處理依賴:

pip install transformers datasets

下載依賴完畢后,通過pycharm創建一個新項目如下圖:
在這里插入圖片描述
完成后進入項目,并把val數據集放入項目根目錄:
在這里插入圖片描述
創建我們的預處理腳本,在項目根目錄下:
在這里插入圖片描述
內容如下:

from transformers import BertTokenizer
from datasets import Dataset# 加載預訓練的BERT分詞器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')# 讀取文本文件
with open('./val/training_data.txt', 'r', encoding='utf-8') as file:lines = [line.strip() for line in file.readlines()]# 將文本轉換為分詞后的輸入
def fc_func(examples):return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=512)dataset = Dataset.from_dict({'text': lines})
tokenized_dataset = dataset.map(fc_func, batched=True)# 保存處理后的數據集
tokenized_dataset.save_to_disk('./go_ai_data')

步驟三、開始運行我們的數據預處理腳本:

運行成功后我們將得到如下的文件信息:
在這里插入圖片描述
這些數據便是我們用來進行預訓練的數據集,在根目錄下創建訓練腳本如下圖:
在這里插入圖片描述
腳本內容:

from transformers import BertTokenizer, BertForMaskedLM, Trainer, TrainingArguments
from datasets import Dataset# 加載預訓練的BERT分詞器和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForMaskedLM.from_pretrained('bert-base-chinese')# 讀取文本文件并處理數據
with open('./val/training_data.txt', 'r', encoding='utf-8') as file:lines = [line.strip() for line in file.readlines()]def preprocess_function(examples):return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=512)dataset = Dataset.from_dict({'text': lines})
tokenized_dataset = dataset.map(preprocess_function, batched=True)# 設置訓練參數
training_args = TrainingArguments(output_dir='./results',overwrite_output_dir=True,num_train_epochs=3,per_device_train_batch_size=8,save_steps=10_000,save_total_limit=2,
)# 創建Trainer實例并開始訓練
trainer = Trainer(model=model,args=training_args,train_dataset=tokenized_dataset,
)trainer.train()

修改并設置自己的輸出參數及輸入的預訓練數據,即可通過下方命令進行運行腳本執行訓練,等待一段時間后將會獲得自己的模型。
在這里插入圖片描述
訓練好的模型文件后綴為 .pth,通過自定義編寫python的模型加載和調用腳本即可生成遠端api進行外部的調用與本機的web ui的使用,此處不做詳細說明,運行模型詳細見章節四部分。

四、運行模型

一般情況,模型的運行使用api的形式調用,這里客戶端一般為web ui、app、pc等客戶端,其中客戶端只是用來呈現我們的模型運行效果和對話消息的,主要用于我們的日常生活辦公。

步驟一、下載我們所需的運行模型項目

命令輸入:

git clone https://huggingface.co/jingyaogong/MiniMind2

在這里插入圖片描述
完成,如下圖:
在這里插入圖片描述

步驟二、通過pycharm打開項目:

在這里插入圖片描述
安裝所需依賴 命令 pip install streamli
在這里插入圖片描述

步驟三、運行我們的web ui對話框

在pycharm的 --> minimind <—項目終端目錄下,打卡我們的scripts目錄如下圖:

cd scripts

在這里插入圖片描述

并執行運行web ui的命令:

streamlit run web_demo.py

運行后如下,需要輸入自己的電子郵箱:

在這里插入圖片描述
輸入完畢后按下“Enter” 即可運行,彈出防火墻信息:
在這里插入圖片描述
此處點擊允許即可,回到終端即可看到web ui 的地址:
在這里插入圖片描述
大功告成,ui已經正常運行.。
在這里插入圖片描述

五、性能體驗與迭代說明

實際效果

在這里插入圖片描述
可以看到速度非常快!

迭代說明

形式說明通過模型的迭代,可以讓模型的數據量及信息量,不斷的增長和擴大所覆蓋的參數信息,以此對模型的能力進行更新。

END:閉環,不斷收集新的數據,篩選數據,不斷迭代模型,使得其更加完善和智慧。

常見問題:

1、PIP提示更新:

在這里插入圖片描述
解決辦法:
在這里插入圖片描述
命令 python.exe -m pip install --upgrade pip 進行更新即可重試。

2、初次進入到項目提示報錯情況

具體報文內容如下:

pcFailed to Create Virtual Environment
Executed command:
C: Users/admin/ApDatalLocalyPrograms/Ppython/python39/python.exe cyProgram files/letrainsPycharm 2024.1/plugins/python,hepershitualenv-20.24.5 pyzEildeveloplaiminimindven
Error occurred:
AttributeError: module 'virtualenv.create.via global ref.buitin.cpython.mac os' has no attribute 'CPython2macOsframework'
Command output:
Traceback(most recent call last)File "c: \Users ladminlAppDatalLocal!Programs Python\Python39\lib\runpy. py", line 197, in _run module_as_mainreturn rum code(code, main globals, oneFile "c: \UsersladminlAppDatalLocal\ProgramslPython\Python39\liblrunpy.py", line 87, in ru codeexec(code, rum globals)File C:\Program FilesWletBrains\Pycharn2024,1lpluginslpvthonlhelperslvirtualenv-20.24.5.pyzl main py ,line 163,in<module>File "C:\Program FilesWJetBrains\PyCharms\virtualenv-20.24.5.pyz\ main .py", line 159, in run00941File"C:\ProgramFilesiletBrainslPvchars\virtualenv-20.24.5.pyz\virtualenvl main .py", line 18, in run“C:\ProgramFileFileslTetBrains\Pvchars\virtualenv-20.24.5.pyz\virtualenv\run\  init..py", line 3l, in cli_runFile"C:\Programinit .py ,line 49, in session via cliEileslTetBrainslPycha1111g119111svirtualenv-20.24.5.pvglvirtualenvirunlFile"C:\Program Files\JetBrains\Pycharmslvirtualenv-20.24.5.pyz\virtualenvlrunl  init__.py", line 82, in build_parser1\p1ug111sFile"C:\ProgramTetBrains\Pvchar1-20.24.5.pyz\virtualenv\run\plugin\creators.py",line 24,ininitFilesw“C:1PrOgIEi1e1-20.24.5.pyz\virtualenv\run\plugin\creators.py", line 31, in for_interpreter“C,5.pyz\virtualenv\run\pluginlbase.py", line 45, in options\Progr2File"C:Prograilhelperslvirtualeny-20.24.5.pyzlvirtualenv(runlpluginlbase.py", line 24, in entry points forFile\Prog120.24.5.pyzlvirtualenv\runlpluginlbase.py", line 24, in<genexpr>~C.File“C:\Isers\import1ih\metadata.py .line 79.in loadreturn functools.rattrs, moduleAttributeRrror: modulevirtualenv.create.via global ref.builtin.cpython.mac os’has no attributeCPython2macOsFramework
OK
Cancel

直接點擊OK即可進入到項目目錄,可以忽略

3、無法安裝運行web ui的必要依賴 streamli 報錯如下時:

在這里插入圖片描述
通過加入鏡像源進行再次下載即可:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit

在這里插入圖片描述

4、打開鏈接后報錯缺少依賴情況:

在這里插入圖片描述
這個報錯由于我們少安裝依賴導致,只需要通過pip進行安裝提示中的對應依賴 tansformers即可,具體命令如下:

pip install transformers

在這里插入圖片描述
等待安裝完畢即可解決該報錯問題。

5、報錯模型項目問題如下圖:

在這里插入圖片描述
這是由于我們git clone時沒有將模型項目放入 minimind 目錄的根目錄導致,只需要轉移目錄即可。
在這里插入圖片描述

6、預處理數據時報錯:

在這里插入圖片描述
這是由于缺少必要依賴導致,我們只需要下載特定提示的依賴即可。

pip install torch torchvision torchaudio
pip install tensorflow
pip install flax

等待下載完畢即可重新運行。

7、訓練到一半突然報錯停止的情況

在這里插入圖片描述
更新檢查依賴兼容性或腳本運行的python版本,建議使用最新的版本號。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72555.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

區塊鏈中的數字簽名:安全性與可信度的核心

數字簽名是區塊鏈技術的信任基石&#xff0c;它像區塊鏈世界的身份證和防偽標簽&#xff0c;確保每一筆交易的真實性、完整性和不可抵賴性。本文會用通俗的語言&#xff0c;帶你徹底搞懂區塊鏈中的數字簽名&#xff01; 文章目錄 1. 數字簽名是什么&#xff1f;從現實世界到區塊…

LLM自動金融量化-CFGPT

LLM自動金融量化-CFGPT 簡介 CFGPT是一個開源的語言模型,首先通過在收集和清理的中國金融文本數據(CFData-pt)上進行繼續預訓練,包括金融領域特定數據(公告、金融文章、金融考試、金融新聞、金融研究論文)和通用數據(維基百科),然后使用知識密集的指導調整數據(CFD…

解決Docker拉取鏡像超時錯誤,docker: Error response from daemon:

當使用docker pull或docker run時遇到net/http: request canceled while waiting for connection的報錯&#xff0c;說明Docker客戶端在訪問Docker Hub時出現網絡連接問題。可以不用掛加速器也能解決&#xff0c;linux不好用clash。以下是經過驗證的方法&#xff08;感謝軒轅鏡…

03.05 QT事件

實現一個繪圖工具&#xff0c;具備以下功能&#xff1a; 鼠標繪制線條。 實時調整線條顏色和粗細。 橡皮擦功能&#xff0c;覆蓋繪制內容。 撤銷功能&#xff0c;ctrl z 快捷鍵撤銷最后一筆 程序代碼&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET…

【文生圖】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 帶圖片的詳細功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…

go語言因為前端跨域導致無法訪問到后端解決方案

前端服務8080訪問后端8081這端口顯示跨域了 ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:116:14) at Axios.request (webpack-internal:///./node_modules/axios/lib/core/A…

hive之lag函數

從博客上發現兩個面試題&#xff0c;其中有個用到了lag函數。整理學習 LAG 函數是 Hive 中常用的窗口函數&#xff0c;用于訪問同一分區內 前一行&#xff08;或前 N 行&#xff09;的數據。它在分析時間序列數據、計算相鄰記錄差異等場景中非常有用。 一、語法 LAG(column,…

【軟考-架構】1.3、磁盤-輸入輸出技術-總線

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ?資料&文章更新? 文章目錄 存儲系統&#x1f4af;考試真題輸入輸出技術&#x1f4af;考試真題第一題第二題 存儲系統 尋道時間是指磁頭移動到磁道所需的時間&#xff1b; 等待時間為等待讀寫的扇區…

盛鉑科技PDROUxxxx系列鎖相介質振蕩器(點頻源):高精度信號源

——超低相位噪聲、寬頻覆蓋、靈活集成&#xff0c;賦能下一代射頻系統 核心價值&#xff1a;以突破性技術解決行業痛點 在雷達、衛星通信、高速數據采集等高端射頻系統中&#xff0c;信號源的相位噪聲、頻率穩定度及集成靈活性直接決定系統性能上限。盛鉑科技PDROUxxxx系列鎖…

【安裝】SQL Server 2005 安裝及安裝包

安裝包 SQLEXPR.EXE&#xff1a;SQL Server 服務SQLServer2005_SSMSEE.msi&#xff1a;數據庫管理工具&#xff0c;可以創建數據庫&#xff0c;執行腳本等。SQLServer2005_SSMSEE_x64.msi&#xff1a;同上。這個是 64 位操作系統。 下載地址 https://www.microsoft.com/zh-c…

【文獻閱讀】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

這篇文章發表于2024年4月 摘要 大語言模型&#xff08;LLMs&#xff09;的快速發展推動了多個領域的變革&#xff0c;重塑了通用人工智能的格局。然而&#xff0c;這些模型不斷增長的計算和內存需求帶來了巨大挑戰&#xff0c;阻礙了學術研究和實際應用。為解決這些問題&…

如何在Github上面上傳本地文件夾

前言 直接在GitHub網址上面上傳文件夾是不行的&#xff0c;需要一層一層創建然后上傳&#xff0c;而且文件的大小也有限制&#xff0c;使用Git進行上傳更加方便和實用 1.下載和安裝Git Git - Downloads 傻瓜式安裝即可 2.獲取密鑰對 打開自己的Github&#xff0c;創建SSH密鑰&…

kafka-web管理工具cmak

一. 背景&#xff1a; 日常運維工作中&#xff0c;采用cli的方式進行kafka集群的管理&#xff0c;還是比較繁瑣的(指令復雜&#xff1f;)。為方便管理&#xff0c;可以選擇一些開源的webui工具。 推薦使用cmak。 二. 關于cmak&#xff1a; cmak是 Yahoo 貢獻的一款強大的 Apac…

python之爬蟲入門實例

鏈家二手房數據抓取與Excel存儲 目錄 開發環境準備爬蟲流程分析核心代碼實現關鍵命令詳解進階優化方案注意事項與擴展 一、開發環境準備 1.1 必要組件安裝 # 安裝核心庫 pip install requests beautifulsoup4 openpyxl pandas# 各庫作用說明&#xff1a; - requests&#x…

Redis的CPU高達90%時如何處理

Redis的CPU高達90%時如何處理 1. 分析和優化2. 擴展和分片3. 緩存策略調整4. 資源提升5. 負載均衡6. 進程調整7. 代碼層面改進8. 其他 當Redis的CPU使用率高達90%時&#xff0c;說明Redis服務器可能處于過載狀態&#xff0c;這可能會導致響應時間變長甚至服務中斷。要處理這種…

Faster R-CNN 算法詳解

Faster R-CNN 是在 R-CNN 和 Fast R-CNN 的基礎上進一步優化的一種目標檢測算法。它通過引入 Region Proposal Network (RPN) 將區域建議和目標檢測整合到一個統一的框架中,大幅提高了檢測效率。以下是對 Faster R-CNN 算法的詳細解析: 1. 概述 Faster R-CNN 主要由三部分組…

數據結構:八大排序(冒泡,堆,插入,選擇,希爾,快排,歸并,計數)詳解

目錄 一.冒泡排序 二.堆排序 三.插入排序 四.選擇排序 五.希爾排序 六.快速排序 1.Lomuto版本&#xff08;前后指針法&#xff09; 2.Lomuto版本的非遞歸算法 3.hoare版本&#xff08;左右指針法&#xff09; 4.挖坑法找分界值&#xff1a; 七.歸并排序 八.計數排序…

【商城實戰(2)】商城架構設計:從底層邏輯到技術實現

【商城實戰】專欄重磅來襲&#xff01;這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建&#xff0c;運用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用戶、商品、訂單等核心模塊開發&#xff0c;再到性能優化、安全加固、多端適配&#xf…

Mac mini M4安裝nvm 和node

先要安裝Homebrew&#xff08;如果尚未安裝&#xff09;。在終端中輸入以下命令&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 根據提示操作完成Homebrew的安裝。 安裝nvm。在終端中輸入以下命令&#xf…

FOC無感開環啟動算法

FOC無感開環啟動排除掉高頻注入這種直接識別當前轉子dq軸的位置直接閉環啟動&#xff0c;大部分的常規啟動方式就是三段式啟動&#xff0c;對齊-強拖-觀測器介入-觀測器誤差穩定后平滑過渡-閉環。 這里就只寫出I/F&#xff08;V/F&#xff09;啟動的角度輸出的代碼&#xff0c…