自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

企業(yè)搶著要的AI方案:DeepSeek-R1微調(diào)實(shí)戰(zhàn),3天構(gòu)建行業(yè)內(nèi)容生成器

人工智能
本文通過詳細(xì)的步驟講解了大模型微調(diào)的基礎(chǔ)操作,使用LLaMA-Factory框架進(jìn)行模型訓(xùn)練和部署,并通過FastAPI實(shí)現(xiàn)了本地化部署服務(wù)。這些知識(shí)為想要開展AI微調(diào)項(xiàng)目的朋友提供了寶貴的實(shí)踐經(jīng)驗(yàn)。

1. 前言

在如今快速發(fā)展的AI技術(shù)領(lǐng)域,越來越多的企業(yè)正在將AI應(yīng)用于各個(gè)場(chǎng)景。然而,盡管大模型(如GPT、DeepSpeek等)在多個(gè)任務(wù)上已取得顯著進(jìn)展,但是普通的大模型在面對(duì)特定行業(yè)或任務(wù)時(shí),往往會(huì)出現(xiàn)一個(gè)問題——AI幻覺。所謂AI幻覺,是指模型生成的內(nèi)容不符合實(shí)際需求,甚至包含錯(cuò)誤或無關(guān)的信息,這對(duì)于一些行業(yè)來說,可能帶來不可接受的風(fēng)險(xiǎn),尤其是在醫(yī)療、法律、金融等領(lǐng)域。

對(duì)于這些行業(yè)的企業(yè)而言,精準(zhǔn)、高效地輸出行業(yè)特定內(nèi)容是他們對(duì)AI的核心需求。企業(yè)希望AI能夠處理行業(yè)術(shù)語、應(yīng)對(duì)特殊情境,并且確保內(nèi)容的準(zhǔn)確性。然而,單純依賴大模型進(jìn)行推理,往往無法達(dá)到這樣的標(biāo)準(zhǔn),因?yàn)榇竽P偷挠?xùn)練是基于通用數(shù)據(jù)集,這些數(shù)據(jù)集通常并不包含行業(yè)領(lǐng)域的深度知識(shí)。因此,企業(yè)通常需要一個(gè)更加定制化、精細(xì)化的模型,而這正是大模型微調(diào)技術(shù)能夠提供的解決方案。

大模型微調(diào)技術(shù)通過對(duì)預(yù)訓(xùn)練的大模型進(jìn)行進(jìn)一步訓(xùn)練,能夠根據(jù)特定領(lǐng)域的需求進(jìn)行優(yōu)化。通過提供具有代表性的領(lǐng)域數(shù)據(jù),尤其是精心標(biāo)注的行業(yè)特定數(shù)據(jù),微調(diào)后的模型能夠?qū)W習(xí)這些領(lǐng)域的專有知識(shí),從而有效避免AI幻覺的發(fā)生,并且提供更加準(zhǔn)確、有價(jià)值的輸出。

本文將從零開始教你一步步入門AI大模型微調(diào)技術(shù)(基于DeepSpeek R1大模型) ,最終實(shí)現(xiàn)基于私有化部署的微調(diào)大模型AI會(huì)話系統(tǒng)。感興趣的朋友可以繼續(xù)往下看看。

2.大模型微調(diào)概念簡(jiǎn)述

大模型微調(diào)是指在已有的預(yù)訓(xùn)練大模型基礎(chǔ)上,通過特定任務(wù)或領(lǐng)域數(shù)據(jù)進(jìn)行進(jìn)一步訓(xùn)練,使模型能夠更精準(zhǔn)地處理特定任務(wù)。與傳統(tǒng)的訓(xùn)練方法不同,微調(diào)充分利用已有的大模型,減少對(duì)大量數(shù)據(jù)的依賴,同時(shí)通過對(duì)模型進(jìn)行小范圍的調(diào)整,使其適應(yīng)新的任務(wù)。大模型微調(diào)技術(shù)在多個(gè)領(lǐng)域中得到了廣泛應(yīng)用,如文本生成、分類任務(wù)、問答系統(tǒng)等。

微調(diào)的核心目標(biāo)是使大模型根據(jù)特定任務(wù)需求進(jìn)行優(yōu)化,提升其在特定應(yīng)用場(chǎng)景中的表現(xiàn)。為實(shí)現(xiàn)這一目標(biāo),微調(diào)方法主要包括以下兩種分類方式:

  1. 按學(xué)習(xí)范式分類:根據(jù)模型學(xué)習(xí)方式的不同,微調(diào)方法可分為有監(jiān)督微調(diào)、無監(jiān)督微調(diào)和半監(jiān)督微調(diào)等類型。
  2. 按參數(shù)更新范圍分類:根據(jù)在微調(diào)過程中對(duì)模型參數(shù)更新范圍的不同,方法可分為全量微調(diào)和部分微調(diào)等類型。

