{"id":13689510,"url":"https://github.com/BorealisAI/lite_tracer","last_synced_at":"2025-05-02T00:30:25.553Z","repository":{"id":79742605,"uuid":"159908305","full_name":"BorealisAI/lite_tracer","owner":"BorealisAI","description":"a light weight experiment reproducibility toolset","archived":false,"fork":false,"pushed_at":"2020-09-29T21:32:06.000Z","size":2438,"stargazers_count":40,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-07T07:36:26.763Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BorealisAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-01T04:19:28.000Z","updated_at":"2024-12-30T20:47:52.000Z","dependencies_parsed_at":"2023-02-28T22:01:06.997Z","dependency_job_id":null,"html_url":"https://github.com/BorealisAI/lite_tracer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorealisAI%2Flite_tracer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorealisAI%2Flite_tracer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorealisAI%2Flite_tracer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorealisAI%2Flite_tracer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BorealisAI","download_url":"https://codeload.github.com/BorealisAI/lite_tracer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251966431,"owners_count":21672666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T15:01:50.780Z","updated_at":"2025-05-02T00:30:25.257Z","avatar_url":"https://github.com/BorealisAI.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![lite_tracer Logo](https://github.com/BorealisAI/lite_tracer/blob/master/logos/Litetracer-Logo-Full-LB.png)\n\n--------------------------------------------------------------------------------\n\n# LiteTracer: a light weight experiment reproducibility toolset\n\nLiteTracer acts as a drop-in replacement for argparse, and it can generate unique identifiers for experiments in addition to what argparse already does.\nAlong with a reverse lookup tool, LiteTracer can trace-back the state of a project that generated any result tagged by the identifier.\nThe identifiers are unique based on the combination of four factors:\n1) code version;\n2) un-committed code changes\n3) untracked files in the project;\n3) any command line arguments supplied at runtime.\n\nAs the name suggests, LiteTracer is designed to be as lightweight as possible. It is a minimalistic toolset and convention to enable reproducible experimental research, rather than a framework that one has to learn about. \n\n## To track:\n\n1) Instead of using argparse `from argparse import ArgumentParser`, use `LTParser`, e.g.:\n\n```\nfrom lite_tracer import LTParser\nparser = LTParser(\"...\")\nparser.add_argument(...)\nargs = parser.parse_args()\n```\n\n2) Then in any result file you save (tensorboard results included), include as part of filename: `args.hash_code`, for example:\n```\nresult_path = './results/{}/{}'.format(args.data_name, args.hash_code)\n```\n\nNEVER manually change output filenames (e.g. use generated filenames directly in your latex source code)\n\n## Given hash code, to trace back to the exact configuration that produced a result:\nBy default, LTParser saves tracking information to ./lt_records/\u003cargs.hash_code\u003e, which has three things:\n\n`settings_\u003cargs.hash_code\u003e.txt` which has all arguments used for the experiments (command line supplied merged with defaults),\n as well as some dynamically collected information such as git version information\n \n`diff.patch` any source code change from last committed version\n\n`untracked/` any untracked and not ingored files/folders in the project dir\n\n## To find all results with certain param settings:\n`lite_trace.py --include [[[PARAM1:VAL1] PARAM2:VAL2] ...] --exclude [[[PARAM1:VAL1] PARAM2:VAL2] ...]`\n\n## See a complete example in example/lite_tracer_example.py\nExample search:\n`lite_trace.py --exclude bsz:12 git_label:f6afeb8 --include sgd`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBorealisAI%2Flite_tracer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBorealisAI%2Flite_tracer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBorealisAI%2Flite_tracer/lists"}