Files
ModelHub XC ab0827d9ec 初始化项目,由ModelHub XC社区提供模型
Model: RehanaHasin/mistral-7b-instruct-v0.3-adjuvant-extractor
Source: Original Platform
2026-08-07 08:47:17 +08:00

246 lines
6.9 KiB
Markdown

---
license: apache-2.0
language:
- en
library_name: transformers
pipeline_tag: text-generation
tags:
- biomedical
- infectious-disease
- vaccine-adjuvant
- information-extraction
- evidence-grounded
base_model: mistralai/Mistral-7B-Instruct-v0.3
---
# mistral-7b-instruct-v0.3-adjuvant-extractor
This model is a task-specific fine-tuned version of **Mistral 7B Instruct v0.3** for extracting **vaccine adjuvant concepts** and associated **evidence snippets** from infectious disease biomedical abstracts.
## Model Summary
- **Model name:** `mistral-7b-instruct-v0.3-adjuvant-extractor`
- **Base model:** `mistralai/Mistral-7B-Instruct-v0.3`
- **Fine-tuning method:** LoRA adapter training, merged into full model weights
- **Primary task:** Evidence-linked adjuvant extraction from title+abstract text
## Prompt Used for Inference
### System prompt
```text
You are a biomedical information extraction assistant.
```
### User instruction template
```text
Extract infectious-disease adjuvants from the text and provide evidence snippets.
Return ONLY valid JSON in this format:
[{"adjuvant": "<string>", "evidence": "<string>"}, ...]
Do not include any extra keys or explanation.
```
### Input format
```text
Title: <paper title>
Abstract: <paper abstract>
```
The model receives the user instruction template followed by the title/abstract text.
## Actual Output Format Target
The model is prompted to return a JSON array of objects with exactly two keys:
```json
[
{
"adjuvant": "<string>",
"evidence": "<string>"
}
]
```
Expected behavior:
- Return a JSON array (can be empty: `[]`).
- Each object must contain:
- `adjuvant`: normalized or near-normalized adjuvant name
- `evidence`: supporting text snippet from the same input abstract
- No extra keys and no explanatory text outside JSON.
## Input/Output Example
### Example Input
```text
Title: Intranasal vaccination study using alum and MPLA adjuvants in a murine influenza model.
Abstract: Mice immunized with antigen formulated with alum showed increased IgG titers. A separate group receiving MPLA-adjuvanted vaccine demonstrated stronger IFN-gamma responses and reduced viral load after challenge.
```
### Expected Output
```json
[
{
"adjuvant": "alum",
"evidence": "Mice immunized with antigen formulated with alum showed increased IgG titers."
},
{
"adjuvant": "MPLA",
"evidence": "A separate group receiving MPLA-adjuvanted vaccine demonstrated stronger IFN-gamma responses and reduced viral load after challenge."
}
]
```
### Notes on Output Validity
- Output must be valid JSON.
- Output must be a JSON array (use `[]` if no supported adjuvant is found).
- Each item should include only `adjuvant` and `evidence`.
- Evidence text should come from the provided input abstract.
## Working Inference Code (Validated)
```python
import torch
import json
from transformers import AutoTokenizer, AutoModelForCausalLM
repo_id = "RehanaHasin/mistral-7b-instruct-v0.3-adjuvant-extractor"
SYS_PROMPT = "You are a biomedical information extraction assistant."
PROMPT_INSTRUCTION = (
"Extract infectious-disease adjuvants from the text and provide evidence snippets.\n"
"Return ONLY valid JSON in this format:\n"
"[{\"adjuvant\": \"<string>\", \"evidence\": \"<string>\"}, ...]\n"
"Do not include any extra keys or explanation."
)
title = "Protective immune response against Streptococcus pyogenes in mice after intranasal vaccination with the fibronectin-binding protein SfbI."
abstract = (
"Despite the significant impact on human health caused by Streptococcus pyogenes, "
"there is currently no vaccine available. Intranasal immunization of mice with either "
"SfbI alone or coupled to cholera toxin B subunit (CTB) triggered efficient SfbI-specific responses."
)
user_input = f"{PROMPT_INSTRUCTION}\n\nTitle: {title}\nAbstract: {abstract}"
tokenizer = AutoTokenizer.from_pretrained(repo_id, use_fast=True)
model = AutoModelForCausalLM.from_pretrained(
repo_id,
dtype=torch.float16,
device_map="auto",
)
model.eval()
chat = tokenizer.apply_chat_template(
[
{"role": "system", "content": SYS_PROMPT},
{"role": "user", "content": user_input},
],
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(chat, return_tensors="pt", truncation=True, max_length=1024)
inputs = {k: v.to(model.get_input_embeddings().weight.device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=200,
do_sample=False,
pad_token_id=tokenizer.eos_token_id,
)
prediction = tokenizer.decode(
outputs[0][inputs["input_ids"].shape[1]:],
skip_special_tokens=True
).strip()
print(json.dumps(json.loads(prediction), indent=2, ensure_ascii=False))
```
## Intended Use
This model is intended for research workflows in biomedical literature mining, especially:
- infectious disease vaccine literature curation
- vaccine adjuvant concept extraction
- evidence-linked information extraction for downstream manual review
This model is not intended for clinical decision-making.
## Training Data and Split Context
The model was trained on a curated infectious disease adjuvant corpus derived from VIOLIN ecosystem resources.
- Corpus size used in workflow: 298 abstracts
- Fixed split framework used across models:
- 256 train
- 13 validation
- 29 test
## Training Configuration (Fixed Manuscript Setting)
- LoRA rank (`r`): 8
- Learning rate: `2e-4`
- Epochs: `5`
- Quantization during fine-tuning: 4-bit NF4 with double quantization
- Compute dtype: float16
- Per-device batch size and gradient accumulation were configured for stable updates across model families.
## Usage
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
repo_id = "RehanaHasin/mistral-7b-instruct-v0.3-adjuvant-extractor"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(
repo_id,
torch_dtype=torch.float16,
device_map="auto",
)
```
## Prompting Recommendation
Use prompts that explicitly request structured JSON output containing only:
- `adjuvant`
- `evidence`
and restrict extra commentary to reduce parsing errors.
## Limitations
- Evaluated on a focused infectious-disease adjuvant corpus; broader-domain generalization is not guaranteed.
- Performance depends on abstract quality and terminology variation.
- Structured output may still require post-processing and manual validation.
## Ethical and Safety Notes
- Outputs can contain extraction errors or unsupported predictions.
- Human review is required before downstream knowledge integration.
- Not for diagnosis, treatment, or direct patient-care decisions.
## Reproducibility Resources
Code, notebooks, and workflow details are available at:
https://github.com/hurlab/Infectious-Disease-Adjuvant-LLM-Fine-tuning
## Citation
If you use this model, please cite the associated manuscript and project repository.
## Contact
For questions, please contact hasin.rehana@und.edu.