В конце 2022 года команда Amazon опубликовала исследование, связанное с цепями поставок, под названием Deep Inventory Management1. В этой статье представлена техника оптимизации запасов (далее именуемая DIM), которая объединяет обучение с подкреплением и глубокое обучение. В статье утверждается, что данная техника успешно применялась на более чем 10 000 SKU в реальных условиях. Эта статья интересна с нескольких точек зрения и в некоторой степени схожа с тем, чем занимается Lokad с 2018 года. В дальнейшем я рассмотрю достоинства и недостатки техники DIM с точки зрения Lokad, так как мы исследовали похожие направления в последние несколько лет.

Функция цели и ограничения (стр. 27, Приложение А), из статьи Deep Inventory Management, ноябрь 2022

Функция цели и ограничения (стр. 27, Приложение А), из статьи "Deep Inventory Management", ноябрь 2022

Мое первое наблюдение заключается в том, что эта статья заслуживает доверия, и я склонен поддержать ее выводы. Общая концепция сильно соответствует моим собственным экспериментам и наблюдениям. Действительно, большинство статей, опубликованных о цепях поставок, являются фальшивыми - по одной или другой причине. Цепи поставок сталкиваются с серьезным случаем эпистемической коррупции,2 и глубокий скептицизм должен быть основной позицией при столкновении с любым предположительно “лучшим” способом решения проблемы цепи поставок.

Самый заметный вклад техники DIM заключается в полном обходе этапа прогнозирования и прямом переходе к оптимизации запасов. Классический подход к оптимизации запасов состоит из двух этапов. Сначала прогнозируется спрос, затем принимается решение об оптимизации запасов. Lokad до сих пор следует этому ступенчатому процессу (по хорошим причинам, см. action reward 3). Однако DIM объединяет эти два этапа с помощью подхода, называемого дифференцируемыми симуляторами.

Слияние этапов “обучения” и “оптимизации” является многообещающим путем, не только для цепей поставок, но и для компьютерных наук в целом. За последние два десятилетия произошло постепенное сближение обучения и оптимизации с алгоритмической точки зрения. Фактически, основной техникой обучения, используемой Lokad, является алгоритм оптимизации. В свою очередь, недавний прорыв (неопубликованный) Lokad в области стохастической оптимизации связан с алгоритмом обучения.

Я предвижу будущее, в котором отдельное прогнозирование будет рассматриваться как устаревшая практика, полностью замененная новыми техниками, которые полностью объединяют перспективы “обучения” и “оптимизации”. Lokad уже некоторое время идет по этому пути. Фактически, с тех пор, как мы перешли к вероятностным прогнозам в 2015 году, экспорт сырых прогнозов из Lokad считался непрактичным, поэтому с точки зрения клиента процесс в основном сводится к одноэтапному. Однако двухэтапный процесс все еще существует внутри Lokad, поскольку есть некоторые глубокие, до сих пор нерешенные проблемы для объединения.

Теперь давайте обсудим мои взгляды на недостатки техники DIM.

Мое первое замечание состоит в том, что использование глубокого обучения в DIM оставляет желать лучшего.

Из раздела Феатуризация (Приложение B) ясно, что то, что “глубокая” модель в первую очередь учится предсказывать будущий спрос на товар - то есть изменяющийся спрос, интегрированный по изменяющемуся сроку поставки.

(Неявная вероятностная) оценка спроса на товар не является “сложной” проблемой, требующей глубокого обучения, по крайней мере, не в представленных настройках этой команды Amazon. Фактически, я думаю, что весь эмпирический прогресс является следствием лучшей оценки спроса на товар. Более того, я также думаю, что сравнимая, если не лучшая, оценка спроса на товар может быть получена с помощью базовой параметрической вероятностной модели, как это было сделано в конкурсе M54. Это полностью исключило бы глубокое обучение из рассмотрения, оставив только “поверхностную” часть решения дифференцируемого программирования.

