Недавно мы успешно прошли аудит по «ISO 13 485–2017. Изделия медицинские. Системы менеджмента качества». Основная цель была очень простая — наличие этого сертификата теперь часто включают в требования при закупках медицинских ИИ‑систем. Я сам участвовал в аудите — меня расспрашивали про то, как мы тестируем наши системы и мониторим качество их работы на продакшне.Если вы хотите узнать ещё больше об организации процессов ML‑разработки, подписывайтесь на наш Телеграм‑канал Варим ML.

Стандарт довольно общий — он распространяется на все медицинские изделия, не только на ПО и тем более не только на ПО на основе машинного обучения. Никаких конкретных указаний по поводу имплементации тех или иных требований там нет, а основная часть касается документирования всех процессов производства, тестирования и выпуска продукции.

Когда мы начинали этот процесс, на меня легла задача — привести процессы в ML‑отделе в соответствие со стандартом. Мне захотелось не просто формально выполнить требования, но заодно и улучшить и унифицировать некоторые наши процессы. Быстрый анализ показал, что каждая ML‑команда и так плодила достаточное большое количество документации и данных в процессе своей деятельности:

  • документация моделей в репозитории

  • результаты метрик‑тестов в ClearML

  • разнообразная документация в Notion — доски с задачами, описания датасетов, результаты медицинского мониторинга и многое другое

  • алерты в Sentry

  • данные о работе систем в Grafana

  • логи в ELK

  • ML‑дашборды на Streamlit

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

Разделение релизов на major и minor

Методика Московского эксперимента
Методика Московского эксперимента

Первым делом стало понятно, что релизы делятся на две большие группы. Несколько раз в год происходят большие изменения модели — дообучение на новых данных, изменения архитектуры нейронки, изменения препроцессинга. Короче, всё то, что влияет на итоговые метрики качества системы — ROC‑AUC, чувствительность, специфичность и точность локализации патологий. Эти релизы сопровождаются полными замерами всех метрик — как внутри компании, так и на внешнем тестировании. Между этими обновлениями происходят десятки небольших релизов — фиксы багов, небольшие добавления функциональности, модификации текстового отчёта и многое другое. Чтобы удостовериться, что ничего не сломалось, мы прогоняем тесты на неизменность ответа и небольшие метрик‑тесты.

Организаторы Московского эксперимента учитывают эту разницу и используют процедуру, примерно описанную вот здесь. Для небольших изменений достаточно письменной заявки от компании‑разработчика и одобрения от организаторов. При изменении метрик требуется прохождение калибровочного тестирования, на котором проверяется соответствие новой версии модели требованиям по качеству. Увы, при промышленной эксплуатации такое пока не катит — при любом, самом незначительном, изменении разработчик формально должен подавать заявку в Росздравнадзор на изменение регистрационного удостоверения.

Так или иначе внутренние процедуры отличаются в зависимости от типа релиза, поэтому первым делом мы разделили процессы документирования на две группы.

Отчёт о валидации ПО

Шапка отчёта
Шапка отчёта

Начнём с major‑релизов. Раз меняются метрики — нужен полный отчёт по тестированию ПО. Мы решили вести их в формате Markdown и добавлять прям в репозиторий для удобства версионирования. В момент релиза дополнительно выгружаем отчёт по релизу в виде PDF и вставляем ссылку в таблицу релизов. Имеет он примерно такую структуру:

  • Основная информация — название и версия системы, дата утверждения, ответственное лицо

  • Список основных изменений в текущей версии ПО — краткий список, полное описание содержится в карте модели

  • Программа внутреннего предрелизного тестирования — это самый большой раздел, который содержит список автоматических тестов работоспособности ПО и внутренних метрик‑тестов, описание тестовых датасетов, описание метрик, результаты (включая ручное и визуальное тестирование)

