YAML Metadata Warning: The pipeline tag "text2text-generation" is not in the official list: text-classification, token-classification, table-question-answering, question-answering, zero-shot-classification, translation, summarization, feature-extraction, text-generation, fill-mask, sentence-similarity, text-to-speech, text-to-audio, automatic-speech-recognition, audio-to-audio, audio-classification, audio-text-to-text, voice-activity-detection, depth-estimation, image-classification, object-detection, image-segmentation, text-to-image, image-to-text, image-to-image, image-to-video, unconditional-image-generation, video-classification, reinforcement-learning, robotics, tabular-classification, tabular-regression, tabular-to-text, table-to-text, multiple-choice, text-ranking, text-retrieval, time-series-forecasting, text-to-video, image-text-to-text, visual-question-answering, document-question-answering, zero-shot-image-classification, graph-ml, mask-generation, zero-shot-object-detection, text-to-3d, image-to-3d, image-feature-extraction, video-text-to-text, keypoint-detection, visual-document-retrieval, any-to-any, video-to-video, other

ruT5 Customer Support Response Generator

Модель для автоматической генерации ответов на отзывы клиентов, основанная на ruT5-base.

📋 Описание

Эта модель fine-tuned на основе ai-forever/ruT5-base для задачи генерации ответов на отзывы покупателей интернет-магазинов. Модель обучена на датасете из ~2.5 миллионов пар "отзыв-ответ" и способна генерировать релевантные, вежливые и профессиональные ответы на русском языке.

🎯 Возможности

  • ✅ Генерация персонализированных ответов на отзывы
  • ✅ Поддержка различных типов отзывов (позитивные, негативные, нейтральные)
  • ✅ Адаптация тона под контекст отзыва
  • ✅ Работа с отзывами длиной до 500 символов

📊 Данные для обучения

  • Размер датасета: ~2,500,000 пар отзыв-ответ
  • Источник: отфильтрованные отзывы с маркетплейса
  • Препроцессинг:
    • Минимальная длина текста: 10 символов
    • Максимальная длина отзыва: 500 символов
    • Удалены пустые и некорректные записи

🏗️ Архитектура и обучение

Базовая модель

  • Модель: ai-forever/ruT5-base
  • Параметры: ~222M

Гиперпараметры обучения

Learning Rate: 1e-3
Optimizer: Adafactor
LR Scheduler: Cosine with warmup (10%)
Epochs: 3
Batch Size: 12
Gradient Accumulation: 2 steps
Label Smoothing: 0.1
Weight Decay: 0.01
Max Gradient Norm: 1.0

Оптимизации

  • ✅ Gradient Checkpointing
  • ✅ FP16 Mixed Precision Training
  • ✅ TF32 acceleration
  • ✅ Batch processing (150K samples per batch)
  • ✅ Early stopping (patience=3)

Конфигурация токенизации

  • Max input length: 128 tokens
  • Max target length: 128 tokens
  • Префикс входа: "Отзыв: "

🚀 Использование

Установка зависимостей

pip install transformers torch pandas

Базовый пример

from transformers import T5Tokenizer, T5ForConditionalGeneration

# Загрузка модели
model_path = "path/to/your/model"
tokenizer = T5Tokenizer.from_pretrained(model_path)
model = T5ForConditionalGeneration.from_pretrained(model_path)

# Генерация ответа
review = "Товар пришёл быстро, но упаковка была повреждена"
input_text = f"Отзыв: {review}"

input_ids = tokenizer(
    input_text,
    max_length=128,
    truncation=True,
    return_tensors="pt"
).input_ids

outputs = model.generate(
    input_ids,
    max_length=128,
    num_beams=5,
    early_stopping=True,
    temperature=0.7,
    top_p=0.9,
    no_repeat_ngram_size=3
)

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Ответ: {response}")

Продвинутый пример с параметрами генерации

def generate_response(review, temperature=0.7, top_p=0.9, num_beams=5):
    """
    Генерация ответа на отзыв
    
    Args:
        review: текст отзыва
        temperature: контроль креативности (0.1-1.0)
        top_p: nucleus sampling параметр
        num_beams: количество лучей для beam search
    """
    input_text = f"Отзыв: {review}"
    
    input_ids = tokenizer(
        input_text,
        max_length=128,
        truncation=True,
        padding=True,
        return_tensors="pt"
    ).input_ids.to(model.device)
    
    outputs = model.generate(
        input_ids,
        max_length=128,
        min_length=10,
        num_beams=num_beams,
        temperature=temperature,
        top_p=top_p,
        repetition_penalty=1.2,
        length_penalty=1.0,
        early_stopping=True,
        no_repeat_ngram_size=3,
        do_sample=True if temperature > 0 else False
    )
    
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return response

# Примеры использования
positive_review = "Отличный товар, очень доволен покупкой!"
print(generate_response(positive_review))

negative_review = "Товар не соответствует описанию, разочарован"
print(generate_response(negative_review, temperature=0.5))

📈 Метрики

Модель обучалась с использованием:

  • Метрика оптимизации: Evaluation Loss
  • Стратегия валидации: 5% данных
  • Частота оценки: каждые 2000 шагов
  • Best model selection: по минимальному eval_loss

💾 Требования к ресурсам

Обучение

  • GPU: 16GB+ VRAM (рекомендуется)
  • RAM: 32GB+
  • Время обучения: ~8-12 часов на полном датасете (на V100/A100)

Инференс

  • GPU: 4GB+ VRAM
  • CPU: Возможен, но медленнее (~2-5 сек на отзыв)
  • RAM: 8GB+

🔧 Обучение собственной модели

Используйте прилагаемый скрипт train.py:

python train.py

Настройка параметров

Основные параметры можно изменить в секции main():

# Данные
DATA_FILE = "your_dataset.parquet"
BATCH_SIZE = 150000  # Размер батча для обучения

# Гиперпараметры
LR = 1e-3
EPOCHS = 3
BATCH_TRAIN = 12
GRAD_ACCUM = 2

# Оптимизации
USE_GRADIENT_CHECKPOINTING = True
USE_FP16 = True

📝 Формат данных

Датасет должен быть в формате Parquet с колонками:

  • text_cleaned - текст отзыва
  • answer_cleaned - текст ответа
import pandas as pd

df = pd.DataFrame({
    'text_cleaned': ['Отличный товар!', 'Не пришла посылка'],
    'answer_cleaned': ['Спасибо за отзыв!', 'Приносим извинения...']
})

df.to_parquet('dataset.parquet')

⚠️ Ограничения

  • Модель обучена на данных маркетплейса и может работать хуже на специфичных доменах
  • Максимальная длина входа/выхода: 128 токенов
  • Требуется постобработка для контроля качества в продакшене
  • Может генерировать слишком общие ответы для сложных кейсов

🔄 Версионирование

  • v1.0 - Базовая версия на ruT5-base
  • Обучена на 2.5M примеров
  • 3 эпохи с cosine scheduler
  • Early stopping включен

📄 Лицензия

Модель основана на ruT5-base (Apache 2.0 License). Использование модели подразумевает соблюдение лицензии базовой модели.

🤝 Благодарности

  • ai-forever за модель ruT5-base
  • Hugging Face за библиотеку transformers

📧 Контакты

Для вопросов и предложений по улучшению модели создайте issue в репозитории.


Важно: Рекомендуется тестировать ответы модели перед использованием в продакшене и настроить модерацию для обработки edge cases.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for baldic/otzovik

Finetuned
(21)
this model