解鎖DeepSpeek-R1大模型微調:從訓練到部署,打造定制化AI會話系統

目錄

1. 前言

2.大模型微調概念簡述

2.1. 按學習范式分類

2.2. 按參數更新范圍分類

2.3. 大模型微調框架簡介

3. DeepSpeek R1大模型微調實戰

3.1.LLaMA-Factory基礎環境安裝

3.1大模型下載

3.2. 大模型訓練

3.3. 大模型部署

3.4. 微調大模型融合基于SpirngBoot+Vue2開發的AI會話系統

4.源碼獲取

5.結語


1. 前言

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

對于這些行業的企業而言,精準、高效地輸出行業特定內容是他們對AI的核心需求。企業希望AI能夠處理行業術語、應對特殊情境,并且確保內容的準確性。然而,單純依賴大模型進行推理,往往無法達到這樣的標準,因為大模型的訓練是基于通用數據集,這些數據集通常并不包含行業領域的深度知識。因此,企業通常需要一個更加定制化、精細化的模型,而這正是大模型微調技術能夠提供的解決方案。

大模型微調技術通過對預訓練的大模型進行進一步訓練,能夠根據特定領域的需求進行優化。通過提供具有代表性的領域數據,尤其是精心標注的行業特定數據,微調后的模型能夠學習這些領域的專有知識,從而有效避免AI幻覺的發生,并且提供更加準確、有價值的輸出。

本文將從零開始教你一步步入門AI大模型微調技術(基于DeepSpeek R1大模型),最終實現基于私有化部署的微調大模型AI會話系統。感興趣的朋友可以繼續往下看看。

2.大模型微調概念簡述

大模型微調是指在已有的預訓練大模型基礎上,通過特定任務或領域數據進行進一步訓練,使模型能夠更精準地處理特定任務。與傳統的訓練方法不同,微調充分利用已有的大模型,減少對大量數據的依賴,同時通過對模型進行小范圍的調整,使其適應新的任務。大模型微調技術在多個領域中得到了廣泛應用,如文本生成、分類任務、問答系統等。

微調的核心目標是使大模型根據特定任務需求進行優化,提升其在特定應用場景中的表現。為實現這一目標,微調方法主要包括以下兩種分類方式:

  1. 按學習范式分類:根據模型學習方式的不同,微調方法可分為有監督微調、無監督微調和半監督微調等類型。
  2. 按參數更新范圍分類:根據在微調過程中對模型參數更新范圍的不同,方法可分為全量微調和部分微調等類型。

2.1. 按學習范式分類

有監督微調(Supervised Fine-Tuning,SFT)

有監督微調是最常見的微調方式,適用于任務明確且具有標注數據的情況。通過使用人工標注的高質量數據對,模型能夠學習特定任務所需的知識,從而在指定任務上提供準確的輸出。

SFT示例:

training_data = [{"input": "問題", "output": "標準答案"},# 人工標注的高質量數據對
]

在有監督微調中,模型的目標是根據輸入的“問題”生成一個“標準答案”。這個過程依賴于人工標注的數據,使模型能夠更好地理解并生成符合實際需求的結果,有監督微調適用于需要特定答案的任務,如情感分析、文本分類、機器翻譯、問答系統等。

無監督微調(Unsupervised Fine-Tuning)

無監督微調是一種不依賴人工標注的微調方式,主要利用大量未標注的文本數據進行訓練。通過無監督學習,模型能夠自動從原始數據中提取知識,尤其在沒有標注數據或標注數據獲取困難的情況下尤為有用。

無監督微調示例:

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

這種方式通常用于模型的預訓練過程,模型通過對大規模文本進行訓練,學習通用的語言表示能力。無監督微調可以增強模型的語法和語義理解能力,提升其在不同任務中的表現,無監督微調適用于自然語言建模、生成任務等場景,幫助模型理解文本的結構和語義關系。

半監督微調(Semi-Supervised Fine-Tuning)

半監督微調結合了有監督和無監督學習的優點,利用標注數據和未標注數據來訓練模型。常用的方法包括將未標注數據通過某種方式生成偽標簽,或利用自監督學習方法,使模型在標注數據較少時也能進行有效訓練。

半監督微調示例:

training_data = [{"input": "問題", "output": "標準答案"},  # 高質量人工標注數據"大量未標注文本...",  # 用于填充的未標注數據
]

半監督微調適用于標注數據稀缺的場景,能夠結合少量標注數據和大量未標注數據,進一步提升模型表現,這種方法在實際應用中尤其適用于標簽獲取困難或成本高昂的領域,如醫療、法律等行業。

2.2. 按參數更新范圍分類