Чтобы избежать дублирования и лишней работы, в отчёт включаются основные метрики и выводы, а для более детального анализа можно перейти по ссылкам и провалиться в ClearML или отчёт врача‑консультанта в Notion.

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

Техническое задание на релиз

Этот пример в итоге включили в руководство по качеству организации =)
Этот пример в итоге включили в руководство по качеству организации =)

Ещё одно требование стандарта — наличие технического задания, которое отвечает на вопросы зачем и как проводились работы по обновлению версии. Шаблон тоже сделали максимально простым:

  • Основная информация — название и версия системы, дата утверждения

  • Основные цели — зачем начинали работы по улучшению, достигнуты ли эти цели

  • Ссылки на релевантные задачи — ссылки на фичи и задачи в таск‑трекере

Пожалуй, это наиболее формальный документ из внедрённых, но и он в итоге оказался не совсем бесполезным — из таблицы релизов можно быстро перейти в этот документ, а оттуда на связанные с релизом задачи.

Предрелизный чек-лист

Создание двух описанных документов для каждого мини‑релиза — явный оверкилл. Мы решили ограничиться кратким описанием изменений в таблице релизов и ссылкой на предрелизный чек‑лист, который создаётся перед релизом в стейдж‑среду и содержит следующие разделы:

  • Preparation — что нужно сделать перед началом релизных процедур, например, убедиться, что в репозитории обновлена версия системы

  • Build — как запустить сборку релизных образов

  • Deploy — куда нажать, чтоб задеплоить релиз на стейдж

  • Monitoring — как проверить, что нужная версия раскатилась и корректно работает

  • Documentation — куда нужно пойти и что обновить в документации

  • Testing — какие тесты нужно запустить для системы после её успешной выкатки в стейдж‑среду

Такие чек‑листы значительно уменьшают когнитивные усилия, которые нужно приложить, чтобы удостовериться, что всё прошло без проблем.

Заключительные мысли

Первые новости о внедрении ISO вызвали немало сопротивления и скептицизма — в том числе и у меня. Результат, однако, меня порадовал. При минимальном изменении процессов и небольшом оверхеде мы смогли не только пройти аудит, но и улучшить собственные процессы. Когда мы всерьёз взялись за дело, я понял, что нельзя подходить к этому процессу формально — наши системы обрабатывают исследования реальных людей, и мы не можем позволить себе халатность и ошибки по невнимательности.

Добавлю, что в этом посте я описал лишь те изменения, которые напрямую повлияли на процессе в ML‑отделе. Весь процесс также потребовал огромной работы со стороны менеджмента — финальная версия руководства по качеству включает в себя более 60 страниц текста и схем. Команда бэкенда тоже внедрила у себя релизные чек‑листы и довольна результатом.

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

Комментарии (2)


  1. avf48
    04.12.2023 22:51

    Если говорить про документацию СМК применительно к ИТ, то я бы посоветовал (см. ниже) эти стандарты. У них с "9001 и ко" одна структура и подход к терминологии.

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

    Интересно было бы послушать про работу менеджмента, относительно процессов разработки. И вообще, про сам аудит. Как готовились? Отразилось ли это, в общем, на работу компании? Есть ли в планах проведение внутренних аудитов?

    ГОСТ Р ИСО/МЭК 19770-1-2021 Информационные технологии (ИТ). Менеджмент программных активов. Часть. Требования

    ГОСТ Р ИСО/МЭК 19770-2-2014 Информационные технологии (ИТ). Менеджмент программных активов. Часть 2. Тег идентификации программного обеспечения

    ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств

    ИТ Активы, Процессы


    1. crazyfrogspb1 Автор
      04.12.2023 22:51

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

      Аудит проходил в достаточно свободной форме. Например, меня просто попросили рассказать, как мы тестируем наши системы и мониторим их работу на продакшне. Какие инструменты используются, какие данные генерятся, какие отчёты мы в итоге пишем и какие действия предпринимаем.