|
|
--- |
|
|
license: apache-2.0 |
|
|
language: |
|
|
- en |
|
|
tags: |
|
|
- memory-routing |
|
|
- marketing |
|
|
- classification |
|
|
- llama |
|
|
- lora |
|
|
- tinker |
|
|
base_model: meta-llama/Llama-3.1-8B |
|
|
datasets: |
|
|
- muratcankoylan/memory-routing-marketing |
|
|
metrics: |
|
|
- f1 |
|
|
- accuracy |
|
|
pipeline_tag: text-classification |
|
|
--- |
|
|
|
|
|
# Memory Routing Agent (Llama-8B + LoRA) |
|
|
|
|
|
A specialized 8B parameter model that **outperforms 104B models** on marketing conversation classification. |
|
|
|
|
|
## Key Results |
|
|
|
|
|
| Model | Size | Avg F1 | Exact Match | |
|
|
|-------|------|--------|-------------| |
|
|
| **This Model** | 8B | **0.68** | **60%** | |
|
|
| Cohere Command-R-Plus | 104B | 0.61 | 26% | |
|
|
|
|
|
**11.1% higher F1** than the 104B teacher model that generated its training data. |
|
|
|
|
|
## Model Description |
|
|
|
|
|
The Memory Routing Agent classifies marketing conversations into 13 memory categories: |
|
|
|
|
|
### Company Categories |
|
|
- `company.brand_core` - Voice, values, positioning |
|
|
- `company.strategic_signatures` - Decision frameworks |
|
|
- `company.knowledge_artifacts` - Docs, style guides |
|
|
- `company.business_priorities` - Quarterly goals |
|
|
- `company.tools_config` - Integrations, APIs |
|
|
- `company.performance_context` - Campaign metrics |
|
|
|
|
|
### User Categories |
|
|
- `user.communication_style` - Tone, format preferences |
|
|
- `user.strategic_approach` - Personal priorities |
|
|
- `user.role_context` - Title, scope |
|
|
- `user.workflow_patterns` - Review cadence |
|
|
- `user.session_history` - Immediate context |
|
|
- `user.interaction_preferences` - Coaching style |
|
|
|
|
|
### Special |
|
|
- `none` - Transactional or irrelevant content |
|
|
|
|
|
## Training |
|
|
|
|
|
- **Base Model**: meta-llama/Llama-3.1-8B |
|
|
- **Method**: LoRA (rank 32) + SFT + RL |
|
|
- **Platform**: Tinker (Thinking Machines) |
|
|
- **Dataset**: 2,001 synthetic marketing conversations |
|
|
- **Teacher**: Cohere Command-R-Plus (104B) |
|
|
|
|
|
### Training Pipeline |
|
|
|
|
|
1. **SFT Phase**: 100 steps, batch size 128, cross-entropy loss |
|
|
2. **RL Phase**: 12 iterations, importance sampling policy gradient |
|
|
3. **Reward**: 0.6×F1 + 0.2×temporal + 0.1×parity + 0.1×efficiency |
|
|
|
|
|
## Usage |
|
|
|
|
|
```python |
|
|
# Note: This model was trained on Tinker platform |
|
|
# The checkpoint is: tinker://4f4bae1f-5a95-5f53-a55a-a14f2872825c:train:0/sampler_weights/rl_iter_012 |
|
|
|
|
|
import tinker |
|
|
from tinker import types |
|
|
from tinker_cookbook import renderers |
|
|
from tinker_cookbook.tokenizer_utils import get_tokenizer |
|
|
|
|
|
service_client = tinker.ServiceClient() |
|
|
checkpoint = "tinker://4f4bae1f-5a95-5f53-a55a-a14f2872825c:train:0/sampler_weights/rl_iter_012" |
|
|
sampling_client = service_client.create_sampling_client(model_path=checkpoint) |
|
|
|
|
|
tokenizer = get_tokenizer("meta-llama/Llama-3.1-8B") |
|
|
renderer = renderers.get_renderer(name="llama3", tokenizer=tokenizer) |
|
|
|
|
|
conversation = """ |
|
|
USER: Our brand voice is professional but approachable. |
|
|
ASSISTANT: So authoritative content with a conversational tone? |
|
|
USER: Exactly. We never use jargon without explaining it first. |
|
|
""" |
|
|
|
|
|
messages = [ |
|
|
{"role": "system", "content": "You route marketing conversations into structured memory categories..."}, |
|
|
{"role": "user", "content": f"Analyze this conversation:\n\n{conversation}"} |
|
|
] |
|
|
|
|
|
prompt = renderer.build_generation_prompt(messages) |
|
|
params = types.SamplingParams(max_tokens=100, temperature=0.1, stop=renderer.get_stop_sequences()) |
|
|
result = sampling_client.sample(prompt=prompt, sampling_params=params, num_samples=1).result() |
|
|
|
|
|
response, _ = renderer.parse_response(result.sequences[0].tokens) |
|
|
print(f"Categories: {response['content']}") |
|
|
# Output: company.brand_core |
|
|
``` |
|
|
|
|
|
## Benchmark |
|
|
|
|
|
50 challenging marketing scenarios across 7 domains: |
|
|
|
|
|
| Difficulty | Our Model | Cohere (104B) | |
|
|
|------------|-----------|---------------| |
|
|
| Easy | 0.86 F1 | 0.48 F1 | |
|
|
| Medium | 0.65 F1 | 0.64 F1 | |
|
|
| Hard | 0.50 F1 | 0.72 F1 | |
|
|
|
|
|
## Limitations |
|
|
|
|
|
- Under-predicts multi-label scenarios |
|
|
- Sometimes confuses company vs user categories |
|
|
- Marketing-specific; not tested on other domains |
|
|
|
|
|
## Citation |
|
|
|
|
|
```bibtex |
|
|
@misc{memory-routing-agent-2024, |
|
|
title={Memory Routing Agent: Prompt Distillation for Marketing AI}, |
|
|
author={Muratcan Koylan}, |
|
|
year={2024}, |
|
|
howpublished={\url{https://github.com/muratcankoylan/memory-routing-agent}}, |
|
|
} |
|
|
``` |
|
|
|
|
|
## Links |
|
|
|
|
|
- **GitHub**: [muratcankoylan/memory-routing-agent](https://github.com/muratcankoylan/memory-routing-agent) |
|
|
- **Training Platform**: [Tinker by Thinking Machines](https://thinkingmachines.ai/) |
|
|
|
|
|
|