全量微調(Full Fine-Tuning)

全量微調是指在對預訓練模型進行微調時,更新模型的所有參數。通過對特定領域數據的訓練,模型的所有層都會根據新任務的數據進行調整。全量微調能夠在模型中深度定制領域知識,最大程度地提升模型在目標任務中的效果。

全量微調的特點:

  • 更新模型的所有參數。
  • 適用于數據量較大且任務復雜的場景。
  • 訓練時間較長,需要大量計算資源。

全量微調適用于大規模數據集且任務復雜的場景,如文本生成、問答系統、情感分析等。它能夠充分利用預訓練模型進行深度學習,提供最優效果。

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

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

LoRA的特點:

  • 只調整部分參數(如低秩矩陣分解)。
  • 降低計算和內存開銷。
  • 適合快速微調,尤其在資源受限時。

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

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

2.3. 大模型微調框架簡介

在大模型微調領域,存在多種框架,每個框架都有其獨特的優勢和局限性。以下是幾種常見的大模型微調框架的介紹與比較:

1. Hugging Face Transformers

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

  • 預訓練模型豐富,支持多種模型,如 BERT、GPT、T5 等。
  • 提供了高層次的 API,使得微調過程簡單易懂。
  • 擁有龐大的用戶社區和文檔支持。

盡管 Hugging Face Transformers 在許多常見任務中表現優秀,但在超大規模模型的微調和訓練中,可能會面臨性能瓶頸和資源消耗過大的問題。

2. DeepSpeed

DeepSpeed(Latest News - DeepSpeed )是微軟開發的高效深度學習訓練框架,專注于優化大規模模型訓練的性能。其主要特點包括:

  • ZeRO優化,顯著減少內存占用,提高分布式訓練的效率。
  • 支持 混合精度訓練,加速訓練過程并減少內存需求。
  • 提供分布式訓練功能,支持大規模模型的訓練。

DeepSpeed適合大規模模型的訓練,但使用門檻較高,需要深入理解框架的底層實現。

3. Fairseq

Fairseq (fairseq documentation — fairseq 0.12.2 documentation)是 Facebook AI Research 開發的一個高效訓練工具,支持多種模型架構的訓練,如 Transformer 和 BART。其特點為:

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

Fairseq 對于需要靈活定制和擴展的場景非常適合,但其文檔和社區支持相對有限。

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

LLaMA-Factory (LLaMA Factory)是由國內北航開源的低代碼大模型訓練框架,旨在簡化大模型微調過程,尤其是在支持低代碼甚至零代碼操作的基礎上,提供極大的便利。其主要特點包括:

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

LLaMA-Factory 適合企業和研究人員需要快速、高效地微調大模型并在特定任務中應用時,尤其在低資源條件下表現突出

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

3. DeepSpeek R1大模型微調實戰

3.1.LLaMA-Factory基礎環境安裝

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

????????1.下載 Anaconda:

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

????????2. 安裝 Anaconda(已經安裝了Anaconda就跳過這步):

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

  • 安裝完成后,點擊“Finish”結束安裝。

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

????????1. 下載 Git:

  • 訪問 Git 官網 下載適用于 Windows 的安裝包。

????????2. 安裝 Git:

  • 雙擊安裝程序,并按照默認選項進行安裝。
  • 安裝過程中大部分選項可以保持默認,完成安裝后即可使用 Git。

3. 創建項目環境

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

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

4. 安裝PyTorch(AI框架)

在同一個命令窗口繼續執行(llma環境):

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

5. 安裝LLaMA-Factory

找到一個目錄存放LLaMA-Factory項目,打開git命令窗口執行:

# 克隆項目
git clone https://github.com/hiyouga/LLaMA-Factory.git

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

安裝項目依賴

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

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

驗證安裝

# 測試是否安裝成功
llamafactory-cli version

啟動 LLama-Factory 的可視化微調界面

llamafactory-cli webui

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

3.1大模型下載

