File size: 3,315 Bytes
34cc882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bbaedc3
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
102
103
104
105
106
107
108
# TFMF LoRA 训练与 Web Search 代理

## 1. LoRA 训练脚本

训练脚本已改为可命令行参数模式,直接指定训练数据目录、输出目录和基座模型目录。

示例用法:

```bash
cd /data/coding
python TFMF/train_lora_auto.py \
  --data-dir ./TFMF/dataset \
  --output-dir ./TFMF/lora_adapters/teacher_chinese_auto \
  --model-path /data/coding/TFMF \
  --epochs 3 \
  --batch-size 8 \
  --gradient-accumulation-steps 2 \
  --learning-rate 2e-4
```

如果只想使用单个文件:

```bash
python TFMF/train_lora_auto.py \
  --data-path ./TFMF/dataset/语文教师_语文_高二_v1.jsonl \
  --output-dir ./TFMF/lora_adapters/teacher_chinese_auto
```

脚本会自动加载 `--data-dir` 目录下所有 `.jsonl` 文件,并按 `--validation-split` 比例切分训练/验证集。

默认会保存最终适配器到:

```bash
./TFMF/lora_adapters/teacher_chinese_auto/final
```


## 2. loss 打印说明

当前 `train_lora_auto.py` 默认 `logging_steps=10`,也就是:

- 每 10 个训练 step 打印一次训练 loss
- 如果训练总步数不超过 10,则可能只打印一次训练 loss
- 终端输出中的 `loss` 是训练过程中的中间 loss
- `eval_loss` 是验证集 loss
- `train_loss` 是训练结束后的整体平均 loss

如果需要更多频次的 loss 输出,可以在运行时手动指定更小的参数,例如:

```bash
python TFMF/train_lora_auto.py \
  --data-path ./TFMF/dataset/语文教师_语文_高二_v1.jsonl \
  --output-dir ./TFMF/lora_adapters/teacher_chinese_auto \
  --logging-steps 2
```


## 3. Web Search 评估脚本

新增 `TFMF/eval_lora_auto.py`,用于加载基座模型和 LoRA 适配器,并通过提示词注入 + Tavily 联网进行评估。

运行前先设置 API Key:

```bash
export TAVILY_API_KEY="tvly-xxx"
```

评估测试数据模式:

```bash
cd /data/coding
python TFMF/eval_lora_auto.py \
  --model-path /data/coding/TFMF \
  --adapter-path ./TFMF/lora_adapters/teacher_chinese_auto/final \
  --tavily-api-key "$TAVILY_API_KEY" \
  --data-path ./TFMF/dataset/语文教师_语文_高二_v1.jsonl \
  --n-samples 3
```

交互模式:

```bash
python TFMF/eval_lora_auto.py \
  --model-path /data/coding/TFMF \
  --adapter-path ./TFMF/lora_adapters/teacher_chinese_auto/final \
  --tavily-api-key "$TAVILY_API_KEY" \
  --interactive
```


## 4. 目录结构建议

- 训练数据放在一个文件夹里,例如 `TFMF/dataset/`
- LoRA 输出放到 `TFMF/lora_adapters/your_adapter_name/`
- 评估脚本加载 `.../final` 下的 LoRA 适配器


## 5. 客户端使用说明

1. 使用 `_auto` 后缀的 `train_lora.py``eval_lora_auto.py`
2. 将训练数据放到一个文件夹,例如 `TFMF/dataset/`3. 运行 `train_lora_auto.py`,指定 `--data-dir``--data-path`,并指定 `--output-dir`4. 训练完成后,确认 `./TFMF/lora_adapters/teacher_chinese_auto/final` 已生成。
5. 使用 `python TFMF/eval_lora_auto.py` 加载模型并进行联网评估。
6. 如果需要实时提问,可加上 `--interactive` 进入交互模式。
7. 未来不一定需要用tavily,作为演示我选择用免费1000次/月的tavily,未来需要改动的时候改 `eval_lora_auto.py` 里的api调用部分即可
8. 项目可能做的不够完善,有问题联系我我来继续完善