多机多卡微调LLAMA-2-7B模型的运行log信息分析 #62

Open
opened 2024-09-11 17:52:49 +08:00 by 12019701659cs · 0 comments

多机多卡微调LLAMA-2-7B模型的运行log信息分析

# 系统自动检测到并设置了CUDA作为加速器。
[2024-09-10 14:26:40,392] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)

# 在默认情况下,每个进程的OMP_NUM_THREADS环境变量被设置为1。这个设置是为了确保在多线程环境下,系统不会因为线程数过多而超载。
# OMP_NUM_THREADS是一个环境变量,用于控制OpenMP(一个用于共享内存并行编程的API)在每个进程中使用的线程数。
# 在多核处理器上,合理地设置这个变量可以提高程序的并行性能。
[2024-09-10 14:26:48,892] torch.distributed.run: [WARNING] Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed. 

# Intel MKL是一个优化的数学库,用于提高科学计算和数据分析应用程序的性能。
# 它支持多线程,可以通过设置环境变量来控制线程数。例如,MKL_NUM_THREADS环境变量用于控制MKL使用的线程数。
# 默认情况下,MKL会设置MKL_NUM_THREADS环境变量为1,以避免系统过载。
/opt/conda/lib/python3.10/site-packages/mmengine/utils/dl_utils/setup_env.py:56: UserWarning: Setting MKL_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed.

# 某种协调服务被设置为None
[2024-09-10 14:27:19,059] [INFO] [comm.py:637:init_distributed] cdb=None

# 在初始化分布式环境时,选择了使用TorchBackend和DeepSpeed库,并且指定了nccl作为后端来处理GPU之间的通信。
# TorchBackend:使用PyTorch作为后端的分布式通信接口。在分布式训练中,后端负责处理不同计算节点之间的数据传输和同步。
# DeepSpeed:一个深度学习优化库,旨在提高大规模训练任务的效率和可扩展性。提供了多种优化技术,如模型并行性、流水线并行性、稀疏注意力机制等。
# NCCL:是NVIDIA Collective Communications Library的缩写,是专为多GPU和多节点环境设计的库,用于优化和加速GPU之间的通信。NCCL是分布式深度学习训练中常用的后端,提供高效的GPU通信机制。
[2024-09-10 14:27:19,059] [INFO] [comm.py:668:init_distributed] Initializing TorchBackend in DeepSpeed with backend nccl

# 不同进程(Rank 0和Rank 1)的NCCL初始化选项。
# NCCL_ASYNC_ERROR_HANDLING: 1:启用异步错误处理。这意味着NCCL将尝试异步处理错误,而不是在遇到错误时立即终止所有操作。
# NCCL_DESYNC_DEBUG: 0:禁用了调试时的额外同步操作。这通常用于调试目的,以帮助识别潜在的同步问题。
# NCCL_ENABLE_TIMING: 0:禁用了性能计时。如果启用,NCCL将测量并记录操作的时间,以帮助性能分析。
# NCCL_BLOCKING_WAIT: 0:使用非阻塞等待。这意味着NCCL操作将尽可能地不阻塞CPU线程。
# TIMEOUT(ms): 1800000:设置超时时间为1800000毫秒(即30分钟)。这是NCCL操作等待其他进程完成的最长时间。
# USE_HIGH_PRIORITY_STREAM: 0:不使用高优先级流。这通常用于控制GPU流的优先级,以避免低优先级任务阻塞高优先级任务。
# TORCH_DISTRIBUTED_DEBUG: OFF:关闭PyTorch分布式调试日志。如果开启,将提供更详细的调试信息。
# NCCL_DEBUG: INFO:设置NCCL的日志级别为INFO。这意味着将记录信息性消息,但不包括调试或错误消息。
ID:这是进程组的唯一标识符。
I0910 14:27:22.992898   134 ProcessGroupNCCL.cpp:686] [Rank 1] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 0, NCCL_ENABLE_TIMING: 0, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: OFF, NCCL_DEBUG: INFO, ID=301440288