打開HuggingFace 官網(https://huggingface.co),我這里還是以deepspeek為例(1.5b)來演示,這幾天qwq也很火,感興趣的朋友也可以試試,不過要預先明確好你的電腦能承載多大的模型,關于deepspeek模型對于電腦規格的需求,我放在了我的另外一篇博客里:DeepSpeek服務器繁忙?這幾種替代方案幫你流暢使用!(附本地部署教程)-CSDN博客

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

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

安裝huggingface_hub:pip install -U huggingface_hub

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

3.2. 大模型訓練

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

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

我按照identity.json的格式模擬了一個xfc.json(數據量太少會導致訓練效果不好,盡量自己多生成一些):


[{"instruction": "你是誰?","input": "","output": "喵嗚~我是小肥腸,一只會說話的小肥貓,是喵喵咖啡廳的服務員!今天有什么我可以幫你的嗎?😸"},{"instruction": "你是貓咪嗎?","input": "","output": "沒錯!我是貓咪,我叫小肥腸,是喵喵咖啡廳的服務員哦~喜歡貓咪嗎?"},{"instruction": "你會做什么?","input": "","output": "我是喵喵咖啡廳的服務員!我的工作是給客人提供溫暖的咖啡和甜點,讓大家感到開心和放松!我可是個超棒的咖啡品鑒師哦!"},{"instruction": "你在咖啡廳做什么工作?","input": "","output": "喵~我負責為客人提供服務,帶來美味的咖啡和甜點!我會為大家推薦最適合的飲品,保證你每一口都喝得開心!"},{"instruction": "為什么叫小肥腸?","input": "","output": "哈哈,這是因為我是一只特別可愛的小肥貓呀!喜歡吃好吃的東西,所以就叫小肥腸了~而且我也喜歡和大家分享美味的咖啡和甜點!"},{"instruction": "你是服務員嗎?","input": "","output": "對呀,我是喵喵咖啡廳的服務員小肥腸!我會為你準備你喜歡的飲品,今天想要喝點什么呢?"},{"instruction": "喵喵咖啡廳是什么樣的地方?","input": "","output": "喵嗚~喵喵咖啡廳是一個溫暖又舒適的地方,空氣里彌漫著咖啡香,貓咪們在這里和我一起工作,大家可以在這里喝咖啡、吃甜點、享受悠閑的時光!"},{"instruction": "你會做咖啡嗎?","input": "","output": "雖然我是一只會說話的小肥貓,但做咖啡可不是我的工作哦!不過,我可是個超棒的咖啡品鑒師,保證你每一口都喝得開心!"},{"instruction": "你有什么特別的技能?","input": "","output": "我的特別技能就是讓你開心!喵嗚~我能用可愛的聲音和表情讓你瞬間笑出來,心情都變得超級好哦!"},{"instruction": "你為什么是喵喵咖啡廳的服務員?","input": "","output": "因為我是一只特別喜歡和大家互動的小肥貓!在喵喵咖啡廳,我能和每一位客人交流,分享美味的飲品和甜點,給大家帶來溫暖和歡樂!"}
]

把xfc.json配置到dataset_info.json

"xfc": {"file_name": "xfc.json"
}

回到llaMA-Factory界面(http://localhost:7860/)界面,點擊【Train】,設置一下訓練數據集:

開始調整訓練參數(我認為最難的一部分,我學了3,4天還是不太會調,你最好自己去查閱資料自己調,不要照抄我的):

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

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

點擊【開始】按鈕開始訓練,結束以后會提示【訓練完畢】,途中的折線圖是訓練的效果:

(如果模型訓練效果不好,可以采用增大訓練輪數、學習率或者增加訓練數據集的樣本數來解決,這個自己下去摸索,現在博主也在摸索階段,后期會出一篇大模型微調參數的純干貨文)

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

3.3. 大模型部署

點擊【Export】選擇模型存儲位置,將訓練好的模型進行導出:

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

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

#新建deepspeekApi虛擬環境
conda create -n deepspeekApi python=3.10
#激活deepspeekApi
conda activate deepspeekApi
#下載所需依賴
conda install -c conda-forge fastapi uvicorn transformers pytorch
pip install safetensors sentencepiece protobuf

新增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 編碼輸入的 promptinputs = tokenizer(prompt, return_tensors="pt").to(device)# 使用模型生成文本,設置優化后的參數outputs = model.generate(inputs["input_ids"], max_length=100,           # 增加最大長度min_length=30,            # 設置最小長度top_p=0.85,               # 提高top_p值temperature=0.6,          # 降低溫度系數do_sample=True,           # 使用采樣repetition_penalty=1.2,   # 添加重復懲罰no_repeat_ngram_size=3,   # 防止3-gram重復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"生成錯誤: {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 文件實現了一個輕量級 DeepSeek 模型推理服務,基于 FastAPI 框架構建。該服務將本地部署的大語言模型包裝為 HTTP API,便于系統集成。其關鍵特性如下:

  • ? 本地模型加載:直接從本地路徑加載模型,無需依賴云服務
  • ? GPU 加速支持:自動檢測并使用 GPU 進行推理加速
  • ? 參數精調:固定的生成參數配置(max_length=100, top_p=0.85, temperature=0.6...)
  • ? 錯誤處理:完整的異常捕獲和日志記錄機制
  • ? 健康檢查:提供服務狀態監控端點

運行命令uvicorn main:app --reload --host 0.0.0.0:

uvicorn main:app --reload --host 0.0.0.0 命令用于啟動一個 FastAPI 應用服務器,其中 main:app 指定了應用入口(即 main.py 文件中的 app 實例),--reload 選項啟用開發模式,允許在代碼更改時自動重啟服務器,而 --host 0.0.0.0 使服務器監聽所有網絡接口,允許外部設備訪問。訪問接口localhost:8000/answer

大模型微調加部署已經完整實現,接下來就是把它接入我們自己的定制化會話模型中。

3.4. 微調大模型融合基于SpirngBoot+Vue2開發的AI會話系統

上面章節中我們完成了大模型的微調和部署,這一章中我會把微調大模型融入到SpringBoot+Vue2搭建的AI會話系統中,關于AI會話系統,之前我就有寫過相關博客,感興趣的朋友可以移步:10分鐘上手DeepSeek開發:SpringBoot + Vue2快速構建AI對話系統_springboot deepseek-CSDN博客

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

后端日志:

系統界面:

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

4.源碼獲取

關注gzh后端小肥腸,點擊底部【資源】菜單即可獲取前后端完整源碼。

5.結語

大模型微調作為一種強大的技術,能夠為許多行業提供量身定制的AI解決方案,幫助企業更好地適應和優化特定任務。盡管微調大模型的過程充滿挑戰,但通過不斷學習和實踐,我們能夠逐步掌握并精通這一領域。本文通過詳細的步驟講解了大模型微調的基礎操作,使用LLaMA-Factory框架進行模型訓練和部署,并通過FastAPI實現了本地化部署服務。這些知識為想要開展AI微調項目的朋友提供了寶貴的實踐經驗。

如果你對AI領域感興趣,歡迎關注小肥腸,小肥腸將持續更新AI領域更多干貨文章~~感謝大家的閱讀,我們下期再見!

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

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

相關文章

第七課:Python反爬攻防戰:Headers/IP代理與驗證碼

在爬蟲開發過程中,反爬蟲機制成為了我們必須面對的挑戰。本文將深入探討Python爬蟲中常見的反爬機制,并詳細解析如何通過隨機User-Agent生成、代理IP池搭建以及驗證碼識別來應對這些反爬策略。文章將包含完整的示例代碼,幫助讀者更好地理解和…

Vue3——Fragment

文章目錄 一、Fragment的核心意義1. 解決Vue2的單根限制問題2. 減少不必要的 DOM 嵌套3. 語義化和結構化 二、Fragment 的實現原理三、Fragment 使用方式1. 基本用法2. 結合條件渲染3. 動態組件 四、實際應用場景1. 列表/表格組件2. 布局組件3. 語義化標簽 五、注意事項1. 屬性…

字節跳動C++客戶端開發實習生內推-抖音基礎技術

智能手機愛好者和使用者,追求良好的用戶體驗; 具有良好的編程習慣,代碼結構清晰,命名規范; 熟練掌握數據結構與算法、計算機網絡、操作系統、編譯原理等課程; 熟練掌握C/C/OC/Swift一種或多種語言&#xff…

【Linux學習筆記】Linux基本指令分析和權限的概念

【Linux學習筆記】Linux基本指令分析和權限的概念 🔥個人主頁:大白的編程日記 🔥專欄:Linux學習筆記 文章目錄 【Linux學習筆記】Linux基本指令分析和權限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

數據庫索引的作用:提升數據檢索效率的關鍵

在數據庫管理系統中,數據如同浩瀚海洋中的寶藏,如何快速準確地找到所需信息,成為了一個關鍵問題。這時候,數據庫索引就如同一張精確的航海圖,指引著我們高效地定位數據。那么,數據庫索引究竟是什么&#xf…

Lab18_ SQL injection with filter bypass via XML encoding

文章目錄 前言:進入實驗室構造 payload 前言: 實驗室標題為: 通關 XML 編碼繞過過濾器的 SQL 注入 簡介: 此實驗室的庫存檢查功能中存在 SQL 注入漏洞。查詢結果在應用程序的響應中返回,因此您可以使用 UNION 攻擊…

計算機性能指標(計網筆記)

計算機性能指標:速率、帶寬、吞吐率、時延、時延帶寬積、往返時間RTT、利用率 速率 數據的傳輸速率,單位bit/s,或kbit/s,Mbit/s,Gbit/s 4*10**10bit/s40Gbit/s 常用帶寬單位: 千比每秒kb/s 兆比每秒Mb/s…

同為科技智能PDU在數據中心場景的應用與解決方案

數據中心當前處于一個快速發展和技術變革的特殊時期,全新的人工智能應用正在重塑整個世界,為社會帶來便捷的同時,也為數據中心的發展帶來了新的機遇和挑戰。智能算例的爆發式增長,對數據中心提出了大算力、高性能的新需求&#xf…

藍橋杯 C++ b組 積木畫深度解析

題目大意:有兩種積木塊,I型和L型,給定一段2*N的畫布,問擺滿總共有多少種方式? 解法:狀態壓縮dp(強烈建議拿個筆跟著畫一下狀態,慢慢就懂了) 首先我們規定一下此題解中提…

小程序事件系統 —— 32 事件系統 - 事件分類以及阻止事件冒泡

在微信小程序中,事件分為 冒泡事件 和 非冒泡事件 : 冒泡事件:當一個組件的事件被觸發后,該事件會向父節點傳遞;(如果父節點中也綁定了一個事件,父節點事件也會被觸發,也就是說子組…

【從0到1搞懂大模型】神經網絡的實現:數據策略、模型調優與評估體系(3)

一、數據集的劃分 (1)按一定比例劃分為訓練集和測試集 我們通常取8-2、7-3、6-4、5-5比例切分,直接將數據隨機劃分為訓練集和測試集,然后使用訓練集來生成模型,再用測試集來測試模型的正確率和誤差,以驗證…

Django與數據庫

我叫補三補四,很高興見到大家,歡迎一起學習交流和進步 今天來講一講alpha策略制定后的測試問題 mysql配置 Django模型體現了面向對象的編程技術,是一種面向對象的編程語言和不兼容類型能相互轉化的編程技術,這種技術也叫ORM&#…

從 GitHub 批量下載項目各版本的方法

一、腳本功能概述 這個 Python 腳本的主要功能是從 GitHub 上下載指定項目的各個發布版本的壓縮包(.zip 和 .tar.gz 格式)。用戶需要提供兩個參數:一個是包含項目信息的 CSV 文件,另一個是用于保存下載版本信息的 CSV 文件。腳本…

ECC升級到S/4 HANA的功能差異 物料、采購、庫存管理對比指南

ECC升級到S/4 HANA后,S4 將數據庫更換為HANA后性能有一定提升,對于自開發程序,可以同時將計算和部分業務邏輯下推到HANA數據庫層,減少應用層和數據庫層的交互次數和數據傳輸,只返回需要的結果到應用層和顯示層。提升自…

表格columns拼接兩個后端返回的字段(以umi框架為例)

在用組件對前端項目進行開發時,我們會遇到以下情況:項目原型中有取值范圍這個表字段,需要存放最小取值到最大取值。 而后端返回給我們的數據是返回了一個最小值和一個最大值, 在columns中我們需要對這兩個字段進行拼接&#xff0…

使用Galaxy創建生物信息學工作流的步驟詳解

李升偉 整理 Galaxy 是一個基于 Web 的生物信息學平臺,提供了直觀的用戶界面和豐富的工具,幫助用戶創建和管理生物信息學工作流。以下是使用 Galaxy 創建生物信息學工作流的主要步驟: 1. 訪問 Galaxy 平臺 打開 Galaxy 的官方網站&#xff…

藍橋杯—走迷宮(BFS算法)

題目描述 給定一個NM 的網格迷宮 G。G 的每個格子要么是道路,要么是障礙物(道路用 11表示,障礙物用 0 表示)。 已知迷宮的入口位置為 (x1?,y1?),出口位置為 (x2?,y2?)。問從入口走到出口,最少要走多少…

【GPT入門】第12課 FunctionCall 生成數據庫sql代碼

【GPT入門】第12課 FunctionCall 生成數據庫sql代碼 1.概述2. 代碼3.執行結果 1.概述 如下代碼的任務:自然語言問ai,自動生成sql并回答用戶 實現思路: 步驟1. ai會把用戶的問題,轉為sql 步驟2. 程序執行sql 步驟3.把執行的sql結果&#xff…

《白帽子講 Web 安全》之身份認證

目錄 引言 一、概述 二、密碼安全性 三、認證方式 (一)HTTP 認證 (二)表單登錄 (三)客戶端證書 (四)一次性密碼(OTP) (五)多因…

服務器python項目部署

角色:root, 其他用戶應該也可以 1. 安裝python3環境 #如果是新機器,盡量執行,避免未知報錯 yum -y update python -v yum install python3 python3 -v2. 使用virtualenvwrapper 創建虛擬環境,并使用workon切換不同的虛擬環境 # 安裝virtua…