diff --git a/.dockerignore b/.dockerignore
index bc56ab8b..a07ec860 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,12 +3,12 @@
.github
.venv
cache
-data
docker
saves
hf_cache
ms_cache
om_cache
+shared_data
output
.dockerignore
.gitattributes
diff --git a/.github/workflows/push_docker.yml b/.github/workflows/docker.yml
similarity index 85%
rename from .github/workflows/push_docker.yml
rename to .github/workflows/docker.yml
index d9189d5c..c3c38005 100644
--- a/.github/workflows/push_docker.yml
+++ b/.github/workflows/docker.yml
@@ -1,4 +1,4 @@
-name: push_docker
+name: docker
on:
workflow_dispatch:
@@ -32,7 +32,15 @@ jobs:
url: https://hub.docker.com/r/hiyouga/llamafactory
steps:
- - name: Checkout repository
+ - name: Free up disk space
+ run: |
+ df -h
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /opt/hostedtoolcache
+ df -h
+
+ - name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
diff --git a/README.md b/README.md
index b68ea1cb..e9a0cd3b 100644
--- a/README.md
+++ b/README.md
@@ -474,16 +474,25 @@ huggingface-cli login
> [!IMPORTANT]
> Installation is mandatory.
+#### Install from Source
+
```bash
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
```
-Extra dependencies available: torch, torch-npu, metrics, deepspeed, liger-kernel, bitsandbytes, hqq, eetq, gptq, aqlm, vllm, sglang, galore, apollo, badam, adam-mini, qwen, minicpm_v, modelscope, openmind, swanlab, quality
+Extra dependencies available: torch, torch-npu, metrics, deepspeed, liger-kernel, bitsandbytes, hqq, eetq, gptq, aqlm, vllm, sglang, galore, apollo, badam, adam-mini, qwen, minicpm_v, modelscope, openmind, swanlab, dev
-> [!TIP]
-> Use `pip install -e . --no-deps --no-build-isolation` to resolve package conflicts.
+#### Install from Docker Image
+
+```bash
+docker run -it --rm --gpus=all --ipc=host hiyouga/llamafactory:latest
+```
+
+Find the pre-built images: https://hub.docker.com/r/hiyouga/llamafactory/tags
+
+Please refer to [build docker](#build-docker) to build the image yourself.
Setting up a virtual environment with uv
@@ -671,7 +680,7 @@ docker run -dit --ipc=host --gpus=all \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-p 7860:7860 \
-p 8000:8000 \
@@ -686,14 +695,14 @@ For Ascend NPU users:
```bash
docker build -f ./docker/docker-npu/Dockerfile \
--build-arg PIP_INDEX=https://pypi.org/simple \
- --build-arg EXTRAS=metrics \
+ --build-arg EXTRAS=torch-npu,metrics \
-t llamafactory:latest .
docker run -dit --ipc=host \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
@@ -723,7 +732,7 @@ docker run -dit --ipc=host \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-p 7860:7860 \
-p 8000:8000 \
@@ -742,7 +751,7 @@ docker exec -it llamafactory bash
- `hf_cache`: Utilize Hugging Face cache on the host machine. Reassignable if a cache already exists in a different directory.
- `ms_cache`: Similar to Hugging Face cache but for ModelScope users.
- `om_cache`: Similar to Hugging Face cache but for Modelers users.
-- `data`: Place datasets on this dir of the host machine so that they can be selected on LLaMA Board GUI.
+- `shared_data`: Place datasets on this dir of the host machine so that they can be selected on LLaMA Board GUI.
- `output`: Set export dir to this location so that the merged result can be accessed directly on the host machine.
diff --git a/README_zh.md b/README_zh.md
index e1a37d45..f38c340d 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -476,16 +476,25 @@ huggingface-cli login
> [!IMPORTANT]
> 此步骤为必需。
+#### 从源码安装
+
```bash
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
```
-可选的额外依赖项:torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytes、hqq、eetq、gptq、aqlm、vllm、sglang、galore、apollo、badam、adam-mini、qwen、minicpm_v、modelscope、openmind、swanlab、quality
+可选的额外依赖项:torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytes、hqq、eetq、gptq、aqlm、vllm、sglang、galore、apollo、badam、adam-mini、qwen、minicpm_v、modelscope、openmind、swanlab、dev
-> [!TIP]
-> 遇到包冲突时,可使用 `pip install -e . --no-deps --no-build-isolation` 解决。
+#### 从镜像安装
+
+```bash
+docker run -it --rm --gpus=all --ipc=host hiyouga/llamafactory:latest
+```
+
+查看全部镜像:https://hub.docker.com/r/hiyouga/llamafactory/tags
+
+请参阅[构建 Docker](#构建-docker) 来重新构建镜像。
使用 uv 构建虚拟环境
@@ -673,7 +682,7 @@ docker run -dit --ipc=host --gpus=all \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-p 7860:7860 \
-p 8000:8000 \
@@ -688,14 +697,14 @@ docker exec -it llamafactory bash
```bash
docker build -f ./docker/docker-npu/Dockerfile \
--build-arg PIP_INDEX=https://pypi.org/simple \
- --build-arg EXTRAS=metrics \
+ --build-arg EXTRAS=torch-npu,metrics \
-t llamafactory:latest .
docker run -dit --ipc=host \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
@@ -725,7 +734,7 @@ docker run -dit --ipc=host \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./om_cache:/root/.cache/openmind \
- -v ./data:/app/data \
+ -v ./shared_data:/app/shared_data \
-v ./output:/app/output \
-p 7860:7860 \
-p 8000:8000 \
@@ -744,7 +753,7 @@ docker exec -it llamafactory bash
- `hf_cache`:使用宿主机的 Hugging Face 缓存文件夹,允许更改为新的目录。
- `ms_cache`:类似 Hugging Face 缓存文件夹,为 ModelScope 用户提供。
- `om_cache`:类似 Hugging Face 缓存文件夹,为 Modelers 用户提供。
-- `data`:宿主机中存放数据集的文件夹路径。
+- `shared_data`:宿主机中存放数据集的文件夹路径。
- `output`:将导出目录设置为该路径后,即可在宿主机中访问导出后的模型。
diff --git a/docker/docker-cuda/Dockerfile b/docker/docker-cuda/Dockerfile
index beb13a3c..7aaa0d0a 100644
--- a/docker/docker-cuda/Dockerfile
+++ b/docker/docker-cuda/Dockerfile
@@ -1,5 +1,5 @@
# https://hub.docker.com/r/hiyouga/pytorch/tags
-ARG BASE_IMAGE=hiyouga/pytorch:th2.6.0-cu124-flashattn2.7.4-cxx11abi0
+ARG BASE_IMAGE=hiyouga/pytorch:th2.6.0-cu124-flashattn2.7.4-cxx11abi0-devel
FROM ${BASE_IMAGE}
# Installation arguments
@@ -47,7 +47,7 @@ RUN if [ "${INSTALL_FLASHATTN}" == "true" ]; then \
fi
# Set up volumes
-VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/data", "/app/output" ]
+VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/shared_data", "/app/output" ]
# Expose port 7860 for LLaMA Board
ENV GRADIO_SERVER_PORT=7860
diff --git a/docker/docker-cuda/Dockerfile.base b/docker/docker-cuda/Dockerfile.base
index f8c09827..27c08a24 100644
--- a/docker/docker-cuda/Dockerfile.base
+++ b/docker/docker-cuda/Dockerfile.base
@@ -1,6 +1,6 @@
# Start from the pytorch official image (ubuntu-22.04 + cuda-12.4.1 + python-3.11)
# https://hub.docker.com/r/pytorch/pytorch/tags
-FROM pytorch/pytorch:2.6.0-cuda12.4-cudnn9-runtime
+FROM pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel
# Define environments
ENV MAX_JOBS=16
diff --git a/docker/docker-cuda/docker-compose.yml b/docker/docker-cuda/docker-compose.yml
index d115f3b2..1232f3e4 100644
--- a/docker/docker-cuda/docker-compose.yml
+++ b/docker/docker-cuda/docker-compose.yml
@@ -11,7 +11,7 @@ services:
- ../../hf_cache:/root/.cache/huggingface
- ../../ms_cache:/root/.cache/modelscope
- ../../om_cache:/root/.cache/openmind
- - ../../data:/app/data
+ - ../../shared_data:/app/shared_data
- ../../output:/app/output
ports:
- "7860:7860"
diff --git a/docker/docker-npu/Dockerfile b/docker/docker-npu/Dockerfile
index b1201a9a..e00f34a5 100644
--- a/docker/docker-npu/Dockerfile
+++ b/docker/docker-npu/Dockerfile
@@ -4,7 +4,7 @@ FROM ${BASE_IMAGE}
# Installation arguments
ARG PIP_INDEX=https://pypi.org/simple
-ARG EXTRAS=metrics
+ARG EXTRAS=torch-npu,metrics
ARG HTTP_PROXY=""
# Define environments
@@ -39,7 +39,7 @@ COPY . /app
RUN pip install --no-cache-dir -e ".[${EXTRAS}]" --no-build-isolation
# Set up volumes
-VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/data", "/app/output" ]
+VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/shared_data", "/app/output" ]
# Expose port 7860 for LLaMA Board
ENV GRADIO_SERVER_PORT=7860
diff --git a/docker/docker-npu/docker-compose.yml b/docker/docker-npu/docker-compose.yml
index 50664e2e..0b45d3a5 100644
--- a/docker/docker-npu/docker-compose.yml
+++ b/docker/docker-npu/docker-compose.yml
@@ -5,13 +5,13 @@ services:
context: ../..
args:
PIP_INDEX: https://pypi.org/simple
- EXTRAS: metrics
+ EXTRAS: torch-npu,metrics
container_name: llamafactory
volumes:
- ../../hf_cache:/root/.cache/huggingface
- ../../ms_cache:/root/.cache/modelscope
- ../../om_cache:/root/.cache/openmind
- - ../../data:/app/data
+ - ../../shared_data:/app/shared_data
- ../../output:/app/output
- /usr/local/dcmi:/usr/local/dcmi
- /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
diff --git a/docker/docker-rocm/Dockerfile b/docker/docker-rocm/Dockerfile
index 58abb9a7..58162f3d 100644
--- a/docker/docker-rocm/Dockerfile
+++ b/docker/docker-rocm/Dockerfile
@@ -52,7 +52,7 @@ RUN if [ "${INSTALL_FLASHATTN}" == "true" ]; then \
fi
# Set up volumes
-VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/data", "/app/output" ]
+VOLUME [ "/root/.cache/huggingface", "/root/.cache/modelscope", "/root/.cache/openmind", "/app/shared_data", "/app/output" ]
# Expose port 7860 for LLaMA Board
ENV GRADIO_SERVER_PORT=7860
diff --git a/docker/docker-rocm/docker-compose.yml b/docker/docker-rocm/docker-compose.yml
index 17786e7c..33567cc4 100644
--- a/docker/docker-rocm/docker-compose.yml
+++ b/docker/docker-rocm/docker-compose.yml
@@ -11,7 +11,7 @@ services:
- ../../hf_cache:/root/.cache/huggingface
- ../../ms_cache:/root/.cache/modelscope
- ../../om_cache:/root/.cache/openmind
- - ../../data:/app/data
+ - ../../shared_data:/app/shared_data
- ../../output:/app/output
ports:
- "7860:7860"
diff --git a/pyproject.toml b/pyproject.toml
index de9617ad..41ce108d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -92,12 +92,4 @@ conflicts = [
{ extra = "torch-npu" },
{ extra = "sglang" },
],
- [
- { extra = "vllm" },
- { extra = "sglang" },
- ],
- [
- { extra = "sglang" },
- { extra = "minicpm_v" },
- ],
]
diff --git a/setup.py b/setup.py
index a7fc467c..8d3607bc 100644
--- a/setup.py
+++ b/setup.py
@@ -45,7 +45,7 @@ extra_require = {
"torch": ["torch>=2.0.0", "torchvision>=0.15.0"],
"torch-npu": ["torch==2.4.0", "torch-npu==2.4.0.post2", "decorator"],
"metrics": ["nltk", "jieba", "rouge-chinese"],
- "deepspeed": ["deepspeed>=0.10.0,<=0.16.5"],
+ "deepspeed": ["deepspeed>=0.10.0,<=0.16.9"],
"liger-kernel": ["liger-kernel>=0.5.5"],
"bitsandbytes": ["bitsandbytes>=0.39.0"],
"hqq": ["hqq"],
@@ -58,7 +58,6 @@ extra_require = {
"apollo": ["apollo-torch"],
"badam": ["badam>=1.2.1"],
"adam-mini": ["adam-mini"],
- "qwen": ["transformers_stream_generator"],
"minicpm_v": [
"soundfile",
"torchvision",
@@ -68,7 +67,6 @@ extra_require = {
"msgpack",
"referencing",
"jsonschema_specifications",
- "transformers==4.48.3",
],
"modelscope": ["modelscope"],
"openmind": ["openmind"],