From e9f5810c08ac870fca22445c027fb2c425517896 Mon Sep 17 00:00:00 2001 From: wassname <1103714+wassname@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:19:58 +0800 Subject: [PATCH] fix keyboard interrupt --- docs/icm_progress.png | Bin 40993 -> 0 bytes icm_progress.png | Bin 42124 -> 33367 bytes pyproject.toml | 1 + src/data/daily_dilemma.py | 24 ---------- src/data/daily_dilemmas.py | 96 +++++++++++++++++++++++++++++++++++++ src/simple_icm.py | 69 +++++++++++++++++++------- uv.lock | 15 ++++++ 7 files changed, 163 insertions(+), 42 deletions(-) delete mode 100644 docs/icm_progress.png delete mode 100644 src/data/daily_dilemma.py create mode 100644 src/data/daily_dilemmas.py diff --git a/docs/icm_progress.png b/docs/icm_progress.png deleted file mode 100644 index b3dcf38ebdfd02a5d838188fb6d4383d67b169dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40993 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�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 literal 42124 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 Ib4q9e048g_qyPW_ diff --git a/pyproject.toml b/pyproject.toml index 8a463c3..5462645 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,7 @@ dependencies = [ "scikit-learn>=1.7.2", "scipy>=1.15.3", "seaborn>=0.13.2", + "simple-parsing>=0.1.7", "sqlalchemy==2.0.18", "tabulate>=0.9.0", "tenacity>=9.1.2", diff --git a/src/data/daily_dilemma.py b/src/data/daily_dilemma.py deleted file mode 100644 index 0e329c7..0000000 --- a/src/data/daily_dilemma.py +++ /dev/null @@ -1,24 +0,0 @@ -from datasets import load_dataset - -def load_daily_dilemma(): - dataset = load_dataset("kellycyy/daily_dilemmas", split="test") - - data = [] - for item in dataset: - # Unbiased prompt - just the situation and action - prompt = f"Situation: {item['dilemma_situation']}\nAction: {item['action']}" - - # Map to A/B (unrelated group names) - label = 1 if item['action_type'] == 'to_do' else 0 - consistency_key = 'A' if item['action_type'] == 'to_do' else 'B' - - example = { - 'uid': item['idx'], - 'prompt': prompt, - 'vanilla_label': label, - 'consistency_id': item['dilemma_idx'], - 'consistency_key': consistency_key - } - data.append(example) - - return data diff --git a/src/data/daily_dilemmas.py b/src/data/daily_dilemmas.py new file mode 100644 index 0000000..c5fb707 --- /dev/null +++ b/src/data/daily_dilemmas.py @@ -0,0 +1,96 @@ +from datasets import load_dataset +import pandas as pd +from collections import defaultdict +import ast + + +def convert_values_to_list(x): + # turn into list + s = x["values_aggregated"] + v = ast.literal_eval(s) + return {"values_aggregated": v} + +def load_daily_dilemma(label_col = "label_Virtue/Truthfulness"): + dataset = load_dataset("kellycyy/daily_dilemmas", split="test") + dataset = dataset.map(convert_values_to_list) + df_labels = load_labels(dataset).rename(columns=lambda x: f"label_{x}" if x != "dilemma_idx" else x) + df = dataset.to_pandas() + df = df.merge(df_labels, on='dilemma_idx') + cols_label = [c for c in df_labels.columns if c.startswith('label_')] + # flip labels on not_to_do + df.loc[df['action_type'] == 'not_to_do', cols_label] *= -1 + dataset = df.to_dict(orient='records') + + + + data = [] + for item in dataset: + # Unbiased prompt - just the situation and action + prompt = f"Situation: {item['dilemma_situation']}\nAction: {item['action']}" + + # Map to A/B (unrelated group names) + consistency_key = 'A' if item['action_type'] == 'to_do' else 'B' + + example = { + 'uid': item['idx'], + 'prompt': prompt, + 'vanilla_label': item[label_col], + 'consistency_id': item['dilemma_idx'], + 'consistency_key': consistency_key + } + data.append(example) + + + return data + + + +def load_labels(dd_dataset): + ds_values = load_dataset("kellycyy/daily_dilemmas", split="test", name="Values") + + # moral tags + moral_frameworks = ["WVS", "MFT", "Virtue", "Emotion", "Maslow"] + + value2framework_dicts = {} + for framework in moral_frameworks: + df_values = ds_values.to_pandas()[["value", framework]].dropna() + value2framework_dict = df_values.set_index("value")[framework].to_dict() + value2framework_dict = {k: f"{framework}/{v}" for k, v in value2framework_dict.items()} + value2framework_dicts[framework] = value2framework_dict + + + # make labels + df_dilemma = dd_dataset.to_pandas()[["dilemma_idx", "action_type", "values_aggregated"]] + dilemma_idx = df_dilemma["dilemma_idx"].unique() + + labels = [] + for d_idx in dilemma_idx: + pos_values = ( + df_dilemma.query('dilemma_idx == @d_idx and action_type == "to_do"')["values_aggregated"].iloc[0].tolist() + ) + neg_values = ( + df_dilemma.query('dilemma_idx == @d_idx and action_type == "not_to_do"')["values_aggregated"].iloc[0].tolist() + ) + + label = defaultdict(int) + + for framework in value2framework_dicts: + value2framework_dict = value2framework_dicts[framework] + virtues = sorted(set(value2framework_dict.values())) + + pos_virtues = [value2framework_dict[k] for k in pos_values if k in value2framework_dict] + neg_virtues = [value2framework_dict[k] for k in neg_values if k in value2framework_dict] + + for p in pos_virtues: + label[p] += 1 + for n in neg_virtues: + label[n] -= 1 + + labels.append(dict(dilemma_idx=d_idx, **label)) + + + + df_labels = pd.DataFrame(labels).set_index("dilemma_idx") + assert df_labels.index.is_unique + return df_labels + diff --git a/src/simple_icm.py b/src/simple_icm.py index 181fc3e..913d047 100644 --- a/src/simple_icm.py +++ b/src/simple_icm.py @@ -19,7 +19,7 @@ from dataclasses import dataclass, asdict import dotenv from loguru import logger from openrouter_wrapper.logprobs import openrouter_completion_wlogprobs, get_logprobs_choices, LogprobsNotSupportedError # User's wrapper -from typing import List, Tuple, Callable +from typing import List, Tuple, Callable, Literal import asyncio from aiocache import cached from itertools import combinations @@ -43,6 +43,7 @@ logger.add(sys.stderr, format="{time:YYYY-MM-DD HH:mm} | { # Global cost tracker total_cost = 0.0 +reasoning_log = "" # %% [code] @@ -56,16 +57,22 @@ class Config: num_seed: int = 8 max_iters: int = 2500 # should be at least dataset size X 2 n_shots: int = 6 # Number of in-context examples - model_id: str = "meta-llama/llama-3.1-8b-instruct" # Logprobs supported - provider_whitelist: Tuple[str] = None # None to let OpenRouter choose + # model_id: str = "meta-llama/llama-3.1-8b-instruct" # Logprobs supported + model_id: str = "qwen/qwen3-235b-a22b-2507" # Logprobs supported + provider_whitelist: Tuple[str] = ('Chutes','Nebius',) # None to let OpenRouter choose out_dir: Path = Path("../outputs/icm") # Directory to save outputs log_interval: int = 100 # Log progress every N iterations + dataset: Literal["truthfulqa", "daily_dilemmas"] = "truthfulqa" # Dataset name for logging -C = Config( - model_id="qwen/qwen3-235b-a22b-2507", # $0.2 0.6 - provider_whitelist=[ 'Chutes','Nebius',], -) -C.out_dir.mkdir(parents=True, exist_ok=True) + +import simple_parsing + +C: Config = simple_parsing.parse(Config) + +# C = Config( +# model_id="qwen/qwen3-235b-a22b-2507", # $0.2 0.6 +# provider_whitelist=[ 'Chutes','Nebius',], +# ) # C = Config( # model_id="qwen/qwen3-30b-a3b-instruct-2507", # 0.08 $0.33 @@ -79,14 +86,23 @@ C.out_dir.mkdir(parents=True, exist_ok=True) logger.info(f"Config: {C}") config_dict = asdict(C) -config_dict['out_dir'] = str(config_dict['out_dir']) -with open(C.out_dir / "icm_config.json", "w") as f: +out_dir = C.out_dir / C.dataset.replace(' ', '_').replace('/', '_') +out_dir.mkdir(parents=True, exist_ok=True) +config_dict['out_dir'] = str(C.out_dir) +with open(out_dir / "icm_config.json", "w") as f: json.dump(config_dict, f, indent=2) # %% [code] from src.data.truthfulqa import load_truthfulqa, is_consistent +from data.daily_dilemmas import load_daily_dilemma + +if C.dataset == "truthfulqa": + data = load_truthfulqa() +elif C.dataset == "daily_dilemmas": + data = load_daily_dilemma() +else: + raise ValueError(f"Unknown dataset {C.dataset}") -data = load_truthfulqa() logger.info("Loaded {} examples", len(data)) # %% [code] @@ -145,6 +161,9 @@ async def predict_label(example_uid, current_demos, config=C, verbose=False, all {"role": "user", "content": instruction+"".join(fewshot)+f"\n\n## Candidate:\n{target_prompt}"}, {"role": "assistant", "content": "\n## Set:"} # Assistant prefill to ensure ] + + if verbose>1: + messages[0]['content'] = "ALWAYS GIVE BRIEF REASONING AFTERWARDS. " + messages[0]['content'] response = await cached_openrouter_completion_wlogprobs( @@ -152,6 +171,7 @@ async def predict_label(example_uid, current_demos, config=C, verbose=False, all provider_whitelist=config.provider_whitelist, messages=messages, max_completion_tokens=160 if verbose else 5, + min_completion_tokens=30 if verbose else 1, temperature=0.4, top_logprobs=8, ) @@ -160,9 +180,14 @@ async def predict_label(example_uid, current_demos, config=C, verbose=False, all if verbose: logger.info(f"Debug Prediction - UID {example_uid}:") - logger.info(f"messages: {print_messages(messages)}") - logger.info(f"Response Content: {response['choices'][0]['message']['content']}") + logger.info(f"messages: `{print_messages(messages)}`") + logger.info(f"Response Content: `{response['choices'][0]['message']['content']}`") logger.info(f"--- End Debug ---") + if verbose>1: + global reasoning_log + reasoning_log += f"\n\n## Candidate:\n{target_prompt}\n## Set:\n" + reasoning_log += response['choices'][0]['message']['content'] + try: choice_strs = ["A", "B"] @@ -174,7 +199,7 @@ async def predict_label(example_uid, current_demos, config=C, verbose=False, all if not choice_in_toplogp: model_response = response['choices'][0]['message']['content'] - logger.warning(f"Choices not returned for UID {example_uid}, may indicate model confusion. choice_logp={choice_logp}. Instead we got these top logprobs: {top_logp} and \nmessages: {print_messages(messages)}\nthis output: {model_response}") + logger.warning(f"Choices not returned for UID {example_uid}, may indicate model confusion. choice_logp={choice_logp}. Instead we got these top logprobs: {top_logp} and \nmessages: ...`{print_messages(messages)[-90:]}`\nthis output:`{model_response}`") score = choice_logp["A"] - choice_logp["B"] predicted = 1 if score > 0 else 0 return predicted, float(score) @@ -223,6 +248,9 @@ def compute_energy(demos, config=C): energy = config.alpha * avg_lprob - num_inconsistent - (num_inconsistent / max(1, len(labeled))) # Normalized penalty accuracy = np.mean([d['label'] == d['vanilla_label'] for d in labeled]) + # flip acc if needed, as this is unsupervised + if accuracy < 0.5: + accuracy = 1 - accuracy return energy, { 'avg_lprob': avg_lprob, 'num_inconsistent': num_inconsistent, @@ -405,6 +433,8 @@ async def run_icm(demonstrations, config=C): except KeyboardInterrupt: logger.info("Stopping early.") + except asyncio.CancelledError: + logger.info("Asyncio task cancelled.") return demonstrations, energies, accuracies @@ -418,13 +448,13 @@ logger.info("\nFinal Results:") logger.info("Total cost: ${:.4f}", total_cost) logger.info("Energy: {:.2f}", final_energy) # TODO show vanilla accuracy here for comparison -logger.info("Accuracy vs vanilla: {:.2f}, initial {:.2f}", final_metrics['accuracy'], accuracies[0]) +logger.info("Accuracy [labelled] vs vanilla: {:.2f}, initial {:.2f}", final_metrics['accuracy'], accuracies[0]) logger.info("Labeled: {}/{}", final_metrics['num_labeled'], len(data)) logger.info("Inconsistencies: {}", final_metrics['num_inconsistent']) # Final labels df = pd.DataFrame(final_demos).T -df.to_parquet(C.out_dir / "icm_final_labels.parquet") +df.to_parquet(out_dir / "icm_final_labels.parquet") df_labeled = df.dropna(subset='label').sort_values(by='score', key=np.abs, ascending=False) df_labeled_disagreed = df_labeled[df_labeled['vanilla_label'] != df_labeled['label']] @@ -435,11 +465,14 @@ print(df_labeled_disagreed[['consistency_id', 'label', 'vanilla_label', 'score', for uid, row in df_labeled_disagreed.iterrows(): print(f"\n## Candidate: {row['prompt']}\nICM Set: {'A' if row['label']==1 else 'B'}, Vanilla Set: {'A' if row['vanilla_label']==1 else 'B'}, score={row['score']}\n") - +print(f"\nFinal labeled examples saved to {out_dir / 'icm_final_labels.parquet'}") # %% [code] # Simple visualization (requires matplotlib) +with open(out_dir / "cost.txt", "w") as f: + f.write(f"\n\nTotal cost: ${total_cost:.4f}\n") + f.write(reasoning_log) plt.figure(figsize=(10, 4)) plt.subplot(1, 2, 1) @@ -450,7 +483,7 @@ plt.ylabel('Energy') plt.subplot(1, 2, 2) plt.plot(accuracies) -plt.title('Accuracy over Iterations') +plt.title('Accuracy [labelled] over Iterations') plt.xlabel('Iteration') plt.ylabel('Accuracy') diff --git a/uv.lock b/uv.lock index 1bae939..210e8bc 100644 --- a/uv.lock +++ b/uv.lock @@ -3452,6 +3452,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] +[[package]] +name = "simple-parsing" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docstring-parser" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/c5/f1e2fcb3a81085cdf3cfed48b8c8ce0e7cc30c95dee734cbb35d6265336a/simple_parsing-0.1.7.tar.gz", hash = "sha256:225e6b35252d68f7894716101fe3bd7e6dd3d30ab7b1c3c023f77a42dbe1336f", size = 96375, upload-time = "2025-01-20T19:46:35.986Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/9c/e9ea38750027a6de3e3c5e68a19fda0e7b0cd3db8045f30d0f6bc113b911/simple_parsing-0.1.7-py3-none-any.whl", hash = "sha256:5276e6c90c157362dd0173d1eecebe58361a66b457129cc9bba13b78a4e85092", size = 112782, upload-time = "2025-01-20T19:46:33.325Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -3782,6 +3795,7 @@ dependencies = [ { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "seaborn" }, + { name = "simple-parsing" }, { name = "sqlalchemy" }, { name = "tabulate" }, { name = "tenacity" }, @@ -3827,6 +3841,7 @@ requires-dist = [ { name = "scikit-learn", specifier = ">=1.7.2" }, { name = "scipy", specifier = ">=1.15.3" }, { name = "seaborn", specifier = ">=0.13.2" }, + { name = "simple-parsing", specifier = ">=0.1.7" }, { name = "sqlalchemy", specifier = "==2.0.18" }, { name = "tabulate", specifier = ">=0.9.0" }, { name = "tenacity", specifier = ">=9.1.2" },