AI大模型探索之路-訓練篇25:ChatGLM3微調實戰-基于LLaMA-Factory微調改造企業級知識庫

系列篇章💥

AI大模型探索之路-訓練篇1:大語言模型微調基礎認知
AI大模型探索之路-訓練篇2:大語言模型預訓練基礎認知
AI大模型探索之路-訓練篇3:大語言模型全景解讀
AI大模型探索之路-訓練篇4:大語言模型訓練數據集概覽
AI大模型探索之路-訓練篇5:大語言模型預訓練數據準備-詞元化
AI大模型探索之路-訓練篇6:大語言模型預訓練數據準備-預處理
AI大模型探索之路-訓練篇7:大語言模型Transformer庫之HuggingFace介紹
AI大模型探索之路-訓練篇8:大語言模型Transformer庫-預訓練流程編碼體驗
AI大模型探索之路-訓練篇9:大語言模型Transformer庫-Pipeline組件實踐
AI大模型探索之路-訓練篇10:大語言模型Transformer庫-Tokenizer組件實踐
AI大模型探索之路-訓練篇11:大語言模型Transformer庫-Model組件實踐
AI大模型探索之路-訓練篇12:語言模型Transformer庫-Datasets組件實踐
AI大模型探索之路-訓練篇13:大語言模型Transformer庫-Evaluate組件實踐
AI大模型探索之路-訓練篇14:大語言模型Transformer庫-Trainer組件實踐
AI大模型探索之路-訓練篇15:大語言模型預訓練之全量參數微調
AI大模型探索之路-訓練篇16:大語言模型預訓練-微調技術之LoRA
AI大模型探索之路-訓練篇17:大語言模型預訓練-微調技術之QLoRA
AI大模型探索之路-訓練篇18:大語言模型預訓練-微調技術之Prompt Tuning
AI大模型探索之路-訓練篇19:大語言模型預訓練-微調技術之Prefix Tuning
AI大模型探索之路-訓練篇20:大語言模型預訓練-常見微調技術對比
AI大模型探索之路-訓練篇21:Llama2微調實戰-LoRA技術微調步驟詳解
AI大模型探索之路-訓練篇22: ChatGLM3微調實戰-從原理到應用的LoRA技術全解
AI大模型探索之路-訓練篇23:ChatGLM3微調實戰-基于P-Tuning V2技術的實踐指南
AI大模型探索之路-訓練篇24:ChatGLM3微調實戰-多卡方案微調步驟詳解


目錄

  • 系列篇章💥
  • 前言
  • 一、概述
  • 二、知識庫核心架構回顧(RAG)
    • 1、知識數據向量化
    • 2、知識數據檢索返回
  • 三、技術選型
    • 1、模型選擇ChatGLM3-6B
    • 2、Embedding模型選擇
  • 四、改造后的技術選型
  • 五、服務器資源準備
  • 六、私有模型下載測試
    • 1、下載ChatGLM3工程
    • 2、安裝依賴
    • 3、模型測試
  • 七、微調工具LLaMA-Factory
    • 1、LLaMA-Factory簡介
    • 2、LLaMA-Factory下載安裝
      • 1)下載工程
      • 2)創建單獨python環境
      • 3)安裝依賴
    • 3、LLaMA-Factory測試
      • 1)下載Llama3-8B-Instruct
      • 2)模型微調
      • 3)模型推理
      • 4)模型合并
  • 八、基于模型問題本地知識庫
    • 1、環境映射配置
      • 1)AutoDL配置
      • 2)啟動web UI界面
      • 3)本地端口映射處理
    • 2、模型下載
      • 1)下載模型(權重相關文件)
      • 2)下載embedding模型
    • 3、數據準備
    • 4、UI界面微調演示和驗證
      • 1)微調
      • 2)推理
      • 3)模型合并
    • 5、代碼微調演示和驗證
    • 6、本地知識庫代碼改造
  • 總結


前言

