Skip to content

Commit efe1a03

Browse files
committed
Add new experiments
1 parent ed99fbd commit efe1a03

21 files changed

Lines changed: 1925 additions & 98 deletions

File tree

‎experiments/conf/approach/fcn.yaml‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
_target_: programmatic_policy_learning.approaches.fcn_approach.FCNApproach
2+
3+
# The first positional args come from the runner
4+
# (env desc, spaces, seed, expert, env_factory).
5+
6+
demo_numbers: [0,1,2,3,4,5,6,7,8,9]
7+
max_demo_length: 100
8+
num_epochs: 200
9+
min_epochs: 25
10+
batch_size: 64
11+
learning_rate: 0.001
12+
weight_decay: 0.0
13+
num_conv_layers: 8
14+
input_hidden_channels: 8
15+
hidden_channels: 4
16+
device: auto
17+
train_before_eval: true
18+

‎experiments/conf/approach/lpp.yaml‎

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ program_generation_step_size: 10
55
num_programs: 100 # for fixed
66
num_dts: 5
77
max_num_particles: 25
8-
map_choices: false
8+
map_choices: true
99
start_symbol: 0 # for fixed dsl/grammar
1010
dt_splitter: best
1111
dt_max_depth: null # null
@@ -17,6 +17,7 @@ permissive_filter_max_avg_count: 2
1717
cross_demo_feature_filter:
1818
enabled: false
1919
apply_filter: false
20+
top_k_features: null
2021
consistency_tau: 0.05
2122
allow_negative_support: true
2223
min_pos_demo_support: 2
@@ -31,7 +32,7 @@ collision_template_feedback: false #false: means the feedback is just features/n
3132
collision_feedback_num_buckets: 2
3233
collision_feedback_bucket_mode: "positive_anchor" # "positive_anchor" | "global_mixed_label"
3334
collision_feedback_max_new_features: 5000
34-
collision_feedback_max_rounds: 5
35+
collision_feedback_max_rounds: 8
3536
collision_feedback_target_collisions: 0
3637
prior_version: "uniform" # v1 | v2 | uniform
3738
prior_beta: 2
@@ -57,21 +58,24 @@ recovery_augmentation:
5758
program_generation:
5859
strategy: "py_feature_gen" # Options: "fixed_grid_v1" "py_feature_gen", "dsl_generator", "feature_generator", offline_loader" "grid_v1_ablated"
5960
llm_model: "gpt-4.1"
61+
py_feature_cache_path: null
6062
skip_rate: 1
6163
py_feature_gen_mode: "feature_payload" # "feature_payload" | "generator_script"
6264
py_feature_gen_prompt: "src/programmatic_policy_learning/dsl/llm_primitives/prompts/py_feature_gen/hybrid.txt" # continuous_example use generator.txt when py_feature_gen_mode=generator_script
6365
removed_primitive: ""
6466
num_features: 50
6567
encoding_method: "enc_5" # "enc_1", "enc_4", "enc_5" are the common options
6668
multi_prompt_ensemble:
67-
num_seeds_per_subset: 2
69+
num_seeds_per_subset: 3
6870
demo_subsets:
69-
# - [3, 4]
71+
# - [0, 1]
72+
# - [2, 3]
7073
- [0, 1, 2]
71-
- [8, 9]
74+
# - [8, 9]
75+
- [3, 4]
7276
# - [7, 8, 9]
73-
# - [5, 6, 7]
74-
77+
- [5, 6, 7]
78+
- [8, 9]
7579

7680
loading:
7781
offline: 0 # 0 for using LLM / 1 for using the following path data
@@ -80,7 +84,7 @@ program_generation:
8084
# Discrete-only switch. Continuous mode is always quantized expansion.
8185
enabled: false
8286
discrete:
83-
K: 40
87+
K: 50
8488
local_radius: 2
8589
w_local: 0.55
8690
w_struct: 0.3

‎experiments/paper_curves/example_config.yaml‎