Если мы отложим в сторону оценку спроса на товар, DIM имеет мало что предложить. Действительно, в настройках цепи поставок, представленных в статье, все SKU обрабатываются в условиях практической изоляции с чрезмерно мягкими ограничениями на всю компанию - а именно ограничения на общий объем, общий капитал и общее количество единиц. Решение этих верхних границ можно сделать довольно легко, отсортировав единицы для повторного заказа5 по убыванию долларового дохода на доллар - или, возможно, по убыванию долларового дохода на единицу - если пропускная способность хаотичного хранилища, используемого Amazon, является истинным узким местом.

Что касается ограничений, ограничения на всю компанию являются тривиальными ограничениями, которые не требуют сложных техник для их решения. Глубокое обучение действительно проявило бы себя, если бы авторы смогли решить сложные ограничения, которые обильно присутствуют в цепях поставок. Например, MOQs (минимальные объемы заказа), определенные на уровне поставщика, полные грузовики, снижение цены поставщика, перишабельные продукты и т. д. - это проблемы, которые нельзя решить с помощью наивной техники, такой как приоритизация, о которой я упоминал выше. Для таких сложных ограничений глубокое обучение действительно было бы отличным универсальным стохастическим оптимизатором - при условии, что кто-то сможет это сделать. Однако DIM полностью обходит такие проблемы, и неясно, может ли DIM быть расширен для справления с такими проблемами. Я считаю, что это невозможно.

В честь авторов, кросс-продуктовые ограничения упоминаются в самой последней строке их заключения как интересное направление исследований. Хотя я согласен с этим утверждением, это недооценка. Не поддерживать эти всеобщие ограничения цепи поставок - это немедленная причина для остановки. Практики в области цепей поставок вернулись бы к своим электронным таблицам менее чем за месяц. Приближенно правильно лучше, чем точно неправильно.

Более того, у нас есть целая коробка с червями с действиями с вещественными значениями, то есть с дробными объемами заказа, какими производит DIM - см. уравнение (1) и Предположение 1 (страница 12). Действительно, в цепи поставок нельзя заказать 0,123 единицы, это либо 0, либо 1. Однако авторы обходят всю эту проблему. Техника DIM выводит дробные величины и требует, чтобы функция вознаграждения была “хорошо себя вела”. На практике ясно, что такой подход не будет работать хорошо, если функция вознаграждения не является строго монотонной относительно заказанного количества.

Таким образом, у нас остается менее желательная особенность (дробные порядки) и менее желательное требование (монотонность функции вознаграждения), комбинация которых является основой предлагаемого дифференцируемого симулятора. Однако, цепочка поставок подчиняется закону малых чисел6. Современные проблемы с запасами доминируют своими дискретными характеристиками. По крайней мере, этот аспект следовало бы выделить авторами как серьезное ограничение DIM - что-то, что должно быть исследовано в последующих исследованиях.

Смешение градиентов и дискретных политик является фундаментальной проблемой для стохастической оптимизации, а не только для предлагаемых дифференцируемых симуляторов. Действительно, стохастический градиентный спуск (SGD) работает с вещественными параметрами, и, следовательно, неочевидно, как оптимизировать политики, которые управляют фундаментально дискретными решениями.

Работа с фундаментально дискретными пространствами через градиентно-ориентированные процессы, конечно, возможна, как блестяще продемонстрировано LLM (большими языковыми моделями), но для этого требуется целый набор трюков. Пока эквивалентные трюки не будут обнаружены для класса ситуаций, с которыми сталкиваются цепи поставок, дифференцируемые симуляторы являются многообещающей идеей, а не опцией для производства.

Моя вторая критика заключается в том, что авторы DIM даже не упоминают множество граничных случаев.

В частности, авторы остаются крайне неопределенными относительно того, как они выбирали (…выбирали подбором) свои 10 000 SKU. Действительно, когда я проводил эксперименты в Lokad в 2018 и 2019 годах, я использовал удивительно похожие стратегии фичеризации (Приложение B) для моделей глубокого обучения, используемых Lokad.

