All models were trained with a condensed graph of reaction in a solvent, in which each reaction corresponds to the neutral acid dissociating to the anionic conjugate base. For each property, we split the test data once such that each solvent included only solutes unseen in the training set. If a solute appears in the test set, it does not appear anywhere in the training set. This resulted in an overall 90% training/validation and 10% test set split for the solvation free energies of ions. The ratio was slightly different among solvents, with every test set representing at least 10% of the total datapoints in that solvent. For instance, 24 training/validation points and 4 test data corresponded to the solvent NMP for solvation energies of anions, representing an 86% -14% split rather than the overall 90% -10% across all solvents. We did not split by functional groups, due to the inconsistent availability of data with each functional group in each solvent.