Embedding模型微調實戰(ms-swift框架)

目錄

簡介

1. 創建虛擬環境

2 安裝ms-swift

3安裝其他依賴庫

4. 下載數據集

5.開始embedding模型訓練

6. 自定義數據格式和對應的Loss類型

(1) infoNCE損失? ? ?

(2)余弦相似度損失

(3)對比學習損失

(4).在線對比學習損失

(5)損失函數總結


簡介

ms-swift是魔搭社區提供的大模型與多模態大模型微調部署框架,現已支持500+大模型與200+多模態大模型的訓練(預訓練、微調、人類對齊)、推理、評測、量化與部署。其中大模型包括:Qwen3、Qwen3-MoE、Qwen2.5、InternLM3、GLM4、Mistral、DeepSeek-R1、Yi1.5、TeleChat2、Baichuan2、Gemma2等模型,多模態大模型包括:Qwen2.5-VL、Qwen2-Audio、Llama4、Llava、InternVL3、MiniCPM-V-2.6、GLM4v、Xcomposer2.5、Yi-VL、DeepSeek-VL2、Phi3.5-Vision、GOT-OCR2等模型。

🍔 除此之外,ms-swift匯集了最新的訓練技術,包括LoRA、QLoRA、Llama-Pro、LongLoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth、和Liger等輕量化訓練技術,以及DPO、GRPO、RM、PPO、GKD、KTO、CPO、SimPO、ORPO等人類對齊訓練方法。ms-swift支持使用vLLM、SGLang和LMDeploy對推理、評測和部署模塊進行加速,并支持使用GPTQ、AWQ、BNB等技術對大模型進行量化。ms-swift還提供了基于Gradio的Web-UI界面及豐富的最佳實踐。

https://github.com/modelscope/ms-swift?tab=readme-ov-file

1. 創建虛擬環境

conda create -n swift_venv python=3.12 -y
conda init bash && source /root/.bashrc
conda activate swift_venv
conda install ipykernel
ipython kernel install --user --name=swift_venv

2 安裝ms-swift

#1使用pip安裝,把ms-swift作為一個庫,安裝到anaconda的虛擬環境中
pip install ms-swift -U#2從源碼克隆安裝(推薦)pip install git+https://github.com/modelscope/ms-swift.git#3從源碼安裝
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .

3安裝其他依賴庫

pip install deepspeed liger-kernel 
pip install scikit-learn
pip install -U sentence-transformers
# 建議科學上?后,再執?下?的命令
pip install flash-attn --no-build-isolation

4. 下載數據集

# 設置下?命令,?需科學上?
export HF_ENDPOINT=https://hf-mirror.com
pip install --upgrade huggingface_hub
huggingface-cli download --repo-type dataset --resume-download microsoft/ms_marco --local-dir 下載保存路徑

數據格式:

5.開始embedding模型訓練

# 把下面命令,保存為train.sh格式,   運行bash train.sh命令,啟動訓練CUDA_VISIBLE_DEVICES=0 \
swift sft \--model /data/qwen3_embedding/Qwen3-Embedding-0.6B \--task_type embedding \--train_type full \     #訓練模式full lora  --torch_dtype bfloat16 \--num_train_epochs 100 \               #訓練輪數--per_device_train_batch_size 16 \   #訓練批次--per_device_eval_batch_size 16\--learning_rate 1e-4 \--lora_rank 8 \--lora_alpha 8 \--target_modules all-linear \     #目標模塊    all-attention--gradient_accumulation_steps 1 \--eval_steps 1 \--save_steps 1 \--save_total_limit 2 \--logging_steps 5 \--max_length 512 \--output_dir output \        #輸出路徑--warmup_ratio 0.05 \--dataloader_num_workers 8 \--model_author swift \--model_name swift-robot \--split_dataset_ratio 0.3 \   #train 和val分割比例--dataset /home/dataset \    #數據集路徑--loss_type infonce       # 損失函數3種類型   contrastive  cosine_similarity infonce

?使用swift sft --help命令查詢有哪些訓練設置參數。

6. 自定義數據格式和對應的Loss類型

(1) infoNCE損失? ? ?

? --loss_type? infonce

對?學習損失函數,最?化正樣

本對相似度,最?化負樣本對相似度 .

使?批內對?學習策略,將同批次內其他樣本作為負樣本.

數據格式:

[{"query": "如何學習編程?","response": "可以從Python語言開始入門,它語法簡單適合初學者。","rejected_response": ["隨便看看書就會了", "編程很難學不會的"]},{"query": "推薦一款性價比高的手機","response": "Redmi Note系列在2000元價位段表現均衡,值得考慮。","rejected_response": ["越貴的手機越好", "蘋果手機永遠是最好的"]}
]