Исходя из этих экспериментов, я предлагаю следующее:

  • Новые и недавние продукты не будут работать хорошо, так как масштабирование, намекаемое уравнениями (13), (30) и (31), будет вести себя непредсказуемо, когда исторических данных слишком мало.
  • Медленно движущиеся товары столкнутся с неправильными устранениями их прошлых дефицитов, так как техника предполагает, что “разумный” скорректированный спрос существует (что не является случаем для медленно движущихся товаров).
  • Прерывистые продукты (неопубликованные или недоступные в течение длительных периодов, например, 2+ месяца) также столкнутся с предполагаемым скорректированным спросом.
  • SKU конкурентов, где клиенты агрессивно выбирают самую низкую цену, будут недооценены, так как модель не может отразить решающее влияние, когда SKU обгоняют (по цене) конкурента.

Эти граничные случаи, фактически, составляют основную часть вызова в цепи поставок. В статье заманчиво выбирать SKU, которые хорошо себя ведут: не слишком новые, не слишком медленные, не слишком непредсказуемые, не прерывистые и т. д. Однако, если нам приходится прибегать к сложным техникам, то фокусироваться на простых SKU не имеет особого смысла. Хотя на этих SKU можно достичь экономических улучшений, абсолютный выигрыш незначителен (в лучшем случае скромен) - именно потому что эти SKU ведут себя хорошо. Основная часть неэффективностей в цепи поставок находится на краях, а не в середине.

Фронтальное решение этих плохо себя ведущих SKU - это то, где ожидается, что глубокое обучение придет на помощь. Однако DIM делает обратное и решает проблему с хорошо себя ведущими SKU, которые могут быть решены с помощью гораздо менее сложных техник с незначительными или без каких-либо недостатков.

Моя третья критика заключается в том, что DIM имеет довольно запутанную техническую настройку.

Это, вероятно, одна из самых недооцененных проблем в сообществе науки о данных. Сложность - враг надежности и эффективности. В то время как глубокое обучение фантастично, немногие компании могут позволить себе инженеров, необходимых для работы с такой настройкой, как DIM. Это не похоже на ChatGPT, где все инженерные штучки взаимодействуются по всей клиентской базе поставщика программного обеспечения. Здесь, учитывая количество специфик, входящих в DIM, каждая клиентская компания должна нести полные операционные расходы, связанные с их собственным экземпляром решения.

На стороне оборудования у нас есть виртуальная машина EC2 p3.16xlarge7, которая в настоящее время стоит 17 тыс. долларов США в месяц на AWS. Для 10 000 SKU это… дорого.

Lokad имеет много клиентов, которые индивидуально работают с миллионами SKU, и большинство из них имеют оборот менее 1 миллиарда долларов США. Хотя, возможно, можно немного уменьшить эту виртуальную машину и выключать ее, когда она не используется, в Lokad мы узнали, что эти варианты редко подходят для производства.

Например, платформы облачных вычислений также сталкиваются с собственными проблемами: иногда виртуальная машина, которая должна быть доступна по требованию, занимает несколько часов, чтобы запуститься. Также никогда не предполагайте, что эти модели могут быть просто “предварительно обучеными”, наступит день - например, следующий вторник - когда все должно быть переобучено с нуля по некоторым срочным причинам8. Более того, для настройки, готовой к производству, требуется не только избыточность, но и дополнительные среды (тестирование, предварительное производство и т. д.).

На стороне программного обеспечения необходимость в чем-то подобном Plasma Object Store является архетипом тех случайных сложностей, которые возникают при глубоком обучении. Предположим, что набор данных для обучения, который еженедельно агрегируется для 80 000 SKU всего за 104 недели, должен весить менее 100 МБ (если данные представлены разумно).

В то время как авторы DIM остаются искусно неопределенными, ссылаясь на “большое количество данных” (стр. 32), очевидно, что стратегия фичеризации увеличивает исходный объем данных на 3 порядка (примерно в 1000 раз). Имейте в виду, что у EC2 p3.16xlarge есть не менее 488 ГБ оперативной памяти, что должно быть достаточно для обработки набора данных размером 100 МБ (примерно 100 ГБ после применения увеличения)… Что ж, мы уже прошли через это, столкнулись с той же проблемой.

Например, реалистичный набор данных по цепочке поставок обычно превышает 1 терабайт после увеличения данных, как требуется в подходе DIM. В этом случае типичный специалист по обработке данных не может воспроизвести ошибку локально, потому что его рабочая станция имеет только 64 ГБ оперативной памяти. Кроме того, есть также вопрос о границе между Python и Plasma, где могут возникнуть проблемы.