在當前信息技術迅猛發展的時代,知識庫的構建與應用已成為企業競爭的關鍵。隨著自然語言處理技術的不斷進步,基于微調的企業級知識庫改造落地方案受到越來越多的關注。在前面的系列篇章中我們分別實踐了基于CVP架構-企業級知識庫實戰落地和基于基于私有模型GLM-企業級知識庫開發實戰;本文將深入探討和實踐一種基于微調技術的企業級知識庫改造方法,以期為企業提供更加高效、安全和可靠的知識管理解決方案。

一、概述

企業知識庫架構方案,通常有3中可選方案:
1)基于在線的大模型如ChatGPT,加上Embedding技術,通過更新迭代向量數據庫;開發、運維簡單,開發門檻比較低;僅需少量的AI知識技能儲備,但是需要將知識開放給大模型;
2)基于開源的大模型如GLM,Llama,自己獨立部署,同樣加上Embedding技術,通過更新迭代向量數據庫;開發、運維簡單,需要提供硬件GPU資源保障;需要較少的AI知識技能儲備,可以保障知識庫的隱私安全;
3)基于開源的大模型如GLM,Llama,自己獨立部署,采用微調技術,再同樣加上Embedding技術,通過更新迭代向量數據庫;開發、運維簡單,需要提供硬件GPU資源保障;需要較深的AI知識技能儲備,可以保障知識庫的隱私安全;可以自己定制化擴展。( 如果知識庫更新頻率較低,可以不需要引入向量數據庫作為補充,直接定期微調即可)

二、知識庫核心架構回顧(RAG)

1、知識數據向量化

首先,通過文檔加載器加載本地知識庫數據,然后使用文本拆分器將大型文檔拆分為較小的塊,便于后續處理。接著,對拆分的數據塊進行Embedding向量化處理,最后將向量化后的數據存儲到向量數據庫中以便于檢索。

2、知識數據檢索返回

根據用戶輸入,使用檢索器從向量數據庫中檢索相關的數據塊。然后,利用包含問題和檢索到的數據的提示,交給ChatModel / LLM(聊天模型/語言生成模型)生成答案。
在這里插入圖片描述

三、技術選型

1、模型選擇ChatGLM3-6B

1)開源的:需要選擇開源的項目方便自主擴展。
2)高性能的:選擇各方面性能指標比較好的,能夠提升用戶體驗。
3)可商用的:在不增加額外成本的前提下,保證模型的商用可行性。
4)低成本部署的:部署時要能夠以最低成本代價部署運行知識庫,降低公司成本開支。
5)中文支持:需要選擇對我母語中文支持性比較好的模型,能夠更好的解析理解中文語義。
注意:選擇ChatGLM3-6B更主要的原因是方便自己能夠跑起來(本錢不夠)

企業實踐可以考慮通義千問-72B(Qwen-72B),阿里云研發的通義千問大模型系列的720億參數規模的模型。Qwen-72B是基于Transformer的大語言模型,
在超大規模的預訓練數據上進行訓練得到。預訓練數據類型多樣,覆蓋廣泛,包括大量網絡文本、專業書籍、代碼等。同時,在Qwen-72B的基礎上,還使用對齊機制打造了基于大語言模型的AI助手Qwen-72B-Chat。
主要有以下特點
1)大規模高質量訓練語料:使用超過3萬億tokens的數據進行預訓練,包含高質量中、英、多語言、代碼、數學等數據,涵蓋通用及專業領域的訓練語料。通過大量對比實驗對預訓練語料分布進行了優化。
2)強大的性能:Qwen-72B在多個中英文下游評測任務上(涵蓋常識推理、代碼、數學、翻譯等),效果顯著超越現有的開源模型。具體評測結果請詳見下文。
3)覆蓋更全面的詞表:相比目前以中英詞表為主的開源模型,Qwen-72B使用了約15萬大小的詞表。該詞表對多語言更加友好,方便用戶在不擴展詞表的情況下對部分語種進行能力增強和擴展。
4)更長的上下文支持:Qwen-72B支持32k的上下文長度。
5)系統指令跟隨:Qwen-72B-Chat可以通過調整系統指令,實現角色扮演,語言風格遷移,任務設定,和行為設定等能力。*
資源要求:運行FP16模型需要多卡至少144GB顯存(例如2xA100-80G或5xV100-32G);運行Int4模型(生產環境不建議采用量化技術,避免影響準確度)
至少需要48GB顯存(例如1xA100-80G或2xV100-32G)