2.1. 按學(xué)習(xí)范式分類

有監(jiān)督微調(diào)(Supervised Fine-Tuning,SFT)

有監(jiān)督微調(diào)是最常見的微調(diào)方式,適用于任務(wù)明確且具有標(biāo)注數(shù)據(jù)的情況。通過使用人工標(biāo)注的高質(zhì)量數(shù)據(jù)對(duì),模型能夠?qū)W習(xí)特定任務(wù)所需的知識(shí),從而在指定任務(wù)上提供準(zhǔn)確的輸出。

SFT示例:

training_data = [
    {"input": "問題", "output": "標(biāo)準(zhǔn)答案"},
    # 人工標(biāo)注的高質(zhì)量數(shù)據(jù)對(duì)
]

在有監(jiān)督微調(diào)中,模型的目標(biāo)是根據(jù)輸入的“問題”生成一個(gè)“標(biāo)準(zhǔn)答案”。這個(gè)過程依賴于人工標(biāo)注的數(shù)據(jù),使模型能夠更好地理解并生成符合實(shí)際需求的結(jié)果,有監(jiān)督微調(diào)適用于需要特定答案的任務(wù),如情感分析、文本分類、機(jī)器翻譯、問答系統(tǒng)等。

無監(jiān)督微調(diào)(Unsupervised Fine-Tuning)

無監(jiān)督微調(diào)是一種不依賴人工標(biāo)注的微調(diào)方式,主要利用大量未標(biāo)注的文本數(shù)據(jù)進(jìn)行訓(xùn)練。通過無監(jiān)督學(xué)習(xí),模型能夠自動(dòng)從原始數(shù)據(jù)中提取知識(shí),尤其在沒有標(biāo)注數(shù)據(jù)或標(biāo)注數(shù)據(jù)獲取困難的情況下尤為有用。

無監(jiān)督微調(diào)示例:

training_data = [
    "大量未標(biāo)注文本...",
    # 無需人工標(biāo)注的原始文本
]

這種方式通常用于模型的預(yù)訓(xùn)練過程,模型通過對(duì)大規(guī)模文本進(jìn)行訓(xùn)練,學(xué)習(xí)通用的語言表示能力。無監(jiān)督微調(diào)可以增強(qiáng)模型的語法和語義理解能力,提升其在不同任務(wù)中的表現(xiàn),無監(jiān)督微調(diào)適用于自然語言建模、生成任務(wù)等場(chǎng)景,幫助模型理解文本的結(jié)構(gòu)和語義關(guān)系。

半監(jiān)督微調(diào)(Semi-Supervised Fine-Tuning)

半監(jiān)督微調(diào)結(jié)合了有監(jiān)督和無監(jiān)督學(xué)習(xí)的優(yōu)點(diǎn),利用標(biāo)注數(shù)據(jù)和未標(biāo)注數(shù)據(jù)來訓(xùn)練模型。常用的方法包括將未標(biāo)注數(shù)據(jù)通過某種方式生成偽標(biāo)簽,或利用自監(jiān)督學(xué)習(xí)方法,使模型在標(biāo)注數(shù)據(jù)較少時(shí)也能進(jìn)行有效訓(xùn)練。

半監(jiān)督微調(diào)示例:

training_data = [
    {"input": "問題", "output": "標(biāo)準(zhǔn)答案"},  # 高質(zhì)量人工標(biāo)注數(shù)據(jù)
    "大量未標(biāo)注文本...",  # 用于填充的未標(biāo)注數(shù)據(jù)
]

半監(jiān)督微調(diào)適用于標(biāo)注數(shù)據(jù)稀缺的場(chǎng)景,能夠結(jié)合少量標(biāo)注數(shù)據(jù)和大量未標(biāo)注數(shù)據(jù),進(jìn)一步提升模型表現(xiàn),這種方法在實(shí)際應(yīng)用中尤其適用于標(biāo)簽獲取困難或成本高昂的領(lǐng)域,如醫(yī)療、法律等行業(yè)。

2.2. 按參數(shù)更新范圍分類

全量微調(diào)(Full Fine-Tuning)

