Page cover image

4.14 GPU and Accelerated

本小节主要介绍关于GPU 以及加速配置先关的基础知识

10:53:24-793366 INFO Kohya_ss GUI version: v24.1.6

10:53:24-844990 INFO Submodule initialized and updated.

10:53:24-846078 INFO nVidia toolkit detected

10:53:26-258020 INFO Torch 2.1.2+cu118

10:53:26-349606 INFO Torch backend: nVidia CUDA 11.8 cuDNN 8903

10:53:26-369177 INFO Torch detected GPU: Tesla T4 VRAM 14961 Arch (7, 5) Cores 40

10:53:26-373429 INFO Python version is 3.10.14 (main, Apr 6 2024, 18:45:05) [GCC 9.4.0]

10:53:26-376493 INFO Verifying modules installation status from /media/kohya_ss/requirements_linux.txt... 10:53:26-380161 INFO Verifying modules installation status from requirements.txt...

这段日志记录了一个机器学习环境初始化和验证过程的详细信息,特别是使用了NVIDIA GPU资源。让我们逐一解析这些信息:

  1. GUI 版本:

    • Kohya_ss GUI version: v24.1.6: 表示使用的图形用户界面的版本是v24.1.6。

  2. 子模块初始化:

    • Submodule initialized and updated: 确认必要的子模块已成功初始化和更新。

  3. NVIDIA 工具包:

    • nVidia toolkit detected: 系统成功检测到NVIDIA工具包,这是利用GPU功能的关键。

  4. Torch 版本:

    • Torch 2.1.2+cu118: 指定了所使用的PyTorch版本,支持CUDA 11.8。

  5. Torch 后端:

    • Torch backend: nVidia CUDA 11.8 cuDNN 8903: 表明PyTorch的后端支持包括CUDA 11.8和cuDNN 8903,这对在NVIDIA GPU上进行深度学习操作的优化非常重要。

  6. GPU 详情:

    • Torch detected GPU: Tesla T4 VRAM 14961 Arch (7, 5) Cores 40: 提供了检测到的GPU信息:

      • Tesla T4: GPU型号。

      • VRAM 14961: 可用的显存(约15 GB)。

      • Arch (7, 5): GPU的架构版本。

      • Cores 40: GPU的计算核心数量。

  7. Python 版本:

    • Python version is 3.10.14: 指定了所使用的Python版本。

    • (main, Apr 6 2024, 18:45:05) [GCC 9.4.0]: 提供了额外的构建信息,包括日期和用于编译Python的GCC版本。

  8. 模块验证:

    • Verifying modules installation status from /media/kohya_ss/requirements_linux.txt...

    • Verifying modules installation status from requirements.txt...

这些行表示系统正在检查从/media/kohya_ss/requirements_linux.txtrequirements.txt文件中指定的Python模块的安装状态,以确保所有依赖项都已正确安装。

基本配置步骤

  1. 安装accelerate: 确保你已经安装了accelerate库:

    pip install accelerate
  2. 运行accelerate配置命令: 使用accelerate的配置命令来生成配置文件:

    accelerate config
  3. 回答配置问题: 根据你的GPU信息,以下是一些问题及其推荐的回答:

    • In which compute environment are you running?

      • 选择 No distributed training,如果你只在单个GPU上运行。

      • 选择 Multi-GPU,如果你计划使用多个GPU(Tesla T4通常用于多GPU设置,但如果你只有一个T4则选择No distributed training)。

    • Which type of machine are you using?

      • 选择 This machine,如果你在本地机器上运行。

      • 选择 AWSGCP等,如果你在云端运行(例如在Google Cloud Platform上使用Tesla T4)。

    • Do you want to use fp16 (mixed precision)?

      • 选择 Yes,Tesla T4支持混合精度训练,这通常可以加速训练并减少显存使用。

    • How many processes in total will you use?

      • 通常为 1,除非你进行分布式训练。

    • Do you wish to optimize your configuration with DeepSpeed?

      • 根据需要选择 YesNo。DeepSpeed 是一个优化库,可以进一步加速和优化训练过程。如果你不确定,可以先选择 No,以后可以根据需要再启用。

完成这些问题后,accelerate会生成一个配置文件,通常位于 ~/.cache/huggingface/accelerate/default_config.yaml

配置文件示例

生成的配置文件 (default_config.yaml) 可能类似于以下内容:

compute_environment: LOCAL_MACHINE
deepspeed_config: {}
distributed_type: NO
fsdp_config: {}
gpu_ids: all
machine_rank: 0
main_process_ip:null
main_process_port:null
main_training_function: main
mixed_precision: fp16
num_machines: 1
num_processes: 1
rdzv_backend: static
same_network:true
use_cpu:false

使用配置文件

在你的训练脚本中,你可以使用accelerate来加载和应用这个配置。例如:

from accelerate import Accelerator
# 初始化Accelerator
accelerator = Accelerator()
# 使用accelerator包装你的模型、优化器和数据加载器
model, optimizer, train_dataloader = accelerator.prepare(
    model, optimizer, train_dataloader
)
# 在训练循环中使用accelerator
for batch in train_dataloader:
    with accelerator.accumulate(model):
        outputs = model(**batch)
        loss = outputs.loss
        accelerator.backward(loss)
        optimizer.step()
        optimizer.zero_grad()

Last updated