Разработка локального инструмента генерации персонализированных писем на основе кратких инструкций от пользователя. Цель — сэкономить время на написание писем, сохраняя стиль общения пользователя. Все данные являются чувствительными, передача за пределы локальной системы запрещена.
Вход: Инструкция для написания письма
Выход: Письмо в стиле пользователя
- MAUVE — оценка сходства стиля
- BLEU — измерение качества генерации текста
- 10% обучающей выборки используется как validation set
- Модель: Meta-Llama-3-8B-Instruct
- Метод: Finetune с использованием QLoRA (4-bit)
- Данные: персональный архив писем одного пользователя
Формат датасета:
- Инструкция (саммари письма)
- Ответ — полный текст письма
- Саммари генерируются автоматически базовой LLM
Установка через conda окружение и poetry.
conda create --name=email_assistant python=3.11.7
conda activate email_assistant
poetry install- GPU: NVIDIA A100 (40GB)
- GPU RAM:
- Обучение: ~15 GB (с QLoRA)
- Инференс: ~9 GB
Для запуска MLflow сервера для логирования:
mlflow server --host 127.0.0.1 --port 8090Изменить адрес можно в config/config.yaml.
Для запуска обучения:
cd src/email_assistant/
CUDA_VISIBLE_DEVICES=$DEVICE poetry run python train.py$DEVICE - номер устройства для запуска модели.
- Загрузка архива писем (data.py)
- Генерация инструкций (summarize.py)
- Деление на train/test (split_data.py)
- Finetune модели с использованием LoRA (адаптер сохраняется отдельно)
Финальная модель состоит из:
- Базовой LLM (Meta-Llama-3-8B-Instruct)
- Адаптера LoRA (adapter_model.safetensors)
Полная модель не сохраняется, только адаптер.
CUDA_VISIBLE_DEVICES=$DEVICE poetry run python infer.py- Базовая модель объединяется с адаптером
- Вход:
.txtфайл с инструкциями (по одной на строку) или ввод вручную через CLI - Выход:
.csvфайл с двумя столбцами:instructiongenerated_email