Feifan Song
Feifan Song
hello,在 #69 中也已回复您。 经看这段log,OOM出现在accelerator的prepare处,此处是将LLM通过DeepSpeed分发到每张卡上。因看到您在command在设置num_process=2,即2张卡用于训练LLM,所以问题应不是出在训练过程上(因此与batch_size和block_size无关)。您可以尝试以下方法是否有效: 1. 尝试用一个空白脚本,只包括使用accelerator.prepare来初始化您的LLM checkpoint,观察是否能复现OOM的报错 2. 如果1仍会OOM,说明单卡装不下13B的模型(可能因为zero-2会在每张卡上都放置一份完整的模型参数,比如您设置的模型精度较高,即可能出现OOM),可以尝试改用zero-3和更低精度(可在process_manager.py的init中,直接在from_pretrained里添加dtype)
> > hello,在 #69 中也已回复您。 经看这段log,OOM出现在accelerator的prepare处,此处是将LLM通过DeepSpeed分发到每张卡上。因看到您在command在设置num_process=2,即2张卡用于训练LLM,所以问题应不是出在训练过程上(因此与batch_size和block_size无关)。您可以尝试以下方法是否有效: > > > > 1. 尝试用一个空白脚本,只包括使用accelerator.prepare来初始化您的LLM checkpoint,观察是否能复现OOM的报错 > > 2. 如果1仍会OOM,说明单卡装不下13B的模型(可能因为zero-2会在每张卡上都放置一份完整的模型参数,比如您设置的模型精度较高,即可能出现OOM),可以尝试改用zero-3和更低精度(可在process_manager.py的init中,直接在from_pretrained里添加dtype) > > 您好,感谢回复。 我尝试您说的用accelerator.prepare来初始化13B的模型,代码如下(用gpt生成的,不知是否有误): > > ``` > import os > import time...
> > > > hello,在 #69 中也已回复您。 经看这段log,OOM出现在accelerator的prepare处,此处是将LLM通过DeepSpeed分发到每张卡上。因看到您在command在设置num_process=2,即2张卡用于训练LLM,所以问题应不是出在训练过程上(因此与batch_size和block_size无关)。您可以尝试以下方法是否有效: > > > > > > > > 1. 尝试用一个空白脚本,只包括使用accelerator.prepare来初始化您的LLM checkpoint,观察是否能复现OOM的报错 > > > > 2. 如果1仍会OOM,说明单卡装不下13B的模型(可能因为zero-2会在每张卡上都放置一份完整的模型参数,比如您设置的模型精度较高,即可能出现OOM),可以尝试改用zero-3和更低精度(可在process_manager.py的init中,直接在from_pretrained里添加dtype) > > > > >...
> > > > > > hello,在 #69 中也已回复您。 经看这段log,OOM出现在accelerator的prepare处,此处是将LLM通过DeepSpeed分发到每张卡上。因看到您在command在设置num_process=2,即2张卡用于训练LLM,所以问题应不是出在训练过程上(因此与batch_size和block_size无关)。您可以尝试以下方法是否有效: > > > > > > > > > > > > 1. 尝试用一个空白脚本,只包括使用accelerator.prepare来初始化您的LLM checkpoint,观察是否能复现OOM的报错 > > > > >...
> > > > > > > > hello,在 #69 中也已回复您。 经看这段log,OOM出现在accelerator的prepare处,此处是将LLM通过DeepSpeed分发到每张卡上。因看到您在command在设置num_process=2,即2张卡用于训练LLM,所以问题应不是出在训练过程上(因此与batch_size和block_size无关)。您可以尝试以下方法是否有效: > > > > > > > > > > > > > > > > 1. 尝试用一个空白脚本,只包括使用accelerator.prepare来初始化您的LLM...
hi~推测是设置了第8张卡也放了LLM?默认设置是前7张卡放LLM,第8张卡只放奖励模型用于训练中的validation。
> > hi~推测是设置了第8张卡也放了LLM?默认设置是前7张卡放LLM,第8张卡只放奖励模型用于训练中的validation。 > > 你好我跑训练代码会报OOM,我是80G的A800,训练13B的模型,按道理应该不会爆啊 我把batch size设为1,block_size设为100,还是爆了,不知道问题出在哪? 或许可以考虑关闭do_validation并使用bf16和zero-3。需注意直接使用zero-3可能出现checkpoint只保存一部分的现象,见 #66 所述。 此外,data_manager.py中多处设置了self.max_length - 128,来规定prompt本身的长度(因为128是默认的response长度,我们没有将之设置在args里),如block_size修改为100,此处的128应该也需调整一下。
hi~root_dir应是sh脚本所在位置的上一层目录,也就是PRO第一级目录
hi~这边也有点疑惑为什么会和fp16/bf16相关。但zero3下只保存部分应该是代码里多处限制了仅主线程执行save所致,如 `process_manager.py`中第265/317行的`self.accelerator.is_main_process`,以及第371行的`is_main_process=self.accelerator.is_main_process`。因zero2下每张卡上都有一份完整的checkpoint,所以不会出现保存部分的情况。 此外,使用zero3会使得训练过程中模型inference被阻塞,对此也还没有找到较好的解决办法,建议还是使用zero2或关闭do_validation。