Batch samples
This commit is contained in:
parent
cabf4a7345
commit
85bb3e619d
1 changed files with 1 additions and 47 deletions
|
|
@ -101,6 +101,7 @@ from unsloth_zoo.gradient_checkpointing import (
|
|||
from unsloth_zoo.loss_utils import (
|
||||
HAS_CUT_CROSS_ENTROPY,
|
||||
fused_linear_cross_entropy,
|
||||
_unsloth_get_batch_samples,
|
||||
)
|
||||
from unsloth_zoo.vision_utils import (
|
||||
process_vision_info,
|
||||
|
|
@ -952,53 +953,6 @@ def test_mask_creation():
|
|||
pass
|
||||
|
||||
|
||||
def _unsloth_get_batch_samples(self, epoch_iterator, num_batches):
|
||||
batch_samples = []
|
||||
num_items_in_batch = None
|
||||
|
||||
# Check if model allows **kwargs
|
||||
m = self.model
|
||||
signature = inspect.signature(m.forward).parameters.values()
|
||||
has_kwargs = tuple(signature)[-1].kind == inspect._VAR_KEYWORD
|
||||
if not has_kwargs:
|
||||
while hasattr(m, "model"):
|
||||
# Stop at last model entry
|
||||
if not hasattr(m, "model") or not hasattr(m, "forward"): break
|
||||
signature = inspect.signature(m.forward).parameters.values()
|
||||
has_kwargs = tuple(signature)[-1].kind == inspect._VAR_KEYWORD
|
||||
if has_kwargs: break
|
||||
m = m.model
|
||||
pass
|
||||
|
||||
# Iterate to find all batches
|
||||
for _ in range(num_batches):
|
||||
try:
|
||||
batch_samples += [next(epoch_iterator)]
|
||||
except StopIteration:
|
||||
break
|
||||
pass
|
||||
|
||||
# Get num_items_in_batch
|
||||
if has_kwargs and len(batch_samples) > 0 and "labels" in batch_samples[0]:
|
||||
try:
|
||||
num_items_in_batch = sum(
|
||||
[(x["labels"][..., 1:] != -100).sum() for x in batch_samples]
|
||||
)
|
||||
|
||||
if self.args.average_tokens_across_devices:
|
||||
num_items_in_batch = self.accelerator.gather(num_items_in_batch).sum().item()
|
||||
|
||||
if torch.is_tensor(num_items_in_batch):
|
||||
num_items_in_batch = num_items_in_batch.item()
|
||||
|
||||
except Exception as exception:
|
||||
logger.warning_once(exception)
|
||||
pass
|
||||
|
||||
return batch_samples, num_items_in_batch
|
||||
pass
|
||||
|
||||
|
||||
def _unsloth_pre_compute_loss(self, model, inputs, *args, **kwargs):
|
||||
num_items_in_batch = None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue