LLaMA-Factory 單卡后訓練微調Qwen3完整腳本

LLaMA-Factory 單卡后訓練微調Qwen3完整腳本

flyfish

使用說明

  1. 將下面代碼保存為 train_single_gpu.sh

  2. 修改腳本中的以下參數:
    MODEL_PATH:模型路徑
    DS_CONFIG_PATH:DeepSpeed配置文件路徑
    OUTPUT_PATH:輸出目錄路徑
    --dataset erfen:替換為實際數據集名稱 這里是erfen

  3. 賦予執行權限并運行:

chmod +x train_single_gpu.sh
./train_single_gpu.sh

完整腳本如下

#!/bin/bash# 單顯卡分布式訓練腳本
# 確保您已安裝所需依賴:torch, deepspeed, transformers 等# 顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # 無顏色# 定義基礎變量
NPROC_PER_NODE=1  # 單顯卡
NNODES=1
NODE_RANK=0
MASTER_ADDR="localhost"
MASTER_PORT=29500  # 隨機端口,確保未被占用# 模型和數據集配置
MODEL_PATH="/media/user/models/Qwen/Qwen3-8B/"  # 替換為您的模型路徑
DS_CONFIG_PATH="examples/deepspeed/ds_z3_config.json"  # 替換為您的DeepSpeed配置文件路徑
OUTPUT_PATH="./output/sft_qwen3_8b"  # 輸出路徑# 檢查必要的文件和路徑
check_prerequisites() {echo -e "${YELLOW}檢查環境和文件...${NC}"# 檢查GPU是否可用if ! command -v nvidia-smi &> /dev/null; thenecho -e "${RED}錯誤: 未找到nvidia-smi,可能沒有可用的GPU。${NC}"exit 1fi# 檢查模型路徑if [ ! -d "$MODEL_PATH" ]; thenecho -e "${RED}錯誤: 模型路徑 '$MODEL_PATH' 不存在。${NC}"exit 1fi# 檢查DeepSpeed配置文件if [ ! -f "$DS_CONFIG_PATH" ]; thenecho -e "${RED}錯誤: DeepSpeed配置文件 '$DS_CONFIG_PATH' 不存在。${NC}"exit 1fi# 檢查輸出目錄if [ ! -d "$(dirname "$OUTPUT_PATH")" ]; thenecho -e "${YELLOW}創建輸出目錄: $(dirname "$OUTPUT_PATH")${NC}"mkdir -p "$(dirname "$OUTPUT_PATH")"fiecho -e "${GREEN}環境檢查完成,準備開始訓練...${NC}"
}# 主訓練函數
run_training() {echo -e "${YELLOW}開始單顯卡分布式訓練...${NC}"# 定義分布式參數DISTRIBUTED_ARGS="--nproc_per_node $NPROC_PER_NODE \--nnodes $NNODES \--node_rank $NODE_RANK \--master_addr $MASTER_ADDR \--master_port $MASTER_PORT"# 運行訓練命令torchrun $DISTRIBUTED_ARGS src/train.py \--deepspeed $DS_CONFIG_PATH \--stage sft \--do_train \--use_fast_tokenizer \--flash_attn auto\--model_name_or_path $MODEL_PATH \--dataset erfen \--template qwen \--finetuning_type lora \--lora_target q_proj,v_proj \--output_dir $OUTPUT_PATH \--overwrite_cache \--overwrite_output_dir \--warmup_steps 100 \--weight_decay 0.1 \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--ddp_timeout 9000 \--learning_rate 5e-6 \--lr_scheduler_type cosine \--logging_steps 1 \--cutoff_len 4096 \--save_steps 1000 \--plot_loss \--num_train_epochs 3 \--bf16# 檢查訓練是否成功if [ $? -eq 0 ]; thenecho -e "${GREEN}訓練成功完成!模型保存在: $OUTPUT_PATH${NC}"elseecho -e "${RED}訓練過程中發生錯誤!${NC}"exit 1fi
}# 主函數
main() {# 顯示系統信息echo -e "${YELLOW}===== 系統信息 ====${NC}"echo "GPU信息:"nvidia-smi | head -n 10echo -e "${YELLOW}=================${NC}"# 檢查環境check_prerequisites# 開始訓練run_training
}# 執行主函數
main

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

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

