beyondguo

Results 59 comments of beyondguo

正常的,因为目前代码里设置的是 `device_map="auto"`,在多卡状态下会自动触发 model parallel 模型并行,就是把模型的多个层分配到不同的 GPU 上,从而可以节省显存、加大batch。我自己测的时候,发现它会比 data parallel 更快。 如果想改成 data parallel,则将 device_map="auto" 改为:`device_map={'':torch.cuda.current_device()}`

暂时没碰到。有什么报错吗

ChatGLM, baichuan等模型的源码 (modeling_chatglm.py这种) 里面其实自己会构造应对 causal LM 的 attention mask,不用手动去构造了。 比如 https://huggingface.co/THUDM/chatglm2-6b/blob/main/modeling_chatglm.py#L674 其他 GPT 类的模型都不用显示输入 attention mask,模型内部都会用各种办法来生成mask。

你微调的数据是咋样的?数据量多少?

什么叫没效果?没见到一个人贴一下例子,用的什么数据训练、测试的什么例子、原始模型和微调之后模型的对比,什么都没有。我这里训练的好好的。

@valkryhx 你测试过训练集中的qa的有明显效果吗?如果训练集中特有的模式都没有学到,那可能确实哪里有问题。 我使用的训练参数就是repo里面提供的默认值,甚至只学2 epochs。一般你的微调语料跟日常对话差别越大,你就越能看到效果,ChatGLM本身的对话效果就很强,所以你继续用少量的qa去微调,不一定看得出来。

修改`ModifiedTrainer`部分: ```python class ModifiedTrainer(Trainer): def compute_loss(self, model, inputs, return_outputs=False): outputs = model( input_ids=inputs["input_ids"], labels=inputs["labels"], ) loss = outputs.loss return (loss, outputs) if return_outputs else loss def save_model(self, output_dir=None, _internal_call=False): self.model.save_pretrained(output_dir)...

数据量到位,且保证pormpt模板没问题,肯定可以记住你微调的内容。虽然模型原本的知识可能会遗忘掉。

提issue的时候把代码、报错之类的都贴一下嘛~

这个报错暂时还看不出个所以然来,你使用的环境跟我的一致吗?DDP的话应该是Huggingface的Trainer自动执行和分配的,不需要自己写了。