2、Embedding模型選擇

我們要選擇一個開源免費的、中文支持性比較好的,場景合適的,各方面排名靠前的嵌入模型。
MTEB排行榜:https://huggingface.co/spaces/mteb/leaderboard ,MTEB是衡量文本嵌入模型在各種嵌入任務上性能的重要基準;可從排行榜中選相應的Enbedding模型;
本次從中選擇使用比較廣泛的 bge-large-zh-v1.5 (同樣也是智譜AI的開源模型),常用的還有text2vec-base-chinese
在這里插入圖片描述

四、改造后的技術選型

1)LLM模型:ChatGLM3-6B
2)Embedding模型:bge-large-zh-v1.5/text2vec-base-chinese
3)應用開發框架:LangChain
4)向量數據庫:FAISS/pinecone/Milvus
5)WEB框架:streamlit/gradio
6)訓練技術:高效微調
7)高效微調技術:LoRA

五、服務器資源準備

在這里插入圖片描述

1)如果精度為FP16, 需要GPU顯存大概需要16G左右。
2)如果量化為int8, 需要GPU顯存大概需要12G左右。
3)如果量化為int4, 需要GPU顯存大概需要8.5G左右。
實際情況需要比估算值要更大一點,購買云資源配置如下
在這里插入圖片描述

六、私有模型下載測試

1、下載ChatGLM3工程

git clone https://github.com/THUDM/ChatGLM3
在這里插入圖片描述

2、安裝依賴

執行下面的pip命令,安裝依賴
cd ChatGLM3
pip install -r requirements.txt
在這里插入圖片描述

3、模型測試

進入basic_demo目錄,查看測試的demo,執行腳本:
python cli_demo.py
這個目錄放了各種測試用的demo,為了方便使用,本次主要采用命令行客戶端的方式測試
在這里插入圖片描述

七、微調工具LLaMA-Factory

1、LLaMA-Factory簡介

本次采用市面流行的微調工具LLaMA-Factory,實現無代碼微調;它提供了簡單易用的訓練推理一體化WebUI 。
在這里插入圖片描述

git地址:https://github.com/hiyouga/LLaMA-Factory.git
特點如下:
1)幾乎為0的命令行操作和零代碼編輯
2)中英文雙語界面即時切換
3)訓練、評估和推理一體化界面
4)預置 25 種模型和 24 種多語言訓練數據
5)即時的訓練狀態監控和簡潔的模型斷點管理

2、LLaMA-Factory下載安裝

1)下載工程

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
在這里插入圖片描述

2)創建單獨python環境

conda create -n llama_factory python=3.10
conda activate llama_factory

3)安裝依賴

cd LLaMA-Factory
pip install -e .[torch,metrics]
在這里插入圖片描述

3、LLaMA-Factory測試

使用官網提供的 Llama3-8B-Instruct 進行測試

1)下載Llama3-8B-Instruct

git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
在這里插入圖片描述

下面三行命令分別對 Llama3-8B-Instruct 模型進行 LoRA 微調、推理和合并。
注意:執行之前將下面3個文件中的模型地址改為本地下載的地址

2)模型微調

在這里插入圖片描述

執行命令:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml

也可以直接采用原始命令參數的方式調用,例如:

llamafactory-cli train \--model_name_or_path /root/autodl-tmp/model/Meta-Llama-3-8B-Instruct \--template llama3

微調結果如下:
在這里插入圖片描述

3)模型推理

在這里插入圖片描述

執行命令:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml

使用瀏覽器界面風格推理

CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat examples/inference/llama3_lora_sft.yaml
啟動 OpenAI 風格 API推理
CUDA_VISIBLE_DEVICES=0 llamafactory-cli api examples/inference/llama3_lora_sft.yaml

