casehold-lora / README.md
epochzero-0's picture
Model card: drop the demo link
b2a5846 verified
|
Raw History Blame Contribute Delete
4.14 kB
metadata
license: apache-2.0
base_model: Qwen/Qwen2.5-0.5B
datasets:
  - coastalcph/lex_glue
language:
  - en
tags:
  - lora
  - legal
  - multiple-choice
  - casehold
model-index:
  - name: casehold-lora
    results:
      - task:
          type: multiple-choice
          name: Multiple choice QA
        dataset:
          name: CaseHOLD (LexGLUE)
          type: coastalcph/lex_glue
          config: case_hold
          split: test
        metrics:
          - type: accuracy
            value: 85.92
            name: Accuracy

casehold-lora

A LoRA adapter for Qwen/Qwen2.5-0.5B, trained on CaseHOLD: given a passage from a US court opinion with one cited holding removed, pick that holding from five candidates.

85.92% on the LexGLUE test split (3,093 of 3,600).

Code, every number with the command that printed it, and the decisions behind the build: github.com/epochzero-0/casehold-lora.

Results

Model CaseHOLD test Source
TF-IDF + SVM 22.4 LexGLUE
Qwen2.5-0.5B, zero-shot 38.4 (validation) this work
BERT 70.8 LexGLUE
RoBERTa-large 74.4 LexGLUE
Legal-BERT 75.3 LexGLUE
CaseLaw-BERT 75.4 LexGLUE
Qwen2.5-0.5B + this adapter 85.9 this work

Validation accuracy by training size: 75.28% at 5,000 questions, 80.33% at 15,000, 87.05% at 45,000.

One seed and no hyperparameter tuning, so there is no error bar. The model was chosen on validation and scored on test once. Qwen2.5-0.5B (494M parameters) is larger than BERT and Legal-BERT (about 110M).

Training

  • LoRA written by hand (lora.py, about 30 lines), r = 16, alpha = 32, on q/k/v/o of all 24 layers: 2,162,688 trained parameters, 0.436% of the model. Checked against peft with the same weights: the logits match with a max difference of 0.0.
  • One epoch over the 45,000 train questions, plain PyTorch loop, AdamW, lr 2e-4, 16 questions per step, bf16 autocast.
  • 62 minutes (1.04 GPU-hours) on an RTX 4050 Laptop GPU, peak 4.3 GiB of VRAM.

How it answers

One prompt per question: an instruction, the passage, the five holdings lettered A to E, then Answer:. The answer is whichever of the tokens A to E has the highest logit at the last position. Prompts over 640 tokens lose passage text from the left; the holdings are never cut.

Use

This is not a peft checkpoint. adapter.safetensors holds the A and B matrices, and lora.py in this repo wraps the base model with them.

import json, torch
from huggingface_hub import hf_hub_download
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "epochzero-0/casehold-lora"
for f in ("lora.py", "data.py"):
    hf_hub_download(repo, f, local_dir=".")
from data import encode, letter_ids
from lora import load_adapter

cfg = json.load(open(hf_hub_download(repo, "adapter_config.json")))
tok = AutoTokenizer.from_pretrained(cfg["base_model"])
model = AutoModelForCausalLM.from_pretrained(cfg["base_model"], dtype=torch.float32)
load_adapter(model, hf_hub_download(repo, "adapter.safetensors"), cfg["r"], cfg["alpha"]).eval()

question = {"context": "... (<HOLDING>) ...", "endings": ["holding that ...", "...", "...", "...", "..."]}
ids = torch.tensor([encode(question, tok, cfg["max_len"])])
with torch.no_grad():
    final = model.model(input_ids=ids, use_cache=False).last_hidden_state[0, -1]
    probs = model.lm_head(final)[letter_ids(tok)].softmax(-1)
print(dict(zip("ABCDE", probs.tolist())))

Limits

It picks among five given holdings and nothing else. It is trained on US case law only, it is not legal advice, and it has not been tested on holdings written in any other style.

Licences and citations

Adapter: Apache-2.0, as is Qwen2.5-0.5B. CaseHOLD was released by its authors under Apache-2.0; the LexGLUE copy is CC BY 4.0.

  • Zheng, Guha, Anderson, Henderson, Ho. When Does Pretraining Help? Assessing Self-Supervised Learning for Law and the CaseHOLD Dataset. ICAIL 2021. arXiv:2104.08671
  • Chalkidis et al. LexGLUE: A Benchmark Dataset for Legal Language Understanding in English. ACL 2022. arXiv:2110.00976