# NCCL网络配置的详细信息。
# 1. Bootstrap 使用的网络接口:
# NCCL在初始化时选择了`eth0`网络接口,IP地址为`10.244.174.137`,用于节点间的通信。
cc0af148112143078d5c88b5e68679fd-task0-0:133:133 [0] NCCL INFO Bootstrap : Using eth0:10.244.174.137<0>
# 2. 网络插件:
# NCCL试图寻找一个名为`librccl-net.so`的网络插件,但没有找到,因此它将使用内部实现来进行网络通信。
cc0af148112143078d5c88b5e68679fd-task0-0:133:133 [0] NCCL INFO NET/Plugin : No plugin found (librccl-net.so), using internal implementation
# 3. RCCL版本:
# 正在使用的RCCL(Radeon Collective Communications Library)版本,它是NCCL的AMD GPU版本。
RCCL version 2.13.4+hip5.7 HEAD:2890a73
# 4. 环境变量设置:
# 环境变量`NCCL_IB_DISABLE`被设置为0,InfiniBand(IB)网络没有被禁用,NCCL将尝试使用IB网络进行通信。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO NCCL_IB_DISABLE set by environment to 0.
# 5. InfiniBand网络配置:
# NCCL配置了多个InfiniBand接口(`mlx5_0`, `mlx5_1`, `mlx5_2`, `mlx5_3`),并将以读-only模式使用它们。同时,它还使用了前面提到的以太网接口作为Out-of-Band(OOB)通信。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO NET/IB : Using [0]mlx5_0:1/IB [1]mlx5_1:1/IB [2]mlx5_2:1/IB [3]mlx5_3:1/IB [RO]; OOB eth0:10.244.174.137<0>
# 6. 使用InfiniBand网络:
# 使用InfiniBand网络进行数据传输,它提供了比以太网更高的通信带宽和更低的延迟。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Using network IB

# 在分布式训练环境中,使用的是ROCm(Radeon Open Compute)平台,并且加载了版本为2.8.0.0的ROCm系统管理接口库(rocm_smi_lib)。ROCm SMI库是ROCm软件栈的一部分,它提供了一个用户空间接口,用于监控和控制GPU应用程序。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO rocm_smi_lib: version 2.8.0.0

# NCCL在初始化过程中为不同的GPU设置CPU亲和性(affinity)。
# 在多GPU环境中,设置GPU亲和性可以确保特定的进程或线程绑定到特定的CPU核心,这有助于减少竞争和上下文切换,提高性能。
# 亲和性掩码用于指定哪些CPU核心可以用于执行与特定GPU相关的任务。
cc0af148112143078d5c88b5e68679fd-task0-0:135:208 [2] NCCL INFO Setting affinity for GPU 2 to ff0000
cc0af148112143078d5c88b5e68679fd-task0-0:134:207 [1] NCCL INFO Setting affinity for GPU 1 to ff00
cc0af148112143078d5c88b5e68679fd-task0-0:136:210 [3] NCCL INFO Setting affinity for GPU 3 to ff000000
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Setting affinity for GPU 0 to ff

# NCCL在初始化过程中设置的通信拓扑信息。在分布式训练中,NCCL使用特定的算法来组织GPU之间的通信,以优化数据传输和提高效率。这些条目描述了不同的通信通道和树形结构,这些结构用于在GPU之间传输数据。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/04 :    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/04 :    0   3   2   5   4   7   6   9   8  11  10  13  12  15  14  17  16  19  18  21
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/04 :    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/04 :    0   3   2   5   4   7   6   9   8  11  10  13  12  15  14  17  16  19  18  21
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Trees [0] 1/16/-1->0->-1 [1] 1/16/-1->0->-1 [2] 1/-1/-1->0->4 [3] 1/-1/-1->0->4 comm 0x7f64cc001500 nRanks 24 busId 4000

# NCCL在初始化过程中设置的通信通道和路径。说明了特定的通信通道(Channel)、参与的GPU编号、通信方向(发送或接收)、使用的网络接口(通过NET/IB,即网络/InfiniBand)、通信组标识符(comm)、以及总的GPU数量(nRanks)。
# Channel 02/0 和 Channel 03/0:这些条目表明在通信通道02和03上,GPU 0(busId 4000)正在向GPU 4发送数据,使用的是InfiniBand网络接口0和1。
# Channel 00/0 和 Channel 01/0:这些条目表明在通信通道00和01上,GPU 16(busId 4000)正在向GPU 0接收数据,同样使用的是InfiniBand网络接口0和1。
# Connected all trees:这条日志表明所有的树形结构都已成功连接,通信组(comm)已经建立,包含了24个GPU(nRanks 24),并且使用的是busId 4000。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/0 : 0[4000] -> 4[4000] [send] via NET/IB/0 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/0 : 0[4000] -> 4[4000] [send] via NET/IB/1 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/0 : 16[4000] -> 0[4000] [receive] via NET/IB/0 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/0 : 16[4000] -> 0[4000] [receive] via NET/IB/1 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/0 : 0[4000] -> 16[4000] [send] via NET/IB/0 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/0 : 0[4000] -> 16[4000] [send] via NET/IB/1 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/0 : 4[4000] -> 0[4000] [receive] via NET/IB/0 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/0 : 4[4000] -> 0[4000] [receive] via NET/IB/1 comm 0x7f64cc001500 nRanks 24
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Connected all trees comm 0x7f64cc001500 nRanks 24 busId 4000

# NCCL正在使用调优表0,并且LL128(Locally Linked List of size 128)功能被禁用。LL128是一种优化技术,用于减少小消息传输的开销。禁用它可能是因为特定的系统配置或性能调优。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Using tuning table 0 with LL128 disabled
# 在不同大小的消息传输中使用的不同线程数量。这些阈值有助于优化多线程环境中的通信性能。例如,对于小消息(8字节),可能使用8个线程;对于中等大小的消息(192字节),可能使用8个线程;对于大消息(8字节以上),可能使用64个线程。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO threadThresholds 8/8/64 | 192/8/64 | 8/8/256
# NCCL配置了4个集体通信(collective)通道和4个点对点(peer-to-peer, p2p)通道。每个对等节点之间有1个p2p通道。集体通信通道用于执行如all-reduce、broadcast等操作,而p2p通道用于直接在GPU之间传输数据。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO 4 coll channels, 4 p2p channels, 1 p2p channels per peer
# comm 0x7f64cc001500: 通信组的内存地址。
# rank 0: 当前GPU在通信组中的排名(0到23)。
# nranks 24: 通信组中的总GPU数量。
# cudaDev 0: 使用的CUDA设备编号。
# busId 4000: 用于标识GPU的总线ID。
# localSize 136: 每个GPU上分配的本地内存大小(单位未指定,可能是KB)。
#used 72800 bytes: NCCL初始化过程中使用的内存量。
# Init COMPLETE: 表示NCCL初始化已完成。
cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO comm 0x7f64cc001500 rank 0 nranks 24 cudaDev 0 busId 4000 localSize 136 used 72800 bytes - Init COMPLETE

# 在使用自然语言处理模型时,特别是在词汇表中添加了特殊标记(special tokens)的情况下,需要确保这些特殊标记对应的词嵌入(word embeddings)经过了适当的微调(fine-tuning)或训练。
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
 
# xtuner的timeout
09/10 14:27:26 - mmengine - INFO - xtuner_dataset_timeout = 0:30:00

# 正在使用的数据集缺少元信息(metainfo)
09/10 14:27:28 - mmengine - WARNING - Dataset Dataset has no metainfo. ``dataset_meta`` in visualizer will be None.

# 模型初始化完成。它提供了模型参数的数量(num_params = 291)和模型元素的数量(num_elems = 8.03B,即80.3亿)。
[2024-09-10 14:27:39,103] [INFO] [partition_parameters.py:348:__exit__] finished initializing model - num_params = 291, num_elems = 8.03B

