Разработка Датасетов
Примеры ИИ запросов
AI Datasets generated
Data scientist
Разработка датасетов для тренинга локальных ИИ моделей - не простая задача. Примеров для fine tuning надо от 2 до 5 тысяч. Примеры должны быть разные (по всем необходимым категориям) и корректные.
Большой объем предполагает два сценария:
- Вы используете базы с реальными данными и тщательно их готовите
- Вы генерируете Dataset и тщательно его контролируете
И тот и другой метод не исключают ошибок, которые могут сильно ухудшить результаты обучения ИИ.
Рассмотрим генерированный пример для анализа маркетинговых исследований
{
"instruction": "Рассчитай оптимальный размер партии заказа йогуртов для магазина с учётом срока годности. Оцени текущие потери от списаний и покажи, как изменение размера партии повлияет на финансовые результаты.",
"input": "Данные по магазину (йогурты питьевые, срок годности 14 дней):\n- Среднедневные продажи: 50 упаковок\n- Текущий режим поставок: 2 раза в неделю (каждые 3–4 дня, в среднем интервал 3.5 дня)\n- Текущий размер партии: 200 упаковок\n- Закупочная цена: 80 руб./уп.\n- Розничная цена: 120 руб./уп.\n- Фактические списания: 8% от партии (16 упаковок на каждую поставку)\n- Логистические затраты на одну поставку: 1 500 руб. (не зависят от размера партии)\n- Количество поставок в год: 104",
"output": "Анализ текущей ситуации:\n\n1. Потребность в товаре на межпоставочный период:\n - 50 уп./день ? 3.5 дня = 175 упаковок — это реальный объём, который магазин успевает продать.\n - Текущий заказ: 200 упаковок > избыток 25 упаковок на каждую поставку.\n\n2. Финансовые потери от списаний:\n - На одну поставку: 16 уп. ? 80 руб. = 1 280 руб.\n - В год: 1 280 ? 104 = 133 120 руб.\n - Доля списаний в закупочной стоимости партии: 1 280 / (200 ? 80) = 8%.\n\n3. Маржинальность с учётом списаний:\n - Выручка с партии (без учёта списаний): 200 ? 120 = 24 000 руб.\n - Фактическая выручка (184 уп. ? 120): 22 080 руб.\n - Закупочная стоимость: 200 ? 80 = 16 000 руб.\n - Логистика: 1 500 руб.\n - Валовая прибыль с партии: 22 080 - 16 000 - 1 500 = 4 580 руб.\n - Рентабельность партии: 4 580 / 16 000 = 28.6%.\n\nРасчёт оптимального размера партии:\n\n- Базовая потребность: 175 упаковок.\n- Страховой запас (10% на случай колебаний спроса): 17 уп.\n- Оптимальный размер партии: 175 + 17 = 192 упаковки (округляем до 190).\n- Прогнозные списания при партии 190 уп.: ~2 упаковки (1.1%).\n\nСравнение сценариев:\n\n| Показатель | Текущий (200 уп.) | Оптимальный (190 уп.) |\n|------------|-------------------|------------------------|\n| Списание на поставку | 16 уп. (1 280 руб.) | 2 уп. (160 руб.) |\n| Списание в год | 133 120 руб. | 16 640 руб. |\n| Экономия на закупке (меньше заказ) | — | 10 уп. ? 80 руб. ? 104 = 83 200 руб. |\n| Совокупный годовой эффект | — | +199 680 руб. |\n\nРекомендации:\n1. Сократить размер партии с 200 до 190 упаковок — это устранит 87% списаний.\n2. Пересмотреть график поставок: если перейти на 3 поставки в неделю (интервал 2.3 дня), оптимальная партия составит 50 ? 2.3 + 10% = 125 упаковок, а списания сократятся до 0.5–1%. Однако дополнительные логистические затраты (1 500 руб. ? 52 доп. поставки = 78 000 руб./год) частично сэкономят эффект — нужно считать суммарно.\n3. Внедрить систему автозаказа на основе данных о продажах за последние 4 недели, чтобы размер партии динамически корректировался под фактический спрос.\n4. Установить KPI по списаниям: целевой уровень не более 2% для скоропортящейся молочной продукции.\n5. Для позиций с коротким сроком годности (7 дней и менее) рассмотреть ежедневные поставки малыми партиями - даже при более высокой логистической стоимости это окупается за счёт снижения списаний.",
"category": "Логистика и цепочки поставок",
"subcategory": "6.2 Оптимизация размера партии с учётом срока годности",
"difficulty": "medium"
}
Выглядит все прилично. Теперь посмотрим сами дедали примера.
Оказывается, пример содержит грубые математические ошибки и серьёзное нарушение базовой логики управленческого учёта. Если скормить его Qwen 2.5 (7B) в таком виде, модель полностью потеряет способность корректно оценивать экономические эффекты и прибыль.
Фантастический «Совокупный годовой эффект» (+199 680 руб.)
Модель заявляет, что годовой эффект составит 199 680 руб., сложив сокращение списаний и «экономию на закупке».
В чём абсурд: Вы просто стали покупать меньше товара (на 10 упаковок в каждой партии). Уменьшение затрат на закупку — это не чистая прибыль, ведь этот недозаказанный товар вы теперь и продать не сможете! Снижение объёма закупки сокращает затраты, но одновременно снижает и возможную выручку. Складывать экономию на закупке с экономией на списаниях в управленческом учёте категорически нельзя - это двойной счёт одного и того же объёма.
Математическое противоречие в прогнозе продаж
Давайте посчитаем реальную прибыль в обоих сценариях, используя логику из нашего input (Продажи = 50 уп./день, то есть 175 уп. за цикл в 3.5 дня):
Текущий сценарий (200 уп.): Привезли 200. Списали 16. Значит, продали: 200 - 16 = 184 упаковки. Но реальный спрос — всего 175 упаковок! Куда делись ещё 9 проданных упаковок (184 - 175 = 9)? Магазин физически не мог их продать, ведь спрос ограничен 50 уп./день. Выручка посчитана неверно.
Оптимальный сценарий (190 уп.): Привезли 190. Списали 2. Продали: 190 - 2 = 188 упаковок. Опять несостыковка: спрос по-прежнему 175 упаковок. Магазин не может продать 188 штук, если люди покупают только 175.
Нарушение арифметики в Рекомендациях (Пункт 2)
«...если перейти на 3 поставки в неделю (интервал 2.3 дня), оптимальная партия составит 50 x 2.3 + 10% = 125 упаковок...»
Считаем на калькуляторе: 50 x 2.3 = 115. Прибавляем 10%: 115 + 11.5 = 126.5 (округлённо 127). Откуда у модели взялось число 125? Обучать LLM такой «галлюцинаторной» математике нельзя.
Ниже представлен полностью пересчитанный и экономически корректный JSON
{
"instruction": "Рассчитай оптимальный размер партии заказа йогуртов для магазина с учётом срока годности. Оцени текущие потери от списаний и покажи, как изменение размера партии повлияет на финансовые результаты.",
"input": "Данные по магазину (йогурты питьевые, срок годности 14 дней):\n- Среднедневной спрос: 50 упаковок\n- Текущий режим поставок: 2 раза в неделю (средний интервал между поставками — 3.5 дня)\n- Текущий размер партии: 200 упаковок\n- Закупочная цена: 80 руб./уп.\n- Розничная цена: 120 руб./уп.\n- Фактические списания из-за избыточного заказа: 25 упаковок на каждую поставку (12.5% от партии)\n- Логистические затраты на одну поставку: 1 500 руб. (не зависят от размера партии)\n- Количество поставок в год: 104",
"output": "**Анализ текущей ситуации:**\n\n1. **Потребность в товаре на межпоставочный период:**\n - 50 уп./день ? 3.5 дня = 175 упаковок — это реальный объём продаж за один цикл.\n - Избыток заказа: 200 уп. (партия) - 175 уп. (спрос) = 25 упаковок. Весь избыток уходит в списания по истечении срока годности.\n\n2. **Финансовые потери от списаний:**\n - На одну поставку: 25 уп. ? 80 руб. = 2 000 руб. (по закупочной стоимости).\n - В год: 2 000 руб. ? 104 поставки = 208 000 руб.\n\n3. **Экономика одной партии (текущая):**\n - Выручка (реализовано 175 уп. ? 120 руб.): 21 000 руб.\n - Закупочная стоимость партии (200 уп. ? 80 руб.): 16 000 руб.\n - Логистика: 1 500 руб.\n - Валовая прибыль: 21 000 - 16 000 - 1 500 = 3 500 руб.\n\n**Расчёт оптимального размера партии:**\n\n- Базовая потребность (спрос): 175 упаковок.\n- Страховой запас (около 6% на случай колебаний спроса): 10 упаковок.\n- Новый размер партии: 175 + 10 = 185 упаковок.\n- Прогнозные списания при партии 185 уп.: за счёт страхового запаса в неходовые дни потенциально могут списываться в среднем 2 упаковки за цикл.\n- Прогнозные продажи: магазин гарантированно закроет базовый спрос в 175 упаковок.\n\n**Сравнение сценариев в годовом выражении:**\n\n| Показатель | Текущий сценарий (200 уп.) | Оптимальный сценарий (185 уп.) | Изменение |\n|------------|----------------------------|-------------------------------|-----------|\n| Размер партии | 200 уп. | 185 уп. | -15 уп. |\n| Продажи за поставку | 175 уп. | 175 уп. | 0 уп. |\n| Списания за поставку | 25 уп. | 2 уп. | -23 уп. |\n| Годовые затраты на закупку | 1 664 000 руб. | 1 539 200 руб. | -124 800 руб. |\n| Годовая выручка | 2 184 000 руб. | 2 184 000 руб. | 0 (спрос закрыт) |\n| Годовые потери от списаний| 208 000 руб. | 16 640 руб. | -191 360 руб. |\n| Годовая логистика (104 пост.)| 156 000 руб. | 156 000 руб. | 0 руб. |\n| **Чистая прибыль в год** | **364 000 руб.** | **488 800 руб.** | **+124 800 руб.** |\n\n*Примечание: Реальный чистый годовой эффект равен экономии на закупке утилизируемого товара: 23 уп. ? 80 руб. ? 104 поставки = 124 800 руб. (с учётом того, что 2 уп. всё ещё списываются в качестве страховки).*\n\n**Рекомендации:**\n1. **Сократить объем разового заказа до 185 упаковок.** Это сохранит стопроцентное удовлетворение текущего спроса, но снизит годовые списания на 92% (с 208 000 до 16 640 руб.).\n2. **Оценка изменения частоты поставок:** Переход на 3 поставки в неделю (интервал 2.33 дня) потребует партию в 125 упаковок (50 ? 2.33 + страховой запас). Это снизит списания до нуля, но создаст 52 дополнительные поставки в год. Дополнительные затраты на логистику (52 ? 1 500 = 78 000 руб.) перекроют выгоду от экономии остаточных списаний (16 640 руб.). Переход на 3 поставки экономически нецелесообразен.\n3. **Внедрить динамический автозаказ:** Настроить алгоритм так, чтобы размер партии пересчитывался еженедельно на основе скользящего среднего спроса за последние 14 дней с фиксированным коэффициентом страхового запаса +6%.\n4. **Установить жесткий лимит списаний:** Закрепить целевой уровень списаний для категории «краткосрок» на уровне не более 1.5% от объема поставки.",
"category": "Логистика и цепочки поставок",
"subcategory": "6.2 Оптимизация размера партии с учётом срока годности",
"difficulty": "medium"
}
И это только один учебный пример. А вам их надо около 5 тысяч. На исправление одного примера ушло более 15 минут. На 1000 примеров понадобится 15 000 минут. Это 250 часов, примерно 12 суток. А вам надо в пять раз больше примеров.
Вот почему качественные Датасеты дорогого стоят и их нельзя скачать "на каждом шагу".
Альтернативный вариант - писать более сложные, детализированные и объемные промпты. И тщательно выверять промпты. А уже потом генерировать Датасеты
Comments
Post a Comment