【docker好用系列】llama-factory环境配置

分享一个自用的llama-factory的Dockerfile

注意:使用之前,先在同级目录下放一个LLaMA-Factory-main.zip以及vscode-server.tar.gz
前者是为了防止git拉不下来的情况,后者是让vscode直连这个容器,下面是Dockerfile

# 使用 NVIDIA 官方提供的 Ubuntu 22.04 基础镜像,包含 CUDA 12.4.1 和 cuDNN 开发版
FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04

# 设置环境变量,避免 APT 交互式输入,确保自动安装软件包
ENV DEBIAN_FRONTEND=noninteractive

# 修改 APT 软件源为清华大学镜像,加速国内软件包下载
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新 APT 软件包列表,并安装一些常用工具
RUN apt-get update && apt-get install -y \
    wget \                     # 下载工具
    git \                      # 代码版本管理工具
    build-essential \          # 常用编译工具(包含 gcc、make 等)
    vim \                      # 文本编辑器
    ssh \                      # SSH 远程连接支持
    unzip \                    # 解压 ZIP 文件工具
    cmake \                    # C++ 项目构建工具
    g++ \                      # C++ 编译器
    && apt-get clean \         # 清理 APT 缓存,减少镜像体积
    && rm -rf /var/lib/apt/lists/*  # 删除 APT 缓存文件,进一步瘦身

# 配置 SSH,允许密码登录,并允许 root 用户直接登录
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config && \
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

# 下载 Miniconda 并安装(使用清华大学镜像加速)
RUN wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
    bash ~/miniconda.sh -b -p /opt/conda && \  # 静默安装 Miniconda 到 /opt/conda 目录
    rm ~/miniconda.sh && \                     # 删除安装脚本,节省空间
    /opt/conda/bin/conda clean -a -y           # 清理 Conda 缓存,减少镜像体积

# 添加 Conda 到环境变量,使其可以直接使用
ENV PATH /opt/conda/bin:$PATH

# 配置 Conda 和 pip 使用清华大学镜像,加速 Python 依赖安装
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \
    conda config --set show_channel_urls yes && \
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 创建一个新的 Conda 虚拟环境,命名为 llama-factory,并安装 Python 3.11
RUN conda create -n llama-factory python=3.11 -y

# 指定 Docker 运行的默认 shell,并激活 llama-factory 环境
SHELL ["conda", "run", "-n", "llama-factory", "/bin/bash", "-c"]

# 在 Conda 环境中安装 PyTorch 及其他依赖
RUN pip install torch torchvision torchaudio && \  # 安装 PyTorch
    pip install deepspeed flash-attn              # 安装 DeepSpeed 和 Flash Attention

# 复制 VS Code 服务器和 LLaMA-Factory 代码到容器中
WORKDIR /root
COPY vscode-server.tar.gz /tmp/                 # 复制 VS Code Server 压缩包到 /tmp/
COPY LLaMA-Factory-main.zip /tmp/               # 复制 LLaMA-Factory 代码压缩包到 /tmp/

# 解压 VS Code Server 并删除压缩包节省空间
RUN tar -xzf /tmp/vscode-server.tar.gz -C ~/ && \
    rm /tmp/vscode-server.tar.gz

# 解压 LLaMA-Factory 代码,并安装其 Python 依赖
RUN unzip /tmp/LLaMA-Factory-main.zip -d /root/ && \
    rm /tmp/LLaMA-Factory-main.zip && \  # 删除压缩包,节省空间
    cd /root/LLaMA-Factory-main && \     # 进入 LLaMA-Factory 目录
    pip install -e ".[torch,metrics]"    # 安装 LLaMA-Factory 及相关依赖

# 设置默认工作目录为 LLaMA-Factory
WORKDIR /root/LLaMA-Factory-main

# 运行容器时,启动 SSH 服务,并进入交互式 bash shell
CMD service ssh start && /bin/bash

使用方法:

# 编译环境
docker build -t llama-factory:latest .

# 运行容器
docker run --gpus all -it -p 22:22 llama-factory:latest
### 使用 Docker 部署 Llama-Factory Llama-Factory 是一个用于管理和部署大型语言模型 (LLM) 的工具集。要使用 Docker 部署 Llama-Factory 项目,可以按照以下方法操作: #### 准备工作 确保已安装并配置好 Docker 环境。如果尚未安装 Docker,请先完成其安装过程[^2]。 #### 获取 Llama-Factory 容器镜像 可以通过拉取官方或社区维护的 Llama-Factory Docker 镜像来启动容器环境。执行以下命令获取最新版本的镜像: ```bash docker pull ghcr.io/cjwbw/llama-factory:latest ``` 此命令会从 GitHub Container Registry 下载最新的 `llama-factory` 镜像[^3]。 #### 启动 Llama-Factory 容器 下载完成后,可使用以下命令启动容器实例: ```bash docker run --name llama-factory-container -d \ -v /path/to/local/data:/app/data \ -p 8000:8000 \ ghcr.io/cjwbw/llama-factory:latest ``` 上述命令解释如下: - `--name`: 设置容器名称为 `llama-factory-container`。 - `-v`: 将本地路径 `/path/to/local/data` 映射到容器内的 `/app/data` 路径,以便保存持久化数据。 - `-p`: 将主机端口 `8000` 绑定至容器内部服务监听的相同端口。 - `ghcr.io/cjwbw/llama-factory:latest`: 指定使用的镜像及其标签。 #### 访问 Llama-Factory 应用程序 一旦容器成功运行,可通过浏览器访问应用程序界面。假设绑定的是默认端口,则地址应为: http://localhost:8000 #### 停止和移除容器 当不再需要该容器时,可以停止并删除它: ```bash docker stop llama-factory-container docker rm llama-factory-container ``` 以上步骤涵盖了基于 DockerLlama-Factory 部署流程[^4]。 --- ### 示例代码片段 以下是完整的脚本形式展示整个流程: ```bash #!/bin/bash # Step 1: Pull the latest image from GHCR echo "Pulling the latest Llama Factory image..." docker pull ghcr.io/cjwbw/llama-factory:latest # Step 2: Run a new container with necessary configurations echo "Starting Llama Factory container..." docker run --name llama-factory-container -d \ -v $(pwd)/data:/app/data \ -p 8000:8000 \ ghcr.io/cjwbw/llama-factory:latest # Step 3: Verify that the container is running properly echo "Verifying container status..." docker ps | grep llama-factory-container ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhijun.li@Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值