Lines changed: 163 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ error_band: sem
55
eval_max_steps: 100
66

77
demo_id_pool: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
8-
demo_counts: [1, 2, 3, 4, 5, 6,7,8,9,10]
9-
seeds: [0, 1, 2, 3 , 4, 5, 6, 7, 8, 9]
8+
demo_counts: [1,2,10] #, 5, 10 #1, 2, 3, 4, 5, 6,7,8,9,10
9+
seeds: [0, 1, 2, 3 , 4, 5, 6, 7, 8, 9] #, 1, 2, 3 , 4, 5, 6, 7, 8, 9
1010
test_env_nums: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
1111

1212
codebases:
@@ -16,37 +16,40 @@ codebases:
1616
cap:
1717
root_dir: .
1818
python_executable: python
19+
fcn:
20+
root_dir: .
21+
python_executable: python
1922

2023
environments:
21-
- name: Nim
22-
key: nim
23-
lpp_env: ggg_nim
24-
cap_env: TwoPileNim
25-
cap_env_type: grid
26-
plot_title: Two-Pile-Nim
27-
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
24+
# - name: Nim
25+
# key: nim
26+
# lpp_env: ggg_nim
27+
# cap_env: TwoPileNim
28+
# cap_env_type: grid
29+
# plot_title: Two-Pile-Nim
30+
# plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
2831
# plot_caption: "Comparison of test success rate versus number of expert demonstrations on Two-Pile-Nim. Shaded bands show the configured across-seed uncertainty."
29-
- name: CheckmateTactic
30-
key: ct
31-
lpp_env: ggg_checkmate
32-
cap_env: CheckmateTactic
33-
cap_env_type: grid
34-
plot_title: Checkmate-Tactic
35-
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
36-
- name: StopTheFall
37-
key: stf
38-
lpp_env: ggg_stf
39-
cap_env: StopTheFall
40-
cap_env_type: grid
41-
plot_title: Stop-The-Fall
42-
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
43-
- name: ReachForTheStar
44-
key: rfts
45-
lpp_env: ggg_rfts
46-
cap_env: ReachForTheStar
47-
cap_env_type: grid
48-
plot_title: Reach-For-The-Star
49-
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
32+
# - name: CheckmateTactic
33+
# key: ct
34+
# lpp_env: ggg_checkmate
35+
# cap_env: CheckmateTactic
36+
# cap_env_type: grid
37+
# plot_title: Checkmate-Tactic
38+
# plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
39+
# - name: StopTheFall
40+
# key: stf
41+
# lpp_env: ggg_stf
42+
# cap_env: StopTheFall
43+
# cap_env_type: grid
44+
# plot_title: Stop-The-Fall
45+
# plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
46+
# - name: ReachForTheStar
47+
# key: rfts
48+
# lpp_env: ggg_rfts
49+
# cap_env: ReachForTheStar
50+
# cap_env_type: grid
51+
# plot_title: Reach-For-The-Star
52+
# plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
5053
- name: Chase
5154
key: ec
5255
lpp_env: ggg_chase
@@ -56,14 +59,114 @@ environments:
5659
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
5760

