Хитрый сплав: как мы соединили дата-сайентистов, разработчиков и технологов и чем это помогло металлургии
Мы — ЕВРАЗ. Горно-металлургическая компания. В рамках производственного процесса мы производим кокс — твёрдое топливо для доменных печей, где выплавляют чугун. Чтобы получить качественное топливо (кокс), нам нужно подобрать правильную шихту — смесь разных углей в определённой пропорции. Но до сих пор приходилось подбирать по наитию. От решения этой задачи фактически зависит прибыль предприятия, но ни один исследовательский институт ещё не смог разработать подходящую математическую формулу.
Мы попробовали соединить в одной команде технологов, разработчиков и дата-сайентистов. Дополнили это накопленной базой знаний о параметрах кокса и угольных шихт, из которых он получен. Потратили время, чтобы понять технологический процесс и химию в его основе. И не пожалели: через восемь месяцев получили работающую модель предсказания, которая преодолела скепсис технологов и экономит нам сотни миллионов рублей в год.
Почему составы шихт до сих пор подбирают вручную
Природные угли отличаются количеством примесей. Чем примесей меньше, тем предсказуемее можно работать с конкретным углём и тем выше на него спрос в технологичных сферах вроде металлургии. Но объём добычи таких углей ограничен, а цена высока.
Кокс делают из шихты, шихту — из угля. Чтобы произвести кокс дешевле, хорошую шихту разбавляют углём из других месторождений. После смешивания в определённой пропорции компоненты спекают.
Итоговое качество и стоимость кокса определяется составом смеси и технологическими параметрами производства. Но несмотря на существование разнообразных математических моделей и обширной базы теоретических исследований, в коксохимической промышленности состав шихты до сих пор подбирается эмпирически — на основе личного опыта технолога.
Проблема в масштабах. В лабораторных условиях подбор состава шихты для кокса и выявление зависимости его качества от параметров компонентов — дело нехитрое. В курсе физической химии есть соответствующие формулы. Легко замерить качество каждого компонента и спрогнозировать результат. Нет проблем с получением этого результата на практике: компоненты можно аккуратно измельчить до нужной фракции и равномерно смешать, перед тем как отправлять в печь.
При реальном производстве на больших масштабах все описанные действия становятся нетривиальными. Измельчение и перемешивание углей неравномерно. Все замеры экстраполируются с нескольких килограммов угля на тысячи тонн. А проверка любых гипотез относительно влияния состава шихты на результат задерживается из-за длительности цикла производства и времени выполнения анализа — контрольный результат получается спустя почти трое суток после начала шихтования, плюс-минус день. Это значит, что цена ошибки — трёхдневный объём продукции низкого качества.
Чтобы не ошибиться, технологу приходится помнить, как добавление в шихту угля с того или иного месторождения повлияет на свойства кокса на данном конкретном производстве. А при любых изменениях техпроцесса нужный состав смеси ищут заново методом проб и ошибок.
Это поиск баланса противоречивых требований: с одной стороны, кокс должен соответствовать нормативам качества, а с другой — в исходной смеси должно быть как можно меньше дорогих компонентов.
А ещё задача может усложниться за счёт логистики. Сегодня на складе есть одни компоненты. Завтра они закончатся, и, чтобы не останавливать производство, придётся пересчитать состав смеси в соответствии с теми углями, которые есть на складе.
Предприятие накапливает данные о смесях и качестве итогового продукта годами, но специалист не может удержать всё это в голове. Он замечает какие-то зависимости, на основе которых и строит прогноз. Нельзя сказать наверняка, учёл ли он всю производственную историю.
Обычно дорогие марки угля идут в смесь с запасом, чтобы не испортить сотни тонн продукции. А ещё предприятие оказывается заложником опыта одного человека.
Мы понимали, что в ЕВРАЗе необходимо внедрить цифровое решение, которое даст специалисту удобный инструмент для анализа данных. Пусть он, как и раньше, принимает решение на основе своего опыта, но ему нужен подсказчик, который поможет обращаться к накопленным комбинатом знаниям.
Подходящих нам инструментов у коллег по рынку в России ещё не было.
Проектная команда
Это был один из наших первых серьёзных заходов в Data Science и продвинутую аналитику, поэтому готовой команды не было. Мы собрали технологов, знакомых с производством, а также айтишников и дата-сайентистов, не понимающих тонкостей шихтования. Понадеялись, что они смогут обменяться опытом и дополнить друг друга.
Забегая вперёд, скажем, что эти надежды оправдались, несмотря на то, что всё происходило в разгар первой волны COVID-19 — то есть по видеосвязи из разных городов и часовых поясов.
Около месяца участники команды разговаривали буквально на разных языках, с трудом понимая друг друга. И в той, и в другой области много специфических терминов. Айтишникам выдали учебники по коксохимии, читали лекции по коксованию. А технологам рассказывали об аналитике данных и Data Science, объясняли, как читать графики.
Их вовлекли в работу по Agile с планированием спринтов раз в две недели, что само по себе для них было в новинку.
На проекте работала международная команда из консультантов BCG и специалистов ЕВРАЗа, состоявшая из пары технологов, трёх дата-сайентистов, а также специалистов бэкенд- и фронтенд-разработки (Python и React соответственно). Был бизнес-транслятор, который выполнял функции скрам-мастера, владелец продукта и руководитель проекта. А для расчёта финансовых показателей подключали коллег из экономического управления.
Сбор и очистка данных
За основу мы взяли накопленные данные по качеству исходного сырья (угольного концентрата), процентному соотношению компонентов смеси, технологическим параметрам коксования и результатам на выходе. Все они были разбросаны между различными системами, БД и Excel-таблицами. Некоторые данные мы сначала оцифровали и отфильтровали, удалив явные ошибки.
Нас интересовали параметры угольных концентратов, а также прочностные характеристики кокса. Используя эти данные, мы обучили модель — дерево решений, предсказывающее параметры кокса (М25 — холодная прочность кокса, М10 — прочность кокса на истирание, CSR — горячая прочность кокса) по начальным данным о смеси.
В общей сложности получилось порядка 750–1000 точек для М25 и М10, а также 150 точек для обучения. По параметру CSR анализ производился примерно раз в неделю, поэтому нужное количество точек накапливается дольше и по CSR модель становится приличной только сейчас. На этапе подбора модели мы использовали тестовые выборки (в нашем случае вообще Time Series Cross Validation). А вот результирующая модель с оптимальными параметрами учится на всех доступных данных.
Поскольку с годами технологии и состав угольных шихт меняются, мы ограничились глубиной сбора данных для обучения в три года. Впоследствии мы экспериментировали и выяснили, что добавление более старых данных только ухудшает модель. По результатам этого эксперимента в модели у нас появились веса, увеличивающие значимость последних.
Как мы строили модель
Первые версии модели мы гоняли внутри IT-команды. Технологи использовали исторические данные по шихтовкам (соотношение угольных концентратов, которое отправилось в производство), а мы буквально на коленках прогнозировали варианты и сравнивали с результатом. Когда получили более-менее хорошее предсказание и сделали интерфейс, показали технологам и продолжили уже в паре с ними. На этом этапе была проделана огромная работа: мы проверяли, акцентирует ли модель внимание на тех параметрах, которые выделяет технолог, смотрели матрицу корреляций между параметрами шихты и результирующим качеством кокса (косвенный показатель того, что смещение по времени в данных подобрано правильно, — что корреляция между управляющими воздействиями и целевым признаком максимальна), разбирали ситуации, когда предсказание сильно расходилось с реальностью, и т. п.
Модель разработать — не проблема. Главная задача — перейти от теории к практике, сделать так, чтобы модель использовали. Надо отдать должное коллегам с производства. Для них сначала модель работала как чёрный ящик — просто выдавала какие-то не вызывающие их доверия числа. Но в ходе общения мы поняли, что технологам просто нужно больше информации.
Для объяснения прогнозов мы нашли инструмент, который в виде графиков отражает влияние тех или иных факторов (какой из них работает в плюс, а какой — в минус). Это помогло специалистам на производстве не только поверить в модель, но и структурировать собственные практические знания.
А дальше началась долгая подгонка модели. Здесь дата-сайентисты и технологи рука об руку разбирали все сомнительные результаты предсказаний. Изучали графики, выявляли источник расхождений ожиданий и данных модели. Кстати, опыту технолога мы в этом процессе доверяли больше.
Следующим шагом на базе модели мы создали оптимизатор, который может перебрать тысячи вариантов смеси среди технологически допустимых и предложить оптимальный по цене и качеству итоговый продукт.
Для оптимизатора мы провели А/В-тестирование. Две недели в производство отправлялся состав шихт, предложенный оптимизатором, а результаты сравнивали с двумя неделями работы без подсказок. Уже на этом этапе стал очевиден экономический эффект: шихта используется более дешёвая, а качество кокса остаётся в допустимых пределах.
Всё прошло довольно быстро. В общей сложности разработка длилась восемь месяцев.
Как модель работает сейчас
Модель использует данные о составе угольных шихт, чтобы спрогнозировать качество кокса по смеси, предложенной технологом, или просчитать собственное оптимальное по цене соотношение.
Данные по качеству концентратов есть и у поставщика — они сопровождают каждую поставку. Плюс существуют справочные данные для распространённых марок углей. Но при приёмке угольной шихты на складе мы делаем анализы в лаборатории: сверяем качество с заявленным поставщиком. Благодаря этому мы можем заложить в модель более точную информацию (и, конечно, больше доверяем собственной пробе).
В простейшем случае технолог может подать на вход модели соотношение марок угля разных поставщиков и рассчитать химию на выходе технологического процесса. Результат — вероятность попадания этой смеси в нужный диапазон качества.
Оптимизатор, использующий эту модель, помогает подобрать соотношение марок угля для достижения целевого качества при минимальных затратах. На вход он получает список марок и исходную долю каждой из них (предположим, от 10 до 20 % марки Х). Допустимые диапазоны значений формируются на лету — с учётом запасов и схемы производства в соответствии с нашим внутренним фреймворком InDReLiC.
Получив данные на вход, оптимизатор перебирает удовлетворяющие условиям составы и выдаёт ответ. Изначально мы работали только с тысячей вариантов случайным образом сгенерированных составов. Это ограничение появилось из желания считать варианты за вменяемое время. Позже перевод вычислений качественных параметров шихты к матричному виду позволил существенно снизить wall time оптимизации и увеличить количество рассматриваемых вариантов как минимум в 100 раз. В пике мы перебираем порядка восьми миллиардов вариантов (при этом установлено ограничение на время работы оптимизатора в минуту).
Как модель зарабатывала доверие
Естественно, в условиях реального производства модель сначала вызывала недоверие. Проблема в цене ошибки. Из-за длинного производственного процесса и времени, необходимого на выполнение лабораторных анализов, данные о качестве кокса поступают только через четыре дня после запуска новой смеси. Если рассчитали её неправильно, все эти четыре дня на выходе будет продукт низкого качества, и его расход в домне значительно повысится.
Пока обкатывали модель, мы пробовали и более рискованную шихтовку. Как раз на её примере мы поняли, что модель всё-таки ошибается, когда пытается экстраполировать расчёты на сочетания за пределами диапазонов данных в нашей базе для обучения. Правильно говорят: пока не перейдёшь за границу дозволенного, не узнаешь, где эта граница. И мы должны были пережить неверную шихтовку, чтобы технологи увидели границы применимости модели и знали, когда модели можно доверять.
Тут стоит сделать лирическое отступление на тему одного из наших инсайтов:
металлургия — непрерывное производство. Поэтому в этой индустрии все процессы стараются делать гладкими. Традиционно подобные задачи используют информацию о предыдущем течении процессов, чтобы предсказать будущее. Однако в коксохимическом производстве «непрерывность» отсутствует, т. к. процесс дискретен с точностью до одной загрузки печей. При стабильных поставках тем не менее коксовые батареи по несколько дней, а иногда и неделями работают на практически идентичных шихтовках. Из-за этого в целевых признаках модели появляется характерная автокорреляция.
В один момент в качестве эксперимента в модель было добавлено качество кокса за сегодняшний день. И при тестировании модель показала невероятные результаты (AUC-score 95+ %) на тестовых срезах исторических данных. Однако, как выяснилось, за счёт того, что шихтовка существенно меняется нечасто, модель всего лишь переобучилась, т. к. просто предсказание того же значения, что и сегодня, давало почти идеальные результаты 90 % времени, но при изменении шихтовки — ошибки были драматическими.
После начала полноценной работы с оптимизатором технологи начали гораздо смелее шихтоваться и изменения в последовательные дни стали значимы. В связи с чем уже на первом месяце использования оптимизатора такая модель показала бы полную свою несостоятельность. Мораль: если какая-то версия модели выдаёт радикально более высокие значения метрики качества — доверие к ней нужно штрафовать и проверять с двойным усердием.
Результат шихтовок, которые раньше предприятие не применяло, надёжно спрогнозировать нельзя — можно только угадать. Чтобы предотвратить чрезмерную экстраполяцию, поверх модели мы наложили аналитические фильтры. Теперь модель подсвечивает диапазоны, где прогноз сомнителен из-за того, что шихтовка выходит за диапазон исторических значений. Это работает как предупреждение: модель считает, что качество кокса будет нормальное, но она такого ещё не видела.
Ну и, естественно, остаётся контроль технологом — он принимает решение и смотрит, насколько вообще реальные числа предлагает модель.
Поскольку на выходе модель либо попадает, либо не попадает в заданное качество, её точность можно оценить по доле корректных предсказаний. ROC-AUC на уровне 80 %.
Развитие модели
Сегодня все данные по сырью из лаборатории и анализы кокса в ЕВРАЗе попадают в единую базу данных. Периодически мы выбираем оттуда точки для дообучения модели предсказания. Каждое новое обучение занимает примерно день. Это происходит в ручном режиме, поскольку нужно контролировать, чтобы качество предсказаний не упало. Если в изначальных данных закралась какая-то ошибка (допустим, опечатка лаборатории), их нельзя использовать.
Мы будем работать и с логикой действий модели. Технологи уже оставили запрос на добавление учёта остатков на складе и ближайших поступлений. Нам нужно планировать закупки — было бы здорово это делать с пониманием того, какие марки угля нужны и доступны. Кстати, такие запросы лишний раз доказывают, что моделью пользуются. И это здорово.
Развитие модели — лишь часть процесса цифровизации производства в ЕВРАЗе. Для улучшения модели инвестируем в инфраструктуру и собираем больше данных на всех этапах. Для этого оснастили конвейер весами, автоматическими дозаторами и т. п. Это помогает более точно учитывать количество шихты, отмечать, на каком складе она хранится, сколько её осталось, — так данные для дообучения модели сами по себе становятся точнее.
Для нас целью всей этой работы было получить определённую финансовую выгоду — около 300 млн рублей в год. Кроме того, мы хотели оптимизировать технологический процесс, сделать его более прозрачным и предсказуемым. И это получилось. Мы перестали зависеть от одного-двух технологов предприятия. Подобрать состав шихты может любой оператор. А опытные технологи могут сосредоточиться на стратегических задачах.
Задача искусственного интеллекта — не заменить человека, а высвободить человеческий капитал из рутинных задач, дав возможность решать исследовательские и творческие задачи. Сегодня руда одна, завтра — другая. Невозможно автоматизировать производство так, как делает, например, автомобилестроение. Как только появляется новый уголь, статистические модели становятся несостоятельными и без опыта живого человека не обойтись.
Подход к решению задач и ключевые решения получилось масштабировать на другие коксохимические производства ЕВРАЗа. Сейчас там уже работает аналогичная модель. Следующим большим шагом мы стремимся обобщить данные с двух разных производств, чтобы создать универсальное решение для оптимизации коксохимического производства.