# 这个警告信息表明在PyTorch训练过程中,由于内存压力较高,PyTorch的内存分配器缓存(allocator cache)发生了多次刷新。这种情况可能会对性能产生不利影响。如果这种情况频繁发生,建议调整设置以减少内存消耗。如果无法消除缓存刷新,可以考虑在训练循环中添加get_accelerator().empty_cache()调用来确保所有进程同时清空它们的缓存。
[2024-09-10 19:43:48,249] [WARNING] [stage3.py:1998:step] 7 pytorch allocator cache flushes since last step. this happens when there is high memory pressure and is detrimental to performance. if this is happening frequently consider adjusting settings to reduce memory consumption. If you are unable to make the cache flushes go away consider adding get_accelerator().empty_cache() calls in your training loop to ensure that all ranks flush their caches at the same time
# 多机多卡微调LLAMA-2-7B模型的运行log信息分析 ```shell # 系统自动检测到并设置了CUDA作为加速器。 [2024-09-10 14:26:40,392] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect) # 在默认情况下,每个进程的OMP_NUM_THREADS环境变量被设置为1。这个设置是为了确保在多线程环境下,系统不会因为线程数过多而超载。 # OMP_NUM_THREADS是一个环境变量,用于控制OpenMP(一个用于共享内存并行编程的API)在每个进程中使用的线程数。 # 在多核处理器上,合理地设置这个变量可以提高程序的并行性能。 [2024-09-10 14:26:48,892] torch.distributed.run: [WARNING] Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed. # Intel MKL是一个优化的数学库,用于提高科学计算和数据分析应用程序的性能。 # 它支持多线程,可以通过设置环境变量来控制线程数。例如,MKL_NUM_THREADS环境变量用于控制MKL使用的线程数。 # 默认情况下,MKL会设置MKL_NUM_THREADS环境变量为1,以避免系统过载。 /opt/conda/lib/python3.10/site-packages/mmengine/utils/dl_utils/setup_env.py:56: UserWarning: Setting MKL_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed. # 某种协调服务被设置为None [2024-09-10 14:27:19,059] [INFO] [comm.py:637:init_distributed] cdb=None # 在初始化分布式环境时,选择了使用TorchBackend和DeepSpeed库,并且指定了nccl作为后端来处理GPU之间的通信。 # TorchBackend:使用PyTorch作为后端的分布式通信接口。在分布式训练中,后端负责处理不同计算节点之间的数据传输和同步。 # DeepSpeed:一个深度学习优化库,旨在提高大规模训练任务的效率和可扩展性。提供了多种优化技术,如模型并行性、流水线并行性、稀疏注意力机制等。 # NCCL:是NVIDIA Collective Communications Library的缩写,是专为多GPU和多节点环境设计的库,用于优化和加速GPU之间的通信。NCCL是分布式深度学习训练中常用的后端,提供高效的GPU通信机制。 [2024-09-10 14:27:19,059] [INFO] [comm.py:668:init_distributed] Initializing TorchBackend in DeepSpeed with backend nccl # 不同进程(Rank 0和Rank 1)的NCCL初始化选项。 # NCCL_ASYNC_ERROR_HANDLING: 1:启用异步错误处理。这意味着NCCL将尝试异步处理错误,而不是在遇到错误时立即终止所有操作。 # NCCL_DESYNC_DEBUG: 0:禁用了调试时的额外同步操作。这通常用于调试目的,以帮助识别潜在的同步问题。 # NCCL_ENABLE_TIMING: 0:禁用了性能计时。如果启用,NCCL将测量并记录操作的时间,以帮助性能分析。 # NCCL_BLOCKING_WAIT: 0:使用非阻塞等待。这意味着NCCL操作将尽可能地不阻塞CPU线程。 # TIMEOUT(ms): 1800000:设置超时时间为1800000毫秒(即30分钟)。这是NCCL操作等待其他进程完成的最长时间。 # USE_HIGH_PRIORITY_STREAM: 0:不使用高优先级流。这通常用于控制GPU流的优先级,以避免低优先级任务阻塞高优先级任务。 # TORCH_DISTRIBUTED_DEBUG: OFF:关闭PyTorch分布式调试日志。如果开启,将提供更详细的调试信息。 # NCCL_DEBUG: INFO:设置NCCL的日志级别为INFO。这意味着将记录信息性消息,但不包括调试或错误消息。 ID:这是进程组的唯一标识符。 I0910 14:27:22.992898 134 ProcessGroupNCCL.cpp:686] [Rank 1] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 0, NCCL_ENABLE_TIMING: 0, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: OFF, NCCL_DEBUG: INFO, ID=301440288 # NCCL网络配置的详细信息。 # 1. Bootstrap 使用的网络接口: # NCCL在初始化时选择了`eth0`网络接口,IP地址为`10.244.174.137`,用于节点间的通信。 cc0af148112143078d5c88b5e68679fd-task0-0:133:133 [0] NCCL INFO Bootstrap : Using eth0:10.244.174.137<0> # 2. 网络插件: # NCCL试图寻找一个名为`librccl-net.so`的网络插件,但没有找到,因此它将使用内部实现来进行网络通信。 cc0af148112143078d5c88b5e68679fd-task0-0:133:133 [0] NCCL INFO NET/Plugin : No plugin found (librccl-net.so), using internal implementation # 3. RCCL版本: # 正在使用的RCCL(Radeon Collective Communications Library)版本,它是NCCL的AMD GPU版本。 RCCL version 2.13.4+hip5.7 HEAD:2890a73 # 4. 环境变量设置: # 环境变量`NCCL_IB_DISABLE`被设置为0,InfiniBand(IB)网络没有被禁用,NCCL将尝试使用IB网络进行通信。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO NCCL_IB_DISABLE set by environment to 0. # 5. InfiniBand网络配置: # NCCL配置了多个InfiniBand接口(`mlx5_0`, `mlx5_1`, `mlx5_2`, `mlx5_3`),并将以读-only模式使用它们。同时,它还使用了前面提到的以太网接口作为Out-of-Band(OOB)通信。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO NET/IB : Using [0]mlx5_0:1/IB [1]mlx5_1:1/IB [2]mlx5_2:1/IB [3]mlx5_3:1/IB [RO]; OOB eth0:10.244.174.137<0> # 6. 使用InfiniBand网络: # 使用InfiniBand网络进行数据传输,它提供了比以太网更高的通信带宽和更低的延迟。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Using network IB # 在分布式训练环境中,使用的是ROCm(Radeon Open Compute)平台,并且加载了版本为2.8.0.0的ROCm系统管理接口库(rocm_smi_lib)。ROCm SMI库是ROCm软件栈的一部分,它提供了一个用户空间接口,用于监控和控制GPU应用程序。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO rocm_smi_lib: version 2.8.0.0 # NCCL在初始化过程中为不同的GPU设置CPU亲和性(affinity)。 # 在多GPU环境中,设置GPU亲和性可以确保特定的进程或线程绑定到特定的CPU核心,这有助于减少竞争和上下文切换,提高性能。 # 亲和性掩码用于指定哪些CPU核心可以用于执行与特定GPU相关的任务。 cc0af148112143078d5c88b5e68679fd-task0-0:135:208 [2] NCCL INFO Setting affinity for GPU 2 to ff0000 cc0af148112143078d5c88b5e68679fd-task0-0:134:207 [1] NCCL INFO Setting affinity for GPU 1 to ff00 cc0af148112143078d5c88b5e68679fd-task0-0:136:210 [3] NCCL INFO Setting affinity for GPU 3 to ff000000 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Setting affinity for GPU 0 to ff # NCCL在初始化过程中设置的通信拓扑信息。在分布式训练中,NCCL使用特定的算法来组织GPU之间的通信,以优化数据传输和提高效率。这些条目描述了不同的通信通道和树形结构,这些结构用于在GPU之间传输数据。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/04 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/04 : 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 17 16 19 18 21 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/04 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/04 : 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 17 16 19 18 21 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Trees [0] 1/16/-1->0->-1 [1] 1/16/-1->0->-1 [2] 1/-1/-1->0->4 [3] 1/-1/-1->0->4 comm 0x7f64cc001500 nRanks 24 busId 4000 # NCCL在初始化过程中设置的通信通道和路径。说明了特定的通信通道(Channel)、参与的GPU编号、通信方向(发送或接收)、使用的网络接口(通过NET/IB,即网络/InfiniBand)、通信组标识符(comm)、以及总的GPU数量(nRanks)。 # Channel 02/0 和 Channel 03/0:这些条目表明在通信通道02和03上,GPU 0(busId 4000)正在向GPU 4发送数据,使用的是InfiniBand网络接口0和1。 # Channel 00/0 和 Channel 01/0:这些条目表明在通信通道00和01上,GPU 16(busId 4000)正在向GPU 0接收数据,同样使用的是InfiniBand网络接口0和1。 # Connected all trees:这条日志表明所有的树形结构都已成功连接,通信组(comm)已经建立,包含了24个GPU(nRanks 24),并且使用的是busId 4000。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/0 : 0[4000] -> 4[4000] [send] via NET/IB/0 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/0 : 0[4000] -> 4[4000] [send] via NET/IB/1 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/0 : 16[4000] -> 0[4000] [receive] via NET/IB/0 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/0 : 16[4000] -> 0[4000] [receive] via NET/IB/1 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 00/0 : 0[4000] -> 16[4000] [send] via NET/IB/0 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 01/0 : 0[4000] -> 16[4000] [send] via NET/IB/1 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 02/0 : 4[4000] -> 0[4000] [receive] via NET/IB/0 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Channel 03/0 : 4[4000] -> 0[4000] [receive] via NET/IB/1 comm 0x7f64cc001500 nRanks 24 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Connected all trees comm 0x7f64cc001500 nRanks 24 busId 4000 # NCCL正在使用调优表0,并且LL128(Locally Linked List of size 128)功能被禁用。LL128是一种优化技术,用于减少小消息传输的开销。禁用它可能是因为特定的系统配置或性能调优。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO Using tuning table 0 with LL128 disabled # 在不同大小的消息传输中使用的不同线程数量。这些阈值有助于优化多线程环境中的通信性能。例如,对于小消息(8字节),可能使用8个线程;对于中等大小的消息(192字节),可能使用8个线程;对于大消息(8字节以上),可能使用64个线程。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO threadThresholds 8/8/64 | 192/8/64 | 8/8/256 # NCCL配置了4个集体通信(collective)通道和4个点对点(peer-to-peer, p2p)通道。每个对等节点之间有1个p2p通道。集体通信通道用于执行如all-reduce、broadcast等操作,而p2p通道用于直接在GPU之间传输数据。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO 4 coll channels, 4 p2p channels, 1 p2p channels per peer # comm 0x7f64cc001500: 通信组的内存地址。 # rank 0: 当前GPU在通信组中的排名(0到23)。 # nranks 24: 通信组中的总GPU数量。 # cudaDev 0: 使用的CUDA设备编号。 # busId 4000: 用于标识GPU的总线ID。 # localSize 136: 每个GPU上分配的本地内存大小(单位未指定,可能是KB)。 #used 72800 bytes: NCCL初始化过程中使用的内存量。 # Init COMPLETE: 表示NCCL初始化已完成。 cc0af148112143078d5c88b5e68679fd-task0-0:133:202 [0] NCCL INFO comm 0x7f64cc001500 rank 0 nranks 24 cudaDev 0 busId 4000 localSize 136 used 72800 bytes - Init COMPLETE # 在使用自然语言处理模型时,特别是在词汇表中添加了特殊标记(special tokens)的情况下,需要确保这些特殊标记对应的词嵌入(word embeddings)经过了适当的微调(fine-tuning)或训练。 Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained. # xtuner的timeout 09/10 14:27:26 - mmengine - INFO - xtuner_dataset_timeout = 0:30:00 # 正在使用的数据集缺少元信息(metainfo) 09/10 14:27:28 - mmengine - WARNING - Dataset Dataset has no metainfo. ``dataset_meta`` in visualizer will be None. # 模型初始化完成。它提供了模型参数的数量(num_params = 291)和模型元素的数量(num_elems = 8.03B,即80.3亿)。 [2024-09-10 14:27:39,103] [INFO] [partition_parameters.py:348:__exit__] finished initializing model - num_params = 291, num_elems = 8.03B # 这个警告信息表明在PyTorch训练过程中,由于内存压力较高,PyTorch的内存分配器缓存(allocator cache)发生了多次刷新。这种情况可能会对性能产生不利影响。如果这种情况频繁发生,建议调整设置以减少内存消耗。如果无法消除缓存刷新,可以考虑在训练循环中添加get_accelerator().empty_cache()调用来确保所有进程同时清空它们的缓存。 [2024-09-10 19:43:48,249] [WARNING] [stage3.py:1998:step] 7 pytorch allocator cache flushes since last step. this happens when there is high memory pressure and is detrimental to performance. if this is happening frequently consider adjusting settings to reduce memory consumption. If you are unable to make the cache flushes go away consider adding get_accelerator().empty_cache() calls in your training loop to ensure that all ranks flush their caches at the same time ```
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#62
No description provided.