5861
methods:
59-
- name: our_main
60-
display_name: Our approach
62+
63+
- name: our_main_1
64+
display_name: Our approach 1
6165
backend: lpp
6266
sync_prompt_demo_subsets: true
6367
overrides:
6468
- approach.program_generation.strategy=py_feature_gen
6569
- approach.program_generation.encoding_method=enc_5
66-
- approach.collision_feedback_enabled=false
70+
- approach.map_choices=true
71+
- approach.collision_feedback_enabled=true
72+
- approach.collision_feedback_bucket_mode=global_mixed_label
73+
- approach.collision_feedback_max_rounds=8
74+
- approach.program_generation.negative_sampling.enabled=true
75+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=false
76+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=false
77+
- approach.cross_demo_feature_filter.enabled=false
78+
- approach.cross_demo_feature_filter.apply_filter=false
79+
80+
- name: our_main_2
81+
display_name: Our approach 2
82+
backend: lpp
83+
sync_prompt_demo_subsets: true
84+
overrides:
85+
- approach.program_generation.strategy=py_feature_gen
86+
- approach.program_generation.encoding_method=enc_5
87+
- approach.map_choices=false
88+
- approach.collision_feedback_enabled=true
89+
- approach.collision_feedback_bucket_mode=global_mixed_label
90+
- approach.collision_feedback_max_rounds=8
91+
- approach.program_generation.negative_sampling.enabled=true
92+
- approach.program_generation.negative_sampling.discrete.K=50
93+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=false
94+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=false
95+
- approach.cross_demo_feature_filter.enabled=false
96+
- approach.cross_demo_feature_filter.apply_filter=false
97+
98+
- name: our_main_3
99+
display_name: Our approach 3
100+
backend: lpp
101+
sync_prompt_demo_subsets: true
102+
overrides:
103+
- approach.program_generation.strategy=py_feature_gen
104+
- approach.program_generation.encoding_method=enc_5
105+
- approach.map_choices=true
106+
- approach.collision_feedback_enabled=true
107+
- approach.collision_feedback_bucket_mode=global_mixed_label
108+
- approach.collision_feedback_max_rounds=8
109+
- approach.program_generation.negative_sampling.enabled=true
110+
- approach.program_generation.negative_sampling.discrete.K=50
111+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=true
112+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=true
113+
- approach.cross_demo_feature_filter.enabled=false
114+
- approach.cross_demo_feature_filter.apply_filter=false
115+
116+
117+
- name: our_main_4
118+
display_name: Our approach 4
119+
backend: lpp
120+
sync_prompt_demo_subsets: true
121+
overrides:
122+
- approach.program_generation.strategy=py_feature_gen
123+
- approach.program_generation.encoding_method=enc_5
124+
- approach.map_choices=true
125+
- approach.collision_feedback_enabled=true
126+
- approach.collision_feedback_bucket_mode=global_mixed_label
127+
- approach.collision_feedback_max_rounds=8
128+
- approach.program_generation.negative_sampling.enabled=true
129+
- approach.program_generation.negative_sampling.discrete.K=50
130+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=true
131+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=true
132+
- approach.cross_demo_feature_filter.enabled=true
133+
- approach.cross_demo_feature_filter.apply_filter=true
134+
135+
136+
- name: our_main_5
137+
display_name: Our approach 5
138+
backend: lpp
139+
sync_prompt_demo_subsets: true
140+
overrides:
141+
- approach.program_generation.strategy=py_feature_gen
142+
- approach.program_generation.encoding_method=enc_5
143+
- approach.map_choices=true
144+
- approach.collision_feedback_enabled=true
145+
- approach.collision_feedback_bucket_mode=global_mixed_label
146+
- approach.collision_feedback_max_rounds=8
147+
- approach.program_generation.negative_sampling.enabled=false
148+
- approach.program_generation.negative_sampling.discrete.K=50
149+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=false
150+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=false
151+
- approach.cross_demo_feature_filter.enabled=true
152+
- approach.cross_demo_feature_filter.apply_filter=true
153+
154+
155+
- name: our_main_6
156+
display_name: Our approach 6
157+
backend: lpp
158+
sync_prompt_demo_subsets: true
159+
overrides:
160+
- approach.program_generation.strategy=py_feature_gen
161+
- approach.program_generation.encoding_method=enc_5
162+
- approach.map_choices=true
163+
- approach.collision_feedback_enabled=true
164+
- approach.collision_feedback_bucket_mode=positive_anchor
165+
- approach.collision_feedback_max_rounds=8
166+
- approach.program_generation.negative_sampling.enabled=true
167+
- approach.program_generation.negative_sampling.discrete.K=50
168+
- approach.program_generation.negative_sampling.discrete.ignore_equivalent_transitions=false
169+
- approach.program_generation.negative_sampling.discrete.use_sample_weights=true
67170
- approach.cross_demo_feature_filter.enabled=false
68171
- approach.cross_demo_feature_filter.apply_filter=false
69172

