llamafactory使用qlora训练
1.环境搭建
conda create -n qlora python=3.10 -y
conda activate qlora
# 克隆LLaMA-Factory仓库
git clone https://github.com/hiyouga/LLaMA-Factory.git
# 进入仓库目录
cd LLaMA-Factory
# 切换到0.9.4版本
git checkout v0.9.4
pip install -e .
2.开始训练
2.1找到训练的最大批次
不启动qlora找到训练的刚好"out of memory"的批次,然后再启动qlora进行量化训练。

每次开始训练时要更改输出目录。
2.使用qlora进行训练
3.导出环境包版本信息
3.1导出环境信息
首先激活要导出的 Conda 环境,命令如下(将your_environment_name替换为实际环境名称):
conda activate your_environment_name
然后导出环境依赖信息,生成environment.yml文件,命令如下:
conda env export > /workspace/qlora-environment.yml
qlora-environment.yml
name: qlora
channels:
- conda-forge
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- bzip2=1.0.8=h4bc722e_7
- ca-certificates=2025.8.3=hbd8a1cb_0
- ld_impl_linux-64=2.44=h1423503_1
- libexpat=2.7.1=hecca717_0
- libffi=3.4.6=h2dba641_1
- libgcc=15.1.0=h767d61c_4
- libgcc-ng=15.1.0=h69a702a_4
- libgomp=15.1.0=h767d61c_4
- liblzma=5.8.1=hb9d3cd8_2
- libnsl=2.0.1=hb9d3cd8_1
- libsqlite=3.50.4=h0c1763c_0
- libuuid=2.38.1=h0b41bf4_0
- libxcrypt=4.4.36=hd590300_1
- libzlib=1.3.1=hb9d3cd8_2
- ncurses=6.5=h2d0b736_3
- openssl=3.5.2=h26f9b46_0
- pip=25.2=pyh8b19718_0
- python=3.10.18=hd6af730_0_cpython
- readline=8.2=h8c095d6_2
- setuptools=80.9.0=pyhff2d567_0
- tk=8.6.13=noxft_hd72426e_102
- wheel=0.45.1=pyhd8ed1ab_1
- pip:
- accelerate==1.7.0
- aiofiles==23.2.1
- aiohappyeyeballs==2.6.1
- aiohttp==3.12.15
- aiosignal==1.4.0
- altair==5.5.0
- annotated-types==0.7.0
- antlr4-python3-runtime==4.9.3
- anyio==4.10.0
- async-timeout==5.0.1
- attrs==25.3.0
- audioread==3.0.1
- av==15.0.0
- bitsandbytes==0.47.0
- certifi==2025.8.3
- cffi==1.17.1
- charset-normalizer==3.4.3
- click==8.2.1
- contourpy==1.3.2
- cycler==0.12.1
- datasets==3.1.0
- decorator==5.2.1
- dill==0.3.8
- docstring-parser==0.17.0
- einops==0.8.1
- exceptiongroup==1.3.0
- fastapi==0.116.1
- ffmpy==0.6.1
- filelock==3.19.1
- fire==0.7.1
- fonttools==4.59.1
- frozenlist==1.7.0
- fsspec==2024.9.0
- gradio==5.31.0
- gradio-client==1.10.1
- groovy==0.1.2
- h11==0.16.0
- hf-transfer==0.1.9
- hf-xet==1.1.7
- httpcore==1.0.9
- httpx==0.28.1
- huggingface-hub==0.34.4
- idna==3.10
- importlib-resources==6.5.2
- jinja2==3.1.6
- joblib==1.5.1
- jsonschema==4.25.0
- jsonschema-specifications==2025.4.1
- kiwisolver==1.4.9
- lazy-loader==0.4
- librosa==0.11.0
- llamafactory==0.9.4.dev0
- llvmlite==0.44.0
- markdown-it-py==4.0.0
- markupsafe==2.1.5
- matplotlib==3.10.5
- mdurl==0.1.2
- modelscope==1.29.0
- mpmath==1.3.0
- msgpack==1.1.1
- multidict==6.6.4
- multiprocess==0.70.16
- narwhals==2.1.2
- networkx==3.4.2
- numba==0.61.2
- numpy==1.26.4
- 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.0
- orjson==3.11.2
- packaging==25.0
- pandas==2.3.1
- peft==0.15.2
- pillow==10.4.0
- platformdirs==4.3.8
- pooch==1.8.2
- propcache==0.3.2
- protobuf==6.32.0
- psutil==7.0.0
- pyarrow==21.0.0
- pycparser==2.22
- pydantic==2.10.6
- pydantic-core==2.27.2
- pydub==0.25.1
- pygments==2.19.2
- pyparsing==3.2.3
- python-dateutil==2.9.0.post0
- python-multipart==0.0.20
- pytz==2025.2
- pyyaml==6.0.2
- referencing==0.36.2
- regex==2025.7.34
- requests==2.32.4
- rich==14.1.0
- rpds-py==0.27.0
- ruff==0.12.9
- safehttpx==0.1.6
- safetensors==0.5.3
- scikit-learn==1.7.1
- scipy==1.15.3
- semantic-version==2.10.0
- sentencepiece==0.2.1
- shellingham==1.5.4
- shtab==1.7.2
- six==1.17.0
- sniffio==1.3.1
- soundfile==0.13.1
- soxr==0.5.0.post1
- sse-starlette==3.0.2
- starlette==0.47.2
- sympy==1.14.0
- termcolor==3.1.0
- threadpoolctl==3.6.0
- tiktoken==0.11.0
- tokenizers==0.21.1
- tomlkit==0.12.0
- torch==2.8.0
- tqdm==4.67.1
- transformers==4.55.0
- triton==3.4.0
- trl==0.9.6
- typer==0.16.0
- typing-extensions==4.14.1
- typing-inspection==0.4.1
- tyro==0.8.14
- tzdata==2025.2
- urllib3==2.5.0
- uvicorn==0.35.0
- websockets==11.0.3
- xxhash==3.5.0
- yarl==1.20.1
prefix: /root/miniforge3/envs/qlora
3.2导出环境基本信息
若只需快速迁移或记录环境基本信息,可使用以下命令导出当前环境中安装的所有包和版本号到package-list.txt文件:
conda list --export > package-list.txt
4.导入环境信息
4.1根据environment.yml文件创建环境
将environment.yml文件复制到目标机器上,进入该文件所在目录,执行以下命令创建环境:
conda env create -f environment.yml
创建完成后,可使用以下命令激活新环境(将your_environment_name替换为实际环境名称):
conda activate your_environment_name
4.2根据package-list.txt文件安装包
将package-list.txt文件复制到目标机器上,进入文件所在目录,执行以下命令安装包:
conda install --file package-list.txt