ORCA6 / evaluation_report.md
veroarc's picture
Upload evaluation_report.md with huggingface_hub
df2833c verified
|
Raw
History Blame Contribute Delete
8.35 kB
# ORCA6 Evaluation Report
Version: v0.1-bootstrap
## Current Evaluation Scope
The current verified evaluation covers retrieval, grounded-answer behavior, the
first Qwen3 14B LoRA smoke adapter, and a grounded-data fit-check adapter.
The Qwen3 adapter evaluations are intentionally limited: they use tiny training
splits and should be treated as pipeline proofs, not publishable quality results.
## Retrieval Metrics
Latest smoke-test results:
```text
queries: 20
match_modes: any=14 all=6
calibrated_pass@1: 14/20 = 70.00%
calibrated_pass@3: 20/20 = 100.00%
calibrated_pass@5: 20/20 = 100.00%
hit@1: 20/20 = 100.00%
hit@3: 20/20 = 100.00%
hit@5: 20/20 = 100.00%
all_expected@3: 19/20 = 95.00%
all_expected@5: 20/20 = 100.00%
all_expected@10: 20/20 = 100.00%
```
Re-check on 2026-06-24 matched these recorded metrics exactly.
## Model Evaluation Plan
After fine-tuning:
1. Run the retrieval smoke eval to confirm RAG context quality.
2. Run 30 held-out orchestration prompts.
3. Score each answer on correctness, relevance, actionability, safety, and novelty.
4. Compare base model, grounded RAG answer, and fine-tuned model answer.
5. Record failure modes: hallucinated tool capability, missing tradeoffs, over-complex architecture, weak safety guidance.
## Qwen3 14B Smoke Adapter Evaluation
Artifact:
```text
qwen3_14b_orca_smoke/
```
Generated outputs:
```text
evals/qwen3_14b_orca_smoke_outputs.jsonl
```
Prompt set:
```text
evals/orca_model_eval_prompts.jsonl
```
Result:
- 8 held-out ORCA prompts generated successfully.
- Adapter inference works with the local base model at `/tmp/orca6-qwen3-14b-download`.
- Outputs generally follow the expected shape: summary, architecture, tradeoffs, safety/failure modes, and next steps.
- Quality is not release-ready. The smoke adapter still makes confident unsupported claims and sometimes invents source-style citations or specific integration details.
- This confirms the training/inference path works, but the next improvement needs better grounded SFT data and stricter eval, not more epochs on the same tiny auto-graded set.
Immediate next model-data actions:
1. Replace or augment auto-graded preference data with human-checked examples.
2. Generate SFT examples that explicitly include retrieved evidence and require source-grounded answers.
- Status: first grounded batch generated with `scripts/build_grounded_sft.py`.
- Standalone artifact: `data/grounded_sft_eval_prompts.jsonl` (8 rows).
- Merged train artifact: `data/training_sft_plus_grounded.jsonl` (35 rows).
3. Add hard-negative eval prompts for unsupported tool claims.
4. Re-run `scripts/evaluate_adapter_outputs.py` after the next adapter.
## Qwen3 14B Grounded Smoke Adapter Evaluation
Artifact:
```text
qwen3_14b_orca_grounded_smoke/
```
Generated outputs:
```text
evals/qwen3_14b_orca_grounded_smoke_outputs.jsonl
```
Training data:
```text
data/training_sft_plus_grounded.jsonl
```
Fit-check command used:
```bash
python scripts/finetune_qwen_unsloth.py \
--model_name /tmp/orca6-qwen3-14b-download \
--data_path data/training_sft_plus_grounded.jsonl \
--validation_data_path data/validation_sft.jsonl \
--output_dir qwen3_14b_orca_grounded_smoke \
--epochs 2 \
--batch_size 1 \
--seq_length 512 \
--eval_steps 5 \
--save_strategy no \
--lora_r 16 \
--lora_alpha 32 \
--lora_dropout 0 \
--gradient_accumulation_steps 2
```
Result:
- Training completed on the RTX 3090 after reducing the fit-check profile to 512 tokens and LoRA rank 16.
- Adapter size: about 257 MB.
- Final metrics: `eval_loss=1.211`, `train_loss=1.592`, 36 total steps, 35 train / 3 validation examples.
- Earlier attempts at 2048/r64 and 1024/r32 hit CUDA OOM with the longer grounded examples.
- `SFTConfig.max_length` is now set from `--seq_length`; without this, TRL tokenized to its default 1024-token length even when the model was loaded at 512.
- Free-form held-out outputs still invent source IDs and links because the eval prompts do not include retrieved evidence packets.
Conclusion:
The grounded-data adapter is a successful hardware/training fit check and has
better validation loss than the first Qwen3 smoke, but it does not solve
groundedness in free-form evaluation. The next quality step is to evaluate with
explicit source-packet prompts and add hard negatives that reward refusing
unsupported citations.
## Grounded Eval Harness
Prompt set:
```text
evals/orca_grounded_eval_prompts.jsonl
```
Outputs:
```text
evals/qwen3_14b_orca_grounded_eval_outputs.jsonl
```
Report:
```text
evals/qwen3_14b_orca_grounded_eval_report.json
```
Result:
- Overall deterministic pass rate: 11/12 = 91.7%.
- Source-packet citation discipline: 8/8 passed.
- Hard negatives: 3/4 passed.
- Remaining failure: when the evidence packet was empty and the request asked for autonomous payment approval / irreversible bank transfers, the model invented LangGraph/CrewAI citations instead of refusing.
Conclusion:
The model can follow citation boundaries when source packets are present. The
next training data gap is refusal behavior for empty-evidence and high-risk
automation prompts.
## Qwen3 14B Refusal Smoke Adapter Evaluation
Artifact:
```text
qwen3_14b_orca_refusal_smoke/
```
Training data:
```text
data/training_sft_plus_grounded_refusals.jsonl
```
Added refusal data:
```text
data/refusal_sft_hard_negatives.jsonl
```
Result:
- Training completed on the RTX 3090 with the same fit-check profile: 512 tokens, LoRA rank 16.
- Adapter size: about 257 MB.
- Final metrics: `eval_loss=1.206`, `train_loss=1.510`, 42 total steps, 41 train / 3 validation examples.
- Unguarded grounded eval remained 11/12; the empty-evidence payment automation prompt still invented a citation.
- After adding a stricter source-packet runtime guard in `scripts/evaluate_adapter_outputs.py`, grounded eval passed 12/12.
Guarded report:
```text
evals/qwen3_14b_orca_refusal_guarded_eval_report.json
```
Guarded result:
- Overall deterministic pass rate: 12/12 = 100%.
- Source-packet citation discipline: 8/8.
- Hard negatives: 4/4.
Conclusion:
The current best local recipe is the refusal-tuned adapter plus a source-packet
runtime guard. Training alone improved refusal behavior but did not fully close
the empty-evidence/high-risk payment failure.
## Gate
Do not publish a trained checkpoint until:
- aggregate eval score is at least 3.2 / 4.0
- no critical hallucination appears in the held-out eval set
- model card documents training data and limitations
## GGUF Smoke Validation
Local artifact:
```text
release/gguf/orca6-qwen3-14b-refusal-q8_0.gguf
```
Validation on 2026-06-24 used the llama.cpp `b9784` Ubuntu x64 CPU binary. The
GGUF loaded successfully and generated a conservative answer for an
empty-evidence, high-risk payment automation prompt. The response recommended
human review/manual approval rather than autonomous payment execution.
Recorded throughput:
```text
Prompt: 36.1 t/s
Generation: 3.6 t/s
```
## Release-Candidate Evaluation Expansion
The v0.1-rc1 release gate now has a reproducible 50-prompt evaluation seed built
from held-out model prompts, DPO seed prompts, and retrieval smoke queries:
```bash
.venv/bin/python scripts/build_release_eval_set.py \
--output evals/orca_release_eval_prompts.jsonl \
--limit 50
```
Grounded source-packet prompts can be built from that seed with:
```bash
.venv/bin/python scripts/build_grounded_eval_prompts.py \
--prompts evals/orca_release_eval_prompts.jsonl \
--output evals/orca_release_grounded_eval_prompts.jsonl \
--include-hard-negatives
```
Release-candidate grounded eval artifacts:
```text
evals/orca_release_eval_prompts.jsonl
evals/orca_release_grounded_eval_prompts.jsonl
evals/qwen3_14b_orca_refusal_release_grounded_outputs.jsonl
evals/qwen3_14b_orca_refusal_release_grounded_report.json
```
Result on 2026-06-25:
- Expanded grounded prompt set: 54 prompts total.
- Source-packet prompts: 50/50 passed.
- Hard negatives: 4/4 passed.
- Overall deterministic pass rate: 54/54 = 100%.
Conclusion:
The v0.1-rc1 release candidate now has a broader deterministic groundedness
gate. The clean result depends on the refusal-tuned adapter plus the runtime
source-packet guard; the guard prevents source IDs from being cited when they
are absent from retrieved evidence.