使用 Docker 构建 LLaMA-Factory 环境

devtools/2024/10/9 9:21:23/

使用 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 用户
  1. 进入 docker/docker-cuda/ 目录:

    cd docker/docker-cuda/
    
  2. 运行 Docker Compose 启动容器

    docker compose up -d
    

    这条命令会在后台运行 Docker 容器up -d中的-d表示容器将在后台运行。

  3. 进入容器内部:

    docker compose exec llamafactory bash
    

    这条命令会将你带入到名为 llamafactory容器中,并且你将能够在容器内操作。

3.2 针对 Ascend NPU 用户
  1. 进入 docker/docker-npu/ 目录:

    cd docker/docker-npu/
    
  2. 启动容器

    docker compose up -d
    
  3. 进入容器内部:

    docker compose exec llamafactory bash
    
3.3 针对 AMD ROCm 用户
  1. 进入 docker/docker-rocm/ 目录:

    cd docker/docker-rocm/
    
  2. 启动容器

    docker compose up -d
    
  3. 进入容器内部:

    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 容器

  1. 首先,编写一个 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]"
    
  2. 构建镜像:

    docker build -t llamafactory-cuda .
    
  3. 运行镜像并进入容器

    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 镜像,手动构建时还可以选择挂载本地数据卷,以便在容器中访问本地的数据集。


http://www.ppmy.cn/devtools/122402.html

相关文章

从0学习React(4)---更新组件状态setState

在上篇文章中,我们讲了React中的一些基础,包括组件的种类以及state的使用。上篇文章的结尾,我们讲到了如何更新组件的状态(使用setState)。但是我没有讲的很详细,这篇文章我们详细的讲一下React中如何更新组…

python配置环境变量

方法一:首先卸载重新安装,在安装时勾选增加环境变量 方法二:我的电脑-属性-高级系统配置 手动添加环境变量,路径为python的安装路径 检查:查看环境变量是否安装成功 安装第三方lib winr,输入cmd pip ins…

Spring Boot 整合 Keycloak

1、概览 本文将带你了解如何设置 Keycloak 服务器,以及如何使用 Spring Security OAuth2.0 将 Spring Boot 应用连接到 Keycloak 服务器。 2、Keycloak 是什么? Keycloak 是针对现代应用和服务的开源身份和访问管理解决方案。 Keycloak 提供了诸如单…

汇编内存寻址

处理字符问题 汇编程序中,用单引号(‘’)的方式指明数据是以字符的形式给出,编译器将把字符转换为相对应的ASCLL码。 大写字母ASCLL值 20H 转换为小写字母 (或运算or) 0010 0000 小写字母ASCLL值 - 20H 转换为大写字母 (与运算and) 1101 1111 示例: 大小写转换 assume c…

【解决】Mac 上 M系列芯片用 Vmware Fusion安装 win11 遇到的主要的问题汇总

此文很短,没闲话,干活满满 Mac 版本最干净版本的 win11 免费下载链接 :链接:https://pan.quark.cn/s/4e8e8bb93564 本文实验电脑为:Macbook Air M3 第一个问题:如何解决安装Windows11时出现“这台电脑无…

Spring源码学习(拓展篇):SpringMVC中的异常处理

目录 前言SimpleMappingExceptionResolver通过接口 HandlerExceptionResolver 实现通过 ExpceptionHander ControllerAdvice 注解实现(推荐) 前言 SpringMVC的异常处理主要有以下三种方式: 使用SpringMVC自带的异常处理类:Simpl…

滚雪球学Oracle[2.4讲]:创建Oracle数据库实例

全文目录: 前言一、使用DBCA进行复杂环境下的实例创建1.1 使用DBCA的步骤案例演示:DBCA创建实例 1.2 优点与适用场景 二、手动创建数据库实例的步骤与脚本2.1 手动创建数据库实例的步骤案例演示:手动创建Oracle数据库实例 2.2 手动创建的优点…

3DGS中Densification梯度累计策略的改进——绝对梯度策略(Gaussian Opacity Fields)

在学习 StreetGS 代码中发现了其中的 Densification 策略与原 3DGS 不太一样,其是使用的 Gaussian Opacity Fields 中的一个的策略 我们先来回忆一下 3DGS 中一个比较重要 contribution:自适应密度控制 1 自适应密度控制 其具体步骤如下: …