?

(2)余弦相似度損失

?--loss_type cosine_similarity

直接優化預測相似度與真實相似度標簽的差異 ,使? MSE 損失計算 ||input_label - cosine_sim(u,v)||_2

數據格式:

[{"query": "A dog is barking loudly.","response": "The canine is making loud barking noises.","label": 0.8},{"query": "Children are playing in the park.","response": "Kids are playing in the playground.","label": 1.0},{"query": "The sun is shining brightly.","response": "Bright sunlight is visible.","label": 0.7}
]

(3)對比學習損失

?--loss_type contrastive

經典的對?學習損失,正樣本拉近,負樣本推遠 需要設置 margin 參數。

[{"query": "A dog is barking loudly.","response": "The canine is making loud barking noises.","label": 1},{"query": "Children are playing in the park.","response": "Kids are playing in the playground.","label": 1}]

(4).在線對比學習損失

--loss_type online_contrastive

對?學習的改進版本,選擇困難正樣本和困難負樣本 通常?標準對?學習效果更好。

(5)損失函數總結

?

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

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

相關文章

從性能優化賽到社區Committer,走進趙宇捷在Apache Fory的成長之路

Apache Fory 是一個基于JIT和零拷貝的高性能多語言序列化框架,實現了高效緊湊的序列化協議,提供極致的性能、壓縮率和易用性。在多語言序列化框架技術領域取得了重大突破,推動序列化技術步入高性能易用新篇章!這一切,都…

Python實例題:基于 Flask 的任務管理系統

