[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-940":3,"consumer-news-interaction-940":41,"consumer-news-related-940":44},{"detail":4,"item":36},{"card":5,"schemaVersion":23,"fields":24,"content":30},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":15,"href":16,"sourceName":12,"meta":17,"metrics":20,"tags":21,"resolved":22},"NEWS_ARTICLE:940","news","NEWS_ARTICLE",940,"资讯","LLama-Factory 实现大模型LoRA-SFT微调指南","博客园","LLaMA Factory 是一款开源、低代码、一站式大语言与多模态模型微调框架，用于降低大模型的微调落地门槛。框架兼容 Qwen、LLaMA、ChatGLM、LLaVA 等上百款主流开源模型，支持增量预训练、SFT 监督微调、DPO、KTO、ORPO 等多种训练对齐方案，原生集成 LoRA、QLo","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1379525\u002F202609\u002F1379525-20260909140111199-832484524.png","","\u002Fnews\u002F940",[18,19],"2026","人工智能",{},[19],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":25,"categoryName":19,"summary":13,"description":13,"publishTime":26,"updateTime":27,"sourceUrl":28,"language":29},"lyshark","2026-09-10T10:57","2026-09-11T15:21:59","https:\u002F\u002Fwww.cnblogs.com\u002FLyShark\u002Fp\u002F22917812","中文",{"format":31,"policy":32,"normalized":22,"html":33,"text":34,"wordCount":35,"hasBody":22},"HTML","NEWS_CONTENT_V1","\u003Cp>LLaMA Factory 是一款开源、低代码、一站式大语言与多模态模型微调框架，用于降低大模型的微调落地门槛。框架兼容 Qwen、LLaMA、ChatGLM、LLaVA 等上百款主流开源模型，支持增量预训练、SFT 监督微调、DPO、KTO、ORPO 等多种训练对齐方案，原生集成 LoRA、QLoRA 量化微调技术，可在消费级显卡完成轻量级模型微调。框架支持可视化网页端和命令行双操作模式，完整覆盖模型训练、评估、权重合并、推理部署全流程，适配科研实验、行业轻量化模型定制等场景。\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fi1.wp.com\u002Fimg2024.cnblogs.com\u002Fblog\u002F1379525\u002F202609\u002F1379525-20260909140111199-832484524.png?w=720&amp;quality=65&amp;strip=all\" alt=\"1379525-20260909140111199-832484524\">\u003C\u002Fp>\n\u003Cul>\n \u003Cli>项目地址：\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLlamaFactory\u002F\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLlamaFactory\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>本次实践基于 Ubuntu 22.04 系统、RTX 4090 24G 显卡、CUDA12.8 环境，全程使用国内镜像加速，解决外网下载慢、超时问题。\u003C\u002Fp>\n安装与配置\n\u003Cp>1、备份原有源文件，替换为阿里云镜像源，提升系统包下载速度。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# cp \u002Fetc\u002Fapt\u002Fsources.list \u002Fetc\u002Fapt\u002Fsources.list.bak\nroot@localhost:~# bash -c 'cat &gt; \u002Fetc\u002Fapt\u002Fsources.list &lt;&lt;EOF\ndeb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy main restricted universe multiverse\ndeb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-security main restricted universe multiverse\ndeb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-updates main restricted universe multiverse\ndeb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-backports main restricted universe multiverse\nEOF'\nroot@localhost:~# apt update\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>2、安装显卡检测工具，校验 NVIDIA 显卡识别状态，确保硬件环境正常。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# apt install -y pciutils kmod\n\nroot@localhost:~# lspci | grep -i nvidia\n01:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\n01:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\n25:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\n25:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\n41:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\n41:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\n61:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\n61:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\n81:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\n81:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\na1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\na1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\nc1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\nc1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\ne1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1)\ne1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1)\n\nroot@localhost:~# nvidia-smi \nWed Sep  9 14:28:46 2026       \n+-----------------------------------------------------------------------------------------+\n| NVIDIA-SMI 570.86.10              Driver Version: 570.86.10      CUDA Version: 12.8     |\n|-----------------------------------------+------------------------+----------------------+\n| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp   Perf          Pwr:Usage\u002FCap |           Memory-Usage | GPU-Util  Compute M. |\n|                                         |                        |               MIG M. |\n|=========================================+========================+======================|\n|   0  NVIDIA GeForce RTX 4090        On  |   00000000:C1:00.0 Off |                  Off |\n| 32%   31C    P8             22W \u002F  405W |       1MiB \u002F  24564MiB |      0%      Default |\n|                                         |                        |                  N\u002FA |\n+-----------------------------------------------------------------------------------------+\n\nroot@localhost:~# ls \u002Fdev\u002Fnvidia*\n\u002Fdev\u002Fnvidia-uvm  \u002Fdev\u002Fnvidia-uvm-tools  \u002Fdev\u002Fnvidia5  \u002Fdev\u002Fnvidiactl\n\u002Fdev\u002Fnvidia-caps:\nnvidia-cap1  nvidia-cap2\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>3、若系统未安装显卡驱动，执行以下命令安装官方推荐驱动，并禁用开源 nouveau 驱动。\u003C\u002Fp>\n\u003Cp>禁用系统默认驱动\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# tee \u002Fetc\u002Fmodprobe.d\u002Fblacklist-nouveau.conf &lt;&lt;'EOF'\nblacklist nouveau\noptions nouveau modeset=0\nEOF\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>添加显卡驱动PPA源，并安装 NVIDIA 驱动\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# apt install -y alsa-utils software-properties-common\nroot@localhost:~# add-apt-repository ppa:graphics-drivers\u002Fppa\nroot@localhost:~# apt upgrade -y\n\n# 查看推荐驱动\nroot@localhost:~# ubuntu-drivers devices\n\n# 手动指定版本 recommended 标签则为推荐版本\nroot@localhost:~# sudo apt install -y nvidia-driver-570\n\n# 重启验证显卡驱动\nroot@localhost:~# sudo reboot\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>4、搭建独立虚拟环境，避免依赖版本冲突。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# apt install -y software-properties-common\nroot@localhost:~# add-apt-repository -y ppa:deadsnakes\u002Fppa\n\nroot@localhost:~# apt install -y python3.12 python3.12-venv python3.12-dev git vim\nroot@localhost:~# python3.12 -m venv myvenv\nroot@localhost:~# source myvenv\u002Fbin\u002Factivate\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>5、根据显卡 CUDA 版本适配 PyTorch 版本，本次 CUDA12.8 对应安装 Torch2.8.0，使用清华、上交双镜像加速。\u003C\u002Fp>\n\u003Cp>其他的版本对应预览表：\u003C\u002Fp>\n\u003Ctable>\n \u003Cthead>\n  \u003Ctr>\n   \u003Cth>CUDA 编译包\u003C\u002Fth>\n   \u003Cth>Linux 最低驱动\u003C\u002Fth>\n   \u003Cth>Windows 最低驱动\u003C\u002Fth>\n   \u003Cth>PyTorch 版本\u003C\u002Fth>\n  \u003C\u002Ftr>\n \u003C\u002Fthead>\n \u003Ctbody>\n  \u003Ctr>\n   \u003Ctd>CUDA 13.0\u003C\u002Ftd>\n   \u003Ctd>≥ 580.30.02\u003C\u002Ftd>\n   \u003Ctd>≥ 581.06\u003C\u002Ftd>\n   \u003Ctd>2.9 \u002F 2.12\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 12.9\u003C\u002Ftd>\n   \u003Ctd>≥ 575.51.03\u003C\u002Ftd>\n   \u003Ctd>≥ 576.02\u003C\u002Ftd>\n   \u003Ctd>2.8\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 12.8\u003C\u002Ftd>\n   \u003Ctd>≥ 570.26\u003C\u002Ftd>\n   \u003Ctd>≥ 570.65\u003C\u002Ftd>\n   \u003Ctd>2.7\u002F 2.8 \u002F 2.9 \u002F 2.10 \u002F 2.11\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 12.6\u003C\u002Ftd>\n   \u003Ctd>≥ 560.28.03\u003C\u002Ftd>\n   \u003Ctd>≥ 561.17\u003C\u002Ftd>\n   \u003Ctd>2.6 \u002F 2.7 ~ 2.12\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 12.4\u003C\u002Ftd>\n   \u003Ctd>≥ 550.54.14\u003C\u002Ftd>\n   \u003Ctd>≥ 551.23\u003C\u002Ftd>\n   \u003Ctd>2.5 \u002F 2.6\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 12.1\u003C\u002Ftd>\n   \u003Ctd>≥ 525.60.13\u003C\u002Ftd>\n   \u003Ctd>≥ 527.41\u003C\u002Ftd>\n   \u003Ctd>2.2 \u002F 2.3 \u002F 2.4\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>CUDA 11.8\u003C\u002Ftd>\n   \u003Ctd>≥ 450.80.02\u003C\u002Ftd>\n   \u003Ctd>≥ 452.39\u003C\u002Ftd>\n   \u003Ctd>2.0 ~ 2.7\u003C\u002Ftd>\n  \u003C\u002Ftr>\n \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>依次执行命令安装，该过程较慢\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 \\\n-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple \\\n--extra-index-url https:\u002F\u002Fmirror.sjtu.edu.cn\u002Fpytorch-wheels\u002Fcu128\n\nroot@localhost:~# pip install transformers==4.48.2 accelerate -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\nroot@localhost:~# pip list\nPackage                  Version\n------------------------ ------------\naccelerate               1.15.0\ncertifi                  2026.7.22\ncharset-normalizer       3.5.1\nfilelock                 3.32.6\nfsspec                   2026.7.0\nhf-xet                   1.6.0\nhuggingface_hub          0.36.2\nidna                     3.19\nJinja2                   3.1.6\nMarkupSafe               3.0.3\nmpmath                   1.3.0\nnetworkx                 3.6.1\nnumpy                    2.5.3\nnvidia-cublas-cu12       12.8.4.1\nnvidia-cuda-cupti-cu12   12.8.90\nnvidia-cuda-nvrtc-cu12   12.8.93\nnvidia-cuda-runtime-cu12 12.8.90\nnvidia-cudnn-cu12        9.10.2.21\nnvidia-cufft-cu12        11.3.3.83\nnvidia-cufile-cu12       1.13.1.3\nnvidia-curand-cu12       10.3.9.90\nnvidia-cusolver-cu12     11.7.3.90\nnvidia-cusparse-cu12     12.5.8.93\nnvidia-cusparselt-cu12   0.7.1\nnvidia-nccl-cu12         2.27.3\nnvidia-nvjitlink-cu12    12.8.93\nnvidia-nvtx-cu12         12.8.90\npackaging                26.3\npillow                   12.3.0\npip                      25.0.1\npsutil                   7.2.2\nPyYAML                   6.0.3\nregex                    2026.9.3\nrequests                 2.34.2\nsafetensors              0.8.0\nsetuptools               84.0.0\nsympy                    1.14.0\ntokenizers               0.21.4\ntorch                    2.8.0+cu128\ntorchaudio               2.8.0+cu128\ntorchvision              0.23.0+cu128\ntqdm                     4.70.0\ntransformers             4.48.2\ntriton                   3.4.0\ntyping_extensions        4.16.0\nurllib3                  2.7.0\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>6、执行 Python 代码校验 PyTorch、CUDA、显卡识别状态。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>import torch\nprint(\"torch版本:\", torch.__version__)\nprint(\"torch编译用的CUDA版本:\", torch.version.cuda)\nprint(\"CUDA是否可用:\", torch.cuda.is_available())\nprint(\"GPU数量:\", torch.cuda.device_count())\nif torch.cuda.is_available():\n    print(\"GPU名称:\", torch.cuda.get_device_name(0))\n\n# -----------------------------------------\ntorch版本: 2.8.0+cu128\ntorch编译用的CUDA版本: 12.8\nCUDA是否可用: True\nGPU数量: 1\nGPU名称: NVIDIA GeForce RTX 4090\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>7、编译 Llama-Factory 镜像并安装。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~# git clone https:\u002F\u002Fgitee.com\u002Flyshark\u002FLLaMA-Factory.git\nroot@localhost:~# cd LLaMA-Factory\nroot@localhost:~# pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple -e .\n\nroot@localhost:~# pip list\nPackage                  Version\n------------------------ ------------\naccelerate               1.11.0\naiofiles                 24.1.0\naiohappyeyeballs         2.7.1\naiohttp                  3.14.3\naiosignal                1.4.0\nannotated-doc            0.0.5\nannotated-types          0.8.0\nantlr4-python3-runtime   4.9.3\nanyio                    4.15.1\nattrs                    26.1.0\nav                       16.0.0\nbrotli                   1.2.0\ncertifi                  2026.7.22\ncffi                     2.1.1\ncharset-normalizer       3.5.1\nclick                    8.5.0\ncontourpy                1.3.3\ncryptography             50.0.1\ncycler                   0.12.1\ndatasets                 4.0.0\ndill                     0.3.8\ndocstring_parser         0.18.0\neinops                   0.8.2\nfastapi                  0.141.1\nffmpy                    1.0.0\nfilelock                 3.32.6\nfire                     0.7.1\nfonttools                4.64.0\nfrozenlist               1.8.0\nfsspec                   2025.3.0\ngradio                   5.50.0\ngradio_client            1.14.0\ngroovy                   0.1.2\nh11                      0.16.0\nhf_transfer              0.1.9\nhf-xet                   1.6.0\nhttpcore                 1.0.9\nhttpx                    0.28.1\nhuggingface_hub          1.30.0\nidna                     3.19\nJinja2                   3.1.6\nkiwisolver               1.5.1\nllamafactory             0.9.6.dev0\nmarkdown-it-py           4.2.0\nMarkupSafe               3.0.3\nmatplotlib               3.11.1\nmdurl                    0.1.2\nmodelscope               1.40.0\nmodelscope-hub           0.4.1\nmpmath                   1.3.0\nmultidict                6.8.0\nmultiprocess             0.70.16\nnetworkx                 3.6.1\nnumpy                    2.5.3\nnvidia-cublas-cu12       12.8.4.1\nnvidia-cuda-cupti-cu12   12.8.90\nnvidia-cuda-nvrtc-cu12   12.8.93\nnvidia-cuda-runtime-cu12 12.8.90\nnvidia-cudnn-cu12        9.10.2.21\nnvidia-cufft-cu12        11.3.3.83\nnvidia-cufile-cu12       1.13.1.3\nnvidia-curand-cu12       10.3.9.90\nnvidia-cusolver-cu12     11.7.3.90\nnvidia-cusparse-cu12     12.5.8.93\nnvidia-cusparselt-cu12   0.7.1\nnvidia-nccl-cu12         2.27.3\nnvidia-nvjitlink-cu12    12.8.93\nnvidia-nvtx-cu12         12.8.90\nomegaconf                2.3.1\norjson                   3.12.0\npackaging                26.3\npandas                   2.3.3\npeft                     0.18.1\npillow                   11.3.0\npip                      25.0.1\npropcache                0.5.2\nprotobuf                 7.36.1\npsutil                   7.2.2\npyarrow                  25.0.1\npycparser                3.0\npydantic                 2.12.3\npydantic_core            2.41.4\npydub                    0.25.1\nPygments                 2.21.0\npyparsing                3.3.2\npython-dateutil          2.9.0.post0\npython-multipart         0.0.32\npytz                     2026.3.post1\nPyYAML                   6.0.3\nregex                    2026.9.3\nrequests                 2.34.2\nrich                     15.0.0\nruff                     0.16.6\nsafehttpx                0.1.7\nsafetensors              0.8.0\nscipy                    1.18.1\nsemantic-version         2.10.0\nsentencepiece            0.2.2\nsetuptools               84.0.0\nshellingham              1.5.4\nshtab                    1.12.1\nsix                      1.17.0\nsse-starlette            3.4.11\nstarlette                0.52.1\nsympy                    1.14.0\ntermcolor                3.3.0\ntiktoken                 0.14.0\ntokenizers               0.22.2\ntomlkit                  0.13.3\ntorch                    2.8.0+cu128\ntorchaudio               2.8.0+cu128\ntorchdata                0.11.0\ntorchvision              0.23.0+cu128\ntqdm                     4.70.0\ntransformers             5.8.0\ntriton                   3.4.0\ntrl                      0.24.0\ntyper                    0.27.2\ntyping_extensions        4.16.0\ntyping-inspection        0.4.4\ntyro                     0.8.14\ntzdata                   2026.3\nurllib3                  2.7.0\nuvicorn                  0.52.4\nwebsockets               15.0.1\nxxhash                   4.0.1\nyarl                     1.24.5\n\nroot@localhost:~# llamafactory-cli version\n----------------------------------------------------------\n| Welcome to LLaMA Factory, version 0.9.6.dev0           |\n|                                                        |\n| Project page: https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Factory |\n----------------------------------------------------------\n\u003C\u002Fcode>\u003C\u002Fpre>\n监督微调\n\u003Cp>本次微调采用问答数据集，原始数据为 jsonl 格式，需转换为 LlamaFactory 标准的 Alpaca 训练格式。\u003C\u002Fp>\n\u003Cp>1、通过 ModelScope 下载 Qwen3.5-0.8B-Instruct 轻量化对话模型，适合消费级显卡微调。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002F# mkdir \u002Fdata\nroot@localhost:~\u002F# cd \u002Fdata\nroot@localhost:~\u002F# modelscope download --model icyfenix\u002FQwen3.5-0.8B-Instruct --local_dir \u002Fdata\u002Fqwen3.5\\-0.8B\\-Instruct\nroot@localhost:~\u002F# mv qwen3.5‑0.8B‑Instruct qwen3.5\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>2、准备训练材料，数据包含 question、answer 字段，文件名称叫做\u003Ccode>train.json\u003C\u002Fcode>，放入到\u003Ccode>LlamaFactory\u002Fdata\u003C\u002Fcode> 目录下，以下结构是标准训练集结构。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n  {\n    \"instruction\": \"你是一个助手\",\n    \"input\": \"用户问题\",\n    \"output\": \"回答\"\n  },\n  {\n    \"instruction\": \"你是一个助手\",\n    \"input\": \"第二个问题\",\n    \"output\": \"对应的回答\"\n  }\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>3、继续使用《千问大模型完整RLHF全参数微调指南》文章中的医疗数据集，并将其做清洗处理。\u003C\u002Fp>\n\u003Cp>下载数据集\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002Fqwen# wget https:\u002F\u002Fmodelscope.cn\u002Fdatasets\u002Fkrisfu\u002Fdelicate_medical_r1_data\u002Fresolve\u002Fmaster\u002Fr1_data_example.jsonl\nroot@localhost:~\u002Fqwen# ls -lh\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>直接使用脚本将其转换为符合规范的格式，读取 \u003Ccode>r1_data_example.jsonl\u003C\u002Fcode> 文件，把每条的 \u003Cstrong>question → input、answer → output\u003C\u002Fstrong> 进行关联，并固定 instruction 为特定提示词，输出标准 json 数组格式。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>import json\n\ndef convert_jsonl_to_json(jsonl_file_path, out_json_path):\n    output_data = []\n    with open(jsonl_file_path, \"r\", encoding=\"utf-8\") as f:\n        for line in f:\n            line = line.strip()\n            if not line:\n                continue\n            item = json.loads(line)\n            new_sample = {\n                \"instruction\": \"你是一个医疗问答助手，请规范回答用户提问。\",\n                \"input\": item[\"question\"],\n                \"output\": item[\"answer\"]\n            }\n            output_data.append(new_sample)\n\n    with open(out_json_path, \"w\", encoding=\"utf-8\") as fw:\n        json.dump(output_data, fw, ensure_ascii=False, indent=4)\n    print(f\"转换完成，输出文件: {out_json_path}\")\n\nif __name__ == \"__main__\":\n    jsonl_path = \"\u002Fdata\u002Fr1_data_example.jsonl\"\n    save_json_path = \"\u002Fdata\u002Ftrain.json\"\n    convert_jsonl_to_json(jsonl_path, save_json_path)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>输出成train.json文件，并放入到\u003Ccode>\u002Fdata\u003C\u002Fcode>目录下\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002F# cd \u002Fdata\u002F\nroot@localhost:~\u002Fqwen# ls -lh\ntotal 12M\ndrwxr-xr-x 2 root root 4.0K Sep  9 04:32 qwen3.5\n-rw-r--r-- 1 root root 8.8M Apr 22  2025 r1_data_example.jsonl\n-rw-r--r-- 1 root root 2.4M Sep  9 04:47 train.json\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>4、覆盖写入自定义数据集，修改 \u003Ccode>LlamaFactory\u002Fdata\u002Fdataset_info.json\u003C\u002Fcode> 直接覆盖。\u003C\u002Fp>\n\u003Cblockquote>\n \u003Cp>\u003Ccode>\"mydata\"\u003C\u002Fcode> 就是数据集名称\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cpre>\u003Ccode>root@localhost:~\u002F# cat &lt;&lt;EOF | tee data\u002Fdataset_info.json\n{\n  \"mydata\": {\n    \"file_name\": \"\u002Fdata\u002Ftrain.json\",\n    \"format\": \"alpaca\"\n  }\n}\nEOF\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>5、在 LlamaFactory 根目录新建 \u003Ccode>sft.yaml\u003C\u002Fcode>，配置 LoRA 微调核心参数。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002F# pip install tiktoken\nroot@localhost:~\u002F# cat &lt;&lt;EOF | tee sft.yaml\nmodel_name_or_path: \u002Fdata\u002Fqwen3.5\ndataset: mydata\ntemplate: qwen\nfinetuning_type: lora\nlora_target: all\nlora_rank: 8\nlora_alpha: 16\nlora_dropout: 0.05\nstage: sft\ndo_train: true\nnum_train_epochs: 3\nper_device_train_batch_size: 4\ngradient_accumulation_steps: 2\nlearning_rate: 5e-5\nlr_scheduler_type: cosine\nwarmup_steps: 50\nweight_decay: 0.01\ndataloader_num_workers: 0\noutput_dir: \u002Fdata\u002Fqwen3.5_sft\nsave_steps: 100\nlogging_steps: 10\noverwrite_output_dir: true\ngradient_checkpointing: true\nfp16: true\nEOF\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>6、在 \u003Ccode>LLaMA-Factory\u003C\u002Fcode> 目录下执行命令启动训练。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:\u002Fdata# mkdir \u002Fdata\u002Fqwen3.5_sft\nroot@localhost:\u002Fdata# mkdir \u002Fdata\u002Fqwen3.5_lora_merged\n\nroot@localhost:~\u002FLLaMA-Factory# llamafactory-cli train sft.yaml\n{'train_runtime': '21.48', 'train_samples_per_second': '2.793', 'train_steps_per_second': '0.419', 'train_loss': '2.202', 'epoch': '3'}\n100%|███████████████████████████████████████████████████| 9\u002F9 [00:21&lt;00:00,  2.39s\u002Fit]\n\nroot@localhost:\u002Fdata# ls -lh\ntotal 49M\ndrwxr-xr-x 2 root root 4.0K Sep  9 07:40 checkpoint-9\ndrwxr-xr-x 2 root root 4.0K Sep  9 07:26 qwen3.5\ndrwxr-xr-x 2 root root   10 Sep  9 07:44 qwen3.5_lora_merged\ndrwxr-xr-x 3 root root 4.0K Sep  9 07:42 qwen3.5_sft\n-rw-r--r-- 1 root root 8.8M Apr 27 00:54 r1_data_example.jsonl\n-rw-r--r-- 1 root root  19K Sep  9 07:38 train.json\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>7、训练结束后通过执行 \u003Ccode>merge_lora.yaml\u003C\u002Fcode> 脚本实现合并模型权重。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002FLLaMA-Factory# cat &lt;&lt;EOF | tee merge_lora.yaml\nmodel_name_or_path: \u002Fdata\u002Fqwen3.5\nadapter_name_or_path: \u002Fdata\u002Fqwen3.5_sft\ntemplate: qwen\nfinetuning_type: lora\nexport_dir: \u002Fdata\u002Fqwen3.5_lora_merged\nexport_legacy_format: false\nEOF\n\nroot@localhost:~\u002FLLaMA-Factory# llamafactory-cli export merge_lora.yaml\nLoading weights: 100%|███████████████████████████████████████████| 473\u002F473 [00:00&lt;00:00, 6414.93it\u002Fs]\n\nroot@localhost:\u002Fdata# ls -lh\ntotal 49M\ndrwxr-xr-x 2 root root 4.0K Sep  9 07:26 qwen3.5\ndrwxr-xr-x 2 root root   10 Sep  9 07:44 qwen3.5_lora_merged\ndrwxr-xr-x 3 root root 4.0K Sep  9 07:42 qwen3.5_sft\n-rw-r--r-- 1 root root 8.8M Apr 27 00:54 r1_data_example.jsonl\n-rw-r--r-- 1 root root  19K Sep  9 07:38 train.json\n\nroot@localhost:\u002Fdata\u002Fqwen3.5_lora_merged# ls -lh\ntotal 1.7G\n-rw-r--r-- 1 root root  464 Sep  9 07:46 Modelfile\n-rw-r--r-- 1 root root 7.6K Sep  9 07:46 chat_template.jinja\n-rw-r--r-- 1 root root 2.7K Sep  9 07:46 config.json\n-rw-r--r-- 1 root root  115 Sep  9 07:46 generation_config.json\n-rw------- 1 root root 1.6G Sep  9 07:46 model.safetensors\n-rw-r--r-- 1 root root 1.2K Sep  9 07:46 processor_config.json\n-rw-r--r-- 1 root root  20M Sep  9 07:46 tokenizer.json\n-rw-r--r-- 1 root root 1.2K Sep  9 07:46 tokenizer_config.json\n\u003C\u002Fcode>\u003C\u002Fpre>\n模型测试\n\u003Cp>编写推理配置文件，启动命令行交互式对话，测试医疗微调效果。\u003C\u002Fp>\n\u003Cp>1、新建 \u003Ccode>infer_lora.yaml\u003C\u002Fcode> 放在 \u003Ccode>LLaMA-Factory\u003C\u002Fcode> 根目录\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002FLLaMA-Factory# cat &lt;&lt;EOF | tee infer_lora.yaml\nmodel_name_or_path: \u002Fdata\u002Fqwen3.5_lora_merged\ntemplate: qwen\ntemperature: 0.4\ntop_p: 0.8\nmax_new_tokens: 512\nEOF\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>2、启动终端对话\u003C\u002Fp>\n\u003Cpre>\u003Ccode>root@localhost:~\u002FLLaMA-Factory# llamafactory-cli chat infer_lora.yaml\n\nLoading weights: 100%|███████████████████████████████████| 473\u002F473 [00:00&lt;00:00, 1092.90it\u002Fs]\nWelcome to the CLI application, use `clear` to remove the history, use `exit` to exit the application.\n\nUser: 你好\nAssistant: &lt;think&gt;\n用户打招呼，这是一个简单的问候。我应该用友好的方式回应，保持亲切和友好的语气。\n&lt;\u002Fthink&gt;\n\n你好！很高兴见到你。有什么我可以帮你的吗？\n\u003C\u002Fcode>\u003C\u002Fpre>","LLaMA Factory 是一款开源、低代码、一站式大语言与多模态模型微调框架，用于降低大模型的微调落地门槛。框架兼容 Qwen、LLaMA、ChatGLM、LLaVA 等上百款主流开源模型，支持增量预训练、SFT 监督微调、DPO、KTO、ORPO 等多种训练对齐方案，原生集成 LoRA、QLoRA 量化微调技术，可在消费级显卡完成轻量级模型微调。框架支持可视化网页端和命令行双操作模式，完整覆盖模型训练、评估、权重合并、推理部署全流程，适配科研实验、行业轻量化模型定制等场景。 项目地址：https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLlamaFactory\u002F 本次实践基于 Ubuntu 22.04 系统、RTX 4090 24G 显卡、CUDA12.8 环境，全程使用国内镜像加速，解决外网下载慢、超时问题。 安装与配置 1、备份原有源文件，替换为阿里云镜像源，提升系统包下载速度。 root@localhost:~# cp \u002Fetc\u002Fapt\u002Fsources.list \u002Fetc\u002Fapt\u002Fsources.list.bak root@localhost:~# bash -c 'cat > \u002Fetc\u002Fapt\u002Fsources.list \u003C\u003CEOF deb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy main restricted universe multiverse deb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-security main restricted universe multiverse deb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-updates main restricted universe multiverse deb http:\u002F\u002Fmirrors.aliyun.com\u002Fubuntu\u002F jammy-backports main restricted universe multiverse EOF' root@localhost:~# apt update 2、安装显卡检测工具，校验 NVIDIA 显卡识别状态，确保硬件环境正常。 root@localhost:~# apt install -y pciutils kmod root@localhost:~# lspci | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) 01:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) 25:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) 25:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) 41:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) 41:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) 61:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) 61:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) 81:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) 81:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) a1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) a1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) c1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) c1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) e1:00.0 VGA compatible controller: NVIDIA Corporation Device 2684 (rev a1) e1:00.1 Audio device: NVIDIA Corporation Device 22ba (rev a1) root@localhost:~# nvidia-smi Wed Sep 9 14:28:46 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 570.86.10 Driver Version: 570.86.10 CUDA Version: 12.8 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage\u002FCap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4090 On | 00000000:C1:00.0 Off | Off | | 32% 31C P8 22W \u002F 405W | 1MiB \u002F 24564MiB | 0% Default | | | | N\u002FA | +-----------------------------------------------------------------------------------------+ root@localhost:~# ls \u002Fdev\u002Fnvidia* \u002Fdev\u002Fnvidia-uvm \u002Fdev\u002Fnvidia-uvm-tools \u002Fdev\u002Fnvidia5 \u002Fdev\u002Fnvidiactl \u002Fdev\u002Fnvidia-caps: nvidia-cap1 nvidia-cap2 3、若系统未安装显卡驱动，执行以下命令安装官方推荐驱动，并禁用开源 nouveau 驱动。 禁用系统默认驱动 root@localhost:~# tee \u002Fetc\u002Fmodprobe.d\u002Fblacklist-nouveau.conf \u003C\u003C'EOF' blacklist nouveau options nouveau modeset=0 EOF 添加显卡驱动PPA源，并安装 NVIDIA 驱动 root@localhost:~# apt install -y alsa-utils software-properties-common root@localhost:~# add-apt-repository ppa:graphics-drivers\u002Fppa root@localhost:~# apt upgrade -y # 查看推荐驱动 root@localhost:~# ubuntu-drivers devices # 手动指定版本 recommended 标签则为推荐版本 root@localhost:~# sudo apt install -y nvidia-driver-570 # 重启验证显卡驱动 root@localhost:~# sudo reboot 4、搭建独立虚拟环境，避免依赖版本冲突。 root@localhost:~# apt install -y software-properties-common root@localhost:~# add-apt-repository -y ppa:deadsnakes\u002Fppa root@localhost:~# apt install -y python3.12 python3.12-venv python3.12-dev git vim root@localhost:~# python3.12 -m venv myvenv root@localhost:~# source myvenv\u002Fbin\u002Factivate 5、根据显卡 CUDA 版本适配 PyTorch 版本，本次 CUDA12.8 对应安装 Torch2.8.0，使用清华、上交双镜像加速。 其他的版本对应预览表： CUDA 编译包 Linux 最低驱动 Windows 最低驱动 PyTorch 版本 CUDA 13.0 ≥ 580.30.02 ≥ 581.06 2.9 \u002F 2.12 CUDA 12.9 ≥ 575.51.03 ≥ 576.02 2.8 CUDA 12.8 ≥ 570.26 ≥ 570.65 2.7\u002F 2.8 \u002F 2.9 \u002F 2.10 \u002F 2.11 CUDA 12.6 ≥ 560.28.03 ≥ 561.17 2.6 \u002F 2.7 ~ 2.12 CUDA 12.4 ≥ 550.54.14 ≥ 551.23 2.5 \u002F 2.6 CUDA 12.1 ≥ 525.60.13 ≥ 527.41 2.2 \u002F 2.3 \u002F 2.4 CUDA 11.8 ≥ 450.80.02 ≥ 452.39 2.0 ~ 2.7 依次执行命令安装，该过程较慢 root@localhost:~# pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 \\ -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple \\ --extra-index-url https:\u002F\u002Fmirror.sjtu.edu.cn\u002Fpytorch-wheels\u002Fcu128 root@localhost:~# pip install transformers==4.48.2 accelerate -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple root@localhost:~# pip list Package Version ------------------------ ------------ accelerate 1.15.0 certifi 2026.7.22 charset-normalizer 3.5.1 filelock 3.32.6 fsspec 2026.7.0 hf-xet 1.6.0 huggingface_hub 0.36.2 idna 3.19 Jinja2 3.1.6 MarkupSafe 3.0.3 mpmath 1.3.0 networkx 3.6.1 numpy 2.5.3 nvidia-cublas-cu12 12.8.4.1 nvidia-cuda-cupti-cu12 12.8.90 nvidia-cuda-nvrtc-cu12 12.8.93 nvidia-cuda-runtime-cu12 12.8.90 nvidia-cudnn-cu12 9.10.2.21 nvidia-cufft-cu12 11.3.3.83 nvidia-cufile-cu12 1.13.1.3 nvidia-curand-cu12 10.3.9.90 nvidia-cusolver-cu12 11.7.3.90 nvidia-cusparse-cu12 12.5.8.93 nvidia-cusparselt-cu12 0.7.1 nvidia-nccl-cu12 2.27.3 nvidia-nvjitlink-cu12 12.8.93 nvidia-nvtx-cu12 12.8.90 packaging 26.3 pillow 12.3.0 pip 25.0.1 psutil 7.2.2 PyYAML 6.0.3 regex 2026.9.3 requests 2.34.2 safetensors 0.8.0 setuptools 84.0.0 sympy 1.14.0 tokenizers 0.21.4 torch 2.8.0+cu128 torchaudio 2.8.0+cu128 torchvision 0.23.0+cu128 tqdm 4.70.0 transformers 4.48.2 triton 3.4.0 typing_extensions 4.16.0 urllib3 2.7.0 6、执行 Python 代码校验 PyTorch、CUDA、显卡识别状态。 import torch print(\"torch版本:\", torch.__version__) print(\"torch编译用的CUDA版本:\", torch.version.cuda) print(\"CUDA是否可用:\", torch.cuda.is_available()) print(\"GPU数量:\", torch.cuda.device_count()) if torch.cuda.is_available(): print(\"GPU名称:\", torch.cuda.get_device_name(0)) # ----------------------------------------- torch版本: 2.8.0+cu128 torch编译用的CUDA版本: 12.8 CUDA是否可用: True GPU数量: 1 GPU名称: NVIDIA GeForce RTX 4090 7、编译 Llama-Factory 镜像并安装。 root@localhost:~# git clone https:\u002F\u002Fgitee.com\u002Flyshark\u002FLLaMA-Factory.git root@localhost:~# cd LLaMA-Factory root@localhost:~# pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple -e . root@localhost:~# pip list Package Version ------------------------ ------------ accelerate 1.11.0 aiofiles 24.1.0 aiohappyeyeballs 2.7.1 aiohttp 3.14.3 aiosignal 1.4.0 annotated-doc 0.0.5 annotated-types 0.8.0 antlr4-python3-runtime 4.9.3 anyio 4.15.1 attrs 26.1.0 av 16.0.0 brotli 1.2.0 certifi 2026.7.22 cffi 2.1.1 charset-normalizer 3.5.1 click 8.5.0 contourpy 1.3.3 cryptography 50.0.1 cycler 0.12.1 datasets 4.0.0 dill 0.3.8 docstring_parser 0.18.0 einops 0.8.2 fastapi 0.141.1 ffmpy 1.0.0 filelock 3.32.6 fire 0.7.1 fonttools 4.64.0 frozenlist 1.8.0 fsspec 2025.3.0 gradio 5.50.0 gradio_client 1.14.0 groovy 0.1.2 h11 0.16.0 hf_transfer 0.1.9 hf-xet 1.6.0 httpcore 1.0.9 httpx 0.28.1 huggingface_hub 1.30.0 idna 3.19 Jinja2 3.1.6 kiwisolver 1.5.1 llamafactory 0.9.6.dev0 markdown-it-py 4.2.0 MarkupSafe 3.0.3 matplotlib 3.11.1 mdurl 0.1.2 modelscope 1.40.0 modelscope-hub 0.4.1 mpmath 1.3.0 multidict 6.8.0 multiprocess 0.70.16 networkx 3.6.1 numpy 2.5.3 nvidia-cublas-cu12 12.8.4.1 nvidia-cuda-cupti-cu12 12.8.90 nvidia-cuda-nvrtc-cu12 12.8.93 nvidia-cuda-runtime-cu12 12.8.90 nvidia-cudnn-cu12 9.10.2.21 nvidia-cufft-cu12 11.3.3.83 nvidia-cufile-cu12 1.13.1.3 nvidia-curand-cu12 10.3.9.90 nvidia-cusolver-cu12 11.7.3.90 nvidia-cusparse-cu12 12.5.8.93 nvidia-cusparselt-cu12 0.7.1 nvidia-nccl-cu12 2.27.3 nvidia-nvjitlink-cu12 12.8.93 nvidia-nvtx-cu12 12.8.90 omegaconf 2.3.1 orjson 3.12.0 packaging 26.3 pandas 2.3.3 peft 0.18.1 pillow 11.3.0 pip 25.0.1 propcache 0.5.2 protobuf 7.36.1 psutil 7.2.2 pyarrow 25.0.1 pycparser 3.0 pydantic 2.12.3 pydantic_core 2.41.4 pydub 0.25.1 Pygments 2.21.0 pyparsing 3.3.2 python-dateutil 2.9.0.post0 python-multipart 0.0.32 pytz 2026.3.post1 PyYAML 6.0.3 regex 2026.9.3 requests 2.34.2 rich 15.0.0 ruff 0.16.6 safehttpx 0.1.7 safetensors 0.8.0 scipy 1.18.1 semantic-version 2.10.0 sentencepiece 0.2.2 setuptools 84.0.0 shellingham 1.5.4 shtab 1.12.1 six 1.17.0 sse-starlette 3.4.11 starlette 0.52.1 sympy 1.14.0 termcolor 3.3.0 tiktoken 0.14.0 tokenizers 0.22.2 tomlkit 0.13.3 torch 2.8.0+cu128 torchaudio 2.8.0+cu128 torchdata 0.11.0 torchvision 0.23.0+cu128 tqdm 4.70.0 transformers 5.8.0 triton 3.4.0 trl 0.24.0 typer 0.27.2 typing_extensions 4.16.0 typing-inspection 0.4.4 tyro 0.8.14 tzdata 2026.3 urllib3 2.7.0 uvicorn 0.52.4 websockets 15.0.1 xxhash 4.0.1 yarl 1.24.5 root@localhost:~# llamafactory-cli version ---------------------------------------------------------- | Welcome to LLaMA Factory, version 0.9.6.dev0 | | | | Project page: https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Factory | ---------------------------------------------------------- 监督微调 本次微调采用问答数据集，原始数据为 jsonl 格式，需转换为 LlamaFactory 标准的 Alpaca 训练格式。 1、通过 ModelScope 下载 Qwen3.5-0.8B-Instruct 轻量化对话模型，适合消费级显卡微调。 root@localhost:~\u002F# mkdir \u002Fdata root@localhost:~\u002F# cd \u002Fdata root@localhost:~\u002F# modelscope download --model icyfenix\u002FQwen3.5-0.8B-Instruct --local_dir \u002Fdata\u002Fqwen3.5\\-0.8B\\-Instruct root@localhost:~\u002F# mv qwen3.5‑0.8B‑Instruct qwen3.5 2、准备训练材料，数据包含 question、answer 字段，文件名称叫做train.json，放入到LlamaFactory\u002Fdata 目录下，以下结构是标准训练集结构。 [ { \"instruction\": \"你是一个助手\", \"input\": \"用户问题\", \"output\": \"回答\" }, { \"instruction\": \"你是一个助手\", \"input\": \"第二个问题\", \"output\": \"对应的回答\" } ] 3、继续使用《千问大模型完整RLHF全参数微调指南》文章中的医疗数据集，并将其做清洗处理。 下载数据集 root@localhost:~\u002Fqwen# wget https:\u002F\u002Fmodelscope.cn\u002Fdatasets\u002Fkrisfu\u002Fdelicate_medical_r1_data\u002Fresolve\u002Fmaster\u002Fr1_data_example.jsonl root@localhost:~\u002Fqwen# ls -lh 直接使用脚本将其转换为符合规范的格式，读取 r1_data_example.jsonl 文件，把每条的 question → input、answer → output 进行关联，并固定 instruction 为特定提示词，输出标准 json 数组格式。 import json def convert_jsonl_to_json(jsonl_file_path, out_json_path): output_data = [] with open(jsonl_file_path, \"r\", encoding=\"utf-8\") as f: for line in f: line = line.strip() if not line: continue item = json.loads(line) new_sample = { \"instruction\": \"你是一个医疗问答助手，请规范回答用户提问。\", \"input\": item[\"question\"], \"output\": item[\"answer\"] } output_data.append(new_sample) with open(out_json_path, \"w\", encoding=\"utf-8\") as fw: json.dump(output_data, fw, ensure_ascii=False, indent=4) print(f\"转换完成，输出文件: {out_json_path}\") if __name__ == \"__main__\": jsonl_path = \"\u002Fdata\u002Fr1_data_example.jsonl\" save_json_path = \"\u002Fdata\u002Ftrain.json\" convert_jsonl_to_json(jsonl_path, save_json_path) 输出成train.json文件，并放入到\u002Fdata目录下 root@localhost:~\u002F# cd \u002Fdata\u002F root@localhost:~\u002Fqwen# ls -lh total 12M drwxr-xr-x 2 root root 4.0K Sep 9 04:32 qwen3.5 -rw-r--r-- 1 root root 8.8M Apr 22 2025 r1_data_example.jsonl -rw-r--r-- 1 root root 2.4M Sep 9 04:47 train.json 4、覆盖写入自定义数据集，修改 LlamaFactory\u002Fdata\u002Fdataset_info.json 直接覆盖。 \"mydata\" 就是数据集名称 root@localhost:~\u002F# cat \u003C\u003CEOF | tee data\u002Fdataset_info.json { \"mydata\": { \"file_name\": \"\u002Fdata\u002Ftrain.json\", \"format\": \"alpaca\" } } EOF 5、在 LlamaFactory 根目录新建 sft.yaml，配置 LoRA 微调核心参数。 root@localhost:~\u002F# pip install tiktoken root@localhost:~\u002F# cat \u003C\u003CEOF | tee sft.yaml model_name_or_path: \u002Fdata\u002Fqwen3.5 dataset: mydata template: qwen finetuning_type: lora lora_target: all lora_rank: 8 lora_alpha: 16 lora_dropout: 0.05 stage: sft do_train: true num_train_epochs: 3 per_device_train_batch_size: 4 gradient_accumulation_steps: 2 learning_rate: 5e-5 lr_scheduler_type: cosine warmup_steps: 50 weight_decay: 0.01 dataloader_num_workers: 0 output_dir: \u002Fdata\u002Fqwen3.5_sft save_steps: 100 logging_steps: 10 overwrite_output_dir: true gradient_checkpointing: true fp16: true EOF 6、在 LLaMA-Factory 目录下执行命令启动训练。 root@localhost:\u002Fdata# mkdir \u002Fdata\u002Fqwen3.5_sft root@localhost:\u002Fdata# mkdir \u002Fdata\u002Fqwen3.5_lora_merged root@localhost:~\u002FLLaMA-Factory# llamafactory-cli train sft.yaml {'train_runtime': '21.48', 'train_samples_per_second': '2.793', 'train_steps_per_second': '0.419', 'train_loss': '2.202', 'epoch': '3'} 100%|███████████████████████████████████████████████████| 9\u002F9 [00:21\u003C00:00, 2.39s\u002Fit] root@localhost:\u002Fdata# ls -lh total 49M drwxr-xr-x 2 root root 4.0K Sep 9 07:40 checkpoint-9 drwxr-xr-x 2 root root 4.0K Sep 9 07:26 qwen3.5 drwxr-xr-x 2 root root 10 Sep 9 07:44 qwen3.5_lora_merged drwxr-xr-x 3 root root 4.0K Sep 9 07:42 qwen3.5_sft -rw-r--r-- 1 root root 8.8M Apr 27 00:54 r1_data_example.jsonl -rw-r--r-- 1 root root 19K Sep 9 07:38 train.json 7、训练结束后通过执行 merge_lora.yaml 脚本实现合并模型权重。 root@localhost:~\u002FLLaMA-Factory# cat \u003C\u003CEOF | tee merge_lora.yaml model_name_or_path: \u002Fdata\u002Fqwen3.5 adapter_name_or_path: \u002Fdata\u002Fqwen3.5_sft template: qwen finetuning_type: lora export_dir: \u002Fdata\u002Fqwen3.5_lora_merged export_legacy_format: false EOF root@localhost:~\u002FLLaMA-Factory# llamafactory-cli export merge_lora.yaml Loading weights: 100%|███████████████████████████████████████████| 473\u002F473 [00:00\u003C00:00, 6414.93it\u002Fs] root@localhost:\u002Fdata# ls -lh total 49M drwxr-xr-x 2 root root 4.0K Sep 9 07:26 qwen3.5 drwxr-xr-x 2 root root 10 Sep 9 07:44 qwen3.5_lora_merged drwxr-xr-x 3 root root 4.0K Sep 9 07:42 qwen3.5_sft -rw-r--r-- 1 root root 8.8M Apr 27 00:54 r1_data_example.jsonl -rw-r--r-- 1 root root 19K Sep 9 07:38 train.json root@localhost:\u002Fdata\u002Fqwen3.5_lora_merged# ls -lh total 1.7G -rw-r--r-- 1 root root 464 Sep 9 07:46 Modelfile -rw-r--r-- 1 root root 7.6K Sep 9 07:46 chat_template.jinja -rw-r--r-- 1 root root 2.7K Sep 9 07:46 config.json -rw-r--r-- 1 root root 115 Sep 9 07:46 generation_config.json -rw------- 1 root root 1.6G Sep 9 07:46 model.safetensors -rw-r--r-- 1 root root 1.2K Sep 9 07:46 processor_config.json -rw-r--r-- 1 root root 20M Sep 9 07:46 tokenizer.json -rw-r--r-- 1 root root 1.2K Sep 9 07:46 tokenizer_config.json 模型测试 编写推理配置文件，启动命令行交互式对话，测试医疗微调效果。 1、新建 infer_lora.yaml 放在 LLaMA-Factory 根目录 root@localhost:~\u002FLLaMA-Factory# cat \u003C\u003CEOF | tee infer_lora.yaml model_name_or_path: \u002Fdata\u002Fqwen3.5_lora_merged template: qwen temperature: 0.4 top_p: 0.8 max_new_tokens: 512 EOF 2、启动终端对话 root@localhost:~\u002FLLaMA-Factory# llamafactory-cli chat infer_lora.yaml Loading weights: 100%|███████████████████████████████████| 473\u002F473 [00:00\u003C00:00, 1092.90it\u002Fs] Welcome to the CLI application, use `clear` to remove the history, use `exit` to exit the application. User: 你好 Assistant: \u003Cthink> 用户打招呼，这是一个简单的问候。我应该用友好的方式回应，保持亲切和友好的语气。 \u003C\u002Fthink> 你好！很高兴见到你。有什么我可以帮你的吗？",12797,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":16,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":40},"2026 · 人工智能","#2563eb","16 \u002F 10",[19],{"targetType":8,"targetId":9,"likedByMe":42,"likeCount":43,"commentCount":43,"contentLikeCount":43,"contentCommentCount":43,"sourceLikeCount":43,"sourceCommentCount":43},false,0,[45,52,59,66,73,79,86,93],{"id":46,"kind":7,"title":47,"summary":48,"image":49,"href":50,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":51},"NEWS_ARTICLE:930","基于 vLLM+Nginx 构建负载均衡推理集群","企业内部私有环境部署大模型推理集群时，很容易遇到流量调度混乱、节点负载失衡、会话上下文丢失、接口缺少鉴权防护等一系列问题，单 vLLM 推理节点难以支撑并发请求。本文基于 Ubuntu 22.04 系统环境，搭建 Nginx + vLLM-Semantic-Router + vLLM-Router","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1379525\u002F202609\u002F1379525-20260910165534385-2022408098.png","\u002Fnews\u002F930",[19],{"id":53,"kind":7,"title":54,"summary":55,"image":56,"href":57,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":58},"NEWS_ARTICLE:932","2026年AI编程工具大全，33个主流工具一次看懂","事情是这样的，前两天看到一张图，是某个社区官网的「支持的工具」清单，我数了数，整整31个AI编程工具。 两年前这份清单撑死5个，现在直接31个，而且我居然每一个都认识。。。 干脆整理成一篇，顺手把最近字节的TraeWork和豆包工作也补了进来，凑成33个。 今天给大家推荐一遍，每个工具说说它是干什么","https:\u002F\u002Fimage.kjdaohang.com\u002Fimg\u002F20260909210838518.png","\u002Fnews\u002F932",[19],{"id":60,"kind":7,"title":61,"summary":62,"image":63,"href":64,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":65},"NEWS_ARTICLE:935","[Agent Memory \u002F 强化学习] MemPO源码学习笔记 ---（1）--- 总体","[Agent Memory \u002F 强化学习] MemPO源码学习笔记 （1） 总体 目录[Agent Memory \u002F 强化学习] MemPO源码学习笔记 （1） 总体0x00 概要0x01 基础 &amp; 背景1.1 用RL训练记忆系统的要点1.2 主要难点1.3 主要思路1.4 RL训练方案1.","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1850883\u002F202609\u002F1850883-20260906190854637-986949885.jpg","\u002Fnews\u002F935",[19],{"id":67,"kind":7,"title":68,"summary":69,"image":70,"href":71,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":72},"NEWS_ARTICLE:950","每天白嫖 WorkBuddy 100 积分，我让WorkBuddy自己领","有没有小伙伴跟我一样，每天都去白嫖 WorkBuddy 的 100 积分，每天都怕忘记领。 其实我早就开了会员，但还是会有积分焦虑，天天惦记着今天的积分领没领。后来我发现 WorkBuddy 可以自己领积分，今天把这个技能分享给小伙伴们。 Buddy 加油站每天签到领 100 积分，连续签满 7 天","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F2381533\u002F202609\u002F2381533-20260910080820041-1607850292.png","\u002Fnews\u002F950",[19],{"id":74,"kind":7,"title":75,"summary":76,"image":15,"href":77,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":78},"NEWS_ARTICLE:949","AI知识库，是捷径吗？","从信息化到数字化，再到当下的智能化，技术进步带来的效率提升，如果往好处想应该是：节省更多的时间和成本，用来做更多的事情。但从现实的角度看，节流比开源来得容易。","\u002Fnews\u002F949",[19],{"id":80,"kind":7,"title":81,"summary":82,"image":83,"href":84,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":85},"NEWS_ARTICLE:977","【OpenClaw具身硬件】ZeroClaw 源码阅读笔记（4）--- 代码执行","【OpenClaw具身硬件】ZeroClaw 源码阅读笔记（4） 代码执行 目录【OpenClaw具身硬件】ZeroClaw 源码阅读笔记（4） 代码执行0x00 概要0x01 代码合成1.1 核心思想1.2 业务逻辑具体应用场景能力体现1.3 实现细节生成种类Rust 代码Arduino CLI的","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1850883\u002F202608\u002F1850883-20260823212850242-1723558087.png","\u002Fnews\u002F977",[19],{"id":87,"kind":7,"title":88,"summary":89,"image":90,"href":91,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":92},"NEWS_ARTICLE:985","机器学习项目：客户分群——K-Means 聚类从选参到业务画像的完整实战","商场用户分群： 一、前言 在商场运营中，面对成千上万的顾客，如果用同一套营销策略对待所有人，效果往往事倍功半。高收入的中年人和月光族的年轻人等等群体，消费习惯和偏好截然不同——这就需要用户分群（Customer Segmentation）：根据用户的年龄、收入、消费行为等特征，将相似的用户归为一类，","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F3775135\u002F202609\u002F3775135-20260908154332888-1132576367.png","\u002Fnews\u002F985",[19],{"id":94,"kind":7,"title":95,"summary":96,"image":97,"href":98,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":99},"NEWS_ARTICLE:986","千问大模型完整RLHF全参数微调指南","大模型微调是实现模型领域定制的核心方案，本文承接《千问大模型二次 LoRA‑SFT 指令微调指南》部分内容，聚焦 Qwen3.5‑Base 纯文本基座全参数微调，完整复现 ChatGPT 风格 RLHF 对齐工程链路，覆盖数据预处理、SFT 监督微调、RM 奖励模型训练、PPO 强化学习、DPO 直","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1379525\u002F202609\u002F1379525-20260908150528296-1541712777.png","\u002Fnews\u002F986",[19]]