Closed shutter-cp closed 1 month ago
在加载模型的时候设置:device_map="auto" 应该可以避免这个问题。
在加载模型的时候设置:device_map="auto" 应该可以避免这个问题。
使用auto就这样,device_map="cuda"不会有问题,但是不能多卡 找到原因了 修改模型文件的modeing_chatglm.py 1020行附近 可以解决设置为 auto多卡 原始:
if labels is not None:
lm_logits = lm_logits.to(torch.float32)
# Shift so that tokens < n predict n
shift_logits = lm_logits[..., :-1, :].contiguous()
shift_labels = labels[..., 1:].contiguous()
# Flatten the tokens
loss_fct = CrossEntropyLoss(ignore_index=-100)
loss = loss_fct(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1))
lm_logits = lm_logits.to(hidden_states.dtype)
loss = loss.to(hidden_states.dtype)
修改后:
if labels is not None:
lm_logits = lm_logits.to(torch.float32)
# Shift so that tokens < n predict n
shift_logits = lm_logits[..., :-1, :].contiguous()
shift_labels = labels[..., 1:].contiguous()
device = shift_labels.device
shift_logits = shift_logits.to(device)
shift_labels = shift_labels.to(device)
# Flatten the tokens
loss_fct = CrossEntropyLoss(ignore_index=-100)
loss = loss_fct(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1))
lm_logits = lm_logits.to(hidden_states.dtype)
loss = loss.to(hidden_states.dtype)
👍👍👍