目錄 Python實例題 題目 要求: 解題思路: 代碼實現: Python實例題 題目 基于 Flask 的任務管理系統 要求: 使用 Flask 框架構建一個任務管理系統,支持以下功能: 用戶認證(注冊、登錄、…

利用GPU加速TensorFlow

一、寫在前面 我們已經依靠keras和TensorFlow給大家做了一些機器學習在圖像處理中的應用(影像組學學習手冊,基于深度學習的圖像分類任務),此前的教程中我們沒有用GPU進行加速,但是相較于CPU而言,GPU是設計用于處理大規模并行計算任務的硬件&…

模型預測專題:強魯棒性DPCC

0 1 前言 在進行DPCC的學習過程中,于下面鏈接看到了一篇強魯棒性算法;感覺挺有意思的,學習一下。 永磁同步電機高性能控制算法(12)——基于預測電流誤差補償的強魯棒預測控制/參數辨識&有限集預測控制與連續集預…

修復opensuse 風滾草rabbitmq的Error: :plugins_dir_does_not_exist問題

https://wiki.archlinux.org/title/Talk:RabbitMQ 報錯 yqh192 /u/l/r/l/r/plugins> sudo rabbitmq-plugins enable rabbitmq_management Error: :plugins_dir_does_not_exist Arguments given:enable rabbitmq_managementUsagerabbitmq-plugins [--node <node>] [--…

前端做gis地圖有哪些庫

以下是前端開發GIS地圖常用的庫&#xff1a; Leaflet&#xff1a;輕量級、易于使用的開源JavaScript庫&#xff0c;具有豐富的地圖功能和插件生態系統&#xff0c;支持多種地圖數據源&#xff0c;適合初學者和專業開發者。其優勢在于簡潔性和易用性&#xff0c;代碼結構清晰&am…

賦能城市安全韌性|眾智鴻圖總裁扈震受邀出席智慧城市大會發表主題報告

——“眾智鴻圖作為城市基礎設施智能化綜合服務提供商&#xff0c;以地理信息科學、時空大數據、人工智能為核心能力&#xff0c;長期深耕于燃氣、供水、排水等城市基礎設施生命線領域及港口、園區等工業領域&#xff0c;致力于為城市穩定運行與高效發展提供堅實保障。” 2025年…

【大語言模型入門】—— 淺析LLM基座—Transformer原理

【大語言模型入門】—— 淺析LLM基座—Transformer原理 解密GPT核心技術&#xff1a;Transformer架構深度解析被反復強調的核心概念意味著什么&#xff1f; GPT預測機制解析&#xff1a;從Next Token Prediction到任務推理核心機制的本質案例驅動的機制解析解構策略&#xff1a…

Django打造智能Web機器人控制平臺

Django 實現 Web 機器人控制 以下是關于 Django 實現 Web 機器人控制管理的實例思路和關鍵代碼片段,涵蓋多個常見場景。由于篇幅限制,剩余的可通過類似模式擴展。 基礎機器人模型定義 # models.py from django.db import modelsclass Robot(models.Model):name = models.C…

周賽98補題

題目意思&#xff1a; 給定一個數字判斷加上自身任意因子數&#xff0c;是否能成為一個奇數。 思路&#xff1a; 我們想一個最簡單的判斷方法&#xff0c; 任意的數字的因子數都有1&#xff0c;故&#xff0c;最簡單的方法就是判斷奇偶。 奇數1成偶數&#xff0c;偶數1成奇…

【STM32】 STM32低功耗模式詳解:睡眠模式與喚醒機制【待測試】

本篇知識點基于F0講解 一、STM32三種低功耗模式參考表格 模式功耗喚醒時間保持狀態典型應用場景睡眠模式中等 (mA級)最短 (μs級)CPU停止&#xff0c;外設保持短暫待機&#xff0c;快速響應停止模式低 (μA級)中等 (ms級)RAM保持&#xff0c;時鐘停止長時間待機&#xff0c;電…

【Vue入門學習筆記】Vue核心語法

目錄 準備工作刪除不需要的代碼 模版語法文本插值使用JavaScript表達式無效寫法原始HTML 屬性綁定簡寫布爾型Attribute動態綁定多個值 準備工作 刪除不需要的代碼 刪除components下的文件 進入App.vue 刪掉代碼&#xff0c;只保留如下內容 <template></template&g…

ClickHouse 窗口分析 argMax() / argMin()

argMin() 是 ClickHouse 中一個非常有用的聚合函數&#xff0c;它可以找出某個列的最小值&#xff0c;并返回該最小值對應的另一個列的值 函數語法 argMin(arg, val) arg&#xff1a;要返回的列&#xff08;當找到最小值時返回該列的值&#xff09; val&#xff1a;用于比較的…

k8s client 通過KubeConfig和證書方式連接api server

一、背景 本文以kubePi這樣一個k8s客戶端為示例,使用證書方式,怎么連接k8s集群。 然后告訴你證書是如何生成的, 最后通過一個Python編程示例,在程序里如何使用。 api server地址:比如https://110.206.56.308:6443 Certificate:證書內容 Certificate Key:證書的私鑰 先…

(2025.07)解決——ubuntu20.04系統開機黑屏,左上角光標閃爍

前面一些碎碎念&#xff1a; 電腦裝的雙系統&#xff0c;之前都還好著&#xff0c;今天突然ubuntu開機的時候黑屏了&#xff0c;左上角有光標在閃爍&#xff0c;也查了一些資料&#xff0c;基本上大家的都是驅動有問題&#xff0c;還有內存問題。&#xff08;個人建議&#xff…

一文講清libmodbus在STM32上基于FreeRTOS的移植

libmodbus 開發庫概述 libmodbus是一個免費的跨平臺支持RTU和TCP的Modbus庫&#xff0c;遵循LGPL V2.1協議。libmodbus支持Linux、 Mac Os X、 FreeBSD、 QNX和Windows等操作系統。 libmodbus可以向符合Modbus協議的設備發送和接收數據&#xff0c;并支持通過串口或者TCP網絡進…

go語言安裝達夢數據完整教程

一、安裝 go-dm 驅動 1. 使用 go get 命令安裝 # 打開PowerShell或命令提示符 go get github.com/dmdbms/go-dm# 若網絡問題&#xff0c;配置代理 go env -w GOPROXYhttps://goproxy.cn,direct2. 驗證驅動安裝 go list -m github.com/dmdbms/go-dm# 預期輸出類似 github.com…

華為云Flexus+DeepSeek征文|基于Dify構建音視頻內容轉錄工作流

華為云FlexusDeepSeek征文&#xff5c;基于Dify構建音視頻內容轉錄工作流 一、構建音視頻內容轉錄工作流前言二、構建音視頻內容轉錄工作流環境2.1 基于FlexusX實例的Dify平臺2.2 基于MaaS的模型API商用服務 三、構建音視頻內容轉錄工作流實戰3.1 配置Dify環境3.2 配置Dify工具…

Pandas6(數據清洗2)——置換和隨機采樣、get_dummies、擴展數據類型、字符串處理函數

數據清洗2 一、置換和隨機采樣&#xff08;permutation,sample&#xff09; 隨機置換&#xff08;打亂排序&#xff08;洗牌&#xff09;&#xff09;函數&#xff1a;numpy.random.permutation &#xff0c;可以對一個序列進行隨機排序&#xff0c;常用于數據集隨機劃分等場景…

按月設置索引名的完整指南:Elasticsearch日期索引實踐

按月設置索引名的完整指南:Elasticsearch日期索引實踐 在時序數據場景中,按月設置索引名(如logs-2024-01)是優化查詢效率、降低管理成本的關鍵策略。以下是三種實現方案及詳細步驟: 方案一:索引模板 + 日期數學表達式(推薦) 原理:利用ES內置的日期數學表達式動態生成…