Files
chatml-llama3.1-8b-lora-merged/README.md

252 lines
10 KiB
Markdown
Raw Normal View History

---
library_name: transformers
license: llama3.1
base_model: kosiasuzu/chatml-agent-llama-3.1-8b-init
tags:
- llama-3.1
- chatml
- lora
- agent
- tool-use
- agenticml-baseline
pipeline_tag: text-generation
---
# kosiasuzu/chatml-llama3.1-8b-lora-merged
ChatML baseline for the AgenticML agent-format study: **Llama 3.1 8B** with instruct-style ChatML templates and tool-call tokens, LoRA-fine-tuned on the same agent-trajectory corpus as the AgenticML-format model, then **merged** into full weights for single-checkpoint inference.
This checkpoint is the **ChatML+tools comparison arm**—same data and training recipe as `kosiasuzu/agenticml-llama3.1-8b-lora-merged`, differing only in serialization (HF `messages` + `apply_chat_template` vs AgenticML frames).
## Model Details
### Model Description
- **Model ID:** `kosiasuzu/chatml-llama3.1-8b-lora-merged`
- **Developed by:** AgenticML project / kosiasuzu
- **Model type:** Causal language model (Llama 3.1 8B), **PEFT LoRA merged** into dense weights
- **Language(s):** English (primary)
- **License:** [Llama 3.1 Community License](https://llama.meta.com/llama3_1/license/) (inherits from Meta Llama 3.1 base; confirm before commercial use)
- **Finetuned from:** [`kosiasuzu/chatml-agent-llama-3.1-8b-init`](https://huggingface.co/kosiasuzu/chatml-agent-llama-3.1-8b-init)
**Init base (`chatml-agent-llama-3.1-8b-init`):** `meta-llama/Llama-3.1-8B` weights + `meta-llama/Llama-3.1-8B-Instruct` tokenizer; ChatML special-token rows in `embed_tokens` / `lm_head` mean-pooled from seed words (`agenticml init-embeddings --format chatml`).
**Training target:** supervised next-token prediction on the **`messages`** column (ChatML conversation derived from AgenticML trajectories via `bridge.frames_to_messages` during `data-clean-push`). Labels are masked to **assistant** spans only.
### Model Sources
- **AgenticML repository:** https://github.com/kosiasuzu/agenticml
- **Dataset:** [`kosiasuzu/agenticml-agent-trajectory-dataset`](https://huggingface.co/datasets/kosiasuzu/agenticml-agent-trajectory-dataset)
- **Paired AgenticML merged model:** [`kosiasuzu/agenticml-llama3.1-8b-lora-merged`](https://huggingface.co/kosiasuzu/agenticml-llama3.1-8b-lora-merged)
## Uses
### Direct Use
- Continue multi-turn **ChatML** agent trajectories: system/user/tool messages, assistant generations with `<|eot_id|>` / tool payloads.
- Intended for **research comparison** against AgenticML-format models on the same tasks—not a general-purpose chat product.
### Downstream Use
- Load with `transformers` + `apply_chat_template` (instruct tokenizer bundled with this checkpoint). Do not use the base `meta-llama/Llama-3.1-8B` tokenizer — it has no `chat_template`.
- Run format-validity or task benchmarks with `agenticml eval-benchmarks --suite format_validity --format chatml`.
### Out-of-Scope Use
- Not validated for open-ended consumer chat, code execution without sandboxing, or high-stakes decisions (finance, health, legal).
- Do not assume parity with official Meta Instruct checkpoints; this is a **project-specific** init + LoRA on synthetic/agent SFT data.
- Tool calls in training data are **simulated**; real APIs need your own schemas and safety layers.
## Bias, Risks, and Limitations
- Trained largely on **synthetic** agent trajectories; domain mix is fixed in the generation prompt (coding, finance, travel, etc.) and may not match production traffic.
- Same **biases and safety gaps** as Llama 3.1 base and the synthetic generator.
- ChatML structural metrics (stop tokens, tool JSON shape) do not guarantee **correct** tool choice or factual answers.
- This repo is a **single merged checkpoint** for inference and eval (no separate adapter load path in the AgenticML CLI).
### Recommendations
- Use with explicit tool schemas and runtime validation.
- Compare against `kosiasuzu/agenticml-llama3.1-8b-lora-merged` on identical eval splits for fair format A/B tests.
- Report **domain-stratified** metrics (dataset includes a `domain` field).
## Same task, AgenticML format (side-by-side)
Paired checkpoint: [`kosiasuzu/agenticml-llama3.1-8b-lora-merged`](https://huggingface.co/kosiasuzu/agenticml-llama3.1-8b-lora-merged). Same dataset; ChatML uses `messages`, AgenticML uses `frames`.
**Task:** read `main.py`, return line count.
| ChatML (this model) | AgenticML (paired) |
|---------------------|-------------------|
| system + tools block in one message | separate `<\|goal\|>` + `<\|obs\|>` frames |
| user mission message | `<\|mission\|>` frame |
| `<\|python_tag\|>{"name":"read_file",...}<\|eom_id\|>` | `<\|action\|>{"tool":"read_file",...}<\|end\|>` |
| tool role with JSON content | `<\|result\|>` frame |
| plain assistant answer text | `<\|action\|>{"tool":"answer","text":"..."}<\|end\|>` |
Conversion: [`bridge.py`](../src/agenticml/bridge.py). Full pipeline: [`recipe.md`](../recipe.md).
## How to Get Started with the Model
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "kosiasuzu/chatml-llama3.1-8b-lora-merged"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model.eval()
messages = [
{"role": "system", "content": "You are a helpful assistant with tools."},
{"role": "user", "content": "What is 17 * 23?"},
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(
**inputs,
max_new_tokens=512,
do_sample=False,
pad_token_id=tokenizer.eos_token_id,
)
text = tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=False)
print(text)
```
**AgenticML CLI eval** (requires `pip install -e ".[eval]"` from the AgenticML repo):
```bash
agenticml eval-benchmarks --suite format_validity \
--format chatml \
--model kosiasuzu/chatml-llama3.1-8b-lora-merged \
--output-dir results/benchmarks/format_validity
```
## Training Details
### Training Data
- **Dataset:** `kosiasuzu/agenticml-agent-trajectory-dataset`
- **Splits:** `train` / `eval` (stratified by `domain` at dataset build time)
- **Field used:** `messages` (JSON string per row: ChatML message list from AgenticML `frames`)
- **Rows without valid `messages` are dropped** during tokenization
### Training Procedure
**Command (representative):**
```bash
torchrun --standalone --nproc_per_node=2 -m agenticml.cli.commands.train_on_format --format chatml \
--model-id kosiasuzu/chatml-agent-llama-3.1-8b-init \
--dataset kosiasuzu/agenticml-agent-trajectory-dataset \
--hub-repo-id kosiasuzu/chatml-llama3.1-8b-lora-merged
```
**Tokenizer:** training loads the instruct tokenizer from the ChatML init checkpoint (`init-embeddings --format chatml`). Hub push stores the tokenizer on this merged repo alongside the weights.
#### Preprocessing
- Instruct tokenizer: `tokenizer.apply_chat_template(..., return_assistant_tokens_mask=True)` when supported; else assistant-span masking via token-id subsequence search.
- Truncate to **`max_length=2048`** (CLI default for chatml train).
#### Training Hyperparameters
| Setting | Value |
|--------|--------|
| **Regime** | bf16, gradient checkpointing |
| **LoRA rank** | r=32, alpha=64, dropout=0.05 |
| **LoRA targets** | q/k/v/o_proj, gate/up/down_proj, **lm_head** |
| **Epochs** | 2 |
| **LR** | 2e-4, cosine, warmup 3% |
| **Batch** | per-device 1 × grad accum 32 (effective batch scales with world size) |
| **Max grad norm** | 1.0 |
| **Weight decay** | 0.1 |
| **Seed** | 42 |
| **Multi-GPU** | FSDP full_shard + auto_wrap (when using `torchrun`) |
| **Logging** | Weights & Biases (`project=agenticml-agent`, run name configurable) |
#### Speeds, Sizes, Times
Fill from your W&B / cluster logs (GPU type, world size, wall-clock, peak VRAM).
## Evaluation
### Testing Data, Factors & Metrics
#### Testing Data
- **Held-out split:** `eval` on `kosiasuzu/agenticml-agent-trajectory-dataset`
- **Same examples** as AgenticML eval (paired `frames` / `messages` columns)
#### Factors
- **Domain** (`coding`, `finance`, `travel`, …) — stratification in dataset builder
#### Metrics
- **Format validity** (AgenticML harness, `--format chatml`): parseable stop structure, tool-call JSON when present, non-empty assistant content
- **Rates:** `parse_rate`, `structural_valid_rate` per domain (see eval JSON summary)
### Results
Upstream benchmark matrix (subset runs, seed 42). Full table: [`docs/benchmark_results.md`](../docs/benchmark_results.md). Regenerate: `agenticml eval-aggregate-results`.
| Suite | n | Primary | Secondary | avg_tokens | avg_wall_sec |
|-------|---|---------|-----------|------------|--------------|
| bfcl | 5 | accuracy 60% | avg_retry 1.6 | 20,139 | 192s |
| toolbench | 2 | pass 0% | avg_steps 12 | 40,350 | 848s |
| format_validity | — | not run | — | — | — |
| swe (lite) | — | not run | — | — | — |
Paired AgenticML model on the same suites: [`agenticml-llama3.1-8b-lora-merged.md`](agenticml-llama3.1-8b-lora-merged.md).
```bash
agenticml eval-benchmarks --suite <bfcl|toolbench|swe|format_validity> --format chatml --model kosiasuzu/chatml-llama3.1-8b-lora-merged
agenticml eval-run-all --dry-run
agenticml eval-aggregate-results
```
## Technical Specifications
### Model Architecture and Objective
- **Architecture:** Llama 3.1 8B causal LM
- **Objective:** causal LM fine-tuning with assistant-only labels (ChatML template)
### Compute Infrastructure
#### Hardware
Multi-GPU training via `torchrun` (typical: 2× GPU with FSDP); document your setup when publishing.
#### Software
- Python ≥3.10, `transformers` ≥4.43, `peft`, `datasets`, `torch`
- Training entrypoint: `agenticml train-on-format --format chatml` / `python -m agenticml.cli.commands.train_on_format`
## Citation
If you use this model in research, cite the AgenticML project repository and acknowledge Meta Llama 3.1.
**APA:** [Author]. (Year). AgenticML: Agent-native serialization for language agents. GitHub repository. Baseline model: kosiasuzu/chatml-llama3.1-8b-lora-merged.
**BibTeX:** Add when a formal report or arXiv entry is available.
## Model Card Contact
- Hugging Face: [kosiasuzu](https://huggingface.co/kosiasuzu)
- Issues: AgenticML repository issue tracker