运行报错
shenmadouyaowen opened this issue · 22 comments
你好,以下运行报错,两张3090,
print(model.hf_device_map)打印{'transformer': 0}
{'transformer': 0}
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /root/LLM-Tuning-master/chatglm2_lora_tuning.py:152 in <module> │
│ │
│ 149 │
│ 150 │
│ 151 if __name__ == "__main__": │
│ ❱ 152 │ main() │
│ 153 │
│ │
│ /root/LLM-Tuning-master/chatglm2_lora_tuning.py:108 in main │
│ │
│ 105 │ 另一个解决办法是下面这个: │
│ 106 │ 手动把 output_layer 设置为跟 input 一样的 device │
│ 107 │ """ │
│ ❱ 108 │ model.hf_device_map['transformer.output_layer'] = model.hf_device_ │
│ 109 │ model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remot │
│ 110 │ print(model.hf_device_map) │
│ 111 │ """ │
╰──────────────────────────────────────────────────────────────────────────────╯
KeyError: 'transformer.embedding'
注释掉model.hf_device_map['transformer.output_layer'] = model.hf_device
这个报错有点怪,你是微调的ChatGLM2吗?这个文件是针对ChatGLM2的,如果是ChatGLM,要把 train.sh 中的那个py文件换成 chatglm_lora_tuning.py
注释掉model.hf_device_map['transformer.output_layer'] = model.hf_device
注释掉就199行报错
我也两块3090,去掉后却是显示爆内存了
OutOfMemoryError: CUDA out of memory. Tried to allocate 508.00 MiB (GPU 0; 23.70 GiB total capacity; 22.82 GiB already allocated; 202.81 MiB free; 22.82 GiB reserved in total by
PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding']
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map)
这两行不能去掉,不然多卡可能报错。
不去掉你们是报啥错呢?
model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding'] model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map)
这两行不能去掉,不然多卡可能报错。
不去掉你们是报啥错呢?
CUDA_VISIBLE_DEVICES=1,2,3 设置0开始,不报错,但是内存满
model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding'] model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map)
这两行不能去掉,不然多卡可能报错。
不去掉你们是报啥错呢?CUDA_VISIBLE_DEVICES=1,2,3 设置0开始,不报错,但是内存满
是的是的太对了我也是
model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding'] model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map)
这两行不能去掉,不然多卡可能报错。
不去掉你们是报啥错呢?CUDA_VISIBLE_DEVICES=1,2,3 设置0开始,不报错,但是内存满
是的是的太对了我也是
batch_size 设置1,就不暴漫了
shenmadouyaowen
单独1么,占多少显存
shenmadouyaowen
单独1么,占多少显存
17 G以上,基本没有什么问题,都是我们没有看代码直接使用造成的原因
太对了我也是
wc太牛了我q2547800285求老哥帮助
h_size 设置1,就不暴漫了
我单独一还报错擦
h_size 设置1,就不暴漫了
我单独一还报错擦
我也是小菜鸡,我建议你修改一下tokenize.sh
的--max_seq_length 2000
后面数字修改小点,然后修改train.sh
的per_device_train_batch_size 10
后面数字小点再试试
h_size 设置1,就不暴漫了
我单独一还报错擦
我也是小菜鸡,我建议你修改一下
tokenize.sh
的--max_seq_length 2000
后面数字修改小点,然后修改train.sh
的per_device_train_batch_size 10
后面数字小点再试试
老哥最后的显卡这里是这样么CUDA_VISIBLE_DEVICES=0,1 (我发现1号他用的显存多,现在1号卡其他人在用(只有7gb显存),我怀疑是这个问题)
h_size 设置1,就不暴漫了
我单独一还报错擦
我也是小菜鸡,我建议你修改一下
tokenize.sh
的--max_seq_length 2000
后面数字修改小点,然后修改train.sh
的per_device_train_batch_size 10
后面数字小点再试试
老哥最后的显卡这里是这样么CUDA_VISIBLE_DEVICES=0,1 (我发现1号他用的显存多,现在1号卡其他人在用(只有7gb显存),我怀疑是这个问题)
如果你只用0显卡就设置CUDA_VISIBLE_DEVICES=0就行,1就不要用了
能跑了,单卡的话可以注释这两行
# model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding']
# model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map)
如果多卡,应该就不要(我还没试)
目前我是把--max_seq_length 2000改为200,然后0卡单跑,per_device_train_batch_size更是可怜的1,15g作用显存占用
能跑了,单卡的话可以注释这两行 # model.hf_device_map['transformer.output_layer'] = model.hf_device_map['transformer.embedding'] # model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device_map=model.hf_device_map) 如果多卡,应该就不要(我还没试)
目前我是把--max_seq_length 2000改为200,然后0卡单跑,per_device_train_batch_size更是可怜的1,15g作用显存占用
为啥我单卡把这两行注释了还是报错119行,大佬
行注释了还是报错119行,大佬
我的改动就刚才说的这么多,你看看你和我有其他改动区别不
ror: "addmm_impl_cpu_" not implemented for 'H
没见过这个错