<jupyter_start><jupyter_text>One of the most time consuming is having a workflow.With Haven you will get the following advantages:- Self contained experiment folders, each having- Quick way to filter experiments- - Visualization tools Overview of the workflow<jupyter_code># 0. Create a simple training validation loop
from torch import nn
from torch import optim

def trainval(exp_dict, savedir_base):
    x = nn.Parameter(torch.zeros(10))
    f = lambda x: torch.norm(x - torch.randn(10))
    
    if exp_dict['opt'] == 'adam':
        opt = optim.Adam(x)
        
        
    score_list = []
    for e in range(10):
        score
        print()
        
        
    
# 1. Define a possibly large Experiment Group
import pprint
exp_list = []
for opt_name in ['adam', 'sgd', 'adagrad']:
    exp_list += [{'opt':opt_name}]
pprint.pprint(exp_list)
savedir_base = 'results/'
for exp_dict in exp_list:
    trainval(exp_dict, savedir_base)
# Load table
# Load plots
# Load Dashboard
# Save results
# Run in parallel
# 3.1 Run Experiments in Sequence
# 3.2 Run Experiments in Parallel
# 4.1 Visualize Experiments<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09385964912280702, 'fraction_numerical': 0.012280701754385965, 'mean_word_length': 3.3884615384615384, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '583976', 'license': 'Apache-2.0', 'n_tokens_mistral': 375, 'n_tokens_neox': 353, 'n_words': 122, 'path': 'examples/haven.ipynb', 'repo_name': 'jqueguiner/haven', 'size': '1140'}