Помимо основных критик выше, есть и вторичные проблемы. Например, динамическое программирование9, упомянутое во введении и заключении как базовый и конкурирующий подход DIM, является всего лишь плохим базовым вариантом. Динамическое программирование - это древняя техника (с 1950-х годов) и не отражает современное состояние искусства в области оптимизации и обучения.

Признайте, что в литературе по цепочке поставок не хватает именно этого, но это означает, что авторы должны найти соответствующие базовые варианты вне своей области исследования. Например, AlphaGo Zero10 является гораздо лучшим интеллектуальным базовым вариантом, когда речь идет о замечательном применении глубокого обучения для целей оптимизации - особенно по сравнению с динамическим программированием, которому почти 80 лет.

В заключение, вопреки тому, что может подразумевать моя критика, это лучшая статья, чем большинство, и абсолютно заслуживает критики. Дифференцируемое программирование - отличный инструмент для цепочек поставок. Lokad использует его уже много лет, но мы еще не исчерпали все возможности этой программной парадигмы.

Есть еще многое, что можно исследовать, как показывает DIM. Дифференцируемые симуляторы - это замечательная идея, и это становится менее одиноко, когда гиганты технологической отрасли, такие как Amazon, вызывают основные догмы теории цепочки поставок - так же, как и мы. В Lokad у нас есть проект, как-то объединить montecarlo и autodiff11 таким образом, чтобы они хорошо сочетались с этими дифференцируемыми симуляторами.

Следите за обновлениями!


  1. Глубокое управление запасами, Дхрув Мадека, Кари Торккола, Карсон Айзенак, Анна Луо, Дин Фостер, Шам Какаде, ноябрь 2022 года. ↩︎

  2. Адверсарное исследование рынка корпоративного программного обеспечения, Лекция Джоаннеса Вермореля, март 2021 года. ↩︎

  3. Фреймворк для оптимизации запасов на основе награды за действие, Гаэтан Делетуа, март 2021 года. ↩︎

  4. Первое место на уровне SKU в соревновании по прогнозированию M5, Лекция Джоаннеса Вермореля, январь 2022 года. ↩︎

  5. Распределение запасов в розничной торговле с использованием вероятностных прогнозов, Лекция Джоаннеса Вермореля, май 2022 года. ↩︎

  6. Количественные принципы для цепочек поставок, Лекция Джоаннеса Вермореля, январь 2021 года. ↩︎

  7. Мощный сервер, арендованный онлайн у Amazon с 8 профессиональными видеокартами высокого класса и примерно в 15 раз большим объемом оперативной памяти по сравнению с типичной настольной рабочей станцией высокого класса. ↩︎

  8. “SCO - не обычное программное обеспечение” в Ориентированная на продукт доставка для цепочки поставок, Лекция Джоаннеса Вермореля, декабрь 2020 года. ↩︎

  9. Динамическое программирование должно было называться “структурированной мемоизацией”. Как низкоуровневая алгоритмическая техника, оно все еще очень актуально, но эта техника на самом деле не принадлежит к тому же миру, что и обучение с подкреплением. Структурированная мемоизация, как техника, относится к области основных алгоритмических трюков, таких как сбалансированные деревья или разреженные матрицы. ↩︎

  10. Овладение шахматами и шоги методом самообучения с общим алгоритмом обучения с подкреплением, Дэвид Сильвер, Томас Хуберт, Джулиан Шриттвизер, Иоаннис Антоноглу, Мэтью Лай, Артур Гез, Марк Ланктот, Лоран Сифре, Даршан Кумаран, Торе Грапель, Тимоти Лилликрап, Карен Симонян, Демис Хассабис, декабрь 2017 года. ↩︎

  11. И montecarlo, и autodiff - это особые программные блоки в Envision, поддерживающие случайные процессы и дифференцируемые процессы соответственно. Комбинирование этих двух блоков практически дает то, что очень близко к строительным блокам, которые требуются для дифференцируемого симулятора↩︎