推理如下:
在這里插入圖片描述

4)模型合并

在這里插入圖片描述

執行命令:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml

合并結果:
/root/autodl-tmp/LLaMA-Factory/models/llama3_lora_sft
在這里插入圖片描述

八、基于模型問題本地知識庫

1、環境映射配置

1)AutoDL配置

注:僅限于跟我一樣用的AutoDL平臺的場景
如果您正在使用 AutoDL,先修改AutoDL的默認對外開放的端口:

export GRADIO_SERVER_PORT=6006 

2)啟動web UI界面

CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=1 llamafactory-cli webui

---啟動后頁面打開展示不全 后改用了老版本的LLaMA-Factory

cd LLaMA-Factory
pip install -r requirements.txt
python src/train_web.py

在這里插入圖片描述

3)本地端口映射處理

注:僅限于跟我一樣用的AutoDL平臺的場景
ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151
其中root@123.125.240.150和42151分別是實例中SSH指令的訪問地址與端口,請找到自己實例的ssh指令做相應替換。6006:127.0.0.1:6006是指代理實例內6006端口到本地的6006端口。

2、模型下載

1)下載模型(權重相關文件)

在autodl-tmp下新建model用于放模型文件
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
在這里插入圖片描述

檢查權重文件
對比modelscope上的文件列表和文件的大小,檢查是否下載完整
在這里插入圖片描述

2)下載embedding模型

下載huggingface上的詞嵌入模型
git clone https://huggingface.co/BAAI/bge-large-zh-v1.5
git clone https://huggingface.co/shibing624/text2vec-base-chinese
在這里插入圖片描述

3、數據準備

{"instruction": "朱利葉斯·凱撒是如何死亡的?","input": "","output": "朱利葉斯·凱撒,又稱尤利烏斯·愷撒(Julius Caesar)是古羅馬的政治家、軍事家和作家。他于公元前44年3月15日被刺殺。 \n\n根據歷史記載,當時羅馬元老院里一些參議員聯合起來策劃了對愷撒的刺殺行動,因為他們擔心愷撒的統治將給羅馬共和制帶來威脅。在公元前44年3月15日(又稱“3月的艾達之日”),愷撒去參加元老院會議時,被一群參議員包圍并被攻擊致死。據記載,他身中23刀,其中一刀最終致命。"},{"instruction": "法國的首都是什么?","input": "","output": "法國的首都是巴黎。"},{"instruction": "生成一個人們去野營旅行可能需要的十件物品的清單。","input": "","output": "1. 帳篷: 帳篷是野營必備的物品,可以提供庇護,避免風吹日曬,還能夠防止野生動物的干擾。\n2. 睡袋: 睡袋能夠為您提供一個溫暖舒適的睡眠環境,確保您在野外可以擁有一個良好的睡眠。\n3. 防水夾克: 在野外,天氣變化無常,因此攜帶一件防水夾克十分必要,可以防止您被雨水淋濕。\n4. 照明設備: 如手電筒、頭燈等,在野外夜晚黑暗的情況下為您提供照明,確保您的安全。\n5. 烹飪用具: 如便攜式爐灶、鍋碗瓢盆等,方便您在野外烹飪食物。\n6. 刀具: 如多功能軍刀、折疊刀等,能夠滿足您在野外的各種需求。\n7. 防蚊液: 在野外,蚊蟲十分繁多,因此攜帶防蚊液能夠有效避免蚊蟲叮咬。\n8. 防曬霜: 日曬對皮膚有害,攜帶防曬霜能夠有效防護紫外線,避免曬傷。\n9. 水壺: 在野外,水是必不可少的,攜帶一個水壺能夠方便您隨時飲用。\n10. 隨身背包: 一個輕"},{"instruction": "討論大蕭條的原因","input": "","output": "大蕭條是20世紀初期發生在全球范圍內的經濟衰退現象,其中最為嚴重的地區當屬美國。這場經濟危機持續了近十年之久,它的起因較為復雜,涉及多方面因素。\n\n首先,我們要提到1929年的股市崩盤。股票價格大幅下跌,導致投資者損失慘重,進而影響了消費信心。\n\n其次,當時的金融政策也是一個重要因素。為了維持金本位制度,聯邦儲備系統采取緊縮政策,卻進一步加劇了資金短缺的問題。\n\n此外,當時政府對失業率的應對不力,社會保障制度不健全,也為經濟衰退的進一步惡化埋下了禍根。\n\n最后,國際貿易也受到了影響。由于當時許多國家采取貿易保護主義政策,全球貿易額大幅下降,給各國經濟造成了巨大沖擊。\n\n綜上所述,大蕭條的原因是多方面的,涉及到金融政策,國際貿易,社會保障制度等多個領域。它給全球經濟發展帶來了嚴重的挑戰,也為我們提供了深刻的歷史經驗教訓。"}

