WSL和LLamaFactory框架微调千问3大模型
WSL和LLamaFactory框架微调千问大模型windows10安装WSL1.1 什么是 WSLWSLWindows Subsystem for Linux是微软推出的 Windows 系统 Linux 子系统技术无需单独安装 Linux 系统或依赖虚拟机即可在 Windows 中直接运行完整的 Linux 环境。它支持原生 Linux 命令行工具、软件包管理器如 apt及各类 Linux 应用程序实现了 Windows 与 Linux 文件系统的无缝集成极大消除了两大系统的开发隔阂尤其适合需要在 Windows 平台使用 Linux 工具的开发者。二、WSL2 安装步骤2.1 启用 Windows 必备功能方式一打开「开始菜单」点击「应用与程序」滚动到页面底部点击「程序与功能」点击左侧「启用或关闭 Windows 功能」在弹出的窗口中勾选「虚拟机平台」和「适用于 Linux 的 Windows 子系统」两个选项如图所示点击「确定」。方式二使用PowerShell命令dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart2.2 重启电脑配置完成后必须重启电脑确保上述功能生效否则后续安装可能失败。接下来还需要更新wsl的内核。安装/更新 WSL 内核wsl--update安装 Linux 发行版比如 Ubuntu 22.04设置默认版本为 WSL2例如wsl --set-default-version 22.3 命令安装 WSL 并初始化和安装ubuntu以管理员身份打开命令提示符CMD或运行WIN 键 R输入cmd输入安装命令wsl --install # 网络良好时使用默认安装Ubuntu 它会自动 1. 启用 WSL 2. 启用虚拟机平台 3. 安装 WSL2 内核 4. 安装 Ubuntu 5. 设置 WSL2 为默认 # 若下载速度慢使用以下命令通过网络下载安装 或者手动安装 wsl --install --web-download首次启动会自动安装 Ubuntu等待几分钟后需要设置 Linux 用户名和密码输入自定义 UNIX 用户名无需与 Windows 用户名一致输入密码输入时不显示明文正常输入即可再次确认密码提示passwd: password updated successfully即为设置成功。出现Installation successful!提示后Ubuntu 已启动成功可通过sudo 命令执行管理员操作。2.4 验证 WSL 运行状态可通过 Windows PowerShell 启动 WSL快捷键CtrlShift6直接打开 Ubuntu需提前配置 PowerShell输入以下命令验证 WSL 是否正常运行wsl --list --verbose # 查看已安装的WSL分发版及状态若显示 Ubuntu 及运行状态则说明安装成功。2.5 推荐手动安装Ubuntu系统下载 Ubuntu 22.04官方地址https://aka.ms/wslubuntu2204下载后得到Ubuntu_2204.appx2.6 把 Ubuntu 解压到 D 盘例如创建目录D:\WSL\Ubuntu2204然后解压Ubuntu_2204.appx得到ubuntu.exe2.7 运行 Ubuntu进入目录D:\WSL\Ubuntu2204运行ubuntu.exe第一次运行会自动创建 Linux 文件系统ext4.vhdx这个文件就是Linux系统盘例如D:\WSL\Ubuntu2204\ext4.vhdx在WSL的ubuntu环境中安装LLaMA-Factory 的依赖检查环境查询显卡驱动执行命令nvidia-smi验证GPU驱动是否可用如果系统提示Command nvidia-smi not found原因是Ubuntu 系统里没有安装 NVIDIA 工具包。在 Ubuntu 里只需要安装nvidia-utils执行下面的命令sudo apt update sudo apt install -y nvidia-utils-535然后再执行下面的命令可以看到显卡的信息表示成功。nvidia-smiLLaMA-Factory 安装指南WSL GPU环境准备本文档介绍在Windows WSL2 Ubuntu GPU环境中安装LLaMA-Factory的完整流程。推荐环境组件推荐版本WindowsWindows 10 / 11WSLWSL2Ubuntu22.04Python3.11CUDA12.xGPUNVIDIA安装 Miniconda下载 Minicondacd~wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 按提示yes 初始化 Conda ~/miniconda3/bin/conda initsource~/.bashrc验证conda --version创建 Python 环境LLaMA-Factory 要求Python 3.11创建环境conda create -n llamafactory_py311 python3.11 -y激活环境conda activate llamafactory_py311查看环境能够看到刚刚创建的虚拟环境信息说明创建成功。conda env list安装 PyTorch GPU安装 GPU 版 PyTorchpip install torch torchvision torchaudio \ --index-url https://download.pytorch.org/whl/cu121验证 GPUpython -c import torch;print(torch.cuda.is_available())如果输出True说明 GPU 可用。进一步检查python-cimport torch;print(torch.__version__);print(torch.version.cuda);print(torch.cuda.get_device_name(0))下载 LLaMA-Factory创建项目目录mkdir -p ~/project cd ~/project下载源码git clone https://github.com/hiyouga/LLaMA-Factory.git进入目录cd LLaMA-Factory安装 LLaMA-Factory安装训练依赖pip install -e .[torch,metrics]说明参数含义-eeditable 安装.当前项目torch训练依赖metrics评估依赖验证安装检查版本llamafactory-cli version查看帮助llamafactory-cli help如果命令能正常输出说明安装成功。启动 WebUI运行llamafactory-cli webui成功后会显示Running on http://127.0.0.1:7860打开浏览器http://localhost:7860即可进入LLaMA-Factory WebUI。通过web页面下载Qwen3-0.6B-Base模型模型下载源选择为modelscope然后点击中间为chat模式点击加载模型按钮。如图如何windowS访问WSL的Ubuntu系统文件目录示例Linux路径/home/ford/project/llamafactory/LLaMA-Factorywindows访问路径\\wsl$\Ubuntu-22.04\home\ford\project\llamafactory\LLaMA-FactoryLLamaFactory的目录结构整体结构先建立脑图LLaMAFactory 本质分 5 层1️⃣ 配置层examples / data 2️⃣ 训练入口cli / scripts 3️⃣ 核心逻辑src 4️⃣ 工具与扩展docker / docs 5️⃣ 输出结果saves目录逐个解释⭐ 1. examples最重要之一 官方提供的训练配置模板你刚才用的就是examples/train_lora/xxx.yaml里面包含examples/ ├── train_lora/ ├── train_full/ ├── inference/作用 定义训练行为你调的都是这里例如model_name_or_path: dataset: learning_rate: batch_size:⭐ 2. data数据目录 官方 demo 数据data/ ├── alpaca_en_demo.json ├── identity.json作用 给你测试训练的一些数据 实际项目比如换成data/ ├── stock_dataset.json ├── medical_dataset.json⭐ 3. src核心代码 ⭐⭐⭐整个框架的大脑src/llamafactory/里面核心模块① train训练逻辑train/ ├── tuner.py ├── trainer.py 负责LoRA训练SFT训练参数调度② hparams参数解析hparams/ ├── model_args.py ├── data_args.py 把 YAML 转成 Python 参数③ cli入口cli.py 你执行的llamafactory-cli train xxx.yaml就是从这里进来的④ models模型加载 负责加载 Qwen / LLaMA加载 tokenizer⑤ data数据处理 负责dataset tokenizeprompt 构造 总结一句src 训练引擎⭐ 4. saves训练结果 你训练完的模型在这里saves/ ├── Qwen3-0.6B/ ├── lora/ ├── sft/里面adapter_model.safetensors adapter_config.json LoRA 权重⭐ 5. scripts脚本工具 一些辅助脚本例如数据转换批处理一般你前期用不到⭐ 6. docs文档 官方说明可以当参考手册⭐ 7. docker 容器部署你现在 WSL 用不到⭐ 8. llamaboard_cache UI界面缓存WebUI⭐ 9. tests / tests_v1 测试代码不用管⭐ 10. requirements 依赖拆分⭐ 11. assets 图片 / README 资源训练流程你要理解的核心把整个流程串起来训练执行命令如下llamafactory-cli train xxx.yaml 内部流程1️⃣ 读取配置examples/*.yaml↓2️⃣ 参数解析src/hparams↓3️⃣ 加载模型src/models↓4️⃣ 加载数据data/↓5️⃣ 开始训练src/train/tuner.py↓6️⃣ 保存模型saves/微调训练示例1. 微调训练命令这里使用官方提供的一些样例数据对模型进行Lora微调首先进入LLaMA-Factory\examples\train_lora文件夹找到配置文件修改qwen3_lora_sft.yaml配置文件。执行训练命令USE_MODELSCOPE_HUB1 llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml命令解释使用 ModelScope 作为模型下载源通过 LLaMA-Factory 按照指定 YAML 配置对 qwen3 模型进行 LoRA 指令微调训练如图所示2. Chat对话命令改配置进入LLaMA-Factory\examples\inference文件夹找到qwen3_lora_sft.yaml修改这个配置把model_name_or_path模型基座改成我们微调的模型名称和模型文件的输入路径改为刚刚你微调输出的目录。template默认改为default。windows的路径\\wsl$\Ubuntu-22.04\home\ford\project\llamafactory\LLaMA-Factory\examples\inference\qwen3_lora_sft.yaml如图所示命令USE_MODELSCOPE_HUB1 llamafactory-cli chat examples/inference/qwen3_lora_sft.yaml如图所示3.export合并模型文件修改配置进入目录LLaMA-Factory\examples\merge_lora下面找到qwen3_lora_sft.yaml这个配置文件然后修改内容主要修改的是模型路径和模型名称以及微调后的模型文件路径。windows的路径\\wsl$\Ubuntu-22.04\home\ford\project\llamafactory\LLaMA-Factory\examples\merge_lora\qwen3_lora_sft.yaml如图所示命令USE_MODELSCOPE_HUB1 llamafactory-cli export examples/merge_lora/qwen3_lora_sft.yaml如图所示4.模型API启动命令修改配置进入目录\LLaMA-Factory\examples\inference下面找到qwen3_lora_sft.yaml这个配置文件然后修改内容主要修改的是合并后的模型文件路径。假设我们最终合并的模型输出的路径为output/Qwen/Qwen3-0.6B-Base2windows的路径\\wsl$\Ubuntu-22.04\home\ford\project\llamafactory\LLaMA-Factory\examples\inference命令USE_MODELSCOPE_HUB1 llamafactory-cli api examples/inference/qwen3_lora_sft.yamlcurl命令尝试调用模型的API给模型发消息curl -s http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: output/Qwen/Qwen3-0.6B-Base2, messages: [ {role: user, content: 对暗号!一支穿云箭} ], max_tokens: 64, temperature: 0.5 }如图未完待续…