@@ -105,8 +208,9 @@ methods:
105208
# - --max-steps-per-traj
106209
# - "40"
107210

211+
108212
- name: cap_enc5
109-
display_name: CaP (enc 5)
213+
display_name: LLM imitation
110214
backend: cap
111215
cli_args:
112216
- --encodings
@@ -115,3 +219,28 @@ methods:
115219
- gpt-4.1
116220
- --max-steps-per-traj
117221
- "40"
222+
223+
- name: lpp_original
224+
display_name: LPP original (oracle)
225+
backend: lpp
226+
seeds: [0]
227+
feature_budget_override: approach.num_programs
228+
plot_style:
229+
linestyle: ":"
230+
overrides:
231+
- approach.program_generation.strategy=fixed_grid_v1
232+
- approach.program_generation_step_size=100
233+
234+
- name: fcn
235+
display_name: FCN
236+
backend: fcn
237+
overrides:
238+
- approach.num_epochs=300
239+
- approach.batch_size=128
240+
- approach.learning_rate=0.001
241+
242+
- name: vlm_imitation
243+
display_name: VLM imitation
244+
backend: vlm
245+
seeds: [0]
246+
model: gpt-4.1
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
experiment_name: feature_curves_example
2+
output_root: results/feature_curves
3+
continue_on_error: true
4+
error_band: sem
5+
eval_max_steps: 100
6+
7+
train_demo_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 2, 3, 4, 5, 6, 7, 8, 9]
8+
feature_counts: [10, 50, 100, 200, 500, 1000, 5000] #50, 100, 200, 500, 1000, 5000, 10000]
9+
seeds: [0, 1, 2, 3, 4] #,
10+
test_env_nums: [10, 11, 12, 13, 14] #, 15, 16, 17, 18, 19
11+
12+
codebases:
13+
lpp:
14+
root_dir: .
15+
python_executable: python
16+
17+
environments:
18+
- name: StopTheFall
19+
key: stf
20+
lpp_env: ggg_stf
21+
cap_env: StopTheFall
22+
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
23+
- name: CheckmateTactic
24+
key: ct
25+
lpp_env: ggg_checkmate
26+
cap_env: CheckmateTactic
27+
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
28+
29+
- name: ReachForTheStar
30+
key: rfts
31+
lpp_env: ggg_rfts
32+
cap_env: ReachForTheStar
33+
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
34+
- name: Chase
35+
key: ec
36+
lpp_env: ggg_chase
37+
plot_title: Chase
38+
plot_caption: "No Collision feedback, no example subsampling, and uniform prior!"
39+
- name: Nim
40+
key: nim
41+
lpp_env: ggg_nim
42+
plot_title: Nim
43+
plot_caption: "Feature-budget comparison between the LLM feature generator and original LPP using 10 training demos and a fixed held-out test set."
44+
45+
methods:
46+
- name: our_main_topk
47+
display_name: Our approach
48+
backend: lpp
49+
shared_py_feature_cache: true
50+
shared_run_cache: true
51+
feature_budget_override: approach.cross_demo_feature_filter.top_k_features
52+
overrides:
53+
- approach.program_generation.strategy=py_feature_gen
54+
- approach.program_generation.encoding_method=enc_5
55+
- approach.cross_demo_feature_filter.enabled=true
56+
- approach.cross_demo_feature_filter.apply_filter=false
57+
- approach.collision_feedback_enabled=false
58+
59+
- name: lpp_original
60+
display_name: LPP original
61+
backend: lpp
62+
seeds: [0]
63+
feature_budget_override: approach.num_programs
64+
overrides:
65+
- approach.program_generation.strategy=fixed_grid_v1
66+
- approach.program_generation_step_size=100

0 commit comments

Comments
 (0)