相關文章

AI自動化神器-DroidRun使用體驗

引言 DroidRun 是一個強大的框架,用于通過 LLM 代理控制 Android 設備。它允許您使用自然語言命令自動化 Android 設備交互。 特點 使用自然語言命令控制 Android 設備 支持多個 LLM 提供商(OpenAI、Anthropic、Gemini) 易于使用的 CLI 用于自定義自動化的可擴…

免費文件管理 智能轉換GC-Prevue:PDF 轉 Word 多種格式 一鍵完成

前言 在現代辦公環境中,高效的數據處理和文檔管理是提高工作效率的關鍵。GC-Prevue是一款專為Windows系統設計的辦公輔助軟件,軟件下載地址安裝包 它通過一系列實用的功能,幫助用戶更高效地處理和管理文檔,提升整體辦公效率。 軟…

Java SE--運算符和邏輯控制

大多數和c語言一樣 新增補充&#xff1a; 一.運算符 1.左移&#xff08;<<&#xff09; 結果公式&#xff1a; n*2^x (n代表所要位移的數&#xff0c;x代表位移幾位) 2.右移&#xff08;>>&#xff09; 結果公式&#xff1a; n/2*x (n代表所要位移的數&a…

如何配置core dump生成

文章目錄 **一、臨時配置&#xff08;當前會話有效&#xff09;**1. **設置core文件大小限制**2. **設置core文件命名格式&#xff08;可選&#xff09;** **二、永久配置&#xff08;所有會話生效&#xff09;**1. **修改系統限制配置**2. **修改內核參數** **三、高級配置選項…

小程序包上傳大小超限制處理

背景。想要進行真機測試&#xff0c;體驗版。但是單機上傳操作之后。提示超大曉限制。上傳操作 完成填寫后上傳 上傳后超過限制。能看到圖片下方有錯誤提示。可以根據提示處理包大小問題。 解決方案&#xff1a;待續

JS | 動態生成函數 和 保存局部變量

動態生成函數 和 保存局部變量&#xff0c;適用于 閉包 和 高階函數&#xff0c;存在于異步編程、事件處理、回調函數以及函數式編程中。 動態生成函數&#xff1a;運行時創建函數。 閉包&#xff1a;創建一個可以訪問外部作用域變量的函數。 Function 構造函數&#xff1a;使…

設計模式(七)

迭代器模式&#xff08;Iterator Pattern&#xff09;詳解 一、核心概念 迭代器模式提供一種方法來順序訪問一個聚合對象中的各個元素&#xff0c;而又不暴露該對象的內部表示。該模式將遍歷邏輯封裝在迭代器對象中&#xff0c;使聚合對象和遍歷邏輯分離。 核心組件&#xf…

24年OPPO秋季筆試題

257. 小歐過河 鏈接&#xff1a;https://kamacoder.com/problempage.php?pid1337 思路&#xff1a;這道題的實際需要求的就是在兩個11之間&#xff0c;最多能有多少個0。可以記錄在遍歷序列的時候&#xff0c;記錄有最多個0的1的兩個下標&#xff0c;最后再返回其差值。要注…

處理Lombok的一個小BUG

對于Lombok報錯的修改 一、問題描述 在使用IDEA創建spring boot項目時如果你勾選了Lombok&#xff0c;生成的Lombok會隨著maven的刷新而改變處理器的掃描路徑&#xff0c;從項目類變到自定義的處理器路徑 二、原因與解決方法 原因就是這里寫了Lombok的路徑才會導致你每次刷新都…

【Java入門到精通】(一)Java發展歷程與環境搭建指南

一、Java的發展 Java是在1991年由SUN公司的James Gosling&#xff08;Java之父&#xff09;及其團隊所研發的一種編程語言&#xff0c;第一個版本耗時18個月&#xff0c;最開始命名為Oak&#xff08;一種橡樹&#xff09;。Java現在廣泛應用于各種大型互聯網應用&#xff0c;其…

【RK3568+PG2L50H開發板實驗例程】Linux部分/UAR讀寫案例

