Опыт внедрения ISO 13485 с учетом изменений в процессах разработки

Недавно мы успешно прошли аудит по «ISO 13485–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 13485 — это не единоразовая процедура, а продолжающийся процесс по улучшению процессов в организации. Наша следующая цель — подробно описать и формализовать процедуру мониторинга работы наших систем — как техническую, так и с точки зрения клинического качества.

© Habrahabr.ru