From 81b8a50aa55f8cbb7459dbdab1be5afcaeb04e6f Mon Sep 17 00:00:00 2001 From: jiaqiw09 <60021713+jiaqiw09@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:52:16 +0800 Subject: [PATCH] [deps] Update pyproject.toml and requirements (#9714) Co-authored-by: Yaowei Zheng --- .github/workflows/tests.yml | 3 +- .github/workflows/tests_cuda.yml | 3 +- .github/workflows/tests_npu.yml | 5 ++- README.md | 40 ++++++------------- README_zh.md | 39 ++++++------------ docker/docker-cuda/Dockerfile | 3 +- docker/docker-cuda/Dockerfile.megatron | 3 +- docker/docker-npu/Dockerfile | 3 +- docker/docker-rocm/Dockerfile | 3 +- pyproject.toml | 5 --- .../adam-mini.txt | 0 .../requirements => requirements}/apollo.txt | 0 .../requirements => requirements}/aqlm.txt | 0 .../requirements => requirements}/badam.txt | 0 .../bitsandbytes.txt | 0 requirements/deepspeed.txt | 1 + requirements/dev.txt | 4 ++ .../requirements => requirements}/eetq.txt | 0 .../requirements => requirements}/fp8-te.txt | 0 .../requirements => requirements}/fp8.txt | 0 .../requirements => requirements}/galore.txt | 0 .../requirements => requirements}/gptq.txt | 0 .../requirements => requirements}/hqq.txt | 0 .../liger-kernel.txt | 0 requirements/metrics.txt | 3 ++ .../minicpm-v.txt | 0 requirements/npu.txt | 4 ++ .../openmind.txt | 0 .../requirements => requirements}/sglang.txt | 0 .../requirements => requirements}/swanlab.txt | 0 .../requirements => requirements}/vllm.txt | 0 scripts/eval_bleu_rouge.py | 2 +- 32 files changed, 53 insertions(+), 68 deletions(-) rename {examples/requirements => requirements}/adam-mini.txt (100%) rename {examples/requirements => requirements}/apollo.txt (100%) rename {examples/requirements => requirements}/aqlm.txt (100%) rename {examples/requirements => requirements}/badam.txt (100%) rename {examples/requirements => requirements}/bitsandbytes.txt (100%) create mode 100644 requirements/deepspeed.txt create mode 100644 requirements/dev.txt rename {examples/requirements => requirements}/eetq.txt (100%) rename {examples/requirements => requirements}/fp8-te.txt (100%) rename {examples/requirements => requirements}/fp8.txt (100%) rename {examples/requirements => requirements}/galore.txt (100%) rename {examples/requirements => requirements}/gptq.txt (100%) rename {examples/requirements => requirements}/hqq.txt (100%) rename {examples/requirements => requirements}/liger-kernel.txt (100%) create mode 100644 requirements/metrics.txt rename {examples/requirements => requirements}/minicpm-v.txt (100%) create mode 100644 requirements/npu.txt rename {examples/requirements => requirements}/openmind.txt (100%) rename {examples/requirements => requirements}/sglang.txt (100%) rename {examples/requirements => requirements}/swanlab.txt (100%) rename {examples/requirements => requirements}/vllm.txt (100%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f4166aab1..3d8f34dcd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -70,7 +70,8 @@ jobs: run: | uv venv uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu - uv pip install -e ".[dev]" + uv pip install -e . + uv pip install -r requirements/dev.txt - name: Install transformers if: ${{ matrix.transformers }} diff --git a/.github/workflows/tests_cuda.yml b/.github/workflows/tests_cuda.yml index 544936082..1c51e1c7a 100644 --- a/.github/workflows/tests_cuda.yml +++ b/.github/workflows/tests_cuda.yml @@ -52,7 +52,8 @@ jobs: - name: Install dependencies run: | uv venv - uv pip install -e ".[dev]" + uv pip install -e . + uv pip install -r requirements/dev.txt - name: Cache HuggingFace models id: hf-hub-cache diff --git a/.github/workflows/tests_npu.yml b/.github/workflows/tests_npu.yml index 8a4674f5c..da455babd 100644 --- a/.github/workflows/tests_npu.yml +++ b/.github/workflows/tests_npu.yml @@ -58,8 +58,9 @@ jobs: - name: Install dependencies run: | uv venv - uv pip install torch-npu==${{matrix.pytorch_npu}} - uv pip install -e ".[dev]" + uv pip install -r requirements/npu.txt + uv pip install -e . + uv pip install -r requirements/dev.txt - name: Install node run: | diff --git a/README.md b/README.md index ef9cc36fe..bf20e9090 100644 --- a/README.md +++ b/README.md @@ -517,10 +517,11 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e ".[metrics]" +pip install -e . +pip install -r requirements/metrics.txt ``` -Optional dependencies available: `metrics`, `deepspeed`. Install with: `pip install -e ".[metrics,deepspeed]"` +Optional dependencies available: `metrics`, `deepspeed`. Install with: `pip install -e . && pip install -r requirements/metrics.txt -r requirements/deepspeed.txt` Additional dependencies for specific features are available in `examples/requirements/`. @@ -578,36 +579,21 @@ To enable FlashAttention-2 on the Windows platform, please use the script from [
For Ascend NPU users -To install LLaMA Factory on Ascend NPU devices, please upgrade Python to version 3.10 or higher: `pip install -e . torch-npu==2.7.1`. Additionally, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. Please follow the [installation tutorial](https://www.hiascend.com/document/detail/en/CANNCommunityEdition/600alphaX/softwareinstall/instg/atlasdeploy_03_0031.html) or use the following commands: +To install LLaMA Factory on Ascend NPU devices, please upgrade Python to version 3.10 or higher: `pip install -r requirements/npu.txt`. Additionally, you need to install the **Ascend CANN Toolkit and Kernels**. Please follow the [installation tutorial](https://llamafactory.readthedocs.io/en/latest/advanced/npu_installation.html). + + +You can also download the pre-built Docker images: ```bash -# replace the url according to your CANN version and devices -# install CANN Toolkit -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C20SPC702/Ascend-cann-toolkit_8.0.0.alpha002_linux-"$(uname -i)".run -bash Ascend-cann-toolkit_8.0.0.alpha002_linux-"$(uname -i)".run --install +# Docker Hub +docker pull hiyouga/llamafactory:latest-npu-a2 +docker pull hiyouga/llamafactory:latest-npu-a3 -# install CANN Kernels -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C20SPC702/Ascend-cann-kernels-910b_8.0.0.alpha002_linux-"$(uname -i)".run -bash Ascend-cann-kernels-910b_8.0.0.alpha002_linux-"$(uname -i)".run --install - -# set env variables -source /usr/local/Ascend/ascend-toolkit/set_env.sh +# quay.io +docker pull quay.io/ascend/llamafactory:latest-npu-a2 +docker pull quay.io/ascend/llamafactory:latest-npu-a3 ``` -| Requirement | Minimum | Recommend | -| ------------ | ------- | -------------- | -| CANN | 8.0.RC1 | 8.0.0.alpha002 | -| torch | 2.1.0 | 2.7.1 | -| torch-npu | 2.1.0 | 2.7.1 | -| deepspeed | 0.13.2 | 0.13.2 | -| vllm-ascend | - | 0.7.3 | - -Remember to use `ASCEND_RT_VISIBLE_DEVICES` instead of `CUDA_VISIBLE_DEVICES` to specify the device to use. - -If you cannot infer model on NPU devices, try setting `do_sample: false` in the configurations. - -Download the pre-built Docker images: [32GB](http://mirrors.cn-central-221.ovaijisuan.com/detail/130.html) | [64GB](http://mirrors.cn-central-221.ovaijisuan.com/detail/131.html) - #### Install BitsAndBytes To use QLoRA based on bitsandbytes on Ascend NPU, please follow these 3 steps: diff --git a/README_zh.md b/README_zh.md index 2fad20d3c..d2f543f13 100644 --- a/README_zh.md +++ b/README_zh.md @@ -519,10 +519,11 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e ".[metrics]" +pip install -e . +pip install -r requirements/metrics.txt ``` -可选的额外依赖项:`metrics`、`deepspeed`。使用 `pip install -e ".[metrics,deepspeed]"` 安装。 +可选的额外依赖项:`metrics`、`deepspeed`。使用 `pip install -e . && pip install -r requirements/metrics.txt -r requirements/deepspeed.txt` 安装。 其他可选依赖项请参考 `examples/requirements/` 目录下的文件。 @@ -580,36 +581,20 @@ pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/downl
昇腾 NPU 用户指南 -在昇腾 NPU 设备上安装 LLaMA Factory 时,请升级 Python 到 3.10 及以上,并需要指定额外依赖项,使用 `pip install -e . torch-npu==2.7.1` 命令安装。此外,还需要安装 **[Ascend CANN Toolkit 与 Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**,安装方法请参考[安装教程](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)或使用以下命令: +在昇腾 NPU 设备上安装 LLaMA Factory 时,请升级 Python 到 3.10 及以上,并需要指定额外依赖项,使用 `pip install -r requirements/npu.txt` 命令安装。此外,还需要安装 **Ascend CANN Toolkit 与 Kernels**,安装方法请参考[安装教程](https://llamafactory.readthedocs.io/zh-cn/latest/advanced/npu_installation.html)。 + +您可以直接下载预安装的最新docker镜像: ```bash -# 请替换 URL 为 CANN 版本和设备型号对应的 URL -# 安装 CANN Toolkit -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run -bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install +# Docker Hub +docker pull hiyouga/llamafactory:latest-npu-a2 +docker pull hiyouga/llamafactory:latest-npu-a3 -# 安装 CANN Kernels -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run -bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install - -# 设置环境变量 -source /usr/local/Ascend/ascend-toolkit/set_env.sh +# quay.io +docker pull quay.io/ascend/llamafactory:latest-npu-a2 +docker pull quay.io/ascend/llamafactory:latest-npu-a3 ``` -| 依赖项 | 至少 | 推荐 | -| ------------ | ------- | -------------- | -| CANN | 8.0.RC1 | 8.0.0.alpha002 | -| torch | 2.1.0 | 2.7.1 | -| torch-npu | 2.1.0 | 2.7.1 | -| deepspeed | 0.13.2 | 0.13.2 | -| vllm-ascend | - | 0.7.3 | - -请使用 `ASCEND_RT_VISIBLE_DEVICES` 而非 `CUDA_VISIBLE_DEVICES` 来指定运算设备。 - -如果遇到无法正常推理的情况,请尝试设置 `do_sample: false`。 - -下载预构建 Docker 镜像:[32GB](http://mirrors.cn-central-221.ovaijisuan.com/detail/130.html) | [64GB](http://mirrors.cn-central-221.ovaijisuan.com/detail/131.html) - #### 安装 BitsAndBytes 如果要在 Ascend NPU 上进行基于 bitsandbytes 的 QLoRA 量化微调,请执行如下步骤: diff --git a/docker/docker-cuda/Dockerfile b/docker/docker-cuda/Dockerfile index b70ad5b50..f33d14e33 100644 --- a/docker/docker-cuda/Dockerfile +++ b/docker/docker-cuda/Dockerfile @@ -32,7 +32,8 @@ RUN pip config set global.index-url "${PIP_INDEX}" && \ COPY . /app # Install LLaMA Factory -RUN pip install --no-cache-dir --no-build-isolation -e ".[metrics,deepspeed]" +RUN pip install --no-cache-dir --no-build-isolation -e . && \ + pip install --no-cache-dir --no-build-isolation -r requirements/metrics.txt -r requirements/deepspeed.txt # Rebuild flash attention RUN if [ "${INSTALL_FLASHATTN}" == "true" ]; then \ diff --git a/docker/docker-cuda/Dockerfile.megatron b/docker/docker-cuda/Dockerfile.megatron index 7f457fefd..8b44434d4 100644 --- a/docker/docker-cuda/Dockerfile.megatron +++ b/docker/docker-cuda/Dockerfile.megatron @@ -60,7 +60,8 @@ WORKDIR /app COPY . /app # Install LLaMA Factory -RUN pip install --no-cache-dir -e ".[metrics]" --no-build-isolation +RUN pip install --no-cache-dir -e . --no-build-isolation && \ + pip install --no-cache-dir -r requirements/metrics.txt --no-build-isolation RUN pip install "git+https://github.com/alibaba/roll.git#subdirectory=mcore_adapter" diff --git a/docker/docker-npu/Dockerfile b/docker/docker-npu/Dockerfile index d3c7acbaa..364774f85 100644 --- a/docker/docker-npu/Dockerfile +++ b/docker/docker-npu/Dockerfile @@ -35,7 +35,8 @@ COPY . /app # Install torch-npu RUN pip uninstall -y torch torchvision torchaudio && \ pip install --no-cache-dir "torch==2.7.1" "torch-npu==2.7.1" "torchvision==0.22.1" "torchaudio==2.7.1" --index-url "${PYTORCH_INDEX}" && \ - pip install --no-cache-dir -e ".[metrics]" --no-build-isolation + pip install --no-cache-dir -e . --no-build-isolation && \ + pip install --no-cache-dir -r requirements/metrics.txt --no-build-isolation # Set up volumes # VOLUME [ "/root/.cache/huggingface", "/app/shared_data", "/app/output" ] diff --git a/docker/docker-rocm/Dockerfile b/docker/docker-rocm/Dockerfile index d0a981767..4e82be572 100644 --- a/docker/docker-rocm/Dockerfile +++ b/docker/docker-rocm/Dockerfile @@ -34,7 +34,8 @@ COPY . /app # Reinstall pytorch rocm and install LLaMA Factory RUN pip uninstall -y torch torchvision torchaudio && \ - pip install --no-cache-dir --no-build-isolation -e --pre ".[metrics,deepspeed]" --index-url "${PYTORCH_INDEX}" + pip install --no-cache-dir --no-build-isolation -e --pre . --index-url "${PYTORCH_INDEX}" && \ + pip install --no-cache-dir --no-build-isolation -r requirements/metrics.txt -r requirements/deepspeed.txt --index-url "${PYTORCH_INDEX}" # Rebuild flash attention RUN if [ "${INSTALL_FLASHATTN}" == "true" ]; then \ diff --git a/pyproject.toml b/pyproject.toml index ef03b82f8..357df9314 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,11 +76,6 @@ dependencies = [ "sse-starlette" ] -[project.optional-dependencies] -dev = ["pre-commit", "ruff", "pytest", "build"] -metrics = ["nltk", "jieba", "rouge-chinese"] -deepspeed = ["deepspeed>=0.10.0,<=0.16.9"] - [project.scripts] llamafactory-cli = "llamafactory.cli:main" lmf = "llamafactory.cli:main" diff --git a/examples/requirements/adam-mini.txt b/requirements/adam-mini.txt similarity index 100% rename from examples/requirements/adam-mini.txt rename to requirements/adam-mini.txt diff --git a/examples/requirements/apollo.txt b/requirements/apollo.txt similarity index 100% rename from examples/requirements/apollo.txt rename to requirements/apollo.txt diff --git a/examples/requirements/aqlm.txt b/requirements/aqlm.txt similarity index 100% rename from examples/requirements/aqlm.txt rename to requirements/aqlm.txt diff --git a/examples/requirements/badam.txt b/requirements/badam.txt similarity index 100% rename from examples/requirements/badam.txt rename to requirements/badam.txt diff --git a/examples/requirements/bitsandbytes.txt b/requirements/bitsandbytes.txt similarity index 100% rename from examples/requirements/bitsandbytes.txt rename to requirements/bitsandbytes.txt diff --git a/requirements/deepspeed.txt b/requirements/deepspeed.txt new file mode 100644 index 000000000..fe9116909 --- /dev/null +++ b/requirements/deepspeed.txt @@ -0,0 +1 @@ +deepspeed>=0.10.0,<=0.16.9 diff --git a/requirements/dev.txt b/requirements/dev.txt new file mode 100644 index 000000000..f0fc17fcc --- /dev/null +++ b/requirements/dev.txt @@ -0,0 +1,4 @@ +pre-commit +ruff +pytest +build diff --git a/examples/requirements/eetq.txt b/requirements/eetq.txt similarity index 100% rename from examples/requirements/eetq.txt rename to requirements/eetq.txt diff --git a/examples/requirements/fp8-te.txt b/requirements/fp8-te.txt similarity index 100% rename from examples/requirements/fp8-te.txt rename to requirements/fp8-te.txt diff --git a/examples/requirements/fp8.txt b/requirements/fp8.txt similarity index 100% rename from examples/requirements/fp8.txt rename to requirements/fp8.txt diff --git a/examples/requirements/galore.txt b/requirements/galore.txt similarity index 100% rename from examples/requirements/galore.txt rename to requirements/galore.txt diff --git a/examples/requirements/gptq.txt b/requirements/gptq.txt similarity index 100% rename from examples/requirements/gptq.txt rename to requirements/gptq.txt diff --git a/examples/requirements/hqq.txt b/requirements/hqq.txt similarity index 100% rename from examples/requirements/hqq.txt rename to requirements/hqq.txt diff --git a/examples/requirements/liger-kernel.txt b/requirements/liger-kernel.txt similarity index 100% rename from examples/requirements/liger-kernel.txt rename to requirements/liger-kernel.txt diff --git a/requirements/metrics.txt b/requirements/metrics.txt new file mode 100644 index 000000000..533493d82 --- /dev/null +++ b/requirements/metrics.txt @@ -0,0 +1,3 @@ +nltk +jieba +rouge-chinese diff --git a/examples/requirements/minicpm-v.txt b/requirements/minicpm-v.txt similarity index 100% rename from examples/requirements/minicpm-v.txt rename to requirements/minicpm-v.txt diff --git a/requirements/npu.txt b/requirements/npu.txt new file mode 100644 index 000000000..054bd93ea --- /dev/null +++ b/requirements/npu.txt @@ -0,0 +1,4 @@ +torch==2.7.1 +torch-npu==2.7.1 +torchvision==0.22.1 +torchaudio==2.7.1 diff --git a/examples/requirements/openmind.txt b/requirements/openmind.txt similarity index 100% rename from examples/requirements/openmind.txt rename to requirements/openmind.txt diff --git a/examples/requirements/sglang.txt b/requirements/sglang.txt similarity index 100% rename from examples/requirements/sglang.txt rename to requirements/sglang.txt diff --git a/examples/requirements/swanlab.txt b/requirements/swanlab.txt similarity index 100% rename from examples/requirements/swanlab.txt rename to requirements/swanlab.txt diff --git a/examples/requirements/vllm.txt b/requirements/vllm.txt similarity index 100% rename from examples/requirements/vllm.txt rename to requirements/vllm.txt diff --git a/scripts/eval_bleu_rouge.py b/scripts/eval_bleu_rouge.py index 22e370bc7..4ff96dd8e 100644 --- a/scripts/eval_bleu_rouge.py +++ b/scripts/eval_bleu_rouge.py @@ -28,7 +28,7 @@ try: jieba.setLogLevel(logging.CRITICAL) jieba.initialize() except ImportError: - print("Please install llamafactory with `pip install -e .[metrics]`.") + print("Please install llamafactory with `pip install -r requirements/metrics.txt`.") raise