本原創文章由深圳市小眼睛科技有限公司創作&#xff0c;版權歸本公司所有&#xff0c;如需轉載&#xff0c;需授權并注明出處&#xff08;www.meyesemi.com) 1.1. 案例簡介 本案例旨在介紹如何測試開發板上的 UART 串口通信功能。 開發板支持的串口及其對應的設備節點如下表所…

Webpack 中的 Loader 和 Plugin 全面詳解

&#x1f3af; Webpack 中的 Loader 和 Plugin 全面詳解 &#x1f4cc; 整理不易&#xff0c;記得收藏、點贊再加關注&#xff0c;后續還會更新更多實戰文檔&#xff01; Webpack 是現代前端構建體系的核心工具&#xff0c;其中 Loader 和 Plugin 是其功能擴展的兩大支柱。它們…

主流分布式中間件及其選型

分布式架構中的中間件技術 在互聯網公司的分布式架構中&#xff0c;中間件是支撐系統高可用、高并發、可擴展的核心組件。這些中間件針對分布式環境下的共性問題&#xff08;如通信、數據一致性、資源調度等&#xff09;提供標準化解決方案&#xff0c;極大降低了分布式系統的…

設備需求極致緊湊的空間體驗,我們該如何解決?

在自動化集成過程&#xff0c;往往會碰到設備對控制系統體積有極致要求的情況&#xff0c;面對這樣的挑戰&#xff0c;如何解決&#xff1f; 項目背景與需求分析 在自動化集成過程&#xff0c;往往會碰到設備對控制系統體積有極致要求的情況&#xff0c;面對這樣的挑戰&#x…

Kotlin擴展函數與屬性

擴展函數和屬性是Kotlin中最具特色的功能之一&#xff0c;它們允許我們在不修改原有類的情況下為類添加新功能。這種設計既保持了類的封裝性&#xff0c;又提供了強大的擴展能力。 一、擴展函數&#xff1a;為現有類添加新行為 1.1 基礎擴展函數 擴展函數允許我們為任何類&am…

廚師上門做飯小程序源碼php方案

廚師上門做飯小程序源碼&#xff0c;開發語言后端php&#xff0c;前端uniapp。可二開定制 三個端&#xff1a;用戶端師傅端小程序&#xff0c;pc管理后臺。 一 用戶端 1.單點大廚&#xff1a;選擇廚師預約下單&#xff0c;查看廚師評價、廚師的套餐。 2.點套餐&#xff1a;選擇…

LLM大模型如何訪問MySQL業務數據庫

目錄 一、LLM大模型如何訪問MySQL業務數據庫 1.1 為什么需要SQL Agent? 1.2 什么是 create_sql_agent&#xff1f; 1.3 什么是SQLDatabaseToolkit? 二、SQL Agent智能體操作MySQL數據庫 三、本地啟動服務 驗證效果 四、怎么提高SQL Agent智能體的回復準確性&#xff1…

MySQL(112)如何選擇讀寫分離策略?

選擇讀寫分離策略是實施讀寫分離的關鍵一步。常見的讀寫分離策略包括簡單的讀寫分離和基于負載均衡的讀寫分離。為了實現這些策略&#xff0c;我們需要動態地選擇數據源。下面詳細介紹如何實現基于Spring Boot的讀寫分離&#xff0c;并結合代碼示例展示不同策略的實現。 讀寫分…

日志-解決Linux因target is busy無法卸載硬盤/分區的問題 - PHP持續占用分區

效果圖 寫在前面 此次遇到的問題是&#xff0c;php-fpm持續占用設備/mnt/disk1&#xff0c;強制殺死php所有進程后&#xff0c;依然會自動產生新的進程再次霸占分區&#xff0c;導致設備無法卸載umount。思路是解決誰在不停的搗亂。 步驟 核心&#xff1a; 掛載文件系統到指定…

Linux系統權限維持篇

Openssh后門 重新安裝自定義的openssh&#xff0c;達到記錄賬戶密碼&#xff0c;也可以采用萬能密碼連接的功能 1、登錄方式 2、登錄軟件 3、登錄機制 環境準備 yum -y install openssl openssl-devel pam-devel zlib zlib-devel yum -y install gcc gcc-c makewget http://c…