Files
soilfm-qwen2.5-14b-literatu…/README.md
ModelHub XC 47cbba5020 初始化项目,由ModelHub XC社区提供模型
Model: northenlab/soilfm-qwen2.5-14b-literature-cpt
Source: Original Platform
2026-06-14 15:56:02 +08:00

204 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
license: apache-2.0
base_model: Qwen/Qwen2.5-14B-Instruct
library_name: transformers
tags:
- soil-science
- soil-microbiome
- domain-adaptation
- continued-pretraining
- qlora
- qwen2
pipeline_tag: text-generation
language:
- en
model-index:
- name: soilfm-qwen2.5-14b-literature-cpt
results: []
---
# SoilFM Language Tower — Qwen2.5-14B Literature CPT
A domain-adapted large language model for **soil science and soil microbiology**, created by continued pretraining of [Qwen2.5-14B-Instruct](https://huggingface.co/Qwen/Qwen2.5-14B-Instruct) on 200,000 curated soil science text passages.
This model is the **Language Tower** component of [SoilFM2](https://github.com/northenlab), a multi-modal foundation model for soil microbiome analysis developed at Lawrence Berkeley National Laboratory.
## Model Details
| | |
|---|---|
| **Base model** | Qwen/Qwen2.5-14B-Instruct (14.2B parameters) |
| **Method** | Continued pretraining via QLoRA (4-bit NF4) |
| **Format** | Full merged model (LoRA weights merged into base) |
| **Precision** | BF16 |
| **Context length** | 32,768 tokens |
| **Size on disk** | ~28 GB |
| **LoRA adapter** | Also available at [northenlab/soilfm-qwen2.5-14b-qlora](https://huggingface.co/northenlab/soilfm-qwen2.5-14b-qlora) (263 MB) |
## Intended Uses
- Generating explanations of soil microbial processes, rhizosphere ecology, and plant-microbe interactions
- Providing domain-grounded context within the SoilFM2 multi-modal pipeline (prebiotic recommendation, substrate preference prediction)
- Serving as a soil-science-aware backbone for downstream fine-tuning or RAG systems
- Research and educational applications in soil microbiology
## Training Data
The training corpus was assembled from four sources of soil science domain knowledge, stratified-sampled to 200,000 training examples and 10,000 validation examples (seed = 42):
| Source | Description | Proportion | Train | Val |
|--------|-------------|:----------:|------:|----:|
| **PubMed Central** | Full-text soil microbiology papers (39,853 articles) | 55% | 110,000 | 5,500 |
| **Wikipedia** | Soil science articles | 20% | 40,000 | 2,000 |
| **USDA Soil Survey Manual** | Official USDA technical reference | 10% | 20,000 | 1,000 |
| **Wikipedia General Biology** | Broad biology context to prevent catastrophic forgetting | 15% | 30,000 | 1,500 |
| **Total** | | **100%** | **200,000** | **10,000** |
Text was chunked to 1,024 tokens with 100-token overlap. The full corpus contained 329M tokens across 388,563 chunks; the 200K stratified subsample was used for this training run.
### Preprocessing
- PubMed Central articles retrieved via BioC JSON API, cleaned of XML artifacts
- Soil Survey Manual cleaned of page headers, footers, and index content (57 of 435 chunks removed)
- All sources standardized to JSONL format with `text` and `source` fields
## Training Procedure
### Configuration
| Parameter | Value |
|-----------|-------|
| Quantization | 4-bit NF4 (BitsAndBytes, double quantization) |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0.05 |
| Rank-stabilized LoRA (rsLoRA) | Yes |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainable parameters | ~263M (1.85% of total) |
| Optimizer | PagedAdamW8bit |
| Learning rate | 2e-5 (cosine schedule, 10% warmup) |
| Effective batch size | 128 (micro-batch 2, gradient accumulation 64) |
| Max gradient norm | 1.0 |
| Weight decay | 0.01 |
| Precision | BF16 mixed precision |
| Flash Attention 2 | Enabled |
| Epochs | 1 |
| Total steps | 1,500 |
### Infrastructure
- **GPU**: NVIDIA A100 PCIe 80GB (RunPod)
- **Training time**: ~42 hours
- **Peak VRAM**: 54 GB (67% utilization)
### Training Script
A custom manual PyTorch training loop was used (rather than HuggingFace Trainer) for compatibility and control. The script is available in the project repository as `train_soilfm_cpt_MANUAL.py`.
## Results
### Validation Loss
| Step | Validation Loss |
|-----:|:---------------:|
| 500 | 1.7369 |
| 1,000 | 1.6281 |
| 1,500 | **1.6130** |
**Total improvement: 7.2%** over the course of training. Loss was still decreasing at the end of training with no signs of overfitting. Gradient norms remained stable in the 0.20.8 range throughout.
### Qualitative Evaluation
**Prompt:** *"The role of root exudates in shaping rhizosphere microbial communities involves"*
**Output:** The model produces coherent, technically accurate continuations using appropriate domain terminology (root exudates, rhizosphere, primary/secondary metabolites, phytohormones), demonstrating successful domain adaptation.
## Usage
### Direct Loading (Recommended)
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"northenlab/soilfm-qwen2.5-14b-literature-cpt",
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(
"northenlab/soilfm-qwen2.5-14b-literature-cpt"
)
prompt = "The role of mycorrhizal fungi in soil nutrient cycling"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
### With vLLM (Production)
```bash
python3 -m vllm.entrypoints.openai.api_server \
--model northenlab/soilfm-qwen2.5-14b-literature-cpt \
--host 0.0.0.0 --port 8001
```
### LoRA Adapter Only
If you prefer to load the adapter separately (e.g., for 4-bit inference):
```python
from transformers import AutoModelForCausalLM
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-14B-Instruct",
load_in_4bit=True,
device_map="auto",
)
model = PeftModel.from_pretrained(base, "northenlab/soilfm-qwen2.5-14b-qlora")
```
## Part of SoilFM2
This Language Tower works alongside other SoilFM2 components:
| Component | Description | HuggingFace |
|-----------|-------------|-------------|
| **Language Tower** (this model) | Domain-adapted LLM | [northenlab/soilfm-qwen2.5-14b-literature-cpt](https://huggingface.co/northenlab/soilfm-qwen2.5-14b-literature-cpt) |
| **Graph Tower** | Heterogeneous GNN on 2.39M-node knowledge graph | [northenlab/soilfm2-graph-tower-joint-v0.1](https://huggingface.co/northenlab/soilfm2-graph-tower-joint-v0.1) |
| **BSPR** | Bayesian substrate preference model (AUC 0.94) | — |
Together these components power a prebiotic recommendation pipeline that takes 16S microbiome profiles as input and suggests soil amendments to steer community function.
## Use Restrictions
This model is intended for **research and non-commercial use only**. The training corpus includes PubMed Central Open Access articles under various Creative Commons licenses, some of which may carry non-commercial (CC BY-NC) terms. Users should ensure their use complies with the underlying data licenses.
The base model (Qwen2.5-14B-Instruct) is released under the Apache 2.0 license.
## Limitations
- Trained for 1 epoch on a 200K subsample of the full 667K corpus; additional training may further improve performance
- Domain adaptation was evaluated primarily via validation loss and qualitative generation; systematic benchmarking on soil science Q&A tasks is ongoing
- The model inherits the base Qwen2.5-14B-Instruct capabilities and limitations
- Not intended for medical, agricultural, or regulatory decision-making without expert review
## Citation
```bibtex
@misc{soilfm-language-tower-2025,
title={SoilFM Language Tower: Domain Adaptation of Qwen2.5-14B for Soil Science},
author={Northen Lab, Lawrence Berkeley National Laboratory},
year={2025},
publisher={HuggingFace},
url={https://huggingface.co/northenlab/soilfm-qwen2.5-14b-literature-cpt},
note={Continued pretraining on 200K soil science literature examples via QLoRA}
}
```
## License
Apache 2.0 (inherited from the base Qwen2.5-14B-Instruct model). Training data includes PubMed Central Open Access articles under various CC licenses — see **Use Restrictions** above.