# 'No Log' for validation loss during training with Trainer

**URL:** </static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094%3E%5C
**Category:** Beginners\
**Created:** [May 16, 2023, 7:47pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094 "2023-05-16T19:47:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![shoang](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@shoang](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2Fshoang)%5C
**Post date:** [May 16, 2023, 7:47pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094%2F1 "2023-05-16T19:47:22Z")

</div>

Hello,

I’m trying to fine-tune a Custom BertModel on a sequence classification task, but I’m having some issues getting the Trainer to log the validation loss. Specifically, the log looks like this:

 ![no_log](https://us1.discourse-cdn.com/hellohellohello/original/3X/0/2/022305d8a9935cc116a6ae3e26dc5a9f0efc9bc1.png)

Here is the code I’m using:

```auto
from datasets import load_dataset
import torch.nn as nn
from transformers import (
    AutoModel,
    AutoModelForSequenceClassification,
    AutoTokenizer, 
    DataCollatorWithPadding,
    Trainer,
    TrainingArguments
    )

class CustomTrainer(Trainer):
    def compute_loss(self, model, inputs, return_outputs=False):
        # print(inputs)
        criterion = nn.CrossEntropyLoss()
        outputs = model(**inputs)
        loss = criterion(outputs, inputs['labels'])
        return (loss, outputs) if return_outputs else loss

class CustomModel(nn.Module):
    def __init__ (self, d_out):
        super(CustomModel, self). __init__ ()
        self.encoder = AutoModel.from_pretrained('bert-base-uncased')
        d_in = self.encoder.config.hidden_size
        self.fc1 = nn.Linear(d_in, d_in)
        self.activation = nn.ReLU()
        self.fc2 = nn.Linear(d_in, d_out)

    def forward(self, input_ids, **kwargs):
        x = self.encoder(input_ids=input_ids).pooler_output
        x = self.fc1(x)
        x = self.activation(x)
        logits = self.fc2(x)
        return logits

def tokenize_function(example):
    return tokenizer(example["sentence1"], example["sentence2"], truncation=True)

raw_datasets = load_dataset("glue", "mrpc")
checkpoint = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

tokenized_datasets = raw_datasets.map(tokenize_function, batched=True)
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)

training_args = TrainingArguments(
    'test-trainer', 
    report_to='none',
    save_strategy='no',
    evaluation_strategy='steps',
    eval_steps=50
)

# model = AutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=2)
model = CustomModel(2)

trainer = CustomTrainer(
    model,
    training_args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["validation"],
    data_collator=data_collator,
    tokenizer=tokenizer,
)

trainer.train()

```

When I use a regular BertModelForSequenceClassification, it works fine. Is there something I’m missing?

---

<div class="post-metadata">

**Author:** ![tatiana-merz](https://sea2.discourse-cdn.com/hellohellohello/user_avatar/discuss.huggingface.co/tatiana-merz/32/17206_2.png) [@tatiana-merz](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2Ftatiana-merz)%5C
**Post date:** [June 29, 2023, 3:31pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094%2F2 "2023-06-29T15:31:15Z")

</div>

Could be due to the low amount of training data that you have. Try setting logging\_steps in TrainingArguments for 100 or less.

---

<div class="post-metadata">

**Author:** ![hfskb](https://avatars.discourse-cdn.com/v4/letter/h/4af34b/32.png) [@hfskb](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2Fhfskb)%5C
**Post date:** [May 15, 2024, 4:46am UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094%2F3 "2024-05-15T04:46:13Z")

</div>

For LLM validation loss you might also need `label_names=[]` in the TrainingArguments and set `trainer.can_return_loss = True` to satisfy [transformers/src/transformers/trainer.py at v4.40.2 · huggingface/transformers · GitHub](https://github.com/huggingface/transformers/blob/v4.40.2/src/transformers/trainer.py#L3796) for some models.

---

<div class="post-metadata">

**Author:** ![nik-55](https://sea2.discourse-cdn.com/hellohellohello/user_avatar/discuss.huggingface.co/nik-55/32/60565_2.png) [@nik-55](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fu%2Fnik-55)%5C
**Post date:** [September 6, 2025, 1:30pm UTC](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Ft%2Fno-log-for-validation-loss-during-training-with-trainer%2F40094%2F4 "2025-09-06T13:30:52Z")

</div>

I am facing issue with gemma 3 model for getting validation loss as “No Log”. After above changes, it worked.
