# forget-learn **Repository Path**: xpnb/forget-learn ## Basic Information - **Project Name**: forget-learn - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Forget-Learn Pipeline 研究流程:先基准测评 -> 针对 `fictional_knowledge.json` 单样本预训练 -> 再次测评验证原有知识是否被影响。项目使用 Hydra 配置并可通过 Accelerate 做高效训练。 ## 目录 - `conf/`:Hydra 配置(模型、训练、评测、数据集定义)。 - `forget_learn/`:核心代码(加载模型、数据、评测、训练)。 - `data/fictional_knowledge.json`:单条虚构知识样本集合。 - `main.py`:统一入口。 ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 运行方式 ### 1) 基准测评并缓存正确案例 ```bash python main.py stage=pre_eval \ model.model_name=meta-llama/Llama-3-8b-instruct \ eval.batch_size=2 ``` - 结果:`outputs/pre_eval//results/*.jsonl` - 筛选出的正确案例:`outputs/pre_eval//correct_cases/*_correct.jsonl` ### 2) 针对虚构知识单条预训练 ```bash python main.py stage=finetune train.sample_index=0 \ train.max_train_steps=100 train.learning_rate=5e-5 ``` - 模型存储:`outputs/finetune//finetuned` - 若需继续评测,请将 `model.model_name` 指向该目录。 ### 3) 针对缓存案例复测 ```bash python main.py stage=post_eval \ model.model_name=outputs/finetune//finetuned \ eval.correct_cases_source=outputs/pre_eval//correct_cases ``` - 结果存于 `outputs/post_eval//results/*_post.jsonl` ## 配置要点 - 数据集定义在 `conf/config.yaml` -> `datasets.*`,可按需修改 `type`、`split`、`max_samples` 等。 - 生成/解码参数位于 `conf/eval/base.yaml`。 - 训练超参位于 `conf/train/single_sample.yaml`,可通过命令行覆盖。 ## 模块说明 - `forget_learn/models.py`:加载模型与分词器,支持 `device_map`、`flash_attention_2`、8/4bit。 - `forget_learn/evaluation.py`:按数据集类型格式化 prompt、批量生成、计算正确性并保存结果;`evaluate_cached_cases` 用于复测。 - `forget_learn/training.py`:使用 Accelerate 执行单条记录的轻量预训练,可开启 gradient checkpointing。 - `forget_learn/datasets.py`:HF 数据集加载与字段解析工具。 - `forget_learn/utils.py`:通用工具(seed、IO)。 ## 提示 - Humaneval、Math 等复杂任务当前使用简单的字符串/标签匹配作为占位评测逻辑,若需更严格的执行式评测请替换 `forget_learn/evaluation.py` 中对应部分。 - 运行 `stage=post_eval` 时需显式提供先前基准测评产生的 `correct_cases` 路径。