This model is currently on an undefined hiatus as this model has proven to be too low performing, even without memory implementation to pursue realistically. As a result, I will be taking what I learned while working on this project to attempt a different solution with a fresh slate which produces acceptable results.
I aspire to continue this project at a later date if an improved version does not come to mind before then when I have more time. However, for now, this repo is simply for my own learning experience.
This repo's purpose was to attempt a solution for ARC-AGI 2 without the usage of other LLMs. The aim was to attempt to define an architecture that, while might not have been the best performing, would be able to shape a non-LLM based approach to the same.
This project has implemented a PyRegressor Symbolic Regression model that works on specific tasks and saves the model states for each respective task in as compact a form as possible so that models for similar tasks in the past can be reused and fitted from previous versions rather than from scratch.
To import the main version of the model, import this repo into a root directory. Then, in the root of the project directory (Memory-Based-Meta-Learning/), import the model for use via:
from src.model import TaskAbstractorModelMove the data in json format for evaluation and training into data/ in the root folder in separate data/evaluation/ and data/training/ folders. When using ARC-AGI 2 data (recommended for data format), just import the data's repo folder into the data/ folder.
Then, initialize the model and specify the directory path to the training and evaluation folders as shown below as an example:
model = TaskAbstractorModel(
train_dirs="./data/ARC-AGI-2-main/data/training/",
eval_dirs="./data/ARC-AGI-2-main/data/evaluation/"
)Finally, fit the model to the training data as shown below:
model.train(
load_batches=1, # Batch size
verbose=1, # Verbose 0 for no log, 1 for some, 2 for all logs
max_batches=None, # Maximum number of batches to train on. None for all
run_from_batch=None # Batch number to start training from. None for batch 0.
)All training losses and batch losses are saved to ./results/losses_data.csv by default. The final pickle file with all models' checkpoints saved is saved to ./src/pysr_temp/ as a single .pkl file.