115 lines
4.1 KiB
Markdown
115 lines
4.1 KiB
Markdown
|
|
# Adriana James Marketing Assistant AI
|
||
|
|
|
||
|
|
This project fine-tunes a language model to generate marketing content in the voice and style of Adriana James, based on her book content, past campaigns, and style guidelines.
|
||
|
|
|
||
|
|
## Project Structure
|
||
|
|
|
||
|
|
- `generate_dataset.py`: Script to generate fine-tuning datasets from book content, past campaigns, and style guidelines
|
||
|
|
- `finetune_model.py`: Script to fine-tune the model using the generated datasets
|
||
|
|
- `data/`: Directory containing source data
|
||
|
|
- `book.pdf`: Adriana James' book content
|
||
|
|
- `past_campaigns/`: Directory containing past marketing campaigns
|
||
|
|
- `style_guidelines/`: Directory containing brand style guidelines
|
||
|
|
- `datasets/`: Directory containing generated fine-tuning datasets
|
||
|
|
- `adriana_model/`: Directory containing the fine-tuned model
|
||
|
|
|
||
|
|
## Setup
|
||
|
|
|
||
|
|
1. Install the required dependencies:
|
||
|
|
```
|
||
|
|
pip install -r requirements.txt
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Generate the fine-tuning datasets:
|
||
|
|
```
|
||
|
|
python generate_dataset.py
|
||
|
|
```
|
||
|
|
This will create the following datasets in the `datasets/` directory:
|
||
|
|
- `stage1_book_content.json`: Dataset for fine-tuning on book content
|
||
|
|
- `stage2_marketing_content.json`: Dataset for fine-tuning on marketing content
|
||
|
|
- `stage3_style_alignment.json`: Dataset for fine-tuning on style alignment
|
||
|
|
- `combined_dataset.json`: Combined dataset for all stages
|
||
|
|
|
||
|
|
## Fine-tuning the Model
|
||
|
|
|
||
|
|
The fine-tuning process follows a progressive approach with three stages:
|
||
|
|
|
||
|
|
1. **Stage 1**: Fine-tune on book content to establish Adriana James' core voice
|
||
|
|
2. **Stage 2**: Fine-tune on marketing content to adapt to marketing formats
|
||
|
|
3. **Stage 3**: Fine-tune on style alignment to ensure style consistency
|
||
|
|
|
||
|
|
### Running the Fine-tuning Script
|
||
|
|
|
||
|
|
To run the complete progressive fine-tuning process:
|
||
|
|
|
||
|
|
```
|
||
|
|
python finetune_model.py --stage all
|
||
|
|
```
|
||
|
|
|
||
|
|
To run a specific stage:
|
||
|
|
|
||
|
|
```
|
||
|
|
python finetune_model.py --stage 1 # Fine-tune on book content only
|
||
|
|
python finetune_model.py --stage 2 # Fine-tune on marketing content only
|
||
|
|
python finetune_model.py --stage 3 # Fine-tune on style alignment only
|
||
|
|
```
|
||
|
|
|
||
|
|
### Command-line Arguments
|
||
|
|
|
||
|
|
- `--model_name`: Base model to fine-tune (default: "mistralai/Mistral-7B-v0.1")
|
||
|
|
- `--output_dir`: Directory to save the fine-tuned model (default: "adriana_model")
|
||
|
|
- `--stage`: Fine-tuning stage (choices: "1", "2", "3", "all", default: "all")
|
||
|
|
- `--num_epochs`: Number of epochs for each stage (default: 3)
|
||
|
|
- `--seed`: Random seed for reproducibility (default: 42)
|
||
|
|
|
||
|
|
## Model Selection
|
||
|
|
|
||
|
|
The default base model is Mistral-7B-v0.1, which is a good balance between performance and resource requirements. For better results, you can use larger models like:
|
||
|
|
|
||
|
|
- `meta-llama/Llama-2-13b-hf` (requires access)
|
||
|
|
- `tiiuae/falcon-40b` (larger model with good performance)
|
||
|
|
- `google/flan-t5-xxl` (good for instruction following)
|
||
|
|
|
||
|
|
To use a different model, specify it with the `--model_name` argument:
|
||
|
|
|
||
|
|
```
|
||
|
|
python finetune_model.py --model_name tiiuae/falcon-40b
|
||
|
|
```
|
||
|
|
|
||
|
|
## Hardware Requirements
|
||
|
|
|
||
|
|
Fine-tuning large language models requires significant computational resources:
|
||
|
|
|
||
|
|
- **Minimum**: 16GB GPU RAM (for 7B parameter models)
|
||
|
|
- **Recommended**: 24GB+ GPU RAM (for 13B+ parameter models)
|
||
|
|
- **Optimal**: Multiple GPUs or a high-end GPU with 40GB+ RAM
|
||
|
|
|
||
|
|
For models larger than 7B parameters, you may need to use techniques like:
|
||
|
|
- 8-bit quantization (already enabled in the script)
|
||
|
|
- Gradient checkpointing
|
||
|
|
- LoRA or QLoRA fine-tuning
|
||
|
|
|
||
|
|
## Using the Fine-tuned Model
|
||
|
|
|
||
|
|
After fine-tuning, the model will be saved in the `adriana_model/final` directory. You can load and use it with the Transformers library:
|
||
|
|
|
||
|
|
```python
|
||
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
|
|
||
|
|
# Load the fine-tuned model
|
||
|
|
model_path = "adriana_model/final"
|
||
|
|
tokenizer = AutoTokenizer.from_pretrained(model_path)
|
||
|
|
model = AutoModelForCausalLM.from_pretrained(model_path)
|
||
|
|
|
||
|
|
# Generate content
|
||
|
|
prompt = "Write a marketing email for a professional development workshop."
|
||
|
|
inputs = tokenizer(prompt, return_tensors="pt")
|
||
|
|
outputs = model.generate(**inputs, max_length=200, num_return_sequences=1)
|
||
|
|
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
||
|
|
print(generated_text)
|
||
|
|
```
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
This project is licensed under the MIT License - see the LICENSE file for details.
|