DataArt's machine learning delivery pipelines need a lightweight custom data loader for in-memory training records. Implement a function that creates mini-batches, optionally shuffles records reproducibly, and optionally removes the final incomplete batch.
Given a list records, return a list of batches. Each batch is a list containing at most batch_size records. When shuffle is True, use a local pseudo-random generator initialized with seed, so the same inputs always produce the same ordering. Do not mutate records or its contained records. When drop_last is True, omit any batch with fewer than batch_size records.
The function signature is:
def create_batches(records, batch_size, shuffle, seed, drop_last):
def create_batches(records, batch_size, shuffle, seed, drop_last):