@@ -209,32 +209,44 @@ def llama_casual_forward(
209209 hidden_states = outputs [0 ]
210210
211211 if labels is None :
212+ loss = None
212213 logits = self .lm_head (hidden_states )
213214 else :
215+ if liger_kernel_is_available ():
216+ # unable to return logits when using Liger Kernel
217+ logits = None
214218
215- if label_shifted :
216- shift_hidden_states = hidden_states
217- shift_labels = labels
218- else :
219- shift_hidden_states = hidden_states [..., :- 1 , :].contiguous ()
220- shift_labels = labels [..., 1 :].contiguous ()
219+ if label_shifted :
220+ shift_hidden_states = hidden_states
221+ shift_labels = labels
222+ else :
223+ shift_hidden_states = hidden_states [..., :- 1 , :].contiguous ()
224+ shift_labels = labels [..., 1 :].contiguous ()
221225
222- shift_hidden_states = shift_hidden_states .view (- 1 , self .config .hidden_size )
223- shift_labels = shift_labels .view (- 1 )
224- shift_labels = shift_labels .to (shift_hidden_states .device )
226+ shift_hidden_states = shift_hidden_states .view (- 1 , self .config .hidden_size )
227+ shift_labels = shift_labels .view (- 1 )
228+ shift_labels = shift_labels .to (shift_hidden_states .device )
225229
226- if liger_kernel_is_available ():
227230 from liger_kernel .transformers .fused_linear_cross_entropy import LigerFusedLinearCrossEntropyLoss
228231
229232 loss_fct = LigerFusedLinearCrossEntropyLoss ()
230233 loss = loss_fct (self .lm_head .weight , shift_hidden_states , shift_labels , self .lm_head .bias )
231234
232- # unable to return logits when using Liger Kernel
233- logits = None
234235 else :
235- shift_logits = self .lm_head (shift_hidden_states )
236-
237- loss_fct = CrossEntropyLoss ()
236+ logits = self .lm_head (hidden_states )
237+
238+ if label_shifted :
239+ shift_logits = logits
240+ shift_labels = labels
241+ else :
242+ shift_logits = logits [..., :- 1 , :].contiguous ()
243+ shift_labels = labels [..., 1 :].contiguous ()
244+
245+ shift_logits = shift_logits .view (- 1 , self .config .vocab_size )
246+ shift_labels = shift_labels .view (- 1 )
247+ shift_labels = shift_labels .to (shift_logits .device )
248+
249+ loss_fct = torch .nn .CrossEntropyLoss ()
238250 loss = loss_fct (shift_logits , shift_labels )
239251
240252 if not return_dict :
0 commit comments