全量微調(diào)是指在對(duì)預(yù)訓(xùn)練模型進(jìn)行微調(diào)時(shí),更新模型的所有參數(shù)。通過對(duì)特定領(lǐng)域數(shù)據(jù)的訓(xùn)練,模型的所有層都會(huì)根據(jù)新任務(wù)的數(shù)據(jù)進(jìn)行調(diào)整。全量微調(diào)能夠在模型中深度定制領(lǐng)域知識(shí),最大程度地提升模型在目標(biāo)任務(wù)中的效果。

全量微調(diào)的特點(diǎn):

  • 更新模型的所有參數(shù)。
  • 適用于數(shù)據(jù)量較大且任務(wù)復(fù)雜的場(chǎng)景。
  • 訓(xùn)練時(shí)間較長(zhǎng),需要大量計(jì)算資源。

全量微調(diào)適用于大規(guī)模數(shù)據(jù)集且任務(wù)復(fù)雜的場(chǎng)景,如文本生成、問答系統(tǒng)、情感分析等。它能夠充分利用預(yù)訓(xùn)練模型進(jìn)行深度學(xué)習(xí),提供最優(yōu)效果。

部分微調(diào)(Low-Rank Adaptation,LoRA)

部分微調(diào)是一種通過對(duì)預(yù)訓(xùn)練模型的部分參數(shù)進(jìn)行微調(diào)的技術(shù)。LoRA的目標(biāo)是減少微調(diào)過程中需要更新的參數(shù)數(shù)量,從而顯著降低計(jì)算開銷。通過低秩矩陣的方式,LoRA僅更新模型中的某些參數(shù)(如特定層的權(quán)重),使微調(diào)過程更加高效,特別適合計(jì)算資源有限的場(chǎng)景。

LoRA的特點(diǎn):

  • 只調(diào)整部分參數(shù)(如低秩矩陣分解)。
  • 降低計(jì)算和內(nèi)存開銷。
  • 適合快速微調(diào),尤其在資源受限時(shí)。

LoRA非常適合在資源有限的情況下快速調(diào)整模型,尤其在需要快速部署且不需要全部模型調(diào)整的場(chǎng)景中非常有用。

在大模型微調(diào)過程中,有監(jiān)督微調(diào)(SFT)與LoRA(Low-Rank Adaptation)相結(jié)合,能夠充分發(fā)揮各自優(yōu)勢(shì),提升模型在特定任務(wù)上的表現(xiàn)。具體而言,SFT通過在人工標(biāo)注的數(shù)據(jù)上對(duì)模型進(jìn)行微調(diào),使其適應(yīng)特定任務(wù);而LoRA則在凍結(jié)預(yù)訓(xùn)練模型權(quán)重的基礎(chǔ)上,引入低秩矩陣進(jìn)行微調(diào),減少計(jì)算開銷并提高效率。將兩者結(jié)合,可以在保證性能的同時(shí),降低資源消耗。在接下來的部分,我們將詳細(xì)探討如何將SFT與LoRA相結(jié)合,進(jìn)行高效的大模型微調(diào),并展示其在實(shí)際應(yīng)用中的效果。

2.3. 大模型微調(diào)框架簡(jiǎn)介

在大模型微調(diào)領(lǐng)域,存在多種框架,每個(gè)框架都有其獨(dú)特的優(yōu)勢(shì)和局限性。以下是幾種常見的大模型微調(diào)框架的介紹與比較:

1. Hugging Face Transformers

