Repository navigation
Expand file tree
/
Copy pathconfig.example.env
More file actions
101 lines (92 loc) · 9.4 KB
/
Copy pathconfig.example.env
File metadata and controls
101 lines (92 loc) · 9.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# ATTUNE configuration. Copy to config.env, fill in, then load it before running anything:
# set -a; source config.env; set +a
# The skill scripts and the harness read these from the environment; nothing cluster-specific is hard-coded. The
# launcher copies them into the campaign (<campaign_dir>/.attune/config.env), and from then on the campaign's skill
# scripts refuse an environment that disagrees with that copy.
# Empty values take the default named in the comment. Cloud credentials are not configured here: set them up the
# usual way for your provider (and make sure they stay valid for a multi-hour campaign).
# ---- Operator ---------------------------------------------------------------------------------------------------
AUTOTUNE_USER=alice # required: your owner-label value and the default run-id prefix
AUTOTUNE_OWNER_LABEL=owner # label key of your jobs (default: owner); make_run_yaml.py stamps
# <key>=<AUTOTUNE_USER> on every run and teardown_run.sh deletes only those
ATTUNE_RUN_PREFIX=alice-glm45-h100- # required by the launcher, one per campaign: <user>-<campaign tag>-. Every
# run id starts with it (outside the launcher the default is
# $AUTOTUNE_USER-); make_run_yaml.py and teardown_run.sh refuse any other,
# and the guard lets kubectl change only objects named with it
# ---- Kubernetes -------------------------------------------------------------------------------------------------
AUTOTUNE_KUBECTL_CONTEXT=my-gpu-cluster # required: full kubectl context name; every call passes it explicitly
KUBECTL_NS=training # required: namespace of the RayJobs, ConfigMaps and log-access pod
AUTOTUNE_INSTANCE_TYPES=p5.48xlarge # comma-separated GPU node instance types; check_gpu_capacity.py needs them
# here or as arguments
AUTOTUNE_LOG_POD=alice-log-access # required: your long-lived pod with the shared volume mounted read-only
# (the launcher checks; skill/references/measurement.md §1); logs are read
# through it
# ---- Shared storage ---------------------------------------------------------------------------------------------
AUTOTUNE_SHARED_MOUNT=/shared # mount path of the shared volume inside pods (default /shared); the log
# pod mounts it read-only
AUTOTUNE_EXPERIMENTS_DIR=/shared/experiments # path in the pods (default /shared/experiments); logs:
# <dir>/<run_id>/logs/<ts>/train.log, traces: <dir>/<run_id>/profiles
AUTOTUNE_DATA_ROOT=/shared/perf-data # fixed-length datasets: <root>/<model_tag>-sft-fixed8192-v1/train.parquet
# ---- Goal prompt (harness/goal_prompt.example.txt); the launcher refuses to start while one is unset -------------
TRAINING_IMAGE="registry.example.com/slime-megatron@sha256:<digest>" # the baseline's image, pinned by digest
ATTUNE_MODEL_NAME=my-moe-model # model name the goal prompt uses
ATTUNE_GPU_NAME=H100 # GPU type the goal prompt names
ATTUNE_BASELINE_YAML=/path/to/untuned-baseline-rayjob.yaml # the untuned baseline RayJob YAML
SFT_DATA="/shared/perf-data/<model_tag>-sft-fixed8192-v1/train.parquet" # the dataset the goal prompt names
# ---- Tuning campaign (harness) ----------------------------------------------------------------------------------
AUTOTUNE_NUM_GPUS=32 # GPU count of the baseline recipe: the KPI denominator, kept by every run
AUTOTUNE_ALLOW_GPU_COUNT_CHANGE= # 1 = allow runs at another GPU count (off by default)
AUTOTUNE_FIXED_GPUS= # 1 = keep the count fixed even when AUTOTUNE_ALLOW_GPU_COUNT_CHANGE=1
AUTOTUNE_BUDGET=20 # valid ranked results before the Stop gate lets the agent stop
AUTOTUNE_MAX_STALL=3 # stop attempts without progress (ranked results, or GPU-hours spent under
# AUTOTUNE_GPUH_BUDGET) before the Stop gate lets the session end
AUTOTUNE_GPUH_BUDGET= # optional GPU-hour budget; when set it replaces AUTOTUNE_BUDGET as stop rule
AUTOTUNE_CALIBRATION= # optional calibration file: band and baseline denominator
# (scripts/calibration.py); default: AUTOTUNE_BAND and the campaign's baseline
AUTOTUNE_BAND= # verdict band without a calibration file, a fraction used as given
# (default 0.03; a calibration file's band is at least 0.03)
AUTOTUNE_GPUH_LOG= # GPU-hour log (default: <campaign_dir>/gpuh.jsonl)
AUTOTUNE_ALLOW_WEB=1 # web search and fetch, and curl/wget, for recipe research; 0 for evaluation
# campaigns (unset or empty is on); the launcher prints and records it
ATTUNE_MODEL= # model id for Claude Code, pinned on every tier; empty = provider default
ATTUNE_CLAUDE_BIN=claude # Claude Code binary
ATTUNE_HOME= # tree the launcher copies into each campaign (default: this repository);
# the campaign's copy takes only its summary in past_tuning_projects/
# (copy it back to keep it); the session's ATTUNE_HOME names that copy, and
# a change to this tree's skill/ or harness/ in a session is warned of
ATTUNE_LESSONS_INBOX= # absolute path, outside the campaign directory and this tree's skill/ and
# harness/, that collects each intact campaign's LESSONS.md files with a
# manifest when a session ends, as <inbox>/<campaign id>/<folder>/
# (harness/CURATION.md); empty: the lessons stay in the campaign folder.
# The session does not see it
ATTUNE_FRAMEWORK= # optional: framework and version the lessons manifest records; the first
# launch records it with the model, GPU and image above
# (e.g. "slime <version>, Megatron-LM <version>")
# ---- Benchmark workload and measurement (skill/scripts/workload.py); empty = the default benchmark --------------
AUTOTUNE_GBS= # global batch size (default 128)
AUTOTUNE_SEQ_LEN= # row length of fixed-length rows, which the skill's rollout adapter checks
# (default 8192)
AUTOTUNE_DATASET= # dataset stamped as --prompt-data on every run (default: the baseline's);
# the launcher records its rows_sha256, read through the log pod
AUTOTUNE_NUM_STEPS= # steps per unprofiled ranked run (default 20); below 20, the correctness
# check runs on 20-step confirm runs of the baseline and the candidates
AUTOTUNE_PROFILE_CAPTURE= # recorded steps of a profiled run after its setup and warm-up steps (default 1, max 3)
AUTOTUNE_WINDOW_START= # first measured step; earlier steps are discarded warm-up (default 5)
# ---- Correctness check (skill/scripts/correctness) ---------------------------------------------------------------
AUTOTUNE_FROZEN_ARGS= # frozen-arguments file in rules/layer1/<setup>/, the directory that also
# holds the setup's allowlist and component-test results
AUTOTUNE_RULES_DIR= # layer-1 rule lists (default: skill/scripts/correctness/rules)
# ---- Set by the launcher (harness/launch_campaign.sh); do not set them here ---------------------------------------
# AUTOTUNE_AUTONOMOUS=1 turns the PreToolUse and Stop hooks on; unset in an interactive session
# AUTOTUNE_PROJECT_ROOT, CAMPAIGN_DIR root of the project folders <root>/<project_tag>/: the campaign directory
# (outside the launcher: $PWD/attune-projects)
# ATTUNE_CONTROL_DIR the launcher's control directory <campaign_dir>/.attune: the campaign's
# copies of the skill and harness, config.env and the integrity record
# ATTUNE_CAMPAIGN_ID <run prefix>-<UTC time of the first launch, to the second>-<4 random hex>;
# names the summary, past_tuning_projects/<project_tag>_<campaign id>_summary.md
# ---- Overrides (normally unset) ---------------------------------------------------------------------------------
# AUTOTUNE_LEDGER ledger file the skill and the Stop hook use
# (default: <root>/<project_tag>/AUTOTUNE_LEDGER.jsonl)
# TARGET_STEPS poll_run.sh: completion step for one call (default: the run's target_steps)
# Pod environment switches belong in the run YAML, not here: SLIME_PROFILE_* (make_run_yaml.py --env,
# skill/references/measurement.md §6) and PARITY_PROBE (skill/scripts/correctness/PROTOCOL.md).