將數據集添加到數據集庫中
在這里插入圖片描述

4、UI界面微調演示和驗證

通過界面進行微調測試、再通過界面進行模型推理、最后在界面上直接進行模型合并

1)微調

默認是在Train訓練頁面;且訓練階段為“Supervised Fine-Tuning”(SFT)微調階段
在這里插入圖片描述

命令預覽如下:

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--do_train True \--model_name_or_path /root/autodl-tmp/model/chatglm3-6b \--finetuning_type lora \--template chatglm3 \--dataset_dir data \--dataset mydata \--cutoff_len 1024 \--learning_rate 5e-05 \--num_train_epochs 3.0 \--max_samples 20000 \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--max_grad_norm 1.0 \--logging_steps 5 \--save_steps 100 \--warmup_steps 0 \--lora_rank 8 \--lora_dropout 0.1 \--lora_target query_key_value \--output_dir saves/ChatGLM3-6B-Chat/lora/train_2024-05-20-21-25-48 \--fp16 True \--val_size 0.1 \--evaluation_strategy steps \--eval_steps 100 \--load_best_model_at_end True \--plot_loss True

微調結束:
在這里插入圖片描述
輸出文件如下:
在這里插入圖片描述

2)推理

切換到聊天模式,加載模型之后即可進行聊天提問
在這里插入圖片描述

3)模型合并

先刷新適配器,再選擇微調時輸出的目錄;設置最大的塊大小;設置合并后導出的模型目錄,進行導出
在這里插入圖片描述

5、代碼微調演示和驗證

基于代碼調用合并后的模型,進行推理驗證,樣例如下:
在這里插入圖片描述

6、本地知識庫代碼改造

只需要將原來中直接引入"THUDM/chatglm3-6b"的地址,改為本地合并后的模型地址 “/root/autodl-tmp/model/chatglm3-6b-sft” 即可;
修改llm_model.py中的get_chatglm3_6b_model方法

def get_chatglm3_6b_model(model_path=keys.Keys.CHATGLM3_MODEL_PATH):MODEL_PATH = "/root/autodl-tmp/model/chatglm3-6b-sft" #"THUDM/chatglm3-6b"llm = chatglm3(llm.load_model(model_name_or_path=MODEL_PATH)return llm

其他內容和前面AI大模型探索之路-實戰篇3基于私有模型GLM-企業級知識庫開發實戰中一樣
啟動運行測試:
在這里插入圖片描述

總結

通過本文的深入分析和實踐,我們成功地實現了一種基于微調技術的企業級知識庫改造落地方案。這一方案充分結合了自然語言處理技術和企業的實際需求,不僅提高了知識庫構建的效率,還確保了數據的安全性和隱私性。在實踐中,我們采用了開源的ChatGLM3-6B模型作為基礎,通過微調技術對其進行優化,使其更加適應企業的應用場景。同時,我們還探討了不同的知識庫架構方案,為企業提供了更多的選擇空間。

在這里插入圖片描述

🎯🔖更多專欄系列文章:AIGC-AI大模型探索之路

如果文章內容對您有所觸動,別忘了點贊、?關注,收藏!加入我,讓我們攜手同行AI的探索之旅,一起開啟智能時代的大門!

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

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

