使用 Docker 构建 LLaMA-Factory 环境可以简化依赖安装和环境配置。以下是关于如何使用 Docker 构建 CUDA、Ascend NPU 和 AMD ROCm 环境的详细说明。
1. 安装 Docker
首先,确保你的系统上已经安装了 Docker。如果没有安装,可以访问 Docker 官方网站获取安装说明,安装完成后确认 Docker 服务已经启动。
2. 获取 LLaMA-Factory 代码
在开始构建 Docker 容器前,需要将 LLaMA-Factory 的代码克隆到本地:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory
3. 使用 Docker Compose 构建
3.1 针对 CUDA 用户
-
进入
docker/docker-cuda/
目录:cd docker/docker-cuda/
-
运行 Docker Compose 启动容器:
docker compose up -d
这条命令会在后台运行 Docker 容器。
up -d
中的-d
表示容器将在后台运行。 -
进入容器内部:
docker compose exec llamafactory bash
这条命令会将你带入到名为
llamafactory
的容器中,并且你将能够在容器内操作。
3.2 针对 Ascend NPU 用户
-
进入
docker/docker-npu/
目录:cd docker/docker-npu/
-
启动容器:
docker compose up -d
-
进入容器内部:
docker compose exec llamafactory bash
3.3 针对 AMD ROCm 用户
-
进入
docker/docker-rocm/
目录:cd docker/docker-rocm/
-
启动容器:
docker compose up -d
-
进入容器内部:
docker compose exec llamafactory bash
4. 使用 Docker 容器内部进行操作
一旦进入容器内部,你可以按照 LLaMA-Factory 的使用教程进行训练、推理或模型微调等操作。
例如,你可以运行以下命令进行 LoRA 微调:
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
5. 停止 Docker 容器
完成操作后,如果不再需要运行容器,可以通过以下命令停止并删除容器:
docker compose down
6. 手动构建 Docker 容器(不使用 Docker Compose)
如果你不想使用 Docker Compose,也可以手动构建 Docker 容器。
-
首先,编写一个
Dockerfile
,其内容与docker/docker-cuda/Dockerfile
类似。以 CUDA 为例,Dockerfile
可能包含如下内容:FROM nvidia/cuda:11.7.0-cudnn8-devel-ubuntu20.04 # 安装基础依赖 RUN apt-get update && apt-get install -y \ git \ curl \ wget \ python3 \ python3-pip # 克隆 LLaMA-Factory 项目 RUN git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git # 安装 Python 依赖 WORKDIR /LLaMA-Factory RUN pip install -e ".[torch,metrics]"
-
构建镜像:
docker build -t llamafactory-cuda .
-
运行镜像并进入容器:
docker run -it llamafactory-cuda bash
你将进入容器内部,在这里可以运行 LLaMA-Factory 的相关命令。
7. 挂载数据卷
如果你的数据集存储在主机本地磁盘上,可以使用 Docker 的卷挂载功能,将主机目录映射到容器内部。
例如,假设数据存储在 /path/to/your/data
,可以通过以下命令启动容器并将数据卷挂载:
docker run -it -v /path/to/your/data:/mnt/data llamafactory-cuda bash
容器内部的 /mnt/data
就会映射到主机上的 /path/to/your/data
目录。
总结
使用 Docker 构建 LLaMA-Factory 环境可以大大简化依赖安装和环境配置的复杂性。根据你的硬件类型(CUDA、Ascend NPU、AMD ROCm),可以选择对应的 Docker 环境进行构建。Docker Compose 进一步简化了容器的管理,通过简单的命令即可启动、进入和停止容器。
如果不使用 Docker Compose,也可以手动构建和运行 Docker 镜像,手动构建时还可以选择挂载本地数据卷,以便在容器中访问本地的数据集。