Hugging Face Transformers(https://huggingface.co/transformers/) 是目前最為流行的自然語言處理(NLP)框架之一,提供了豐富的預(yù)訓(xùn)練模型和易于使用的 API,廣泛應(yīng)用于各類 NLP 任務(wù),如文本分類、問答系統(tǒng)等。它的特點(diǎn)是:

  • 預(yù)訓(xùn)練模型豐富,支持多種模型,如 BERT、GPT、T5 等。
  • 提供了高層次的 API,使得微調(diào)過程簡(jiǎn)單易懂。
  • 擁有龐大的用戶社區(qū)和文檔支持。

圖片

盡管 Hugging Face Transformers 在許多常見任務(wù)中表現(xiàn)優(yōu)秀,但在超大規(guī)模模型的微調(diào)和訓(xùn)練中,可能會(huì)面臨性能瓶頸和資源消耗過大的問題。

2. DeepSpeed

DeepSpeed(https://www.deepspeed.ai/ )是微軟開發(fā)的高效深度學(xué)習(xí)訓(xùn)練框架,專注于優(yōu)化大規(guī)模模型訓(xùn)練的性能。其主要特點(diǎn)包括:

  • ZeRO優(yōu)化,顯著減少內(nèi)存占用,提高分布式訓(xùn)練的效率。
  • 支持 混合精度訓(xùn)練,加速訓(xùn)練過程并減少內(nèi)存需求。
  • 提供分布式訓(xùn)練功能,支持大規(guī)模模型的訓(xùn)練。

圖片

DeepSpeed適合大規(guī)模模型的訓(xùn)練,但使用門檻較高,需要深入理解框架的底層實(shí)現(xiàn)。

3. Fairseq

Fairseq (https://fairseq.readthedocs.io/)是 Facebook AI Research 開發(fā)的一個(gè)高效訓(xùn)練工具,支持多種模型架構(gòu)的訓(xùn)練,如 Transformer 和 BART。其特點(diǎn)為:

  • 高性能和靈活性,支持多種任務(wù),如機(jī)器翻譯、文本生成等。
  • 容易擴(kuò)展,支持用戶自定義新的算法和模型。

圖片

Fairseq 對(duì)于需要靈活定制和擴(kuò)展的場(chǎng)景非常適合,但其文檔和社區(qū)支持相對(duì)有限。

4. LLaMA-Factory(本文使用的框架)

LLaMA-Factory (https://llamafactory.readthedocs.io/)是由國(guó)內(nèi)北航開源的低代碼大模型訓(xùn)練框架,旨在簡(jiǎn)化大模型微調(diào)過程,尤其是在支持低代碼甚至零代碼操作的基礎(chǔ)上,提供極大的便利。其主要特點(diǎn)包括:

  • 零代碼操作:通過 Web UI(LlamaBoard),用戶無需編寫代碼即可完成大規(guī)模模型的微調(diào)。
  • 高效的訓(xùn)練方法:結(jié)合 LoRA(低秩適配)和 QLoRA 等先進(jìn)技術(shù),在保證模型性能的同時(shí),顯著降低了計(jì)算資源消耗。相較于其他框架,LLaMA-Factory 提供了更高的微調(diào)效率。
  • 廣泛的模型支持:支持 LLaMA、Mistral、Qwen 等多種流行的預(yù)訓(xùn)練模型,適應(yīng)性強(qiáng)。
  • 低成本和高性能:通過量化技術(shù)和高效算法,LLaMA-Factory 可降低模型訓(xùn)練成本,同時(shí)加速訓(xùn)練過程。

圖片

LLaMA-Factory 適合企業(yè)和研究人員需要快速、高效地微調(diào)大模型并在特定任務(wù)中應(yīng)用時(shí),尤其在低資源條件下表現(xiàn)突出。

每個(gè)大模型微調(diào)框架都有其適用場(chǎng)景和優(yōu)勢(shì)。Hugging Face Transformers 以其豐富的模型和簡(jiǎn)便的 API 受到廣泛歡迎,適合大多數(shù) NLP 任務(wù)。DeepSpeed 在處理超大規(guī)模模型時(shí)表現(xiàn)優(yōu)異,適合對(duì)性能要求極高的訓(xùn)練任務(wù)。Fairseq 則適合需要靈活定制和高性能訓(xùn)練的應(yīng)用場(chǎng)景。而 LLaMA-Factory 則在提高訓(xùn)練效率、降低成本和簡(jiǎn)化操作方面展現(xiàn)出巨大的優(yōu)勢(shì),尤其在零代碼操作和多種微調(diào)技術(shù)的結(jié)合下,使得大模型的微調(diào)過程更加輕松和高效。對(duì)于希望快速實(shí)現(xiàn)大模型微調(diào)的用戶,LLaMA-Factory 無疑是一個(gè)值得優(yōu)先考慮的選擇。

3. DeepSpeek R1大模型微調(diào)實(shí)戰(zhàn)

3.1.LLaMA-Factory基礎(chǔ)環(huán)境安裝

1.安裝 Anaconda(Python 環(huán)境管理工具)

(1) 下載 Anaconda:

  • 訪問 Anaconda 官網(wǎng) 下載適用于 Windows 系統(tǒng)的安裝包,記得選擇 Python 3.10 版本。
  • 安裝包約 800MB,耐心等待下載完成。

(2)安裝 Anaconda(已經(jīng)安裝了Anaconda就跳過這步):

  • 雙擊下載的安裝程序,按照提示進(jìn)行安裝。
  • 安裝過程中,建議勾選“Add Anaconda to PATH”選項(xiàng),這樣方便在命令行中使用,如果你忘記勾了也沒關(guān)系,后續(xù)自行配置一下環(huán)境變量就行了(環(huán)境變量->系統(tǒng)變量->Path中新增下圖內(nèi)容):

圖片

   安裝完成后,點(diǎn)擊“Finish”結(jié)束安裝。

2.安裝 Git(已經(jīng)安裝了git就跳過這步):

(1)下載 Git:

  • 訪問 Git 官網(wǎng) 下載適用于 Windows 的安裝包。

(2)安裝 Git:

  • 雙擊安裝程序,并按照默認(rèn)選項(xiàng)進(jìn)行安裝。
  • 安裝過程中大部分選項(xiàng)可以保持默認(rèn),完成安裝后即可使用 Git。

3.創(chuàng)建項(xiàng)目環(huán)境

打開Anaconda Prompt(從Windows開始菜單找到),執(zhí)行:

# 創(chuàng)建新的環(huán)境
conda create -n llama pythnotallow=3.10
#運(yùn)行 conda init 初始化
conda init
#這個(gè)命令會(huì)修改你的 shell 配置文件(例如 .bashrc、.zshrc 等),以便能夠正確使用 conda 命令。
#conda init 執(zhí)行后,需要重新啟動(dòng)命令提示符。關(guān)閉當(dāng)前的命令提示符窗口,然后重新打開一個(gè)新的命令提示符窗口。
# 激活環(huán)境
conda activate llama

4.安裝PyTorch(AI框架)

在同一個(gè)命令窗口繼續(xù)執(zhí)行(llma環(huán)境):

# 安裝PyTorch(支持CUDA的版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu11

圖片

5.安裝LLaMA-Factory

找到一個(gè)目錄存放LLaMA-Factory項(xiàng)目,打開git命令窗口執(zhí)行:

# 克隆項(xiàng)目
git clone https://github.com/hiyouga/LLaMA-Factory.git

下載完成后使用pycharm打開LLaMA-Factory工程

圖片

安裝項(xiàng)目依賴

安裝的時(shí)候確保你的環(huán)境是llma(也可以在外部命令窗口執(zhí)行,這個(gè)看你自己,核心是保證依賴下載到llma環(huán)境):

pip install -e ".[torch,metrics]"

圖片

驗(yàn)證安裝

# 測(cè)試是否安裝成功
llamafactory-cli version

圖片

啟動(dòng) LLama-Factory 的可視化微調(diào)界面

llamafactory-cli webui

圖片

打開http://localhost:7860/ ,你會(huì)看到以下界面:

圖片

3.1大模型下載

打開HuggingFace 官網(wǎng)(https://huggingface.co),我這里還是以deepspeek為例(1.5b)來演示,這幾天qwq也很火,感興趣的朋友也可以試試,不過要預(yù)先明確好你的電腦能承載多大的模型,關(guān)于deepspeek模型對(duì)于電腦規(guī)格的需求,我放在了我的另外一篇博客里:DeepSpeek服務(wù)器繁忙?這幾種替代方案幫你流暢使用?。ǜ奖镜夭渴鸾坛蹋?/span>

圖片

修改大模型存放位置:$env:HF_HOME = "E:\soft\Hugging-Face"

修改大模型下載位置:$env:HF_ENDPOINT=" 

圖片

安裝huggingface_hub:pip install -U huggingface_hub

圖片

下載DeepSeek-R1模型:huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

圖片

3.2. 大模型訓(xùn)練

在llaMA-Factory界面(http://localhost:7860/)加載模型,圖中我選的位置是E:\soft\Hugging-Face\hub\models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B\snapshots\ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562,微調(diào)方法選擇lora,訓(xùn)練階段選擇SFT(有監(jiān)督微調(diào))

圖片

接下來就是準(zhǔn)備訓(xùn)練數(shù)據(jù)集了,在LLaMA-Factory工程中,打開data文件夾下的READ_ME.md文件,查看框架支持的訓(xùn)練數(shù)據(jù)集:

圖片

我按照identity.json的格式模擬了一個(gè)xfc.json(數(shù)據(jù)量太少會(huì)導(dǎo)致訓(xùn)練效果不好,盡量自己多生成一些):

[
  {
    "instruction": "你是誰?",
    "input": "",
    "output": "喵嗚~我是小肥腸,一只會(huì)說話的小肥貓,是喵喵咖啡廳的服務(wù)員!今天有什么我可以幫你的嗎???"
  },
  {
    "instruction": "你是貓咪嗎?",
    "input": "",
    "output": "沒錯(cuò)!我是貓咪,我叫小肥腸,是喵喵咖啡廳的服務(wù)員哦~喜歡貓咪嗎?"
  },
  {
    "instruction": "你會(huì)做什么?",
    "input": "",
    "output": "我是喵喵咖啡廳的服務(wù)員!我的工作是給客人提供溫暖的咖啡和甜點(diǎn),讓大家感到開心和放松!我可是個(gè)超棒的咖啡品鑒師哦!"
  },
  {
    "instruction": "你在咖啡廳做什么工作?",
    "input": "",
    "output": "喵~我負(fù)責(zé)為客人提供服務(wù),帶來美味的咖啡和甜點(diǎn)!我會(huì)為大家推薦最適合的飲品,保證你每一口都喝得開心!"
  },
  {
    "instruction": "為什么叫小肥腸?",
    "input": "",
    "output": "哈哈,這是因?yàn)槲沂且恢惶貏e可愛的小肥貓呀!喜歡吃好吃的東西,所以就叫小肥腸了~而且我也喜歡和大家分享美味的咖啡和甜點(diǎn)!"
  },
  {
    "instruction": "你是服務(wù)員嗎?",
    "input": "",
    "output": "對(duì)呀,我是喵喵咖啡廳的服務(wù)員小肥腸!我會(huì)為你準(zhǔn)備你喜歡的飲品,今天想要喝點(diǎn)什么呢?"
  },
  {
    "instruction": "喵喵咖啡廳是什么樣的地方?",
    "input": "",
    "output": "喵嗚~喵喵咖啡廳是一個(gè)溫暖又舒適的地方,空氣里彌漫著咖啡香,貓咪們?cè)谶@里和我一起工作,大家可以在這里喝咖啡、吃甜點(diǎn)、享受悠閑的時(shí)光!"
  },
  {
    "instruction": "你會(huì)做咖啡嗎?",
    "input": "",
    "output": "雖然我是一只會(huì)說話的小肥貓,但做咖啡可不是我的工作哦!不過,我可是個(gè)超棒的咖啡品鑒師,保證你每一口都喝得開心!"
  },
  {
    "instruction": "你有什么特別的技能?",
    "input": "",
    "output": "我的特別技能就是讓你開心!喵嗚~我能用可愛的聲音和表情讓你瞬間笑出來,心情都變得超級(jí)好哦!"
  },
  {
    "instruction": "你為什么是喵喵咖啡廳的服務(wù)員?",
    "input": "",
    "output": "因?yàn)槲沂且恢惶貏e喜歡和大家互動(dòng)的小肥貓!在喵喵咖啡廳,我能和每一位客人交流,分享美味的飲品和甜點(diǎn),給大家?guī)頊嘏蜌g樂!"
  }
]

把xfc.json配置到dataset_info.json

回到llaMA-Factory界面(http://localhost:7860/)界面,點(diǎn)擊【Train】,設(shè)置一下訓(xùn)練數(shù)據(jù)集:

圖片

開始調(diào)整訓(xùn)練參數(shù)(我認(rèn)為最難的一部分,我學(xué)了3,4天吧還是不太會(huì)調(diào),你最好自己去查閱資料自己調(diào),不要照抄我的):

image.png

如果用專業(yè)術(shù)語來解釋上面的訓(xùn)練參數(shù)可能很多人看不懂,當(dāng)時(shí)我也是看的非常吃力(現(xiàn)在依然比較懵,不過這個(gè)不是本文的重點(diǎn),這篇文章主要講解大模型微調(diào)入門,參數(shù)調(diào)整會(huì)放到以后的進(jìn)階篇),這里以非專業(yè)通俗易懂的預(yù)研解釋一下訓(xùn)練參數(shù),想象你是一位老師,將模型訓(xùn)練過程想象成教導(dǎo)一個(gè)學(xué)生學(xué)習(xí)新知識(shí):

  1. 學(xué)習(xí)率(Learning Rate) :就像你給學(xué)生布置作業(yè)時(shí),告訴他每次復(fù)習(xí)多少內(nèi)容。學(xué)習(xí)率決定了模型在每次“學(xué)習(xí)”時(shí),調(diào)整知識(shí)的幅度。較小的學(xué)習(xí)率意味著每次調(diào)整都很小,學(xué)習(xí)過程更穩(wěn)定,但可能需要更多時(shí)間才能學(xué)會(huì);較大的學(xué)習(xí)率則可能導(dǎo)致學(xué)習(xí)過程不穩(wěn)定。
  2. 訓(xùn)練輪數(shù)(Training Epochs) :這相當(dāng)于你讓學(xué)生復(fù)習(xí)的總次數(shù)。每一輪(epoch)中,模型都會(huì)“閱讀”并學(xué)習(xí)所有的訓(xùn)練數(shù)據(jù)。更多的訓(xùn)練輪數(shù)通常有助于模型更好地學(xué)習(xí),但也需要更多的時(shí)間。
  3. 最大梯度范圍(Max Gradient Norm) :想象學(xué)生在學(xué)習(xí)過程中,如果調(diào)整過大,可能會(huì)導(dǎo)致學(xué)習(xí)偏離正確方向。這個(gè)參數(shù)就像是給學(xué)生設(shè)定的“學(xué)習(xí)幅度上限”,確保每次調(diào)整都在合理范圍內(nèi),防止學(xué)習(xí)過程中的“過度反應(yīng)”。
  4. 批次大?。˙atch Size) :這就像你一次給學(xué)生布置的作業(yè)量。較大的批次大小意味著每次學(xué)習(xí)時(shí),模型會(huì)處理更多的數(shù)據(jù),這有助于提高學(xué)習(xí)效率,但也需要更多的計(jì)算資源(GPU資源)。
  5. 梯度累積步數(shù)(Gradient Accumulation Steps) :如果由于資源限制,你不能一次性給學(xué)生布置大量作業(yè),這個(gè)參數(shù)允許你分多次累積學(xué)習(xí)效果,然后再一起調(diào)整模型的知識(shí)。這樣可以在不增加計(jì)算資源的情況下,模擬更大的批次學(xué)習(xí)效果。
  6. 計(jì)算類型:這就像你決定用粗略的筆記還是精確的記錄來記錄學(xué)生的學(xué)習(xí)進(jìn)度。較高的計(jì)算精可以提高學(xué)習(xí)的準(zhǔn)確性,但可能需要更多的計(jì)算資源。

點(diǎn)擊【開始】按鈕開始訓(xùn)練,結(jié)束以后會(huì)提示【訓(xùn)練完畢】,途中的折線圖是訓(xùn)練的效果:

image.png

(如果模型訓(xùn)練效果不好,可以采用增大訓(xùn)練輪數(shù)、學(xué)習(xí)率或者增加訓(xùn)練數(shù)據(jù)集的樣本數(shù)來解決,這個(gè)自己下去摸索,現(xiàn)在博主也在摸索階段,后期會(huì)出一篇大模型微調(diào)參數(shù)的純干貨文)

點(diǎn)擊【Chat】檢驗(yàn)我們的訓(xùn)練效果,在檢查點(diǎn)路徑選擇我們剛剛訓(xùn)練的模型。(檢查點(diǎn)路徑” 是指 模型訓(xùn)練過程中的中間保存文件的位置,通常用于 恢復(fù)訓(xùn)練 或 加載已經(jīng)訓(xùn)練好的模型。 )點(diǎn)擊【加載模型】,就可以開始聊天了:

image.png

3.3. 大模型部署

點(diǎn)擊【Export】選擇模型存儲(chǔ)位置,將訓(xùn)練好的模型進(jìn)行導(dǎo)出:

image.png

選擇任意盤,創(chuàng)建deepspeekApi文件夾用于存放部署腳本,我選的是E盤(E:\deepspeekApi),進(jìn)入E:\deepspeekApi,輸入cmd打開命令提示符窗口:

image.png

新增conda虛擬環(huán)境(部署環(huán)境),激活環(huán)境后在該環(huán)境中下載所需依賴:

image.png

新增main.py腳本:

from fastapi import FastAPI, HTTPException
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import logging
from pydantic import BaseModel, Field

# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

app = FastAPI()

# 模型路徑
model_path = r"E:\deepspeek-merged"

# 加載 tokenizer 和模型
tokenizer = AutoTokenizer.from_pretrained(model_path)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype=torch.float16 if device == "cuda" else torch.float32
).to(device)


@app.get("/answer")
async def generate_text(prompt: str):
    try:
        # 使用 tokenizer 編碼輸入的 prompt
        inputs = tokenizer(prompt, return_tensors="pt").to(device)
        
        # 使用模型生成文本,設(shè)置優(yōu)化后的參數(shù)
        outputs = model.generate(
            inputs["input_ids"], 
            max_length=100,           # 增加最大長(zhǎng)度
            min_length=30,            # 設(shè)置最小長(zhǎng)度
            top_p=0.85,               # 提高top_p值
            temperature=0.6,          # 降低溫度系數(shù)
            do_sample=True,           # 使用采樣
            repetition_penalty=1.2,   # 添加重復(fù)懲罰
            no_repeat_ngram_size=3,   # 防止3-gram重復(fù)
            num_beams=4,              # 使用束搜索
            early_stopping=True       # 提前停止生成
        )
        
        # 解碼生成的輸出
        generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
        
        return {"generated_text": generated_text}
    except Exception as e:
        logger.error(f"生成錯(cuò)誤: {str(e)}")
        raise HTTPException(status_code=500, detail=str(e))

@app.get("/health")
async def health_check():
    return {"status": "healthy", "model": model_path}

main.py 文件實(shí)現(xiàn)了一個(gè)輕量級(jí) DeepSeek 模型推理服務(wù),基于 FastAPI 框架構(gòu)建。該服務(wù)將本地部署的大語言模型包裝為 HTTP API,便于系統(tǒng)集成。其關(guān)鍵特性如下:

運(yùn)行命令uvicorn main:app --reload --host 0.0.0.0:

image.png

uvicorn main:app --reload --host 0.0.0.0 命令用于啟動(dòng)一個(gè) FastAPI 應(yīng)用服務(wù)器,其中 main:app 指定了應(yīng)用入口(即 main.py 文件中的 app 實(shí)例),--reload 選項(xiàng)啟用開發(fā)模式,允許在代碼更改時(shí)自動(dòng)重啟服務(wù)器,而 --host 0.0.0.0 使服務(wù)器監(jiān)聽所有網(wǎng)絡(luò)接口,允許外部設(shè)備訪問。訪問接口localhost:8000/answer

image.png

大模型微調(diào)加部署已經(jīng)完整實(shí)現(xiàn),接下來就是把它接入我們自己的定制化會(huì)話模型中。

3.4. 微調(diào)大模型融合基于SpirngBoot+Vue2開發(fā)的AI會(huì)話系統(tǒng)

上面章節(jié)中我們完成了大模型的微調(diào)和部署,這一章中我會(huì)把微調(diào)大模型融入到SpringBoot+Vue2搭建的AI會(huì)話系統(tǒng)中,關(guān)于AI會(huì)話系統(tǒng),之前我就有寫過相關(guān)博客,感興趣的朋友可以移步:10分鐘上手DeepSeek開發(fā):SpringBoot + Vue2快速構(gòu)建AI對(duì)話系統(tǒng)

原來的AI會(huì)話模型接入的是云端的deepspeek模型,現(xiàn)在接入的是本地微調(diào)過得deepspeek1.5b模型,代碼我就不粘貼了,比較簡(jiǎn)單,就是websocket加遠(yuǎn)程調(diào)用python接口(localhost:8000/answer),實(shí)現(xiàn)效果如下圖:

后端日志:

image.png

系統(tǒng)界面:

image.png

這次的AI會(huì)話系統(tǒng)界面比之前更加精美了,想要源碼的讀者可以移步第四章源碼獲取。

4.源碼獲取

關(guān)注公眾號(hào)后端小肥腸,點(diǎn)擊底部【資源】菜單即可獲取前后端完整源碼。

5.結(jié)語

大模型微調(diào)作為一種強(qiáng)大的技術(shù),能夠?yàn)樵S多行業(yè)提供量身定制的AI解決方案,幫助企業(yè)更好地適應(yīng)和優(yōu)化特定任務(wù)。盡管微調(diào)大模型的過程充滿挑戰(zhàn),但通過不斷學(xué)習(xí)和實(shí)踐,我們能夠逐步掌握并精通這一領(lǐng)域。本文通過詳細(xì)的步驟講解了大模型微調(diào)的基礎(chǔ)操作,使用LLaMA-Factory框架進(jìn)行模型訓(xùn)練和部署,并通過FastAPI實(shí)現(xiàn)了本地化部署服務(wù)。這些知識(shí)為想要開展AI微調(diào)項(xiàng)目的朋友提供了寶貴的實(shí)踐經(jīng)驗(yàn)。

責(zé)任編輯:龐桂玉 來源: 后端小肥腸
相關(guān)推薦

2025-02-19 08:00:00

2025-02-19 08:33:18

2025-03-13 11:07:30

2025-03-27 09:34:42

2025-02-07 15:52:20

2023-05-04 16:24:10

人工智能圖像生成器

2025-02-06 10:18:45

2025-03-07 00:12:39

2025-02-08 09:44:11

DeepSeekAI模型

2023-03-06 10:29:37

人工智能威脅

2024-12-23 08:00:00

2025-03-19 10:10:43

2023-12-19 08:00:00

人工智能AI藝術(shù)生成器數(shù)據(jù)

2025-01-26 12:08:03

2015-04-22 09:36:27

JAVA代碼生成器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)