相關文章

CS西電高悅計網課設——校園網設計

校園網設計 一,需求分析 所有主機可以訪問外網 主機可以通過域名訪問Web服務器 為網絡配置靜態或者動態路由 圖書館主機通過DHCP自動獲取IP參數 為辦公樓劃分VLAN 為所有設備分配合適的IP地址和子網掩碼,IP地址的第二個字節使用學號的后兩位。 二…

ESP32 實現獲取天氣情況

按照小安派AiPi-Eyes天氣站思路,在ESP32 S3上實現獲取天氣情況。 一、在ESP32 S3實現 1、main.c 建立2個TASK void app_main(void) {//lvgl初始化xTaskCreate(guiTask, "guiTask", 1024 * 6, NULL, 5, NULL);//wifi初始化、socket、json處理taskcustom_…

ES6之數值的擴展

1. 數值的擴展 1.1. 二進制和八進制字面量表示:1.2. 數值判斷方法: 1.2.1. Number.isFinite() 檢查一個值是否為有限的數值。1.2.2. Number.isNaN() 更準確地檢測NaN值。1.2.3. 傳統的全局方法 isFinite() 和 isNaN() 的區別 1.3. 數值轉換方法:1.4. 整數檢查與精度: 1.4.1. Nu…

防火墻技術基礎篇:解析防火墻的網絡隔離機制

防火墻技術基礎篇:解析防火墻的網絡隔離機制 網絡安全在現代社會中扮演著重要的角色,保護網絡系統、用戶和數據免受未經授權的訪問、破壞和竊取。個人、企業和國家都需要加強網絡安全意識,采取有效措施保護自身的網絡安全。隨著網絡攻擊手段…

【QT八股文】系列之篇章2 | QT的信號與槽機制及通訊流程

【QT八股文】系列之篇章2 | QT的信號與槽機制及通訊流程 前言2. 信號與槽信號與槽機制介紹/本質/原理,什么是Qt信號與槽機制?如何在Qt中使用?信號與槽機制原理,解析流程Qt信號槽的調用流程信號與槽機制的優缺點信號與槽機制需要注…

深入分析 Android Activity (三)

深入分析 Android Activity (三) 1. Activity 的配置變化處理 當設備配置(如屏幕方向、語言、屏幕大小等)發生變化時,默認情況下,Android 會銷毀并重新創建當前的 Activity。這種行為確保了新配置能夠正確應用,但在某…

HTML5 性能優化和計算機硬件使用

目錄 啟用硬件加速圖像與媒體優化資源加載與緩存CSS與布局優化JavaScript性能優化瀏覽器兼容性與特性檢測啟用硬件加速 Canvas繪圖 <canvas> 元素支持硬件加速,可以顯著提升圖形繪制和動畫的性能。確保在支持的瀏覽器中啟用硬件加速,如使用translate3d(0, 0, 0) hack…

解鎖Android高效數據傳輸的秘鑰 - Parcelable剖析

作為Android開發者&#xff0c;我們經常需要在不同的組件(Activity、Service等)之間傳輸數據。這里的"傳輸"往往不僅僅是簡單的數據復制&#xff0c;還可能涉及跨進程的內存復制操作。當傳輸的數據量較大時&#xff0c;這種操作可能會帶來嚴重的性能問題。而Android系…

web自動化之PO模式

PO模式 1、為什么需要PO思想&#xff1f; 首先我們觀察和思考一下&#xff0c;目前我們寫的作業腳本的問題&#xff1a; 元素定位和操作動 作寫到一起了&#xff0c;這就就會用導致一個問題&#xff1a; UI的頁面元素比較容易變化的&#xff0c;所以元素定位和腳本操作寫到一…

如何將照片從 iPhone 傳輸到閃存驅動器【無質量損壞】

概括 人們喜歡用 iPhone 拍照&#xff0c;因為照片通常都很漂亮&#xff0c;這都要歸功于 iPhone 令人驚嘆的技術。但照片更新后會占用更多空間&#xff0c;并且您可能會開始收到沒有存儲空間的通知。因此&#xff0c;您可以將照片傳輸到 USB 驅動器&#xff0c;然后從 iPhone…

Spring Boot構建mvc項目

好的,以下是一個簡單的Java MVC(Model-View-Controller)項目示例,使用Spring Boot框架和MySQL數據庫。這個項目包括基本的CRUD操作。 項目結構 src/ └── main/├── java/│ └── com/│ └── example/│ └── demo/│ ├──…

springboot-阿里羚羊 服務端埋點

官方文檔 集成Java SDK 手動引入jar包「quickaplus-log-collector-java-sdk-1.0.1-SNAPSHOT.jar」 <dependency><groupId>com.alibaba.lingyang</groupId><artifactId>quickaplus-log-collector-java-sdk</artifactId><version>1.0.1&l…

應用案例 | 如何實時監測和管理冷鏈倉庫溫濕度?

一、項目背景 冷鏈倉庫溫濕度管理的重要性在于確保倉庫內產品的質量和安全。通過遵循相關法規和標準&#xff0c;滿足客戶對產品質量的需求&#xff0c;同時實施有效的溫濕度管理措施&#xff0c;可以降低成本并提高倉庫作業效率。該項目的實施旨在幫助客戶保證產品的新鮮度&a…

Java - AbstractQueuedSynchronizer

AQS簡介 AQS全稱AbstractQueuedSynchronizer&#xff0c;抽象隊列同步器&#xff0c;是一個實現同步組件的基礎框架。AQS使用一個int類型的成員變量state維護同步狀態&#xff0c;通過內置的同步隊列&#xff08;CLH鎖、FIFO&#xff09;完成線程的排隊工作&#xff0c;底層主…

echarts 散點圖修改散點圖中圖形形狀顏色大小

話不多說&#xff0c;直接上代碼 let option {color:[xxx, xxx, xxx, xxx], //直接設置color可修改圖形顏色title: {text: 散點圖圖形,},tooltip: {trigger: axis,axisPointer: {type: cross}},legend: {top: 2,right:2,itemWidth: 10,itemHeight: 10,textStyle:{fontSize:14}…

shell腳本條件語句和循環語句

文章目錄 一、條件語句測試比較整數數值字符串比較邏輯運算雙中括號&#xff08; &#xff09;{ }if語句結構case語句 二、循環語句基礎知識for循環whileuntil雙重循環及跳出循環 一、條件語句 測試 條件測試&#xff1a;判斷某需求是否滿足&#xff0c;需要由測試機制來實現…

視頻分類——C3D使用

整體比較分散&#xff0c;可能很多源碼都需要修改&#xff0c;需要有耐心。 一、數據準備 PS 調研后&#xff0c;上手容易代碼比較簡潔的是&#xff1a;https://github.com/Niki173/C3D/tree/main 因為源碼很多參數都寫死到了源碼中&#xff0c;沒有解耦&#xff0c;并且默…

CCF-CSP認證 2024年3月 4.化學方程式配平

題解&#xff1a;首先完成數據的讀入&#xff0c;然后高斯消元求秩按題意解即可 #pragma GCC optimize(2, 3, "Ofast", "inline") #include <bits/stdc.h> using namespace std; const int maxn 100;using matrix double[maxn][maxn]; using vect…

5.20Git

版本控制工具Git&#xff0c;其他的工具還有SVN 共享代碼&#xff0c;追溯記錄&#xff0c;存儲.c文件 Git實現的功能&#xff1a;回溯&#xff08;以前某個時間節點的數據情況&#xff09;共享&#xff08;大家共享修改&#xff09; Git&#xff1a;80% SVN&#xff…

QT tableWidget詳細分析

一.定義 QTableWidget是一個用于顯示表格數據的Qt控件&#xff0c;它是一個基于Qt Model/View框架的視圖組件。QTableWidget提供了一種簡單的方式來展示和編輯表格數據&#xff0c;用戶可以通過添加行、列和單元格來構建一個完整的數據表格。 下面是一些QTableWidget的主要特點…